@@ -602,7 +602,12 @@ literals with regex grammar."
602
602
(sym_lit name: (sym_name) @font-lock-function-name-face))))
603
603
((list_lit
604
604
((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)))
606
611
(list_lit
607
612
(sym_lit name: (sym_name) @font-lock-function-name-face))))
608
613
; ; letfn
@@ -2186,6 +2191,12 @@ type, etc. See `treesit-thing-settings' for more details."
2186
2191
(and (clojure-ts--list-node-p node)
2187
2192
(string= (clojure-ts--list-node-sym-text parent) " reify" ))))
2188
2193
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
+
2189
2200
(defun clojure-ts-add-arity ()
2190
2201
" Add an arity to a function or macro."
2191
2202
(interactive )
@@ -2196,6 +2207,7 @@ type, etc. See `treesit-thing-settings' for more details."
2196
2207
" defmacro"
2197
2208
" defmethod"
2198
2209
" defprotocol"
2210
+ " extend-protocol"
2199
2211
" reify"
2200
2212
" proxy" )
2201
2213
eol))
@@ -2210,13 +2222,16 @@ type, etc. See `treesit-thing-settings' for more details."
2210
2222
(clojure-ts--parent-until #'clojure-ts--defprotocol-defn-p ))
2211
2223
((string= parent-def-sym " reify" )
2212
2224
(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 ))
2213
2227
(t parent-def-node))))
2214
2228
(let ((beg-marker (copy-marker (treesit-node-start parent-def-node)))
2215
2229
(end-marker (copy-marker (treesit-node-end parent-def-node))))
2216
2230
(cond
2217
2231
((string= parent-def-sym " defprotocol" )
2218
2232
(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" ))
2220
2235
(clojure-ts--add-arity-reify-internal fn-node))
2221
2236
(t (clojure-ts--add-arity-internal fn-node)))
2222
2237
(indent-region beg-marker end-marker))
0 commit comments