{ pkgs, lib, ... }: let abbrevJSON = lib.importJSON ../abbrev.json; toEnvAbbrev = aj: lib.concatLines (map (e: "iabbrev ${e.alias} \\begin{${e.target}}\\end{${e.target}}ki" ) aj.env); toMathAbbrev = aj: lib.concatLines (map (e: "iabbrev m${e.alias} ${e.target}" ) aj.math); toGenericAbbrev = aj: lib.concatLines (map (e: "iabbrev ${e.alias} ${e.target}" ) aj.generic); in pkgs.vim-full.customize { name = "vim"; vimrcConfig = { packages.myPackages = with pkgs.vimPlugins; { start = [ vim-eskk vimtex ]; opt = []; }; customRC = '' filetype plugin indent on set encoding=utf-8 set autoindent set smartindent set expandtab set shiftwidth=4 set tabstop=4 set wrap set number relativenumber set nospell set ruler set cursorline set mousehide syntax enable let g:vimtex_view_method = 'general' let g:vimtex_view_general_viewer = 'okular' let g:vimtex_view_general_options = '--unique file:@pdf\#src:@line@tex' let g:vimtex_compiler_method = 'latexmk' let maplocalleader = "," let g:eskk#directory = "~/.config/eskk" let g:eskk#dictionary = { 'path': "~/.config/eskk/jisyo", 'sorted': 1, 'encoding': 'utf-8', } let g:eskk#large_dictionary = { 'path': "${pkgs.skkDictionaries.l}/share/skk/SKK-JISYO.L", 'sorted': 1, 'encoding': 'euc-jp', } let g:eskk#kakutei_when_unique_candidate = 0 let g:eskk#enable_completion = 0 let g:eskk#no_default_mappings = 1 let g:eskk#keep_state = 0 let g:eskk#egg_like_newline = 1 let g:toggle_latex_eskk = 1 function! s:latex_eskk() abort if &filetype == 'tex' && g:toggle_latex_eskk ==# 1 call eskk#enable() endif endfunction function! s:latex_eskk_toggle() abort let g:toggle_latex_eskk = g:toggle_latex_eskk == 1 ? 0 : 1 if g:toggle_latex_eskk ==# 1 echomsg 'LaTeX Japanese Input Enabled' else echomsg 'LaTeX Japanese Input Disabled' endif endfunction augroup vimrc_eskk autocmd! autocmd Filetype tex nnoremap :call latex_eskk_toggle() autocmd User eskk-enable-post lmap l (eskk:disable) augroup END imap jk (eskk:toggle) cmap jk (eskk:toggle) imap jj augroup latex_abbr ${toEnvAbbrev abbrevJSON} ${toGenericAbbrev abbrevJSON} ${toMathAbbrev abbrevJSON} augroup END ''; }; }