Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ba2e122

Browse files
Fix tests; Add regex hacks
1 parent 680cb69 commit ba2e122

File tree

3 files changed

+55
-31
lines changed

3 files changed

+55
-31
lines changed

‎clj/test/vim/syntax_test.clj

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,27 @@
99

1010
(defpredicates number :clojureNumber)
1111
(def-eq-predicates kw [:clojureKeywordNsColon :clojureKeyword])
12-
(def-eq-predicates kwWithNs [:clojureKeywordNsColon :clojureKeyword])
13-
(def-eq-predicates sym [:clojureSymbolNsColon :clojureSymbol])
14-
(def-eq-predicates symWithNs [:clojureSymbolNsColon :clojureSymbol])
12+
(def-eq-predicates kwCurrentNs [:clojureKeywordNsColon :clojureKeywordNsColon :clojureKeyword])
13+
(def-eq-predicates kwWithNs [:clojureKeywordNsColon :clojureKeywordNs :clojureKeywordNsSeparator :clojureKeyword])
14+
(def-eq-predicates kwWithNs3_4 [:clojureKeywordNsColon
15+
:clojureKeywordNs
16+
:clojureKeywordNs
17+
:clojureKeywordNs
18+
:clojureKeywordNsSeparator
19+
:clojureKeyword
20+
:clojureKeyword
21+
:clojureKeyword
22+
:clojureKeyword])
23+
(def-eq-predicates sym [:clojureSymbol])
24+
(def-eq-predicates symWithNs [:clojureSymbol])
25+
(def-eq-predicates symWithNs_tripleBody [:clojureKeywordNsColon
26+
:clojureKeywordNs :clojureKeywordNsSeparator
27+
:clojureKeywordNs :clojureKeywordNsSeparator
28+
:clojureKeywordNs :clojureKeywordNsSeparator
29+
:clojureKeyword])
30+
(def-eq-predicates kwWithNamedNs [:clojureKeywordNsColon :clojureKeywordNsColon
31+
:clojureKeywordNs :clojureKeywordNsSeparator :clojureKeyword])
32+
1533
(defpredicates character :clojureCharacter)
1634
(defpredicates regexp :clojureRegexp)
1735
(defpredicates regexp-delimiter :clojureRegexpDelimiter)
@@ -111,45 +129,51 @@
111129

112130
(comment (test #'test-character-literals))
113131

132+
(def emptyKeyword (keyword ""))
133+
114134
(defsyntaxtest keywords-test
115135
["%s"
116136
[":1" kw
117137
":A" kw
118138
":a" kw
119-
":αβγ" kw
120-
"::a" kw
139+
":αβγ" (partial = [:clojureKeywordNsColon:clojureKeyword:clojureKeyword:clojureKeyword])
140+
"::a" kwCurrentNs
121141
":a/b" kwWithNs
122-
":a:b" kw
123-
":a:b/:c:b" kwWithNs
124-
":a/b/c/d" kwWithNs
125-
"::a/b" kwWithNs
126-
"::" !kw
127-
"::" !kwWithNs
128-
":a:" !kw
129-
":a:" !kwWithNs
130-
":a/" !kw
131-
":a/" !kwWithNs
132-
":/" !kw ; This is legal, but for simplicity we do not match it
133-
":/" !kwWithNs ; This is legal, but for simplicity we do not match it
134-
":" !kw
135-
":" !kwWithNs]])
142+
":a:b/:c:b" kwWithNs3_4
143+
":a/b/c/d" symWithNs_tripleBody
144+
"::a/b" kwWithNamedNs
145+
"::" (partial = [emptyKeyword emptyKeyword])
146+
":a:" (partial = [emptyKeyword :clojureSymbol emptyKeyword])
147+
":a/" (partial = [:clojureKeywordNsColon :clojureKeywordNs :clojureKeywordNsSeparator])
148+
":/" (partial = [:clojureKeywordNsColon :clojureKeywordNsSeparator])
149+
":" (partial = [emptyKeyword])]])
136150

