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 170b544

Browse files
committed
fixup! Experiment to improve accuracy of syntax generation
1 parent 33eb850 commit 170b544

File tree

2 files changed

+25
-24
lines changed

2 files changed

+25
-24
lines changed

‎clj/src/vim_clojure_static/generate.clj

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,18 @@
7676
(format "\" Java version %s\n" (System/getProperty "java.version")))
7777

7878
(defn vars-in-ns [ns]
79-
(->> ns ns-publics vals (map meta)))
79+
(->> ns
80+
ns-publics
81+
(map (fn [[_ var]]
82+
(assoc (meta var)
83+
:var var
84+
:fqs (symbol var))))))
8085

81-
(defn filter-vars [pred vars]
82-
(->> vars
83-
(filter pred)
84-
(map #(symbol (str (ns-name (:ns %)) "/" (:name %))))
85-
set))
86+
(defn ->fqs [vars]
87+
(into #{} (map :fqs) vars))
8688

8789
(defn multi-fn? [v]
88-
(instance? MultiFn (var-get (ns-resolve (:ns v) (:name v)))))
90+
(instance? MultiFn (var-get (:var v))))
8991

9092
(defn function? [v]
9193
(or
@@ -103,25 +105,24 @@
103105
(re-find #"([^/]*/)?\Af?def(?!ault)"
104106
(str (if (map? v) (:name v) v))))
105107

106-
(defn exclude [from & excludes]
107-
(apply disj from (apply set/union excludes)))
108-
109-
(defn keyword-groups [namespace]
110-
(let [vars (vars-in-ns namespace)
108+
(def keyword-groups
109+
"Special forms, constants, and every public var in clojure.core keyed by
110+
syntax group name."
111+
(let [vars (vars-in-ns 'clojure.core)
111112
compiler-specials (set (keys Compiler/specials))
112113
exceptions '#{throw try catch finally}
113114
repeat '#{recur loop* clojure.core/loop clojure.core/doseq clojure.core/dotimes clojure.core/while}
114115
conditionals '#{case* clojure.core/case
115116
if clojure.core/if-not clojure.core/if-let clojure.core/if-some
116117
clojure.core/cond clojure.core/cond-> clojure.core/cond->> clojure.core/condp
117118
clojure.core/when clojure.core/when-first clojure.core/when-let clojure.core/when-not clojure.core/when-some}
118-
define (set/union (filter-vars identity (filter define? vars))
119+
define (set/union (->fqs (filter define? vars))
119120
(set (filter define? compiler-specials)))
120-
macros (filter-vars:macro vars)
121-
functions (filter-varsfunction? vars)
122-
variables (filter-varsvariable? vars)
123-
special (set (set/union (filter-vars:special-form vars)
124-
compiler-specials))]
121+
macros (->fqs (filter:macro vars))
122+
functions (->fqs (filterfunction? vars))
123+
variables (->fqs (filtervariable? vars))
124+
special (set/union (->fqs (filter:special-form vars))
125+
compiler-specials)]
125126
{"clojureBoolean" '#{true false}
126127
"clojureConstant" '#{nil}
127128
"clojureException" exceptions
@@ -130,8 +131,8 @@
130131
"clojureDefine" define
131132
"clojureVariable" variables
132133
"clojureFunc" functions
133-
"clojureSpecial" (-> special (excludedefine repeat conditionals exceptions))
134-
"clojureMacro" (-> macros (excludedefine repeat conditionals special))}))
134+
"clojureSpecial" (set/difference special define repeat conditionals exceptions)
135+
"clojureMacro" (set/difference macros define repeat conditionals special)}))
135136

136137
;; Java 8 Character class implements Unicode standard 6.2 from 2012 [1],
137138
;; Java 15 implements Unicode standard 13 from 2020 [2],
@@ -279,7 +280,7 @@
279280

280281
(def vim-keywords
281282
"Vimscript literal dictionary of important identifiers."
282-
(->> (keyword-groups 'clojure.core)
283+
(->> keyword-groups
283284
sort
284285
(map (fn [[group keywords]]
285286
(->> keywords
@@ -293,7 +294,7 @@
293294

294295
(def vim-completion-words
295296
"Vimscript literal list of words for omnifunc completion."
296-
(->> (keyword-groups 'clojure.core)
297+
(->> keyword-groups
297298
vals
298299
(reduce set/union)
299300
map-keyword-names
@@ -444,7 +445,7 @@
444445
vim-unicode-block-char-classes)
445446
"-*- TOP CLUSTER -*-"
446447
(qstr generation-comment
447-
(vim-top-cluster (keys (keyword-groups 'clojure.core))
448+
(vim-top-cluster (keys keyword-groups)
448449
(slurp (fjoin dir "syntax/clojure.vim"))))}
449450

450451
(fjoin dir "ftplugin/clojure.vim")

‎syntax/clojure.vim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ syntax region clojureRegexpQuote start=/\\Q/ skip=/\\\\\|\\"/ end=/\\E/
9696

9797
" -*- CHARACTER PROPERTY CLASSES -*-
9898
" Generated from https://github.com/clojure-vim/clojure.vim/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
99-
" Java version 17.0.1
99+
" Java version 17.0.2
100100
syntax match clojureRegexpPosixCharClass "\v\\[pP]\{%(Cntrl|A%(l%(pha|num)|SCII)|Space|Graph|Upper|P%(rint|unct)|Blank|XDigit|Digit|Lower)\}" contained display
101101
syntax match clojureRegexpJavaCharClass "\v\\[pP]\{java%(Whitespace|JavaIdentifier%(Part|Start)|SpaceChar|Mirrored|TitleCase|I%(SOControl|de%(ographic|ntifierIgnorable))|D%(efined|igit)|U%(pperCase|nicodeIdentifier%(Part|Start))|L%(etter%(OrDigit)?|owerCase)|Alphabetic)\}" contained display
102102
syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\cIs%(l%(owercase|etter)|hex%(digit|_digit)|w%(hite%(_space|space)|ord)|noncharacter%(_code_point|codepoint)|p%(rint|unctuation)|ideographic|graph|a%(l%(num|phabetic)|ssigned)|uppercase|join%(control|_control)|titlecase|blank|digit|control)\}" contained display

0 commit comments

Comments
(0)

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