+
+(define-public tree-sitter
+ (package
+ (name "tree-sitter")
+ (version "0.20.6")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tree-sitter/tree-sitter")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1z20518snyg0zp75qgs5bxmzjqws4dd19vnp6sya494za3qp5b6d"))
+ (modules '((guix build utils)))
+ (snippet '(begin
+ ;; Remove bundled ICU parts
+ (delete-file-recursively "lib/src/unicode")
+ #t))))
+ (build-system gnu-build-system)
+ (inputs (list icu4c))
+ (arguments
+ (list #:phases
+ '(modify-phases %standard-phases
+ (delete 'configure))
+ #:tests? #f ; there are no tests for the runtime library
+ #:make-flags
+ #~(list (string-append "PREFIX="
+ #$output)
+ (string-append "CC="
+ #$(cc-for-target)))))
+ (home-page "https://tree-sitter.github.io/tree-sitter/")
+ (synopsis "Incremental parsing system for programming tools")
+ (description
+ "Tree-sitter is a parser generator tool and an incremental parsing
+library. It can build a concrete syntax tree for a source file and efficiently
+update the syntax tree as the source file is edited.
+
+Tree-sitter aims to be:
+
+@itemize
+@item General enough to parse any programming language
+@item Fast enough to parse on every keystroke in a text editor
+@item Robust enough to provide useful results even in the presence of syntax errors
+@item Dependency-free so that the runtime library (which is written in pure C)
+can be embedded in any application
+@end itemize
+
+This package includes the @code{libtree-sitter} runtime library.
+")
+ (license license:expat)))
+
+(define-public mle
+ (package
+ (name "mle")
+ (version "1.5.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/adsr/mle")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1nhd00lsx9v12zdmps92magz76c2d8zzln3lxvzl4ng73gbvq3n0"))))
+ (build-system gnu-build-system)
+ (inputs (list lua pcre uthash))
+ (arguments
+ `(#:test-target "test"
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'fix-lua
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "mle.h"
+ (("<lua5.4/") "<"))
+ (substitute* "Makefile"
+ (("-llua5.4") "-llua")
+ (("/bin/sh") (which "sh")))))
+ (add-after 'unpack 'patch-test-shebangs
+ (lambda _
+ (substitute* (find-files "tests/func" "\\.sh$")
+ (("/usr/bin/env bash") (which "bash")))))
+ (delete 'configure) ;no configure script
+ (add-after 'install 'install-man-pages
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out
+ "/share/man/man1")))
+ (install-file "mle.1"
+ (string-append man))))))
+ #:make-flags (list (string-append "CC="
+ ,(cc-for-target))
+ (string-append "prefix=" %output))))
+ (home-page "https://github.com/adsr/mle")
+ (synopsis "Small, flexible, terminal-based text editor")
+ (description
+ "mle is a small, flexible, terminal-based text editor written in C.
+Notable features include: full Unicode support, syntax highlighting,
+scriptable rc file, macros, search and replace (PCRE), window
+splitting, multiple cursors, and integration with various shell
+commands.")
+ (license license:asl2.0)))
+
+(define-public lite-xl
+ (package
+ (name "lite-xl")
+ (version "2.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lite-xl/lite-xl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0l2i9mvbkc4kqkwk2p17zd1rlm5v41acdyp2xivi53p2hkj4x6pf"))
+ (modules '((guix build utils)))
+ (snippet '(substitute* "meson.build"
+ (("dependency\\('lua5\\.2',")
+ "dependency('lua-5.2',")))))
+ (build-system meson-build-system)
+ (inputs (list agg
+ freetype
+ lua-5.2
+ pcre2
+ reproc
+ sdl2))
+ (native-inputs (list pkg-config))
+ (home-page "https://lite-xl.com")
+ (synopsis "Lightweight text editor written in Lua")
+ (description
+ "Lite XL is derived from lite. It is a lightweight text editor written
+mostly in Lua. It aims to provide something practical, pretty, small and fast
+easy to modify and extend, or to use without doing either.
+
+The aim of Lite XL compared to lite is to be more user-friendly, improve the
+quality of font rendering, and reduce CPU usage.")
+ (license license:expat)))