source ~/dotfiles/.vim/vimrc let g:markdown_fenced_languages = ['ts=typescript', 'js=javascript'] " {{{ commands.vim autocmd VimEnter * ++once \ source ~/dotfiles/.config/nvim/commands.vim " let g:my_vimrc = expand('<sfile>:p') " Keymap nx gf <Cmd>SmartOpen<CR> " }}} " {{{ override completion behavior autocmd InsertEnter * ++once \ luafile ~/dotfiles/.config/nvim/override_neovim_completion.lua " }}} " {{{ Plugs " https://github.com/junegunn/vim-plug/wiki/tips#automatic-installation let s:plug_path = (has('nvim') ? stdpath('data') .. '/site' : '~/.vim') .. '/autoload/plug.vim' if empty(glob(s:plug_path)) let s:plug_url = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' call system(printf('curl --create-dirs -fLo %s %s', s:plug_path, s:plug_url)) endif function s:plug_load(plug_name) abort " https://zenn.dev/kawarimidoll/articles/8e124a88dde820 " https://github.com/junegunn/vim-plug/pull/1157/files " vim-plug doesn't load lua scripts automatically when lazy-loading call plug#load(a:plug_name) const lua_scripts = join([ \ globpath(g:plug_home, a:plug_name .. '/plugin/**/*.lua'), \ globpath(g:plug_home, a:plug_name .. '/after/plugin/**/*.lua'), \ ], "\n") for script in split(lua_scripts, '[\r\n]') execute 'luafile' script endfor endfunction " Run PlugInstall if there are missing plugins autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) \ | PlugInstall --sync | source $MYVIMRC \ | endif call plug#begin() " {{{ fzf-lua Plug 'ibhagwan/fzf-lua', { 'branch': 'main', 'on': 'FzfLua' } autocmd QuickFixCmdPre * ++once call plug#load('fzf-lua') autocmd User fzf-lua ++once luafile ~/dotfiles/.config/nvim/plugin_config/fzf_lua.lua nnoremap <Space>a <Cmd>FzfLua git_status<CR> nnoremap <Space>b <Cmd>FzfLua buffers<CR> nnoremap <Space>B <Cmd>FzfLua blines<CR> nnoremap <Space>c <Cmd>FzfLua command_history<CR> nnoremap <Space>C <Cmd>FzfLua quickfix<CR> nnoremap <Space>f <Cmd>FzfLua files<CR> nnoremap <Space>F <Cmd>FzfLua builtin<CR> nnoremap <Space>h <Cmd>FzfLua mru cwd_only=true<CR> nnoremap <Space>H <Cmd>FzfLua help_tags<CR> nnoremap <Space>j <Cmd>FzfLua jumps<CR> nnoremap <Space>l <Cmd>FzfLua lines<CR> nnoremap <Space>m <Cmd>FzfLua marks<CR> nnoremap <Space>z <Cmd>FzfLua live_grep<CR> nnoremap <Space>: <Cmd>FzfLua commands<CR> " }}} " {{{ pounce.nvim Plug 'rlane/pounce.nvim', { 'on': 'Pounce' } Keymap nx s; <Cmd>Pounce<CR> Keymap nx s' <Cmd>Pounce<CR> autocmd User pounce.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/pounce.lua " }}} " {{{ load on VimEnter Plug 'nvim-lua/plenary.nvim' Plug 'MunifTanjim/nui.nvim' " Plug 'folke/noice.nvim' Plug 'vim-denops/denops.vim', { 'on': [] } " Plug 'Shougo/ddc.vim', { 'on': [] } " Plug 'Shougo/ddc-ui-pum', { 'on': [] } " Plug 'Shougo/ddc-source-around', { 'on': [] } Plug 'vim-skk/skkeleton', { 'on': [] } Plug 'skk-dev/dict', { 'as': 'skk-dict' } let g:skk_dict_dir = g:plugs['skk-dict']['dir'] Plug 'tokuhirom/jawiki-kana-kanji-dict', { 'as': 'skk-wiki-dict' } let g:skk_wiki_dict_dir = g:plugs['skk-wiki-dict']['dir'] Plug 'kawarimidoll/mru_cache.lua' Plug 'haya14busa/vim-asterisk', { 'on': [] } Plug 'kevinhwang91/nvim-hlslens', { 'on': [] } Plug 'petertriho/nvim-scrollbar' Plug 'folke/which-key.nvim', { 'on': [] } Plug 'uga-rosa/ccc.nvim', { 'on': [] } Plug 'nvim-tree/nvim-web-devicons', { 'on': [] } Plug 'tzachar/highlight-undo.nvim', { 'on': [] } " Plug 'rcarriga/nvim-notify' Plug 'vigoux/notifier.nvim' Plug 'lewis6991/gitsigns.nvim' Plug 'itchyny/vim-qfedit', { 'on': [] } Plug 'thinca/vim-qfreplace', { 'on': [] } " Plug 'anuvyklack/pretty-fold.nvim' function! s:vim_enter_plugs() abort if get(g:, 'vim_entered') return end let g:vim_entered = 1 " \ 'ddc.vim', " \ 'ddc-ui-pum', " \ 'ddc-source-around', call plug#load( \ 'denops.vim', \ 'skkeleton', \ 'vim-asterisk', \ 'vim-qfedit', \ 'vim-qfreplace', \ ) call s:plug_load('nvim-hlslens') call s:plug_load('which-key.nvim') call s:plug_load('nvim-web-devicons') call s:plug_load('ccc.nvim') call s:plug_load('highlight-undo.nvim') luafile ~/dotfiles/.config/nvim/plugin_config/mru_cache.lua let g:asterisk#keeppos = 1 luafile ~/dotfiles/.config/nvim/plugin_config/hlslens.lua luafile ~/dotfiles/.config/nvim/plugin_config/scrollbar.lua luafile ~/dotfiles/.config/nvim/plugin_config/which-key.lua " luafile ~/dotfiles/.config/nvim/plugin_config/notify.lua " luafile ~/dotfiles/.config/nvim/plugin_config/noice.lua luafile ~/dotfiles/.config/nvim/plugin_config/gitsigns.lua " lua require('pretty-fold').setup({}) lua require('ccc').setup({ highlighter = { auto_enable = true } }) lua require('notifier').setup({}) command! NotifierQuickfix execute 'NotifierReplay!' | copen lua require('highlight-undo').setup({}) endfunction autocmd VimEnter * ++once call <sid>vim_enter_plugs() " }}} " {{{ load on WinLeave " Plug 'tkmpypy/chowcho.nvim', { 'on': [] } Plug 'levouh/tint.nvim' function! s:win_leave_plugs() abort if get(g:, 'win_leaveed') return end let g:win_leaveed = 1 " call plug#load('chowcho.nvim') " luafile ~/dotfiles/.config/nvim/plugin_config/chowcho.lua luafile ~/dotfiles/.config/nvim/plugin_config/tint.lua doautocmd WinLeave endfunction autocmd WinLeave * ++once call <sid>win_leave_plugs() " }}} " " {{{ load for quickfix " Plug 'kevinhwang91/nvim-bqf', { 'for': 'qf' } " Plug 'ten3roberts/qf.nvim', { 'on': [] } " function! s:qf_pre_plugs() abort " if exists(':Lbelow') == 2 " return " end " call plug#load('qf.nvim') " lua require('qf').setup() " endfunction " autocmd QuickFixCmdPre * ++once call <sid>qf_pre_plugs() " " }}} " {{{ lsp Plug 'neovim/nvim-lspconfig', { 'on': [] } Plug 'williamboman/mason.nvim' Plug 'williamboman/mason-lspconfig.nvim' Plug 'nvimtools/none-ls.nvim' Plug 'ray-x/lsp_signature.nvim' Plug 'j-hui/fidget.nvim', { 'tag': 'legacy' } Plug 'folke/neodev.nvim' function! s:lsp_init() abort if exists(':LspInfo') == 2 return end call s:plug_load('nvim-lspconfig') lua require('lsp_signature').setup() luafile ~/dotfiles/.config/nvim/plugin_config/lsp.lua luafile ~/dotfiles/.config/nvim/plugin_config/none_ls.lua luafile ~/dotfiles/.config/nvim/plugin_config/fidget.lua endfunction autocmd BufReadPost * ++once call <sid>lsp_init() " }}} " {{{ trouble.nvim Plug 'folke/trouble.nvim', { 'on': ['Trouble', 'TroubleToggle'] } autocmd User trouble.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/trouble.lua nnoremap mxx <Cmd>TroubleToggle<CR> nnoremap mxw <Cmd>TroubleToggle workspace_diagnostics<CR> nnoremap mxd <Cmd>TroubleToggle document_diagnostics<CR> nnoremap mxq <Cmd>TroubleToggle quickfix<CR> nnoremap mxl <Cmd>TroubleToggle loclist<CR> nnoremap gR <Cmd>TroubleToggle lsp_references<CR> " }}} " {{{ lspsaga.nvim Plug 'nvimdev/lspsaga.nvim', { 'on': ['Lspsaga'] } nnoremap gh <Cmd>Lspsaga lsp_finder<CR> " nnoremap grr <Cmd>Lspsaga rename<CR> nnoremap gD <Cmd>Lspsaga peek_definition<CR> nnoremap ma <Cmd>Lspsaga code_action<CR> vnoremap ma <Cmd>Lspsaga range_code_action<CR> nnoremap mcd <Cmd>Lspsaga show_line_diagnostics<CR> nnoremap mcc <Cmd>Lspsaga show_cursor_diagnostics<CR> nnoremap [d <Cmd>Lspsaga diagnostic_jump_prev<CR> nnoremap ]d <Cmd>Lspsaga diagnostic_jump_next<CR> function! s:ex_help(word) abort if index(['vim', 'help'], &filetype) >= 0 execute 'help' a:word return endif if &filetype == 'lua' let col = getcurpos('.')[2] let line = getline('.') let pre = substitute(line[:col-1], '^.*[^0-9A-Za-z_.]', '', '') let post = substitute(line[col:], '[^0-9A-Za-z_].*$', '', '') let cword = pre .. post if cword =~ '\.' try execute 'help' cword return catch " nop endtry endif try execute 'help' 'luaref-' .. a:word return catch " nop endtry try execute 'help' a:word return catch " nop endtry endif " no help in vim Lspsaga hover_doc endfunction command! -nargs=+ ExHelp call s:ex_help(<q-args>) set keywordprg=:ExHelp function! s:lspsaga_init() abort execute 'luafile' g:plug_home .. '/lspsaga.nvim/plugin/lspsaga.lua' lua require('lspsaga').setup({ lightbulb = { virtual_text = false } }) nnoremap <C-n> <Cmd>lua require('lspsaga.action').smart_scroll_with_saga(1, '<C-n>')<CR> nnoremap <C-p> <Cmd>lua require('lspsaga.action').smart_scroll_with_saga(-1, '<C-p>')<CR> endfunction autocmd User lspsaga.nvim ++once call s:lspsaga_init() " }}} " {{{ treesitter Plug 'nvim-treesitter/nvim-treesitter', { 'do': ':TSUpdate', 'on': [] } Plug 'nvim-treesitter/nvim-treesitter-refactor', { 'on': [] } Plug 'JoosepAlviste/nvim-ts-context-commentstring', { 'on': [] } " Plug 'HiPhish/nvim-ts-rainbow2', { 'on': [] } Plug 'romgrk/nvim-treesitter-context', { 'on': [] } " Plug 'David-Kunz/treesitter-unit' " Plug 'mfussenegger/nvim-treehopper', { 'on': [] } Plug 'm-demare/hlargs.nvim', { 'on': [] } Plug 'andymass/vim-matchup', { 'on': [] } Plug 'yioneko/nvim-yati', { 'on': [] } Plug 'haringsrob/nvim_context_vt', { 'on': [] } Plug 'rickhowe/wrapwidth', { 'on': [] } function! s:treesitter_init() abort if exists(':TSEnable') == 2 return end call s:plug_load('nvim-treesitter') call s:plug_load('nvim-treesitter-refactor') call s:plug_load('nvim-ts-context-commentstring') " call s:plug_load('nvim-ts-rainbow2') " call s:plug_load('nvim-treehopper') call s:plug_load('vim-matchup') call s:plug_load('nvim-yati') call s:plug_load('nvim_context_vt') call s:plug_load('hlargs.nvim') call s:plug_load('wrapwidth') luafile ~/dotfiles/.config/nvim/plugin_config/treesitter.lua " " do not replace to <cmd> " omap <silent> m :<C-u>lua require('tsht').nodes()<CR> " vnoremap <silent> m :lua require('tsht').nodes()<CR> " xnoremap iu :lua require('treesitter-unit').select()<CR> " xnoremap au :lua require('treesitter-unit').select(true)<CR> " onoremap iu :<C-u>lua require('treesitter-unit').select()<CR> " onoremap au :<C-u>lua require('treesitter-unit').select(true)<CR> lua require('hlargs').setup() endfunction autocmd BufReadPost * ++once call <sid>treesitter_init() " }}} " {{{ load on InsertEnter Plug 'hrsh7th/nvim-cmp', { 'on': [] } Plug 'hrsh7th/cmp-nvim-lsp', { 'on': [] } Plug 'hrsh7th/cmp-buffer', { 'on': [] } Plug 'hrsh7th/cmp-path', { 'on': [] } Plug 'hrsh7th/cmp-cmdline', { 'on': [] } Plug 'hrsh7th/cmp-vsnip', { 'on': [] } Plug 'hrsh7th/cmp-nvim-lua', { 'on': [] } Plug 'ray-x/cmp-treesitter', { 'on': [] } Plug 'tzachar/cmp-tabnine', { 'do': './install.sh', 'on': [] } Plug 'lukas-reineke/cmp-rg', { 'on': [] } Plug 'hrsh7th/cmp-nvim-lsp-document-symbol', { 'on': [] } Plug 'f3fora/cmp-spell', { 'on': [] } Plug 'octaltree/cmp-look', { 'on': [] } Plug 'uga-rosa/cmp-skkeleton', { 'on': [] } Plug 'onsails/lspkind.nvim', { 'on': [] } Plug 'hrsh7th/vim-vsnip', { 'on': [] } Plug 'hrsh7th/vim-vsnip-integ', { 'on': [] } Plug 'rafamadriz/friendly-snippets', { 'on': [] } Plug 'Shougo/pum.vim' Plug 'uga-rosa/jam.nvim', { 'on': [] } Plug 'zbirenbaum/copilot.lua', { 'on': [] } Plug 'zbirenbaum/copilot-cmp', { 'on': [] } Plug 'tani/vim-typo', { 'on': []} Plug 'hrsh7th/nvim-insx', { 'on': []} let g:copilot_no_tab_map = v:true function! s:insert_enter_plugs() abort if get(g:, 'insert_entered') return endif let g:insert_entered = 1 call s:plug_load('nvim-cmp') call s:plug_load('cmp-nvim-lsp') call s:plug_load('cmp-buffer') call s:plug_load('cmp-path') call s:plug_load('cmp-cmdline') call s:plug_load('cmp-vsnip') call s:plug_load('cmp-nvim-lua') call s:plug_load('cmp-treesitter') call s:plug_load('cmp-tabnine') call s:plug_load('cmp-rg') call s:plug_load('cmp-nvim-lsp-document-symbol') call s:plug_load('cmp-spell') call s:plug_load('cmp-look') call s:plug_load('cmp-skkeleton') call s:plug_load('lspkind.nvim') call s:plug_load('copilot.lua') call s:plug_load('copilot-cmp') call s:plug_load('vim-vsnip') call s:plug_load('vim-vsnip-integ') call s:plug_load('jam.nvim') call s:plug_load('vim-typo') call s:plug_load('nvim-insx') source ~/dotfiles/.config/nvim/plugin_config/vsnip.vim luafile ~/dotfiles/.config/nvim/plugin_config/cmp.lua source ~/dotfiles/.config/nvim/plugin_config/skkeleton.vim " let g:skk_ddc_alternative = 'cmp' " source ~/dotfiles/.config/nvim/plugin_config/skk_ddc_alt.vim luafile ~/dotfiles/.config/nvim/plugin_config/jam.lua luafile ~/dotfiles/.config/nvim/plugin_config/insx.lua doautocmd InsertEnter endfunction autocmd InsertEnter * ++once call <sid>insert_enter_plugs() " }}} " {{{ dial.nvim Plug 'monaqa/dial.nvim', { 'on': '<Plug>(dial-' } xmap g<C-a> g<Plug>(dial-increment) xmap g<C-x> g<Plug>(dial-decrement) Keymap nx <C-a> <Plug>(dial-increment) Keymap nx <C-x> <Plug>(dial-decrement) autocmd User dial.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/dial.lua " }}} " {{{ winresizer Plug 'simeji/winresizer', { 'on': 'WinResizerStartResize' } nnoremap <C-e> <Cmd>WinResizerStartResize<CR> " }}} " {{{ vim-silicon Plug 'segeljakt/vim-silicon', { 'on': 'Silicon' } autocmd User vim-silicon ++once source ~/dotfiles/.config/nvim/plugin_config/silicon.vim " }}} " {{{ capture.vim Plug 'tyru/capture.vim', { 'on': [] } autocmd CmdlineEnter * ++once call plug#load('capture.vim') " }}} " {{{ neoterm Plug 'kassio/neoterm', { 'on': ['T', 'Tnew'] } autocmd User neoterm ++once source ~/dotfiles/.config/nvim/plugin_config/neoterm.vim " }}} " {{{ vim-floaterm Plug 'voldikss/vim-floaterm', { 'on': ['FloatermNew'] } " }}} " {{{ markdown-preview.nvim " Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install', 'for': ['markdown'] } " }}} " {{{ venn.nvim Plug 'jbyuki/venn.nvim', { 'on': [] } function! s:venn_toggle() abort if !get(g:, 'venn_loaded') call s:plug_load('venn.nvim') let g:venn_loaded = 1 endif if get(b:, 'venn_enabled') setlocal virtualedit= mapclear <buffer> unlet! b:venn_enabled else let b:venn_enabled = 1 setlocal virtualedit=all nnoremap <buffer><nowait> <C-j> <C-v>j:VBox<CR> nnoremap <buffer><nowait> <C-k> <C-v>k:VBox<CR> nnoremap <buffer><nowait> <C-l> <C-v>l:VBox<CR> nnoremap <buffer><nowait> <C-h> <C-v>h:VBox<CR> vnoremap <buffer><nowait> f :VBox<CR> endif endfunction command! VToggle call s:venn_toggle() " }}} " {{{ load immediately " Plug 'anuvyklack/keymap-amend.nvim' Plug 'echasnovski/mini.nvim' Plug 'Shougo/context_filetype.vim' Plug 'vim-jp/vimdoc-ja' " }}} call plug#end() command! PlugSync PlugUpgrade | PlugClean! | PlugInstall --sync \ | call system('cd ' .. g:plugs['vimdoc-ja']['dir'] .. ' && git reset --hard') | PlugUpdate luafile ~/dotfiles/.config/nvim/plugin_config/mini.lua " }}} " {{{ user owned mappings nnoremap <Plug>(rc-q-d) <Cmd>TroubleToggle<CR> nnoremap <Plug>(rc-q-z) <Cmd>lua require('mini.misc').zoom()<CR> cabbrev lup lua<space>= " }}}