Updates to neovim setup

This commit is contained in:
Jacob Hinkle 2022-12-20 08:05:44 -05:00
parent fc589730d5
commit 42c6b9073e

View File

@ -27,6 +27,108 @@ pkgs: {
" temporary fix for broken popup menu colors " temporary fix for broken popup menu colors
" see here: https://github.com/nvim-telescope/telescope.nvim/issues/2145 " see here: https://github.com/nvim-telescope/telescope.nvim/issues/2145
hi NormalFloat ctermfg=LightGrey hi NormalFloat ctermfg=LightGrey
" trouble.nvim settings
nnoremap <leader>xx <cmd>TroubleToggle<cr>
nnoremap <leader>xw <cmd>TroubleToggle workspace_diagnostics<cr>
nnoremap <leader>xd <cmd>TroubleToggle document_diagnostics<cr>
nnoremap <leader>xq <cmd>TroubleToggle quickfix<cr>
nnoremap <leader>xl <cmd>TroubleToggle loclist<cr>
nnoremap gR <cmd>TroubleToggle lsp_references<cr>
lua << EOF
require 'lspconfig'
-- rust setup from https://sharksforarms.dev/posts/neovim-rust/
-- Set completeopt to have a better completion experience
-- :help completeopt
-- menuone: popup even when there's only one match
-- noinsert: Do not insert text until a selection is made
-- noselect: Do not auto-select, nvim-cmp plugin will handle this for us.
vim.o.completeopt = "menuone,noinsert,noselect"
-- Avoid showing extra messages when using completion
vim.opt.shortmess = vim.opt.shortmess + "c"
local function on_attach(client, buffer)
-- This callback is called when the LSP is atttached/enabled for this buffer
-- we could set keymaps related to LSP, etc here.
end
-- Configure LSP through rust-tools.nvim plugin.
-- rust-tools will configure and enable certain LSP features for us.
-- See https://github.com/simrat39/rust-tools.nvim#configuration
local opts = {
tools = {
runnables = {
use_telescope = true,
},
inlay_hints = {
auto = true,
show_parameter_hints = true,
parameter_hints_prefix = "",
other_hints_prefix = "",
},
virt_text = {{"demo", "IncSearch"}},
virt_text_pos = 'overlay',
},
-- all the opts to send to nvim-lspconfig
-- these override the defaults set by rust-tools.nvim
-- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer
server = {
-- on_attach is a callback called when the language server attachs to the buffer
on_attach = on_attach,
settings = {
-- to enable rust-analyzer settings visit:
-- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc
["rust-analyzer"] = {
-- enable clippy on save
checkOnSave = {
command = "clippy",
},
},
},
},
}
require("rust-tools").setup(opts)
-- Setup Completion
-- See https://github.com/hrsh7th/nvim-cmp#basic-configuration
local cmp = require("cmp")
cmp.setup({
preselect = cmp.PreselectMode.None,
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
-- Add tab support
["<S-Tab>"] = cmp.mapping.select_prev_item(),
["<Tab>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Insert,
select = true,
}),
},
-- Installed sources
sources = {
{ name = "nvim_lsp" },
{ name = "vsnip" },
{ name = "path" },
{ name = "buffer" },
},
})
EOF
''; '';
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
#context-vim #context-vim
@ -38,6 +140,19 @@ pkgs: {
telescope-fzf-native-nvim telescope-fzf-native-nvim
#nvim-treesitter #nvim-treesitter
vim-nix vim-nix
# rust stuff
nvim-lspconfig
nvim-cmp
cmp-nvim-lsp
cmp-vsnip
cmp-path
cmp-buffer
vim-vsnip
rust-tools-nvim
trouble-nvim
nvim-web-devicons
]; ];
vimAlias = true; vimAlias = true;
withPython3 = true;
} }