Skip to content

Commit

Permalink
Merge branch 'NotAShelf:main' into feature-language-tex
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacST08 authored Jan 27, 2025
2 parents 8f33313 + 4242640 commit 95d5463
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 28 deletions.
15 changes: 9 additions & 6 deletions docs/man/header.5
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
.TH "nvf" "5" "01/01/1980" "nvf"
.TH "nvf" "5" "January 1, 1980" "nvf"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" enable line breaks after slashes
.cflags 4 /

.SH "NAME"
nvf configuration specification
.SH "OPTIONS"
.PP
You can use the following options to configure nvf:
.PP
nvf \- Configuration specification for the nvf.

.SH "DESCRIPTION"
The nvf configuration specification provides a declarative structure for configuring Neovim using Nix with few
lines of Nix. This document outlines the available options and their usage to create modular, reusable, and
reproducible configurations using nvf's module system options. For tips, tricks and possible quirks with available
plugins please visit https://notashelf.github.io/nvf/
41 changes: 30 additions & 11 deletions docs/man/nvf.1
Original file line number Diff line number Diff line change
@@ -1,33 +1,52 @@
.Dd January 1, 1980
.Dt nvf 1
.Dt NVF 1
.Os nvf
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" enable line breaks after slashes
.cflags 4 /

.Sh NAME
.Nm nvf
.Nd A highly modular, extensible and distro-agnostic Neovim configuration framework for Nix/NixOS.
.
.Nd A modular, extensible, and distro-agnostic Neovim configuration framework for Nix/NixOS.

.Sh DESCRIPTION
.Nm nvf
is a highly modular, configurable, extensible, and easy-to-use Neovim configuration in Nix.
Designed for flexibility and ease of use, nvf allows you to easily configure your fully featured
Neovim instance with a few lines of Nix.

.Sh COMMANDS
The following commands are bundled with nvf to allow easier debugging of your configuration.

.Bl -tag -width Ds
.It Nm nvf-print-config
Outputs the full configuration of the current `nvf` setup. This command is useful for debugging
or inspecting the applied configuration.
.Pp
.It Nm nvf-print-config-path
Prints the file path to the configuration file currently in use. This command is helpful for locating
the source configuration file for troubleshooting or easily sharing it via online paste utilities.
.El

.Sh BUGS
.Pp
Please report any bugs that you might encounter on the
\m[blue]\fBproject issue tracker\fR\m[]\&.
Please report any bugs on the project issue tracker:
.Lk https://github.com/notashelf/nvf/issues

.Sh SEE ALSO
.Pp
\fBnvf\fR(5)
.Fn nvf 5

.Sh AUTHOR
.Pp
\fBnvf contributors\fR
.Fn nvf contributors
.RS 4
Author.
Primary contributors and maintainers of the project.
.RE

.Sh COPYRIGHT
.br
Copyright \(co 2023\(en2024 nvf contributors
.br
.Pp
Copyright (c) 2023–2025 nvf contributors.
17 changes: 15 additions & 2 deletions docs/release-notes/rl-0.8.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@
your Editorconfig configuration, or use an autocommand to set indentation
values for buffers with the Nix filetype.

- Add [](#opt-vim.lsp.lightbulb.autocmd.enable) for manually managing the
previously managed lightbulb autocommand.
- A warning will occur if [](#opt-vim.lsp.lightbulb.autocmd.enable) and
`vim.lsp.lightbulb.setupOpts.autocmd.enabled` are both set at the same time.
Pick only one.

[amadaluzia](https://github.com/amadaluzia):

[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
Expand Down Expand Up @@ -59,7 +65,8 @@
- Add `vim.snippets.luasnip.setupOpts`, which was previously missing.
- Add `"prettierd"` as a formatter option in
`vim.languages.markdown.format.type`.
- Add the following plugins from [mini.nvim](https://github.com/echasnovski/mini.nvim)
- Add the following plugins from
[mini.nvim](https://github.com/echasnovski/mini.nvim)
- `mini.ai`
- `mini.align`
- `mini.animate`
Expand Down Expand Up @@ -102,7 +109,8 @@
- `mini.trailspace`
- `mini.visits`
- Add [fzf-lua](https://github.com/ibhagwan/fzf-lua) in `vim.fzf-lua`
- Add [rainbow-delimiters](https://github.com/HiPhish/rainbow-delimiters.nvim) in `vim.visuals.rainbow-delimiters`
- Add [rainbow-delimiters](https://github.com/HiPhish/rainbow-delimiters.nvim)
in `vim.visuals.rainbow-delimiters`
- Add options to define highlights under [](#opt-vim.highlight)

[kaktu5](https://github.com/kaktu5):
Expand All @@ -122,3 +130,8 @@
[ruff]: (https://github.com/astral-sh/ruff)

- Add [ruff] as a formatter option in `vim.languages.python.format.type`.

[ARCIII](https://github.com/ArmandoCIII):

- Add `vim.languages.zig.dap` support through pkgs.lldb dap adapter. Code
Inspiration from `vim.languages.clang.dap` implementation.
61 changes: 59 additions & 2 deletions modules/plugins/languages/zig.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.modules) mkIf mkMerge mkDefault;
inherit (lib.lists) isList;
inherit (lib.types) either listOf package str enum;
inherit (lib.types) bool either listOf package str enum;
inherit (lib.nvim.lua) expToLua;
inherit (lib.nvim.types) mkGrammarOption;

cfg = config.vim.languages.zig;

defaultServer = "zls";
servers = {
zls = {
Expand All @@ -31,7 +33,35 @@
};
};

cfg = config.vim.languages.zig;
# TODO: dap.adapter.lldb is duplicated when enabling the
# vim.languages.clang.dap module. This does not cause
# breakage... but could be cleaner.
defaultDebugger = "lldb-vscode";
debuggers = {
lldb-vscode = {
package = pkgs.lldb;
dapConfig = ''
dap.adapters.lldb = {
type = 'executable',
command = '${cfg.dap.package}/bin/lldb-dap',
name = 'lldb'
}
dap.configurations.zig = {
{
name = 'Launch',
type = 'lldb',
request = 'launch',
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = "''${workspaceFolder}",
stopOnEntry = false,
args = {},
},
}
'';
};
};
in {
options.vim.languages.zig = {
enable = mkEnableOption "Zig language support";
Expand All @@ -56,6 +86,26 @@ in {
default = pkgs.zls;
};
};

dap = {
enable = mkOption {
type = bool;
default = config.vim.languages.enableDAP;
description = "Enable Zig Debug Adapter";
};

debugger = mkOption {
type = enum (attrNames debuggers);
default = defaultDebugger;
description = "Zig debugger to use";
};

package = mkOption {
type = package;
default = debuggers.${cfg.dap.debugger}.package;
description = "Zig debugger package.";
};
};
};

config = mkIf cfg.enable (mkMerge [
Expand All @@ -77,5 +127,12 @@ in {
globals.zig_fmt_autosave = mkDefault 0;
};
})

(mkIf cfg.dap.enable {
vim = {
debugger.nvim-dap.enable = true;
debugger.nvim-dap.sources.zig-debugger = debuggers.${cfg.dap.debugger}.dapConfig;
};
})
]);
}
27 changes: 22 additions & 5 deletions modules/plugins/lsp/lightbulb/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.strings) optionalString;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;

Expand All @@ -12,13 +13,29 @@ in {
config = mkIf (cfg.enable && cfg.lightbulb.enable) {
vim = {
startPlugins = ["nvim-lightbulb"];

pluginRC.lightbulb = entryAnywhere ''
vim.api.nvim_command('autocmd CursorHold,CursorHoldI * lua require\'nvim-lightbulb\'.update_lightbulb()')
-- Enable trouble diagnostics viewer
require'nvim-lightbulb'.setup(${toLuaObject cfg.lightbulb.setupOpts})
local nvim_lightbulb = require("nvim-lightbulb")
nvim_lightbulb.setup(${toLuaObject cfg.lightbulb.setupOpts})
${optionalString cfg.lightbulb.autocmd.enable ''
vim.api.nvim_create_autocmd(${toLuaObject cfg.lightbulb.autocmd.events}, {
pattern = ${toLuaObject cfg.lightbulb.autocmd.pattern},
callback = function()
nvim_lightbulb.update_lightbulb()
end,
})
''}
'';
};

warnings = [
# This could have been an assertion, but the chances of collision is very low and asserting here
# might be too dramatic. Let's only warn the user, *in case* this occurs and is not intended. No
# error will be thrown if 'lightbulb.setupOpts.autocmd.enable' has not been set by the user.
(mkIf (cfg.lightbulb.autocmd.enable -> (cfg.lightbulb.setupOpts.autocmd.enabled or false)) ''
Both 'vim.lsp.lightbulb.autocmd.enable' and 'vim.lsp.lightbulb.setupOpts.autocmd.enable' are set
simultaneously. This might have performance implications due to frequent updates. Please set only
one option to handle nvim-lightbulb autocmd.
'')
];
};
}
22 changes: 20 additions & 2 deletions modules/plugins/lsp/lightbulb/lightbulb.nix
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
{lib, ...}: let
inherit (lib.options) mkEnableOption;
inherit (lib.nvim.types) mkPluginSetupOption;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) listOf str either;
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
in {
options.vim.lsp = {
lightbulb = {
enable = mkEnableOption "Lightbulb for code actions. Requires an emoji font";
setupOpts = mkPluginSetupOption "nvim-lightbulb" {};
autocmd = {
enable = mkEnableOption "updating lightbulb glyph automatically" // {default = true;};
events = mkOption {
type = listOf str;
default = ["CursorHold" "CursorHoldI"];
description = "Events on which to update nvim-lightbulb glyphs";
};

pattern = mkOption {
type = either str luaInline;
default = "*";
description = ''
File patterns or buffer names to match, determining which files or buffers trigger
glyph updates.
'';
};
};
};
};
}

0 comments on commit 95d5463

Please sign in to comment.