@@ -602,7 +602,12 @@ literals with regex grammar."
602602 (sym_lit name: (sym_name) @font-lock-function-name-face))))
603603 ((list_lit
604604 ((sym_lit name: (sym_name) @def)
605- ((:equal "reify" @def)))
605+ ((:match ,(rx-to-string
606+ `(seq bol
607+ (or "reify"
608+ "extend-protocol")
609+ eol))
610+ @def)))
606611 (list_lit
607612 (sym_lit name: (sym_name) @font-lock-function-name-face))))
608613 ;; letfn
@@ -2186,6 +2191,12 @@ type, etc. See `treesit-thing-settings' for more details."
21862191 (and (clojure-ts--list-node-p node)
21872192 (string= (clojure-ts--list-node-sym-text parent) "reify"))))
21882193
2194+ (defun clojure-ts--extend-protocol-defn-p (node)
2195+ "Return non-nil if NODE is a function definition in an extend-protocol form."
2196+ (when-let* ((parent (treesit-node-parent node)))
2197+ (and (clojure-ts--list-node-p node)
2198+ (string= (clojure-ts--list-node-sym-text parent) "extend-protocol"))))
2199+
21892200(defun clojure-ts-add-arity ()
21902201 "Add an arity to a function or macro."
21912202 (interactive)
@@ -2196,6 +2207,7 @@ type, etc. See `treesit-thing-settings' for more details."
21962207 "defmacro"
21972208 "defmethod"
21982209 "defprotocol"
2210+ "extend-protocol"
21992211 "reify"
22002212 "proxy")
22012213 eol))
@@ -2210,13 +2222,16 @@ type, etc. See `treesit-thing-settings' for more details."
22102222 (clojure-ts--parent-until #'clojure-ts--defprotocol-defn-p))
22112223 ((string= parent-def-sym "reify")
22122224 (clojure-ts--parent-until #'clojure-ts--reify-defn-p))
2225+ ((string= parent-def-sym "extend-protocol")
2226+ (clojure-ts--parent-until #'clojure-ts--extend-protocol-defn-p))
22132227 (t parent-def-node))))
22142228 (let ((beg-marker (copy-marker (treesit-node-start parent-def-node)))
22152229 (end-marker (copy-marker (treesit-node-end parent-def-node))))
22162230 (cond
22172231 ((string= parent-def-sym "defprotocol")
22182232 (clojure-ts--add-arity-defprotocol-internal fn-node))
2219- ((string= parent-def-sym "reify")
2233+ ((or (string= parent-def-sym "reify")
2234+ (string= parent-def-sym "extend-protocol"))
22202235 (clojure-ts--add-arity-reify-internal fn-node))
22212236 (t (clojure-ts--add-arity-internal fn-node)))
22222237 (indent-region beg-marker end-marker))
0 commit comments