feat(snippets): fucking finally get working snippets

This commit is contained in:
Mohammad Rafiq 2025-06-17 13:26:25 +08:00
parent 81de39561a
commit d0714f8bff
No known key found for this signature in database
4 changed files with 63 additions and 12 deletions

11
flake.lock generated
View file

@ -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"
}

View file

@ -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";

View file

@ -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 ];
};
}

View file

@ -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;