Skip to content

Commit 320a11d

Browse files
committed
Merge branch 'noprompt-regex-backtracking' into development
* noprompt-regex-backtracking: Small correction to clojureRegexpUnicodeCharClass Generate *CharClass patterns with frak Add frak Conflicts: clj/src/vim_clojure_static/generate.clj syntax/clojure.vim
2 parents 74c7682 + 8542162 commit 320a11d

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

clj/project.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
:license {:name "Vim License"
55
:url "http://vimdoc.sourceforge.net/htmldoc/uganda.html#license"
66
:comments ":help license"}
7-
:dependencies [[org.clojure/clojure "1.5.1"]])
7+
:dependencies [[org.clojure/clojure "1.5.1"]
8+
[frak "0.1.1"]])

clj/src/vim_clojure_static/generate.clj

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@
22
;; Joel Holdbrooks <cjholdbrooks@gmail.com>
33

44
(ns vim-clojure-static.generate
5-
(:require [clojure.set :as set]
6-
[clojure.string :as string]))
5+
(:require [clojure.string :as string]
6+
[clojure.set :as set]
7+
[frak :as frak]))
78

89
;;
910
;; Helpers
1011
;;
1112

13+
(defn vim-frak-pattern
14+
"Create a non-capturing regular expression pattern compatible with Vim."
15+
[strs]
16+
(-> (frak/pattern strs)
17+
str
18+
(string/replace #"\(\?:" "\\%\\(")))
19+
1220
(defn property-pattern
1321
"Vimscript very magic pattern for a character property class."
1422
([s] (property-pattern s true))
@@ -23,7 +31,7 @@
2331
([group fmt props braces?]
2432
(format "syntax match %s \"%s\" contained display\n"
2533
(name group)
26-
(property-pattern (format fmt (string/join \| (sort props))) braces?))))
34+
(property-pattern (format fmt (vim-frak-pattern props)) braces?))))
2735

2836
(defn get-private-field
2937
"Violate encapsulation and get the value of a private field."
@@ -142,15 +150,15 @@
142150
;; `IsPosix` works, but is undefined.
143151
(syntax-match-properties
144152
:clojureRegexpPosixCharClass
145-
"%%(%s)"
153+
"%s"
146154
(:posix character-properties)))
147155

148156
(def vim-java-char-classes
149157
"Vimscript literal `syntax match` for \\p{javaMethod} property classes."
150158
;; `IsjavaMethod` works, but is undefined.
151159
(syntax-match-properties
152160
:clojureRegexpJavaCharClass
153-
"java%%(%s)"
161+
"java%s"
154162
(map #(string/replace % #"\Ajava" "") (:java character-properties))))
155163

156164
(def vim-unicode-binary-char-classes
@@ -159,7 +167,7 @@
159167
;; insensitively like the other Unicode properties.
160168
(syntax-match-properties
161169
:clojureRegexpUnicodeCharClass
162-
"\\cIs%%(%s)"
170+
"\\cIs%s"
163171
(map string/lower-case (:binary character-properties))))
164172

165173
(def vim-unicode-category-char-classes
@@ -173,16 +181,16 @@
173181
(str
174182
(syntax-match-properties
175183
:clojureRegexpUnicodeCharClass
176-
"%%(%s)"
184+
"%s"
177185
(keys table)
178186
false)
179187
(syntax-match-properties
180188
:clojureRegexpUnicodeCharClass
181-
"%%(%s)"
189+
"%s"
182190
(keys table))
183191
(syntax-match-properties
184192
:clojureRegexpUnicodeCharClass
185-
"%%(Is|gc\\=|general_category\\=)?%%(%s)"
193+
"%%(Is|gc\\=|general_category\\=)?%s"
186194
subcats))))
187195

188196
(def vim-unicode-script-char-classes
@@ -194,7 +202,7 @@
194202
;; InScriptName works, but is undefined.
195203
(syntax-match-properties
196204
:clojureRegexpUnicodeCharClass
197-
"\\c%%(Is|sc\\=|script\\=)%%(%s)"
205+
"\\c%%(Is|sc\\=|script\\=)%s"
198206
(map string/lower-case (:script character-properties))))
199207

200208
(def vim-unicode-block-char-classes
@@ -203,7 +211,7 @@
203211
;; of Is.
204212
(syntax-match-properties
205213
:clojureRegexpUnicodeCharClass
206-
"\\c%%(In|blk\\=|block\\=)%%(%s)"
214+
"\\c%%(In|blk\\=|block\\=)%s"
207215
(map string/lower-case (:block character-properties))))
208216

209217
(def comprehensive-clojure-character-property-regexps

0 commit comments

Comments
 (0)