about summary refs log tree commit diff
path: root/users/Profpatsch/emacs-tree-sitter-move
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2020-12-19T20·39+0100
committerProfpatsch <mail@profpatsch.de>2021-01-01T22·40+0000
commitfdb47be7d73652142eb15ae978d5cb63313d346a (patch)
treef277568bd2e1a083933273223cfd434c570de81c /users/Profpatsch/emacs-tree-sitter-move
parent3279786cd221eafc876ca1987c04efe108ed0660 (diff)
feat(emacs-tree-sitter-move): load more than one tree sitter grammar r/2046
Change-Id: I43b8ddb180c056f1b8c650ccc915ec41bae83960
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2262
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Diffstat (limited to 'users/Profpatsch/emacs-tree-sitter-move')
-rw-r--r--users/Profpatsch/emacs-tree-sitter-move/tmp.el30
-rw-r--r--users/Profpatsch/emacs-tree-sitter-move/tree-sitter-move.el1
2 files changed, 23 insertions, 8 deletions
diff --git a/users/Profpatsch/emacs-tree-sitter-move/tmp.el b/users/Profpatsch/emacs-tree-sitter-move/tmp.el
index f7a8437096..88d13fa45b 100644
--- a/users/Profpatsch/emacs-tree-sitter-move/tmp.el
+++ b/users/Profpatsch/emacs-tree-sitter-move/tmp.el
@@ -1,14 +1,28 @@
-(tree-sitter-load
- 'python
- (format "%s/bin/python"
-         (getenv "TREE_SITTER_GRAMMAR_DIR")))
+(defun tree-sitter-load-from-grammar-dir (grammar-dir sym lang-name)
+  (tree-sitter-load
+   sym
+   (format "%s/bin/%s"
+           (getenv grammar-dir)
+           lang-name)))
+
+(defun tree-sitter-init-tmp-langs (alist)
+  (mapcar
+   (lambda (lang)
+     (pcase-let ((`(,name ,sym ,mode) lang))
+       (tree-sitter-load-from-grammar-dir "TREE_SITTER_GRAMMAR_DIR" sym name)
+       (cons mode sym)))
+   alist))
 
-(setq tree-sitter-major-mode-language-alist
-      '((python-mode . python)))
 
+(setq tree-sitter-major-mode-language-alist
+      (tree-sitter-init-tmp-langs
+       '(("python" python python-mode)
+         ("json" json js-mode)
+         ("bash" bash sh-mode)
+         )))
 
 (define-key evil-normal-state-map (kbd "C-.") #'tree-sitter-move-reset)
 (define-key evil-normal-state-map (kbd "C-<right>") #'tree-sitter-move-right)
 (define-key evil-normal-state-map (kbd "C-<left>") #'tree-sitter-move-left)
-(define-key evil-normal-state-map (kbd "C-<up>") 'tree-sitter-move-up)
-(define-key evil-normal-state-map (kbd "C-<down>") 'tree-sitter-move-down)
+(define-key evil-normal-state-map (kbd "C-<up>") #'tree-sitter-move-up)
+(define-key evil-normal-state-map (kbd "C-<down>") #'tree-sitter-move-down)
diff --git a/users/Profpatsch/emacs-tree-sitter-move/tree-sitter-move.el b/users/Profpatsch/emacs-tree-sitter-move/tree-sitter-move.el
index c23e401f0a..ddccb58c89 100644
--- a/users/Profpatsch/emacs-tree-sitter-move/tree-sitter-move.el
+++ b/users/Profpatsch/emacs-tree-sitter-move/tree-sitter-move.el
@@ -15,6 +15,7 @@
 (defun tree-sitter-move--setup ()
   ;; TODO
   (progn
+    ;; TODO: if tree-sitter-mode fails to load, display a better error
     (tree-sitter-mode t)
     (setq tree-sitter-move--cursor (tsc-root-node tree-sitter-tree))
     (add-variable-watcher