From d0714f8bff6bae6ccd2ea81aa1961302626ea1ce Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Tue, 17 Jun 2025 13:26:25 +0800 Subject: [PATCH] feat(snippets): fucking finally get working snippets --- flake.lock | 11 ++-- flake.nix | 2 +- .../rafiq/cli/editor/_nvf/snippets.nix | 4 -- .../x86_64-linux/rafiq/cli/editor/default.nix | 58 ++++++++++++++++++- 4 files changed, 63 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index eb10125..b1627bc 100644 --- a/flake.lock +++ b/flake.lock @@ -474,15 +474,16 @@ ] }, "locked": { - "lastModified": 1749895904, - "narHash": "sha256-D7ZLf2ApiHMLlS6Imu7yHaB4Nbf9Hi8a8/64xOt6qOo=", - "owner": "notashelf", + "lastModified": 1750133435, + "narHash": "sha256-/LN8xFhCDHA3jOoYnhl2oCBAOAgUHis2kOVxlfA96p0=", + "owner": "rrvsh", "repo": "nvf", - "rev": "77a32f0961edbeda82e80c1bcd465cad21004fc7", + "rev": "50c881019c87b494b0ec6bb0a2f4b0e43af946c6", "type": "github" }, "original": { - "owner": "notashelf", + "owner": "rrvsh", + "ref": "luasnip-customsnippets-stg", "repo": "nvf", "type": "github" } diff --git a/flake.nix b/flake.nix index ea06307..bdb21fd 100644 --- a/flake.nix +++ b/flake.nix @@ -31,7 +31,7 @@ nvf.inputs.nil.follows = "nil"; nvf.inputs.nixpkgs.follows = "nixpkgs"; nvf.inputs.systems.follows = "systems"; - nvf.url = "github:notashelf/nvf"; + nvf.url = "github:rrvsh/nvf/luasnip-customsnippets-stg"; python-flexseal.inputs.flake-utils.follows = "flake-utils"; python-flexseal.inputs.nixpkgs.follows = "nixpkgs"; python-flexseal.url = "github:Janrupf/python-flexseal"; diff --git a/homes/x86_64-linux/rafiq/cli/editor/_nvf/snippets.nix b/homes/x86_64-linux/rafiq/cli/editor/_nvf/snippets.nix index 7544ec6..e423539 100644 --- a/homes/x86_64-linux/rafiq/cli/editor/_nvf/snippets.nix +++ b/homes/x86_64-linux/rafiq/cli/editor/_nvf/snippets.nix @@ -3,10 +3,6 @@ luasnip = { enable = true; setupOpts.enable_autosnippets = true; - loaders = '' - require('luasnip.loaders.from_vscode').lazy_load() - require('luasnip.loaders.from_snipmate').lazy_load() - ''; providers = with pkgs.vimPlugins; [ vim-snippets ]; }; } diff --git a/homes/x86_64-linux/rafiq/cli/editor/default.nix b/homes/x86_64-linux/rafiq/cli/editor/default.nix index 8d6f23d..57b9fa1 100644 --- a/homes/x86_64-linux/rafiq/cli/editor/default.nix +++ b/homes/x86_64-linux/rafiq/cli/editor/default.nix @@ -1,13 +1,67 @@ { lib, pkgs, ... }: let - inherit (lib) singleton; + inherit (lib) singleton replicate; + inherit (lib.strings) + concatMapStringsSep + removeSuffix + concatStrings + stringAsChars + ; + inherit (lib.attrsets) mapAttrsToList; + inherit (pkgs) writeTextFile; + indent = + n: s: + let + indentString = concatStrings (replicate n " "); + sep = "\n" + indentString; + in + indentString + stringAsChars (c: if c == "\n" then sep else c) (removeSuffix "\n" s); + in { home.sessionVariables.EDITOR = "nvim"; persistDirs = singleton ".local/share/nvf"; programs.nvf.enable = true; programs.nvf.settings.vim = { - startPlugins = [ pkgs.pantheon.snippets ]; + startPlugins = + [ pkgs.pantheon.snippets ] + ++ (mapAttrsToList + ( + name: value: + writeTextFile { + name = "${name}.snippets"; + text = concatMapStringsSep "\n" (x: '' + snippet ${x.trigger} ${x.description} + ${indent 2 x.body} + '') value; + destination = "/snippets/${name}.snippets"; + } + ) + { + all = [ + { + trigger = "if"; + description = ""; + body = "if $1 else $2"; + } + ]; + nix = [ + { + trigger = "mkOption"; + description = ""; + body = '' + mkOption { + type = $1; + default = $2; + description = $3; + example = $4; + } + ''; + } + ]; + } + ); + hideSearchHighlight = true; syntaxHighlighting = true; telescope.enable = true;