about summary refs log tree commit diff
path: root/pkgs/applications/editors/emacs
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2022-04-24 07:44:40 +1200
committeradisbladis <adisbladis@gmail.com>2022-04-24 07:44:40 +1200
commitdaee75e5b32a00c9d5261be4de29ff9a8ccc1dd2 (patch)
treebcae017fa513171199f47f0ba00c1107e3eb0e8d /pkgs/applications/editors/emacs
parentb4f90318fecf53ca26a104a39ac42c914582dfe4 (diff)
downloadnixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.tar
nixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.tar.gz
nixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.tar.bz2
nixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.tar.lz
nixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.tar.xz
nixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.tar.zst
nixlib-daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2.zip
emacs.pkgs.tree-sitter-langs: Make language plugins configurable
By using an expression like:
``` nix
emacs.pkgs.tree-sitter-langs.passthru.withPlugins (p: [ p.tree-sitter-agda ])
```
Diffstat (limited to 'pkgs/applications/editors/emacs')
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix2
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix12
2 files changed, 10 insertions, 4 deletions
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
index 6d8dbce2b32b..4dc546c6263d 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
@@ -233,7 +233,7 @@
 
   sv-kalender = callPackage ./sv-kalender { };
 
-  tree-sitter-langs = callPackage ./tree-sitter-langs { };
+  tree-sitter-langs = callPackage ./tree-sitter-langs { final = self; };
   tsc = callPackage ./tsc { };
 
   youtube-dl = callPackage ./youtube-dl { };
diff --git a/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix b/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix
index 99fa87abf018..e62a37565c83 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix
@@ -9,13 +9,13 @@
 , melpaStablePackages
 , runCommand
 , tree-sitter-grammars
+, plugins ? map (g: tree-sitter-grammars.${g}) (lib.importJSON ./default-grammars.json)
+, final
 }:
 
 let
   inherit (melpaStablePackages) tree-sitter-langs;
 
-  grammars = map (g: tree-sitter-grammars.${g}) (lib.importJSON ./default-grammars.json);
-
   libSuffix = if stdenv.isDarwin then "dylib" else "so";
   soName = g: lib.removeSuffix "-grammar" (lib.removePrefix "tree-sitter-" g.pname) + "." + libSuffix;
 
@@ -26,7 +26,7 @@ let
     install -d $out/langs/bin
     echo -n $version > $out/langs/bin/BUNDLE-VERSION
   '' + lib.concatStringsSep "\n" (map (
-    g: "ln -s ${g}/parser $out/langs/bin/${soName g}") grammars
+    g: "ln -s ${g}/parser $out/langs/bin/${soName g}") plugins
   ));
 
 in
@@ -35,4 +35,10 @@ melpaStablePackages.tree-sitter-langs.overrideAttrs(old: {
     substituteInPlace ./tree-sitter-langs-build.el \
     --replace "tree-sitter-langs-grammar-dir tree-sitter-langs--dir"  "tree-sitter-langs-grammar-dir \"${grammarDir}/langs\""
   '';
+
+  passthru = old.passthru or {} // {
+    inherit plugins;
+    withPlugins = fn: final.tree-sitter-langs.override { plugins = fn tree-sitter-grammars; };
+  };
+
 })