Commit graph

255 commits

Author SHA1 Message Date
Matt Sturgeon
a45b5f372f modules/lsp: add onAttach option
Similar to `plugins.lsp.onAttach`, implement a "global" equivalent to
the per-server `on_attach` callback.

This is implemented using a `LspAttach` autoCmd.
2025-05-06 14:08:03 +01:00
Matt Sturgeon
5308425718
modules/lsp/servers: move to dedicated file/dir
Move the code related to the `lsp.servers` option into a dedicated module,
cleaning up `modules/lsp/default.nix`.
2025-05-05 23:43:30 +01:00
Matt Sturgeon
552dec0e55
modules/lsp/keymaps: init
Initial LSP keymaps option, inspired by `keymapsOnEvent` and
`plugins.lsp.keymaps`.

Users can define `lspBufAction` instead of `action` if they wish to use
a `vim.lsp.buf.<action>` callback.
2025-05-03 22:50:28 +01:00
Matt Sturgeon
90eb4e681c
modules/lsp/servers: move the * server to its own module
Introduce a bespoke `global-server.nix` module. This is less DRY, but
much simpler.

The `lsp.servers."*"` options are different enough from the other
`lsp.servers.<name>` options that it is simpler to just declare them
separately.

Now that we have a dedicated `global-server.nix` module, we no longer
need to split the normal server module into `server.nix`+`server-base.nix`

This partially reverts f2e96b67a3
2025-05-03 20:20:19 +01:00
Matt Sturgeon
a072e3c3a7
modules/lsp: enable servers."*" by default 2025-05-01 00:36:41 +01:00
Matt Sturgeon
b6e2016b7f
modules/lsp: check if server settings is empty
Avoid unnecessary lua lines by checking if `server.settings` is empty
before writing `vim.lsp.config()` to `init.lua`.
2025-05-01 00:36:16 +01:00
Matt Sturgeon
f2e96b67a3
modules/lsp: declare a stripped down servers."*" option
`"*"` is effectively a meta server, where shared config/defaults can be
set.

It shouldn't have options like `activate` or `package` which relate to
"real" servers. Therefore, we'll use `server-base.nix` directly, instead
of the full `server.nix` module.
2025-05-01 00:12:39 +01:00
Johan Larsson
eeae362038
modules/lsp: add enable = true to wildcard config section 2025-04-30 20:55:26 +01:00
Johan Larsson
2d65c66a1a
modules/lsp: don't enable wildcard server
The wildcard server ("*") should have its config set, but not be enabled
through `vim.lsp.enable()`.
2025-04-30 20:55:26 +01:00
Matt Sturgeon
1df98b6636
modules/diagnostic: rename diagnostic.config -> diagnostic.settings
Follow up to #3226, in line with the decisions made in #3254.
2025-04-30 18:31:17 +01:00
Matt Sturgeon
21688b1d2a
modules/lsp/server: rename config -> settings
`config` is a loaded term within modules and options.

`settings` is the name usually used for freeform config in nixvim and
most other module configurations.
2025-04-30 17:35:46 +01:00
Matt Sturgeon
e34eaf8395
modules/lsp/server: declare package defaults
Convert the `attrsOf (servers.nix)` option to a freeform submodule.

Declare a `servers.nix` option for each lsp server listed in
`lsp-packages.nix` that has a known nixpkgs package.
2025-04-30 16:53:55 +01:00
Matt Sturgeon
29aa22c41a
modules/lsp: use relative link to plugins.lspconfig 2025-04-28 18:54:05 +01:00
Matt Sturgeon
5c67a96a86
modules/lsp: get nvim-lspconfig link from plugins.lspconfig.package 2025-04-28 18:54:04 +01:00
Matt Sturgeon
812b2b0903
modules/lsp: update wording for plugins.lspconfig recommendation 2025-04-28 18:54:04 +01:00
Matt Sturgeon
556eb29548
plugins/lspconfig: init
A simplified replacement for `plugins.lsp`.

Eventually, once the `lsp` and `plugins.lspconfig` modules are mature,
`plugins.lsp` will be deprecated and/or aliased.
2025-04-28 18:54:04 +01:00
Matt Sturgeon
29aa60b43a
modules/lsp: add per-server name option
This allows users to override the name used for a given `lsp.servers.*`
entry. The default is still the attr-name.

