emacs.pkgs.tree-sitter-langs: Link to each grammar's query files
Create symlinks to the query files provided by the grammars. This makes syntax highlighting works properly for languages which tree-sitter-langs doesn't provide query files and updates the ones it provides to the latest upstream files.
This commit is contained in:
parent
784686d06c
commit
faee7f1311
1 changed files with 16 additions and 1 deletions
|
@ -17,7 +17,8 @@ let
|
|||
inherit (melpaStablePackages) tree-sitter-langs;
|
||||
|
||||
libSuffix = if stdenv.isDarwin then "dylib" else "so";
|
||||
soName = g: lib.removeSuffix "-grammar" (lib.removePrefix "tree-sitter-" g.pname) + "." + libSuffix;
|
||||
langName = g: lib.removeSuffix "-grammar" (lib.removePrefix "tree-sitter-" g.pname);
|
||||
soName = g: langName g + "." + libSuffix;
|
||||
|
||||
grammarDir = runCommand "emacs-tree-sitter-grammars" {
|
||||
# Fake same version number as upstream language bundle to prevent triggering runtime downloads
|
||||
|
@ -28,6 +29,7 @@ let
|
|||
'' + lib.concatStringsSep "\n" (map (
|
||||
g: "ln -s ${g}/parser $out/langs/bin/${soName g}") plugins
|
||||
));
|
||||
siteDir = "$out/share/emacs/site-lisp/elpa/${tree-sitter-langs.pname}-${tree-sitter-langs.version}";
|
||||
|
||||
in
|
||||
melpaStablePackages.tree-sitter-langs.overrideAttrs(old: {
|
||||
|
@ -36,6 +38,19 @@ melpaStablePackages.tree-sitter-langs.overrideAttrs(old: {
|
|||
--replace "tree-sitter-langs-grammar-dir tree-sitter-langs--dir" "tree-sitter-langs-grammar-dir \"${grammarDir}/langs\""
|
||||
'';
|
||||
|
||||
postInstall =
|
||||
old.postInstall or ""
|
||||
+ lib.concatStringsSep "\n"
|
||||
(map
|
||||
(g: ''
|
||||
if [[ -d "${g}/queries" ]]; then
|
||||
mkdir -p ${siteDir}/queries/${langName g}/
|
||||
for f in ${g}/queries/*; do
|
||||
ln -sfn "$f" ${siteDir}/queries/${langName g}/
|
||||
done
|
||||
fi
|
||||
'') plugins);
|
||||
|
||||
passthru = old.passthru or {} // {
|
||||
inherit plugins;
|
||||
withPlugins = fn: final.tree-sitter-langs.override { plugins = fn tree-sitter-grammars; };
|
||||
|
|
Loading…
Reference in a new issue