add: nvim: lsp & snippet auto completion && julia lsp setup

- autocompletion with `nvim-cmp`
    - lsp completion with `cpm-nvim-lsp`
    - snippet completion with `cmp_luasnip`, `LuaSnip`
- Julia Language Server config
This commit is contained in:
qwjyh 2023-03-12 02:09:10 +09:00
parent d4378f82d1
commit 514cd06019

View file

@ -75,10 +75,11 @@ if vim.fn.has('win32') == 1 then
end end
----------------------------------------------------------- -----------------------------------------------------------
-- LSP config -- LSP config
local lspconfig = require 'lspconfig'
-- Mapping for language server -- Mapping for language server
-- See `:help vim.diagnostic.* for documentation on any of the below functions -- See `:help vim.diagnostic.* for documentation on any of the below functions
local opts = { noremap = true, silent = true } local opts = { noremap = true, silent = true }
@ -91,7 +92,7 @@ vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
-- after the language server attaches to the current buffer -- after the language server attaches to the current buffer
local on_attach = function(client, bufnr) local on_attach = function(client, bufnr)
-- Enable completion triggered by <c-x><c-o> -- Enable completion triggered by <c-x><c-o>
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') --vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings -- Mappings
-- See `:help vim.lsp.*` for documentation on any of the below function -- See `:help vim.lsp.*` for documentation on any of the below function
@ -113,14 +114,15 @@ local on_attach = function(client, bufnr)
vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts) vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts)
end end
local lsp_flags = { -- cmp_nvim_lsp supports additional LSP completion capabilities
} local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- Lua -- Lua
require'lspconfig'.lua_ls.setup { lspconfig.lua_ls.setup {
on_attach = on_attach, on_attach = on_attach,
flags = lsp_flags, capabilities = capabilities,
settings = { settings = {
Lua = { Lua = {
runtime = { runtime = {
@ -139,10 +141,55 @@ require'lspconfig'.lua_ls.setup {
}, },
} }
-- Julia
lspconfig.julials.setup {
on_attach = on_attach,
capabilities = capabilities,
}
-- nvim-cmp setup
local cmp = require 'cmp'
local luasnip = require 'luasnip'
luasnip.config.setup {}
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
['<C-u>'] = cmp.mapping.scroll_docs(-4), -- Up
['<C-d>'] = cmp.mapping.scroll_docs(4), -- Down
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
}),
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
----------------------------------------------------------- -----------------------------------------------------------