From 7d91b92c0120926e35a9a7cff4e673f01df5cdd7 Mon Sep 17 00:00:00 2001 From: Andre Peric Tavares Date: Mon, 20 Nov 2023 15:36:12 -0300 Subject: [PATCH 1/2] Add clojure-ts-mode support Add support to `clojure-ts-mode`, a Clojure major mode that uses tree-sitter. For more details on `clojure-ts-mode`, consult its repository [0]. [0]: https://github.com/clojure-emacs/clojure-ts-mode. --- CHANGELOG.md | 4 ++-- README.md | 4 ++++ inf-clojure.el | 16 +++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7e8a9b..ff4b8ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,8 @@ * [#202](https://github.com/clojure-emacs/inf-clojure/issues/202): Add ClojureCLR support. * [#204](https://github.com/clojure-emacs/inf-clojure/issues/204): Scroll repl buffer on insert commands * [#208](https://github.com/clojure-emacs/inf-clojure/pull/208) Display message after setting repl. -* [#210](https://github.com/clojure-emacs/inf-clojure/pull/210) Include `inf-clojure-socket-repl` to create a socket REPL and connect to it from inside Emacs. - +* [#210](https://github.com/clojure-emacs/inf-clojure/pull/210) Include `inf-clojure-socket-repl` to create a socket REPL and connect to it from inside Emacs. +* [#215](https://github.com/clojure-emacs/inf-clojure/pull/215) Add support to `clojure-ts-mode`, a Clojure major mode that uses tree-sitter. For more details on `clojure-ts-mode`, consult its [repository](https://github.com/clojure-emacs/clojure-ts-mode). ## 3.2.1 (2022-07-22) diff --git a/README.md b/README.md index 7a022aa..183936c 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,10 @@ If the installation doesn't work try refreshing the package list: `M-x inf-clojure`. You can disable this behavior by setting `inf-clojure-auto-mode` to `nil`. +**Note:** `inf-clojure` supports `clojure-ts-mode`, the Clojure major mode that uses +tree-sitter. In order to use it, replace `clojure-mode` by `clojure-ts-mode` in all +instructions below. + You can also add the following to your Emacs config to enable `inf-clojure-minor-mode` for Clojure source buffers, regardless of whether there's an `inf-clojure` REPL running: diff --git a/inf-clojure.el b/inf-clojure.el index 9efe1de..31f5bae 100644 --- a/inf-clojure.el +++ b/inf-clojure.el @@ -64,7 +64,8 @@ ;;; Code: (require 'comint) -(require 'clojure-mode) +(require 'clojure-mode nil 'no-error) +(require 'clojure-ts-mode nil 'no-error) (require 'eldoc) (require 'thingatpt) (require 'ansi-color) @@ -616,17 +617,26 @@ All buffers in `clojure-mode' will automatically be in :safe #'booleanp :package-version '(inf-clojure . "3.1.0")) +(defun inf-clojure--clojure-buffer-p () + "Return t if the current buffer is derived from `clojure-mode' or +`clojure-ts-mode'." + (or (derived-mode-p 'clojure-mode) + (derived-mode-p 'clojure-ts-mode))) + (defun inf-clojure--clojure-buffers () "Return a list of all existing `clojure-mode' buffers." (cl-remove-if-not - (lambda (buffer) (with-current-buffer buffer (derived-mode-p 'clojure-mode))) + (lambda (buffer) (with-current-buffer buffer (inf-clojure--clojure-buffer-p))) (buffer-list))) (defun inf-clojure-enable-on-existing-clojure-buffers () "Enable inf-clojure's minor mode on existing Clojure buffers. See command `inf-clojure-minor-mode'." (interactive) - (add-hook 'clojure-mode-hook #'inf-clojure-minor-mode) + (when (featurep 'clojure-mode) + (add-hook 'clojure-mode-hook #'inf-clojure-minor-mode)) + (when (featurep 'clojure-ts-mode) + (add-hook 'clojure-ts-mode-hook #'inf-clojure-minor-mode)) (dolist (buffer (inf-clojure--clojure-buffers)) (with-current-buffer buffer (inf-clojure-minor-mode +1)))) From c5bae5a29e32e7fc8267d8703d9aa4f33608b1d0 Mon Sep 17 00:00:00 2001 From: Andre Peric Tavares Date: Sat, 2 Dec 2023 13:35:48 -0300 Subject: [PATCH 2/2] Throw error if clojure-mode is not found --- inf-clojure.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inf-clojure.el b/inf-clojure.el index 31f5bae..aa6dff2 100644 --- a/inf-clojure.el +++ b/inf-clojure.el @@ -64,7 +64,7 @@ ;;; Code: (require 'comint) -(require 'clojure-mode nil 'no-error) +(require 'clojure-mode) (require 'clojure-ts-mode nil 'no-error) (require 'eldoc) (require 'thingatpt)