clojure-emacs / clojure-ts-mode

The next generation Clojure major mode for Emacs, powered by TreeSitter
GNU General Public License v3.0
128 stars 11 forks source link

Toplevel defs with metadata are not handled properly #42

Open kommen opened 4 months ago

kommen commented 4 months ago

This is valid Clojure code and is handled correctly in clojure-mode:

^{:a 1}
(def b 2)

Expected behavior

To match the behavior of clojure-mode which is: -) b can navigated to via imenu -) (def b 2) properly font locked liked other toplevel defs -) (def b 2) not indented

Actual behavior

-) b not included in imenu -) (def b 2) not font locked -) (def b 2) indented

Steps to reproduce the problem

Put this a clojure-ts-mode buffer:

^{:a 1}
(def b 2)

Environment & Version information

clojure-ts-mode version

clojure-ts-mode (version 0.2.2)

tree-sitter-clojure grammar version

v0.0.12

Emacs version

E.g. 29.3

Operating system

macOS 14.4

kommen commented 4 months ago

Toplevel defs with metadata is very common in Clerk notebooks.

e.g for controlling visibility: https://github.com/nextjournal/clerk/blob/cbb19fd8f1a9b3b01c9ccb0d43c6dbb4571f3829/notebooks/visibility.clj#L21-L22

or specifying viewers: https://github.com/nextjournal/clerk/blob/cbb19fd8f1a9b3b01c9ccb0d43c6dbb4571f3829/notebooks/viewer_api_meta.clj#L22-L23

kommen commented 4 months ago

I pushed a WIP branch trying to address this: #43