Skip to content

Commit c3f92ac

Browse files
authored
Highlight ns forms and their docstrings (#29)
1 parent ce2bdfb commit c3f92ac

File tree

7 files changed

+19
-12
lines changed

7 files changed

+19
-12
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"emoji-regex": "^10.0.0",
1616
"framer-motion": "^6.2.8",
1717
"katex": "^0.12.0",
18-
"lezer-clojure": "1.0.0-rc.1",
18+
"lezer-clojure": "1.0.0-rc.2",
1919
"markdown-it": "12.3.2",
2020
"markdown-it-block-image": "0.0.3",
2121
"markdown-it-sidenote": "gerwitz/markdown-it-sidenote#0b4ffb98ae6d013072f79a832785225c05dd1f29",

src/deps.cljs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
"@lezer/generator" "^1.0.0"
1111
"@lezer/highlight" "^1.0.0"
1212
"@lezer/lr" "^1.0.0"
13-
"lezer-clojure" "1.0.0-rc.1"
13+
"lezer-clojure" "1.0.0-rc.2"
1414
"w3c-keyname" "^2.2.4"}}

src/nextjournal/clojure_mode.cljs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
:Map coll-span
2121
:List coll-span})))
2222

23-
2423
(def style-tags
25-
(clj->js {:DefLike (.-keyword tags)
24+
(clj->js {:NS (.-keyword tags)
25+
:DefLike (.-keyword tags)
2626
"Operator/Symbol" (.-keyword tags)
2727
"VarName/Symbol" (.definition tags (.-variableName tags))
2828
:Boolean (.-atom tags)

src/nextjournal/clojure_mode/clojure.grammar

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Discard { "#_" expression }
1414

1515
listContents {
1616
defList { defLikeWithMeta varNameWithMeta (DocString expression+ | expression+)? } |
17+
nsList { nsWithMeta varNameWithMeta (DocString expression* | expression*) } |
1718
anyList { operatorWithMeta? expression* }
1819
}
1920

@@ -55,6 +56,7 @@ Unquote[prefixColl] { "~" expression }
5556
UnquoteSplice[prefixColl] { "~@" expression }
5657
operatorWithMeta { Operator | Meta<operatorWithMeta> }
5758
defLikeWithMeta { DefLike | Meta<defLikeWithMeta> }
59+
nsWithMeta { NS | Meta<nsWithMeta> }
5860
varNameWithMeta { VarName | Meta<varNameWithMeta> }
5961

6062
Operator { !operator Symbol }
@@ -135,5 +137,6 @@ Operator { !operator Symbol }
135137
Boolean { @specialize<Symbol, "true" | "false"> }
136138
Nil { @specialize<Symbol, "nil"> }
137139
DefLike[@dynamicPrecedence=1] { @extend<Symbol, "def" | "defn" | "defn-" | "defmacro" | "definline" | "defonce" | "deftest" | "defcard"> }
140+
NS[@dynamicPrecedence=2] { @extend<Symbol, "ns"> }
138141

139142
@detectDelim

src/nextjournal/clojure_mode/extensions/formatting.cljs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@
3030
;; if it's a list beginning with a symbol, add 1 space.
3131
(and (= "List" type-name)
3232
(#{"Operator"
33-
"DefLike"} (some-> node
34-
n/down
35-
n/right
36-
n/name)))
33+
"DefLike"
34+
"NS"} (some-> node n/down n/right n/name)))
3735
(+ 1))
3836
:else -1)))
3937

src/nextjournal/clojure_mode/live_grammar.cljs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,9 @@
88
(lg/buildParser
99
(rc/inline "./clojure.grammar")
1010
#js{:externalProp n/node-prop}))
11+
12+
(comment
13+
(.parse parser "(def foo)")
14+
(.parse parser "(ns foo)")
15+
(.parse parser "(foo bar)")
16+
)

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -469,10 +469,10 @@ katex@^0.12.0:
469469
dependencies:
470470
commander "^2.19.0"
471471

472-
473-
version "1.0.0-rc.1"
474-
resolved "https://registry.yarnpkg.com/lezer-clojure/-/lezer-clojure-1.0.0-rc.1.tgz#eef6f12bad228a10d668b3769be24a3b39b1f336"
475-
integrity sha512-PhhygzeN7V134kHh9r14w+ZnZ+dfyE8HHiiMVc5y+V6d5/E8w62xKveE/C0zv1H3dbHOQoo3/rU+ytcNgEjRYw==
472+
473+
version "1.0.0-rc.2"
474+
resolved "https://registry.yarnpkg.com/lezer-clojure/-/lezer-clojure-1.0.0-rc.2.tgz#cec59eafdd150bec9a5524214bc201b4ee117575"
475+
integrity sha512-IdEwD9cq/PSTD3TBYHosqQQu4sKiBCdAcqucGimR0BwKRMnaPAjSgnj/JJ3ykmCwHf1pRHdVyr23gVaxYx2Tvg==
476476
dependencies:
477477
"@lezer/lr" "^1.0.0"
478478

0 commit comments

Comments
 (0)