137151
(defsyntaxtest symbols-test
138152
["%s"
139153
["1" !sym
140154
"1" !symWithNs
141155
"A" sym
142156
"a" sym
143-
"αβγ" sym
144-
"a/b" symWithNs
145-
"a:b" sym
146-
"a:b/:c:b" symWithNs
147-
"a/b/c/d" symWithNs
157+
"αβγ" (partial = [:clojureSymbol :clojureSymbol :clojureSymbol])
158+
"a/b" (partial = [:clojureSymbolNs :clojureSymbolNsSeparator :clojureSymbol])
159+
"a:b" (partial = [:clojureSymbol :clojureSymbol :clojureSymbol])
160+
"a:b/:c:b" (partial = [:clojureSymbolNs
161+
:clojureSymbolNs
162+
:clojureSymbolNs
163+
:clojureSymbolNsSeparator
164+
:clojureSymbol
165+
:clojureSymbol
166+
:clojureSymbol
167+
:clojureSymbol])
168+
"a/b/c/d" (partial = [:clojureSymbolNs :clojureSymbolNsSeparator
169+
:clojureSymbolNs :clojureSymbolNsSeparator
170+
:clojureSymbolNs :clojureSymbolNsSeparator
171+
:clojureSymbol])
148172
"a:" !sym
149173
"a:" !symWithNs
150174
"a/" !sym
151175
"a/" !symWithNs
152-
"/" sym]])
176+
"/" !sym]])
153177

154178
(comment (test #'keywords-test))
155179

‎clj/test/vim/test.clj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@
9797
`(do
9898
(defn ~sym
9999
~(str "Returns true if all elements of coll equal " kw)
100-
{:arglists '~'[coll]}
100+
{:arglists (list'~'[coll])}
101101
[coll#]
102102
(~pred-eq ~kw coll#))
103103
(defn ~(symbol (str \! sym))
104104
~(str "Returns true if any elements of coll do not equal " kw)
105-
{:arglists '~'[coll]}
105+
{:arglists (list'~'[coll])}
106106
[coll#]
107107
(~pred-neq ~kw coll#))))
108108

@@ -118,7 +118,7 @@
118118
"Create two complementary predicate vars, `sym` and `!sym`, which test if
119119
input and result are equal"
120120
[sym kw]
121-
`(defpredicates-general '= 'not= ~sym ~kw))
121+
`(defpredicates-general = not= ~sym ~kw))
122122

123123
(defn benchmark [n file buf & exprs]
124124
(vim-exec file buf (format "Benchmark(%d, %s)"

‎syntax/clojure.vim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ endif
6262
unlet! s:key
6363
delfunction s:syntax_keyword
6464

65-
syntax match clojureKeywordNs contained "\v[^/ :']+\ze/"
65+
syntax match clojureKeywordNs contained "\v[^/:]+[^/]*\ze/"
6666
syntax match clojureKeywordNsSeparator contained "/"
6767
syntax match clojureKeywordNsColon contained "\v<:{1,2}"
6868
" Keywords are symbols:
@@ -71,15 +71,15 @@ syntax match clojureKeywordNsColon contained "\v<:{1,2}"
7171
" * Must not end in a : or /
7272
" * Must not have two adjacent colons except at the beginning
7373
" * Must not contain any reader metacharacters except for ' and #
74-
syntax match clojureKeyword "\v<:{1,2}([^ \n\r\t()\[\]{}";@^`~\\/]+/)*[^ \n\r\t()\[\]{}";@^`~\\/]+:@1<!>" contains=clojureKeywordNs,clojureKeywordNsSeparator,clojureKeywordNsColon
74+
syntax match clojureKeyword "\v<:{1,2}([^ \n\r\t()\[\]{}";@^`~\\/]*/)*[^ \n\r\t()\[\]{}";@^`~\\/]*:@1<!>" contains=clojureKeywordNs,clojureKeywordNsSeparator,clojureKeywordNsColon
7575

7676
syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained
7777

7878
syntax region clojureString matchgroup=clojureStringDelimiter start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape,@Spell
7979

8080
syntax match clojureCharacter "\v\\%(o%([0-3]\o{2}|\o{1,2})|u\x{4}|newline|tab|space|return|backspace|formfeed|.)"
8181

82-
syntax match clojureSymbolNs contained "\v[^/ :']+\ze/"
82+
syntax match clojureSymbolNs contained "\v[^/ ]+\ze/"
8383
syntax match clojureSymbolNsSeparator contained "/"
8484
syntax match clojureSymbol "\v%([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x00-\x7F]))*[#:]@1<!" contains=clojureSymbolNs,clojureSymbolNsSeparator
8585

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /