diff options
author | John Turner <jturner.usa@gmail.com> | 2023-01-24 00:37:25 -0500 |
---|---|---|
committer | John Turner <jturner.usa@gmail.com> | 2023-01-24 00:37:25 -0500 |
commit | 4a7824f8648548bd87b46b2cabc7a60f3b1f7ab9 (patch) | |
tree | 61d93a3654c9948c9b86bc80764b8cdd442d2a2f /init/treesit/init-treesit-setup-available-languages.el | |
parent | fac3f7e4a224d33aace8e502c437590f567ea8c3 (diff) | |
download | emacs.d-4a7824f8648548bd87b46b2cabc7a60f3b1f7ab9.tar.gz |
added some treesitter setup stuff
Diffstat (limited to 'init/treesit/init-treesit-setup-available-languages.el')
-rw-r--r-- | init/treesit/init-treesit-setup-available-languages.el | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/init/treesit/init-treesit-setup-available-languages.el b/init/treesit/init-treesit-setup-available-languages.el new file mode 100644 index 0000000..5817e15 --- /dev/null +++ b/init/treesit/init-treesit-setup-available-languages.el @@ -0,0 +1,55 @@ +;; -*- lexical-binding: t; -*- + +(defvar -languages `((python-ts-mode + ((:langs . python) + (:file-ext . ,(rx ".py")) + (:interpreter . "python"))) + (rust-ts-mode + ((:langs . rust) + (:file-ext . ,(rx ".rs")))) + (bash-ts-mode + ((:langs . bash) + (:file-ext . ,(rx ".sh")) + (:interpreter . "bash"))) + (c-ts-mode + ((:langs . c) + (:file-ext . ,(rx ".c")))) + (c++-ts-mode + ((:langs . c++) + (:file-ext . ,(rx (or ".c++" ".cpp" ".cxx" + ".h++" ".hpp" ".hxx"))))) + (c-or-c++-ts-mode + ((:langs . (c c++)) + (:file-ext . ,(rx ".h")))) + (toml-ts-mode + ((:langs . toml) + (:file-ext . ,(rx ".toml")))))) + +(defun -ready-quiet-p (language) + (treesit-ready-p language t)) + +(cl-defun -load-language? (&key ts-mode + required-languages + file-extension + interpreter?) + (let ((ready? (if (listp required-languages) + (seq-every-p '-ready-quiet-p required-languages) + (-ready-quiet-p required-languages)))) + (when ready? + (add-to-list 'auto-mode-alist (cons file-extension ts-mode)) + (when interpreter? + (add-to-list 'interpreter-mode-alist (cons interpreter? ts-mode)))))) + +(seq-map (lambda (item) + (-load-language? + :ts-mode (car item) + :required-languages (alist-get :langs (cadr item)) + :file-extension (alist-get :file-ext (cadr item)) + :interpreter? (alist-get :interpreter (cadr item)))) + -languages) + +(provide 'init-treesit-setup-available-languages) + +;; Local Variables: +;; read-symbol-shorthands: (("-" . "init-treesit-setup-available-languages-")) +;; End: |