rouge 4.6.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +11 -4
  3. data/bin/rougify +3 -4
  4. data/lib/rouge/cli.rb +7 -10
  5. data/lib/rouge/demos/abap +30 -4
  6. data/lib/rouge/demos/dylan +8 -0
  7. data/lib/rouge/demos/gjs +23 -0
  8. data/lib/rouge/demos/gts +36 -0
  9. data/lib/rouge/demos/kick_assembler +14 -0
  10. data/lib/rouge/demos/pdf +29 -0
  11. data/lib/rouge/demos/thrift +15 -0
  12. data/lib/rouge/demos/veryl +24 -0
  13. data/lib/rouge/eager.rb +3 -0
  14. data/lib/rouge/formatters/html.rb +8 -1
  15. data/lib/rouge/formatters/html_debug.rb +16 -0
  16. data/lib/rouge/formatters/html_legacy.rb +15 -1
  17. data/lib/rouge/formatters/html_legacy_table.rb +57 -0
  18. data/lib/rouge/formatters/html_line_highlighter.rb +11 -4
  19. data/lib/rouge/formatters/html_line_table.rb +8 -3
  20. data/lib/rouge/formatters/html_linewise.rb +11 -2
  21. data/lib/rouge/formatters/html_pygments.rb +6 -1
  22. data/lib/rouge/formatters/html_table.rb +47 -21
  23. data/lib/rouge/formatters/terminal256.rb +3 -3
  24. data/lib/rouge/formatters/tex.rb +1 -1
  25. data/lib/rouge/guesser.rb +1 -1
  26. data/lib/rouge/guessers/disambiguation.rb +2 -2
  27. data/lib/rouge/guessers/glob_mapping.rb +2 -2
  28. data/lib/rouge/guessers/modeline.rb +2 -2
  29. data/lib/rouge/lexer.rb +40 -21
  30. data/lib/rouge/lexers/abap/builtins.rb +187 -0
  31. data/lib/rouge/lexers/abap.rb +70 -178
  32. data/lib/rouge/lexers/ada.rb +1 -1
  33. data/lib/rouge/lexers/apache/keywords.rb +3 -11
  34. data/lib/rouge/lexers/apache.rb +25 -24
  35. data/lib/rouge/lexers/apex.rb +2 -2
  36. data/lib/rouge/lexers/apiblueprint.rb +2 -2
  37. data/lib/rouge/lexers/bicep.rb +2 -2
  38. data/lib/rouge/lexers/biml.rb +36 -9
  39. data/lib/rouge/lexers/brightscript.rb +3 -4
  40. data/lib/rouge/lexers/c.rb +9 -5
  41. data/lib/rouge/lexers/cobol.rb +1 -1
  42. data/lib/rouge/lexers/console.rb +11 -5
  43. data/lib/rouge/lexers/cpp.rb +10 -12
  44. data/lib/rouge/lexers/crystal.rb +1 -1
  45. data/lib/rouge/lexers/css.rb +21 -2
  46. data/lib/rouge/lexers/cuda.rb +4 -4
  47. data/lib/rouge/lexers/cython.rb +26 -50
  48. data/lib/rouge/lexers/dafny.rb +1 -1
  49. data/lib/rouge/lexers/dart.rb +2 -0
  50. data/lib/rouge/lexers/datastudio.rb +1 -1
  51. data/lib/rouge/lexers/digdag.rb +2 -3
  52. data/lib/rouge/lexers/dylan.rb +109 -0
  53. data/lib/rouge/lexers/ecl.rb +3 -3
  54. data/lib/rouge/lexers/elixir.rb +14 -9
  55. data/lib/rouge/lexers/escape.rb +1 -1
  56. data/lib/rouge/lexers/factor.rb +1 -1
  57. data/lib/rouge/lexers/freefem.rb +2 -2
  58. data/lib/rouge/lexers/ghc_cmm.rb +1 -1
  59. data/lib/rouge/lexers/ghc_core.rb +1 -1
  60. data/lib/rouge/lexers/gherkin/keywords.rb +10 -6
  61. data/lib/rouge/lexers/gherkin.rb +28 -26
  62. data/lib/rouge/lexers/gjs.rb +39 -0
  63. data/lib/rouge/lexers/glsl/builtins.rb +17 -0
  64. data/lib/rouge/lexers/glsl.rb +50 -113
  65. data/lib/rouge/lexers/go.rb +8 -6
  66. data/lib/rouge/lexers/gradle.rb +2 -2
  67. data/lib/rouge/lexers/groovy.rb +6 -0
  68. data/lib/rouge/lexers/gts.rb +39 -0
  69. data/lib/rouge/lexers/hack.rb +4 -6
  70. data/lib/rouge/lexers/haxe.rb +2 -2
  71. data/lib/rouge/lexers/hlsl.rb +6 -6
  72. data/lib/rouge/lexers/hocon.rb +2 -2
  73. data/lib/rouge/lexers/hql.rb +15 -19
  74. data/lib/rouge/lexers/idris.rb +1 -1
  75. data/lib/rouge/lexers/igorpro/builtins.rb +1530 -0
  76. data/lib/rouge/lexers/igorpro.rb +49 -520
  77. data/lib/rouge/lexers/irb.rb +3 -3
  78. data/lib/rouge/lexers/isbl.rb +7 -43
  79. data/lib/rouge/lexers/j.rb +1 -1
  80. data/lib/rouge/lexers/json5.rb +2 -2
  81. data/lib/rouge/lexers/json_doc.rb +2 -2
  82. data/lib/rouge/lexers/jsp.rb +119 -119
  83. data/lib/rouge/lexers/jsx.rb +2 -2
  84. data/lib/rouge/lexers/kick_assembler.rb +100 -0
  85. data/lib/rouge/lexers/kotlin.rb +5 -0
  86. data/lib/rouge/lexers/lasso/keywords.rb +6 -6
  87. data/lib/rouge/lexers/lasso.rb +9 -11
  88. data/lib/rouge/lexers/liquid.rb +5 -6
  89. data/lib/rouge/lexers/llvm/keywords.rb +3 -12
  90. data/lib/rouge/lexers/llvm.rb +5 -16
  91. data/lib/rouge/lexers/lua/keywords.rb +11 -13
  92. data/lib/rouge/lexers/lua.rb +8 -7
  93. data/lib/rouge/lexers/lutin.rb +5 -4
  94. data/lib/rouge/lexers/m68k.rb +3 -3
  95. data/lib/rouge/lexers/mason.rb +110 -110
  96. data/lib/rouge/lexers/mathematica/keywords.rb +1 -3
  97. data/lib/rouge/lexers/mathematica.rb +6 -7
  98. data/lib/rouge/lexers/matlab/keywords.rb +2 -2
  99. data/lib/rouge/lexers/matlab.rb +5 -5
  100. data/lib/rouge/lexers/meson.rb +1 -1
  101. data/lib/rouge/lexers/mojo.rb +6 -2
  102. data/lib/rouge/lexers/moonscript.rb +19 -17
  103. data/lib/rouge/lexers/nesasm.rb +6 -6
  104. data/lib/rouge/lexers/nial.rb +7 -8
  105. data/lib/rouge/lexers/nim.rb +3 -3
  106. data/lib/rouge/lexers/nix.rb +10 -8
  107. data/lib/rouge/lexers/objective_c.rb +3 -3
  108. data/lib/rouge/lexers/objective_cpp.rb +3 -2
  109. data/lib/rouge/lexers/ocaml.rb +2 -2
  110. data/lib/rouge/lexers/openedge.rb +9 -9
  111. data/lib/rouge/lexers/pdf.rb +109 -0
  112. data/lib/rouge/lexers/php/keywords.rb +136 -188
  113. data/lib/rouge/lexers/php.rb +100 -11
  114. data/lib/rouge/lexers/plsql.rb +8 -9
  115. data/lib/rouge/lexers/postscript.rb +1 -1
  116. data/lib/rouge/lexers/powershell.rb +1 -1
  117. data/lib/rouge/lexers/python.rb +111 -66
  118. data/lib/rouge/lexers/qml.rb +2 -2
  119. data/lib/rouge/lexers/reasonml.rb +2 -2
  120. data/lib/rouge/lexers/rego.rb +53 -53
  121. data/lib/rouge/lexers/rescript.rb +2 -2
  122. data/lib/rouge/lexers/robot_framework.rb +12 -12
  123. data/lib/rouge/lexers/{coq.rb → rocq.rb} +15 -6
  124. data/lib/rouge/lexers/ruby.rb +33 -7
  125. data/lib/rouge/lexers/rust.rb +1 -0
  126. data/lib/rouge/lexers/sas.rb +164 -165
  127. data/lib/rouge/lexers/sass/common.rb +1 -1
  128. data/lib/rouge/lexers/sass.rb +2 -2
  129. data/lib/rouge/lexers/scss.rb +2 -2
  130. data/lib/rouge/lexers/sed.rb +1 -1
  131. data/lib/rouge/lexers/shell.rb +5 -5
  132. data/lib/rouge/lexers/slice.rb +2 -2
  133. data/lib/rouge/lexers/sparql.rb +1 -1
  134. data/lib/rouge/lexers/sqf/keywords.rb +5 -3
  135. data/lib/rouge/lexers/sqf.rb +3 -4
  136. data/lib/rouge/lexers/stan.rb +9 -15
  137. data/lib/rouge/lexers/svelte.rb +2 -2
  138. data/lib/rouge/lexers/swift.rb +2 -2
  139. data/lib/rouge/lexers/tcl.rb +1 -1
  140. data/lib/rouge/lexers/terraform.rb +3 -3
  141. data/lib/rouge/lexers/thrift.rb +120 -0
  142. data/lib/rouge/lexers/tsx.rb +3 -3
  143. data/lib/rouge/lexers/ttcn3.rb +1 -1
  144. data/lib/rouge/lexers/twig.rb +2 -2
  145. data/lib/rouge/lexers/typescript.rb +3 -3
  146. data/lib/rouge/lexers/varnish.rb +8 -8
  147. data/lib/rouge/lexers/veryl.rb +109 -0
  148. data/lib/rouge/lexers/viml/keywords.rb +5 -7
  149. data/lib/rouge/lexers/viml.rb +8 -10
  150. data/lib/rouge/lexers/vue.rb +2 -2
  151. data/lib/rouge/lexers/xquery.rb +2 -1
  152. data/lib/rouge/lexers/yaml.rb +13 -1
  153. data/lib/rouge/lexers/yang.rb +42 -74
  154. data/lib/rouge/lexers/zig.rb +10 -10
  155. data/lib/rouge/plugins/redcarpet.rb +3 -2
  156. data/lib/rouge/regex_lexer.rb +25 -14
  157. data/lib/rouge/themes/gruvbox.rb +3 -0
  158. data/lib/rouge/token.rb +1 -1
  159. data/lib/rouge/util.rb +1 -1
  160. data/lib/rouge/version.rb +1 -1
  161. data/lib/rouge.rb +70 -59
  162. data/lib/rubocop/cop/rouge/no_building_alternation_pattern_in_regexp.rb +71 -0
  163. data/lib/rubocop/cop/rouge/no_huge_collections.rb +37 -0
  164. data/rouge.gemspec +8 -5
  165. metadata +44 -9
  166. data/lib/rouge/lexers/isbl/builtins.rb +0 -17
  167. data/lib/rouge/lexers/matlab/builtins.rb +0 -11
  168. /data/lib/rouge/demos/{coq → rocq} +0 -0
