diff options
Diffstat (limited to '.config/nvim/viml_conf/plugins.vim')
| -rw-r--r-- | .config/nvim/viml_conf/plugins.vim | 409 |
1 files changed, 409 insertions, 0 deletions
diff --git a/.config/nvim/viml_conf/plugins.vim b/.config/nvim/viml_conf/plugins.vim new file mode 100644 index 0000000..83b6a52 --- /dev/null +++ b/.config/nvim/viml_conf/plugins.vim @@ -0,0 +1,409 @@ +scriptencoding utf-8 + +" Plugin specification and lua stuff +lua require('plugin_specs') + +" Use short names for common plugin manager commands to simplify typing. +" To use these shortcuts: first activate command line with `:`, then input the +" short alias, e.g., `pi`, then press <space>, the alias will be expanded to +" the full command automatically. +call utils#Cabbrev('pi', 'Lazy install') +call utils#Cabbrev('pud', 'Lazy update') +call utils#Cabbrev('pc', 'Lazy clean') +call utils#Cabbrev('ps', 'Lazy sync') + +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" configurations for vim script plugin " +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +"""""""""""""""""""""""""UltiSnips settings""""""""""""""""""" +" Trigger configuration. Do not use <tab> if you use YouCompleteMe +let g:UltiSnipsExpandTrigger='<c-j>' + +" Do not look for SnipMate snippets +let g:UltiSnipsEnableSnipMate = 0 + +" Shortcut to jump forward and backward in tabstop positions +let g:UltiSnipsJumpForwardTrigger='<c-j>' +let g:UltiSnipsJumpBackwardTrigger='<c-k>' + +" Configuration for custom snippets directory, see +" https://jdhao.github.io/2019/04/17/neovim_snippet_s1/ for details. +let g:UltiSnipsSnippetDirectories=['UltiSnips', 'my_snippets'] + +"""""""""""""""""""""""""" vlime settings """""""""""""""""""""""""""""""" +command! -nargs=0 StartVlime call jobstart(printf("sbcl --load %s/vlime/lisp/start-vlime.lisp", g:package_home)) + +"""""""""""""""""""""""""""""LeaderF settings""""""""""""""""""""" +" Do not use cache file +let g:Lf_UseCache = 0 +" Refresh each time we call leaderf +let g:Lf_UseMemoryCache = 0 + +" Ignore certain files and directories when searching files +let g:Lf_WildIgnore = { + \ 'dir': ['.git', '__pycache__', '.DS_Store', '*_cache'], + \ 'file': ['*.exe', '*.dll', '*.so', '*.o', '*.pyc', '*.jpg', '*.png', + \ '*.gif', '*.svg', '*.ico', '*.db', '*.tgz', '*.tar.gz', '*.gz', + \ '*.zip', '*.bin', '*.pptx', '*.xlsx', '*.docx', '*.pdf', '*.tmp', + \ '*.wmv', '*.mkv', '*.mp4', '*.rmvb', '*.ttf', '*.ttc', '*.otf', + \ '*.mp3', '*.aac'] + \} + +" Do not show fancy icons for Linux server. +if g:is_linux + let g:Lf_ShowDevIcons = 0 +endif + +" Only fuzzy-search files names +let g:Lf_DefaultMode = 'FullPath' + +" Popup window settings +let w = float2nr(&columns * 0.8) +if w > 140 + let g:Lf_PopupWidth = 140 +else + let g:Lf_PopupWidth = w +endif + +let g:Lf_PopupPosition = [0, float2nr((&columns - g:Lf_PopupWidth)/2)] + +" Do not use version control tool to list files under a directory since +" submodules are not searched by default. +let g:Lf_UseVersionControlTool = 0 + +" Use rg as the default search tool +let g:Lf_DefaultExternalTool = "rg" + +" show dot files +let g:Lf_ShowHidden = 1 + +" Disable default mapping +let g:Lf_ShortcutF = '' +let g:Lf_ShortcutB = '' + +" set up working directory for git repository +let g:Lf_WorkingDirectoryMode = 'a' + +" Search files in popup window +nnoremap <silent> <leader>ff :<C-U>Leaderf file --popup<CR> + +" Grep project files in popup window +nnoremap <silent> <leader>fg :<C-U>Leaderf rg --no-messages --popup<CR> + +" Search vim help files +nnoremap <silent> <leader>fh :<C-U>Leaderf help --popup<CR> + +" Search tags in current buffer +nnoremap <silent> <leader>ft :<C-U>Leaderf bufTag --popup<CR> + +" Switch buffers +nnoremap <silent> <leader>fb :<C-U>Leaderf buffer --popup<CR> + +" Search recent files +nnoremap <silent> <leader>fr :<C-U>Leaderf mru --popup --absolute-path<CR> + +let g:Lf_PopupColorscheme = 'gruvbox_material' + +" Change keybinding in LeaderF prompt mode, use ctrl-n and ctrl-p to navigate +" items. +let g:Lf_CommandMap = {'<C-J>': ['<C-N>'], '<C-K>': ['<C-P>']} + +" do not preview results, it will add the file to buffer list +let g:Lf_PreviewResult = { + \ 'File': 0, + \ 'Buffer': 0, + \ 'Mru': 0, + \ 'Tag': 0, + \ 'BufTag': 1, + \ 'Function': 1, + \ 'Line': 0, + \ 'Colorscheme': 0, + \ 'Rg': 0, + \ 'Gtags': 0 + \} + +""""""""""""""""""""""""""""open-browser.vim settings""""""""""""""""""" +if g:is_win || g:is_mac + " Disable netrw's gx mapping. + let g:netrw_nogx = 1 + + " Use another mapping for the open URL method + nmap ob <Plug>(openbrowser-smart-search) + xmap ob <Plug>(openbrowser-smart-search) +endif + +""""""""""""""""""""""""""" vista settings """""""""""""""""""""""""""""""""" +let g:vista#renderer#icons = { + \ 'member': '', + \ } + +" Do not echo message on command line +let g:vista_echo_cursor = 0 +" Stay in current window when vista window is opened +let g:vista_stay_on_open = 0 + +nnoremap <silent> <Space>t :<C-U>Vista!!<CR> + +""""""""""""""""""""""""vim-mundo settings""""""""""""""""""""""" +let g:mundo_verbose_graph = 0 +let g:mundo_width = 80 + +nnoremap <silent> <Space>u :MundoToggle<CR> + +""""""""""""""""""""""""""""better-escape.vim settings""""""""""""""""""""""""" +let g:better_escape_interval = 200 + +""""""""""""""""""""""""""""vim-xkbswitch settings""""""""""""""""""""""""" +let g:XkbSwitchEnabled = 1 + +"""""""""""""""""""""""""""""" neoformat settings """"""""""""""""""""""" +let g:neoformat_enabled_python = ['black', 'yapf'] +let g:neoformat_cpp_clangformat = { + \ 'exe': 'clang-format', + \ 'args': ['--style="{IndentWidth: 4}"'] + \ } +let g:neoformat_c_clangformat = { + \ 'exe': 'clang-format', + \ 'args': ['--style="{IndentWidth: 4}"'] + \ } + +let g:neoformat_enabled_cpp = ['clangformat'] +let g:neoformat_enabled_c = ['clangformat'] + +"""""""""""""""""""""""""vim-markdown settings""""""""""""""""""" +" Disable header folding +let g:vim_markdown_folding_disabled = 1 + +" Whether to use conceal feature in markdown +let g:vim_markdown_conceal = 1 + +" Disable math tex conceal and syntax highlight +let g:tex_conceal = '' +let g:vim_markdown_math = 0 + +" Support front matter of various format +let g:vim_markdown_frontmatter = 1 " for YAML format +let g:vim_markdown_toml_frontmatter = 1 " for TOML format +let g:vim_markdown_json_frontmatter = 1 " for JSON format + +" Let the TOC window autofit so that it doesn't take too much space +let g:vim_markdown_toc_autofit = 1 + +"""""""""""""""""""""""""markdown-preview settings""""""""""""""""""" +" Only setting this for suitable platforms +if g:is_win || g:is_mac + " Do not close the preview tab when switching to other buffers + let g:mkdp_auto_close = 0 + + " Shortcuts to start and stop markdown previewing + nnoremap <silent> <M-m> :<C-U>MarkdownPreview<CR> + nnoremap <silent> <M-S-m> :<C-U>MarkdownPreviewStop<CR> +endif + +""""""""""""""""""""""""vim-grammarous settings"""""""""""""""""""""""""""""" +if g:is_mac + let g:grammarous#languagetool_cmd = 'languagetool' + let g:grammarous#disabled_rules = { + \ '*' : ['WHITESPACE_RULE', 'EN_QUOTES', 'ARROWS', 'SENTENCE_WHITESPACE', + \ 'WORD_CONTAINS_UNDERSCORE', 'COMMA_PARENTHESIS_WHITESPACE', + \ 'EN_UNPAIRED_BRACKETS', 'UPPERCASE_SENTENCE_START', + \ 'ENGLISH_WORD_REPEAT_BEGINNING_RULE', 'DASH_RULE', 'PLUS_MINUS', + \ 'PUNCTUATION_PARAGRAPH_END', 'MULTIPLICATION_SIGN', 'PRP_CHECKOUT', + \ 'CAN_CHECKOUT', 'SOME_OF_THE', 'DOUBLE_PUNCTUATION', 'HELL', + \ 'CURRENCY', 'POSSESSIVE_APOSTROPHE', 'ENGLISH_WORD_REPEAT_RULE', + \ 'NON_STANDARD_WORD', 'AU', 'DATE_NEW_YEAR'], + \ } + + augroup grammarous_map + autocmd! + autocmd FileType markdown nmap <buffer> <leader>x <Plug>(grammarous-close-info-window) + autocmd FileType markdown nmap <buffer> <c-n> <Plug>(grammarous-move-to-next-error) + autocmd FileType markdown nmap <buffer> <c-p> <Plug>(grammarous-move-to-previous-error) + augroup END +endif + +""""""""""""""""""""""""unicode.vim settings"""""""""""""""""""""""""""""" +nmap ga <Plug>(UnicodeGA) + +""""""""""""""""""""""""""""vim-sandwich settings""""""""""""""""""""""""""""" +" Map s to nop since s in used by vim-sandwich. Use cl instead of s. +nmap s <Nop> +omap s <Nop> + +""""""""""""""""""""""""""""vimtex settings""""""""""""""""""""""""""""" +if executable('latex') + " Hacks for inverse search to work semi-automatically, + " see https://jdhao.github.io/2021/02/20/inverse_search_setup_neovim_vimtex/. + function! s:write_server_name() abort + let nvim_server_file = (has('win32') ? $TEMP : '/tmp') . '/vimtexserver.txt' + call writefile([v:servername], nvim_server_file) + endfunction + + augroup vimtex_common + autocmd! + autocmd FileType tex call s:write_server_name() + autocmd FileType tex nmap <buffer> <F9> <plug>(vimtex-compile) + augroup END + + let g:vimtex_compiler_latexmk = { + \ 'build_dir' : 'build', + \ } + + " TOC settings + let g:vimtex_toc_config = { + \ 'name' : 'TOC', + \ 'layers' : ['content', 'todo', 'include'], + \ 'resize' : 1, + \ 'split_width' : 30, + \ 'todo_sorted' : 0, + \ 'show_help' : 1, + \ 'show_numbers' : 1, + \ 'mode' : 2, + \ } + + " Viewer settings for different platforms + if g:is_win + let g:vimtex_view_general_viewer = 'SumatraPDF' + let g:vimtex_view_general_options = '-reuse-instance -forward-search @tex @line @pdf' + endif + + if g:is_mac + " let g:vimtex_view_method = "skim" + let g:vimtex_view_general_viewer = '/Applications/Skim.app/Contents/SharedSupport/displayline' + let g:vimtex_view_general_options = '-r @line @pdf @tex' + + augroup vimtex_mac + autocmd! + autocmd User VimtexEventCompileSuccess call UpdateSkim() + augroup END + + " The following code is adapted from https://gist.github.com/skulumani/7ea00478c63193a832a6d3f2e661a536. + function! UpdateSkim() abort + let l:out = b:vimtex.out() + let l:src_file_path = expand('%:p') + let l:cmd = [g:vimtex_view_general_viewer, '-r'] + + if !empty(system('pgrep Skim')) + call extend(l:cmd, ['-g']) + endif + + call jobstart(l:cmd + [line('.'), l:out, l:src_file_path]) + endfunction + endif +endif + +""""""""""""""""""""""""""""vim-matchup settings""""""""""""""""""""""""""""" +" Improve performance +let g:matchup_matchparen_deferred = 1 +let g:matchup_matchparen_timeout = 100 +let g:matchup_matchparen_insert_timeout = 30 + +" Enhanced matching with matchup plugin +let g:matchup_override_vimtex = 1 + +" Whether to enable matching inside comment or string +let g:matchup_delim_noskips = 0 + +" Show offscreen match pair in popup window +let g:matchup_matchparen_offscreen = {'method': 'popup'} + +"""""""""""""""""""""""""" asyncrun.vim settings """""""""""""""""""""""""" +" Automatically open quickfix window of 6 line tall after asyncrun starts +let g:asyncrun_open = 6 +if g:is_win + " Command output encoding for Windows + let g:asyncrun_encs = 'gbk' +endif + +""""""""""""""""""""""""""""""firenvim settings"""""""""""""""""""""""""""""" +if exists('g:started_by_firenvim') && g:started_by_firenvim + if g:is_mac + set guifont=Iosevka\ Nerd\ Font:h18 + else + set guifont=Consolas + endif + + " general config for firenvim + let g:firenvim_config = { + \ 'globalSettings': { + \ 'alt': 'all', + \ }, + \ 'localSettings': { + \ '.*': { + \ 'cmdline': 'neovim', + \ 'priority': 0, + \ 'selector': 'textarea', + \ 'takeover': 'never', + \ }, + \ } + \ } + + function s:setup_firenvim() abort + set signcolumn=no + set noruler + set noshowcmd + set laststatus=0 + set showtabline=0 + endfunction + + augroup firenvim + autocmd! + autocmd BufEnter * call s:setup_firenvim() + autocmd BufEnter sqlzoo*.txt set filetype=sql + autocmd BufEnter github.com_*.txt set filetype=markdown + autocmd BufEnter stackoverflow.com_*.txt set filetype=markdown + augroup END +endif + +""""""""""""""""""""""""""""""nvim-gdb settings"""""""""""""""""""""""""""""" +nnoremap <leader>dp :<C-U>GdbStartPDB python -m pdb %<CR> + +""""""""""""""""""""""""""""""wilder.nvim settings"""""""""""""""""""""""""""""" +call timer_start(250, { -> s:wilder_init() }) + +function! s:wilder_init() abort + try + call wilder#setup({ + \ 'modes': [':', '/', '?'], + \ 'next_key': '<Tab>', + \ 'previous_key': '<S-Tab>', + \ 'accept_key': '<C-y>', + \ 'reject_key': '<C-e>' + \ }) + + call wilder#set_option('pipeline', [ + \ wilder#branch( + \ wilder#cmdline_pipeline({ + \ 'language': 'python', + \ 'fuzzy': 1, + \ 'sorter': wilder#python_difflib_sorter(), + \ 'debounce': 30, + \ }), + \ wilder#python_search_pipeline({ + \ 'pattern': wilder#python_fuzzy_pattern(), + \ 'sorter': wilder#python_difflib_sorter(), + \ 'engine': 're', + \ 'debounce': 30, + \ }), + \ ), + \ ]) + + let l:hl = wilder#make_hl('WilderAccent', 'Pmenu', [{}, {}, {'foreground': '#f4468f'}]) + call wilder#set_option('renderer', wilder#popupmenu_renderer({ + \ 'highlighter': wilder#basic_highlighter(), + \ 'max_height': 15, + \ 'highlights': { + \ 'accent': l:hl, + \ }, + \ 'left': [' ', wilder#popupmenu_devicons(),], + \ 'right': [' ', wilder#popupmenu_scrollbar(),], + \ 'apply_incsearch_fix': 0, + \ })) + catch /^Vim\%((\a\+)\)\=:E117/ + echohl Error |echomsg "Wilder.nvim missing"| echohl None + endtry +endfunction + +""""""""""""""""""""""""""""""vim-auto-save settings"""""""""""""""""""""""""""""" +let g:auto_save = 1 " enable AutoSave on Vim startup |
