From b6899bfbd4173c7f4ec5f4eff00173713e9ed756 Mon Sep 17 00:00:00 2001 From: Vedang Manerikar <ved.manerikar@gmail.com> Date: Mon, 16 Dec 2024 07:09:38 +0530 Subject: [PATCH] Add clojure-ts-mode for using tree-sitter Disable it by default until I can figure out the issue with paredit and fix it. --- unravel-emacs.org | 32 +++++++++++++++++++-------- unravel-modules/unravel-essentials.el | 13 ++++++----- unravel-modules/unravel-langs.el | 19 +++++++++++++--- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/unravel-emacs.org b/unravel-emacs.org index e9c5c31..5db6af1 100644 --- a/unravel-emacs.org +++ b/unravel-emacs.org @@ -1450,12 +1450,13 @@ process. #+begin_src emacs-lisp :tangle "unravel-modules/unravel-essentials.el" ;;; Install and use tree-sitter major modes where possible - (use-package treesit-auto - :ensure t - :config - (setq treesit-auto-install 'prompt) - (treesit-auto-add-to-auto-mode-alist 'all) - (global-treesit-auto-mode)) + (when (treesit-available-p) + (use-package treesit-auto + :ensure t + :config + (setq treesit-auto-install 'prompt) + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode))) #+end_src ** The =unravel-essentials.el= section about ~expreg~ (tree-sitter mark syntactically) @@ -5268,9 +5269,21 @@ Clojure is my favorite programming language, and it has been my bread and butter (use-package clojure-mode :ensure t) + ;;; `clojure-ts-mode' is not stable enough right now. In particular, + ;;; it clashes with `paredit-mode' sometimes, leading to Paredit + ;;; throwing unbalanced-expression errorsand being unusable. So + ;;; keeping this disabled and experimenting with how to fix it, for + ;;; them moment. + + (defvar enable-clojure-ts-mode nil) + + (when (and (treesit-available-p) enable-clojure-ts-mode) + (use-package clojure-ts-mode + :ensure t)) + (use-package cider :ensure t - :after clojure-mode + :after (:any clojure-mode clojure-ts-mode) :config (defun cider-repl-prompt-on-newline (ns) "Return a prompt string with newline. @@ -5280,9 +5293,10 @@ Clojure is my favorite programming language, and it has been my bread and butter (use-package clj-refactor :ensure t - :after clojure-mode + :after (:any clojure-mode clojure-ts-mode) :hook - ((clojure-mode . clj-refactor-mode)) + ((clojure-mode . clj-refactor-mode) + (clojure-ts-mode . clj-refactor-mode)) :config (cljr-add-keybindings-with-prefix "C-c m") ;; Don't magically add stuff to the namespace requires form (because diff --git a/unravel-modules/unravel-essentials.el b/unravel-modules/unravel-essentials.el index 2b8ca5d..67ee0bd 100644 --- a/unravel-modules/unravel-essentials.el +++ b/unravel-modules/unravel-essentials.el @@ -104,12 +104,13 @@ ("M-w" . easy-kill)) ; re-map kill-ring-save ;;; Install and use tree-sitter major modes where possible -(use-package treesit-auto - :ensure t - :config - (setq treesit-auto-install 'prompt) - (treesit-auto-add-to-auto-mode-alist 'all) - (global-treesit-auto-mode)) +(when (treesit-available-p) + (use-package treesit-auto + :ensure t + :config + (setq treesit-auto-install 'prompt) + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode))) ;;; Mark syntactic constructs efficiently if tree-sitter is available (expreg) (when (and (fboundp 'treesit-available-p) diff --git a/unravel-modules/unravel-langs.el b/unravel-modules/unravel-langs.el index 5eb78bc..bbb4c30 100644 --- a/unravel-modules/unravel-langs.el +++ b/unravel-modules/unravel-langs.el @@ -190,9 +190,21 @@ (use-package clojure-mode :ensure t) +;;; `clojure-ts-mode' is not stable enough right now. In particular, +;;; it clashes with `paredit-mode' sometimes, leading to Paredit +;;; throwing unbalanced-expression errorsand being unusable. So +;;; keeping this disabled and experimenting with how to fix it, for +;;; them moment. + +(defvar enable-clojure-ts-mode nil) + +(when (and (treesit-available-p) enable-clojure-ts-mode) + (use-package clojure-ts-mode + :ensure t)) + (use-package cider :ensure t - :after clojure-mode + :after (:any clojure-mode clojure-ts-mode) :config (defun cider-repl-prompt-on-newline (ns) "Return a prompt string with newline. @@ -202,9 +214,10 @@ NS is the namespace information passed into the function by cider." (use-package clj-refactor :ensure t - :after clojure-mode + :after (:any clojure-mode clojure-ts-mode) :hook - ((clojure-mode . clj-refactor-mode)) + ((clojure-mode . clj-refactor-mode) + (clojure-ts-mode . clj-refactor-mode)) :config (cljr-add-keybindings-with-prefix "C-c m") ;; Don't magically add stuff to the namespace requires form (because