@@ -0,0 +1,120 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Thrift < RegexLexer
7
+ title "Thrift"
8
+ desc "Apache Thrift interface definition language"
9
+ tag 'thrift'
10
+ aliases 'apache-thrift'
11
+ filenames '*.thrift'
12
+ mimetypes 'text/x-thrift', 'application/x-thrift'
13
+
14
+ def self.declarations
15
+ @declarations ||= Set.new %w(
16
+ include cpp_include namespace const typedef enum struct union
17
+ exception service
18
+ )
19
+ end
20
+
21
+ def self.keywords
22
+ @keywords ||= Set.new %w(
23
+ async cpp_type extends oneway optional required throws
24
+ xsd_all xsd_attrs xsd_nillable xsd_optional
25
+ )
26
+ end
27
+
28
+ def self.types
29
+ @types ||= Set.new %w(
30
+ binary bool byte double i8 i16 i32 i64 list map set string uuid void
31
+ )
32
+ end
33
+
34
+ def self.constants
35
+ @constants ||= Set.new %w(false true)
36
+ end
37
+
38
+ id = /[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z0-9_]+)*/
39
+ namespace_name = /[a-zA-Z_][a-zA-Z0-9_.-]*/
40
+ double = /[+-]?(?:(?:\d+\.\d+|\.\d+)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+)/
41
+
42
+ state :comments_and_whitespace do
43
+ rule %r/\s+/, Text
44
+ rule %r/#.*$/, Comment::Single
45
+ rule %r{//.*$}, Comment::Single
46
+ rule %r{/\*}, Comment::Multiline, :comment
47
+ end
48
+
49
+ state :comment do
50
+ rule %r/[^*]+/, Comment::Multiline
51
+ rule %r/\*+\//, Comment::Multiline, :pop!
52
+ rule %r/\*+/, Comment::Multiline
53
+ end
54
+
55
+ state :namespace_scope do
56
+ mixin :comments_and_whitespace
57
+
58
+ rule %r/\*/ do
59
+ token Punctuation
60
+ goto :namespace_name
61
+ end
62
+
63
+ rule id do
64
+ token Keyword::Namespace
65
+ goto :namespace_name
66
+ end
67
+
68
+ rule(//) { pop! }
69
+ end
70
+
71
+ state :namespace_name do
72
+ mixin :comments_and_whitespace
73
+
74
+ rule namespace_name do
75
+ token Name::Namespace
76
+ pop!
77
+ end
78
+
79
+ rule(//) { pop! }
80
+ end
81
+
82
+ state :root do
83
+ mixin :comments_and_whitespace
84
+
85
+ rule %r/(namespace)(\s+)/ do
86
+ groups Keyword::Declaration, Text
87
+ push :namespace_scope
88
+ end
89
+
90
+ rule %r/((?:enum|exception|service|struct|union))(\s+)(#{id})/ do
91
+ groups Keyword::Declaration, Text, Name::Class
92
+ end
93
+
94
+ rule %r/"(?:\\.|[^"\\\n])*"/, Str::Double
95
+ rule %r/'(?:\\.|[^'\\\n])*'/, Str::Single
96
+
97
+ rule %r/[+-]?0x[0-9a-f]+/i, Num::Hex
98
+ rule double, Num::Float
99
+ rule %r/[+-]?\d+/, Num::Integer
100
+
101
+ rule id do |m|
102
+ if self.class.declarations.include?(m[0])
103
+ token Keyword::Declaration
104
+ elsif self.class.keywords.include?(m[0])
105
+ token Keyword
106
+ elsif self.class.types.include?(m[0])
107
+ token Keyword::Type
108
+ elsif self.class.constants.include?(m[0])
109
+ token Keyword::Constant
110
+ else
111
+ token Name
112
+ end
113
+ end
114
+
115
+ rule %r/[&=+\-]/, Operator
116
+ rule %r/[:;,{}\(\)<>\[\]]/, Punctuation
117
+ end
118
+ end
119
+ end
120
+ end
@@ -1,11 +1,11 @@
1
1
  # -*- coding: utf-8 -*- #
2
2
  # frozen_string_literal: true
3
3
 
4
+ require_relative 'jsx'
5
+ require_relative 'typescript/common'
6
+
4
7
  module Rouge
5
8
  module Lexers
6
- load_lexer 'jsx.rb'
7
- load_lexer 'typescript/common.rb'
8
-
9
9
  class TSX < JSX
10
10
  extend TypescriptCommon
11
11
 
@@ -62,7 +62,7 @@ module Rouge
62
62
 
63
63
  rule %r/"/, Str, :string
64
64
  rule %r/'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char
65
-
65
+
66
66
  rule %r/#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/i, Num::Float
67
67
  rule %r/'#{bin_digit}+'B/i, Num::Bin
68
68
  rule %r/'#{hex_digit}+'H/i, Num::Hex
@@ -1,10 +1,10 @@
1
1
  # -*- coding: utf-8 -*- #
2
2
  # frozen_string_literal: true
3
3
 
4
+ require_relative 'jinja'
5
+
4
6
  module Rouge
5
7
  module Lexers
6
- load_lexer 'jinja.rb'
7
-
8
8
  class Twig < Jinja
9
9
  title "Twig"
10
10
  desc "Twig template engine (twig.sensiolabs.org)"
@@ -1,11 +1,11 @@
1
1
  # -*- coding: utf-8 -*- #
2
2
  # frozen_string_literal: true
3
3
 
4
+ require_relative 'javascript'
5
+ require_relative 'typescript/common'
6
+
4
7
  module Rouge
5
8
  module Lexers
6
- load_lexer 'javascript.rb'
7
- load_lexer 'typescript/common.rb'
8
-
9
9
  class Typescript < Javascript
10
10
  extend TypescriptCommon
11
11
 
@@ -128,14 +128,14 @@ module Rouge
128
128
 
129
129
  # numeric literals (integer / float)
130
130
  rule numeric do |m|
131
- case m[0]
132
- when /^#{decimal}$/
133
- token Num::Integer
134
- when /^0x#{hex}$/
135
- token Num::Integer
136
- else
137
- token Num::Float
138
- end
131
+ case m[0]
132
+ when /^#{decimal}$/
133
+ token Num::Integer
134
+ when /^0x#{hex}$/
135
+ token Num::Integer
136
+ else
137
+ token Num::Float
138
+ end
139
139
  end
140
140
 
141
141
  # standard strings
@@ -0,0 +1,109 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Veryl < RegexLexer
7
+ title "Veryl"
8
+ desc "The Veryl hardware description language (https://veryl-lang.org)"
9
+ tag 'veryl'
10
+ filenames '*.veryl'
11
+ mimetypes 'text/x-veryl'
12
+
13
+ # Characters
14
+
15
+ WHITE_SPACE = /\s+/
16
+ NEWLINE = /\n/
17
+
18
+ # Comments
19
+
20
+ LINE_COMMENT = /\/\/(?:(?!#{NEWLINE}).)*/
21
+ GENERAL_COMMENT = /\/\*(?:(?!\*\/).)*\*\//m
22
+ COMMENT = /#{LINE_COMMENT}|#{GENERAL_COMMENT}/
23
+
24
+ # Numeric literals
25
+
26
+ EXPONENT = /[0-9]+(?:_[0-9]+)*\.[0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)*/
27
+ FIXED_POINT = /[0-9]+(?:_[0-9]+)*\.[0-9]+(?:_[0-9]+)*/
28
+ BASED = /(?:[0-9]+(?:_[0-9]+)*)?'s?[bodh][0-9a-fA-FxzXZ]+(?:_[0-9a-fA-FxzXZ]+)*/
29
+ ALL_BIT = /(?:[0-9]+(?:_[0-9]+)*)?'[01xzXZ]/
30
+ BASE_LESS = /[0-9]+(?:_[0-9]+)*/
31
+
32
+ # Operators and delimiters
33
+
34
+ OPERATOR = / -: | -> | \+: | \+= | -=
35
+ | \*= | \/= | %= | &= | \|=
36
+ | \^= | <<= | >>= |<<<= |>>>=
37
+ | <> | \*\* | \/ | \| | %
38
+ | \+ | - | <<< | >>> | <<
39
+ | >> | <= | >= | <: | >:
40
+ | === | ==\? | \!== | \!=\? | ==
41
+ | \!= | && | \|\| | & | \^~
42
+ | \^ | ~\^ | \| | ~& | ~\|
43
+ | \! | ~
44
+ /x
45
+
46
+ SEPARATOR = / ::< | :: | : | , | \.\.=
47
+ | \.\. | \. | = | \# | <
48
+ | \? | ' | '\{ | \{ | \[
49
+ | \( | > | \} | \] | \)
50
+ | ; | \*
51
+ /x
52
+
53
+ # Identifiers
54
+
55
+ DOLLAR_IDENTIFIER = /\$[a-zA-Z_][0-9a-zA-Z_$]*/
56
+ IDENTIFIER = /(?:r#)?[a-zA-Z_][0-9a-zA-Z_$]*/
57
+
58
+ # Keywords
59
+
60
+ def self.keywords
61
+ @keywords ||= Set.new %w(
62
+ embed enum function include interface modport module package proto pub struct union unsafe
63
+ alias always_comb always_ff assign as bind block connect const final import initial inst let param return break type var
64
+ converse inout input output same
65
+ case default else if_reset if inside outside switch
66
+ for in repeat rev step
67
+ )
68
+ end
69
+
70
+ def self.keywords_type
71
+ @keywords_type ||= Set.new %w(
72
+ bit bbool lbool clock clock_posedge clock_negedge f32 f64 i8 i16 i32 i64 logic reset reset_async_high reset_async_low reset_sync_high reset_sync_low signed string tri u8 u16 u32 u64
73
+ )
74
+ end
75
+
76
+ state :root do
77
+ rule(COMMENT , Comment )
78
+ rule(EXPONENT , Num::Float )
79
+ rule(FIXED_POINT , Num::Float )
80
+ rule(BASED , Num::Integer )
81
+ rule(ALL_BIT , Num::Integer )
82
+ rule(BASE_LESS , Num::Integer )
83
+ rule(OPERATOR , Operator )
84
+ rule(SEPARATOR , Punctuation )
85
+ rule(DOLLAR_IDENTIFIER, Name )
86
+ rule(WHITE_SPACE , Text )
87
+ rule(/"/ , Str::Double, :string)
88
+
89
+ rule IDENTIFIER do |m|
90
+ name = m[0]
91
+
92
+ if self.class.keywords.include? name
93
+ token Keyword
94
+ elsif self.class.keywords_type.include? name
95
+ token Keyword::Type
96
+ else
97
+ token Name
98
+ end
99
+ end
100
+ end
101
+
102
+ state :string do
103
+ rule(/[^\\"]+/, Str::Double )
104
+ rule(/\\./ , Str::Escape )
105
+ rule(/"/ , Str::Double, :pop!)
106
+ end
107
+ end
108
+ end
109
+ end
@@ -8,13 +8,11 @@
8
8
  module Rouge
9
9
  module Lexers
10
10
  class VimL
11
- def self.keywords
12
- @keywords ||= {}.tap do |kw|
13
- kw[:command] = Set.new ["a", "ar", "args", "argl", "arglocal", "ba", "ball", "bm", "bmodified", "breaka", "breakadd", "bun", "bunload", "cabc", "cabclear", "cal", "call", "cc", "cf", "cfile", "changes", "cla", "clast", "cnf", "cnfile", "comc", "comclear", "cp", "cprevious", "cstag", "debugg", "debuggreedy", "deletl", "dep", "diffpu", "diffput", "dl", "dr", "drop", "ec", "em", "emenu", "ene", "enew", "files", "fini", "finish", "folddoc", "folddoclosed", "gr", "grep", "helpc", "helpclose", "his", "history", "il", "ilist", "isp", "isplit", "keepa", "l", "list", "laf", "lafter", "lbel", "lbelow", "lcscope", "lfdo", "lgrepa", "lgrepadd", "lma", "lo", "loadview", "lop", "lopen", "lua", "m", "move", "mes", "mkvie", "mkview", "nbc", "nbclose", "noh", "nohlsearch", "ol", "oldfiles", "pa", "packadd", "po", "pop", "prof", "profile", "pta", "ptag", "ptr", "ptrewind", "py3f", "py3file", "pythonx", "quita", "quitall", "redraws", "redrawstatus", "rew", "rewind", "rubyf", "rubyfile", "sIg", "sa", "sargument", "sba", "sball", "sbr", "sbrewind", "scl", "scscope", "sfir", "sfirst", "sgl", "sic", "sin", "sm", "smap", "snoreme", "spelld", "spelldump", "spellw", "spellwrong", "srg", "st", "stop", "stj", "stjump", "sunmenu", "syn", "tN", "tNext", "tabd", "tabdo", "tabm", "tabmove", "tabr", "tabrewind", "tch", "tchdir", "tf", "tfirst", "tlmenu", "tm", "tmenu", "to", "topleft", "tu", "tunmenu", "undol", "undolist", "up", "update", "vi", "visual", "vmapc", "vmapclear", "wa", "wall", "winp", "winpos", "wundo", "xme", "xr", "xrestore", "ab", "arga", "argadd", "argu", "argument", "bad", "badd", "bn", "bnext", "breakd", "breakdel", "bw", "bwipeout", "cabo", "cabove", "cat", "catch", "ccl", "cclose", "cfdo", "chd", "chdir", "cle", "clearjumps", "cnor", "comp", "compiler", "cpf", "cpfile", "cun", "delc", "delcommand", "deletp", "di", "display", "diffs", "diffsplit", "dli", "dlist", "ds", "dsearch", "echoe", "echoerr", "en", "endif", "eval", "filet", "fir", "first", "foldo", "foldopen", "grepa", "grepadd", "helpf", "helpfind", "i", "imapc", "imapclear", "iuna", "iunabbrev", "keepalt", "la", "last", "lan", "language", "lbo", "lbottom", "ld", "ldo", "lfir", "lfirst", "lh", "lhelpgrep", "lmak", "lmake", "loadk", "lp", "lprevious", "luado", "ma", "mark", "messages", "mod", "mode", "nbs", "nbstart", "nor", "omapc", "omapclear", "packl", "packloadall", "popu", "popup", "profd", "profdel", "ptf", "ptfirst", "pts", "ptselect", "pyx", "r", "read", "redrawt", "redrawtabline", "ri", "right", "rundo", "sIl", "sal", "sall", "sbf", "sbfirst", "sc", "scp", "se", "set", "sg", "sgn", "sie", "sip", "sme", "snoremenu", "spelli", "spellinfo", "spr", "sprevious", "sri", "sta", "stag", "stopi", "stopinsert", "sus", "suspend", "sync", "ta", "tag", "tabe", "tabedit", "tabn", "tabnext", "tabs", "tcld", "tcldo", "th", "throw", "tln", "tma", "tmap", "tp", "tprevious", "tunma", "tunmap", "unh", "unhide", "v", "vie", "view", "vne", "vnew", "wh", "while", "wn", "wnext", "wv", "wviminfo", "xmenu", "xunme", "abc", "abclear", "argd", "argdelete", "as", "ascii", "bd", "bdelete", "bo", "botright", "breakl", "breaklist", "cN", "cNext", "cad", "caddbuffer", "cb", "cbuffer", "cd", "cfir", "cfirst", "che", "checkpath", "clo", "close", "co", "copy", "con", "continue", "cq", "cquit", "cuna", "cunabbrev", "delel", "delf", "delfunction", "dif", "diffupdate", "difft", "diffthis", "do", "dsp", "dsplit", "echom", "echomsg", "endf", "endfunction", "ex", "filetype", "fix", "fixdel", "for", "gui", "helpg", "helpgrep", "ia", "in", "j", "join", "keepj", "keepjumps", "lab", "labove", "lat", "lc", "lcd", "le", "left", "lg", "lgetfile", "lhi", "lhistory", "lmapc", "lmapclear", "loadkeymap", "lpf", "lpfile", "luafile", "mak", "make", "mk", "mkexrc", "mz", "mzscheme", "new", "nore", "on", "only", "pc", "pclose", "pp", "ppop", "promptf", "promptfind", "ptj", "ptjump", "pu", "put", "py", "python", "pyxdo", "rec", "recover", "reg", "registers", "rightb", "rightbelow", "rv", "rviminfo", "sIn", "san", "sandbox", "sbl", "sblast", "scI", "scr", "scriptnames", "setf", "setfiletype", "sgI", "sgp", "sig", "sir", "smenu", "so", "source", "spellr", "spellrare", "sr", "srl", "star", "startinsert", "sts", "stselect", "sv", "sview", "syncbind", "tab", "tabf", "tabfind", "tabnew", "tags", "tclf", "tclfile", "tj", "tjump", "tlnoremenu", "tmapc", "tmapclear", "tr", "trewind", "u", "undo", "unl", "ve", "version", "vim", "vimgrep", "vs", "vsplit", "win", "winsize", "wp", "wprevious", "x", "xit", "xnoreme", "xunmenu", "abo", "aboveleft", "argdo", "au", "bel", "belowright", "bp", "bprevious", "bro", "browse", "cNf", "cNfile", "cadde", "caddexpr", "cbe", "cbefore", "cdo", "cg", "cgetfile", "checkt", "checktime", "cmapc", "cmapclear", "col", "colder", "conf", "confirm", "cr", "crewind", "cw", "cwindow", "delep", "dell", "diffg", "diffget", "dig", "digraphs", "doau", "e", "edit", "echon", "endfo", "endfor", "exi", "exit", "filt", "filter", "fo", "fold", "fu", "function", "gvim", "helpt", "helptags", "iabc", "iabclear", "inor", "ju", "jumps", "keepp", "keeppatterns", "lad", "laddexpr", "later", "lch", "lchdir", "lefta", "leftabove", "lgetb", "lgetbuffer", "ll", "lne", "lnext", "loc", "lockmarks", "lr", "lrewind", "lv", "lvimgrep", "marks", "mks", "mksession", "mzf", "mzfile", "nmapc", "nmapclear", "nos", "noswapfile", "opt", "options", "pe", "perl", "pre", "preserve", "promptr", "promptrepl", "ptl", "ptlast", "pw", "pwd", "pydo", "pyxfile", "red", "redo", "res", "resize", "ru", "runtime", "sI", "sIp", "sav", "saveas", "sbm", "sbmodified", "sce", "scripte", "scriptencoding", "setg", "setglobal", "sgc", "sgr", "sign", "sl", "sleep", "smile", "sor", "sort", "spellrepall", "srI", "srn", "startg", "startgreplace", "sun", "sunhide", "sw", "swapname", "syntime", "tabN", "tabNext", "tabfir", "tabfirst", "tabo", "tabonly", "tc", "tcl", "te", "tearoff", "tl", "tlast", "tlu", "tn", "tnext", "try", "una", "unabbreviate", "unlo", "unlockvar", "verb", "verbose", "vimgrepa", "vimgrepadd", "wN", "wNext", "winc", "wincmd", "wq", "xa", "xall", "xnoremenu", "xwininfo", "addd", "arge", "argedit", "bN", "bNext", "bf", "bfirst", "br", "brewind", "bufdo", "c", "change", "caddf", "caddfile", "cbel", "cbelow", "ce", "center", "cgetb", "cgetbuffer", "chi", "chistory", "cn", "cnext", "colo", "colorscheme", "cons", "const", "cs", "d", "delete", "deletel", "delm", "delmarks", "diffo", "diffoff", "dir", "doaut", "ea", "el", "else", "endt", "endtry", "exu", "exusage", "fin", "find", "foldc", "foldclose", "g", "h", "help", "hi", "if", "intro", "k", "lN", "lNext", "laddb", "laddbuffer", "lb", "lbuffer", "lcl", "lclose", "lex", "lexpr", "lgete", "lgetexpr", "lla", "llast", "lnew", "lnewer", "lockv", "lockvar", "ls", "lvimgrepa", "lvimgrepadd", "mat", "match", "mksp", "mkspell", "n", "next", "noa", "nu", "number", "ownsyntax", "ped", "pedit", "prev", "previous", "ps", "psearch", "ptn", "ptnext", "py3", "pyf", "pyfile", "q", "quit", "redi", "redir", "ret", "retab", "rub", "ruby", "sIc", "sIr", "sbN", "sbNext", "sbn", "sbnext", "scg", "scriptv", "scriptversion", "setl", "setlocal", "sge", "sh", "shell", "sil", "silent", "sla", "slast", "sn", "snext", "sp", "split", "spellrrare", "src", "srp", "startr", "startreplace", "sunme", "sy", "t", "tabc", "tabclose", "tabl", "tablast", "tabp", "tabprevious", "tcd", "ter", "terminal", "tlm", "tlunmenu", "tno", "tnoremap", "ts", "tselect", "undoj", "undojoin", "uns", "unsilent", "vert", "vertical", "viu", "viusage", "w", "write", "windo", "wqa", "wqall", "xmapc", "xmapclear", "xprop", "y", "yank", "al", "all", "argg", "argglobal", "b", "buffer", "bl", "blast", "brea", "break", "buffers", "ca", "caf", "cafter", "cbo", "cbottom", "cex", "cexpr", "cgete", "cgetexpr", "cl", "clist", "cnew", "cnewer", "com", "cope", "copen", "cscope", "debug", "deletep", "delp", "diffp", "diffpatch", "dj", "djump", "dp", "earlier", "elsei", "elseif", "endw", "endwhile", "f", "file", "fina", "finally", "foldd", "folddoopen", "go", "goto", "ha", "hardcopy", "hid", "hide", "ij", "ijump", "is", "isearch", "kee", "keepmarks", "lNf", "lNfile", "laddf", "laddfile", "lbe", "lbefore", "lcs", "lf", "lfile", "lgr", "lgrep", "lli", "llist", "lnf", "lnfile", "lol", "lolder", "lt", "ltag", "lw", "lwindow", "menut", "menutranslate", "mkv", "mkvimrc", "nb", "nbkey", "noautocmd", "o", "open", "p", "print", "perld", "perldo", "pro", "ptN", "ptNext", "ptp", "ptprevious", "py3do", "python3", "qa", "qall", "redr", "redraw", "retu", "return", "rubyd", "rubydo", "sIe", "sN", "sNext", "sb", "sbuffer", "sbp", "sbprevious", "sci", "scs", "sf", "sfind", "sgi", "si", "sim", "simalt", "smagic", "sno", "snomagic", "spe", "spellgood", "spellu", "spellundo", "sre", "srewind", "def", "endd", "enddef", "disa", "disassemble", "vim9", "vim9script", "imp", "import", "exp", "export"]
14
- kw[:option] = Set.new ["acd", "ambw", "arshape", "background", "ballooneval", "bex", "bl", "brk", "buftype", "cf", "cinkeys", "cmdwinheight", "com", "completeslash", "cpoptions", "cscoperelative", "csre", "cursorcolumn", "delcombine", "digraph", "eadirection", "emo", "equalprg", "expandtab", "fdls", "fex", "fileignorecase", "fml", "foldlevel", "formatexpr", "gcr", "go", "guifontset", "helpheight", "history", "hlsearch", "imaf", "ims", "includeexpr", "infercase", "iskeyword", "keywordprg", "laststatus", "lispwords", "lrm", "magic", "maxfuncdepth", "menuitems", "mm", "modifiable", "mousemodel", "mzq", "numberwidth", "opfunc", "patchexpr", "pfn", "pp", "printfont", "pumwidth", "pythonthreehome", "redrawtime", "ri", "rs", "sb", "scroll", "sect", "sft", "shellredir", "shiftwidth", "showmatch", "signcolumn", "smarttab", "sp", "spf", "srr", "startofline", "suffixes", "switchbuf", "ta", "tagfunc", "tbi", "term", "termwintype", "tgc", "titlelen", "toolbariconsize", "ttimeout", "ttymouse", "twt", "undofile", "varsofttabstop", "verbosefile", "viminfofile", "wak", "weirdinvert", "wig", "wildoptions", "winheight", "wm", "wrapscan", "ai", "anti", "autochdir", "backspace", "balloonevalterm", "bexpr", "bo", "browsedir", "casemap", "cfu", "cino", "cmp", "comments", "concealcursor", "cpp", "cscopetag", "cst", "cursorline", "dex", "dip", "eb", "emoji", "errorbells", "exrc", "fdm", "ff", "filetype", "fmr", "foldlevelstart", "formatlistpat", "gd", "gp", "guifontwide", "helplang", "hk", "ic", "imak", "imsearch", "incsearch", "insertmode", "isp", "km", "lazyredraw", "list", "ls", "makeef", "maxmapdepth", "mfd", "mmd", "modified", "mouses", "mzquantum", "nuw", "osfiletype", "patchmode", "ph", "preserveindent", "printheader", "pvh", "pyx", "regexpengine", "rightleft", "rtp", "sbo", "scrollbind", "sections", "sh", "shellslash", "shm", "showmode", "siso", "smc", "spc", "spl", "ss", "statusline", "suffixesadd", "sws", "tabline", "taglength", "tbidi", "termbidi", "terse", "tgst", "titleold", "top", "ttimeoutlen", "ttyscroll", "tx", "undolevels", "vartabstop", "vfile", "virtualedit", "warn", "wfh", "wildchar", "wim", "winminheight", "wmh", "write", "akm", "antialias", "autoindent", "backup", "balloonexpr", "bg", "bomb", "bs", "cb", "ch", "cinoptions", "cms", "commentstring", "conceallevel", "cpt", "cscopetagorder", "csto", "cursorlineopt", "dg", "dir", "ed", "enc", "errorfile", "fcl", "fdn", "ffs", "fillchars", "fo", "foldmarker", "formatoptions", "gdefault", "grepformat", "guiheadroom", "hf", "hkmap", "icon", "imc", "imsf", "inde", "is", "isprint", "kmp", "lbr", "listchars", "lsp", "makeencoding", "maxmem", "mh", "mmp", "more", "mouseshape", "mzschemedll", "odev", "pa", "path", "pheader", "previewheight", "printmbcharset", "pvp", "pyxversion", "relativenumber", "rightleftcmd", "ru", "sbr", "scrollfocus", "secure", "shcf", "shelltemp", "shortmess", "showtabline", "sj", "smd", "spell", "splitbelow", "ssl", "stl", "sw", "sxe", "tabpagemax", "tagrelative", "tbis", "termencoding", "textauto", "thesaurus", "titlestring", "tpm", "ttm", "ttytype", "uc", "undoreload", "vb", "vi", "visualbell", "wb", "wfw", "wildcharm", "winaltkeys", "winminwidth", "wmnu", "writeany", "al", "ar", "autoread", "backupcopy", "bdir", "bh", "breakat", "bsdir", "cc", "charconvert", "cinw", "co", "compatible", "confirm", "crb", "cscopeverbose", "csverb", "cwh", "dict", "directory", "edcompatible", "encoding", "errorformat", "fcs", "fdo", "fic", "fixendofline", "foldclose", "foldmethod", "formatprg", "gfm", "grepprg", "guioptions", "hh", "hkmapp", "iconstring", "imcmdline", "imst", "indentexpr", "isf", "joinspaces", "kp", "lcs", "lm", "luadll", "makeprg", "maxmempattern", "mis", "mmt", "mouse", "mouset", "mzschemegcdll", "oft", "packpath", "pdev", "pi", "previewpopup", "printmbfont", "pvw", "qe", "remap", "rl", "rubydll", "sc", "scrolljump", "sel", "shell", "shelltype", "shortname", "shq", "slm", "sn", "spellcapcheck", "splitright", "ssop", "stmp", "swapfile", "sxq", "tabstop", "tags", "tbs", "termguicolors", "textmode", "tildeop", "tl", "tr", "tty", "tw", "udf", "updatecount", "vbs", "viewdir", "vop", "wc", "wh", "wildignore", "wincolor", "winptydll", "wmw", "writebackup", "aleph", "arab", "autowrite", "backupdir", "bdlay", "bin", "breakindent", "bsk", "ccv", "ci", "cinwords", "cocu", "complete", "copyindent", "cryptmethod", "csl", "cuc", "debug", "dictionary", "display", "ef", "endofline", "esckeys", "fdc", "fdt", "fileencoding", "fixeol", "foldcolumn", "foldminlines", "fp", "gfn", "gtl", "guipty", "hi", "hkp", "ignorecase", "imd", "imstatusfunc", "indentkeys", "isfname", "js", "langmap", "linebreak", "lmap", "lw", "mat", "maxmemtot", "mkspellmem", "mod", "mousef", "mousetime", "nf", "ofu", "para", "penc", "pm", "previewwindow", "printoptions", "pw", "quoteescape", "renderoptions", "rlc", "ruf", "scb", "scrolloff", "selection", "shellcmdflag", "shellxescape", "showbreak", "si", "sm", "so", "spellfile", "spr", "st", "sts", "swapsync", "syn", "tag", "tagstack", "tc", "termwinkey", "textwidth", "timeout", "tm", "ts", "ttybuiltin", "twk", "udir", "updatetime", "vdir", "viewoptions", "vsts", "wcm", "whichwrap", "wildignorecase", "window", "winwidth", "wop", "writedelay", "allowrevins", "arabic", "autowriteall", "backupext", "belloff", "binary", "breakindentopt", "bt", "cd", "cin", "clipboard", "cole", "completefunc", "cot", "cscopepathcomp", "cspc", "cul", "deco", "diff", "dy", "efm", "eol", "et", "fde", "fen", "fileencodings", "fk", "foldenable", "foldnestmax", "fs", "gfs", "gtt", "guitablabel", "hid", "hl", "im", "imdisable", "imstyle", "indk", "isi", "key", "langmenu", "lines", "lnr", "lz", "matchpairs", "mco", "ml", "modeline", "mousefocus", "mp", "nrformats", "omnifunc", "paragraphs", "perldll", "pmbcs", "printdevice", "prompt", "pythondll", "rdt", "report", "rnu", "ruler", "scf", "scrollopt", "selectmode", "shellpipe", "shellxquote", "showcmd", "sidescroll", "smartcase", "softtabstop", "spelllang", "sps", "sta", "su", "swb", "synmaxcol", "tagbsearch", "tal", "tcldll", "termwinscroll", "tf", "timeoutlen", "to", "tsl", "ttyfast", "tws", "ul", "ur", "ve", "vif", "vts", "wcr", "wi", "wildmenu", "winfixheight", "wiv", "wrap", "ws", "altkeymap", "arabicshape", "aw", "backupskip", "beval", "bk", "bri", "bufhidden", "cdpath", "cindent", "cm", "colorcolumn", "completeopt", "cp", "cscopeprg", "csprg", "culopt", "def", "diffexpr", "ea", "ei", "ep", "eventignore", "fdi", "fenc", "fileformat", "fkmap", "foldexpr", "foldopen", "fsync", "gfw", "guicursor", "guitabtooltip", "hidden", "hlg", "imactivatefunc", "imi", "inc", "inex", "isident", "keymap", "langnoremap", "linespace", "loadplugins", "ma", "matchtime", "mef", "mle", "modelineexpr", "mousehide", "mps", "nu", "opendevice", "paste", "pex", "pmbfn", "printencoding", "pt", "pythonhome", "re", "restorescreen", "ro", "rulerformat", "scl", "scs", "sessionoptions", "shellquote", "shiftround", "showfulltag", "sidescrolloff", "smartindent", "sol", "spellsuggest", "sr", "stal", "sua", "swf", "syntax", "tagcase", "tb", "tenc", "termwinsize", "tfu", "title", "toolbar", "tsr", "ttym", "twsl", "undodir", "ut", "verbose", "viminfo", "wa", "wd", "wic", "wildmode", "winfixwidth", "wiw", "wrapmargin", "ww", "ambiwidth", "ari", "awa", "balloondelay", "bevalterm", "bkc", "briopt", "buflisted", "cedit", "cink", "cmdheight", "columns", "completepopup", "cpo", "cscopequickfix", "csqf", "cursorbind", "define", "diffopt", "ead", "ek", "equalalways", "ex", "fdl", "fencs", "fileformats", "flp", "foldignore", "foldtext", "ft", "ghr", "guifont", "helpfile", "highlight", "hls", "imactivatekey", "iminsert", "include", "inf", "isk", "keymodel", "langremap", "lisp", "lpl", "macatsui", "maxcombine", "menc", "mls", "modelines", "mousem", "msm", "number", "operatorfunc", "pastetoggle", "pexpr", "popt", "printexpr", "pumheight", "pythonthreedll", "readonly", "revins", "rop", "runtimepath", "scr", "noacd", "noallowrevins", "noantialias", "noarabic", "noarshape", "noautoread", "noaw", "noballooneval", "nobevalterm", "nobk", "nobreakindent", "nocf", "nocindent", "nocopyindent", "nocscoperelative", "nocsre", "nocuc", "nocursorcolumn", "nodelcombine", "nodigraph", "noed", "noemo", "noeol", "noesckeys", "noexpandtab", "nofic", "nofixeol", "nofoldenable", "nogd", "nohid", "nohkmap", "nohls", "noicon", "noimc", "noimdisable", "noinfercase", "nojoinspaces", "nolangremap", "nolinebreak", "nolnr", "nolrm", "nomacatsui", "noml", "nomod", "nomodelineexpr", "nomodified", "nomousef", "nomousehide", "nonumber", "noopendevice", "nopi", "nopreviewwindow", "nopvw", "norelativenumber", "norestorescreen", "nori", "norl", "noro", "noru", "nosb", "noscb", "noscrollbind", "noscs", "nosft", "noshelltemp", "noshortname", "noshowfulltag", "noshowmode", "nosm", "nosmartindent", "nosmd", "nosol", "nosplitbelow", "nospr", "nossl", "nostartofline", "noswapfile", "nota", "notagrelative", "notbi", "notbs", "noterse", "notextmode", "notgst", "notimeout", "noto", "notr", "nottybuiltin", "notx", "noundofile", "novisualbell", "nowarn", "noweirdinvert", "nowfw", "nowildignorecase", "nowinfixheight", "nowiv", "nowrap", "nowrite", "nowritebackup", "noai", "noaltkeymap", "noar", "noarabicshape", "noautochdir", "noautowrite", "noawa", "noballoonevalterm", "nobin", "nobl", "nobri", "noci", "nocompatible", "nocp", "nocscopetag", "nocst", "nocul", "nocursorline", "nodg", "noea", "noedcompatible", "noemoji", "noequalalways", "noet", "noexrc", "nofileignorecase", "nofk", "nofs", "nogdefault", "nohidden", "nohkmapp", "nohlsearch", "noignorecase", "noimcmdline", "noincsearch", "noinsertmode", "nojs", "nolazyredraw", "nolisp", "noloadplugins", "nolz", "nomagic", "nomle", "nomodeline", "nomodifiable", "nomore", "nomousefocus", "nonu", "noodev", "nopaste", "nopreserveindent", "noprompt", "noreadonly", "noremap", "norevins", "norightleft", "nornu", "nors", "noruler", "nosc", "noscf", "noscrollfocus", "nosecure", "noshellslash", "noshiftround", "noshowcmd", "noshowmatch", "nosi", "nosmartcase", "nosmarttab", "nosn", "nospell", "nosplitright", "nosr", "nosta", "nostmp", "noswf", "notagbsearch", "notagstack", "notbidi", "notermbidi", "notextauto", "notf", "notildeop", "notitle", "notop", "nottimeout", "nottyfast", "noudf", "novb", "nowa", "nowb", "nowfh", "nowic", "nowildmenu", "nowinfixwidth", "nowmnu", "nowrapscan", "nowriteany", "nows", "noakm", "noanti", "noarab", "noari", "noautoindent", "noautowriteall", "nobackup", "nobeval", "nobinary", "nobomb", "nobuflisted", "nocin", "noconfirm", "nocrb", "nocscopeverbose", "nocsverb", "nocursorbind", "nodeco", "nodiff", "noeb", "noek", "noendofline", "noerrorbells", "noex", "nofen", "nofixendofline", "nofkmap", "nofsync", "noguipty", "nohk", "nohkp", "noic", "noim", "noimd", "noinf", "nois", "nolangnoremap", "nolbr", "nolist", "nolpl", "noma", "nomh", "invacd", "invallowrevins", "invantialias", "invarabic", "invarshape", "invautoread", "invaw", "invballooneval", "invbevalterm", "invbk", "invbreakindent", "invcf", "invcindent", "invcopyindent", "invcscoperelative", "invcsre", "invcuc", "invcursorcolumn", "invdelcombine", "invdigraph", "inved", "invemo", "inveol", "invesckeys", "invexpandtab", "invfic", "invfixeol", "invfoldenable", "invgd", "invhid", "invhkmap", "invhls", "invicon", "invimc", "invimdisable", "invinfercase", "invjoinspaces", "invlangremap", "invlinebreak", "invlnr", "invlrm", "invmacatsui", "invml", "invmod", "invmodelineexpr", "invmodified", "invmousef", "invmousehide", "invnumber", "invopendevice", "invpi", "invpreviewwindow", "invpvw", "invrelativenumber", "invrestorescreen", "invri", "invrl", "invro", "invru", "invsb", "invscb", "invscrollbind", "invscs", "invsft", "invshelltemp", "invshortname", "invshowfulltag", "invshowmode", "invsm", "invsmartindent", "invsmd", "invsol", "invsplitbelow", "invspr", "invssl", "invstartofline", "invswapfile", "invta", "invtagrelative", "invtbi", "invtbs", "invterse", "invtextmode", "invtgst", "invtimeout", "invto", "invtr", "invttybuiltin", "invtx", "invundofile", "invvisualbell", "invwarn", "invweirdinvert", "invwfw", "invwildignorecase", "invwinfixheight", "invwiv", "invwrap", "invwrite", "invwritebackup", "invai", "invaltkeymap", "invar", "invarabicshape", "invautochdir", "invautowrite", "invawa", "invballoonevalterm", "invbin", "invbl", "invbri", "invci", "invcompatible", "invcp", "invcscopetag", "invcst", "invcul", "invcursorline", "invdg", "invea", "invedcompatible", "invemoji", "invequalalways", "invet", "invexrc", "invfileignorecase", "invfk", "invfs", "invgdefault", "invhidden", "invhkmapp", "invhlsearch", "invignorecase", "invimcmdline", "invincsearch", "invinsertmode", "invjs", "invlazyredraw", "invlisp", "invloadplugins", "invlz", "invmagic", "invmle", "invmodeline", "invmodifiable", "invmore", "invmousefocus", "invnu", "invodev", "invpaste", "invpreserveindent", "invprompt", "invreadonly", "invremap", "invrevins", "invrightleft", "invrnu", "invrs", "invruler", "invsc", "invscf", "invscrollfocus", "invsecure", "invshellslash", "invshiftround", "invshowcmd", "invshowmatch", "invsi", "invsmartcase", "invsmarttab", "invsn", "invspell", "invsplitright", "invsr", "invsta", "invstmp", "invswf", "invtagbsearch", "invtagstack", "invtbidi", "invtermbidi", "invtextauto", "invtf", "invtildeop", "invtitle", "invtop", "invttimeout", "invttyfast", "invudf", "invvb", "invwa", "invwb", "invwfh", "invwic", "invwildmenu", "invwinfixwidth", "invwmnu", "invwrapscan", "invwriteany", "invws", "invakm", "invanti", "invarab", "invari", "invautoindent", "invautowriteall", "invbackup", "invbeval", "invbinary", "invbomb", "invbuflisted", "invcin", "invconfirm", "invcrb", "invcscopeverbose", "invcsverb", "invcursorbind", "invdeco", "invdiff", "inveb", "invek", "invendofline", "inverrorbells", "invex", "invfen", "invfixendofline", "invfkmap", "invfsync", "invguipty", "invhk", "invhkp", "invic", "invim", "invimd", "invinf", "invis", "invlangnoremap", "invlbr", "invlist", "invlpl", "invma", "invmh", "t_8b", "t_AB", "t_al", "t_bc", "t_BE", "t_ce", "t_cl", "t_Co", "t_Cs", "t_CV", "t_db", "t_DL", "t_EI", "t_F2", "t_F4", "t_F6", "t_F8", "t_fs", "t_IE", "t_k1", "t_k2", "t_K3", "t_K4", "t_K5", "t_K6", "t_K7", "t_K8", "t_K9", "t_kb", "t_KB", "t_kd", "t_KD", "t_ke", "t_KE", "t_KF", "t_KG", "t_kh", "t_KH", "t_kI", "t_KI", "t_KJ", "t_KK", "t_kl", "t_KL", "t_kN", "t_kP", "t_kr", "t_ks", "t_ku", "t_le", "t_mb", "t_md", "t_me", "t_mr", "t_ms", "t_nd", "t_op", "t_PE", "t_PS", "t_RB", "t_RC", "t_RF", "t_Ri", "t_RI", "t_RS", "t_RT", "t_RV", "t_Sb", "t_SC", "t_se", "t_Sf", "t_SH", "t_Si", "t_SI", "t_so", "t_sr", "t_SR", "t_ST", "t_te", "t_Te", "t_TE", "t_ti", "t_TI", "t_ts", "t_Ts", "t_u7", "t_ue", "t_us", "t_ut", "t_vb", "t_ve", "t_vi", "t_vs", "t_VS", "t_WP", "t_WS", "t_xn", "t_xs", "t_ZH", "t_ZR", "t_8f", "t_AF", "t_AL", "t_BD", "t_cd", "t_Ce", "t_cm", "t_cs", "t_CS", "t_da", "t_dl", "t_EC", "t_F1", "t_F3", "t_F5", "t_F7", "t_F9", "t_GP", "t_IS", "t_K1", "t_k3", "t_k4", "t_k5", "t_k6", "t_k7", "t_k8", "t_k9", "t_KA", "t_kB", "t_KC", "t_kD"]
15
- kw[:auto] = Set.new ["BufAdd", "BufDelete", "BufFilePost", "BufHidden", "BufNew", "BufRead", "BufReadPost", "BufUnload", "BufWinEnter", "BufWinLeave", "BufWipeout", "BufWrite", "BufWriteCmd", "BufWritePost", "BufWritePre", "CmdlineChanged", "CmdlineEnter", "CmdlineLeave", "CmdUndefined", "CmdwinEnter", "CmdwinLeave", "ColorScheme", "ColorSchemePre", "CompleteChanged", "CompleteDone", "CompleteDonePre", "CursorHold", "CursorHoldI", "CursorMoved", "CursorMovedI", "DiffUpdated", "DirChanged", "EncodingChanged", "ExitPre", "FileAppendCmd", "FileAppendPost", "FileAppendPre", "FileChangedRO", "FileChangedShell", "FileChangedShellPost", "FileEncoding", "FileReadCmd", "FileReadPost", "FileReadPre", "FileType", "FileWriteCmd", "FileWritePost", "FileWritePre", "FilterReadPost", "FilterReadPre", "FilterWritePost", "FilterWritePre", "FocusGained", "FocusLost", "FuncUndefined", "GUIEnter", "GUIFailed", "InsertChange", "InsertCharPre", "InsertEnter", "InsertLeave", "MenuPopup", "OptionSet", "QuickFixCmdPost", "QuickFixCmdPre", "QuitPre", "RemoteReply", "SafeState", "SafeStateAgain", "SessionLoadPost", "ShellCmdPost", "ShellFilterPost", "SourceCmd", "SourcePost", "SourcePre", "SpellFileMissing", "StdinReadPost", "StdinReadPre", "SwapExists", "Syntax", "TabClosed", "TabEnter", "TabLeave", "TabNew", "TermChanged", "TerminalOpen", "TerminalWinOpen", "TermResponse", "TextChanged", "TextChangedI", "TextChangedP", "TextYankPost", "User", "VimEnter", "VimLeave", "VimLeavePre", "VimResized", "WinEnter", "WinLeave", "WinNew", "BufCreate", "BufEnter", "BufFilePre", "BufLeave", "BufNewFile", "BufReadCmd", "BufReadPre"]
16
- kw[:function] = Set.new ["abs", "appendbufline", "asin", "assert_fails", "assert_notmatch", "balloon_gettext", "bufadd", "bufname", "byteidx", "char2nr", "ch_evalexpr", "ch_log", "ch_readraw", "cindent", "complete_check", "cosh", "deepcopy", "diff_hlID", "eval", "exists", "feedkeys", "findfile", "fnamemodify", "foldtextresult", "get", "getchar", "getcmdtype", "getenv", "getftype", "getmatches", "getreg", "gettagstack", "getwinvar", "has_key", "histget", "iconv", "inputlist", "interrupt", "isnan", "job_start", "js_encode", "libcall", "list2str", "log", "mapcheck", "matchdelete", "max", "nextnonblank", "popup_atcursor", "popup_dialog", "popup_getoptions", "popup_notification", "prevnonblank", "prop_add", "prop_type_add", "pum_getpos", "rand", "reg_recording", "remote_foreground", "remove", "round", "screencol", "searchdecl", "serverlist", "setenv", "setpos", "settagstack", "sign_define", "sign_placelist", "sin", "sound_playevent", "split", "str2list", "strftime", "strpart", "submatch", "synID", "systemlist", "taglist", "term_dumpload", "term_getcursor", "term_getstatus", "term_sendkeys", "term_setsize", "test_autochdir", "test_getvalue", "test_null_dict", "test_null_string", "test_scrollbar", "test_unknown", "timer_start", "toupper", "type", "values", "winbufnr", "win_findbuf", "winheight", "winline", "winsaveview", "winwidth", "acos", "argc", "assert_beeps", "assert_false", "assert_report", "balloon_show", "bufexists", "bufnr", "byteidxcomp", "ch_canread", "ch_evalraw", "ch_logfile", "ch_sendexpr", "clearmatches", "complete_info", "count", "delete", "echoraw", "eventhandler", "exp", "filereadable", "float2nr", "foldclosed", "foreground", "getbufinfo", "getcharmod", "getcmdwintype", "getfontname", "getimstatus", "getmousepos", "getregtype", "getwininfo", "glob", "haslocaldir", "histnr", "indent", "inputrestore", "invert", "items", "job_status", "json_decode", "libcallnr", "listener_add", "log10", "match", "matchend", "min", "nr2char", "popup_beval", "popup_filter_menu", "popup_getpos", "popup_setoptions", "printf", "prop_clear", "prop_type_change", "pumvisible", "range", "reltime", "remote_peek", "rename", "rubyeval", "screenpos", "searchpair", "setbufline", "setfperm", "setqflist", "setwinvar", "sign_getdefined", "sign_undefine", "sinh", "sound_playfile", "sqrt", "str2nr", "strgetchar", "strptime", "substitute", "synIDattr", "tabpagebuflist", "tan", "term_dumpwrite", "term_getjob", "term_gettitle", "term_setansicolors", "term_start", "test_feedinput", "test_ignore_error", "test_null_job", "test_option_not_set", "test_setmouse", "test_void", "timer_stop", "tr", "undofile", "virtcol", "wincol", "win_getid", "win_id2tabwin", "winnr", "win_screenpos", "wordcount", "add", "argidx", "assert_equal", "assert_inrange", "assert_true", "balloon_split", "buflisted", "bufwinid", "call", "ch_close", "ch_getbufnr", "ch_open", "ch_sendraw", "col", "confirm", "cscope_connection", "deletebufline", "empty", "executable", "expand", "filewritable", "floor", "foldclosedend", "funcref", "getbufline", "getcharsearch", "getcompletion", "getfperm", "getjumplist", "getpid", "gettabinfo", "getwinpos", "glob2regpat", "hasmapto", "hlexists", "index", "inputsave", "isdirectory", "job_getchannel", "job_stop", "json_encode", "line", "listener_flush", "luaeval", "matchadd", "matchlist", "mkdir", "or", "popup_clear", "popup_filter_yesno", "popup_hide", "popup_settext", "prompt_setcallback", "prop_find", "prop_type_delete", "py3eval", "readdir", "reltimefloat", "remote_read", "repeat", "screenattr", "screenrow", "searchpairpos", "setbufvar", "setline", "setreg", "sha256", "sign_getplaced", "sign_unplace", "sort", "sound_stop", "srand", "strcharpart", "stridx", "strridx", "swapinfo", "synIDtrans", "tabpagenr", "tanh", "term_getaltscreen", "term_getline", "term_gettty", "term_setapi", "term_wait", "test_garbagecollect_now", "test_null_blob", "test_null_list", "test_override", "test_settime", "timer_info", "timer_stopall", "trim", "undotree", "visualmode", "windowsversion", "win_gettype", "win_id2win", "winrestcmd", "win_splitmove", "writefile", "and", "arglistid", "assert_equalfile", "assert_match", "atan", "browse", "bufload", "bufwinnr", "ceil", "ch_close_in", "ch_getjob", "ch_read", "ch_setoptions", "complete", "copy", "cursor", "did_filetype", "environ", "execute", "expandcmd", "filter", "fmod", "foldlevel", "function", "getbufvar", "getcmdline", "getcurpos", "getfsize", "getline", "getpos", "gettabvar", "getwinposx", "globpath", "histadd", "hlID", "input", "inputsecret", "isinf", "job_info", "join", "keys", "line2byte", "listener_remove", "map", "matchaddpos", "matchstr", "mode", "pathshorten", "popup_close", "popup_findinfo", "popup_menu", "popup_show", "prompt_setinterrupt", "prop_list", "prop_type_get", "pyeval", "readfile", "reltimestr", "remote_send", "resolve", "screenchar", "screenstring", "searchpos", "setcharsearch", "setloclist", "settabvar", "shellescape", "sign_jump", "sign_unplacelist", "sound_clear", "spellbadword", "state", "strchars", "string", "strtrans", "swapname", "synstack", "tabpagewinnr", "tempname", "term_getansicolors", "term_getscrolled", "term_list", "term_setkill", "test_alloc_fail", "test_garbagecollect_soon", "test_null_channel", "test_null_partial", "test_refcount", "test_srand_seed", "timer_pause", "tolower", "trunc", "uniq", "wildmenumode", "win_execute", "win_gotoid", "winlayout", "winrestview", "win_type", "xor", "append", "argv", "assert_exception", "assert_notequal", "atan2", "browsedir", "bufloaded", "byte2line", "changenr", "chdir", "ch_info", "ch_readblob", "ch_status", "complete_add", "cos", "debugbreak", "diff_filler", "escape", "exepath", "extend", "finddir", "fnameescape", "foldtext", "garbagecollect", "getchangelist", "getcmdpos", "getcwd", "getftime", "getloclist", "getqflist", "gettabwinvar", "getwinposy", "has", "histdel", "hostname", "inputdialog", "insert", "islocked", "job_setoptions", "js_decode", "len", "lispindent", "localtime", "maparg", "matcharg", "matchstrpos", "mzeval", "perleval", "popup_create", "popup_findpreview", "popup_move", "pow", "prompt_setprompt", "prop_remove", "prop_type_list", "pyxeval", "reg_executing", "remote_expr", "remote_startserver", "reverse", "screenchars", "search", "server2client", "setcmdpos", "setmatches", "settabwinvar", "shiftwidth", "sign_place", "simplify", "soundfold", "spellsuggest", "str2float", "strdisplaywidth", "strlen", "strwidth", "synconcealed", "system", "tagfiles", "term_dumpdiff", "term_getattr", "term_getsize", "term_scrape", "term_setrestore"]
17
- end
11
+ KEYWORDS = {}.tap do |kw|
12
+ kw[:command] = Set.new ["a", "al", "all", "ar", "arga", "argadd", "argd", "argded", "argdedupe", "argdelete", "arge", "argedit", "argg", "argglobal", "argl", "arglocal", "args", "argu", "argument", "as", "ascii", "b", "bN", "bNext", "ba", "bad", "badd", "ball", "balt", "bd", "bdelete", "bf", "bfirst", "bl", "blast", "bm", "bmodified", "bn", "bnext", "bp", "bprevious", "br", "brea", "break", "brewind", "buffer", "buffers", "bun", "bunload", "bw", "bwipeout", "cN", "cNext", "cNf", "cNfile", "cabo", "cabove", "cad", "caddbuffer", "cadde", "caddexpr", "caddf", "caddfile", "caf", "cafter", "cb", "cbe", "cbefore", "cbel", "cbelow", "cbo", "cbottom", "cbuffer", "cc", "ccl", "cclose", "ce", "center", "cex", "cexpr", "cf", "cfile", "cfir", "cfirst", "cg", "cgetb", "cgetbuffer", "cgete", "cgetexpr", "cgetfile", "changes", "che", "checkpath", "checkt", "checktime", "chi", "chistory", "cl", "cla", "clast", "cle", "clearjumps", "clip", "clipreset", "clist", "clo", "close", "cn", "cnew", "cnewer", "cnext", "cnf", "cnfile", "col", "colder", "colo", "colorscheme", "comc", "comclear", "comp", "compiler", "con", "continue", "cope", "copen", "cp", "cpf", "cpfile", "cprevious", "cq", "cquit", "cr", "crewind", "cs", "cscope", "cst", "cstag", "cw", "cwindow", "defc", "defcompile", "delel", "delep", "deletel", "deletep", "deletl", "deletp", "dell", "delm", "delmarks", "delp", "dep", "di", "dif", "diffg", "diffget", "diffo", "diffoff", "diffp", "diffpatch", "diffpu", "diffput", "diffs", "diffsplit", "difft", "diffthis", "diffupdate", "dig", "digraphs", "disa", "disassemble", "display", "dj", "djump", "dl", "dli", "dlist", "dp", "dr", "drop", "ds", "dsearch", "dsp", "dsplit", "e", "ea", "earlier", "edit", "em", "emenu", "endfo", "endfor", "endt", "endtry", "endw", "endwhile", "ene", "enew", "ex", "exi", "exit", "exu", "exusage", "f", "file", "files", "fin", "fina", "finally", "find", "fini", "finish", "fir", "first", "fix", "fixdel", "fo", "fold", "foldc", "foldclose", "foldo", "foldopen", "g", "global", "go", "goto", "gu", "gui", "gv", "gvim", "ha", "hardcopy", "helpc", "helpclose", "helpf", "helpfind", "helpt", "helptags", "i", "ij", "ijump", "il", "ilist", "int", "intro", "ip", "iput", "is", "isearch", "isp", "isplit", "ju", "jumps", "l", "lN", "lNext", "lNf", "lNfile", "la", "lab", "labove", "lad", "laddb", "laddbuffer", "laddexpr", "laddf", "laddfile", "laf", "lafter", "last", "lat", "later", "lb", "lbe", "lbefore", "lbel", "lbelow", "lbo", "lbottom", "lbuffer", "lcl", "lclose", "lcs", "lcscope", "le", "left", "lex", "lexpr", "lf", "lfile", "lfir", "lfirst", "lg", "lgetb", "lgetbuffer", "lgete", "lgetexpr", "lgetfile", "lhi", "lhistory", "list", "ll", "lla", "llast", "lli", "llist", "lmak", "lmake", "lne", "lnew", "lnewer", "lnext", "lnf", "lnfile", "lo", "loadview", "lockv", "lockvar", "lol", "lolder", "lop", "lopen", "lp", "lpf", "lpfile", "lprevious", "lr", "lrewind", "ls", "lt", "ltag", "lw", "lwindow", "m", "marks", "mes", "messages", "mk", "mkexrc", "mks", "mksession", "mksp", "mkspell", "mkv", "mkvie", "mkview", "mkvimrc", "mod", "mode", "move", "n", "nb", "nbc", "nbclose", "nbkey", "nbs", "nbstart", "next", "nextgroup", "noh", "nohlsearch", "nu", "number", "o", "ol", "oldfiles", "on", "only", "open", "opt", "options", "ow", "ownsyntax", "p", "pa", "packadd", "packl", "packloadall", "pb", "pbuffer", "pc", "pclose", "ped", "pedit", "po", "pop", "pp", "ppop", "pre", "preserve", "prev", "previous", "print", "ps", "psearch", "pt", "ptN", "ptNext", "ptag", "ptf", "ptfirst", "ptj", "ptjump", "ptl", "ptlast", "ptn", "ptnext", "ptp", "ptprevious", "ptr", "ptrewind", "pts", "ptselect", "pu", "put", "pw", "pwd", "q", "qa", "qall", "quit", "quita", "quitall", "r", "read", "rec", "recover", "red", "redo", "redr", "redraw", "redraws", "redrawstatus", "redrawt", "redrawtabline", "redrawtabp", "redrawtabpanel", "reg", "registers", "res", "resize", "ret", "retab", "rew", "rewind", "ri", "right", "ru", "rund", "rundo", "runtime", "rv", "rviminfo", "sN", "sNext", "sa", "sal", "sall", "sargument", "sav", "saveas", "sb", "sbN", "sbNext", "sba", "sball", "sbf", "sbfirst", "sbl", "sblast", "sbm", "sbmodified", "sbn", "sbnext", "sbp", "sbprevious", "sbr", "sbrewind", "sbuffer", "scr", "scripte", "scriptencoding", "scriptnames", "scriptv", "scriptversion", "scs", "scscope", "setf", "setfiletype", "sf", "sfind", "sfir", "sfirst", "sh", "shell", "sig", "sign", "sim", "simalt", "sla", "slast", "smi", "smile", "sn", "snext", "so", "source", "spe", "spelld", "spelldump", "spellgood", "spelli", "spellinfo", "spellr", "spellra", "spellrare", "spellrepall", "spellu", "spellundo", "spellw", "spellwrong", "spr", "sprevious", "sre", "srewind", "st", "sta", "stag", "star", "startg", "startgreplace", "startinsert", "startr", "startreplace", "stj", "stjump", "stop", "stopi", "stopinsert", "sts", "stselect", "sun", "sunhide", "sus", "suspend", "sv", "sview", "sync", "syncbind", "t", "tN", "tNext", "ta", "tabN", "tabNext", "tabc", "tabclose", "tabe", "tabedit", "tabf", "tabfind", "tabfir", "tabfirst", "tabl", "tablast", "tabm", "tabmove", "tabn", "tabnew", "tabnext", "tabo", "tabonly", "tabp", "tabprevious", "tabr", "tabrewind", "tabs", "tag", "tags", "te", "tearoff", "tf", "tfirst", "tj", "tjump", "tl", "tlast", "tn", "tnext", "tp", "tprevious", "tr", "trewind", "try", "ts", "tselect", "u", "undo", "undoj", "undojoin", "undol", "undolist", "unh", "unhide", "up", "update", "v", "ve", "version", "vglobal", "vi", "vie", "view", "vimBang", "visual", "viu", "viusage", "vne", "vnew", "vs", "vsplit", "w", "wN", "wNext", "wa", "wall", "wi", "winp", "winpos", "winsize", "wl", "wlrestore", "wn", "wnext", "wp", "wprevious", "wq", "wqa", "wqall", "write", "wu", "wundo", "wv", "wviminfo", "x", "xa", "xall", "xit", "xr", "xrestore", "y", "yank", "z"]
13
+ kw[:option] = Set.new ["ac", "acd", "acl", "act", "ai", "al", "aleph", "allowrevins", "ambiwidth", "ambw", "ar", "arab", "arabic", "arabicshape", "ari", "arshape", "asd", "autochdir", "autocomplete", "autocompletedelay", "autocompletetimeout", "autoindent", "autoread", "autoshelldir", "autowrite", "autowriteall", "aw", "awa", "background", "backspace", "backup", "backupcopy", "backupdir", "backupext", "backupskip", "balloondelay", "ballooneval", "balloonevalterm", "balloonexpr", "bdir", "bdlay", "belloff", "beval", "bevalterm", "bex", "bexpr", "bg", "bh", "bin", "binary", "bk", "bkc", "bl", "bo", "bomb", "breakat", "breakindent", "breakindentopt", "bri", "briopt", "brk", "browsedir", "bs", "bsdir", "bsk", "bt", "bufhidden", "buflisted", "buftype", "casemap", "cb", "cc", "ccv", "cd", "cdh", "cdhome", "cdpath", "cedit", "cf", "cfu", "ch", "charconvert", "chi", "chistory", "ci", "cia", "cin", "cindent", "cink", "cinkeys", "cino", "cinoptions", "cinscopedecls", "cinsd", "cinw", "cinwords", "clipboard", "clipmethod", "cm", "cmdheight", "cmdwinheight", "cmp", "cms", "co", "cocu", "cole", "colorcolumn", "columns", "com", "comments", "commentstring", "compatible", "complete", "completefunc", "completeitemalign", "completeopt", "completepopup", "completeslash", "completetimeout", "concealcursor", "conceallevel", "confirm", "copyindent", "cot", "cp", "cpm", "cpo", "cpoptions", "cpp", "cpt", "crb", "cryptmethod", "cscopepathcomp", "cscopeprg", "cscopequickfix", "cscoperelative", "cscopetag", "cscopetagorder", "cscopeverbose", "csl", "cspc", "csprg", "csqf", "csre", "cst", "csto", "csverb", "cto", "cuc", "cul", "culopt", "cursorbind", "cursorcolumn", "cursorline", "cursorlineopt", "cwh", "debug", "deco", "def", "define", "delcombine", "dex", "dg", "dia", "dict", "dictionary", "diff", "diffanchors", "diffexpr", "diffopt", "digraph", "dip", "dir", "directory", "display", "dy", "ea", "ead", "eadirection", "eb", "ed", "edcompatible", "ef", "efm", "ei", "eiw", "ek", "emo", "emoji", "enc", "encoding", "endoffile", "endofline", "eof", "eol", "ep", "equalalways", "equalprg", "errorbells", "errorfile", "errorformat", "esckeys", "et", "eventignore", "eventignorewin", "ex", "expandtab", "exrc", "fcl", "fcs", "fdc", "fde", "fdi", "fdl", "fdls", "fdm", "fdn", "fdo", "fdt", "fen", "fenc", "fencs", "fex", "ff", "ffs", "ffu", "fic", "fileencoding", "fileencodings", "fileformat", "fileformats", "fileignorecase", "filetype", "fillchars", "findfunc", "fixendofline", "fixeol", "flp", "fml", "fmr", "fo", "foldclose", "foldcolumn", "foldenable", "foldexpr", "foldignore", "foldlevel", "foldlevelstart", "foldmarker", "foldmethod", "foldminlines", "foldnestmax", "foldopen", "foldtext", "formatexpr", "formatlistpat", "formatoptions", "formatprg", "fp", "fs", "fsync", "ft", "gcr", "gd", "gdefault", "gfm", "gfn", "gfs", "gfw", "ghr", "gli", "go", "gp", "grepformat", "grepprg", "gtl", "gtt", "guicursor", "guifont", "guifontset", "guifontwide", "guiheadroom", "guiligatures", "guioptions", "guipty", "guitablabel", "guitabtooltip", "helpfile", "helpheight", "helplang", "hf", "hh", "hi", "hid", "hidden", "highlight", "history", "hk", "hkmap", "hkmapp", "hkp", "hl", "hlg", "hls", "hlsearch", "ic", "icon", "iconstring", "ignorecase", "im", "imactivatefunc", "imactivatekey", "imaf", "imak", "imc", "imcmdline", "imd", "imdisable", "imi", "iminsert", "ims", "imsearch", "imsf", "imst", "imstatusfunc", "imstyle", "inc", "include", "includeexpr", "incsearch", "inde", "indentexpr", "indentkeys", "indk", "inex", "inf", "infercase", "insertmode", "invac", "invacd", "invai", "invallowrevins", "invar", "invarab", "invarabic", "invarabicshape", "invari", "invarshape", "invasd", "invautochdir", "invautocomplete", "invautoindent", "invautoread", "invautoshelldir", "invautowrite", "invautowriteall", "invaw", "invawa", "invbackup", "invballooneval", "invballoonevalterm", "invbeval", "invbevalterm", "invbin", "invbinary", "invbk", "invbl", "invbomb", "invbreakindent", "invbri", "invbuflisted", "invcdh", "invcdhome", "invcf", "invci", "invcin", "invcindent", "invcompatible", "invconfirm", "invcopyindent", "invcp", "invcrb", "invcscoperelative", "invcscopetag", "invcscopeverbose", "invcsre", "invcst", "invcsverb", "invcuc", "invcul", "invcursorbind", "invcursorcolumn", "invcursorline", "invdeco", "invdelcombine", "invdg", "invdiff", "invdigraph", "invea", "inveb", "inved", "invedcompatible", "invek", "invemo", "invemoji", "invendoffile", "invendofline", "inveof", "inveol", "invequalalways", "inverrorbells", "invesckeys", "invet", "invex", "invexpandtab", "invexrc", "invfen", "invfic", "invfileignorecase", "invfixendofline", "invfixeol", "invfoldenable", "invfs", "invfsync", "invgd", "invgdefault", "invguipty", "invhid", "invhidden", "invhk", "invhkmap", "invhkmapp", "invhkp", "invhls", "invhlsearch", "invic", "invicon", "invignorecase", "invim", "invimc", "invimcmdline", "invimd", "invimdisable", "invincsearch", "invinf", "invinfercase", "invinsertmode", "invis", "invjoinspaces", "invjs", "invlangnoremap", "invlangremap", "invlazyredraw", "invlbr", "invlinebreak", "invlisp", "invlist", "invlnr", "invloadplugins", "invlpl", "invlrm", "invlz", "invma", "invmagic", "invmh", "invml", "invmle", "invmod", "invmodeline", "invmodelineexpr", "invmodifiable", "invmodified", "invmore", "invmousef", "invmousefocus", "invmousehide", "invmousemev", "invmousemoveevent", "invnu", "invnumber", "invodev", "invopendevice", "invpaste", "invpi", "invpreserveindent", "invpreviewwindow", "invprompt", "invpvw", "invreadonly", "invrelativenumber", "invremap", "invrestorescreen", "invrevins", "invri", "invrightleft", "invrl", "invrnu", "invro", "invrs", "invru", "invruler", "invsb", "invsc", "invscb", "invscf", "invscrollbind", "invscrollfocus", "invscs", "invsecure", "invsft", "invshellslash", "invshelltemp", "invshiftround", "invshortname", "invshowcmd", "invshowfulltag", "invshowmatch", "invshowmode", "invsi", "invsm", "invsmartcase", "invsmartindent", "invsmarttab", "invsmd", "invsmoothscroll", "invsms", "invsn", "invsol", "invspell", "invsplitbelow", "invsplitright", "invspr", "invsr", "invssl", "invsta", "invstartofline", "invstmp", "invswapfile", "invswf", "invta", "invtagbsearch", "invtagrelative", "invtagstack", "invtbi", "invtbidi", "invtbs", "invtermbidi", "invtermguicolors", "invterse", "invtextauto", "invtextmode", "invtf", "invtgc", "invtgst", "invtildeop", "invtimeout", "invtitle", "invto", "invtop", "invtr", "invttimeout", "invttybuiltin", "invttyfast", "invtx", "invudf", "invundofile", "invvb", "invvisualbell", "invwa", "invwarn", "invwb", "invweirdinvert", "invwfb", "invwfh", "invwfw", "invwic", "invwildignorecase", "invwildmenu", "invwinfixbuf", "invwinfixheight", "invwinfixwidth", "invwiv", "invwlsteal", "invwmnu", "invwrap", "invwrapscan", "invwrite", "invwriteany", "invwritebackup", "invws", "invwst", "invxtermcodes", "is", "isf", "isfname", "isi", "isident", "isk", "iskeyword", "isp", "isprint", "joinspaces", "jop", "js", "jumpoptions", "key", "keymap", "keymodel", "keyprotocol", "keywordprg", "km", "kmp", "kp", "kpc", "langmap", "langmenu", "langnoremap", "langremap", "laststatus", "lazyredraw", "lbr", "lcs", "lhi", "lhistory", "linebreak", "lines", "linespace", "lisp", "lispoptions", "lispwords", "list", "listchars", "lm", "lmap", "lnr", "loadplugins", "lop", "lpl", "lrm", "ls", "lsp", "luadll", "lw", "lz", "ma", "magic", "makeef", "makeencoding", "makeprg", "mat", "matchpairs", "matchtime", "maxcombine", "maxfuncdepth", "maxmapdepth", "maxmem", "maxmempattern", "maxmemtot", "maxsearchcount", "mco", "mef", "menc", "menuitems", "messagesopt", "mfd", "mh", "mis", "mkspellmem", "ml", "mle", "mls", "mm", "mmd", "mmp", "mmt", "mod", "modeline", "modelineexpr", "modelines", "modifiable", "modified", "mopt", "more", "mouse", "mousef", "mousefocus", "mousehide", "mousem", "mousemev", "mousemodel", "mousemoveevent", "mouses", "mouseshape", "mouset", "mousetime", "mp", "mps", "msc", "msm", "mzq", "mzquantum", "mzschemedll", "mzschemegcdll", "nextgroup", "nf", "noac", "noacd", "noai", "noallowrevins", "noar", "noarab", "noarabic", "noarabicshape", "noari", "noarshape", "noasd", "noautochdir", "noautocomplete", "noautoindent", "noautoread", "noautoshelldir", "noautowrite", "noautowriteall", "noaw", "noawa", "nobackup", "noballooneval", "noballoonevalterm", "nobeval", "nobevalterm", "nobin", "nobinary", "nobk", "nobl", "nobomb", "nobreakindent", "nobri", "nobuflisted", "nocdh", "nocdhome", "nocf", "noci", "nocin", "nocindent", "nocompatible", "noconfirm", "nocopyindent", "nocp", "nocrb", "nocscoperelative", "nocscopetag", "nocscopeverbose", "nocsre", "nocst", "nocsverb", "nocuc", "nocul", "nocursorbind", "nocursorcolumn", "nocursorline", "nodeco", "nodelcombine", "nodg", "nodiff", "nodigraph", "noea", "noeb", "noed", "noedcompatible", "noek", "noemo", "noemoji", "noendoffile", "noendofline", "noeof", "noeol", "noequalalways", "noerrorbells", "noesckeys", "noet", "noex", "noexpandtab", "noexrc", "nofen", "nofic", "nofileignorecase", "nofixendofline", "nofixeol", "nofoldenable", "nofs", "nofsync", "nogd", "nogdefault", "noguipty", "nohid", "nohidden", "nohk", "nohkmap", "nohkmapp", "nohkp", "nohls", "nohlsearch", "noic", "noicon", "noignorecase", "noim", "noimc", "noimcmdline", "noimd", "noimdisable", "noincsearch", "noinf", "noinfercase", "noinsertmode", "nois", "nojoinspaces", "nojs", "nolangnoremap", "nolangremap", "nolazyredraw", "nolbr", "nolinebreak", "nolisp", "nolist", "nolnr", "noloadplugins", "nolpl", "nolrm", "nolz", "noma", "nomagic", "nomh", "noml", "nomle", "nomod", "nomodeline", "nomodelineexpr", "nomodifiable", "nomodified", "nomore", "nomousef", "nomousefocus", "nomousehide", "nomousemev", "nomousemoveevent", "nonu", "nonumber", "noodev", "noopendevice", "nopaste", "nopi", "nopreserveindent", "nopreviewwindow", "noprompt", "nopvw", "noreadonly", "norelativenumber", "noremap", "norestorescreen", "norevins", "nori", "norightleft", "norl", "nornu", "noro", "nors", "noru", "noruler", "nosb", "nosc", "noscb", "noscf", "noscrollbind", "noscrollfocus", "noscs", "nosecure", "nosft", "noshellslash", "noshelltemp", "noshiftround", "noshortname", "noshowcmd", "noshowfulltag", "noshowmatch", "noshowmode", "nosi", "nosm", "nosmartcase", "nosmartindent", "nosmarttab", "nosmd", "nosmoothscroll", "nosms", "nosn", "nosol", "nospell", "nosplitbelow", "nosplitright", "nospr", "nosr", "nossl", "nosta", "nostartofline", "nostmp", "noswapfile", "noswf", "nota", "notagbsearch", "notagrelative", "notagstack", "notbi", "notbidi", "notbs", "notermbidi", "notermguicolors", "noterse", "notextauto", "notextmode", "notf", "notgc", "notgst", "notildeop", "notimeout", "notitle", "noto", "notop", "notr", "nottimeout", "nottybuiltin", "nottyfast", "notx", "noudf", "noundofile", "novb", "novisualbell", "nowa", "nowarn", "nowb", "noweirdinvert", "nowfb", "nowfh", "nowfw", "nowic", "nowildignorecase", "nowildmenu", "nowinfixbuf", "nowinfixheight", "nowinfixwidth", "nowiv", "nowlsteal", "nowmnu", "nowrap", "nowrapscan", "nowrite", "nowriteany", "nowritebackup", "nows", "nowst", "noxtermcodes", "nrformats", "nu", "number", "numberwidth", "nuw", "odev", "ofu", "omnifunc", "opendevice", "operatorfunc", "opfunc", "osctimeoutlen", "ost", "pa", "packpath", "para", "paragraphs", "paste", "pastetoggle", "patchexpr", "patchmode", "path", "pb", "pdev", "penc", "perldll", "pex", "pexpr", "pfn", "ph", "pheader", "pi", "pm", "pmbcs", "pmbfn", "pmw", "popt", "pp", "preserveindent", "previewheight", "previewpopup", "previewwindow", "printdevice", "printencoding", "printexpr", "printfont", "printheader", "printmbcharset", "printmbfont", "printoptions", "prompt", "pt", "pumborder", "pumheight", "pummaxwidth", "pumwidth", "pvh", "pvp", "pvw", "pw", "pythondll", "pythonhome", "pythonthreedll", "pythonthreehome", "pyx", "pyxversion", "qe", "qftf", "quickfixtextfunc", "quoteescape", "rdt", "re", "readonly", "redrawtime", "regexpengine", "relativenumber", "remap", "renderoptions", "report", "restorescreen", "revins", "ri", "rightleft", "rightleftcmd", "rl", "rlc", "rnu", "ro", "rop", "rs", "rtp", "ru", "rubydll", "ruf", "ruler", "rulerformat", "runtimepath", "sb", "sbo", "sbr", "sc", "scb", "scf", "scl", "scr", "scroll", "scrollbind", "scrollfocus", "scrolljump", "scrolloff", "scrollopt", "scs", "sect", "sections", "secure", "sel", "selection", "selectmode", "sessionoptions", "sft", "sh", "shcf", "shell", "shellcmdflag", "shellpipe", "shellquote", "shellredir", "shellslash", "shelltemp", "shelltype", "shellxescape", "shellxquote", "shiftround", "shiftwidth", "shm", "shortmess", "shortname", "showbreak", "showcmd", "showcmdloc", "showfulltag", "showmatch", "showmode", "showtabline", "showtabpanel", "shq", "si", "sidescroll", "sidescrolloff", "signcolumn", "siso", "sj", "skipwhite", "slm", "sloc", "sm", "smartcase", "smartindent", "smarttab", "smc", "smd", "smoothscroll", "sms", "sn", "so", "softtabstop", "sol", "sp", "spc", "spell", "spellcapcheck", "spellfile", "spelllang", "spelloptions", "spellsuggest", "spf", "spk", "spl", "splitbelow", "splitkeep", "splitright", "spo", "spr", "sps", "sr", "srr", "ss", "ssl", "ssop", "st", "sta", "stal", "startofline", "statusline", "stl", "stmp", "stpl", "sts", "su", "sua", "suffixes", "suffixesadd", "sw", "swapfile", "swapsync", "swb", "swf", "switchbuf", "sws", "sxe", "sxq", "syn", "synmaxcol", "syntax", "t_8b", "t_8f", "t_8u", "t_AB", "t_AF", "t_AL", "t_AU", "t_BD", "t_BE", "t_CF", "t_CS", "t_CV", "t_Ce", "t_Co", "t_Cs", "t_DL", "t_Ds", "t_EC", "t_EI", "t_F1", "t_F2", "t_F3", "t_F4", "t_F5", "t_F6", "t_F7", "t_F8", "t_F9", "t_GP", "t_IE", "t_IS", "t_K1", "t_K3", "t_K4", "t_K5", "t_K6", "t_K7", "t_K8", "t_K9", "t_KA", "t_KB", "t_KC", "t_KD", "t_KE", "t_KF", "t_KG", "t_KH", "t_KI", "t_KJ", "t_KK", "t_KL", "t_RB", "t_RC", "t_RF", "t_RI", "t_RK", "t_RS", "t_RT", "t_RV", "t_Ri", "t_SC", "t_SH", "t_SI", "t_SR", "t_ST", "t_Sb", "t_Sf", "t_Si", "t_TE", "t_TI", "t_Te", "t_Ts", "t_Us", "t_VS", "t_WP", "t_WS", "t_XM", "t_ZH", "t_ZR", "t_al", "t_bc", "t_cd", "t_ce", "t_cl", "t_cm", "t_cs", "t_da", "t_db", "t_dl", "t_ds", "t_fd", "t_fe", "t_fs", "t_k1", "t_k2", "t_k3", "t_k4", "t_k5", "t_k6", "t_k7", "t_k8", "t_k9", "t_kB", "t_kD", "t_kI", "t_kN", "t_kP", "t_kb", "t_kd", "t_ke", "t_kh", "t_kl", "t_kr", "t_ks", "t_ku", "t_le", "t_mb", "t_md", "t_me", "t_mr", "t_ms", "t_nd", "t_op", "t_se", "t_so", "t_sr", "t_te", "t_ti", "t_ts", "t_u7", "t_ue", "t_us", "t_ut", "t_vb", "t_ve", "t_vi", "t_vs", "t_xn", "t_xo", "t_xs", "ta", "tabclose", "tabline", "tabpagemax", "tabpanel", "tabpanelopt", "tabstop", "tag", "tagbsearch", "tagcase", "tagfunc", "taglength", "tagrelative", "tags", "tagstack", "tal", "tb", "tbi", "tbidi", "tbis", "tbs", "tc", "tcl", "tcldll", "tenc", "term", "termbidi", "termencoding", "termguicolors", "termwinkey", "termwinscroll", "termwinsize", "termwintype", "terse", "textauto", "textmode", "textwidth", "tf", "tfu", "tgc", "tgst", "thesaurus", "thesaurusfunc", "tildeop", "timeout", "timeoutlen", "title", "titlelen", "titleold", "titlestring", "tl", "tm", "to", "toolbar", "toolbariconsize", "top", "tpl", "tplo", "tpm", "tr", "ts", "tsl", "tsr", "tsrfu", "ttimeout", "ttimeoutlen", "ttm", "tty", "ttybuiltin", "ttyfast", "ttym", "ttymouse", "ttyscroll", "ttytype", "tw", "twk", "tws", "twsl", "twt", "tx", "uc", "udf", "udir", "ul", "undodir", "undofile", "undolevels", "undoreload", "updatecount", "updatetime", "ur", "ut", "varsofttabstop", "vartabstop", "vb", "vbs", "vdir", "ve", "verbose", "verbosefile", "vfile", "vi", "viewdir", "viewoptions", "vif", "vimSetEqual", "vimSetMod", "viminfo", "viminfofile", "virtualedit", "visualbell", "vop", "vsts", "vts", "wa", "wak", "warn", "wb", "wc", "wcm", "wcr", "wd", "weirdinvert", "wfb", "wfh", "wfw", "wh", "whichwrap", "wi", "wic", "wig", "wildchar", "wildcharm", "wildignore", "wildignorecase", "wildmenu", "wildmode", "wildoptions", "wim", "winaltkeys", "wincolor", "window", "winfixbuf", "winfixheight", "winfixwidth", "winheight", "winminheight", "winminwidth", "winptydll", "winwidth", "wiv", "wiw", "wlseat", "wlsteal", "wltimeoutlen", "wm", "wmh", "wmnu", "wmw", "wop", "wrap", "wrapmargin", "wrapscan", "write", "writeany", "writebackup", "writedelay", "ws", "wse", "wst", "wtm", "ww", "xtermcodes"]
14
+ kw[:auto] = Set.new ["BufAdd", "BufCreate", "BufDelete", "BufEnter", "BufFilePost", "BufFilePre", "BufHidden", "BufLeave", "BufNew", "BufNewFile", "BufRead", "BufReadCmd", "BufReadPost", "BufReadPre", "BufUnload", "BufWinEnter", "BufWinLeave", "BufWipeout", "BufWrite", "BufWriteCmd", "BufWritePost", "BufWritePre", "CmdUndefined", "CmdlineChanged", "CmdlineEnter", "CmdlineLeave", "CmdlineLeavePre", "CmdwinEnter", "CmdwinLeave", "ColorScheme", "ColorSchemePre", "CompleteChanged", "CompleteDone", "CompleteDonePre", "CursorHold", "CursorHoldI", "CursorMoved", "CursorMovedC", "CursorMovedI", "DiffUpdated", "DirChanged", "DirChangedPre", "EncodingChanged", "ExitPre", "FileAppendCmd", "FileAppendPost", "FileAppendPre", "FileChangedRO", "FileChangedShell", "FileChangedShellPost", "FileEncoding", "FileReadCmd", "FileReadPost", "FileReadPre", "FileType", "FileWriteCmd", "FileWritePost", "FileWritePre", "FilterReadPost", "FilterReadPre", "FilterWritePost", "FilterWritePre", "FocusGained", "FocusLost", "FuncUndefined", "GUIEnter", "GUIFailed", "InsertChange", "InsertCharPre", "InsertEnter", "InsertLeave", "InsertLeavePre", "KeyInputPre", "MenuPopup", "ModeChanged", "OptionSet", "QuickFixCmdPost", "QuickFixCmdPre", "QuitPre", "RemoteReply", "SafeState", "SafeStateAgain", "SessionLoadPost", "SessionWritePost", "ShellCmdPost", "ShellFilterPost", "SigUSR1", "SourceCmd", "SourcePost", "SourcePre", "SpellFileMissing", "StdinReadPost", "StdinReadPre", "SwapExists", "Syntax", "TabClosed", "TabClosedPre", "TabEnter", "TabLeave", "TabNew", "TermChanged", "TermResponse", "TermResponseAll", "TerminalOpen", "TerminalWinOpen", "TextChanged", "TextChangedI", "TextChangedP", "TextChangedT", "TextYankPost", "VimEnter", "VimLeave", "VimLeavePre", "VimResized", "VimResume", "VimSuspend", "WinClosed", "WinEnter", "WinLeave", "WinNew", "WinNewPre", "WinResized", "WinScrolled", "nextgroup", "skipwhite", "vimAutoEventSep", "vimAutocmdPattern"]
15
+ kw[:function] = Set.new ["abs", "acos", "add", "and", "append", "appendbufline", "argc", "argidx", "arglistid", "argv", "asin", "assert_beeps", "assert_equal", "assert_equalfile", "assert_exception", "assert_fails", "assert_false", "assert_inrange", "assert_match", "assert_nobeep", "assert_notequal", "assert_notmatch", "assert_report", "assert_true", "atan", "atan2", "autocmd_add", "autocmd_delete", "autocmd_get", "balloon_gettext", "balloon_show", "balloon_split", "base64_decode", "base64_encode", "bindtextdomain", "blob2list", "blob2str", "browse", "browsedir", "bufadd", "bufexists", "buflisted", "bufload", "bufloaded", "bufname", "bufnr", "bufwinid", "bufwinnr", "byte2line", "byteidx", "byteidxcomp", "call", "ceil", "ch_canread", "ch_close", "ch_close_in", "ch_evalexpr", "ch_evalraw", "ch_getbufnr", "ch_getjob", "ch_info", "ch_log", "ch_logfile", "ch_open", "ch_read", "ch_readblob", "ch_readraw", "ch_sendexpr", "ch_sendraw", "ch_setoptions", "ch_status", "changenr", "char2nr", "charclass", "charcol", "charidx", "chdir", "cindent", "clearmatches", "cmdcomplete_info", "col", "complete", "complete_add", "complete_check", "complete_info", "confirm", "copy", "cos", "cosh", "count", "cscope_connection", "cursor", "debugbreak", "deepcopy", "delete", "deletebufline", "did_filetype", "diff", "diff_filler", "diff_hlID", "digraph_get", "digraph_getlist", "digraph_set", "digraph_setlist", "echoraw", "empty", "environ", "err_teapot", "escape", "eval", "eventhandler", "executable", "execute", "exepath", "exists", "exists_compiled", "exp", "expand", "expandcmd", "extend", "extendnew", "feedkeys", "filecopy", "filereadable", "filewritable", "filter", "finddir", "findfile", "flatten", "flattennew", "float2nr", "floor", "fmod", "fnameescape", "fnamemodify", "foldclosed", "foldclosedend", "foldlevel", "foldtext", "foldtextresult", "foreach", "foreground", "fullcommand", "funcref", "function", "garbagecollect", "get", "getbufinfo", "getbufline", "getbufoneline", "getbufvar", "getcellpixels", "getcellwidths", "getchangelist", "getchar", "getcharmod", "getcharpos", "getcharsearch", "getcharstr", "getcmdcomplpat", "getcmdcompltype", "getcmdline", "getcmdpos", "getcmdprompt", "getcmdscreenpos", "getcmdtype", "getcmdwintype", "getcompletion", "getcompletiontype", "getcurpos", "getcursorcharpos", "getcwd", "getenv", "getfontname", "getfperm", "getfsize", "getftime", "getftype", "getimstatus", "getjumplist", "getline", "getloclist", "getmarklist", "getmatches", "getmousepos", "getmouseshape", "getpid", "getpos", "getqflist", "getreg", "getreginfo", "getregion", "getregionpos", "getregtype", "getscriptinfo", "getstacktrace", "gettabinfo", "gettabvar", "gettabwinvar", "gettagstack", "gettext", "getwininfo", "getwinpos", "getwinposx", "getwinposy", "getwinvar", "glob", "glob2regpat", "globpath", "has", "has_key", "haslocaldir", "hasmapto", "histadd", "histdel", "histget", "histnr", "hlID", "hlexists", "hlget", "hlset", "hostname", "iconv", "id", "indent", "index", "indexof", "input", "inputdialog", "inputlist", "inputrestore", "inputsave", "inputsecret", "insert", "instanceof", "interrupt", "invert", "isabsolutepath", "isdirectory", "isinf", "islocked", "isnan", "items", "job_getchannel", "job_info", "job_setoptions", "job_start", "job_status", "job_stop", "join", "js_decode", "js_encode", "json_decode", "json_encode", "keys", "keytrans", "len", "libcall", "libcallnr", "line", "line2byte", "lispindent", "list2blob", "list2str", "list2tuple", "listener_add", "listener_flush", "listener_remove", "localtime", "log", "log10", "luaeval", "map", "maparg", "mapcheck", "maplist", "mapnew", "mapset", "match", "matchadd", "matchaddpos", "matcharg", "matchbufline", "matchdelete", "matchend", "matchfuzzy", "matchfuzzypos", "matchlist", "matchstr", "matchstrlist", "matchstrpos", "max", "menu_info", "min", "mkdir", "mode", "mzeval", "nextnonblank", "ngettext", "nr2char", "or", "pathshorten", "perleval", "popup_atcursor", "popup_beval", "popup_clear", "popup_close", "popup_create", "popup_dialog", "popup_filter_menu", "popup_filter_yesno", "popup_findecho", "popup_findinfo", "popup_findpreview", "popup_getoptions", "popup_getpos", "popup_hide", "popup_list", "popup_locate", "popup_menu", "popup_move", "popup_notification", "popup_setbuf", "popup_setoptions", "popup_settext", "popup_show", "pow", "preinserted", "prevnonblank", "printf", "prompt_getprompt", "prompt_setcallback", "prompt_setinterrupt", "prompt_setprompt", "prop_add", "prop_add_list", "prop_clear", "prop_find", "prop_list", "prop_remove", "prop_type_add", "prop_type_change", "prop_type_delete", "prop_type_get", "prop_type_list", "pum_getpos", "pumvisible", "py3eval", "pyeval", "pyxeval", "rand", "range", "readblob", "readdir", "readdirex", "readfile", "redraw_listener_add", "redraw_listener_remove", "reduce", "reg_executing", "reg_recording", "reltime", "reltimefloat", "reltimestr", "remote_expr", "remote_foreground", "remote_peek", "remote_read", "remote_send", "remote_startserver", "remove", "rename", "repeat", "resolve", "reverse", "round", "rubyeval", "screenattr", "screenchar", "screenchars", "screencol", "screenpos", "screenrow", "screenstring", "search", "searchcount", "searchdecl", "searchpair", "searchpairpos", "searchpos", "server2client", "serverlist", "setbufline", "setbufvar", "setcellwidths", "setcharpos", "setcharsearch", "setcmdline", "setcmdpos", "setcursorcharpos", "setenv", "setfperm", "setline", "setloclist", "setmatches", "setpos", "setqflist", "setreg", "settabvar", "settabwinvar", "settagstack", "setwinvar", "sha256", "shellescape", "shiftwidth", "sign_define", "sign_getdefined", "sign_getplaced", "sign_jump", "sign_place", "sign_placelist", "sign_undefine", "sign_unplace", "sign_unplacelist", "simplify", "sin", "sinh", "slice", "sort", "sound_clear", "sound_playevent", "sound_playfile", "sound_stop", "soundfold", "spellbadword", "spellsuggest", "split", "sqrt", "srand", "state", "str2blob", "str2float", "str2list", "str2nr", "strcharlen", "strcharpart", "strchars", "strdisplaywidth", "strftime", "strgetchar", "stridx", "string", "strlen", "strpart", "strptime", "strridx", "strtrans", "strutf16len", "strwidth", "submatch", "substitute", "swapfilelist", "swapinfo", "swapname", "synID", "synIDattr", "synIDtrans", "synconcealed", "synstack", "system", "systemlist", "tabpagebuflist", "tabpagenr", "tabpagewinnr", "tagfiles", "taglist", "tan", "tanh", "tempname", "term_dumpdiff", "term_dumpload", "term_dumpwrite", "term_getaltscreen", "term_getansicolors", "term_getattr", "term_getcursor", "term_getjob", "term_getline", "term_getscrolled", "term_getsize", "term_getstatus", "term_gettitle", "term_gettty", "term_list", "term_scrape", "term_sendkeys", "term_setansicolors", "term_setapi", "term_setkill", "term_setrestore", "term_setsize", "term_start", "term_wait", "terminalprops", "test_alloc_fail", "test_autochdir", "test_feedinput", "test_garbagecollect_now", "test_garbagecollect_soon", "test_getvalue", "test_gui_event", "test_ignore_error", "test_mswin_event", "test_null_blob", "test_null_channel", "test_null_dict", "test_null_function", "test_null_job", "test_null_list", "test_null_partial", "test_null_string", "test_null_tuple", "test_option_not_set", "test_override", "test_refcount", "test_setmouse", "test_settime", "test_srand_seed", "test_unknown", "test_void", "timer_info", "timer_pause", "timer_start", "timer_stop", "timer_stopall", "tolower", "toupper", "tr", "trim", "trunc", "tuple2list", "type", "typename", "undofile", "undotree", "uniq", "uri_decode", "uri_encode", "utf16idx", "values", "virtcol", "virtcol2col", "visualmode", "wildmenumode", "wildtrigger", "win_execute", "win_findbuf", "win_getid", "win_gettype", "win_gotoid", "win_id2tabwin", "win_id2win", "win_move_separator", "win_move_statusline", "win_screenpos", "win_splitmove", "winbufnr", "wincol", "windowsversion", "winheight", "winlayout", "winline", "winnr", "winrestcmd", "winrestview", "winsaveview", "winwidth", "wordcount", "writefile", "xor"]
18
16
  end
19
17
  end
20
18
  end
@@ -13,9 +13,8 @@ module Rouge
13
13
 
14
14
  mimetypes 'text/x-vim'
15
15
 
16
- def self.keywords
17
- Kernel::load File.join(Lexers::BASE_DIR, 'viml/keywords.rb')
18
- self.keywords
16
+ lazy do
17
+ require_relative 'viml/keywords'
19
18
  end
20
19
 
21
20
  state :root do
@@ -47,15 +46,14 @@ module Rouge
47
46
  rule %r/[absg]:\w+\b/, Name::Variable
48
47
  rule %r/\b\w+\b/ do |m|
49
48
  name = m[0]
50
- keywords = self.class.keywords
51
49
 
52
- if keywords[:command].include? name
50
+ if KEYWORDS[:command].include? name
53
51
  token Keyword
54
- elsif keywords[:function].include? name
55
- token Name::Builtin
56
- elsif keywords[:option].include? name
57
- token Name::Builtin
58
- elsif keywords[:auto].include? name
52
+ elsif (
53
+ KEYWORDS[:function].include?(name) ||
54
+ KEYWORDS[:option].include?(name) ||
55
+ KEYWORDS[:auto].include?(name)
56
+ )
59
57
  token Name::Builtin
60
58
  else
61
59
  token Text