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 02:41:43 +1200
committeradisbladis <adisbladis@gmail.com>2022-04-24 07:19:15 +1200
commitb15c703495742190e6d5cf37ac0980391c323428 (patch)
treefc6748b9782590f8f6e2b67d1020d8ac66a76a32 /pkgs/applications/editors/emacs
parent00af59359fd4ce22922b438527ebe71fefea586e (diff)
downloadnixlib-b15c703495742190e6d5cf37ac0980391c323428.tar
nixlib-b15c703495742190e6d5cf37ac0980391c323428.tar.gz
nixlib-b15c703495742190e6d5cf37ac0980391c323428.tar.bz2
nixlib-b15c703495742190e6d5cf37ac0980391c323428.tar.lz
nixlib-b15c703495742190e6d5cf37ac0980391c323428.tar.xz
nixlib-b15c703495742190e6d5cf37ac0980391c323428.tar.zst
nixlib-b15c703495742190e6d5cf37ac0980391c323428.zip
emacs.pkgs.tree-sitter-langs: Use grammars from nixpkgs and sources from melpa
Diffstat (limited to 'pkgs/applications/editors/emacs')
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix94
1 files changed, 54 insertions, 40 deletions
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 ffc3f5337496..93b4436e9520 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
@@ -6,52 +6,66 @@
 , stdenv
 , fetchFromGitHub
 , writeText
+, melpaStablePackages
+, runCommand
+, tree-sitter-grammars
 }:
 
 let
-  version = "0.10.14";
 
-  tree-sitter-grammars = stdenv.mkDerivation {
-    name = "tree-sitter-grammars";
+  inherit (melpaStablePackages) tree-sitter-langs;
 
-    inherit version;
+  # Note: Commented grammars are in upstream bundle but missing from our packaged grammars
+  grammars = [
+    "agda"
+    "bash"
+    "c"
+    "c-sharp"
+    "cpp"
+    "css"
+    # "d"
+    "elixir"
+    "elm"
+    "fluent"
+    "go"
+    "haskell"
+    "hcl"
+    "html"
+    # "janet-simple"
+    "java"
+    "javascript"
+    "jsdoc"
+    "json"
+    "julia"
+    "nix"
+    "ocaml"
+    "ocaml-interface"
+    # "pgn"
+    "php"
+    "prisma"
+    "python"
+    "ruby"
+    "rust"
+    "scala"
+    "swift"
+    "tsx"
+    "typescript"
+    "verilog"
+    "zig"
+  ];
 
-    src = fetchzip rec {
-      name = "tree-sitter-grammars-linux-${version}.tar.gz";
-      url = "https://github.com/emacs-tree-sitter/tree-sitter-langs/releases/download/${version}/${name}";
-      sha256 = "sha256-J8VplZWhyWN8ur74Ep0CTl4nPtESzfs2Gh6MxfY5Zqc=";
-      stripRoot = false;
-    };
+  grammarDir = runCommand "emacs-tree-sitter-grammars" {
+    # Fake same version number as upstream language bundle to prevent triggering downloads
+    inherit (tree-sitter-langs) version;
+  } (''
+    install -d $out/langs/bin
+    echo -n $version > $out/langs/bin/BUNDLE-VERSION
+  '' + lib.concatStringsSep "\n" (map (g: "ln -s ${tree-sitter-grammars."tree-sitter-${g}"}/parser $out/langs/bin/${g}.so") grammars));
 
-    installPhase = ''
-      install -d $out/langs/bin
-      echo -n $version > $out/langs/bin/BUNDLE-VERSION
-      install -m444 * $out/langs/bin
-    '';
-  };
-
-in melpaBuild {
-  inherit version;
-
-  pname = "tree-sitter-langs";
-  commit = version;
-
-  src = fetchFromGitHub {
-    owner = "emacs-tree-sitter";
-    repo = "tree-sitter-langs";
-    rev = version;
-    sha256 = "sha256-uKfkhcm1k2Ov4fSr7ALVnpQoX/l9ssEWMn761pa7Y/c=";
-  };
-
-  recipe = writeText "recipe" ''
-    (tree-sitter-langs
-    :repo "emacs-tree-sitter/tree-sitter-langs"
-    :fetcher github
-    :files (:defaults "queries"))
-  '';
-
-  postPatch = ''
+in
+melpaStablePackages.tree-sitter-langs.overrideAttrs(old: {
+  postPatch = old.postPatch or "" + ''
     substituteInPlace ./tree-sitter-langs-build.el \
-    --replace "tree-sitter-langs-grammar-dir tree-sitter-langs--dir"  "tree-sitter-langs-grammar-dir \"${tree-sitter-grammars}/langs\""
+    --replace "tree-sitter-langs-grammar-dir tree-sitter-langs--dir"  "tree-sitter-langs-grammar-dir \"${grammarDir}/langs\""
   '';
-}
+})