This may be useful to inject raw lua, or to configure the same server in
different ways via different attrs.
2025-04-28 18:23:49 +01:00
Matt Sturgeon
3722f88c5d
modules/lsp: move server module to dedicated file 2025-04-28 18:04:11 +01:00
Matt Sturgeon
74368bcfc1
modules/lsp: move to dedicated directory 2025-04-28 17:59:05 +01:00
Gaetan Lepage
70c9b3b890 modules/lsp: init
Co-authored-by: Matt Sturgeon <matt@sturgeon.me.uk>
2025-04-28 18:11:39 +02:00
Stanislav Asunkin
f28d384ab5 modules/performance/combine-plugins: propagate lua dependencies
Plugins from luarocks (e.g. telescope-nvim) have dependencies specified
in propagatedBuildInputs. These dependencies are not added as plugins in
Nvim runtime. They are added to LUA_PATH env var for wrapped neovim.
This commit collects all propagatedBuildInputs from input plugin list
and puts them in the combined plugin.
Note that such dependencies are never combined, because they are not
plugins.
2025-04-28 17:26:13 +03:00
Stanislav Asunkin
7bb135b091 Revert "modules/performance: temporary add plenary to extraPlugins to fix tests"
This reverts commit 5a491f4b2b.
2025-04-28 17:26:13 +03:00
Matt Sturgeon
6c73350557
modules/diagnostic: rename diagnostics -> diagnostic.config
Currently we represent `vim.diagnostic.config()` as a top-level
`diagnostics` option. This means we have no clear namespace for
(e.g.) `vim.diagnostic.<action>` keymap functions.
2025-04-26 20:09:23 +01:00
Matt Sturgeon
47f44488ae
modules/performance: document pathsToLink default
We set the default with "normal" priority, so explicitly list it as
`defaultText`.
2025-04-26 19:55:38 +01:00
Matt Sturgeon
6418cf3414
modules/performance: update runtimepath pathsToLink 2025-04-26 19:55:38 +01:00
Wyatt Avilla
d86fe3df56
modules/diagnostics: fix virtual_lines example
The setting is named `current_line`, not `only_current_line`.

See https://neovim.io/doc/user/diagnostic.html#vim.diagnostic.Opts.VirtualLines
2025-04-24 16:50:32 -07:00
Matt Sturgeon
55ad604d44
modules/dependencies: restore literal expression example support 2025-04-21 09:06:28 +01:00
Matt Sturgeon
fb80e0d0b5
modules/dependencies: coerce __depPackages attr-paths to list 2025-04-21 09:05:52 +01:00
Matt Sturgeon
1164b39963
modules/dependencies: add __depPackages example 2025-04-21 09:04:39 +01:00
Matt Sturgeon
af2f4266e2
modules/dependencies: add description to __depPackages 2025-04-21 08:40:40 +01:00
Gaetan Lepage
6c4e2d9279 modules/dependencies: introduce top-level (internal) __depPackages option 2025-04-20 22:57:52 +02:00
Gaetan Lepage
15919567bb modules/dependencies: add codeium, coreutils, gzip and util-linux 2025-04-14 01:23:52 +02:00
Matt Sturgeon
16879e3034
modules/dependencies: refactor all-examples test
Embed the original `path` as an attr in the literal expression, so that
we don't need to convert back from human readable paths in the test.
2025-04-13 18:23:06 +01:00
Gaetan Lepage
9bc29e6a9b modules/dependencies: add rust-analyzer 2025-04-11 08:51:45 +10:00
Gaetan Lepage
e7c9cc7133 modules/dependencies: add godot 2025-04-11 08:51:45 +10:00
Gaetan Lepage
06acf3f103 modules/dependencies: add flutter 2025-04-11 08:51:45 +10:00
Gaetan Lepage
55ec7c4187 modules/dependencies: add xxd 2025-04-11 08:51:45 +10:00
Gaetan Lepage
0a78c93e7a modules/dependencies: add llm-ls 2025-04-11 08:51:45 +10:00
Gaetan Lepage
75d2125e01 modules/dependencies: add tmux 2025-04-11 08:51:45 +10:00
Gaetan Lepage
5ad022e151 modules/dependencies: add glow 2025-04-11 08:51:45 +10:00
Gaetan Lepage
68c806bd60 modules/dependencies: add wezterm 2025-04-11 08:51:45 +10:00
Gaetan Lepage
1e3fe17dd7 modules/dependencies: add yq 2025-04-11 08:51:45 +10:00
Gaetan Lepage
1144fa8698 modules/dependencies: add zk 2025-04-11 08:51:45 +10:00
Gaetan Lepage
800bee29df modules/dependencies: add lazygit 2025-04-11 08:51:45 +10:00
Gaetan Lepage
e866ddf5ce modules/dependencies: add cornelis 2025-04-11 08:51:45 +10:00
Gaetan Lepage
96ebd63330 modules/dependencies: add fzf 2025-04-11 08:51:45 +10:00
Gaetan Lepage
ee60083622 modules/dependencies: add bat 2025-04-11 08:51:45 +10:00
Gaetan Lepage
7d7dd1d21e modules/dependencies: add plantuml 2025-04-11 08:51:45 +10:00
Gaetan Lepage
a79c872893 modules/dependencies: add sd and sed 2025-04-11 08:51:45 +10:00
Gaetan Lepage
d6cdbf36b2 modules/dependencies: add ripgrep 2025-04-11 08:51:45 +10:00