Skip to content

Commit

Permalink
chore: switch to nightly neovim
Browse files Browse the repository at this point in the history
Signed-off-by: Roman Volosatovs <[email protected]>
  • Loading branch information
rvolosatovs committed Nov 22, 2023
1 parent 578020c commit 30784bb
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 77 deletions.
57 changes: 42 additions & 15 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
inputs.lanzaboote.inputs.flake-utils.follows = "flake-utils";
inputs.lanzaboote.inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs.lanzaboote.url = "github:nix-community/lanzaboote";
inputs.neovim.inputs.flake-utils.follows = "flake-utils";
inputs.neovim.inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs.neovim.url = "github:neovim/neovim/nightly?dir=contrib";
inputs.nix-darwin.inputs.nixpkgs.follows = "nixpkgs-darwin";
inputs.nix-darwin.url = "github:LnL7/nix-darwin";
inputs.nix-flake-tests.url = "github:antifuchs/nix-flake-tests";
Expand Down
14 changes: 9 additions & 5 deletions overlays/default.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
inputs @ {
fenix,
neovim,
nixlib,
nixpkgs-unstable,
firefox-addons,
Expand Down Expand Up @@ -42,13 +43,12 @@ with nixlib.lib; let
};
};

neovim = final: prev: {
neovim = final.wrapNeovim final.neovim-unwrapped (import ./neovim inputs final);
neovim' = final: prev: {
neovim = final.wrapNeovim neovim.packages.${final.stdenv.hostPlatform.system}.neovim (import ./neovim inputs final);
};

unstable = final: prev: let
pkgsUnstable = nixpkgs-unstable.legacyPackages.${final.stdenv.hostPlatform.system};

