diff --git a/clojure-mode.el b/clojure-mode.el index 112479fb..70c98167 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -2662,13 +2662,12 @@ lists up." (clojure--find-ns-in-direction 'backward) (let ((rgx (concat ":as +" current-alias)) (bound (save-excursion (forward-list 1) (point)))) - (when (save-excursion (search-forward-regexp rgx bound t)) - (save-excursion - (while (re-search-forward rgx bound t) - (replace-match (concat ":as " new-alias)))) + (when (search-forward-regexp rgx bound t) + (replace-match (concat ":as " new-alias)) (save-excursion (while (re-search-forward (concat current-alias "/") nil t) - (replace-match (concat new-alias "/")))) + (when (not (nth 3 (syntax-ppss))) + (replace-match (concat new-alias "/"))))) (save-excursion (while (re-search-forward (concat "#::" current-alias "{") nil t) (replace-match (concat "#::" new-alias "{")))) diff --git a/test/clojure-mode-refactor-rename-ns-alias-test.el b/test/clojure-mode-refactor-rename-ns-alias-test.el index a2875b45..eeb96d5b 100644 --- a/test/clojure-mode-refactor-rename-ns-alias-test.el +++ b/test/clojure-mode-refactor-rename-ns-alias-test.el @@ -55,8 +55,44 @@ (+ (lib/a 1) (b 2))" - (clojure--rename-ns-alias-internal "foo" "bar"))) + (clojure--rename-ns-alias-internal "foo" "bar")) -(provide 'clojure-mode-refactor-rename-ns-alias-test) + (when-refactoring-it "should skip strings" + "(ns cljr.core + (:require [my.lib :as lib])) + + (def dirname \"/usr/local/lib/python3.6/site-packages\") + + (+ (lib/a 1) (b 2))" + + "(ns cljr.core + (:require [my.lib :as foo])) + + (def dirname \"/usr/local/lib/python3.6/site-packages\") + + (+ (foo/a 1) (b 2))" + + (clojure--rename-ns-alias-internal "lib" "foo")) + + (when-refactoring-it "should not skip comments" + "(ns cljr.core + (:require [my.lib :as lib])) + + (def dirname \"/usr/local/lib/python3.6/site-packages\") + + ;; TODO refactor using lib/foo + (+ (lib/a 1) (b 2))" + + "(ns cljr.core + (:require [my.lib :as new-lib])) + + (def dirname \"/usr/local/lib/python3.6/site-packages\") + + ;; TODO refactor using new-lib/foo + (+ (new-lib/a 1) (b 2))" + + (clojure--rename-ns-alias-internal "lib" "new-lib"))) + + (provide 'clojure-mode-refactor-rename-ns-alias-test) ;;; clojure-mode-refactor-rename-ns-alias-test.el ends here