From 4a7dee2f9ebd6a0fbd195c3173795073e197c49b Mon Sep 17 00:00:00 2001 From: Juliana Rat Date: Sat, 4 Nov 2023 15:11:05 -0400 Subject: [PATCH] Add all tree-sitter grammars in Guix * guix.scm: Add all tree-sitter grammars in Guix repos; move Guile inputs out of propagated-inputs; cleanup indentation and layout. * hall.scm: Add all tree-sitter grammars in Guix repos. --- guix.scm | 197 ++++++++++++++++++++++++++++++++++++++----------------- hall.scm | 37 ++++++++++- 2 files changed, 173 insertions(+), 61 deletions(-) diff --git a/guix.scm b/guix.scm index d1bac4d..fab2d3d 100644 --- a/guix.scm +++ b/guix.scm @@ -1,30 +1,29 @@ -(use-modules - (guix packages) - ((guix licenses) #:prefix license:) - (guix download) - (guix gexp) - (guix build-system gnu) - (gnu packages) - (gnu packages autotools) - (gnu packages guile) - (gnu packages guile-xyz) - (gnu packages pkg-config) - (gnu packages texinfo) - (srfi srfi-1)) +(use-modules (gnu packages) + (gnu packages autotools) + (gnu packages guile) + (gnu packages guile-xyz) + (gnu packages pkg-config) + (gnu packages texinfo) + (gnu packages tree-sitter) + (guix build-system gnu) + (guix download) + (guix gexp) + ((guix licenses) + #:prefix license:) + (guix packages) + (srfi srfi-1)) (package (name "sloth") (version "0.1-dev") (source - (local-file - (dirname (current-filename)) - #:recursive? - #t - #:select? - (λ (file stat) - (not (any (λ (my-string) - (string-contains file my-string)) - (list ".git" ".dir-locals.el" "guix.scm")))))) + (local-file + (dirname (current-filename)) + #:recursive? #t + #:select? (λ (file stat) + (not (any (λ (my-string) + (string-contains file my-string)) + (list ".git" ".dir-locals.el" "guix.scm")))))) (build-system gnu-build-system) (arguments (list @@ -32,54 +31,132 @@ #~(list "GUILE_AUTO_COMPILE=0") #:phases #~(modify-phases %standard-phases - (delete 'strip) + (delete 'strip) (add-before 'configure 'hall-build (λ _ (system* "hall" "build" "-x"))) (add-after 'hall-build 'autoreconf (λ _ (system* "autoreconf" "-vif"))) (add-after 'install 'hall-wrap-binaries - (λ _ - (use-modules (ice-9 ftw)) - (define (compiled-dir out version) - (string-append out "/lib/guile/" - version - "/site-ccache")) - (define (uncompiled-dir out version) - (string-append out - "/share/guile/site" - (if (string-null? version) "" - "/") - version)) - (define (dep-path env modules path) - (list env ":" - 'prefix - (cons modules - (map (λ (input) - (string-append input path)) - (list #$guile-config - #$guile-ncurses - #$guile-ts))))) - (define bin (string-append #$output "/bin/")) - (define site (uncompiled-dir #$output "")) - (define version (caddr (scandir site))) - (wrap-program (string-append bin "sloth") - (dep-path - "GUILE_LOAD_PATH" - (uncompiled-dir #$output version) - (uncompiled-dir "" version)) - (dep-path - "GUILE_LOAD_COMPILED_PATH" - (compiled-dir #$output version) - (compiled-dir "" version)))))))) + (λ _ + (use-modules (ice-9 ftw)) + (define (guile-compiled-dir out version) + (string-append out "/lib/guile/" + version + "/site-ccache")) + (define (guile-uncompiled-dir out version) + (string-append out + "/share/guile/site" + (if (string-null? version) "" + "/") + version)) + (define (guile-dep-path env modules path) + (list env ":" 'prefix + (cons modules + (map (λ (input) + (string-append input path)) + ;; TODO: figure out how to put these in a list shared + ;; with inputs because DRY + (list #$guile-config + #$guile-ncurses + #$guile-ts))))) + (define bin (string-append #$output "/bin/")) + (define site (guile-uncompiled-dir #$output "")) + (define version (caddr (scandir site))) + (wrap-program (string-append bin "sloth") + (guile-dep-path + "GUILE_LOAD_PATH" + (guile-uncompiled-dir #$output version) + (guile-uncompiled-dir "" version)) + (guile-dep-path + "GUILE_LOAD_COMPILED_PATH" + (guile-compiled-dir #$output version) + (guile-compiled-dir "" version)) + (list "TREE_SITTER_GRAMMAR_PATH" ":" '= + (map (λ (input) + (string-append input "/lib/tree-sitter")) + ;; TODO: figure out how to put these in a list shared + ;; with inputs because DRY + (list #$tree-sitter-bash + #$tree-sitter-bibtex + #$tree-sitter-c + #$tree-sitter-c-sharp + #$tree-sitter-clojure + #$tree-sitter-cmake + #$tree-sitter-cpp + #$tree-sitter-css + #$tree-sitter-dockerfile + #$tree-sitter-elixir + #$tree-sitter-elm + #$tree-sitter-go + #$tree-sitter-gomod + #$tree-sitter-haskell + #$tree-sitter-heex + #$tree-sitter-html + #$tree-sitter-java + #$tree-sitter-javascript + #$tree-sitter-json + #$tree-sitter-julia + #$tree-sitter-lua + #$tree-sitter-markdown + #$tree-sitter-markdown-gfm + #$tree-sitter-meson + #$tree-sitter-ocaml + #$tree-sitter-org + #$tree-sitter-php + #$tree-sitter-plantuml + #$tree-sitter-python + #$tree-sitter-r + #$tree-sitter-racket + #$tree-sitter-ruby + #$tree-sitter-rust + #$tree-sitter-scala + #$tree-sitter-scheme + #$tree-sitter-typescript))))))))) (native-inputs (list autoconf automake guile-hall pkg-config texinfo)) - (inputs (list guile-3.0)) - (propagated-inputs (list guile-config - guile-ncurses - guile-ts)) + (inputs (list guile-3.0 + guile-config + guile-ncurses + guile-ts + tree-sitter-bash + tree-sitter-bibtex + tree-sitter-c + tree-sitter-c-sharp + tree-sitter-clojure + tree-sitter-cmake + tree-sitter-cpp + tree-sitter-css + tree-sitter-dockerfile + tree-sitter-elixir + tree-sitter-elm + tree-sitter-go + tree-sitter-gomod + tree-sitter-haskell + tree-sitter-heex + tree-sitter-html + tree-sitter-java + tree-sitter-javascript + tree-sitter-json + tree-sitter-julia + tree-sitter-lua + tree-sitter-markdown + tree-sitter-markdown-gfm + tree-sitter-meson + tree-sitter-ocaml + tree-sitter-org + tree-sitter-php + tree-sitter-plantuml + tree-sitter-python + tree-sitter-r + tree-sitter-racket + tree-sitter-ruby + tree-sitter-rust + tree-sitter-scala + tree-sitter-scheme + tree-sitter-typescript)) (synopsis "Text editor based on tree-sitter") (description "TODO") diff --git a/hall.scm b/hall.scm index 7cb1c33..1cd0877 100644 --- a/hall.scm +++ b/hall.scm @@ -12,7 +12,42 @@ (dependencies `(("guile-config" ,guile-config) ("guile-ncurses" ,guile-ncurses) ("guile-ts" ,guile-ts) - ("tree-sitter-scheme" ,tree-sitter-scheme))) + ("tree-sitter-bash" ,tree-sitter-bash) + ("tree-sitter-bibtex" ,tree-sitter-bibtex) + ("tree-sitter-c" ,tree-sitter-c) + ("tree-sitter-c-sharp" ,tree-sitter-c-sharp) + ("tree-sitter-clojure" ,tree-sitter-clojure) + ("tree-sitter-cmake" ,tree-sitter-cmake) + ("tree-sitter-cpp" ,tree-sitter-cpp) + ("tree-sitter-css" ,tree-sitter-css) + ("tree-sitter-dockerfile" ,tree-sitter-dockerfile) + ("tree-sitter-elixir" ,tree-sitter-elixir) + ("tree-sitter-elm" ,tree-sitter-elm) + ("tree-sitter-go" ,tree-sitter-go) + ("tree-sitter-gomod" ,tree-sitter-gomod) + ("tree-sitter-haskell" ,tree-sitter-haskell) + ("tree-sitter-heex" ,tree-sitter-heex) + ("tree-sitter-html" ,tree-sitter-html) + ("tree-sitter-java" ,tree-sitter-java) + ("tree-sitter-javascript" ,tree-sitter-javascript) + ("tree-sitter-json" ,tree-sitter-json) + ("tree-sitter-julia" ,tree-sitter-julia) + ("tree-sitter-lua" ,tree-sitter-lua) + ("tree-sitter-markdown" ,tree-sitter-markdown) + ("tree-sitter-markdown-gfm" ,tree-sitter-markdown-gfm) + ("tree-sitter-meson" ,tree-sitter-meson) + ("tree-sitter-ocaml" ,tree-sitter-ocaml) + ("tree-sitter-org" ,tree-sitter-org) + ("tree-sitter-php" ,tree-sitter-php) + ("tree-sitter-plantuml" ,tree-sitter-plantuml) + ("tree-sitter-python" ,tree-sitter-python) + ("tree-sitter-r" ,tree-sitter-r) + ("tree-sitter-racket" ,tree-sitter-racket) + ("tree-sitter-ruby" ,tree-sitter-ruby) + ("tree-sitter-rust" ,tree-sitter-rust) + ("tree-sitter-scala" ,tree-sitter-scala) + ("tree-sitter-scheme" ,tree-sitter-scheme) + ("tree-sitter-typescript" ,tree-sitter-typescript))) (skip ()) (files (libraries ((directory "sloth" ((scheme-file "editor")