|
8 | 8 | ;; Benedek Fazekas <[email protected]>
|
9 | 9 | ;; Version: 2.4.0-SNAPSHOT
|
10 | 10 | ;; Keywords: convenience, clojure, cider
|
11 |
| -;; Package-Requires: ((emacs "24.4") (s "1.8.0") (seq "2.19") (yasnippet "0.6.1") (paredit "24") (multiple-cursors "1.2.2") (clojure-mode "5.6.1") (cider "0.15.0") (edn "1.1.2") (inflections "2.3") (hydra "0.13.2")) |
| 11 | +;; Package-Requires: ((emacs "24.4") (s "1.8.0") (seq "2.19") (yasnippet "0.6.1") (paredit "24") (multiple-cursors "1.2.2") (clojure-mode "5.6.1") (cider "0.17.0") (edn "1.1.2") (inflections "2.3") (hydra "0.13.2")) |
12 | 12 |
|
13 | 13 | ;; This program is free software; you can redistribute it and/or
|
14 | 14 | ;; modify it under the terms of the GNU General Public License
|
@@ -155,6 +155,13 @@ as can be."
|
155 | 155 | :group 'cljr
|
156 | 156 | :type 'boolean)
|
157 | 157 |
|
| 158 | +(defcustom cljr-suppress-no-project-warning nil |
| 159 | + "If t, no warning is printed when starting a REPL outside a project. |
| 160 | +By default, a warning is printed in this case since clj-refactor |
| 161 | +will not work as expected in such REPLs." |
| 162 | + :group 'cljr |
| 163 | + :type 'boolean) |
| 164 | + |
158 | 165 | (defcustom cljr-find-usages-ignore-analyzer-errors nil
|
159 | 166 | "DEPRECATED: use `cljr-ignore-analyzer-errors' instead.
|
160 | 167 | If t, `cljr-find-usages' ignores namespaces that cannot be analyzed.
|
@@ -786,6 +793,10 @@ A new record is created to define this constructor."
|
786 | 793 | car)
|
787 | 794 | ""))
|
788 | 795 |
|
| 796 | +(defun cljr--inside-project-p () |
| 797 | + "Return non-nil if `default-directory' is inside a Clojure project." |
| 798 | + (not (string-empty-p (cljr--project-dir)))) |
| 799 | + |
789 | 800 | (defun cljr--project-file ()
|
790 | 801 | (let ((project-dir (cljr--project-dir)))
|
791 | 802 | (or (let ((file (expand-file-name "project.clj" project-dir)))
|
@@ -3142,15 +3153,21 @@ if REMOVE-PACKAGE_VERSION is t get rid of the (package: 20150828.1048) suffix."
|
3142 | 3153 |
|
3143 | 3154 | (defun cljr--check-middleware-version ()
|
3144 | 3155 | "Check whether clj-refactor and nrepl-refactor versions are the same"
|
3145 |
| - (let ((refactor-nrepl-version (or (cljr--middleware-version) |
3146 |
| - "n/a"))) |
3147 |
| - (unless (string-equal (downcase refactor-nrepl-version) |
3148 |
| - (downcase (cljr--version :remove-package-version))) |
3149 |
| - (cider-repl-emit-interactive-stderr |
3150 |
| - (format "WARNING: clj-refactor and refactor-nrepl are out of sync. |
| 3156 | + (if (cljr--inside-project-p) |
| 3157 | + (let ((refactor-nrepl-version (or (cljr--middleware-version) |
| 3158 | + "n/a"))) |
| 3159 | + (unless (string-equal (downcase refactor-nrepl-version) |
| 3160 | + (downcase (cljr--version :remove-package-version))) |
| 3161 | + (cider-repl-emit-interactive-stderr |
| 3162 | + (format "WARNING: clj-refactor and refactor-nrepl are out of sync. |
3151 | 3163 | Their versions are %s and %s, respectively.
|
3152 | 3164 | You can mute this warning by changing cljr-suppress-middleware-warnings."
|
3153 |
| - (cljr--version) refactor-nrepl-version))))) |
| 3165 | + (cljr--version) refactor-nrepl-version)))) |
| 3166 | + (unless cljr-suppress-no-project-warning |
| 3167 | + (cider-repl-emit-interactive-stderr |
| 3168 | + "WARNING: No Clojure project was detected. The |
| 3169 | +refactor-nrepl middleware was not enabled. (You can mute this |
| 3170 | +warning by customizing `cljr-suppress-no-project-warning'.)")))) |
3154 | 3171 |
|
3155 | 3172 | ;;;###autoload
|
3156 | 3173 | (defun cljr-version ()
|
@@ -3178,16 +3195,10 @@ You can mute this warning by changing cljr-suppress-middleware-warnings."
|
3178 | 3195 | (cider-repl-emit-interactive-stderr
|
3179 | 3196 | (format "WARNING: Can't determine Clojure version. The refactor-nrepl middleware requires clojure %s (or newer)" cljr-minimum-clojure-version))))
|
3180 | 3197 |
|
3181 |
| -(defun cljr--check-project-context () |
3182 |
| - (unless (cljr--project-dir) |
3183 |
| - (cider-repl-emit-interactive-stderr |
3184 |
| - (format "WARNING: No clojure project detected. The refactor-nrepl middleware won't work and has been disabled!")))) |
3185 |
| - |
3186 | 3198 | (defun cljr--init-middleware ()
|
3187 | 3199 | (unless cljr-suppress-middleware-warnings
|
3188 | 3200 | (cljr--check-clojure-version)
|
3189 | 3201 | (cljr--check-middleware-version))
|
3190 |
| - (cljr--check-project-context) |
3191 | 3202 | ;; Best effort; don't freak people out with errors
|
3192 | 3203 | (ignore-errors
|
3193 | 3204 | (when (cljr--middleware-version) ; check if middleware is running
|
@@ -4002,15 +4013,22 @@ See: https://github.com/clojure-emacs/clj-refactor.el/wiki/cljr-change-function-
|
4002 | 4013 | (kill-buffer cljr--manual-intervention-buffer))
|
4003 | 4014 | (pop-to-buffer cljr--change-signature-buffer))))
|
4004 | 4015 |
|
| 4016 | +;;;###autoload |
| 4017 | +(defun cljr--inject-middleware-p (&rest _) |
| 4018 | + "Return non-nil if nREPL middleware should be injected." |
| 4019 | + (cljr--inside-project-p)) |
| 4020 | + |
4005 | 4021 | ;;;###autoload
|
4006 | 4022 | (defun cljr--inject-jack-in-dependencies ()
|
4007 | 4023 | "Inject the REPL dependencies of clj-refactor at `cider-jack-in'.
|
4008 | 4024 | If injecting the dependencies is not preferred set `cljr-inject-dependencies-at-jack-in' to nil."
|
4009 | 4025 | (when (and cljr-inject-dependencies-at-jack-in
|
4010 | 4026 | (boundp 'cider-jack-in-lein-plugins)
|
4011 | 4027 | (boundp 'cider-jack-in-nrepl-middlewares))
|
4012 |
| - (add-to-list 'cider-jack-in-lein-plugins `("refactor-nrepl" ,(cljr--version t))) |
4013 |
| - (add-to-list 'cider-jack-in-nrepl-middlewares "refactor-nrepl.middleware/wrap-refactor"))) |
| 4028 | + (add-to-list 'cider-jack-in-lein-plugins `("refactor-nrepl" ,(cljr--version t) |
| 4029 | + :predicate cljr--inject-middleware-p)) |
| 4030 | + (add-to-list 'cider-jack-in-nrepl-middlewares '("refactor-nrepl.middleware/wrap-refactor" |
| 4031 | + :predicate cljr--inject-middleware-p)))) |
4014 | 4032 |
|
4015 | 4033 | ;;;###autoload
|
4016 | 4034 | (eval-after-load 'cider
|
|
0 commit comments