diff --git a/lisp/icejam-base.el b/lisp/icejam-base.el index d2b4c5e..1b68014 100644 --- a/lisp/icejam-base.el +++ b/lisp/icejam-base.el @@ -79,15 +79,6 @@ ;; Numbers are arbitrary, but work on a large screen. Default is 160 (setq split-width-threshold 180) - -;;;;;;;;;;;;;;;;;;;;;; Tree sitter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(use-package tree-sitter :straight t) -(use-package tree-sitter-langs :straight t :requires (tree-sitter)) -(use-package tree-sitter-indent :straight t) - -(global-tree-sitter-mode) -(add-hook 'tree-sitter-after-on-hook 'tree-sitter-hl-mode) - ;;;;;;;;;;;;;;;;;;;;;; Shell stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) diff --git a/lisp/icejam-custom-init.el b/lisp/icejam-custom-init.el index f56b89a..c5fa15b 100644 --- a/lisp/icejam-custom-init.el +++ b/lisp/icejam-custom-init.el @@ -41,6 +41,7 @@ (require 'icejam-keys-mode) (require 'icejam-base) (require 'icejam-sys-specific) +(require 'icejam-tree-sitter) (require 'icejam-ivy) (require 'icejam-avy) (require 'icejam-transient) diff --git a/lisp/icejam-tree-sitter.el b/lisp/icejam-tree-sitter.el new file mode 100644 index 0000000..e594641 --- /dev/null +++ b/lisp/icejam-tree-sitter.el @@ -0,0 +1,33 @@ +;;; icejam-treesitter.el --- summary + +;; Author: Maciej Szlosarczyk +;; Maintainer: Maciej Szlosarczyk +;; Version: 0.1-snapshot + +;;; Commentary: + +;; Load treesitter grammars automatically +;;; Code: + +(defun icejam-tree-sitter-symlink-grammar-objects () + "Tree-sitter-langs-build releases grammars as LANG.so, but treesit needs libtree-sitter-LANG.so." + (dolist (file (directory-files (tree-sitter-langs--bin-dir) 'full + (concat "\\" (car tree-sitter-load-suffixes) "$"))) + ;; make symlink (or copy) libtree-sitter-c.so -> c.so + (let ((target (concat (file-name-as-directory (file-name-directory file)) + "libtree-sitter-" + (file-name-nondirectory file)))) + (if (memq system-type '(ms-dos windows-nt cygwin)) + (copy-file file target) + (make-symbolic-link file target))))) + +;;;;;;;;;;;;;;;;;;;;;; Tree sitter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(use-package tree-sitter-langs :straight t + :config + (add-to-list 'treesit-extra-load-path (tree-sitter-langs--bin-dir))) + +(use-package tree-sitter-indent :straight t) +(add-hook 'tree-sitter-after-on-hook 'tree-sitter-hl-mode) + +(provide 'icejam-tree-sitter) +;;; icejam-treesitter.el ends here diff --git a/lisp/langs/icejam-lang-gleam.el b/lisp/langs/icejam-lang-gleam.el index 41e19ac..092d9bc 100644 --- a/lisp/langs/icejam-lang-gleam.el +++ b/lisp/langs/icejam-lang-gleam.el @@ -12,12 +12,13 @@ (require 'icejam-prog-mode) -(use-package gleam-mode - :requires (tree-sitter-indent lsp column-enforce-mode) +(use-package gleam-ts-mode :straight '(:type git :host github :repo "gleam-lang/gleam-mode" - :files ("gleam-mode.el" "tree-sitter-gleam"))) + :files ("gleam-ts-mode.el"))) + +(add-to-list 'auto-mode-alist '("\\.gleam\\'" . gleam-ts-mode)) (defun icejam-lang/activate-gleam-mode () "All things Gleam." diff --git a/straight/versions/default.el b/straight/versions/default.el index 357cb12..ac705f3 100644 --- a/straight/versions/default.el +++ b/straight/versions/default.el @@ -129,7 +129,7 @@ ("terraform-mode" . "abfc10f5e313c4bb99de136a14636e9bc6df74f6") ("transient" . "6543000d5a509096f0f98eb4b814d7f6f2114ce3") ("tree-sitter-indent.el" . "4ef246db3e4ff99f672fe5e4b416c890f885c09e") - ("tree-sitter-langs" . "8d2707e84fae46a78b3943644fcd734364e05cc4") + ("tree-sitter-langs" . "0c46e6a226a4d342f03c1b63089d4273a1acf0a9") ("treemacs" . "362bfa50904a27a7a6caaafd3ab254a5c2e5abc4") ("tuareg" . "1d53723e39f22ab4ab76d31f2b188a2879305092") ("typescript.el" . "fc3a4f3b275e8cf6cf41aa0c9ef42e25ef908feb")