[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/clojure-ts-mode 3ca382c3cc: Fix semantic indentation of qu
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/clojure-ts-mode 3ca382c3cc: Fix semantic indentation of quoted functions |
Date: |
Mon, 4 Nov 2024 18:59:16 -0500 (EST) |
branch: elpa/clojure-ts-mode
commit 3ca382c3ccf2ad560d0974229ec88963e82d2fe7
Author: Ryan Schmukler <rschmukler@gmail.com>
Commit: Bozhidar Batsov <bozhidar@batsov.dev>
Fix semantic indentation of quoted functions
Fixes an error where quoted functions would not align correctly with
semantic indentation.
Adds an example test and updates the changelog
---
CHANGELOG.md | 1 +
clojure-ts-mode.el | 15 ++++++++++-----
test/clojure-ts-mode-indentation-test.el | 7 ++++++-
test/samples/indentation.clj | 2 ++
4 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 666bc9a269..c1679109b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
- [#42]: Fix imenu support for definitions with metadata.
- [#42]: Fix font locking of definitions with metadata
- [#42]: Fix indentation of definitions with metadata
+- Fix semantic indentation of quoted functions
## 0.2.2 (2024-02-16)
diff --git a/clojure-ts-mode.el b/clojure-ts-mode.el
index 09247cca8c..2c56c19fe4 100644
--- a/clojure-ts-mode.el
+++ b/clojure-ts-mode.el
@@ -528,6 +528,10 @@ with the markdown_inline grammar."
"Return non-nil if NODE is a Clojure metadata node."
(string-equal "meta_lit" (treesit-node-type node)))
+(defun clojure-ts--var-node-p (node)
+ "Return non-nil if NODE is a var (eg. #\\'foo)."
+ (string-equal "var_quoting_lit" (treesit-node-type node)))
+
(defun clojure-ts--named-node-text (node)
"Gets the name of a symbol or keyword NODE.
This does not include the NODE's namespace."
@@ -616,13 +620,13 @@ Includes a dispatch value when applicable (defmethods)."
"Return non-nil if NODE is a ns form."
(clojure-ts--definition-node-p "ns" node))
-(defvar clojure-ts--variable-type-regexp
+(defvar clojure-ts--variable-definition-type-regexp
(rx string-start (or "def" "defonce") string-end)
"Regular expression for matching definition nodes that resemble variables.")
-(defun clojure-ts--variable-node-p (node)
+(defun clojure-ts--variable-definition-node-p (node)
"Return non-nil if NODE is a def or defonce form."
- (clojure-ts--definition-node-match-p clojure-ts--variable-type-regexp node))
+ (clojure-ts--definition-node-match-p
clojure-ts--variable-definition-type-regexp node))
(defvar clojure-ts--class-type-regexp
(rx string-start (or "deftype" "defrecord" "defstruct") string-end)
@@ -647,7 +651,7 @@ Includes a dispatch value when applicable (defmethods)."
;; Used instead of treesit-defun-name-function.
clojure-ts--function-node-name)
("Macro" "list_lit" clojure-ts--defmacro-node-p)
- ("Variable" "list_lit" clojure-ts--variable-node-p)
+ ("Variable" "list_lit" clojure-ts--variable-definition-node-p)
("Interface" "list_lit" clojure-ts--interface-node-p)
("Class" "list_lit" clojure-ts--class-node-p))
"The value for `treesit-simple-imenu-settings'.
@@ -735,7 +739,8 @@
https://github.com/weavejester/cljfmt/blob/fb26b22f569724b05c93eb2502592dfc2de89
(not (treesit-node-eq (treesit-node-child parent 1 t) node))
(let ((first-child (treesit-node-child parent 0 t)))
(or (clojure-ts--symbol-node-p first-child)
- (clojure-ts--keyword-node-p first-child)))))
+ (clojure-ts--keyword-node-p first-child)
+ (clojure-ts--var-node-p first-child)))))
(defun clojure-ts--match-expression-in-body (node parent _bol)
"Match NODE if it is an expression used in a body argument.
diff --git a/test/clojure-ts-mode-indentation-test.el
b/test/clojure-ts-mode-indentation-test.el
index e4d73a6fc6..8fbc50c115 100644
--- a/test/clojure-ts-mode-indentation-test.el
+++ b/test/clojure-ts-mode-indentation-test.el
@@ -135,4 +135,9 @@ DESCRIPTION is a string with the description of the spec."
(defn c
\"hello\"
[_foo]
- (+ 1 1))"))
+ (+ 1 1))")
+
+(when-indenting-it "should support function calls via vars"
+ "
+(#'foo 5
+ 6)"))
diff --git a/test/samples/indentation.clj b/test/samples/indentation.clj
index 2996229373..f87870db51 100644
--- a/test/samples/indentation.clj
+++ b/test/samples/indentation.clj
@@ -60,6 +60,8 @@
(clojure.core/filter even?
(range 1 10))
+(#'filter even?
+ (range 10))
(filter
even?
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/clojure-ts-mode 3ca382c3cc: Fix semantic indentation of quoted functions,
ELPA Syncer <=