diff --git a/nvim/.config/nvim/general/completion.vim b/nvim/.config/nvim/general/completion.vim index e914599..0b6edda 100644 --- a/nvim/.config/nvim/general/completion.vim +++ b/nvim/.config/nvim/general/completion.vim @@ -1,5 +1,5 @@ " Use completion-nvim in every buffer -autocmd BufEnter * lua require'completion'.on_attach() +autocmd BufEnter * lua require'nvim-comp'.on_attach() let g:completion_enable_snippet = 'UltiSnips' let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy'] diff --git a/nvim/.config/nvim/general/settings.vim b/nvim/.config/nvim/general/settings.vim index b8233c1..7939446 100644 --- a/nvim/.config/nvim/general/settings.vim +++ b/nvim/.config/nvim/general/settings.vim @@ -61,7 +61,7 @@ colorscheme zenburn " Set completeopt to have a better completion experience " set completeopt=menuone,noinsert,noselect -set completeopt=menuone,noselect +" set completeopt=menuone,noselect " Avoid showing message extra message when using completion set shortmess+=c diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim index fbea522..a8298ce 100644 --- a/nvim/.config/nvim/init.vim +++ b/nvim/.config/nvim/init.vim @@ -1,7 +1,7 @@ source $HOME/.config/nvim/plugins/plugins.vim source $HOME/.config/nvim/general/settings.vim source $HOME/.config/nvim/general/mappings.vim -" source $HOME/.confia/vim/general/completion.vim +" source $HOME/.config/nvim/general/completion.vim source $HOME/.config/nvim/plugins/lightline.vim source $HOME/.config/nvim/plugins/nvim-comp.vim @@ -10,6 +10,8 @@ lua <" + elseif vim.fn.call("vsnip#available", {1}) == 1 then + return t "(vsnip-expand-or-jump)" + elseif check_back_space() then + return t "" + else + return vim.fn['compe#complete']() + end +end +_G.s_tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then + return t "(vsnip-jump-prev)" + else + return t "" + end +end + +utils.map("i", "", "v:lua.tab_complete()", {expr = true}) +utils.map("s", "", "v:lua.tab_complete()", {expr = true}) +utils.map("i", "", "v:lua.s_tab_complete()", {expr = true}) +utils.map("s", "", "v:lua.s_tab_complete()", {expr = true}) diff --git a/nvim/.config/nvim/lua/lsp.lua b/nvim/.config/nvim/lua/lsp.lua index af16565..9c047dc 100644 --- a/nvim/.config/nvim/lua/lsp.lua +++ b/nvim/.config/nvim/lua/lsp.lua @@ -1,6 +1,4 @@ -require'lspconfig'.pyright.setup{} - local nvim_lsp = require('lspconfig') -- Use an on_attach function to only map the following keys @@ -47,7 +45,7 @@ end -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches -local servers = { "pyright" } +local servers = { "texlab", "pyright", "vuels", "tsserver" } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, @@ -56,3 +54,9 @@ for _, lsp in ipairs(servers) do } } end + +nvim_lsp.vuels.setup{ + on_attach = function(client) + client.resolved_capabilities.document_formatting = true + end; +} diff --git a/nvim/.config/nvim/plugins/nvim-comp.vim b/nvim/.config/nvim/plugins/nvim-comp.vim index c1a24e7..52163db 100644 --- a/nvim/.config/nvim/plugins/nvim-comp.vim +++ b/nvim/.config/nvim/plugins/nvim-comp.vim @@ -26,6 +26,7 @@ let g:compe.source.emoji = v:false " NOTE: You can use other key to expand snippet. + " Expand imap vsnip#expandable() ? '(vsnip-expand)' : '' smap vsnip#expandable() ? '(vsnip-expand)' : '' @@ -51,3 +52,47 @@ xmap S (vsnip-cut-text) " let g:vsnip_filetypes = {} " let g:vsnip_filetypes.javascriptreact = ['javascript'] " let g:vsnip_filetypes.typescriptreact = ['typescript'] + +lua << EOF +local t = function(str) + return vim.api.nvim_replace_termcodes(str, true, true, true) +end + +local check_back_space = function() + local col = vim.fn.col('.') - 1 + if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then + return true + else + return false + end +end + +-- Use (s-)tab to: +--- move to prev/next item in completion menuone +--- jump to prev/next snippet's placeholder +_G.tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + elseif check_back_space() then + return t "" + else + return vim.fn['compe#complete']() + end +end +_G.s_tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + else + return t "" + end +end + +vim.api.nvim_set_keymap("i", "", "v:lua.tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("s", "", "v:lua.tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("i", "", "v:lua.s_tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("s", "", "v:lua.s_tab_complete()", {expr = true}) + +--This line is important for auto-import +vim.api.nvim_set_keymap('i', '', 'compe#confirm("")', { expr = true }) +vim.api.nvim_set_keymap('i', '', 'compe#complete()', { expr = true }) +EOF diff --git a/nvim/.config/nvim/plugins/plugins.vim b/nvim/.config/nvim/plugins/plugins.vim index 88a2fc3..fc59629 100644 --- a/nvim/.config/nvim/plugins/plugins.vim +++ b/nvim/.config/nvim/plugins/plugins.vim @@ -13,6 +13,7 @@ call plug#begin('~/.config/nvim/autoload/plugged') "Plug 'tpope/vim-sensible' Plug 'tpope/vim-fugitive' + Plug 'mhinz/vim-signify' Plug 'tpope/vim-surround' Plug 'tpope/vim-repeat' @@ -20,10 +21,14 @@ call plug#begin('~/.config/nvim/autoload/plugged') Plug 'christoomey/vim-tmux-navigator' Plug 'Yggdroot/indentLine' + " Plug 'SirVer/ultisnips' + " Plug 'honza/vim-snippets' Plug 'neovim/nvim-lspconfig' Plug 'hrsh7th/nvim-compe' Plug 'hrsh7th/vim-vsnip' Plug 'hrsh7th/vim-vsnip-integ' + Plug 'rafamadriz/friendly-snippets' + " Plug 'nvim-lua/completion-nvim' Plug 'nvim-lua/popup.nvim' @@ -32,12 +37,6 @@ call plug#begin('~/.config/nvim/autoload/plugged') "Plug 'lervag/vimtex' - Plug 'SirVer/ultisnips' - Plug 'honza/vim-snippets' - - Plug 'mhinz/vim-signify' - Plug 'tpope/vim-fugitive' - - Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} + " Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} call plug#end()