branch: elpa/inf-clojure commit 397272de241b64ad794a0f64c185bc77a1a23ecf Author: Bozhidar Batsov <bozhi...@batsov.com> Commit: Bozhidar Batsov <bozhi...@batsov.com>
Auto-enable inf-clojure-minor-mode on starting inf-clojure That's inspired from the way CIDER starts cider-mode. --- CHANGELOG.md | 1 + README.md | 8 ++++++-- inf-clojure.el | 32 +++++++++++++++++++++++++++++++- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56dc45a..1468d2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### New features * [#190](https://github.com/clojure-emacs/inf-clojure/pull/190): Helper function `inf-clojure-set-repl` to select inf-clojure process buffer. +* Auto-enable `inf-clojure-minor-mode` after invoking `inf-clojure`. This behaviour is controlled via `inf-clojure-auto-mode`. ### Bugs fixed diff --git a/README.md b/README.md index 75aa0ec..8f54179 100644 --- a/README.md +++ b/README.md @@ -95,8 +95,12 @@ If the installation doesn't work try refreshing the package list: <kbd>M-x package-refresh-contents</kbd> -Add the following to your Emacs config to enable -`inf-clojure-minor-mode` for Clojure source buffers: +`inf-clojure-minor-mode` will be auto-enabled for Clojure source buffers after you do +`M-x inf-clojure`. You can disable this behavior by setting `inf-clojure-auto-mode` to +`nil`. + +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: ```emacs-lisp (add-hook 'clojure-mode-hook #'inf-clojure-minor-mode) diff --git a/inf-clojure.el b/inf-clojure.el index 5f139c7..84b9d38 100644 --- a/inf-clojure.el +++ b/inf-clojure.el @@ -516,6 +516,34 @@ This should usually be a combination of `inf-clojure-prompt' and :safe #'booleanp :package-version '(inf-clojure . "2.0.0")) +(defcustom inf-clojure-auto-mode t + "When non-nil, automatically enable inf-clojure-minor-mode for all Clojure buffers." + :type 'boolean + :safe #'booleanp + :package-version '(inf-clojure . "3.1.0")) + +(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))) + (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) + (dolist (buffer (inf-clojure--clojure-buffers)) + (with-current-buffer buffer + (inf-clojure-minor-mode +1)))) + +(defun inf-clojure-disable-on-existing-clojure-buffers () + "Disable command `inf-clojure-minor-mode' on existing Clojure buffers." + (interactive) + (dolist (buffer (inf-clojure--clojure-buffers)) + (with-current-buffer buffer + (inf-clojure-minor-mode -1)))) + (defvar inf-clojure-buffer nil "The current `inf-clojure' process buffer. @@ -609,7 +637,9 @@ to continue it." (setq-local comint-prompt-read-only inf-clojure-prompt-read-only) (add-hook 'comint-preoutput-filter-functions #'inf-clojure-preoutput-filter nil t) (add-hook 'completion-at-point-functions #'inf-clojure-completion-at-point nil t) - (ansi-color-for-comint-mode-on)) + (ansi-color-for-comint-mode-on) + (when inf-clojure-auto-mode + (inf-clojure-enable-on-existing-clojure-buffers))) (defun inf-clojure-get-old-input () "Return a string containing the sexp ending at point."