aboutsummaryrefslogtreecommitdiff
path: root/viml_conf/plugins.vim
diff options
context:
space:
mode:
Diffstat (limited to 'viml_conf/plugins.vim')
-rw-r--r--viml_conf/plugins.vim409
1 files changed, 409 insertions, 0 deletions
diff --git a/viml_conf/plugins.vim b/viml_conf/plugins.vim
new file mode 100644
index 0000000..83b6a52
--- /dev/null
+++ b/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