Skip to content

Commit 397272d

Browse files
committed
Auto-enable inf-clojure-minor-mode on starting inf-clojure
That's inspired from the way CIDER starts cider-mode.
1 parent d79e4eb commit 397272d

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### New features
66

77
* [#190](https://github.com/clojure-emacs/inf-clojure/pull/190): Helper function `inf-clojure-set-repl` to select inf-clojure process buffer.
8+
* Auto-enable `inf-clojure-minor-mode` after invoking `inf-clojure`. This behaviour is controlled via `inf-clojure-auto-mode`.
89

910
### Bugs fixed
1011

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,12 @@ If the installation doesn't work try refreshing the package list:
9595

9696
<kbd>M-x package-refresh-contents</kbd>
9797

98-
Add the following to your Emacs config to enable
99-
`inf-clojure-minor-mode` for Clojure source buffers:
98+
`inf-clojure-minor-mode` will be auto-enabled for Clojure source buffers after you do
99+
`M-x inf-clojure`. You can disable this behavior by setting `inf-clojure-auto-mode` to
100+
`nil`.
101+
102+
You can also add the following to your Emacs config to enable
103+
`inf-clojure-minor-mode` for Clojure source buffers, regardless of whether there's an `inf-clojure` REPL running:
100104

101105
```emacs-lisp
102106
(add-hook 'clojure-mode-hook #'inf-clojure-minor-mode)

inf-clojure.el

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,34 @@ This should usually be a combination of `inf-clojure-prompt' and
516516
:safe #'booleanp
517517
:package-version '(inf-clojure . "2.0.0"))
518518

519+
(defcustom inf-clojure-auto-mode t
520+
"When non-nil, automatically enable inf-clojure-minor-mode for all Clojure buffers."
521+
:type 'boolean
522+
:safe #'booleanp
523+
:package-version '(inf-clojure . "3.1.0"))
524+
525+
(defun inf-clojure--clojure-buffers ()
526+
"Return a list of all existing `clojure-mode' buffers."
527+
(cl-remove-if-not
528+
(lambda (buffer) (with-current-buffer buffer (derived-mode-p 'clojure-mode)))
529+
(buffer-list)))
530+
531+
(defun inf-clojure-enable-on-existing-clojure-buffers ()
532+
"Enable inf-clojure's minor mode on existing Clojure buffers.
533+
See command `inf-clojure-minor-mode'."
534+
(interactive)
535+
(add-hook 'clojure-mode-hook #'inf-clojure-minor-mode)
536+
(dolist (buffer (inf-clojure--clojure-buffers))
537+
(with-current-buffer buffer
538+
(inf-clojure-minor-mode +1))))
539+
540+
(defun inf-clojure-disable-on-existing-clojure-buffers ()
541+
"Disable command `inf-clojure-minor-mode' on existing Clojure buffers."
542+
(interactive)
543+
(dolist (buffer (inf-clojure--clojure-buffers))
544+
(with-current-buffer buffer
545+
(inf-clojure-minor-mode -1))))
546+
519547
(defvar inf-clojure-buffer nil
520548
"The current `inf-clojure' process buffer.
521549
@@ -609,7 +637,9 @@ to continue it."
609637
(setq-local comint-prompt-read-only inf-clojure-prompt-read-only)
610638
(add-hook 'comint-preoutput-filter-functions #'inf-clojure-preoutput-filter nil t)
611639
(add-hook 'completion-at-point-functions #'inf-clojure-completion-at-point nil t)
612-
(ansi-color-for-comint-mode-on))
640+
(ansi-color-for-comint-mode-on)
641+
(when inf-clojure-auto-mode
642+
(inf-clojure-enable-on-existing-clojure-buffers)))
613643

614644
(defun inf-clojure-get-old-input ()
615645
"Return a string containing the sexp ending at point."

0 commit comments

Comments
 (0)