## based on https://github.com/NixOS/nix/issues/3920#issuecomment-1168041777
#nixpkgs-unstable-patched-src = final.applyPatches {
# name = "nixpkgs-patched-${nixpkgs-unstable.shortRev}";
Expand Down Expand Up @@ -96,6 +96,8 @@ with nixlib.lib; let
utm
vimPlugins
vimUtils
wrapFirefox
wrapNeovim
yabai
zig
;
Expand All @@ -107,12 +109,14 @@ in {
images
infrastructure
install
neovim
quake3
scripts
unstable
;

neovim = neovim';
neovim-nightly = neovim.overlay;

firefox-addons = firefox-addons';

fenix = fenix.overlays.default;
Expand All @@ -125,7 +129,7 @@ in {
firefox
firefox-addons'
gopass
neovim
neovim'
quake3

infrastructure
Expand Down
101 changes: 46 additions & 55 deletions overlays/neovim/config.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
--- Imports

require('lsp_extensions')

telescope = require('telescope.builtin')

local cmp = require('cmp')
local cmp_lsp = require('cmp_nvim_lsp')
local illuminate = require('illuminate')
local indent_blankline = require('ibl')
local luasnip = require('luasnip')
local treesitter = require('nvim-treesitter.configs')
Expand All @@ -32,8 +29,8 @@ function goimports(bufnr, timeoutms)
vim.lsp.buf.format { async = true }
end

function noremap_lua_buf(bufnr, bind, command)
vim.api.nvim_buf_set_keymap(bufnr, "", bind, '<cmd>lua ' .. command .. '<cr>', { noremap = true })
function map_lua_buf(bufnr, bind, command)
vim.keymap.set('n', bind, '<cmd>lua ' .. command .. '<cr>', { buffer = bufnr })
end

--- Options
Expand Down Expand Up @@ -265,63 +262,65 @@ treesitter.setup {

--- LSP

local capabilities = cmp_lsp.default_capabilities(vim.lsp.protocol.make_client_capabilities())
local on_attach = function(client, bufnr)
print('LSP loaded.')

vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')

illuminate.on_attach(client)

for k, fn in pairs({
['<C-]>'] = 'telescope.lsp_definitions()',
['<C-k>'] = 'vim.lsp.buf.signature_help()',
['<leader>a'] = 'vim.lsp.buf.code_action()',
['<leader>A'] = 'vim.lsp.buf.range_code_action()',
['<leader>dd'] = 'telescope.diagnostics()',
['<leader>dl'] = 'vim.lsp.diagnostic.set_loclist()',
['<leader>f'] = 'vim.lsp.buf.format{ async = true }',
['<leader>r'] = 'vim.lsp.buf.rename()',
['<leader>sa'] = 'vim.lsp.buf.add_workspace_folder()',
['<leader>sl'] = 'print(vim.inspect(vim.lsp.buf.list_workspace_folders()))',
['<leader>sr'] = 'vim.lsp.buf.remove_workspace_folder()',
['[d'] = 'vim.lsp.diagnostic.goto_prev()',
[']d'] = 'vim.lsp.diagnostic.goto_next()',
['gc'] = 'vim.lsp.buf.incoming_calls()',
['gC'] = 'vim.lsp.buf.outgoing_calls()',
['gd'] = 'telescope.lsp_implementations()',
['gD'] = 'vim.lsp.buf.declaration()',
['gr'] = 'telescope.lsp_references()',
['gs'] = 'telescope.lsp_document_symbols()',
['gS'] = 'telescope.lsp_dynamic_workspace_symbols()',
['gT'] = 'vim.lsp.buf.type_definition()',
['K'] = 'vim.lsp.buf.hover()',
}) do
noremap_lua_buf(bufnr, k, fn)
end
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
print('LSP loaded.')

vim.api.nvim_command [[ hi def link LspReferenceText CursorLine ]]
end
local client = vim.lsp.get_client_by_id(ev.data.client_id)
if client.server_capabilities.inlayHintProvider then
vim.lsp.inlay_hint.enable(ev.buf, true)
else
print("no inlay hints available")
end
vim.g.diagnostics_visible = true

for k, fn in pairs({
['<C-]>'] = 'telescope.lsp_definitions()',
['<C-k>'] = 'vim.lsp.buf.signature_help()',
['<leader>a'] = 'vim.lsp.buf.code_action()',
['<leader>A'] = 'vim.lsp.buf.range_code_action()',
['<leader>dd'] = 'telescope.diagnostics()',
['<leader>dl'] = 'vim.lsp.diagnostic.set_loclist()',
['<leader>f'] = 'vim.lsp.buf.format{ async = true }',
['<leader>r'] = 'vim.lsp.buf.rename()',
['<leader>sa'] = 'vim.lsp.buf.add_workspace_folder()',
['<leader>sl'] = 'print(vim.inspect(vim.lsp.buf.list_workspace_folders()))',
['<leader>sr'] = 'vim.lsp.buf.remove_workspace_folder()',
['[d'] = 'vim.lsp.diagnostic.goto_prev()',
[']d'] = 'vim.lsp.diagnostic.goto_next()',
['gc'] = 'vim.lsp.buf.incoming_calls()',
['gC'] = 'vim.lsp.buf.outgoing_calls()',
['gd'] = 'telescope.lsp_implementations()',
['gD'] = 'vim.lsp.buf.declaration()',
['gr'] = 'telescope.lsp_references()',
['gs'] = 'telescope.lsp_document_symbols()',
['gS'] = 'telescope.lsp_dynamic_workspace_symbols()',
['gT'] = 'vim.lsp.buf.type_definition()',
}) do
map_lua_buf(ev.buf, k, fn)
end

vim.api.nvim_command [[ hi def link LspReferenceText CursorLine ]]
end,
})

local lspconfig = require('lspconfig')
local capabilities = cmp_lsp.default_capabilities()
lspconfig.bashls.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['bash-language-server'], 'start' },
}
lspconfig.clangd.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['clangd'], '--background-index' },
}
lspconfig.dockerls.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['docker-langserver'], '--stdio' },
}
lspconfig.elmls.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['elm-language-server'] },
settings = {
elmLS = {
Expand All @@ -333,13 +332,11 @@ lspconfig.elmls.setup {
}
lspconfig.gdscript.setup {
capabilities = capabilities,
on_attach = on_attach,
}
lspconfig.gopls.setup {
capabilities = capabilities,
on_attach = function(client, bufnr)
on_attach(client, bufnr)
noremap_lua_buf(bufnr, '<leader>i', 'goimports(bufnr, 10000)')
on_attach = function(_, bufnr)
map_lua_buf(bufnr, '<leader>i', 'goimports(bufnr, 10000)')
end,
cmd = { paths.bin['gopls'], 'serve' },
settings = {
Expand All @@ -355,12 +352,10 @@ lspconfig.gopls.setup {
}
lspconfig.hls.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['haskell-language-server'], '--lsp' },
}
lspconfig.julials.setup {
capabilities = capabilities,
on_attach = on_attach,
settings = {
julia = {
executablePath = paths.bin['julia'],
Expand All @@ -370,7 +365,6 @@ lspconfig.julials.setup {
lspconfig.lua_ls.setup {
capabilities = capabilities,
cmd = { paths.bin['lua-language-server'] },
on_attach = on_attach,
on_init = function(client)
local path = client.workspace_folders[1].name
if not vim.loop.fs_stat(path .. '/.luarc.json') and not vim.loop.fs_stat(path .. '/.luarc.jsonc') then
Expand All @@ -395,7 +389,6 @@ lspconfig.lua_ls.setup {
}
lspconfig.nil_ls.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['nil'] },
settings = {
['nil'] = {
Expand All @@ -405,12 +398,10 @@ lspconfig.nil_ls.setup {
}
lspconfig.omnisharp.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['omnisharp'], '--languageserver', '--hostPID', tostring(vim.fn.getpid()) },
}
lspconfig.rust_analyzer.setup {
capabilities = capabilities,
on_attach = on_attach,
cmd = { paths.bin['rust-analyzer'] },
settings = {
['rust-analyzer'] = {
Expand Down
2 changes: 0 additions & 2 deletions overlays/neovim/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ inputs: pkgs @ {vimPlugins, ...}: {
];
configure.packages.plugins.start = with vimPlugins; [
nvim-lspconfig
lsp_extensions-nvim

plenary-nvim

Expand Down Expand Up @@ -34,7 +33,6 @@ inputs: pkgs @ {vimPlugins, ...}: {
auto-pairs
base16-vim
editorconfig-vim
gitv
indent-blankline-nvim
julia-vim
nerdcommenter
Expand Down

0 comments on commit 30784bb

Please sign in to comment.