diff --git a/.config/nvim/after/ftplugin/markdown/markdown_spell.vim b/.config/nvim/after/ftplugin/markdown/markdown_spell.vim new file mode 120000 index 0000000..db997e2 --- /dev/null +++ b/.config/nvim/after/ftplugin/markdown/markdown_spell.vim @@ -0,0 +1 @@ +../spell.vim \ No newline at end of file diff --git a/.config/nvim/after/ftplugin/spell.vim b/.config/nvim/after/ftplugin/spell.vim new file mode 100644 index 0000000..c70c60e --- /dev/null +++ b/.config/nvim/after/ftplugin/spell.vim @@ -0,0 +1,3 @@ +setlocal spell +" Undo changes when switching to different buffer +"let b:undo_ftplugin .= '|setlocal spell<' diff --git a/.config/nvim/after/ftplugin/vimwiki/vimwiki_spell.vim b/.config/nvim/after/ftplugin/vimwiki/vimwiki_spell.vim new file mode 120000 index 0000000..db997e2 --- /dev/null +++ b/.config/nvim/after/ftplugin/vimwiki/vimwiki_spell.vim @@ -0,0 +1 @@ +../spell.vim \ No newline at end of file diff --git a/.config/nvim/after/plugin/airline.rc.vim b/.config/nvim/after/plugin/airline.rc.vim new file mode 100644 index 0000000..6506e15 --- /dev/null +++ b/.config/nvim/after/plugin/airline.rc.vim @@ -0,0 +1,4 @@ +let g:airline_theme = 'minimalist' +let g:airline_powerline_fonts = 1 +let g:airline_stl_path_style = 'short' +let g:airline_highlighting_cache = 1 diff --git a/.config/nvim/after/plugin/alternate.rc.vim b/.config/nvim/after/plugin/alternate.rc.vim new file mode 100644 index 0000000..cfa3bcc --- /dev/null +++ b/.config/nvim/after/plugin/alternate.rc.vim @@ -0,0 +1 @@ +nnoremap :silent FSHere diff --git a/.config/nvim/after/plugin/context.rc.vim b/.config/nvim/after/plugin/context.rc.vim new file mode 100644 index 0000000..25d5dc2 --- /dev/null +++ b/.config/nvim/after/plugin/context.rc.vim @@ -0,0 +1,2 @@ +" Disable context.vim on json files +let g:context_filetype_blacklist = ["json", "log"] diff --git a/.config/nvim/after/plugin/defx.rc.vim b/.config/nvim/after/plugin/defx.rc.vim new file mode 100644 index 0000000..bf6293b --- /dev/null +++ b/.config/nvim/after/plugin/defx.rc.vim @@ -0,0 +1,67 @@ +nnoremap d Defx + +autocmd FileType defx call s:defx_my_settings() +function! s:defx_my_settings() abort + " Define mappings + nnoremap + \ defx#do_action('open') + nnoremap c + \ defx#do_action('copy') + nnoremap m + \ defx#do_action('move') + nnoremap p + \ defx#do_action('paste') + nnoremap l + \ defx#do_action('open') + nnoremap E + \ defx#do_action('open', 'vsplit') + nnoremap P + \ defx#do_action('preview') + nnoremap o + \ defx#do_action('open_tree', 'toggle') + nnoremap K + \ defx#do_action('new_directory') + nnoremap N + \ defx#do_action('new_file') + nnoremap M + \ defx#do_action('new_multiple_files') + nnoremap C + \ defx#do_action('toggle_columns', + \ 'mark:indent:icon:filename:type:size:time') + nnoremap S + \ defx#do_action('toggle_sort', 'time') + nnoremap d + \ defx#do_action('remove') + nnoremap r + \ defx#do_action('rename') + nnoremap ! + \ defx#do_action('execute_command') + nnoremap x + \ defx#do_action('execute_system') + nnoremap yy + \ defx#do_action('yank_path') + nnoremap . + \ defx#do_action('toggle_ignored_files') + nnoremap ; + \ defx#do_action('repeat') + nnoremap h + \ defx#do_action('cd', ['..']) + nnoremap ~ + \ defx#do_action('cd') + nnoremap q + \ defx#do_action('quit') + nnoremap + \ defx#do_action('toggle_select') . 'j' + nnoremap * + \ defx#do_action('toggle_select_all') + nnoremap j + \ line('.') == line('$') ? 'gg' : 'j' + nnoremap k + \ line('.') == 1 ? 'G' : 'k' + nnoremap + \ defx#do_action('redraw') + nnoremap + \ defx#do_action('print') + nnoremap cd + \ defx#do_action('change_vim_cwd') +endfunction diff --git a/.config/nvim/after/plugin/fzf.rc.vim b/.config/nvim/after/plugin/fzf.rc.vim new file mode 100644 index 0000000..49e2487 --- /dev/null +++ b/.config/nvim/after/plugin/fzf.rc.vim @@ -0,0 +1,5 @@ +nnoremap f :FZF! +nnoremap l :Lines! +nnoremap b :Buffers +inoremap s :Snippets! +nnoremap a :Rg! diff --git a/.config/nvim/after/plugin/lspconfig.rc.vim b/.config/nvim/after/plugin/lspconfig.rc.vim new file mode 100644 index 0000000..e5d0574 --- /dev/null +++ b/.config/nvim/after/plugin/lspconfig.rc.vim @@ -0,0 +1,89 @@ +if !exists('g:lspconfig') + finish +endif +" +" Completion configuration for native neovim + nvim-lspconfig +lua << EOF +local nvim_lsp = require'lspconfig' + +nvim_lsp.ccls.setup { + init_options = { + compilationDatabaseDirectory = "."; + index = { + threads = 0; + }; + clang = { + excludeArgs = { "-frounding-math"} ; + }; + } +} + +nvim_lsp.pylsp.setup{} +nvim_lsp.cmake.setup{} +nvim_lsp.rls.setup { + settings = { + rust = { + unstable_features = true, + build_on_save = false, + all_features = true, + }, + }, +} + +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + --Enable completion triggered by + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + require'completion'.on_attach() +end + +vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + signs = { + severity_limit = 'Warning', + }, + underline = false, + update_in_insert = false, + virtual_text = { + spacing = 40, + severity_limit = 'Warning', + }, + } +) + +-- Use a loop to conveniently call 'setup' on multiple servers and +-- map buffer local keybindings when the language server attaches +local servers = { "pylsp", "rls", "cmake", 'ccls' } +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + on_publish_diagnostics = diagnostic_handler + } +end +EOF diff --git a/.config/nvim/after/plugin/lspsaga.rc.vim b/.config/nvim/after/plugin/lspsaga.rc.vim new file mode 100644 index 0000000..5026974 --- /dev/null +++ b/.config/nvim/after/plugin/lspsaga.rc.vim @@ -0,0 +1,45 @@ +lua << EOF +local saga = require 'lspsaga' + +-- add your config value here +-- default value +-- use_saga_diagnostic_sign = true +-- error_sign = '', +-- warn_sign = '', +-- hint_sign = '', +-- infor_sign = '', +-- dianostic_header_icon = '  ', +-- code_action_icon = ' ', +-- code_action_prompt = { +-- enable = true, +-- sign = true, +-- sign_priority = 20, +-- virtual_text = true, +-- }, +-- finder_definition_icon = ' ', +-- finder_reference_icon = ' ', +-- max_preview_lines = 10, -- preview lines of lsp_finder and definition preview +-- finder_action_keys = { +-- open = 'o', vsplit = 's',split = 'i',quit = 'q',scroll_down = '', scroll_up = '' -- quit can be a table +-- }, +-- code_action_keys = { +-- quit = 'q',exec = '' +-- }, +-- rename_action_keys = { +-- quit = '',exec = '' -- quit can be a table +-- }, +-- definition_preview_icon = ' ' +-- "single" "double" "round" "plus" +-- border_style = "single" +-- rename_prompt_prefix = '➤', +-- if you don't use nvim-lspconfig you must pass your server name and +-- the related filetypes into this table +-- like server_filetype_map = {metals = {'sbt', 'scala'}} +-- server_filetype_map = {} + +--saga.init_lsp_saga { +-- your custom option here +--} +saga.init_lsp_saga() + +EOF diff --git a/.config/nvim/after/plugin/nerdtree.rc.vim b/.config/nvim/after/plugin/nerdtree.rc.vim new file mode 100644 index 0000000..c16ac31 --- /dev/null +++ b/.config/nvim/after/plugin/nerdtree.rc.vim @@ -0,0 +1,3 @@ +" Mapping to NERDTree +nnoremap t :NERDTreeToggle +let NERDTreeIgnore=['\~$', '\.pyc$'] diff --git a/.config/nvim/after/plugin/search-pulse.rc.vim b/.config/nvim/after/plugin/search-pulse.rc.vim new file mode 100644 index 0000000..56fbd58 --- /dev/null +++ b/.config/nvim/after/plugin/search-pulse.rc.vim @@ -0,0 +1,2 @@ +let g:vim_search_pulse_mode = 'pattern' +let g:vim_search_pulse_duration = 400 diff --git a/.config/nvim/after/plugin/startify.rc.vim b/.config/nvim/after/plugin/startify.rc.vim new file mode 100644 index 0000000..9a67c9e --- /dev/null +++ b/.config/nvim/after/plugin/startify.rc.vim @@ -0,0 +1 @@ +let g:startify_custom_header = '' diff --git a/.config/nvim/after/plugin/telescope.rc.vim b/.config/nvim/after/plugin/telescope.rc.vim new file mode 100644 index 0000000..f0cc297 --- /dev/null +++ b/.config/nvim/after/plugin/telescope.rc.vim @@ -0,0 +1,56 @@ +nnoremap f Telescope find_files +nnoremap b Telescope buffers +nnoremap a :Telescope live_grep +nnoremap l :Telescope +"inoremap s :Snippets! + +lua << EOF +require('telescope').setup{ + defaults = { + vimgrep_arguments = { + 'rg', + '--color=never', + '--no-heading', + '--with-filename', + '--line-number', + '--column', + '--smart-case' + }, + prompt_prefix = "> ", + selection_caret = "> ", + entry_prefix = " ", + initial_mode = "insert", + selection_strategy = "reset", + sorting_strategy = "descending", + layout_strategy = "horizontal", + layout_config = { + horizontal = { + mirror = false, + }, + vertical = { + mirror = false, + }, + }, + file_sorter = require'telescope.sorters'.get_fuzzy_file, + file_ignore_patterns = {}, + generic_sorter = require'telescope.sorters'.get_generic_fuzzy_sorter, + winblend = 0, + border = {}, + borderchars = { '─', '│', '─', '│', '╭', '╮', '╯', '╰' }, + color_devicons = true, + use_less = true, + path_display = {}, + set_env = { ['COLORTERM'] = 'truecolor' }, -- default = nil, + file_previewer = require'telescope.previewers'.vim_buffer_cat.new, + grep_previewer = require'telescope.previewers'.vim_buffer_vimgrep.new, + qflist_previewer = require'telescope.previewers'.vim_buffer_qflist.new, + + -- Developer configurations: Not meant for general override + buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker + } +} + +-- Ultisnip support +require('telescope').load_extension('ultisnips') + +EOF diff --git a/.config/nvim/after/plugin/treesitter.rc.vim b/.config/nvim/after/plugin/treesitter.rc.vim new file mode 100644 index 0000000..08d980e --- /dev/null +++ b/.config/nvim/after/plugin/treesitter.rc.vim @@ -0,0 +1,17 @@ +" Tree-sitter configuration +lua < +imap =UltiSnips#ExpandSnippet() +let g:UltiSnipsExpandTrigger="" +let g:UltiSnipsJumpForwardTrigger="" +let g:UltiSnipsJumpBackwardTrigger="" diff --git a/.config/nvim/after/plugin/yoink.rc.vim b/.config/nvim/after/plugin/yoink.rc.vim new file mode 100644 index 0000000..9f8a470 --- /dev/null +++ b/.config/nvim/after/plugin/yoink.rc.vim @@ -0,0 +1,5 @@ +" yoink configuration +"nmap yp (YoinkPostPasteSwapBack) +"nmap yn (YoinkPostPasteSwapForward) +"nmap p (YoinkPaste_p) +"nmap P (YoinkPaste_P) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index d363b5b..2543db7 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -13,6 +13,7 @@ call plug#begin('~/.config/nvim/plugins') " Code development helpers {{{ Plug 'neovim/nvim-lspconfig' +Plug 'glepnir/lspsaga.nvim' Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' Plug 'wellle/context.vim' Plug 'dbeniamine/cheat.sh-vim' @@ -20,11 +21,17 @@ Plug 'puremourning/vimspector' Plug 'derekwyatt/vim-fswitch' Plug 'nvim-lua/completion-nvim' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} +Plug 'tpope/vim-fugitive' " }}} " Files switch, jump and grep-like tools {{{ -Plug 'preservim/nerdtree' | Plug 'Xuyuanp/nerdtree-git-plugin' -Plug 'junegunn/fzf' | Plug 'junegunn/fzf.vim' +"Plug 'preservim/nerdtree' | Plug 'Xuyuanp/nerdtree-git-plugin' +Plug 'Shougo/defx.nvim', { 'do': ':UpdateRemotePlugins' } +"Plug 'junegunn/fzf' | Plug 'junegunn/fzf.vim' +Plug 'nvim-lua/popup.nvim' +Plug 'nvim-lua/plenary.nvim' +Plug 'nvim-telescope/telescope.nvim' +Plug 'fhill2/telescope-ultisnips.nvim' Plug 'liuchengxu/vista.vim' Plug 'inside/vim-search-pulse' Plug 'mhinz/vim-startify' @@ -36,7 +43,7 @@ Plug 'mhinz/vim-signify' " Mark edited lines - faster gitgutter " }}} " Syntax for random filetypes {{{ -Plug 'masukomi/vim-markdown-folding' +"Plug 'masukomi/vim-markdown-folding' "Plug 'weirongxu/plantuml-previewer.vim' | Plug 'aklt/plantuml-syntax' Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} @@ -52,7 +59,7 @@ Plug 'JMcKiern/vim-shoot' " }}} " Filetype syntax {{{ -Plug 'plasticboy/vim-markdown' +"Plug 'plasticboy/vim-markdown' Plug 'kergoth/vim-bitbake' " Bitbake templates and syntax Plug 'pboettch/vim-cmake-syntax' Plug 'aklt/plantuml-syntax' @@ -102,6 +109,8 @@ set textwidth=80 set formatoptions+=t set scrolloff=10 +set inccommand="split" + " space one line, home,end globally increase/decrease nnoremap zc nnoremap zo @@ -136,10 +145,6 @@ nnoremap 8 :set tabstop=8 softtabstop=8 shiftwidth=8 nnoremap :nohlsearch -let g:UltiSnipsExpandTrigger="" -let g:UltiSnipsJumpForwardTrigger="" -let g:UltiSnipsJumpBackwardTrigger="" - " TextEdit might fail if hidden is not set. set hidden @@ -169,153 +174,12 @@ endif set wildmode=longest,list,full -" yoink configuration -"nmap yp (YoinkPostPasteSwapBack) -"nmap yn (YoinkPostPasteSwapForward) -"nmap p (YoinkPaste_p) -"nmap P (YoinkPaste_P) - -" Mapping to NERDTree -nnoremap t :NERDTreeToggle -let NERDTreeIgnore=['\.vim$', '\~$', '\.pyc$'] - -nnoremap f :FZF! -nnoremap l :Lines! -nnoremap b :Buffers -inoremap s :Snippets! -nnoremap a :Rg! - -" Disable context.vim on json files -let g:context_filetype_blacklist = ["json"] - match Error /\s\+$\|DU\cPA/ -nnoremap :silent FSHere - setglobal virtualedit=block setglobal shiftround -let g:vim_search_pulse_mode = 'pattern' -let g:vim_search_pulse_duration = 400 - -let g:airline_theme = 'minimalist' -let g:airline_powerline_fonts = 1 -let g:airline_stl_path_style = 'short' -let g:airline_highlighting_cache = 1 - -let g:startify_custom_header = '' - -packadd termdebug - let g:vimwiki_list = [{'path': '~/vimwiki/', \ 'syntax': 'markdown', 'ext': '.md'}] -" Completion configuration for native neovim + nvim-lspconfig -lua << EOF -local lspconfig = require'lspconfig' -lspconfig.ccls.setup { - init_options = { - compilationDatabaseDirectory = "."; - index = { - threads = 0; - }; - clang = { - excludeArgs = { "-frounding-math"} ; - }; - } -} -EOF - -lua << EOF -require'lspconfig'.pylsp.setup{} -EOF - -lua << EOF -require'lspconfig'.cmake.setup{} -EOF - -lua << EOF -require'lspconfig'.rls.setup { - settings = { - rust = { - unstable_features = true, - build_on_save = false, - all_features = true, - }, - }, -} -EOF - -lua << EOF -local nvim_lsp = require('lspconfig') - --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - - --Enable completion triggered by - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - local opts = { noremap=true, silent=true } - - -- See `:help vim.lsp.*` for documentation on any of the below functions - buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) - buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) - buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) - buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) - buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) - buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) - buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - require'completion'.on_attach() -end - -vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( - vim.lsp.diagnostic.on_publish_diagnostics, { - signs = { - severity_limit = 'Warning', - }, - underline = false, - update_in_insert = false, - virtual_text = { - spacing = 40, - severity_limit = 'Warning', - }, - } -) - --- Use a loop to conveniently call 'setup' on multiple servers and --- map buffer local keybindings when the language server attaches -local servers = { "pylsp", "rls", "cmake", 'ccls' } -for _, lsp in ipairs(servers) do - nvim_lsp[lsp].setup { - on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler - } -end -EOF - -" Set completeopt to have a better completion experience -set completeopt=menuone,noinsert,noselect -let g:completion_enable_snippet = 'UltiSnips' - -" Tree-sitter configuration -lua <