switch to nvim-cmp

master
Rostyslav Hnatyshyn 1 year ago
parent 57ab6006cd
commit 4b33912ad1
  1. 176
      nvim/init.lua

@ -21,6 +21,7 @@ vim.wo.cursorline = true
vim.opt.hlsearch = false
vim.opt.wrap = true
vim.opt.showmatch = true
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
vim.g.python3_host_prog = '/home/frosty/.dotfiles/nvim/env/bin/python'
@ -48,7 +49,7 @@ function imap(shortcut, command)
map('i', shortcut, command)
end
vim.opt.guifont = "Iosevka Nerd Font:h12"
vim.opt.guifont = "Hack Nerd Font:h12"
if vim.g.neovide then
vim.g.neovide_refresh_rate = 140
-- change to whatever font you prefer
@ -72,7 +73,7 @@ end
-- <leader> is leader key; default is \
nmap("<leader>v", "<cmd>NvimTreeToggle<cr>")
nmap("<leader>ec", "<cmd>e ~/.config/nvim/init.lua<cr>")
nmap("<leader>sc", "<cmd>source ~/.config/nvim/init.lua<cr><cmd>PackerSync<cr>")
nmap("<leader>sc", "<cmd>source ~/.config/nvim/init.lua<cr><cmd>PackerClean<cr><cmd>PackerCompile<cr>")
-- buffer commands
nmap("<leader>b", "<cmd>BufferLineCyclePrev<cr>")
@ -130,9 +131,17 @@ local on_attach = function(client, bufnr)
end
local lsp = require "lspconfig"
local lsp_defaults = lsp.util.default_config
lsp.hls.setup { on_attach = on_attach } -- haskell language server
lsp.ccls.setup { on_attach = on_attach }
lsp.pyright.setup { on_attach = on_attach }
lsp.svelte.setup { on_attach = on_attach }
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.offsetEncoding = { "utf-16" }
lsp.clangd.setup { on_attach = on_attach, capabilities = capabilities }
-- https://github.com/denoland/deno - maybe switch?
lsp.tsserver.setup { on_attach = on_attach }
lsp.marksman.setup { on_attach = on_attach }
@ -146,8 +155,9 @@ lsp.lua_ls.setup { on_attach = on_attach,
}
}
}
lsp.tailwindcss.setup { on_attach = on_attach }
vim.cmd("colorscheme carbonfox")
vim.cmd("colorscheme mellifluous")
-- kill eslint_d on exit
local on_leave_group = vim.api.nvim_create_augroup("OnLeaveGroup", {})
vim.api.nvim_create_autocmd("VimLeave", {
@ -184,29 +194,7 @@ return M]]
return require('packer').startup(function(use)
use 'wbthomason/packer.nvim'
use 'nvim-lua/plenary.nvim'
--[[use { "lukas-reineke/lsp-format.nvim",
config = function()
require("lsp-format").setup {
python = {
exclude = { "pyright" },
},
javascript = {
exclude = { "tsserver" }
}
}
end,
requires = { 'neovim/nvim-lspconfig' }
}]]
--
use 'neovim/nvim-lspconfig'
use {
'ms-jpq/coq_nvim',
branch = 'coq',
event = "VimEnter",
config = 'vim.cmd[[COQnow]]'
}
use { 'ms-jpq/coq.artifacts', branch = 'artifacts' }
use { 'ms-jpq/coq.thirdparty', branch = '3p' }
use {
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate',
@ -218,11 +206,94 @@ return require('packer').startup(function(use)
}
end
}
use { 'kyazdani42/nvim-tree.lua',
use {
'nvim-tree/nvim-web-devicons',
}
use {
'ramojus/mellifluous.nvim',
config = function()
require('mellifluous').setup {}
end
}
use {
'nvim-tree/nvim-tree.lua',
after = "nvim-web-devicons",
requires = "nvim-tree/nvim-web-devicons",
config = function() require('nvim-tree').setup {} end
}
use {
"hrsh7th/nvim-cmp",
requires = {
'kyazdani42/nvim-web-devicons'
"hrsh7th/cmp-buffer", "hrsh7th/cmp-nvim-lsp",
"L3MON4D3/LuaSnip", "rafamadriz/friendly-snippets",
'hrsh7th/cmp-nvim-lua', 'octaltree/cmp-look', 'hrsh7th/cmp-path', 'hrsh7th/cmp-calc',
'f3fora/cmp-spell', 'hrsh7th/cmp-emoji'
},
config = function() require('nvim-tree').setup {} end
config = function()
local cmp = require("cmp")
local luasnip = require('luasnip')
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end
},
sources = {
{ name = 'path' },
{ name = 'nvim_lsp', keyword_length = 1 },
{ name = 'buffer', keyword_length = 3 },
{ name = 'luasnip', keyword_length = 2 },
},
window = {
documentation = cmp.config.window.bordered()
},
formatting = {
fields = { 'menu', 'abbr', 'kind' },
format = function(entry, item)
local menu_icon = {
nvim_lsp = 'λ',
luasnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name]
return item
end,
},
mapping = {
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
['<Down>'] = cmp.mapping.select_next_item(select_opts),
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
['<C-u>'] = cmp.mapping.scroll_docs(-4),
['<C-d>'] = cmp.mapping.scroll_docs(4),
['<C-e>'] = cmp.mapping.abort(),
['<C-y>'] = cmp.mapping.confirm({ select = true }),
['<CR>'] = cmp.mapping.confirm({ select = false }),
['<C-f>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(1) then
luasnip.jump(1)
else
fallback()
end
end, { 'i', 's' }),
['<C-b>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
}
})
end
}
--use { 'jose-elias-alvarez/typescript.nvim',
-- config = function() require("typescript")
@ -241,27 +312,44 @@ return require('packer').startup(function(use)
return find_pyproject(params.root) or params.root
end
})
local black = null_ls.builtins.formatting.black.with({
extra_args = { "--config", "pyproject.toml" },
cwd = function(params)
return find_pyproject(params.root) or params.root
end
})
local flake8 = null_ls.builtins.diagnostics.flake8.with({
cwd = function(params)
return find_flake8(params.root) or params.root
end
})
local eslint_d_format = null_ls.builtins.formatting.eslint_d
local eslint_d_diag = null_ls.builtins.diagnostics.eslint_d
local eslint_d_code = null_ls.builtins.code_actions.eslint_d
local gitsigns = null_ls.builtins.code_actions.gitsigns
local eslint_format = null_ls.builtins.formatting.eslint_d.with({
extra_filetypes = { "svelte" },
})
local eslint_diag = null_ls.builtins.diagnostics.eslint_d.with({
extra_filetypes = { "svelte" },
})
local eslint_code_actions = null_ls.builtins.code_actions.eslint_d.with({
extra_filetypes = { "svelte" },
})
null_ls.setup {
on_attach = on_attach,
sources = {
eslint_format,
eslint_diag,
eslint_code_actions,
null_ls.builtins.code_actions.gitsigns,
isort,
black,
flake8
}
}
null_ls.register({ isort, black, flake8, gitsigns })
null_ls.register({ name = "eslint_d", sources = { eslint_d_code, eslint_d_diag, eslint_d_format } })
end,
requires = { "nvim-lua/plenary.nvim" },
}
@ -275,8 +363,8 @@ return require('packer').startup(function(use)
}
use {
'akinsho/bufferline.nvim',
tag = "v2.*",
requires = 'kyazdani42/nvim-web-devicons',
tag = "*",
requires = 'nvim-tree/nvim-web-devicons',
config = function()
require("bufferline").setup {
options = {
@ -285,11 +373,6 @@ return require('packer').startup(function(use)
}
end
}
use { "EdenEast/nightfox.nvim",
config = function()
require("nightfox").setup {}
end
}
use {
"nvim-lualine/lualine.nvim",
event = "VimEnter",
@ -299,11 +382,12 @@ return require('packer').startup(function(use)
sections = { lualine_x = { 'filetype' } }
}
end,
requires = { 'kyazdani42/nvim-web-devicons', opt = true }
requires = { 'nvim-tree/nvim-web-devicons', opt = true }
}
use {
"startup-nvim/startup.nvim",
requires = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
after = "nvim-web-devicons",
requires = { "nvim-tree/nvim-web-devicons", "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
config = function()
require "startup".setup()
end
@ -332,6 +416,7 @@ return require('packer').startup(function(use)
require('colorizer').setup {
'css',
'javascript',
'toml'
}
end,
}
@ -354,6 +439,7 @@ return require('packer').startup(function(use)
{ 'nvim-lua/plenary.nvim' },
}
}
use { 'stevearc/dressing.nvim' }
if packer_bootstrap then
require('packer').sync()
end

Loading…
Cancel
Save