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(':p') " Keymap nx gf SmartOpen " }}} " {{{ 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 a FzfLua git_status nnoremap b FzfLua buffers nnoremap B FzfLua blines nnoremap c FzfLua command_history nnoremap C FzfLua quickfix nnoremap f FzfLua files nnoremap F FzfLua builtin nnoremap h FzfLua mru cwd_only=true nnoremap H FzfLua help_tags nnoremap j FzfLua jumps nnoremap l FzfLua lines nnoremap m FzfLua marks nnoremap z FzfLua live_grep nnoremap : FzfLua commands " }}} " {{{ pounce.nvim Plug 'rlane/pounce.nvim', { 'on': 'Pounce' } Keymap nx s; Pounce Keymap nx s' Pounce 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 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 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 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 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 TroubleToggle nnoremap mxw TroubleToggle workspace_diagnostics nnoremap mxd TroubleToggle document_diagnostics nnoremap mxq TroubleToggle quickfix nnoremap mxl TroubleToggle loclist nnoremap gR TroubleToggle lsp_references " }}} " {{{ lspsaga.nvim Plug 'nvimdev/lspsaga.nvim', { 'on': ['Lspsaga'] } nnoremap gh Lspsaga lsp_finder " nnoremap grr Lspsaga rename nnoremap gD Lspsaga peek_definition nnoremap ma Lspsaga code_action vnoremap ma Lspsaga range_code_action nnoremap mcd Lspsaga show_line_diagnostics nnoremap mcc Lspsaga show_cursor_diagnostics nnoremap [d Lspsaga diagnostic_jump_prev nnoremap ]d Lspsaga diagnostic_jump_next 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() 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 lua require('lspsaga.action').smart_scroll_with_saga(1, '') nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1, '') 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 " omap m :lua require('tsht').nodes() " vnoremap m :lua require('tsht').nodes() " xnoremap iu :lua require('treesitter-unit').select() " xnoremap au :lua require('treesitter-unit').select(true) " onoremap iu :lua require('treesitter-unit').select() " onoremap au :lua require('treesitter-unit').select(true) lua require('hlargs').setup() endfunction autocmd BufReadPost * ++once call 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 insert_enter_plugs() " }}} " {{{ dial.nvim Plug 'monaqa/dial.nvim', { 'on': '(dial-' } xmap g g(dial-increment) xmap g g(dial-decrement) Keymap nx (dial-increment) Keymap nx (dial-decrement) autocmd User dial.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/dial.lua " }}} " {{{ winresizer Plug 'simeji/winresizer', { 'on': 'WinResizerStartResize' } nnoremap WinResizerStartResize " }}} " {{{ 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 unlet! b:venn_enabled else let b:venn_enabled = 1 setlocal virtualedit=all nnoremap j:VBox nnoremap k:VBox nnoremap l:VBox nnoremap h:VBox vnoremap f :VBox 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 (rc-q-d) TroubleToggle nnoremap (rc-q-z) lua require('mini.misc').zoom() cabbrev lup lua= " }}}