mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-21 17:59:48 +01:00
feat: use elixir-tools.nvim for additional highlighting
This commit is contained in:
parent
7a20488c05
commit
3071c6bb4b
9 changed files with 112 additions and 3 deletions
17
flake.lock
17
flake.lock
|
@ -337,6 +337,22 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"elixir-tools": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1681453321,
|
||||
"narHash": "sha256-7QgWrdq4p5t8WVnFhL5P948JFPR0i2C06kisxl30D2U=",
|
||||
"owner": "elixir-tools",
|
||||
"repo": "elixir-tools.nvim",
|
||||
"rev": "8ccb696c048eca667486ee005f4386c0db8c5e14",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "elixir-tools",
|
||||
"repo": "elixir-tools.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fidget-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -1336,6 +1352,7 @@
|
|||
"diffview-nvim": "diffview-nvim",
|
||||
"dressing-nvim": "dressing-nvim",
|
||||
"elixir-ls": "elixir-ls",
|
||||
"elixir-tools": "elixir-tools",
|
||||
"fidget-nvim": "fidget-nvim",
|
||||
"flake-parts": "flake-parts",
|
||||
"flake-utils": "flake-utils",
|
||||
|
|
|
@ -153,6 +153,11 @@
|
|||
flake = false;
|
||||
};
|
||||
|
||||
elixir-tools = {
|
||||
url = "github:elixir-tools/elixir-tools.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Copying/Registers
|
||||
registers = {
|
||||
url = "github:tversteeg/registers.nvim";
|
||||
|
|
|
@ -80,6 +80,7 @@ with lib; let
|
|||
"smartcolumn"
|
||||
"project-nvim"
|
||||
"elixir-ls"
|
||||
"elixir-tools"
|
||||
];
|
||||
# You can either use the name of the plugin or a package.
|
||||
pluginsType = with types;
|
||||
|
|
|
@ -344,7 +344,7 @@ in {
|
|||
|
||||
${writeIf cfg.elixir.enable ''
|
||||
lspconfig.elixirls.setup {
|
||||
cmd = { "${pkgs.elixir-ls}/language_server.sh" },
|
||||
cmd = { "${lib.getExe pkgs.elixir-ls}" },
|
||||
on_attach = on_attach
|
||||
}
|
||||
''}
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
./lsp-signature
|
||||
./lightbulb
|
||||
|
||||
# flutter-tools
|
||||
./flutter-tools-nvim
|
||||
# language specific modules
|
||||
./flutter-tools-nvim # dart & flutter
|
||||
./elixir # elixir
|
||||
];
|
||||
}
|
||||
|
|
67
modules/lsp/elixir/config.nix
Normal file
67
modules/lsp/elixir/config.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with builtins; let
|
||||
cfg = config.vim.lsp.elixir;
|
||||
in {
|
||||
config = mkIf (cfg.enable) {
|
||||
vim.startPlugins = [
|
||||
"elixir-tools"
|
||||
"plenary-nvim"
|
||||
];
|
||||
|
||||
vim.luaConfigRC.elixir-tools = nvim.dag.entryAnywhere ''
|
||||
local elixir = require("elixir")
|
||||
local elixirls = require("elixir.elixirls")
|
||||
|
||||
elixir.setup {
|
||||
elixirls = {
|
||||
|
||||
|
||||
-- alternatively, point to an existing elixir-ls installation (optional)
|
||||
-- not currently supported by elixirls, but can be a table if you wish to pass other args `{"path/to/elixirls", "--foo"}`
|
||||
cmd = "${lib.getExe pkgs.elixir-ls}",
|
||||
|
||||
-- default settings, use the `settings` function to override settings
|
||||
settings = elixirls.settings {
|
||||
dialyzerEnabled = true,
|
||||
fetchDeps = false,
|
||||
enableTestLenses = false,
|
||||
suggestSpecs = false,
|
||||
},
|
||||
|
||||
on_attach = function(client, bufnr)
|
||||
local map_opts = { buffer = true, noremap = true}
|
||||
|
||||
-- run the codelens under the cursor
|
||||
vim.keymap.set("n", "<space>r", vim.lsp.codelens.run, map_opts)
|
||||
-- remove the pipe operator
|
||||
vim.keymap.set("n", "<space>fp", ":ElixirFromPipe<cr>", map_opts)
|
||||
-- add the pipe operator
|
||||
vim.keymap.set("n", "<space>tp", ":ElixirToPipe<cr>", map_opts)
|
||||
vim.keymap.set("v", "<space>em", ":ElixirExpandMacro<cr>", map_opts)
|
||||
|
||||
-- bindings for standard LSP functions.
|
||||
vim.keymap.set("n", "<space>df", "<cmd>lua vim.lsp.buf.format()<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>gd", "<cmd>lua vim.diagnostic.open_float()<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>dt", "<cmd>lua vim.lsp.buf.definition()<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>K", "<cmd>lua vim.lsp.buf.hover()<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>gD","<cmd>lua vim.lsp.buf.implementation()<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>1gD","<cmd>lua vim.lsp.buf.type_definition()<cr>", map_opts)
|
||||
-- keybinds for fzf-lsp.nvim: https://github.com/gfanto/fzf-lsp.nvim
|
||||
-- you could also use telescope.nvim: https://github.com/nvim-telescope/telescope.nvim
|
||||
-- there are also core vim.lsp functions that put the same data in the loclist
|
||||
vim.keymap.set("n", "<space>gr", ":References<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>g0", ":DocumentSymbols<cr>", map_opts)
|
||||
vim.keymap.set("n", "<space>gW", ":WorkspaceSymbols<cr>", map_opts)
|
||||
vim.keymap.set("n", "<leader>d", ":Diagnostics<cr>", map_opts)
|
||||
end
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
6
modules/lsp/elixir/default.nix
Normal file
6
modules/lsp/elixir/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
_: {
|
||||
imports = [
|
||||
./config.nix
|
||||
./elixir-tools.nix
|
||||
];
|
||||
}
|
10
modules/lsp/elixir/elixir-tools.nix
Normal file
10
modules/lsp/elixir/elixir-tools.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with builtins; {
|
||||
options.vim.lsp.elixir = {
|
||||
};
|
||||
}
|
|
@ -45,6 +45,8 @@ with builtins; {
|
|||
graphql
|
||||
json
|
||||
zig
|
||||
elixir
|
||||
heex
|
||||
]
|
||||
++ (optional config.vim.notes.orgmode.enable org); # add orgmode grammar if enabled
|
||||
description = ''
|
||||
|
|
Loading…
Reference in a new issue