-
Notifications
You must be signed in to change notification settings - Fork 1
/
emacs-lisp.cson
6710 lines (6613 loc) · 819 KB
/
emacs-lisp.cson
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
name: "Emacs Lisp"
scopeName: "source.emacs.lisp"
fileTypes: [
"el"
"elc"
"eld"
"spacemacs"
"_emacs"
"emacs"
"emacs.desktop"
"abbrev_defs"
"Project.ede"
"Cask"
"gnus"
"viper"
]
firstLineMatch: """(?x)
# Hashbang
^\\#!.*(?:\\s|\\/|(?<=!)\\b)
emacs
(?:$|\\s)
|
# Modeline
(?:
# Emacs
-\\*-(?i:[ \\t]*(?=[^:;\\s]+[ \\t]*-\\*-)|(?:.*?[ \\t;]|(?<=-\\*-))[ \\t]*mode[ \\t]*:[ \\t]*)
(?i:emacs-lisp)
(?=[ \\t;]|(?<![-*])-\\*-).*?-\\*-
|
# Vim
(?:(?:^|[ \\t])(?:vi|Vi(?=m))(?:m[<=>]?[0-9]+|m)?|[ \\t]ex)(?=:(?=[ \\t]*set?[ \\t][^\\r\\n:]+:)|:(?![ \\t]*set?[ \\t]))
(?:(?:[ \\t]*:[ \\t]*|[ \\t])\\w*(?:[ \\t]*=(?:[^\\\\\\s]|\\\\.)*)?)*[ \\t:]
(?:filetype|ft|syntax)[ \\t]*=
(?i:emacs-lisp|elisp)
(?=$|\\s|:)
)
"""
patterns: [{
# Interpreter directive
name: "comment.line.hashbang.emacs.lisp"
begin: "\\A(#!)"
end: "$"
beginCaptures:
1: name: "punctuation.definition.comment.hashbang.emacs.lisp"
}, include: "#main"]
repository:
# Top-level patterns
main:
patterns: [
{include: "#autoload"}
{include: "#comment"}
{include: "#lambda"}
{include: "#loop"}
{include: "#escapes"}
{include: "#definition"}
{include: "#formatting"}
{include: "#face-innards"}
{include: "#expression"}
{include: "#operators"}
{include: "#functions"}
{include: "#binding"}
{include: "#keyword"}
{include: "#string"}
{include: "#number"}
{include: "#quote"}
{include: "#symbols"}
{include: "#vectors"}
{include: "#arg-values"}
{include: "#archive-sources"}
{include: "#boolean"}
{include: "#faces"}
{include: "#cask"}
{include: "#stdlib"}
]
"archive-sources":
match: """(?x)\\b(?<=[\\s()\\[]|^)
(SC|gnu|marmalade|melpa-stable|melpa|org)
(?=[\\s()]|$) \\b """
captures:
1: name: "support.language.constant.archive-source.emacs.lisp"
# Special keywords used in function/macro definitions
"arg-values":
patterns: [{
name: "constant.language.$1.arguments.emacs.lisp"
match: "&(optional|rest)(?=\\s|\\))"
}]
# "Magic" comment for autoloading
autoload:
name: "comment.line.semicolon.autoload.emacs.lisp"
begin: "^(;;;###)(autoload)"
end: "$"
contentName: "string.unquoted.other.emacs.lisp"
beginCaptures:
1: name: "punctuation.definition.comment.emacs.lisp"
2: name: "storage.modifier.autoload.emacs.lisp"
# Binding
binding:
name: "storage.binding.emacs.lisp"
match: "\\b(?<=[\\s()\\[]|^)(let\\*?|set[fq]?)(?=[\\s()]|$)"
# Boolean constants
boolean:
patterns: [
{name: "constant.boolean.true.emacs.lisp", match: "\\b(?<=[\\s()\\[]|^)t(?=[\\s()]|$)\\b"}
{name: "constant.language.nil.emacs.lisp", match: "\\b(?<=[\\s()\\[]|^)(nil)(?=[\\s()]|$)\\b"}
]
# Comment-line
comment:
name: "comment.line.semicolon.emacs.lisp"
begin: ";"
end: "$"
beginCaptures:
0: name: "punctuation.definition.comment.emacs.lisp"
patterns: [
{include: "#modeline"}
{include: "#eldoc"}
]
# def* statement
definition:
patterns: [{
name: "meta.function.definition.emacs.lisp"
begin: "(\\()(?:(cl-(defun|defmacro|defsubst))|(defun|defmacro|defsubst))(?!-)\\b(?:\\s*(?![-+\\d])([-+=*/\\w~!@$%^&:<>{}?]+))?"
end: "\\)"
beginCaptures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "storage.type.$3.function.cl-lib.emacs.lisp"
4: name: "storage.type.$4.function.emacs.lisp"
5: name: "entity.function.name.emacs.lisp"
endCaptures:
0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [include: "#defun-innards"]
},{
name: "storage.type.function.emacs.lisp"
match: "\\b(?<=[\\s()\\[]|^)defun(?=[\\s()]|$)"
},{
# Generic definition
name: "meta.$3.definition.emacs.lisp"
begin: """(?x) (?<=\\s|^) (\\()
(def(advice|class|const|custom|face|image|group|package|struct|subst|theme|type|var))
(?:\\s+([-+=*/\\w~!@$%^&:<>{}?]+))?
(?=[\\s()]|$)"""
end: "\\)"
beginCaptures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "storage.type.$3.emacs.lisp"
4: name: "entity.name.$3.emacs.lisp"
endCaptures:
0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [include: "$self"]
},{
name: "storage.type.$1.emacs.lisp"
match: "\\b(?<=[\\s()\\[]|^)(define-(?:condition|widget))(?=[\\s()]|$)\\b"
}]
"defun-innards":
patterns: [{
# Argument variables
name: "meta.argument-list.expression.emacs.lisp"
begin: "\\G\\s*(\\()"
end: "\\)"
beginCaptures: 0: name: "punctuation.section.expression.begin.emacs.lisp"
endCaptures: 0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [
{include: "#arg-keywords"}
name: "variable.parameter.emacs.lisp"
match: "(?![-+\\d:&'#])([-+=*/\\w~!@$%^&:<>{}?]+)"
{include: "$self"}
]
}, include: "$self"]
# Stuff matched inside docstrings and comments
# See: “(elisp)Keys in Documentation” node in Texinfo manual
eldoc:
patterns: [
{include: "#docesc"}
{include: "#docvar"}
{include: "#dockey"}
{include: "#docmap"}
]
# ElDoc-specific escape sequences: \\=…, \\+…
docesc:
patterns: [
{match: "\\x5C{2}=", name: "constant.escape.character.key-sequence.emacs.lisp"}
{match: "\\x5C{2}+", name: "constant.escape.character.suppress-link.emacs.lisp"}
]
# Key sequence placeholder that executes \[command]
dockey:
name: "variable.other.reference.key-sequence.emacs.lisp"
match: "(\\x5C{2}\\[)((?:[^\\s\\\\]|\\\\.)+)(\\])"
captures:
1: name: "punctuation.definition.reference.begin.emacs.lisp"
2: name: "constant.other.reference.link.emacs.lisp"
3: name: "punctuation.definition.reference.end.emacs.lisp"
# Keymap placeholders
docmap:
patterns: [{
# Summary of keymap named by \{mapvar}
name: "meta.keymap.summary.emacs.lisp"
match: "(\\x5C{2}{)((?:[^\\s\\\\]|\\\\.)+)(})"
captures:
1: name: "punctuation.definition.reference.begin.emacs.lisp"
2: name: "entity.name.tag.keymap.emacs.lisp"
3: name: "punctuation.definition.reference.end.emacs.lisp"
},{
# \<mapvar> overrides value of \{mapvar} for subsequent \[…] sequences.
name: "meta.keymap.specifier.emacs.lisp"
match: "(\\x5C{2}<)((?:[^\\s\\\\]|\\\\.)+)(>)"
captures:
1: name: "punctuation.definition.reference.begin.emacs.lisp"
2: name: "entity.name.tag.keymap.emacs.lisp"
3: name: "punctuation.definition.reference.end.emacs.lisp"
}]
# Strings quoted `like this'
docvar:
name: "variable.other.literal.emacs.lisp"
match: "(`)[^\\s()]+(')"
captures:
1: name: "punctuation.definition.quote.begin.emacs.lisp"
2: name: "punctuation.definition.quote.end.emacs.lisp"
# Escape sequences
escapes:
patterns: [{
# Hex: ?\uFFFF
name: "constant.character.escape.hex.emacs.lisp"
match: "(\\?)\\\\u[A-Fa-f0-9]{4}|(\\?)\\\\U00[A-Fa-f0-9]{6}"
captures:
1: name: "punctuation.definition.codepoint.emacs.lisp"
2: name: "punctuation.definition.codepoint.emacs.lisp"
},{
# Hex: ?\xFF
name: "constant.character.escape.hex.emacs.lisp"
match: "(\\?)\\\\x[A-Fa-f0-9]+"
captures:
1: name: "punctuation.definition.codepoint.emacs.lisp"
},{
# Octal: ?\777
name: "constant.character.escape.octal.emacs.lisp"
match: "(\\?)\\\\[0-7]{1,3}"
captures:
1: name: "punctuation.definition.codepoint.emacs.lisp"
},{
# Codepoint query: ?x
name: "constant.numeric.codepoint.emacs.lisp"
match: "(\\?)(?:[^\\\\]|(\\\\).)"
captures:
1: name: "punctuation.definition.codepoint.emacs.lisp"
2: name: "punctuation.definition.backslash.emacs.lisp"
},{
# Generic escape: \x
name: "constant.character.escape.emacs.lisp"
match: "(\\\\)."
captures:
1: name: "punctuation.definition.backslash.emacs.lisp"
}]
# S-expression
expression:
patterns: [{
name: "meta.expression.emacs.lisp"
begin: "\\("
end: "\\)"
beginCaptures: 0: name: "punctuation.section.expression.begin.emacs.lisp"
endCaptures: 0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [include: "$self"]
},{
name: "meta.quoted.expression.emacs.lisp"
begin: "(\\')(\\()"
end: "\\)"
beginCaptures:
1: name: "punctuation.definition.symbol.emacs.lisp"
2: name: "punctuation.section.quoted.expression.begin.emacs.lisp"
endCaptures:
0: name: "punctuation.section.quoted.expression.end.emacs.lisp"
patterns: [include: "$self"]
},{
name: "meta.backquoted.expression.emacs.lisp"
begin: "(\\`)(\\()"
end: "\\)"
beginCaptures:
1: name: "punctuation.definition.symbol.emacs.lisp"
2: name: "punctuation.section.backquoted.expression.begin.emacs.lisp"
endCaptures:
0: name: "punctuation.section.backquoted.expression.end.emacs.lisp"
patterns: [include: "$self"]
},{
name: "meta.interpolated.expression.emacs.lisp"
begin: "(,@)(\\()"
end: "\\)"
beginCaptures:
1: name: "punctuation.definition.symbol.emacs.lisp"
2: name: "punctuation.section.interpolated.expression.begin.emacs.lisp"
endCaptures:
0: name: "punctuation.section.interpolated.expression.end.emacs.lisp"
patterns: [include: "$self"]
}]
# Font-face properties
"face-innards":
patterns: [{
name: "meta.expression.display-type.emacs.lisp"
match: "(\\()(type)\\s+(graphic|x|pc|w32|tty)(\\))"
captures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "variable.language.display.type.emacs.lisp"
3: name: "support.constant.display.type.emacs.lisp"
4: name: "punctuation.section.expression.end.emacs.lisp"
},{
name: "meta.expression.display-class.emacs.lisp"
match: "(\\()(class)\\s+(color|grayscale|mono)(\\))"
captures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "variable.language.display.class.emacs.lisp"
3: name: "support.constant.display.class.emacs.lisp"
4: name: "punctuation.section.expression.end.emacs.lisp"
},{
name: "meta.expression.background-type.emacs.lisp"
match: "(\\()(background)\\s+(light|dark)(\\))"
captures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "variable.language.background-type.emacs.lisp"
3: name: "support.constant.background-type.emacs.lisp"
4: name: "punctuation.section.expression.end.emacs.lisp"
},{
name: "meta.expression.display-prerequisite.emacs.lisp"
begin: "(\\()(min-colors|supports)(?=[\\s()]|$)"
end: "\\)"
beginCaptures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "variable.language.display-prerequisite.emacs.lisp"
endCaptures:
0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [include: "$self"]
}]
# Formatting functions
formatting:
name: "meta.string-formatting.expression.emacs.lisp"
begin: '(\\()(format|format-message|message|error)(?=\\s|$|")'
end: '\\)'
beginCaptures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "support.function.$2.emacs.lisp"
endCaptures:
0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [{
# Pin-hack: Part 1
begin: '\\G\\s*(")'
end: '"'
beginCaptures: 1: name: "punctuation.definition.string.begin.emacs.lisp"
endCaptures: 0: name: "punctuation.definition.string.end.emacs.lisp"
patterns: [include: "#format"]
},{
# Pin-hack: Part 2
begin: '\\G\\s*$\\n?'
end: '"|(?<!^)$|[\\s"](?=[^\\s"])'
patterns: [
match: "^\\s*$\\n?"
{match: '(?:^|\\G)\\s*(")',
captures:
1: name: "punctuation.definition.string.begin.emacs.lisp"}
begin: '(?<=")'
end: '"'
patterns: [include: "#format"]
endCaptures:
0: name: "punctuation.definition.string.end.emacs.lisp"
]
}, include: "$self"]
# Formatting string, where "%" has special significance
format:
contentName: "string.quoted.double.emacs.lisp"
begin: '\\G'
end: '(?=")'
patterns: [{
match: "(%[%cdefgosSxX])|(%.)"
captures:
1: name: "constant.other.placeholder.emacs.lisp"
2: name: "invalid.illegal.placeholder.emacs.lisp"
}, include: "#string-innards"]
# Primitives/Fundamental Lisp functions
functions:
name: "keyword.control.function.$1.emacs.lisp"
match: """(?x)\\b(?<=[\\s()\\[]|^)
(abs|append|apply|assoc|butlast|c[ad]{1,2}r|c[ad]r-safe|consp?|copy-alist|copy-tree
|dolist|funcall|last|length|listp?|load|make-list|mapc|mapcar|max|min|member|nbutlast
|nconc|nreverse|nth|nthcdr|null|pop|prin[1ct]|push|quote|rassoc|reverse|rplac[ad]
|safe-length|setcar|setcdr)
(?=[\\s()]|$)\\b"""
# :keywords
keyword:
name: "constant.keyword.emacs.lisp"
match: "(?<=[\\s()\\[]|^)(:)[-+=*/\\w~!@$%^&:<>{}?]+"
captures:
1: name: "punctuation.definition.keyword.emacs.lisp"
# Patterns described in `edmacro.el' to match key-sequences (`C-M-x', `C-<down>' etc).
# Used by YASnippet's "binding" directive, but not by the Elisp grammar itself.
"key-notation":
patterns: [{
# Special words for control characters
name: "constant.control-character.key.emacs.lisp"
match: "\\b(DEL|ESC|LFD|NUL|RET|SPC|TAB)\\b"
},{
# Octal notation
name: "constant.character.escape.octal.codepoint.key.emacs.lisp"
match: "(\\\\)[0-7]{1,6}"
captures:
1: name: "punctuation.definition.escape.backslash.emacs.lisp"
},{
# Caret notation
name: "constant.character.escape.caret.control.key.emacs.lisp"
match: "(\\^)\\S"
captures:
1: name: "punctuation.definition.escape.caret.emacs.lisp"
},{
# Command name: <<next-line>>
name: "constant.command-name.key.emacs.lisp"
match: "(<<)[-A-Za-z0-9]+(>>)"
captures:
1: name: "punctuation.definition.double.angle.bracket.begin.emacs.lisp"
2: name: "punctuation.definition.double.angle.bracket.end.emacs.lisp"
},{
# Repetition: 3*<right> = <right> <right> <right>
name: "meta.key-repetition.emacs.lisp"
match: "([0-9]+)(\\*)(?=[\\S])"
captures:
1: name: "constant.numeric.integer.int.decimal.emacs.lisp"
2: name: "keyword.operator.arithmetic.multiply.emacs.lisp"
},{
# M--123 (only multicharacter word permitted with a prefix)
name: "meta.key-sequence.emacs.lisp"
match: "\\b(M-)(-?[0-9]+)\\b"
captures:
1: patterns: [include: "#key-notation-prefix"]
2: name: "constant.character.key.emacs.lisp"
},{
# Most common forms: C-x, C-M-x, S-TAB, S-<TAB>
name: "meta.key-sequence.emacs.lisp"
match: """(?x)
\\b((?:[MCSAHs]-)+)
(?: (<)(DEL|ESC|LFD|NUL|RET|SPC|TAB)(>)
| (DEL|ESC|LFD|NUL|RET|SPC|TAB)\\b
| ([!-_a-z]{2,})
| ([!-_a-z])
)?"""
captures:
1: patterns: [include: "#key-notation-prefix"]
2: name: "punctuation.definition.angle.bracket.begin.emacs.lisp"
3: name: "constant.control-character.key.emacs.lisp"
4: name: "punctuation.definition.angle.bracket.end.emacs.lisp"
5: name: "constant.control-character.key.emacs.lisp"
6: name: "invalid.illegal.bad-prefix.emacs.lisp"
7: name: "constant.character.key.emacs.lisp"
},{
# <left>, C-<left>, <C-left>
name: "meta.function-key.emacs.lisp"
match: "([MCSAHs]-<|<[MCSAHs]-|<)([-A-Za-z0-9]+)(>)"
captures:
1: patterns: [{
match: "<"
name: "punctuation.definition.angle.bracket.begin.emacs.lisp"
}, include: "#key-notation-prefix"]
2: name: "constant.function-key.emacs.lisp"
3: name: "punctuation.definition.angle.bracket.end.emacs.lisp"
},{
# Single key not affixed to a modifier (C-x u)
name: "constant.character.key.emacs.lisp"
match: "(?<=\\s)(?![MCSAHs<>])[!-_a-z](?=\\s)"
}]
"key-notation-prefix":
match: "([MCSAHs])(-)"
captures:
1: name: "constant.character.key.modifier.emacs.lisp"
2: name: "punctuation.separator.modifier.dash.emacs.lisp"
# Lambda function
lambda:
name: "meta.lambda.expression.emacs.lisp"
begin: "(\\()(lambda|function)(?:\\s+|(?=[()]))"
end: "\\)"
beginCaptures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "storage.type.lambda.function.emacs.lisp"
endCaptures:
0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [include: "#defun-innards"]
# Common Lisp loop structures
loop:
name: "meta.cl-lib.loop.emacs.lisp"
begin: "(\\()(cl-loop)(?=[\\s()]|$)"
end: "\\)"
beginCaptures:
1: name: "punctuation.section.expression.begin.emacs.lisp"
2: name: "support.function.cl-lib.emacs.lisp"
endCaptures:
0: name: "punctuation.section.expression.end.emacs.lisp"
patterns: [{
name: "keyword.control.emacs.lisp"
match: """(?x)(?<=[\\s()\\[]|^)
(above|across|across-ref|always|and|append|as|below|by|collect|concat
|count|do|each|finally|for|from|if|in|in-ref|initially|into|maximize
|minimize|named|nconc|never|of|of-ref|on|repeat|return|sum|then|thereis
|sum|to|unless|until|using|vconcat|when|while|with|(?:
being \\s+
(?:the)? \\s+
(?:element|hash-key|hash-value|key-code|key-binding
|key-seq|overlay|interval|symbols|frame|window|buffer)
s?
))(?=[\\s()]|$)"""
}, include: "$self"]
# Modeline
modeline:
name: "meta.modeline.emacs.lisp"
match: "(-\\*-)(.*)(-\\*-)"
captures:
1: name: "punctuation.definition.modeline.begin.emacs.lisp"
2: patterns: [include: "#modeline-innards"]
3: name: "punctuation.definition.modeline.end.emacs.lisp"
"modeline-innards":
patterns: [{
name: "meta.modeline.variable.emacs.lisp"
match: "([^\\s:;]+)\\s*(:)\\s*([^;]*)"
captures:
1: name: "variable.assignment.modeline.emacs.lisp"
2: name: "punctuation.separator.key-value.emacs.lisp"
3: patterns: [include: "#modeline-innards"]
}
{name: "punctuation.terminator.statement.emacs.lisp", match: ";"}
{name: "punctuation.separator.key-value.emacs.lisp", match: ":"}
{name: "string.other.modeline.emacs.lisp", match: "\\S+"}
]
# Numeric literals
number:
patterns: [{
# #b10010110: Binary notation
name: "constant.numeric.integer.binary.emacs.lisp"
match: "(?<=[\\s()\\[]|^)(#)[Bb][01]+"
captures: 1: name: "punctuation.definition.binary.emacs.lisp"
},{
# 0xFFFF: Hexadecimal notation
name: "constant.numeric.integer.hex.viml"
match: "(?<=[\\s()\\[]|^)(#)[Xx][0-9A-Fa-f]+"
captures: 1: name: "punctuation.definition.hex.emacs.lisp"
},{
# Float
name: "constant.numeric.float.emacs.lisp"
match: "(?<=[\\s()\\[]|^)[-+]?\\d*\\.\\d+(?:[Ee][-+]?\\d+|[Ee]\\+(?:INF|NaN))?(?=[\\s()]|$)"
},{
# Integer
name: "constant.numeric.integer.emacs.lisp"
match: "(?<=[\\s()\\[]|^)[-+]?\\d+(?:[Ee][-+]?\\d+|[Ee]\\+(?:INF|NaN))?(?=[\\s()]|$)"
}]
# "Operators" (as far as TextMate's classification is concerned)
operators:
patterns: [{
# Control flow
name: "keyword.control.$1.emacs.lisp"
match: """(?x)(?<=[()]|^)
(and|catch|cond|condition-case(?:-unless-debug)?|dotimes|eql?
|equal|if|not|or|pcase|prog[12n]|throw|unless|unwind-protect
|when|while)
(?=[\\s()]|$)"""
},{
# Interactive function marker
match: "(?<=\\(|\\s|^)(interactive)(?=\\s|\\(|\\))"
name: "storage.modifier.interactive.function.emacs.lisp"
},{
# Mathematical operators
name: "keyword.operator.numeric.emacs.lisp"
match: "(?<=\\(|\\s|^)[-*+/%](?=\\s|\\)|$)"
},{
# Comparison operators
name: "keyword.operator.comparison.emacs.lisp"
match: "(?<=\\(|\\s|^)[/<>]=|[=<>](?=\\s|\\)|$)"
},{
# Pair separator
name: "keyword.operator.pair-separator.emacs.lisp"
match: "(?<=\\s)\\.(?=\\s|$)"
}]
# Argument-quoting
quote:
patterns: [{
# 'value
name: "constant.other.symbol.emacs.lisp"
match: "(')([-+=*/\\w~!@$%^&:<>{}?]+)"
captures:
1: name: "punctuation.definition.quote.emacs.lisp"
2: patterns: [include: "$self"]
}]
# "Double-quoted" string
string:
name: "string.quoted.double.emacs.lisp"
begin: '"'
end: '"'
beginCaptures: 0: name: "punctuation.definition.string.begin.emacs.lisp"
endCaptures: 0: name: "punctuation.definition.string.end.emacs.lisp"
patterns: [include: "#string-innards"]
# Escape sequences within double-quoted strings
"string-innards":
patterns: [include: "#eldoc", {
# Concealed newline
name: "constant.escape.character.newline.emacs.lisp"
match: "(\\\\)$\\n?"
},{
# Escaped character, any
match: '(\\\\).'
name: "constant.escape.character.emacs.lisp"
captures:
1: name: "punctuation.escape.backslash.emacs.lisp"
}]
# Symbols (at least the ones we care to highlight)
symbols:
patterns: [{
name: "constant.other.interned.blank.symbol.emacs.lisp"
match: "(?<=[\\s()\\[]|^)##"
captures:
0: name: "punctuation.definition.symbol.emacs.lisp"
},{
name: "constant.other.symbol.emacs.lisp"
match: "(?<=[\\s()\\[]|^)(#)((?:[-'+=*/\\w~!@$%^&:<>{}?]|\\\\.)+)"
captures:
1: name: "punctuation.definition.symbol.emacs.lisp"
2: patterns: [include: "$self"]
},{
# ,@spliced-symbol
name: "constant.other.spliced.symbol.emacs.lisp"
match: "(,@)([-+=*/\\w~!@$%^&:<>{}?]+)"
captures:
1: name: "punctuation.definition.spliced.symbol.emacs.lisp"
},{
# ,inserted-symbol
name: "constant.other.inserted.symbol.emacs.lisp"
match: "(,)([-+=*/\\w~!@$%^&:<>{}?]+)"
captures:
1: name: "punctuation.definition.inserted.symbol.emacs.lisp"
}]
# [Vector lists]
vectors:
patterns: [
{match: "\\[", name: "punctuation.section.vector.begin.emacs.lisp"}
{match: "\\]", name: "punctuation.section.vector.end.emacs.lisp"}
]
# Project management tool for Emacs with a DSL that uses Emacs Lisp.
# Reference: https://cask.readthedocs.io/en/latest/guide/dsl.html
cask:
name: "support.function.emacs.lisp"
match: "\\b(?<=[\\s()\\[]|^)(?:files|source|development|depends-on|package-file|package-descriptor|package)(?=[\\s()]|$)\\b"
# Text faces (Source: http://doc.endlessparentheses.com/faces.html)
faces:
name: "support.constant.face.emacs.lisp"
match: """(?x) \\b (?<=[\\s()\\[]|^)
(?:Buffer-menu-buffer|Info-quoted|Info-title-1-face|Info-title-2-face|Info-title-3-face|Info-title-4-face|Man-overstrike|Man-reverse
|Man-underline|antlr-default|antlr-font-lock-default-face|antlr-font-lock-keyword-face|antlr-font-lock-literal-face
|antlr-font-lock-ruledef-face|antlr-font-lock-ruleref-face|antlr-font-lock-syntax-face|antlr-font-lock-tokendef-face
|antlr-font-lock-tokenref-face|antlr-keyword|antlr-literal|antlr-ruledef|antlr-ruleref|antlr-syntax|antlr-tokendef|antlr-tokenref
|apropos-keybinding|apropos-property|apropos-symbol|bat-label-face|bg:erc-color-face0|bg:erc-color-face1|bg:erc-color-face10
|bg:erc-color-face11|bg:erc-color-face12|bg:erc-color-face13|bg:erc-color-face14|bg:erc-color-face15|bg:erc-color-face2
|bg:erc-color-face3|bg:erc-color-face4|bg:erc-color-face5|bg:erc-color-face6|bg:erc-color-face7|bg:erc-color-face8|bg:erc-color-face9
|bold-italic|bold|bookmark-menu-bookmark|bookmark-menu-heading|border|breakpoint-disabled|breakpoint-enabled|buffer-menu-buffer
|button|c-annotation-face|calc-nonselected-face|calc-selected-face|calendar-month-header|calendar-today|calendar-weekday-header
|calendar-weekend-header|change-log-acknowledgement-face|change-log-acknowledgement|change-log-acknowledgment
|change-log-conditionals-face|change-log-conditionals|change-log-date-face|change-log-date|change-log-email-face|change-log-email
|change-log-file-face|change-log-file|change-log-function-face|change-log-function|change-log-list-face|change-log-list
|change-log-name-face|change-log-name|comint-highlight-input|comint-highlight-prompt|compare-windows|compilation-column-number
|compilation-error|compilation-info|compilation-line-number|compilation-mode-line-exit|compilation-mode-line-fail
|compilation-mode-line-run|compilation-warning|completions-annotations|completions-common-part|completions-first-difference
|cperl-array-face|cperl-hash-face|cperl-nonoverridable-face|css-property|css-selector|cua-global-mark|cua-rectangle-noselect
|cua-rectangle|cursor|custom-button-mouse|custom-button-pressed-unraised|custom-button-pressed|custom-button-unraised|custom-button
|custom-changed|custom-comment-tag|custom-comment|custom-documentation|custom-face-tag|custom-group-subtitle|custom-group-tag-1
|custom-group-tag|custom-invalid|custom-link|custom-modified|custom-rogue|custom-saved|custom-set|custom-state|custom-themed
|custom-variable-button|custom-variable-tag|custom-visibility|cvs-filename-face|cvs-filename|cvs-handled-face|cvs-handled
|cvs-header-face|cvs-header|cvs-marked-face|cvs-marked|cvs-msg-face|cvs-msg|cvs-need-action-face|cvs-need-action|cvs-unknown-face
|cvs-unknown|default|diary-anniversary|diary-button|diary-time|diary|diff-added-face|diff-added|diff-changed-face|diff-changed
|diff-context-face|diff-context|diff-file-header-face|diff-file-header|diff-function-face|diff-function|diff-header-face
|diff-header|diff-hunk-header-face|diff-hunk-header|diff-index-face|diff-index|diff-indicator-added|diff-indicator-changed
|diff-indicator-removed|diff-nonexistent-face|diff-nonexistent|diff-refine-added|diff-refine-change|diff-refine-changed
|diff-refine-removed|diff-removed-face|diff-removed|dired-directory|dired-flagged|dired-header|dired-ignored|dired-mark
|dired-marked|dired-perm-write|dired-symlink|dired-warning|ebrowse-default|ebrowse-file-name|ebrowse-member-attribute
|ebrowse-member-class|ebrowse-progress|ebrowse-root-class|ebrowse-tree-mark|ediff-current-diff-A|ediff-current-diff-Ancestor
|ediff-current-diff-B|ediff-current-diff-C|ediff-even-diff-A|ediff-even-diff-Ancestor|ediff-even-diff-B|ediff-even-diff-C
|ediff-fine-diff-A|ediff-fine-diff-Ancestor|ediff-fine-diff-B|ediff-fine-diff-C|ediff-odd-diff-A|ediff-odd-diff-Ancestor
|ediff-odd-diff-B|ediff-odd-diff-C|eieio-custom-slot-tag-face|eldoc-highlight-function-argument|epa-field-body
|epa-field-name|epa-mark|epa-string|epa-validity-disabled|epa-validity-high|epa-validity-low|epa-validity-medium|erc-action-face
|erc-bold-face|erc-button|erc-command-indicator-face|erc-current-nick-face|erc-dangerous-host-face|erc-default-face|erc-direct-msg-face
|erc-error-face|erc-fool-face|erc-header-line|erc-input-face|erc-inverse-face|erc-keyword-face|erc-my-nick-face|erc-my-nick-prefix-face
|erc-nick-default-face|erc-nick-msg-face|erc-nick-prefix-face|erc-notice-face|erc-pal-face|erc-prompt-face|erc-timestamp-face|erc-underline-face
|error|ert-test-result-expected|ert-test-result-unexpected|escape-glyph|eww-form-checkbox|eww-form-file|eww-form-select|eww-form-submit
|eww-form-text|eww-form-textarea|eww-invalid-certificate|eww-valid-certificate|excerpt|ffap|fg:erc-color-face0|fg:erc-color-face1
|fg:erc-color-face10|fg:erc-color-face11|fg:erc-color-face12|fg:erc-color-face13|fg:erc-color-face14|fg:erc-color-face15|fg:erc-color-face2
|fg:erc-color-face3|fg:erc-color-face4|fg:erc-color-face5|fg:erc-color-face6|fg:erc-color-face7|fg:erc-color-face8|fg:erc-color-face9
|file-name-shadow|fixed-pitch|fixed|flymake-errline|flymake-warnline|flyspell-duplicate|flyspell-incorrect|font-lock-builtin-face
|font-lock-comment-delimiter-face|font-lock-comment-face|font-lock-constant-face|font-lock-doc-face|font-lock-function-name-face
|font-lock-keyword-face|font-lock-negation-char-face|font-lock-preprocessor-face|font-lock-regexp-grouping-backslash|font-lock-regexp-grouping-construct
|font-lock-string-face|font-lock-type-face|font-lock-variable-name-face|font-lock-warning-face|fringe|glyphless-char|gnus-button
|gnus-cite-1|gnus-cite-10|gnus-cite-11|gnus-cite-2|gnus-cite-3|gnus-cite-4|gnus-cite-5|gnus-cite-6|gnus-cite-7|gnus-cite-8|gnus-cite-9
|gnus-cite-attribution-face|gnus-cite-attribution|gnus-cite-face-1|gnus-cite-face-10|gnus-cite-face-11|gnus-cite-face-2|gnus-cite-face-3
|gnus-cite-face-4|gnus-cite-face-5|gnus-cite-face-6|gnus-cite-face-7|gnus-cite-face-8|gnus-cite-face-9|gnus-emphasis-bold-italic
|gnus-emphasis-bold|gnus-emphasis-highlight-words|gnus-emphasis-italic|gnus-emphasis-strikethru|gnus-emphasis-underline-bold-italic
|gnus-emphasis-underline-bold|gnus-emphasis-underline-italic|gnus-emphasis-underline|gnus-group-mail-1-empty-face|gnus-group-mail-1-empty
|gnus-group-mail-1-face|gnus-group-mail-1|gnus-group-mail-2-empty-face|gnus-group-mail-2-empty|gnus-group-mail-2-face|gnus-group-mail-2
|gnus-group-mail-3-empty-face|gnus-group-mail-3-empty|gnus-group-mail-3-face|gnus-group-mail-3|gnus-group-mail-low-empty-face
|gnus-group-mail-low-empty|gnus-group-mail-low-face|gnus-group-mail-low|gnus-group-news-1-empty-face|gnus-group-news-1-empty|gnus-group-news-1-face
|gnus-group-news-1|gnus-group-news-2-empty-face|gnus-group-news-2-empty|gnus-group-news-2-face|gnus-group-news-2|gnus-group-news-3-empty-face
|gnus-group-news-3-empty|gnus-group-news-3-face|gnus-group-news-3|gnus-group-news-4-empty-face|gnus-group-news-4-empty|gnus-group-news-4-face
|gnus-group-news-4|gnus-group-news-5-empty-face|gnus-group-news-5-empty|gnus-group-news-5-face|gnus-group-news-5|gnus-group-news-6-empty-face
|gnus-group-news-6-empty|gnus-group-news-6-face|gnus-group-news-6|gnus-group-news-low-empty-face|gnus-group-news-low-empty|gnus-group-news-low-face
|gnus-group-news-low|gnus-header-content-face|gnus-header-content|gnus-header-from-face|gnus-header-from|gnus-header-name-face
|gnus-header-name|gnus-header-newsgroups-face|gnus-header-newsgroups|gnus-header-subject-face|gnus-header-subject|gnus-signature-face
|gnus-signature|gnus-splash-face|gnus-splash|gnus-summary-cancelled-face|gnus-summary-cancelled|gnus-summary-high-ancient-face
|gnus-summary-high-ancient|gnus-summary-high-read-face|gnus-summary-high-read|gnus-summary-high-ticked-face|gnus-summary-high-ticked
|gnus-summary-high-undownloaded-face|gnus-summary-high-undownloaded|gnus-summary-high-unread-face|gnus-summary-high-unread|gnus-summary-low-ancient-face
|gnus-summary-low-ancient|gnus-summary-low-read-face|gnus-summary-low-read|gnus-summary-low-ticked-face|gnus-summary-low-ticked
|gnus-summary-low-undownloaded-face|gnus-summary-low-undownloaded|gnus-summary-low-unread-face|gnus-summary-low-unread|gnus-summary-normal-ancient-face
|gnus-summary-normal-ancient|gnus-summary-normal-read-face|gnus-summary-normal-read|gnus-summary-normal-ticked-face|gnus-summary-normal-ticked
|gnus-summary-normal-undownloaded-face|gnus-summary-normal-undownloaded|gnus-summary-normal-unread-face|gnus-summary-normal-unread
|gnus-summary-selected-face|gnus-summary-selected|gomoku-O|gomoku-X|header-line|help-argument-name|hexl-address-region|hexl-ascii-region
|hi-black-b|hi-black-hb|hi-blue-b|hi-blue|hi-green-b|hi-green|hi-pink|hi-red-b|hi-yellow|hide-ifdef-shadow|highlight-changes-delete-face
|highlight-changes-delete|highlight-changes-face|highlight-changes|highlight|hl-line|holiday|icomplete-first-match|idlwave-help-link
|idlwave-shell-bp|idlwave-shell-disabled-bp|idlwave-shell-electric-stop-line|idlwave-shell-pending-electric-stop|idlwave-shell-pending-stop
|ido-first-match|ido-incomplete-regexp|ido-indicator|ido-only-match|ido-subdir|ido-virtual|info-header-node|info-header-xref|info-index-match
|info-menu-5|info-menu-header|info-menu-star|info-node|info-title-1|info-title-2|info-title-3|info-title-4|info-xref|isearch-fail|isearch-lazy-highlight-face
|isearch|iswitchb-current-match|iswitchb-invalid-regexp|iswitchb-single-match|iswitchb-virtual-matches|italic|landmark-font-lock-face-O
|landmark-font-lock-face-X|lazy-highlight|ld-script-location-counter|link-visited|link|log-edit-header|log-edit-summary|log-edit-unknown-header
|log-view-file-face|log-view-file|log-view-message-face|log-view-message|makefile-makepp-perl|makefile-shell|makefile-space-face
|makefile-space|makefile-targets|match|menu|message-cited-text-face|message-cited-text|message-header-cc-face|message-header-cc|message-header-name-face
|message-header-name|message-header-newsgroups-face|message-header-newsgroups|message-header-other-face|message-header-other|message-header-subject-face
|message-header-subject|message-header-to-face|message-header-to|message-header-xheader-face|message-header-xheader|message-mml-face
|message-mml|message-separator-face|message-separator|mh-folder-address|mh-folder-blacklisted|mh-folder-body|mh-folder-cur-msg-number
|mh-folder-date|mh-folder-deleted|mh-folder-followup|mh-folder-msg-number|mh-folder-refiled|mh-folder-sent-to-me-hint|mh-folder-sent-to-me-sender
|mh-folder-subject|mh-folder-tick|mh-folder-to|mh-folder-whitelisted|mh-letter-header-field|mh-search-folder|mh-show-cc|mh-show-date
|mh-show-from|mh-show-header|mh-show-pgg-bad|mh-show-pgg-good|mh-show-pgg-unknown|mh-show-signature|mh-show-subject|mh-show-to|mh-speedbar-folder-with-unseen-messages
|mh-speedbar-folder|mh-speedbar-selected-folder-with-unseen-messages|mh-speedbar-selected-folder|minibuffer-prompt|mm-command-output
|mm-uu-extract|mode-line-buffer-id|mode-line-emphasis|mode-line-highlight|mode-line-inactive|mode-line|modeline-buffer-id|modeline-highlight
|modeline-inactive|mouse|mpuz-solved|mpuz-text|mpuz-trivial|mpuz-unsolved|newsticker-date-face|newsticker-default-face|newsticker-enclosure-face
|newsticker-extra-face|newsticker-feed-face|newsticker-immortal-item-face|newsticker-new-item-face|newsticker-obsolete-item-face
|newsticker-old-item-face|newsticker-statistics-face|newsticker-treeview-face|newsticker-treeview-immortal-face|newsticker-treeview-new-face
|newsticker-treeview-obsolete-face|newsticker-treeview-old-face|newsticker-treeview-selection-face|next-error|nobreak-space|nxml-attribute-colon
|nxml-attribute-local-name|nxml-attribute-prefix|nxml-attribute-value-delimiter|nxml-attribute-value|nxml-cdata-section-CDATA
|nxml-cdata-section-content|nxml-cdata-section-delimiter|nxml-char-ref-delimiter|nxml-char-ref-number|nxml-comment-content|nxml-comment-delimiter
|nxml-delimited-data|nxml-delimiter|nxml-element-colon|nxml-element-local-name|nxml-element-prefix|nxml-entity-ref-delimiter|nxml-entity-ref-name
|nxml-glyph|nxml-hash|nxml-heading|nxml-markup-declaration-delimiter|nxml-name|nxml-namespace-attribute-colon|nxml-namespace-attribute-prefix
|nxml-namespace-attribute-value-delimiter|nxml-namespace-attribute-value|nxml-namespace-attribute-xmlns|nxml-outline-active-indicator
|nxml-outline-ellipsis|nxml-outline-indicator|nxml-processing-instruction-content|nxml-processing-instruction-delimiter|nxml-processing-instruction-target
|nxml-prolog-keyword|nxml-prolog-literal-content|nxml-prolog-literal-delimiter|nxml-ref|nxml-tag-delimiter|nxml-tag-slash|nxml-text
|octave-function-comment-block|org-agenda-calendar-event|org-agenda-calendar-sexp|org-agenda-clocking|org-agenda-column-dateline
|org-agenda-current-time|org-agenda-date-today|org-agenda-date-weekend|org-agenda-date|org-agenda-diary|org-agenda-dimmed-todo-face
|org-agenda-done|org-agenda-filter-category|org-agenda-filter-regexp|org-agenda-filter-tags|org-agenda-restriction-lock|org-agenda-structure
|org-archived|org-block-background|org-block-begin-line|org-block-end-line|org-block|org-checkbox-statistics-done|org-checkbox-statistics-todo
|org-checkbox|org-clock-overlay|org-code|org-column-title|org-column|org-date-selected|org-date|org-default|org-document-info-keyword
|org-document-info|org-document-title|org-done|org-drawer|org-ellipsis|org-footnote|org-formula|org-headline-done|org-hide|org-latex-and-related
|org-level-1|org-level-2|org-level-3|org-level-4|org-level-5|org-level-6|org-level-7|org-level-8|org-link|org-list-dt|org-macro|org-meta-line
|org-mode-line-clock-overrun|org-mode-line-clock|org-priority|org-property-value|org-quote|org-scheduled-previously|org-scheduled-today
|org-scheduled|org-sexp-date|org-special-keyword|org-table|org-tag-group|org-tag|org-target|org-time-grid|org-todo|org-upcoming-deadline
|org-verbatim|org-verse|org-warning|outline-1|outline-2|outline-3|outline-4|outline-5|outline-6|outline-7|outline-8|proced-mark|proced-marked
|proced-sort-header|pulse-highlight-face|pulse-highlight-start-face|query-replace|rcirc-bright-nick|rcirc-dim-nick|rcirc-keyword
|rcirc-my-nick|rcirc-nick-in-message-full-line|rcirc-nick-in-message|rcirc-other-nick|rcirc-prompt|rcirc-server-prefix|rcirc-server
|rcirc-timestamp|rcirc-track-keyword|rcirc-track-nick|rcirc-url|reb-match-0|reb-match-1|reb-match-2|reb-match-3|rectangle-preview-face
|region|rmail-header-name|rmail-highlight|rng-error|rst-adornment|rst-block|rst-comment|rst-definition|rst-directive|rst-emphasis1
|rst-emphasis2|rst-external|rst-level-1|rst-level-2|rst-level-3|rst-level-4|rst-level-5|rst-level-6|rst-literal|rst-reference|rst-transition
|ruler-mode-column-number|ruler-mode-comment-column|ruler-mode-current-column|ruler-mode-default|ruler-mode-fill-column|ruler-mode-fringes
|ruler-mode-goal-column|ruler-mode-margins|ruler-mode-pad|ruler-mode-tab-stop|scroll-bar|secondary-selection|semantic-highlight-edits-face
|semantic-highlight-func-current-tag-face|semantic-unmatched-syntax-face|senator-momentary-highlight-face|sgml-namespace|sh-escaped-newline
|sh-heredoc-face|sh-heredoc|sh-quoted-exec|shadow|show-paren-match-face|show-paren-match|show-paren-mismatch-face|show-paren-mismatch
|shr-link|shr-strike-through|smerge-base-face|smerge-base|smerge-markers-face|smerge-markers|smerge-mine-face|smerge-mine|smerge-other-face
|smerge-other|smerge-refined-added|smerge-refined-change|smerge-refined-changed|smerge-refined-removed|speedbar-button-face|speedbar-directory-face
|speedbar-file-face|speedbar-highlight-face|speedbar-selected-face|speedbar-separator-face|speedbar-tag-face|srecode-separator-face
|strokes-char|subscript|success|superscript|table-cell|tcl-escaped-newline|term-bold|term-color-black|term-color-blue|term-color-cyan
|term-color-green|term-color-magenta|term-color-red|term-color-white|term-color-yellow|term-underline|term|testcover-1value|testcover-nohits
|tex-math-face|tex-math|tex-verbatim-face|tex-verbatim|texinfo-heading-face|texinfo-heading|tmm-inactive|todo-archived-only|todo-button
|todo-category-string|todo-comment|todo-date|todo-diary-expired|todo-done-sep|todo-done|todo-key-prompt|todo-mark|todo-nondiary|todo-prefix-string
|todo-search|todo-sorted-column|todo-time|todo-top-priority|tool-bar|tooltip|trailing-whitespace|tty-menu-disabled-face|tty-menu-enabled-face
|tty-menu-selected-face|underline|variable-pitch|vc-conflict-state|vc-edited-state|vc-locally-added-state|vc-locked-state|vc-missing-state
|vc-needs-update-state|vc-removed-state|vc-state-base-face|vc-up-to-date-state|vcursor|vera-font-lock-function|vera-font-lock-interface
|vera-font-lock-number|verilog-font-lock-ams-face|verilog-font-lock-grouping-keywords-face|verilog-font-lock-p1800-face|verilog-font-lock-translate-off-face
|vertical-border|vhdl-font-lock-attribute-face|vhdl-font-lock-directive-face|vhdl-font-lock-enumvalue-face|vhdl-font-lock-function-face
|vhdl-font-lock-generic-\\/constant-face|vhdl-font-lock-prompt-face|vhdl-font-lock-reserved-words-face|vhdl-font-lock-translate-off-face
|vhdl-font-lock-type-face|vhdl-font-lock-variable-face|vhdl-speedbar-architecture-face|vhdl-speedbar-architecture-selected-face
|vhdl-speedbar-configuration-face|vhdl-speedbar-configuration-selected-face|vhdl-speedbar-entity-face|vhdl-speedbar-entity-selected-face
|vhdl-speedbar-instantiation-face|vhdl-speedbar-instantiation-selected-face|vhdl-speedbar-library-face|vhdl-speedbar-package-face
|vhdl-speedbar-package-selected-face|vhdl-speedbar-subprogram-face|viper-minibuffer-emacs|viper-minibuffer-insert|viper-minibuffer-vi
|viper-replace-overlay|viper-search|warning|which-func|whitespace-big-indent|whitespace-empty|whitespace-hspace|whitespace-indentation
|whitespace-line|whitespace-newline|whitespace-space-after-tab|whitespace-space-before-tab|whitespace-space|whitespace-tab|whitespace-trailing
|widget-button-face|widget-button-pressed-face|widget-button-pressed|widget-button|widget-documentation-face|widget-documentation
|widget-field-face|widget-field|widget-inactive-face|widget-inactive|widget-single-line-field-face|widget-single-line-field|window-divider-first-pixel
|window-divider-last-pixel|window-divider|woman-addition-face|woman-addition|woman-bold-face|woman-bold|woman-italic-face|woman-italic
|woman-unknown-face|woman-unknown)
(?=[\\s()]|$)\\b"""
# Emacs standard library
stdlib:
patterns: [{
# 2018/09/06: Missing additions and updates for Emacs 26.2 [Part 1 / 7]
name: "support.function.emacs.lisp"
match: """(?x)(?<=[()]|^)
(`--pcase-macroexpander|Buffer-menu-unmark-all-buffers|Buffer-menu-unmark-all|Info-node-description|aa2u-mark-as-text|aa2u-mark-rectangle-as-text
|aa2u-rectangle|aa2u|ada-find-file|ada-header|ada-mode|add-abbrev|add-change-log-entry-other-window|add-change-log-entry|add-dir-local-variable
|add-file-local-variable-prop-line|add-file-local-variable|add-global-abbrev|add-log-current-defun|add-minor-mode|add-mode-abbrev|add-submenu
|add-timeout|add-to-coding-system-list|add-to-list--anon-cmacro|add-variable-watcher|adoc-mode|advertised-undo|advice--add-function
|advice--buffer-local|advice--called-interactively-skip|advice--car|advice--cd\\*r|advice--cdr|advice--defalias-fset|advice--interactive-form
|advice--make-1|advice--make-docstring|advice--make-interactive-form|advice--make|advice--member-p|advice--normalize-place|advice--normalize
|advice--props|advice--p|advice--remove-function|advice--set-buffer-local|advice--strip-macro|advice--subst-main|advice--symbol-function
|advice--tweak|advice--where|after-insert-file-set-coding|aggressive-indent--extend-end-to-whole-sexps|aggressive-indent--indent-current-balanced-line
|aggressive-indent--indent-if-changed|aggressive-indent--keep-track-of-changes|aggressive-indent--local-electric
|aggressive-indent--proccess-changed-list-and-indent|aggressive-indent--run-user-hooks|aggressive-indent--softly-indent-defun
|aggressive-indent--softly-indent-region-and-on|aggressive-indent-bug-report|aggressive-indent-global-mode|aggressive-indent-indent-defun
|aggressive-indent-indent-region-and-on|aggressive-indent-mode-set-explicitly|aggressive-indent-mode|align-current|align-entire|align-highlight-rule
|align-newline-and-indent|align-regexp|align-unhighlight-rule|align|alist-get|all-threads|allout-auto-activation-helper|allout-mode-p|allout-mode
|allout-setup|allout-widgets-mode|allout-widgets-setup|alter-text-property|and-let\\*|ange-ftp-completion-hook-function|apache-mode
|apropos-local-value|apropos-local-variable|arabic-shape-gstring|assoc-delete-all|auth-source--decode-octal-string|auth-source--symbol-keyword
|auth-source-backend--anon-cmacro|auth-source-backend--eieio-childp|auth-source-backends-parser-file|auth-source-backends-parser-macos-keychain
|auth-source-backends-parser-secrets|auth-source-json-check|auth-source-json-search|auth-source-pass-enable|auth-source-secrets-saver
|auto-save-visited-mode|backtrace-frame--internal|backtrace-frames|backward-to-word|backward-word-strictly|battery-upower-prop|battery-upower
|beginning-of-defun--in-emptyish-line-p|beginning-of-defun-comments|bf-help-describe-symbol|bf-help-mode|bf-help-setup|bignump|bison-mode
|blink-cursor--rescan-frames|blink-cursor--should-blink|blink-cursor--start-idle-timer|blink-cursor--start-timer|bookmark-set-no-overwrite
|brainfuck-mode|browse-url-conkeror|buffer-hash|bufferpos-to-filepos|byte-compile--function-signature|byte-compile--log-warning-for-byte-compile
|byte-compile-cond-jump-table-info|byte-compile-cond-jump-table|byte-compile-cond-vars|byte-compile-define-symbol-prop|byte-compile-file-form-defvar-function
|byte-compile-file-form-make-obsolete|byte-opt--arith-reduce|byte-opt--portable-numberp|byte-optimize-1-|byte-optimize-1\\+|byte-optimize-memq
|c-or-c\\+\\+-mode|call-shell-region|cancel-debug-on-variable-change|cancel-debug-watch|capitalize-dwim|cconv--convert-funcbody|cconv--remap-llv
|char-fold-to-regexp|char-from-name|checkdoc-file|checkdoc-package-keywords|cl--assertion-failed|cl--class-docstring--cmacro|cl--class-docstring
|cl--class-index-table--cmacro|cl--class-index-table|cl--class-name--cmacro|cl--class-name|cl--class-p--cmacro|cl--class-parents--cmacro
|cl--class-parents|cl--class-p|cl--class-slots--cmacro|cl--class-slots|cl--copy-slot-descriptor-1|cl--copy-slot-descriptor|cl--defstruct-predicate
|cl--describe-class-slots|cl--describe-class-slot|cl--describe-class|cl--do-&aux|cl--find-class|cl--generic-arg-specializer
|cl--generic-build-combined-method|cl--generic-cache-miss|cl--generic-class-parents|cl--generic-derived-specializers|cl--generic-describe
|cl--generic-dispatches--cmacro|cl--generic-dispatches|cl--generic-fgrep|cl--generic-generalizer-name--cmacro|cl--generic-generalizer-name
|cl--generic-generalizer-p--cmacro|cl--generic-generalizer-priority--cmacro|cl--generic-generalizer-priority|cl--generic-generalizer-p
|cl--generic-generalizer-specializers-function--cmacro|cl--generic-generalizer-specializers-function|cl--generic-generalizer-tagcode-function--cmacro
|cl--generic-generalizer-tagcode-function|cl--generic-get-dispatcher|cl--generic-isnot-nnm-p|cl--generic-lambda|cl--generic-load-hist-format
|cl--generic-make--cmacro|cl--generic-make-defmethod-docstring|cl--generic-make-function|cl--generic-make-method--cmacro|cl--generic-make-method
|cl--generic-make-next-function|cl--generic-make|cl--generic-member-method|cl--generic-method-documentation|cl--generic-method-files
|cl--generic-method-function--cmacro|cl--generic-method-function|cl--generic-method-info|cl--generic-method-qualifiers--cmacro
|cl--generic-method-qualifiers|cl--generic-method-specializers--cmacro|cl--generic-method-specializers|cl--generic-method-table--cmacro
|cl--generic-method-table|cl--generic-method-uses-cnm--cmacro|cl--generic-method-uses-cnm|cl--generic-name--cmacro|cl--generic-name)
(?=[\\s()]|$)"""
},{
# [Part 2 / 7]
name: "support.function.emacs.lisp"
match: """(?x)(?<=[()]|^)
(cl--generic-no-next-method-function|cl--generic-options--cmacro|cl--generic-options|cl--generic-search-method|cl--generic-specializers-apply-to-type-p
|cl--generic-split-args|cl--generic-standard-method-combination|cl--generic-struct-specializers|cl--generic-struct-tag|cl--generic-with-memoization
|cl--generic|cl--make-random-state--cmacro|cl--make-random-state|cl--make-slot-descriptor--cmacro|cl--make-slot-descriptor|cl--make-slot-desc
|cl--old-struct-type-of|cl--pcase-mutually-exclusive-p|cl--plist-remove|cl--print-table|cl--prog|cl--random-state-i--cmacro|cl--random-state-i
|cl--random-state-j--cmacro|cl--random-state-j|cl--random-state-vec--cmacro|cl--random-state-vec|cl--slot-descriptor-initform--cmacro
|cl--slot-descriptor-initform|cl--slot-descriptor-name--cmacro|cl--slot-descriptor-name|cl--slot-descriptor-props--cmacro|cl--slot-descriptor-props
|cl--slot-descriptor-type--cmacro|cl--slot-descriptor-type|cl--struct-all-parents|cl--struct-cl--generic-method-p--cmacro|cl--struct-cl--generic-method-p
|cl--struct-cl--generic-p--cmacro|cl--struct-cl--generic-p|cl--struct-class-children-sym--cmacro|cl--struct-class-children-sym
|cl--struct-class-docstring--cmacro|cl--struct-class-docstring|cl--struct-class-index-table--cmacro|cl--struct-class-index-table
|cl--struct-class-name--cmacro|cl--struct-class-named--cmacro|cl--struct-class-named|cl--struct-class-name|cl--struct-class-p--cmacro
|cl--struct-class-parents--cmacro|cl--struct-class-parents|cl--struct-class-print--cmacro|cl--struct-class-print|cl--struct-class-p
|cl--struct-class-slots--cmacro|cl--struct-class-slots|cl--struct-class-tag--cmacro|cl--struct-class-tag|cl--struct-class-type--cmacro|cl--struct-class-type
|cl--struct-get-class|cl--struct-name-p|cl--struct-new-class--cmacro|cl--struct-new-class|cl--struct-register-child|cl-call-next-method|cl-defgeneric
|cl-defmethod|cl-describe-type|cl-find-class|cl-find-method|cl-generic-all-functions|cl-generic-apply|cl-generic-call-method|cl-generic-combine-methods
|cl-generic-current-method-specializers|cl-generic-define-context-rewriter|cl-generic-define-generalizer|cl-generic-define-method|cl-generic-define
|cl-generic-ensure-function|cl-generic-function-options|cl-generic-generalizers|cl-generic-make-generalizer--cmacro|cl-generic-make-generalizer|cl-generic-p
|cl-iter-defun|cl-method-qualifiers|cl-next-method-p|cl-no-applicable-method|cl-no-next-method|cl-no-primary-method|cl-old-struct-compat-mode
|cl-prin1-to-string|cl-prin1|cl-print-expand-ellipsis|cl-print-object|cl-print-to-string-with-limit|cl-prog\\*|cl-prog|cl-random-state-p--cmacro
|cl-slot-descriptor-p--cmacro|cl-slot-descriptor-p|cl-struct--pcase-macroexpander|cl-struct-define|cl-struct-p--cmacro|cl-struct-p
|cl-struct-slot-value--inliner|cl-typep--inliner|clear-composition-cache|cmake-command-run|cmake-help-command|cmake-help-list-commands|cmake-help-module
|cmake-help-property|cmake-help-variable|cmake-help|cmake-mode|coffee-mode|combine-change-calls-1|combine-change-calls|comment-line|comment-make-bol-ws
|comment-quote-nested-default|comment-region-default-1|completion--category-override|completion-pcm--pattern-point-idx|condition-mutex|condition-name
|condition-notify|condition-variable-p|condition-wait|conf-desktop-mode|conf-toml-mode|conf-toml-recognize-section|connection-local-set-profile-variables
|connection-local-set-profiles|copy-cl--generic-generalizer|copy-cl--generic-method|copy-cl--generic|copy-from-above-command|copy-lisp-indent-state
|copy-xref-elisp-location|copy-yas--exit|copy-yas--field|copy-yas--mirror|copy-yas--snippet|copy-yas--table|copy-yas--template|css-lookup-symbol
|csv-mode|cuda-mode|current-thread|cursor-intangible-mode|cursor-sensor-mode|custom--should-apply-setting|debug-on-variable-change|debug-watch
|default-font-width|define-symbol-prop|define-thing-chars|defined-colors-with-face-attributes|delete-selection-uses-region-p|describe-char-eldoc
|describe-symbol|dir-locals--all-files|dir-locals-read-from-dir|dired--align-all-files|dired--need-align-p|dired-create-empty-file|dired-do-compress-to
|dired-do-find-regexp-and-replace|dired-do-find-regexp|dired-mouse-find-file-other-frame|dired-mouse-find-file|dired-omit-mode|display-buffer--maybe-at-bottom
|display-buffer--maybe-pop-up-frame|display-buffer--maybe-pop-up-window|display-buffer-in-child-frame|display-buffer-reuse-mode-window
|display-buffer-use-some-frame|display-line-numbers-mode|dna-add-hooks|dna-isearch-forward|dna-mode|dna-reverse-complement-region|dockerfile-build-buffer
|dockerfile-build-no-cache-buffer|dockerfile-mode|dolist-with-progress-reporter|dotenv-mode|downcase-dwim|dyalog-ediff-forward-word|dyalog-editor-connect
|dyalog-fix-altgr-chars|dyalog-mode|dyalog-session-connect|easy-mmode--mode-docstring|eieio--add-new-slot|eieio--c3-candidate|eieio--c3-merge-lists
|eieio--class-children--cmacro|eieio--class-class-allocation-values--cmacro|eieio--class-class-slots--cmacro|eieio--class-class-slots|eieio--class-constructor
|eieio--class-default-object-cache--cmacro|eieio--class-docstring--cmacro|eieio--class-docstring|eieio--class-index-table--cmacro|eieio--class-index-table
|eieio--class-initarg-tuples--cmacro|eieio--class-make--cmacro|eieio--class-make|eieio--class-method-invocation-order|eieio--class-name--cmacro
|eieio--class-name|eieio--class-object|eieio--class-option-assoc|eieio--class-options--cmacro|eieio--class-option|eieio--class-p--cmacro)
(?=[\\s()]|$)"""
},{
# [Part 3 / 7]
name: "support.function.emacs.lisp"
match: """(?x)(?<=[()]|^)
(eieio--class-parents--cmacro|eieio--class-parents|eieio--class-precedence-bfs|eieio--class-precedence-c3|eieio--class-precedence-dfs
|eieio--class-precedence-list|eieio--class-print-name|eieio--class-p|eieio--class-slot-initarg|eieio--class-slot-name-index|eieio--class-slots--cmacro
|eieio--class-slots|eieio--class\\/struct-parents|eieio--generic-subclass-specializers|eieio--initarg-to-attribute|eieio--object-class-tag
|eieio--pcase-macroexpander|eieio--perform-slot-validation-for-default|eieio--perform-slot-validation|eieio--slot-name-index|eieio--slot-override
|eieio--validate-class-slot-value|eieio--validate-slot-value|eieio-change-class|eieio-class-slots|eieio-default-superclass--eieio-childp
|eieio-defclass-internal|eieio-make-child-predicate|eieio-make-class-predicate|eieio-oref--anon-cmacro|eieio-pcase-slot-index-from-index-table
|eieio-pcase-slot-index-table|eieio-slot-descriptor-name|eldoc--supported-p|eldoc-docstring-format-sym-doc|eldoc-mode-set-explicitly
|electric-pair--balance-info|electric-pair--insert|electric-pair--inside-string-p|electric-pair--skip-whitespace|electric-pair--syntax-ppss
|electric-pair--unbalanced-strings-p|electric-pair--with-uncached-syntax|electric-pair-conservative-inhibit|electric-pair-default-inhibit
|electric-pair-default-skip-self|electric-pair-delete-pair|electric-pair-inhibit-if-helps-balance|electric-pair-local-mode
|electric-pair-post-self-insert-function|electric-pair-skip-if-helps-balance|electric-pair-syntax-info|electric-pair-will-use-region
|electric-quote-local-mode|electric-quote-mode|electric-quote-post-self-insert-function|elisp--font-lock-backslash|elisp--font-lock-flush-elisp-buffers
|elisp--xref-backend|elisp--xref-make-xref|elisp-flymake--batch-compile-for-flymake|elisp-flymake--byte-compile-done|elisp-flymake-byte-compile
|elisp-flymake-checkdoc|elisp-function-argstring|elisp-get-fnsym-args-string|elisp-get-var-docstring|elisp-load-path-roots|emacs-repository-version-git
|enh-ruby-mode|epg-config--make-gpg-configuration|epg-config--make-gpgsm-configuration|epg-context-error-buffer--cmacro|epg-context-error-buffer
|epg-find-configuration|erlang-compile|erlang-edoc-mode|erlang-find-tag-other-window|erlang-find-tag|erlang-mode|erlang-shell|erldoc-apropos
|erldoc-browse-topic|erldoc-browse|erldoc-eldoc-function|etags--xref-backend|eval-expression-get-print-arguments
|event-line-count|face-list-p|facemenu-set-charset|faces--attribute-at-point|faceup-clean-buffer|faceup-defexplainer|faceup-render-view-buffer
|faceup-view-buffer|faceup-write-file|fic-mode|file-attribute-access-time|file-attribute-collect|file-attribute-device-number|file-attribute-group-id
|file-attribute-inode-number|file-attribute-link-number|file-attribute-modes|file-attribute-modification-time|file-attribute-size
|file-attribute-status-change-time|file-attribute-type|file-attribute-user-id|file-local-name|file-name-case-insensitive-p|file-name-quoted-p
|file-name-quote|file-name-unquote|file-system-info|filepos-to-bufferpos--dos|filepos-to-bufferpos|files--ask-user-about-large-file
|files--ensure-directory|files--force|files--make-magic-temp-file|files--message|files--name-absolute-system-p|files--splice-dirname-file
|fill-polish-nobreak-p|find-function-on-key-other-frame|find-function-on-key-other-window|find-library-other-frame|find-library-other-window
|fixnump|flymake-cc|flymake-diag-region|flymake-diagnostics|flymake-make-diagnostic|follow-scroll-down-window|follow-scroll-up-window
|font-lock--remove-face-from-text-property|form-feed-mode|format-message|forth-block-mode|forth-eval-defun|forth-eval-last-expression-display-output
|forth-eval-last-expression|forth-eval-region|forth-eval|forth-interaction-send|forth-kill|forth-load-file|forth-mode|forth-restart|forth-see
|forth-switch-to-output-buffer|forth-switch-to-source-buffer|forth-words|fortune-message|forward-to-word|forward-word-strictly|frame--size-history
|frame-after-make-frame|frame-ancestor-p|frame-creation-function|frame-edges|frame-focus-state|frame-geometry|frame-inner-height|frame-inner-width
|frame-internal-border-width|frame-list-z-order|frame-monitor-attribute|frame-monitor-geometry|frame-monitor-workarea|frame-native-height
|frame-native-width|frame-outer-height|frame-outer-width|frame-parent|frame-position|frame-restack|frame-size-changed-p|func-arity
|generic--normalize-comments|generic-bracket-support|generic-mode-set-comments|generic-set-comment-syntax|generic-set-comment-vars
|get-variable-watchers|gfm-mode|gfm-view-mode|ghc-core-create-core|ghc-core-mode|ghci-script-mode|git-commit--save-and-exit|git-commit-ack
|git-commit-cc|git-commit-committer-email|git-commit-committer-name|git-commit-commit|git-commit-find-pseudo-header-position|git-commit-first-env-var
|git-commit-font-lock-diff|git-commit-git-config-var|git-commit-insert-header-as-self|git-commit-insert-header|git-commit-mode|git-commit-reported
|git-commit-review|git-commit-signoff|git-commit-test|git-define-git-commit-self|git-define-git-commit|gitattributes-mode--highlight-1st-field
|gitattributes-mode-backward-field|gitattributes-mode-eldoc|gitattributes-mode-forward-field|gitattributes-mode-help|gitattributes-mode-menu