emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/inf-clojure 397272d 300/313: Auto-enable inf-clojure-minor


From: ELPA Syncer
Subject: [nongnu] elpa/inf-clojure 397272d 300/313: Auto-enable inf-clojure-minor-mode on starting inf-clojure
Date: Wed, 11 Aug 2021 10:00:37 -0400 (EDT)

branch: elpa/inf-clojure
commit 397272de241b64ad794a0f64c185bc77a1a23ecf
Author: Bozhidar Batsov <bozhidar@batsov.com>
Commit: Bozhidar Batsov <bozhidar@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."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]