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") pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy