mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-05-21 06:16:33 +00:00
Merge branch 'main' into feat/twig
This commit is contained in:
commit
927df2fd24
8 changed files with 261 additions and 26 deletions
|
|
@ -208,6 +208,9 @@
|
|||
|
||||
- Added [`golangci-lint`](https://golangci-lint.run/) for more diagnostics.
|
||||
|
||||
- Added [`gopher.nvim`](https://github.com/olexsmir/gopher.nvim) for extra
|
||||
actions in `languages.go`.
|
||||
|
||||
- updated default filetypes for
|
||||
[harper-ls](https://github.com/Automattic/harper) to match what they are
|
||||
supposed to be.
|
||||
|
|
@ -276,4 +279,14 @@ https://github.com/gorbit99/codewindow.nvim
|
|||
- [img-clip.nvim]'s configuration now has it's own DAG entry, separate from
|
||||
image-nvim.
|
||||
|
||||
[phanirithvij](https://github.com/phanirithvij):
|
||||
|
||||
[elm-language-server]: https://github.com/elm-tooling/elm-language-server
|
||||
|
||||
- Add Elm support with [elm-language-server]
|
||||
|
||||
[alv-around](https://github.com/alv-around):
|
||||
|
||||
- Fix `vim.assistant.codecompanion-nvim` lazy loading with [blink-cmp]
|
||||
|
||||
<!-- vim: set textwidth=80: -->
|
||||
|
|
|
|||
26
flake/pkgs/by-name/json2go/package.nix
Normal file
26
flake/pkgs/by-name/json2go/package.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "json2go";
|
||||
version = "0.1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "olexsmir";
|
||||
repo = "json2go";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-2QGvPLQ7CADRNURTdnHgTCK2vyRHgtdR6YFPuTL9Ymo=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
meta = {
|
||||
description = "convert json to go type annotations";
|
||||
mainProgram = "json2go";
|
||||
homepage = "https://github.com/olexsmir/json2go";
|
||||
license = lib.licenses.unlicense;
|
||||
changelog = "${finalAttrs.meta.homepage}/releases/tag/${finalAttrs.version}";
|
||||
};
|
||||
})
|
||||
|
|
@ -18,6 +18,18 @@ in {
|
|||
package = "codecompanion-nvim";
|
||||
setupModule = "codecompanion";
|
||||
inherit (cfg) setupOpts;
|
||||
|
||||
# Register commands with lz.n so Neovim recognizes them immediately
|
||||
cmd = [
|
||||
"CodeCompanion"
|
||||
"CodeCompanionChat"
|
||||
"CodeCompanionActions"
|
||||
"CodeCompanionCmd"
|
||||
];
|
||||
|
||||
# Ensure the plugin loads when entering Insert/Cmdline mode
|
||||
# so the module is ready when blink.cmp requests it
|
||||
event = ["InsertEnter" "CmdlineEnter"];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -33,9 +45,20 @@ in {
|
|||
];
|
||||
};
|
||||
|
||||
autocomplete.nvim-cmp = {
|
||||
sources = {codecompanion-nvim = "[codecompanion]";};
|
||||
sourcePlugins = ["codecompanion-nvim"];
|
||||
autocomplete = {
|
||||
nvim-cmp = {
|
||||
sources = {codecompanion-nvim = "[codecompanion]";};
|
||||
sourcePlugins = ["codecompanion-nvim"];
|
||||
};
|
||||
blink-cmp = {
|
||||
setupOpts.sources = {
|
||||
default = ["codecompanion"];
|
||||
providers.codecompanion = {
|
||||
name = "CodeCompanion";
|
||||
module = "codecompanion.providers.completion.blink";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ in {
|
|||
./cmake.nix
|
||||
./css.nix
|
||||
./elixir.nix
|
||||
./elm.nix
|
||||
./fsharp.nix
|
||||
./gleam.nix
|
||||
./glsl.nix
|
||||
|
|
|
|||
74
modules/plugins/languages/elm.nix
Normal file
74
modules/plugins/languages/elm.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (builtins) attrNames;
|
||||
inherit (lib.options) mkEnableOption mkOption;
|
||||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.types) enum;
|
||||
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
|
||||
inherit (lib.meta) getExe;
|
||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||
|
||||
cfg = config.vim.languages.elm;
|
||||
|
||||
defaultServers = ["elm-language-server"];
|
||||
servers = {
|
||||
elm-language-server = {
|
||||
enable = true;
|
||||
cmd = [(getExe pkgs.elmPackages.elm-language-server)];
|
||||
filetypes = ["elm"];
|
||||
root_markers = ["elm.json"];
|
||||
workspace_required = false;
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.vim.languages.elm = {
|
||||
enable = mkEnableOption "Elm language support";
|
||||
|
||||
treesitter = {
|
||||
enable =
|
||||
mkEnableOption "Elm treesitter"
|
||||
// {
|
||||
default = config.vim.languages.enableTreesitter;
|
||||
};
|
||||
package = mkGrammarOption pkgs "elm";
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable =
|
||||
mkEnableOption "Elm LSP support"
|
||||
// {
|
||||
default = config.vim.lsp.enable;
|
||||
};
|
||||
|
||||
servers = mkOption {
|
||||
type = deprecatedSingleOrListOf "vim.language.elm.lsp.servers" (enum (attrNames servers));
|
||||
default = defaultServers;
|
||||
description = "Elm LSP servers to use";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
(mkIf cfg.treesitter.enable {
|
||||
vim.treesitter = {
|
||||
enable = true;
|
||||
grammars = [cfg.treesitter.package];
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf cfg.lsp.enable {
|
||||
vim = {
|
||||
lsp.servers =
|
||||
mapListToAttrs (n: {
|
||||
name = n;
|
||||
value = servers.${n};
|
||||
})
|
||||
cfg.lsp.servers;
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (builtins) attrNames;
|
||||
inherit (lib.options) mkEnableOption mkOption literalMD;
|
||||
inherit (lib.options) mkEnableOption mkOption literalMD literalExpression;
|
||||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.meta) getExe;
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.types) bool enum package;
|
||||
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
|
||||
inherit (lib.types) bool enum package str;
|
||||
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf mkPluginSetupOption;
|
||||
inherit (lib.nvim.dag) entryAfter;
|
||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||
|
||||
|
|
@ -64,9 +65,11 @@
|
|||
gofmt = {
|
||||
command = "${pkgs.go}/bin/gofmt";
|
||||
};
|
||||
|
||||
gofumpt = {
|
||||
command = getExe pkgs.gofumpt;
|
||||
};
|
||||
|
||||
golines = {
|
||||
command = "${pkgs.golines}/bin/golines";
|
||||
};
|
||||
|
|
@ -168,7 +171,12 @@ in {
|
|||
enable = mkEnableOption "Go language support";
|
||||
|
||||
treesitter = {
|
||||
enable = mkEnableOption "Go treesitter" // {default = config.vim.languages.enableTreesitter;};
|
||||
enable =
|
||||
mkEnableOption "Go treesitter"
|
||||
// {
|
||||
default = config.vim.languages.enableTreesitter;
|
||||
defaultText = literalExpression "config.vim.languages.enableTreesitter";
|
||||
};
|
||||
|
||||
goPackage = mkGrammarOption pkgs "go";
|
||||
gomodPackage = mkGrammarOption pkgs "gomod";
|
||||
|
|
@ -178,7 +186,12 @@ in {
|
|||
};
|
||||
|
||||
lsp = {
|
||||
enable = mkEnableOption "Go LSP support" // {default = config.vim.lsp.enable;};
|
||||
enable =
|
||||
mkEnableOption "Go LSP support"
|
||||
// {
|
||||
default = config.vim.lsp.enable;
|
||||
defaultText = literalExpression "config.vim.lsp.enable";
|
||||
};
|
||||
|
||||
servers = mkOption {
|
||||
type = deprecatedSingleOrListOf "vim.language.go.lsp.servers" (enum (attrNames servers));
|
||||
|
|
@ -198,51 +211,111 @@ in {
|
|||
};
|
||||
|
||||
type = mkOption {
|
||||
description = "Go formatter to use";
|
||||
type = deprecatedSingleOrListOf "vim.language.go.format.type" (enum (attrNames formats));
|
||||
default = defaultFormat;
|
||||
description = "Go formatter to use";
|
||||
};
|
||||
};
|
||||
|
||||
dap = {
|
||||
enable = mkOption {
|
||||
description = "Enable Go Debug Adapter via nvim-dap-go plugin";
|
||||
type = bool;
|
||||
default = config.vim.languages.enableDAP;
|
||||
};
|
||||
enable =
|
||||
mkEnableOption "Go Debug Adapter (DAP) via `nvim-dap-go"
|
||||
// {
|
||||
default = config.vim.languages.enableDAP;
|
||||
defaultText = literalExpression "config.vim.languages.enableDAP";
|
||||
};
|
||||
|
||||
debugger = mkOption {
|
||||
description = "Go debugger to use";
|
||||
type = enum (attrNames debuggers);
|
||||
default = defaultDebugger;
|
||||
description = "Go debugger to use";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
description = "Go debugger package.";
|
||||
type = package;
|
||||
default = debuggers.${cfg.dap.debugger}.package;
|
||||
description = "Go debugger package.";
|
||||
};
|
||||
};
|
||||
|
||||
extraDiagnostics = {
|
||||
enable = mkEnableOption "extra Go diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;};
|
||||
enable =
|
||||
mkEnableOption "extra Go diagnostics"
|
||||
// {
|
||||
default = config.vim.languages.enableExtraDiagnostics;
|
||||
defaultText = literalExpression "config.vim.languages.enableExtraDiagnostic";
|
||||
};
|
||||
|
||||
types = diagnostics {
|
||||
langDesc = "Go";
|
||||
inherit diagnosticsProviders;
|
||||
inherit defaultDiagnosticsProvider;
|
||||
};
|
||||
};
|
||||
|
||||
extensions = {
|
||||
gopher-nvim = {
|
||||
enable = mkEnableOption "Minimalistic plugin for Go development";
|
||||
setupOpts = mkPluginSetupOption "gopher-nvim" {
|
||||
commands = {
|
||||
go = mkOption {
|
||||
type = str;
|
||||
default = "go";
|
||||
description = "Go binary to use";
|
||||
};
|
||||
|
||||
gomodifytags = mkOption {
|
||||
type = str;
|
||||
default = getExe pkgs.gomodifytags;
|
||||
defaultText = literalExpression "getExe pkgs.gomodifytags";
|
||||
description = "gomodifytags binary to use";
|
||||
};
|
||||
|
||||
gotests = mkOption {
|
||||
type = str;
|
||||
default = getExe pkgs.gotests;
|
||||
defaultText = literalExpression "getExe pkgs.gotests";
|
||||
description = "gotests binary to use";
|
||||
};
|
||||
|
||||
impl = mkOption {
|
||||
type = str;
|
||||
default = getExe pkgs.impl;
|
||||
defaultText = literalExpression "getExe pkgs.impl";
|
||||
description = "impl binary to use";
|
||||
};
|
||||
|
||||
iferr = mkOption {
|
||||
type = str;
|
||||
default = getExe pkgs.iferr;
|
||||
defaultText = literalExpression "getExe pkgs.iferr";
|
||||
description = "iferr binary to use";
|
||||
};
|
||||
|
||||
json2go = mkOption {
|
||||
type = str;
|
||||
default = getExe inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.json2go;
|
||||
defaultText = literalExpression "getExe inputs.self.packages.$${pkgs.stdenv.hostPlatform.system}.json2go";
|
||||
description = "json2go binary to use";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
(mkIf cfg.treesitter.enable {
|
||||
vim.treesitter.enable = true;
|
||||
vim.treesitter.grammars = [
|
||||
cfg.treesitter.goPackage
|
||||
cfg.treesitter.gomodPackage
|
||||
cfg.treesitter.gosumPackage
|
||||
cfg.treesitter.goworkPackage
|
||||
cfg.treesitter.gotmplPackage
|
||||
];
|
||||
vim.treesitter = {
|
||||
enable = true;
|
||||
grammars = [
|
||||
cfg.treesitter.goPackage
|
||||
cfg.treesitter.gomodPackage
|
||||
cfg.treesitter.gosumPackage
|
||||
cfg.treesitter.goworkPackage
|
||||
cfg.treesitter.gotmplPackage
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf cfg.lsp.enable {
|
||||
|
|
@ -292,5 +365,14 @@ in {
|
|||
cfg.extraDiagnostics.types);
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf cfg.extensions.gopher-nvim.enable {
|
||||
vim.lazy.plugins.gopher-nvim = {
|
||||
package = "gopher-nvim";
|
||||
setupModule = "gopher";
|
||||
inherit (cfg.extensions.gopher-nvim) setupOpts;
|
||||
ft = ["go"];
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
settings = {
|
||||
haskell = {
|
||||
formattingProvider = "ormolu";
|
||||
cabalFormattingProvider = "cabalfmt";
|
||||
cabalFormattingProvider = "cabal-fmt";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -656,6 +656,22 @@
|
|||
"url": "https://github.com/ellisonleao/glow.nvim/archive/5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2.tar.gz",
|
||||
"hash": "sha256-CvBcmVWBgI+m+PS7p7PmsiPtTEfqx2kpIzz4mImONIc="
|
||||
},
|
||||
"gopher-nvim": {
|
||||
"type": "GitRelease",
|
||||
"repository": {
|
||||
"type": "GitHub",
|
||||
"owner": "olexsmir",
|
||||
"repo": "gopher.nvim"
|
||||
},
|
||||
"pre_releases": false,
|
||||
"version_upper_bound": null,
|
||||
"release_prefix": null,
|
||||
"submodules": false,
|
||||
"version": "v0.6.0",
|
||||
"revision": "95fdeb571d837af9efae27fea1c0131fa756ab43",
|
||||
"url": "https://api.github.com/repos/olexsmir/gopher.nvim/tarball/refs/tags/v0.6.0",
|
||||
"hash": "sha256-7aDjMFMCiqub/zCDJIWUIX9Zc6+vyPQOczuOFdc/6S0="
|
||||
},
|
||||
"grug-far-nvim": {
|
||||
"type": "Git",
|
||||
"repository": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue