on master help sign in
Add performance patch for Makefile syntax
0ecc949sharkdp
CHANGELOG.md+1
@@ -10,6 +10,7 @@
10## Bugfixes
10## Bugfixes
11
11
12- Performance problems with C# source code have been fixed, see #677 (@keith-hall)
12- Performance problems with C# source code have been fixed, see #677 (@keith-hall)
13+- Performance problems with Makefiles have been fixed, see #750 (@keith-hall)
13
14
14## Other
15## Other
15
16
assets/patches/Makefile.sublime-syntax.patchnew file+81
@@ -0,0 +1,81 @@
1+diff --git syntaxes/01_Packages/Makefile/Makefile.sublime-syntax syntaxes/01_Packages/Makefile/Makefile.sublime-syntax
2+index 3cc3a97e..0c7a3f24 100644
3+--- syntaxes/01_Packages/Makefile/Makefile.sublime-syntax
4++++ syntaxes/01_Packages/Makefile/Makefile.sublime-syntax
5+@@ -44,64 +44,50 @@ variables:
6+ # variable substitutions anywhere. We try to remedy this by hacking in a
7+ # regex that matches up to four levels of nested parentheses, and ignores
8+ # whatever's inside the parentheses.
9+- nps: '[^()]*'
10+- open: '(?:\('
11+- close: '\))?' # ignore this invalid.illegal
12++ nps_unnested: '[^()]*'
13++ nps: '[^()]*(?=[()])'
14++ open: '(?:{{nps}}\('
15++ close: '\){{nps_unnested}})?' # ignore this invalid.illegal
16+ just_eat: | # WARNING: INSANITY FOLLOWS!
17+- (?x) # ignore whitespace in this regex
18+- {{nps}} # level 0
19++ (?x)(?: # ignore whitespace in this regex
20+ {{open}} # start level 1 __
21+- {{nps}} # level 1 _______ /*_>-<
22+ {{open}} # start level 2 ___/ _____ \__/ /
23+- {{nps}} # level 2 <____/ \____/
24+ {{open}} # start level 3 is like snek... (by Valerie Haecky)
25+- {{nps}} # level 3
26+ {{open}} # start level 4
27+ {{nps}} # level 4
28+ {{close}} # end level 4
29+- {{nps}} # level 3
30+ {{close}} # end level 3
31+- {{nps}} # level 2
32+ {{open}} # start level 3
33+- {{nps}} # level 3
34+ {{open}} # start level 4
35+ {{nps}} # level 4
36+ {{close}} # end level 4
37+- {{nps}} # level 3
38+ {{close}} # end level 3
39+- {{nps}} # level 2
40++ {{nps}}
41+ {{close}} # end level 2
42+- {{nps}} # level 1
43+ {{open}} # start level 2
44+- {{nps}} # level 2
45+ {{open}} # start level 3
46+- {{nps}} # level 3
47+ {{open}} # start level 4
48+ {{nps}} # level 4
49+ {{close}} # end level 4
50+- {{nps}} # level 3
51++ {{nps}}
52+ {{close}} # end level 3
53+- {{nps}} # level 2
54+ {{open}} # start level 3
55+- {{nps}} # level 3
56+ {{open}} # start level 4
57+ {{nps}} # level 4
58+ {{close}} # end level 4
59+- {{nps}} # level 3
60++ {{nps}}
61+ {{close}} # end level 3
62+- {{nps}} # level 2
63+ {{open}} # start level 3
64+- {{nps}} # level 3
65+ {{open}} # start level 4
66+ {{nps}} # level 4
67+ {{close}} # end level 4
68+- {{nps}} # level 3
69++ {{nps}}
70+ {{close}} # end level 3
71+- {{nps}} # level 2
72++ {{nps}}
73+ {{close}} # end level 2
74+- {{nps}} # level 1
75++ {{nps}}
76+ {{close}} # end level 1
77+- {{nps}} # level 0
78++ |{{nps_unnested}})
79+ rule_lookahead: '{{just_eat}}{{ruleassign}}{{just_eat}}'
80+
81+ var_lookahead_base: '{{just_eat}}({{varassign}}|{{shellassign}}){{just_eat}}'