diff --git a/CHANGELOG.md b/CHANGELOG.md index ebcf9bdc..2d559620 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ * [#622](https://github.com/clojure-emacs/clojure-mode/issues/622): Add font locking for missing clojure.core macros * [#615](https://github.com/clojure-emacs/clojure-mode/issues/615): Support clojure-dart files. +### Bugs fixed + +* [#595](https://github.com/clojure-emacs/clojure-mode/issues/595), [#612](https://github.com/clojure-emacs/clojure-mode/issues/612): Fix buffer freezing when typing metadata for a definition + ## 5.14.0 (2022-03-07) ### New features diff --git a/test.clj b/test.clj index 147171a1..a1d67dfa 100644 --- a/test.clj +++ b/test.clj @@ -223,6 +223,10 @@ ([x y & more] (reduce1 max (max x y) more))) + +;; definitions with metadata only don't cause freezing +(def ^String) + (defn ^String reverse "Returns s with its characters reversed." {:added "1.2"} diff --git a/test/clojure-mode-syntax-test.el b/test/clojure-mode-syntax-test.el index bc71eaab..8ac8938f 100644 --- a/test/clojure-mode-syntax-test.el +++ b/test/clojure-mode-syntax-test.el @@ -60,6 +60,37 @@ (expect (non-func "^hint " form) :to-be nil) (expect (non-func "#macro " form) :to-be nil)))) +(describe "clojure-match-next-def" + (let ((some-sexp "\n(list [1 2 3])")) + (it "handles vars with metadata" + (dolist (form '("(def ^Integer a 1)" + "(def ^:a a 1)" + "(def ^::a a 1)" + "(def ^::a/b a 1)" + "(def ^{:macro true} a 1)")) + (with-clojure-buffer (concat form some-sexp) + (end-of-buffer) + (clojure-match-next-def) + (expect (looking-at "(def"))))) + + (it "handles vars without metadata" + (with-clojure-buffer (concat "(def a 1)" some-sexp) + (end-of-buffer) + (clojure-match-next-def) + (expect (looking-at "(def")))) + + (it "handles invalid def forms" + (dolist (form '("(def ^Integer)" + "(def)" + "(def ^{:macro})" + "(def ^{:macro true})" + "(def ^{:macro true} foo)" + "(def ^{:macro} foo)")) + (with-clojure-buffer (concat form some-sexp) + (end-of-buffer) + (clojure-match-next-def) + (expect (looking-at "(def"))))))) + (describe "clojure syntax" (it "handles prefixed symbols" (dolist (form '(("#?@aaa" . "aaa")
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: