nvim/lua/native-lsp/nvim-compe.lua
Just Midi ce9bd490ee Squash and merged lsp branch
Squashed commit of the following:

commit 6179a86a75
Author: Just Midi <storm89161@gmail.com>
Date:   Fri Aug 27 06:18:00 2021 +0000

    Removed && in zls install

    removed && in favor of scripts on separate lines

commit 4ca63a5884
Author: Just Midi <storm89161@gmail.com>
Date:   Thu Aug 26 07:15:27 2021 +0000

    True lazy loading, lsp installs, and nvim-compe

    Installation scripts for:
    + bashls
    + ccls
    + clangd
    + pylsp
    + pyright
    + sumneko
    + zls

    And adjusted a few keymaps

commit 052b4513c2
Author: Just Midi <storm89161@gmail.com>
Date:   Wed Aug 11 20:52:37 2021 +0000

    Base LSP

    + loads LSP server based on file type
    + imports native-lsp (our's) and lspconfig (foreign)
    + key mappings for lsp
2021-08-27 06:23:48 +00:00

95 lines
2.6 KiB
Lua

-- see `:help` for any questions
-- use `&<var>` to show value of vimscript variable
-- API --
-- o = vim.o -- options
-- go = vim.go -- only-global options
-- bo = vim.bo -- buffer local options
-- wo = vim.wo -- window local options
-- cmd = vim.cmd -- vim commands
-- fn = vim.fn -- vim functions
-- opt = vim.opt -- vim option object
-- g = vim.g -- global variables
-- b = vim.b -- buffer local variables
-- w = vim.w -- window local variables
-- t = vim.t -- tab local variables
-- v = vim.v -- variables
-- env = vim.env -- environment variables
-- dependent on https://github.com/hrsh7th/nvim-compe
require'compe'.setup {
enabled = true;
autocomplete = true;
debug = false;
min_length = 1;
preselect = 'enable';
throttle_time = 80;
source_timeout = 200;
incomplete_delay = 400;
max_abbr_width = 100;
max_kind_width = 100;
max_menu_width = 100;
documentation = false;
source = {
path = true;
buffer = true;
calc = true;
vsnip = true;
nvim_lsp = true;
nvim_lua = true;
spell = true;
tags = true;
snippets_nvim = true;
treesitter = true;
};
}
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
end
local check_back_space = function()
local col = fn.col('.') - 1
if col == 0 or 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 fn.pumvisible() == 1 then
return t "<C-n>"
elseif fn.call("vsnip#available", {1}) == 1 then
return t "<Plug>(vsnip-expand-or-jump)"
elseif check_back_space() then
return t "<Tab>"
else
return fn['compe#complete']()
end
end
_G.s_tab_complete = function()
if fn.pumvisible() == 1 then
return t "<C-p>"
elseif fn.call("vsnip#jumpable", {-1}) == 1 then
return t "<Plug>(vsnip-jump-prev)"
else
-- If <S-Tab> is not working in your terminal, change it to <C-h>
return t "<S-Tab>"
end
end
map("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
map("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
map("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
map("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
map('i', '<cr>', 'compe#confirm("<cr>")', { expr = true })
map('i', '<c-space>', 'compe#complete()', { expr = true })