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;
|
inherit (melpaStablePackages) tree-sitter-langs;
|
||||||
|
|
||||||
libSuffix = if stdenv.isDarwin then "dylib" else "so";
|
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" {
|
grammarDir = runCommand "emacs-tree-sitter-grammars" {
|
||||||
# Fake same version number as upstream language bundle to prevent triggering runtime downloads
|
# Fake same version number as upstream language bundle to prevent triggering runtime downloads
|
||||||
|
@ -28,6 +29,7 @@ let
|
||||||
'' + lib.concatStringsSep "\n" (map (
|
'' + lib.concatStringsSep "\n" (map (
|
||||||
g: "ln -s ${g}/parser $out/langs/bin/${soName g}") plugins
|
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
|
in
|
||||||
melpaStablePackages.tree-sitter-langs.overrideAttrs(old: {
|
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\""
|
--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 {} // {
|
passthru = old.passthru or {} // {
|
||||||
inherit plugins;
|
inherit plugins;
|
||||||
withPlugins = fn: final.tree-sitter-langs.override { plugins = fn tree-sitter-grammars; };
|
withPlugins = fn: final.tree-sitter-langs.override { plugins = fn tree-sitter-grammars; };
|
||||||
|
|
Loading…
Reference in a new issue