rouge 3.16.0 → 3.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rougify +2 -2
  3. data/lib/rouge.rb +67 -53
  4. data/lib/rouge/demos/augeas +16 -0
  5. data/lib/rouge/demos/bibtex +12 -0
  6. data/lib/rouge/demos/brightscript +6 -0
  7. data/lib/rouge/demos/cypher +5 -0
  8. data/lib/rouge/demos/datastudio +21 -0
  9. data/lib/rouge/demos/ecl +18 -0
  10. data/lib/rouge/demos/ghc-cmm +23 -0
  11. data/lib/rouge/demos/hlsl +20 -0
  12. data/lib/rouge/demos/isbl +4 -0
  13. data/lib/rouge/demos/janet +3 -0
  14. data/lib/rouge/demos/livescript +15 -0
  15. data/lib/rouge/demos/rego +8 -0
  16. data/lib/rouge/demos/solidity +13 -0
  17. data/lib/rouge/demos/ssh +4 -0
  18. data/lib/rouge/demos/vcl +12 -0
  19. data/lib/rouge/demos/velocity +9 -0
  20. data/lib/rouge/demos/yang +17 -0
  21. data/lib/rouge/demos/zig +6 -0
  22. data/lib/rouge/lexer.rb +2 -1
  23. data/lib/rouge/lexers/apache.rb +22 -12
  24. data/lib/rouge/lexers/apache/keywords.rb +24 -0
  25. data/lib/rouge/lexers/augeas.rb +93 -0
  26. data/lib/rouge/lexers/batchfile.rb +1 -1
  27. data/lib/rouge/lexers/bibtex.rb +115 -0
  28. data/lib/rouge/lexers/brightscript.rb +147 -0
  29. data/lib/rouge/lexers/cmake.rb +1 -0
  30. data/lib/rouge/lexers/coffeescript.rb +47 -15
  31. data/lib/rouge/lexers/console.rb +53 -37
  32. data/lib/rouge/lexers/cpp.rb +21 -7
  33. data/lib/rouge/lexers/css.rb +3 -1
  34. data/lib/rouge/lexers/cypher.rb +108 -0
  35. data/lib/rouge/lexers/datastudio.rb +138 -0
  36. data/lib/rouge/lexers/diff.rb +1 -1
  37. data/lib/rouge/lexers/docker.rb +1 -1
  38. data/lib/rouge/lexers/ecl.rb +175 -0
  39. data/lib/rouge/lexers/fsharp.rb +1 -0
  40. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  41. data/lib/rouge/lexers/gherkin.rb +1 -1
  42. data/lib/rouge/lexers/gherkin/keywords.rb +9 -6
  43. data/lib/rouge/lexers/haskell.rb +27 -19
  44. data/lib/rouge/lexers/hlsl.rb +166 -0
  45. data/lib/rouge/lexers/html.rb +7 -7
  46. data/lib/rouge/lexers/isbl.rb +97 -0
  47. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  48. data/lib/rouge/lexers/janet.rb +217 -0
  49. data/lib/rouge/lexers/javascript.rb +4 -4
  50. data/lib/rouge/lexers/jinja.rb +22 -7
  51. data/lib/rouge/lexers/json.rb +3 -0
  52. data/lib/rouge/lexers/json_doc.rb +1 -0
  53. data/lib/rouge/lexers/jsx.rb +47 -59
  54. data/lib/rouge/lexers/julia.rb +4 -2
  55. data/lib/rouge/lexers/kotlin.rb +14 -2
  56. data/lib/rouge/lexers/lasso.rb +11 -12
  57. data/lib/rouge/lexers/lasso/keywords.rb +20 -0
  58. data/lib/rouge/lexers/livescript.rb +310 -0
  59. data/lib/rouge/lexers/llvm.rb +6 -33
  60. data/lib/rouge/lexers/llvm/keywords.rb +25 -0
  61. data/lib/rouge/lexers/lua.rb +2 -2
  62. data/lib/rouge/lexers/lua/keywords.rb +28 -0
  63. data/lib/rouge/lexers/markdown.rb +9 -5
  64. data/lib/rouge/lexers/mathematica.rb +2 -2
  65. data/lib/rouge/lexers/mathematica/keywords.rb +17 -0
  66. data/lib/rouge/lexers/matlab.rb +3 -4
  67. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  68. data/lib/rouge/lexers/matlab/keywords.rb +15 -0
  69. data/lib/rouge/lexers/nasm.rb +42 -168
  70. data/lib/rouge/lexers/opentype_feature_file.rb +27 -42
  71. data/lib/rouge/lexers/pascal.rb +1 -1
  72. data/lib/rouge/lexers/perl.rb +21 -3
  73. data/lib/rouge/lexers/php.rb +48 -33
  74. data/lib/rouge/lexers/php/keywords.rb +202 -0
  75. data/lib/rouge/lexers/powershell.rb +5 -3
  76. data/lib/rouge/lexers/python.rb +58 -57
  77. data/lib/rouge/lexers/racket.rb +24 -1
  78. data/lib/rouge/lexers/rego.rb +60 -0
  79. data/lib/rouge/lexers/ruby.rb +16 -3
  80. data/lib/rouge/lexers/sass/common.rb +1 -0
  81. data/lib/rouge/lexers/scala.rb +1 -1
  82. data/lib/rouge/lexers/solidity.rb +185 -0
  83. data/lib/rouge/lexers/sparql.rb +5 -4
  84. data/lib/rouge/lexers/sqf.rb +2 -2
  85. data/lib/rouge/lexers/sqf/keywords.rb +12 -0
  86. data/lib/rouge/lexers/ssh.rb +33 -0
  87. data/lib/rouge/lexers/terraform.rb +15 -0
  88. data/lib/rouge/lexers/tsx.rb +10 -3
  89. data/lib/rouge/lexers/turtle.rb +1 -1
  90. data/lib/rouge/lexers/twig.rb +4 -4
  91. data/lib/rouge/lexers/typescript.rb +1 -8
  92. data/lib/rouge/lexers/typescript/common.rb +18 -4
  93. data/lib/rouge/lexers/varnish.rb +53 -16
  94. data/lib/rouge/lexers/velocity.rb +71 -0
  95. data/lib/rouge/lexers/viml.rb +6 -38
  96. data/lib/rouge/lexers/viml/keywords.rb +11 -4
  97. data/lib/rouge/lexers/vue.rb +4 -1
  98. data/lib/rouge/lexers/xml.rb +5 -3
  99. data/lib/rouge/lexers/yaml.rb +5 -3
  100. data/lib/rouge/lexers/yang.rb +147 -0
  101. data/lib/rouge/lexers/zig.rb +139 -0
  102. data/lib/rouge/version.rb +1 -1
  103. metadata +47 -10
  104. data/lib/rouge/demos/varnish +0 -55
  105. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  106. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
  107. data/lib/rouge/lexers/lua/builtins.rb +0 -24
  108. data/lib/rouge/lexers/mathematica/builtins.rb +0 -13
  109. data/lib/rouge/lexers/matlab/builtins.yml +0 -3515
  110. data/lib/rouge/lexers/php/builtins.rb +0 -203
  111. data/lib/rouge/lexers/sqf/commands.rb +0 -15
@@ -1,13 +1,20 @@
1
- # encoding: utf-8
1
+ # -*- coding: utf-8 -*- #
2
2
  # frozen_string_literal: true
3
3
 
4
- # DO NOT EDIT: automatically generated by `rake builtins:vim`.
5
- # see tasks/vim.rake for more info.
4
+ # DO NOT EDIT
5
+ # This file is automatically generated by `rake builtins:viml`.
6
+ # See tasks/builtins/viml.rake for more info.
7
+
6
8
  module Rouge
7
9
  module Lexers
8
10
  class VimL
9
11
  def self.keywords
10
- @keywords ||= {:command=>[["a", "a"], ["abc", "abclear"], ["abo", "aboveleft"], ["al", "all"], ["ar", "args"], ["arga", "argadd"], ["argd", "argdelete"], ["argdo", "argdo"], ["arge", "argedit"], ["argg", "argglobal"], ["argl", "arglocal"], ["argu", "argument"], ["as", "ascii"], ["au", "au"], ["b", "buffer"], ["bN", "bNext"], ["ba", "ball"], ["bad", "badd"], ["bd", "bdelete"], ["bel", "belowright"], ["bf", "bfirst"], ["bl", "blast"], ["bm", "bmodified"], ["bn", "bnext"], ["bo", "botright"], ["bp", "bprevious"], ["br", "brewind"], ["brea", "break"], ["breaka", "breakadd"], ["breakd", "breakdel"], ["breakl", "breaklist"], ["bro", "browse"], ["bufdo", "bufdo"], ["buffers", "buffers"], ["bun", "bunload"], ["bw", "bwipeout"], ["c", "change"], ["cN", "cNext"], ["cNf", "cNfile"], ["cabc", "cabclear"], ["cad", "caddbuffer"], ["cadde", "caddexpr"], ["caddf", "caddfile"], ["cal", "call"], ["cat", "catch"], ["cb", "cbuffer"], ["cbo", "cbottom"], ["cc", "cc"], ["ccl", "cclose"], ["cd", "cd"], ["cdo", "cdo"], ["ce", "center"], ["cex", "cexpr"], ["cf", "cfile"], ["cfdo", "cfdo"], ["cfir", "cfirst"], ["cg", "cgetfile"], ["cgetb", "cgetbuffer"], ["cgete", "cgetexpr"], ["changes", "changes"], ["chd", "chdir"], ["che", "checkpath"], ["checkt", "checktime"], ["chi", "chistory"], ["cl", "clist"], ["cla", "clast"], ["cle", "clearjumps"], ["clo", "close"], ["cmapc", "cmapclear"], ["cn", "cnext"], ["cnew", "cnewer"], ["cnf", "cnfile"], ["co", "copy"], ["col", "colder"], ["colo", "colorscheme"], ["com", "com"], ["comc", "comclear"], ["comp", "compiler"], ["con", "continue"], ["conf", "confirm"], ["cope", "copen"], ["cp", "cprevious"], ["cpf", "cpfile"], ["cq", "cquit"], ["cr", "crewind"], ["cs", "cs"], ["cscope", "cscope"], ["cstag", "cstag"], ["cuna", "cunabbrev"], ["cw", "cwindow"], ["d", "delete"], ["debug", "debug"], ["debugg", "debuggreedy"], ["delc", "delcommand"], ["delel", "delel"], ["delep", "delep"], ["deletel", "deletel"], ["deletep", "deletep"], ["deletl", "deletl"], ["deletp", "deletp"], ["delf", "delfunction"], ["dell", "dell"], ["delm", "delmarks"], ["delp", "delp"], ["dep", "dep"], ["di", "display"], ["dif", "diffupdate"], ["diffg", "diffget"], ["diffo", "diffoff"], ["diffp", "diffpatch"], ["diffpu", "diffput"], ["diffs", "diffsplit"], ["difft", "diffthis"], ["dig", "digraphs"], ["dir", "dir"], ["dj", "djump"], ["dl", "dl"], ["dli", "dlist"], ["do", "do"], ["doau", "doau"], ["dp", "dp"], ["dr", "drop"], ["ds", "dsearch"], ["dsp", "dsplit"], ["e", "edit"], ["ea", "ea"], ["earlier", "earlier"], ["echoe", "echoerr"], ["echom", "echomsg"], ["echon", "echon"], ["el", "else"], ["elsei", "elseif"], ["em", "emenu"], ["en", "endif"], ["endf", "endfunction"], ["endfo", "endfor"], ["endt", "endtry"], ["endw", "endwhile"], ["ene", "enew"], ["ex", "ex"], ["exi", "exit"], ["exu", "exusage"], ["f", "file"], ["files", "files"], ["filet", "filet"], ["filetype", "filetype"], ["filt", "filter"], ["fin", "find"], ["fina", "finally"], ["fini", "finish"], ["fir", "first"], ["fix", "fixdel"], ["fo", "fold"], ["foldc", "foldclose"], ["foldd", "folddoopen"], ["folddoc", "folddoclosed"], ["foldo", "foldopen"], ["for", "for"], ["fu", "function"], ["g", "g"], ["go", "goto"], ["gr", "grep"], ["grepa", "grepadd"], ["gui", "gui"], ["gvim", "gvim"], ["h", "help"], ["ha", "hardcopy"], ["helpc", "helpclose"], ["helpf", "helpfind"], ["helpg", "helpgrep"], ["helpt", "helptags"], ["hi", "hi"], ["hid", "hide"], ["his", "history"], ["i", "i"], ["iabc", "iabclear"], ["if", "if"], ["ij", "ijump"], ["il", "ilist"], ["imapc", "imapclear"], ["in", "in"], ["intro", "intro"], ["is", "isearch"], ["isp", "isplit"], ["iuna", "iunabbrev"], ["j", "join"], ["ju", "jumps"], ["k", "k"], ["kee", "keepmarks"], ["keepa", "keepa"], ["keepalt", "keepalt"], ["keepj", "keepjumps"], ["keepp", "keeppatterns"], ["l", "list"], ["lN", "lNext"], ["lNf", "lNfile"], ["la", "last"], ["lad", "laddexpr"], ["laddb", "laddbuffer"], ["laddf", "laddfile"], ["lan", "language"], ["lat", "lat"], ["later", "later"], ["lb", "lbuffer"], ["lbo", "lbottom"], ["lc", "lcd"], ["lch", "lchdir"], ["lcl", "lclose"], ["lcs", "lcs"], ["lcscope", "lcscope"], ["ld", "ldo"], ["le", "left"], ["lefta", "leftabove"], ["lex", "lexpr"], ["lf", "lfile"], ["lfdo", "lfdo"], ["lfir", "lfirst"], ["lg", "lgetfile"], ["lgetb", "lgetbuffer"], ["lgete", "lgetexpr"], ["lgr", "lgrep"], ["lgrepa", "lgrepadd"], ["lh", "lhelpgrep"], ["lhi", "lhistory"], ["ll", "ll"], ["lla", "llast"], ["lli", "llist"], ["lmak", "lmake"], ["lmapc", "lmapclear"], ["lne", "lnext"], ["lnew", "lnewer"], ["lnf", "lnfile"], ["lo", "loadview"], ["loadk", "loadk"], ["loadkeymap", "loadkeymap"], ["loc", "lockmarks"], ["lockv", "lockvar"], ["lol", "lolder"], ["lop", "lopen"], ["lp", "lprevious"], ["lpf", "lpfile"], ["lr", "lrewind"], ["ls", "ls"], ["lt", "ltag"], ["lua", "lua"], ["luado", "luado"], ["luafile", "luafile"], ["lv", "lvimgrep"], ["lvimgrepa", "lvimgrepadd"], ["lw", "lwindow"], ["m", "move"], ["ma", "mark"], ["mak", "make"], ["marks", "marks"], ["mat", "match"], ["menut", "menutranslate"], ["mes", "mes"], ["messages", "messages"], ["mk", "mkexrc"], ["mks", "mksession"], ["mksp", "mkspell"], ["mkv", "mkvimrc"], ["mkvie", "mkview"], ["mod", "mode"], ["mz", "mzscheme"], ["mzf", "mzfile"], ["n", "next"], ["nb", "nbkey"], ["nbc", "nbclose"], ["nbs", "nbstart"], ["new", "new"], ["nmapc", "nmapclear"], ["noa", "noa"], ["noautocmd", "noautocmd"], ["noh", "nohlsearch"], ["nor", "nor"], ["nore", "nore"], ["nos", "noswapfile"], ["nu", "number"], ["o", "open"], ["ol", "oldfiles"], ["omapc", "omapclear"], ["on", "only"], ["opt", "options"], ["ownsyntax", "ownsyntax"], ["p", "print"], ["pa", "packadd"], ["packl", "packloadall"], ["pc", "pclose"], ["pe", "perl"], ["ped", "pedit"], ["perld", "perldo"], ["po", "pop"], ["popu", "popup"], ["pp", "ppop"], ["pre", "preserve"], ["prev", "previous"], ["pro", "pro"], ["prof", "profile"], ["profd", "profdel"], ["promptf", "promptfind"], ["promptr", "promptrepl"], ["ps", "psearch"], ["ptN", "ptNext"], ["pta", "ptag"], ["ptf", "ptfirst"], ["ptj", "ptjump"], ["ptl", "ptlast"], ["ptn", "ptnext"], ["ptp", "ptprevious"], ["ptr", "ptrewind"], ["pts", "ptselect"], ["pu", "put"], ["pw", "pwd"], ["py", "python"], ["py3", "py3"], ["py3", "py3"], ["py3do", "py3do"], ["pydo", "pydo"], ["pyf", "pyfile"], ["python3", "python3"], ["q", "quit"], ["qa", "qall"], ["quita", "quitall"], ["r", "read"], ["rec", "recover"], ["red", "redo"], ["redi", "redir"], ["redr", "redraw"], ["redraws", "redrawstatus"], ["reg", "registers"], ["res", "resize"], ["ret", "retab"], ["retu", "return"], ["rew", "rewind"], ["ri", "right"], ["rightb", "rightbelow"], ["ru", "runtime"], ["rub", "ruby"], ["rubyd", "rubydo"], ["rubyf", "rubyfile"], ["rundo", "rundo"], ["rv", "rviminfo"], ["sI", "sI"], ["sIc", "sIc"], ["sIe", "sIe"], ["sIg", "sIg"], ["sIl", "sIl"], ["sIn", "sIn"], ["sIp", "sIp"], ["sIr", "sIr"], ["sN", "sNext"], ["sa", "sargument"], ["sal", "sall"], ["san", "sandbox"], ["sav", "saveas"], ["sb", "sbuffer"], ["sbN", "sbNext"], ["sba", "sball"], ["sbf", "sbfirst"], ["sbl", "sblast"], ["sbm", "sbmodified"], ["sbn", "sbnext"], ["sbp", "sbprevious"], ["sbr", "sbrewind"], ["sc", "sc"], ["scI", "scI"], ["sce", "sce"], ["scg", "scg"], ["sci", "sci"], ["scl", "scl"], ["scp", "scp"], ["scr", "scriptnames"], ["scripte", "scriptencoding"], ["scs", "scs"], ["scscope", "scscope"], ["se", "set"], ["setf", "setfiletype"], ["setg", "setglobal"], ["setl", "setlocal"], ["sf", "sfind"], ["sfir", "sfirst"], ["sg", "sg"], ["sgI", "sgI"], ["sgc", "sgc"], ["sge", "sge"], ["sgi", "sgi"], ["sgl", "sgl"], ["sgn", "sgn"], ["sgp", "sgp"], ["sgr", "sgr"], ["sh", "shell"], ["si", "si"], ["sic", "sic"], ["sie", "sie"], ["sig", "sig"], ["sign", "sign"], ["sil", "silent"], ["sim", "simalt"], ["sin", "sin"], ["sip", "sip"], ["sir", "sir"], ["sl", "sleep"], ["sla", "slast"], ["sm", "smagic"], ["sm", "smap"], ["sme", "sme"], ["smenu", "smenu"], ["smile", "smile"], ["sn", "snext"], ["sno", "snomagic"], ["snoreme", "snoreme"], ["snoremenu", "snoremenu"], ["so", "source"], ["sor", "sort"], ["sp", "split"], ["spe", "spellgood"], ["spelld", "spelldump"], ["spelli", "spellinfo"], ["spellr", "spellrepall"], ["spellu", "spellundo"], ["spellw", "spellwrong"], ["spr", "sprevious"], ["sr", "sr"], ["srI", "srI"], ["src", "src"], ["sre", "srewind"], ["srg", "srg"], ["sri", "sri"], ["srl", "srl"], ["srn", "srn"], ["srp", "srp"], ["st", "stop"], ["sta", "stag"], ["star", "startinsert"], ["startg", "startgreplace"], ["startr", "startreplace"], ["stj", "stjump"], ["stopi", "stopinsert"], ["sts", "stselect"], ["sun", "sunhide"], ["sunme", "sunme"], ["sunmenu", "sunmenu"], ["sus", "suspend"], ["sv", "sview"], ["sw", "swapname"], ["sy", "sy"], ["syn", "syn"], ["sync", "sync"], ["syncbind", "syncbind"], ["syntime", "syntime"], ["t", "t"], ["tN", "tNext"], ["ta", "tag"], ["tab", "tab"], ["tabN", "tabNext"], ["tabc", "tabclose"], ["tabd", "tabdo"], ["tabe", "tabedit"], ["tabf", "tabfind"], ["tabfir", "tabfirst"], ["tabl", "tablast"], ["tabm", "tabmove"], ["tabn", "tabnext"], ["tabnew", "tabnew"], ["tabo", "tabonly"], ["tabp", "tabprevious"], ["tabr", "tabrewind"], ["tabs", "tabs"], ["tags", "tags"], ["tc", "tcl"], ["tcld", "tcldo"], ["tclf", "tclfile"], ["te", "tearoff"], ["tf", "tfirst"], ["th", "throw"], ["tj", "tjump"], ["tl", "tlast"], ["tm", "tmenu"], ["tn", "tnext"], ["to", "topleft"], ["tp", "tprevious"], ["tr", "trewind"], ["try", "try"], ["ts", "tselect"], ["tu", "tunmenu"], ["u", "undo"], ["una", "unabbreviate"], ["undoj", "undojoin"], ["undol", "undolist"], ["unh", "unhide"], ["unlo", "unlockvar"], ["uns", "unsilent"], ["up", "update"], ["v", "v"], ["ve", "version"], ["verb", "verbose"], ["vert", "vertical"], ["vi", "visual"], ["vie", "view"], ["vim", "vimgrep"], ["vimgrepa", "vimgrepadd"], ["viu", "viusage"], ["vmapc", "vmapclear"], ["vne", "vnew"], ["vs", "vsplit"], ["w", "write"], ["wN", "wNext"], ["wa", "wall"], ["wh", "while"], ["win", "winsize"], ["winc", "wincmd"], ["windo", "windo"], ["winp", "winpos"], ["wn", "wnext"], ["wp", "wprevious"], ["wq", "wq"], ["wqa", "wqall"], ["ws", "wsverb"], ["wundo", "wundo"], ["wv", "wviminfo"], ["x", "xit"], ["xa", "xall"], ["xmapc", "xmapclear"], ["xme", "xme"], ["xmenu", "xmenu"], ["xnoreme", "xnoreme"], ["xnoremenu", "xnoremenu"], ["xprop", "xprop"], ["xunme", "xunme"], ["xunmenu", "xunmenu"], ["xwininfo", "xwininfo"], ["y", "yank"]], :option=>[], :auto=>[["BufAdd", "BufAdd"], ["BufCreate", "BufCreate"], ["BufDelete", "BufDelete"], ["BufEnter", "BufEnter"], ["BufFilePost", "BufFilePost"], ["BufFilePre", "BufFilePre"], ["BufHidden", "BufHidden"], ["BufLeave", "BufLeave"], ["BufNew", "BufNew"], ["BufNewFile", "BufNewFile"], ["BufRead", "BufRead"], ["BufReadCmd", "BufReadCmd"], ["BufReadPost", "BufReadPost"], ["BufReadPre", "BufReadPre"], ["BufUnload", "BufUnload"], ["BufWinEnter", "BufWinEnter"], ["BufWinLeave", "BufWinLeave"], ["BufWipeout", "BufWipeout"], ["BufWrite", "BufWrite"], ["BufWriteCmd", "BufWriteCmd"], ["BufWritePost", "BufWritePost"], ["BufWritePre", "BufWritePre"], ["CmdUndefined", "CmdUndefined"], ["CmdwinEnter", "CmdwinEnter"], ["CmdwinLeave", "CmdwinLeave"], ["ColorScheme", "ColorScheme"], ["CompleteDone", "CompleteDone"], ["CursorHold", "CursorHold"], ["CursorHoldI", "CursorHoldI"], ["CursorMoved", "CursorMoved"], ["CursorMovedI", "CursorMovedI"], ["EncodingChanged", "EncodingChanged"], ["FileAppendCmd", "FileAppendCmd"], ["FileAppendPost", "FileAppendPost"], ["FileAppendPre", "FileAppendPre"], ["FileChangedRO", "FileChangedRO"], ["FileChangedShell", "FileChangedShell"], ["FileChangedShellPost", "FileChangedShellPost"], ["FileEncoding", "FileEncoding"], ["FileReadCmd", "FileReadCmd"], ["FileReadPost", "FileReadPost"], ["FileReadPre", "FileReadPre"], ["FileType", "FileType"], ["FileWriteCmd", "FileWriteCmd"], ["FileWritePost", "FileWritePost"], ["FileWritePre", "FileWritePre"], ["FilterReadPost", "FilterReadPost"], ["FilterReadPre", "FilterReadPre"], ["FilterWritePost", "FilterWritePost"], ["FilterWritePre", "FilterWritePre"], ["FocusGained", "FocusGained"], ["FocusLost", "FocusLost"], ["FuncUndefined", "FuncUndefined"], ["GUIEnter", "GUIEnter"], ["GUIFailed", "GUIFailed"], ["InsertChange", "InsertChange"], ["InsertCharPre", "InsertCharPre"], ["InsertEnter", "InsertEnter"], ["InsertLeave", "InsertLeave"], ["MenuPopup", "MenuPopup"], ["OptionSet", "OptionSet"], ["QuickFixCmdPost", "QuickFixCmdPost"], ["QuickFixCmdPre", "QuickFixCmdPre"], ["QuitPre", "QuitPre"], ["RemoteReply", "RemoteReply"], ["SessionLoadPost", "SessionLoadPost"], ["ShellCmdPost", "ShellCmdPost"], ["ShellFilterPost", "ShellFilterPost"], ["SourceCmd", "SourceCmd"], ["SourcePre", "SourcePre"], ["SpellFileMissing", "SpellFileMissing"], ["StdinReadPost", "StdinReadPost"], ["StdinReadPre", "StdinReadPre"], ["SwapExists", "SwapExists"], ["Syntax", "Syntax"], ["TabClosed", "TabClosed"], ["TabEnter", "TabEnter"], ["TabLeave", "TabLeave"], ["TabNew", "TabNew"], ["TermChanged", "TermChanged"], ["TermResponse", "TermResponse"], ["TextChanged", "TextChanged"], ["TextChangedI", "TextChangedI"], ["User", "User"], ["VimEnter", "VimEnter"], ["VimLeave", "VimLeave"], ["VimLeavePre", "VimLeavePre"], ["VimResized", "VimResized"], ["WinEnter", "WinEnter"], ["WinLeave", "WinLeave"], ["WinNew", "WinNew"]]}
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
18
  end
12
19
  end
13
20
  end
@@ -58,6 +58,10 @@ module Rouge
58
58
  end
59
59
  end
60
60
 
61
+ prepend :tag do
62
+ rule %r/[a-zA-Z0-9_:#\[\]()*.-]+\s*=\s*/m, Name::Attribute, :attr
63
+ end
64
+
61
65
  state :style do
62
66
  rule %r/(<\s*\/\s*)(style)(\s*>)/ do
63
67
  groups Name::Tag, Keyword, Name::Tag
@@ -121,4 +125,3 @@ module Rouge
121
125
  end
122
126
  end
123
127
  end
124
-
@@ -12,6 +12,8 @@ module Rouge
12
12
  mimetypes 'text/xml', 'application/xml', 'image/svg+xml',
13
13
  'application/rss+xml', 'application/atom+xml'
14
14
 
15
+ # Documentation: https://www.w3.org/TR/xml11/#charsets and https://www.w3.org/TR/xml11/#sec-suggested-names
16
+
15
17
  def self.detect?(text)
16
18
  return false if text.doctype?(/html/)
17
19
  return true if text =~ /\A<\?xml\b/
@@ -27,10 +29,10 @@ module Rouge
27
29
  rule %r/<![^>]*>/, Comment::Preproc
28
30
 
29
31
  # open tags
30
- rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag
32
+ rule %r(<\s*[\p{L}:_][\p{Word}\p{Cf}:.·-]*)m, Name::Tag, :tag
31
33
 
32
34
  # self-closing tags
33
- rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag
35
+ rule %r(<\s*/\s*[\p{L}:_][\p{Word}\p{Cf}:.·-]*\s*>)m, Name::Tag
34
36
  end
35
37
 
36
38
  state :comment do
@@ -41,7 +43,7 @@ module Rouge
41
43
 
42
44
  state :tag do
43
45
  rule %r/\s+/m, Text
44
- rule %r/[\w.:-]+\s*=/m, Name::Attribute, :attr
46
+ rule %r/[\p{L}:_][\p{Word}\p{Cf}:.·-]*\s*=/m, Name::Attribute, :attr
45
47
  rule %r(/?\s*>), Name::Tag, :pop!
46
48
  end
47
49
 
@@ -11,6 +11,8 @@ module Rouge
11
11
  aliases 'yml'
12
12
  filenames '*.yaml', '*.yml'
13
13
 
14
+ # Documentation: https://yaml.org/spec/1.2/spec.html
15
+
14
16
  def self.detect?(text)
15
17
  # look for the %YAML directive
16
18
  return true if text =~ /\A\s*%YAML/m
@@ -165,15 +167,15 @@ module Rouge
165
167
  )x, Keyword::Type
166
168
 
167
169
  # an anchor
168
- rule %r/&[\w-]+/, Name::Label
170
+ rule %r/&[\p{L}\p{Nl}\p{Nd}_-]+/, Name::Label
169
171
 
170
172
  # an alias
171
- rule %r/\*[\w-]+/, Name::Variable
173
+ rule %r/\*[\p{L}\p{Nl}\p{Nd}_-]+/, Name::Variable
172
174
  end
173
175
 
174
176
  state :block_nodes do
175
177
  # implicit key
176
- rule %r/((?:\w[\w -]*)?)(:)(?=\s|$)/ do |m|
178
+ rule %r/((?:[\p{L}\p{Nl}\p{Nd}_][\p{L}\p{Nl}\p{Nd}\p{Blank}_-]*)?)(:)(?=\s|$)/ do |m|
177
179
  groups Name::Attribute, Punctuation::Indicator
178
180
  set_indent m[0], :implicit => true
179
181
  end
@@ -0,0 +1,147 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class YANG < RegexLexer
7
+ title 'YANG'
8
+ desc "Lexer for the YANG 1.1 modeling language (RFC7950)"
9
+ tag 'yang'
10
+ filenames '*.yang'
11
+ mimetypes 'application/yang'
12
+
13
+ id = /[\w_-]+(?=[^\w\-\:])\b/
14
+
15
+ #Keywords from RFC7950 ; oriented at BNF style
16
+ def self.top_stmts_keywords
17
+ @top_stms_keywords ||= Set.new %w(
18
+ module submodule
19
+ )
20
+ end
21
+
22
+ def self.module_header_stmts_keywords
23
+ @module_header_stmts_keywords ||= Set.new %w(
24
+ belongs-to namespace prefix yang-version
25
+ )
26
+ end
27
+
28
+ def self.meta_stmts_keywords
29
+ @meta_stmts_keywords ||= Set.new %w(
30
+ contact description organization reference revision
31
+ )
32
+ end
33
+
34
+ def self.linkage_stmts_keywords
35
+ @linkage_stmts_keywords ||= Set.new %w(
36
+ import include revision-date
37
+ )
38
+ end
39
+
40
+ def self.body_stmts_keywords
41
+ @body_stms_keywords ||= Set.new %w(
42
+ action argument augment deviation extension feature grouping identity
43
+ if-feature input notification output rpc typedef
44
+ )
45
+ end
46
+
47
+ def self.data_def_stmts_keywords
48
+ @data_def_stms_keywords ||= Set.new %w(
49
+ anydata anyxml case choice config container deviate leaf leaf-list
50
+ list must presence refine uses when
51
+ )
52
+ end
53
+
54
+ def self.type_stmts_keywords
55
+ @type_stmts_keywords ||= Set.new %w(
56
+ base bit default enum error-app-tag error-message fraction-digits
57
+ length max-elements min-elements modifier ordered-by path pattern
58
+ position range require-instance status type units value yin-element
59
+ )
60
+ end
61
+
62
+ def self.list_stmts_keywords
63
+ @list_stmts_keywords ||= Set.new %w(
64
+ key mandatory unique
65
+ )
66
+ end
67
+
68
+ #RFC7950 other keywords
69
+ def self.constants_keywords
70
+ @constants_keywords ||= Set.new %w(
71
+ add current delete deprecated false invert-match max min
72
+ not-supported obsolete replace true unbounded user
73
+ )
74
+ end
75
+
76
+ #RFC7950 Built-In Types
77
+ def self.types
78
+ @types ||= Set.new %w(
79
+ binary bits boolean decimal64 empty enumeration identityref
80
+ instance-identifier int16 int32 int64 int8 leafref string uint16
81
+ uint32 uint64 uint8 union
82
+ )
83
+ end
84
+
85
+ state :comment do
86
+ rule %r/[^*\/]/, Comment
87
+ rule %r/\/\*/, Comment, :comment
88
+ rule %r/\*\//, Comment, :pop!
89
+ rule %r/[*\/]/, Comment
90
+ end
91
+
92
+ #Keyword::Reserved
93
+ #groups Name::Tag, Text::Whitespace
94
+ state :root do
95
+ rule %r/\s+/, Text::Whitespace
96
+ rule %r/[\{\}\;]+/, Punctuation
97
+ rule %r/(?<![\-\w])(and|or|not|\+|\.)(?![\-\w])/, Operator
98
+
99
+ rule %r/"(?:\\"|[^"])*?"/, Str::Double #for double quotes
100
+ rule %r/'(?:\\'|[^'])*?'/, Str::Single #for single quotes
101
+
102
+ rule %r/\/\*/, Comment, :comment
103
+ rule %r/\/\/.*?$/, Comment
104
+
105
+ #match BNF stmt for `node-identifier` with [ prefix ":"]
106
+ rule %r/(?:^|(?<=[\s{};]))([\w.-]+)(:)([\w.-]+)(?=[\s{};])/ do
107
+ groups Name::Namespace, Punctuation, Name
108
+ end
109
+
110
+ #match BNF stmt `date-arg-str`
111
+ rule %r/([0-9]{4}\-[0-9]{2}\-[0-9]{2})(?=[\s\{\}\;])/, Name::Label
112
+ rule %r/([0-9]+\.[0-9]+)(?=[\s\{\}\;])/, Num::Float
113
+ rule %r/([0-9]+)(?=[\s\{\}\;])/, Num::Integer
114
+
115
+ rule id do |m|
116
+ name = m[0].downcase
117
+
118
+ if self.class.top_stmts_keywords.include? name
119
+ token Keyword::Declaration
120
+ elsif self.class.module_header_stmts_keywords.include? name
121
+ token Keyword::Declaration
122
+ elsif self.class.meta_stmts_keywords.include? name
123
+ token Keyword::Declaration
124
+ elsif self.class.linkage_stmts_keywords.include? name
125
+ token Keyword::Declaration
126
+ elsif self.class.body_stmts_keywords.include? name
127
+ token Keyword::Declaration
128
+ elsif self.class.data_def_stmts_keywords.include? name
129
+ token Keyword::Declaration
130
+ elsif self.class.type_stmts_keywords.include? name
131
+ token Keyword::Declaration
132
+ elsif self.class.list_stmts_keywords.include? name
133
+ token Keyword::Declaration
134
+ elsif self.class.types.include? name
135
+ token Keyword::Type
136
+ elsif self.class.constants_keywords.include? name
137
+ token Name::Constant
138
+ else
139
+ token Name
140
+ end
141
+ end
142
+
143
+ rule %r/[^;{}\s'"]+/, Name
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,139 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Zig < RegexLexer
7
+ tag 'zig'
8
+ aliases 'zir'
9
+ filenames '*.zig'
10
+ mimetypes 'text/x-zig'
11
+
12
+ title 'Zig'
13
+ desc 'The Zig programming language (ziglang.org)'
14
+
15
+ def self.keywords
16
+ @keywords ||= %w(
17
+ align linksection threadlocal struct enum union error break return
18
+ anyframe fn c_longlong c_ulonglong c_longdouble c_void comptime_float
19
+ c_short c_ushort c_int c_uint c_long c_ulong continue asm defer
20
+ errdefer const var extern packed export pub if else switch and or
21
+ orelse while for bool unreachable try catch async suspend nosuspend
22
+ await resume undefined usingnamespace test void noreturn type
23
+ anyerror usize noalias inline noinline comptime callconv volatile
24
+ allowzero
25
+ )
26
+ end
27
+
28
+ def self.builtins
29
+ @builtins ||= %w(
30
+ @addWithOverflow @as @atomicLoad @atomicStore @bitCast @breakpoint
31
+ @alignCast @alignOf @cDefine @cImport @cInclude @bitOffsetOf
32
+ @atomicRmw @bytesToSlice @byteOffsetOf @OpaqueType @panic @ptrCast
33
+ @bitReverse @Vector @sin @cUndef @canImplicitCast @clz @cmpxchgWeak
34
+ @cmpxchgStrong @compileError @compileLog @ctz @popCount @divExact
35
+ @divFloor @cos @divTrunc @embedFile @export @tagName @TagType
36
+ @errorName @call @errorReturnTrace @fence @fieldParentPtr @field
37
+ @unionInit @errorToInt @intToEnum @enumToInt @setAlignStack @frame
38
+ @Frame @exp @exp2 @log @log2 @log10 @fabs @floor @ceil @trunc @round
39
+ @floatCast @intToFloat @floatToInt @boolToInt @errSetCast @intToError
40
+ @frameAddress @import @newStackCall @asyncCall @intToPtr @intCast
41
+ @frameSize @memcpy @memset @mod @mulWithOverflow @splat @ptrToInt
42
+ @rem @returnAddress @setCold @Type @shuffle @setGlobalLinkage
43
+ @setGlobalSection @shlExact @This @hasDecl @hasField
44
+ @setRuntimeSafety @setEvalBranchQuota @setFloatMode @shlWithOverflow
45
+ @shrExact @sizeOf @bitSizeOf @sqrt @byteSwap @subWithOverflow
46
+ @sliceToBytes comptime_int @truncate @typeInfo @typeName @TypeOf
47
+ )
48
+ end
49
+
50
+ id = /[a-z_]\w*/i
51
+ escapes = /\\ ([nrt'"\\0] | x\h{2} | u\h{4} | U\h{8})/x
52
+
53
+ state :bol do
54
+ mixin :whitespace
55
+ rule %r/#\s[^\n]*/, Comment::Special
56
+ rule(//) { pop! }
57
+ end
58
+
59
+ state :attribute do
60
+ mixin :whitespace
61
+ mixin :literals
62
+ rule %r/[(,)=:]/, Name::Decorator
63
+ rule %r/\]/, Name::Decorator, :pop!
64
+ rule id, Name::Decorator
65
+ end
66
+
67
+ state :whitespace do
68
+ rule %r/\s+/, Text
69
+ rule %r(//[^\n]*), Comment
70
+ end
71
+
72
+ state :root do
73
+ rule %r/\n/, Text, :bol
74
+
75
+ mixin :whitespace
76
+
77
+ rule %r/\b(?:(i|u)[0-9]+)\b/, Keyword::Type
78
+ rule %r/\b(?:f(16|32|64|128))\b/, Keyword::Type
79
+ rule %r/\b(?:(isize|usize))\b/, Keyword::Type
80
+
81
+ mixin :literals
82
+
83
+ rule %r/'#{id}/, Name::Variable
84
+ rule %r/([.]?)(\s*)(@?#{id})(\s*)([(]?)/ do |m|
85
+ name = m[3]
86
+ t = if self.class.keywords.include? name
87
+ Keyword
88
+ elsif self.class.builtins.include? name
89
+ Name::Builtin
90
+ elsif !m[1].empty? && !m[5].empty?
91
+ Name::Function
92
+ elsif !m[1].empty?
93
+ Name::Property
94
+ else
95
+ Name
96
+ end
97
+
98
+ groups Punctuation, Text, t, Text, Punctuation
99
+ end
100
+
101
+ rule %r/[()\[\]{}|,:;]/, Punctuation
102
+ rule %r/[*\/!@~&+%^<>=\?-]|\.{1,3}/, Operator
103
+ end
104
+
105
+ state :literals do
106
+ rule %r/\b(?:true|false|null)\b/, Keyword::Constant
107
+ rule %r(
108
+ ' (?: #{escapes} | [^\\] ) '
109
+ )x, Str::Char
110
+
111
+ rule %r/"/, Str, :string
112
+ rule %r/r(#*)".*?"\1/m, Str
113
+
114
+ dot = /[.][0-9_]+/
115
+ exp = /e[-+]?[0-9_]+/
116
+
117
+ rule %r(
118
+ [0-9]+
119
+ (#{dot} #{exp}?
120
+ |#{dot}? #{exp}
121
+ )
122
+ )x, Num::Float
123
+
124
+ rule %r(
125
+ ( 0b[10_]+
126
+ | 0x[0-9a-fA-F_]+
127
+ | [0-9_]+
128
+ )
129
+ )x, Num::Integer
130
+ end
131
+
132
+ state :string do
133
+ rule %r/"/, Str, :pop!
134
+ rule escapes, Str::Escape
135
+ rule %r/[^"\\]+/m, Str
136
+ end
137
+ end
138
+ end
139
+ end
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Rouge
5
5
  def self.version
6
- "3.16.0"
6
+ "3.21.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rouge
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.16.0
4
+ version: 3.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeanine Adkisson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-11 00:00:00.000000000 Z
11
+ date: 2020-07-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
14
14
  email:
@@ -31,12 +31,15 @@ files:
31
31
  - lib/rouge/demos/apiblueprint
32
32
  - lib/rouge/demos/applescript
33
33
  - lib/rouge/demos/armasm
34
+ - lib/rouge/demos/augeas
34
35
  - lib/rouge/demos/awk
35
36
  - lib/rouge/demos/batchfile
36
37
  - lib/rouge/demos/bbcbasic
38
+ - lib/rouge/demos/bibtex
37
39
  - lib/rouge/demos/biml
38
40
  - lib/rouge/demos/bpf
39
41
  - lib/rouge/demos/brainfuck
42
+ - lib/rouge/demos/brightscript
40
43
  - lib/rouge/demos/bsl
41
44
  - lib/rouge/demos/c
42
45
  - lib/rouge/demos/ceylon
@@ -56,13 +59,16 @@ files:
56
59
  - lib/rouge/demos/css
57
60
  - lib/rouge/demos/csvs
58
61
  - lib/rouge/demos/cuda
62
+ - lib/rouge/demos/cypher
59
63
  - lib/rouge/demos/cython
60
64
  - lib/rouge/demos/d
61
65
  - lib/rouge/demos/dart
66
+ - lib/rouge/demos/datastudio
62
67
  - lib/rouge/demos/diff
63
68
  - lib/rouge/demos/digdag
64
69
  - lib/rouge/demos/docker
65
70
  - lib/rouge/demos/dot
71
+ - lib/rouge/demos/ecl
66
72
  - lib/rouge/demos/eex
67
73
  - lib/rouge/demos/eiffel
68
74
  - lib/rouge/demos/elixir
@@ -76,6 +82,7 @@ files:
76
82
  - lib/rouge/demos/freefem
77
83
  - lib/rouge/demos/fsharp
78
84
  - lib/rouge/demos/gdscript
85
+ - lib/rouge/demos/ghc-cmm
79
86
  - lib/rouge/demos/ghc-core
80
87
  - lib/rouge/demos/gherkin
81
88
  - lib/rouge/demos/glsl
@@ -89,6 +96,7 @@ files:
89
96
  - lib/rouge/demos/haskell
90
97
  - lib/rouge/demos/haxe
91
98
  - lib/rouge/demos/hcl
99
+ - lib/rouge/demos/hlsl
92
100
  - lib/rouge/demos/hocon
93
101
  - lib/rouge/demos/hql
94
102
  - lib/rouge/demos/html
@@ -100,6 +108,8 @@ files:
100
108
  - lib/rouge/demos/io
101
109
  - lib/rouge/demos/irb
102
110
  - lib/rouge/demos/irb_output
111
+ - lib/rouge/demos/isbl
112
+ - lib/rouge/demos/janet
103
113
  - lib/rouge/demos/java
104
114
  - lib/rouge/demos/javascript
105
115
  - lib/rouge/demos/jinja
@@ -115,6 +125,7 @@ files:
115
125
  - lib/rouge/demos/liquid
116
126
  - lib/rouge/demos/literate_coffeescript
117
127
  - lib/rouge/demos/literate_haskell
128
+ - lib/rouge/demos/livescript
118
129
  - lib/rouge/demos/llvm
119
130
  - lib/rouge/demos/lua
120
131
  - lib/rouge/demos/lustre
@@ -160,6 +171,7 @@ files:
160
171
  - lib/rouge/demos/r
161
172
  - lib/rouge/demos/racket
162
173
  - lib/rouge/demos/reasonml
174
+ - lib/rouge/demos/rego
163
175
  - lib/rouge/demos/robot_framework
164
176
  - lib/rouge/demos/ruby
165
177
  - lib/rouge/demos/rust
@@ -176,9 +188,11 @@ files:
176
188
  - lib/rouge/demos/smalltalk
177
189
  - lib/rouge/demos/smarty
178
190
  - lib/rouge/demos/sml
191
+ - lib/rouge/demos/solidity
179
192
  - lib/rouge/demos/sparql
180
193
  - lib/rouge/demos/sqf
181
194
  - lib/rouge/demos/sql
195
+ - lib/rouge/demos/ssh
182
196
  - lib/rouge/demos/supercollider
183
197
  - lib/rouge/demos/swift
184
198
  - lib/rouge/demos/tap
@@ -193,8 +207,9 @@ files:
193
207
  - lib/rouge/demos/twig
194
208
  - lib/rouge/demos/typescript
195
209
  - lib/rouge/demos/vala
196
- - lib/rouge/demos/varnish
197
210
  - lib/rouge/demos/vb
211
+ - lib/rouge/demos/vcl
212
+ - lib/rouge/demos/velocity
198
213
  - lib/rouge/demos/verilog
199
214
  - lib/rouge/demos/vhdl
200
215
  - lib/rouge/demos/viml
@@ -205,6 +220,8 @@ files:
205
220
  - lib/rouge/demos/xpath
206
221
  - lib/rouge/demos/xquery
207
222
  - lib/rouge/demos/yaml
223
+ - lib/rouge/demos/yang
224
+ - lib/rouge/demos/zig
208
225
  - lib/rouge/formatter.rb
209
226
  - lib/rouge/formatters/html.rb
210
227
  - lib/rouge/formatters/html_inline.rb
@@ -230,17 +247,20 @@ files:
230
247
  - lib/rouge/lexers/actionscript.rb
231
248
  - lib/rouge/lexers/ada.rb
232
249
  - lib/rouge/lexers/apache.rb
233
- - lib/rouge/lexers/apache/keywords.yml
250
+ - lib/rouge/lexers/apache/keywords.rb
234
251
  - lib/rouge/lexers/apex.rb
235
252
  - lib/rouge/lexers/apiblueprint.rb
236
253
  - lib/rouge/lexers/apple_script.rb
237
254
  - lib/rouge/lexers/armasm.rb
255
+ - lib/rouge/lexers/augeas.rb
238
256
  - lib/rouge/lexers/awk.rb
239
257
  - lib/rouge/lexers/batchfile.rb
240
258
  - lib/rouge/lexers/bbcbasic.rb
259
+ - lib/rouge/lexers/bibtex.rb
241
260
  - lib/rouge/lexers/biml.rb
242
261
  - lib/rouge/lexers/bpf.rb
243
262
  - lib/rouge/lexers/brainfuck.rb
263
+ - lib/rouge/lexers/brightscript.rb
244
264
  - lib/rouge/lexers/bsl.rb
245
265
  - lib/rouge/lexers/c.rb
246
266
  - lib/rouge/lexers/ceylon.rb
@@ -260,13 +280,16 @@ files:
260
280
  - lib/rouge/lexers/css.rb
261
281
  - lib/rouge/lexers/csvs.rb
262
282
  - lib/rouge/lexers/cuda.rb
283
+ - lib/rouge/lexers/cypher.rb
263
284
  - lib/rouge/lexers/cython.rb
264
285
  - lib/rouge/lexers/d.rb
265
286
  - lib/rouge/lexers/dart.rb
287
+ - lib/rouge/lexers/datastudio.rb
266
288
  - lib/rouge/lexers/diff.rb
267
289
  - lib/rouge/lexers/digdag.rb
268
290
  - lib/rouge/lexers/docker.rb
269
291
  - lib/rouge/lexers/dot.rb
292
+ - lib/rouge/lexers/ecl.rb
270
293
  - lib/rouge/lexers/eex.rb
271
294
  - lib/rouge/lexers/eiffel.rb
272
295
  - lib/rouge/lexers/elixir.rb
@@ -280,6 +303,7 @@ files:
280
303
  - lib/rouge/lexers/freefem.rb
281
304
  - lib/rouge/lexers/fsharp.rb
282
305
  - lib/rouge/lexers/gdscript.rb
306
+ - lib/rouge/lexers/ghc_cmm.rb
283
307
  - lib/rouge/lexers/ghc_core.rb
284
308
  - lib/rouge/lexers/gherkin.rb
285
309
  - lib/rouge/lexers/gherkin/keywords.rb
@@ -294,6 +318,7 @@ files:
294
318
  - lib/rouge/lexers/haskell.rb
295
319
  - lib/rouge/lexers/haxe.rb
296
320
  - lib/rouge/lexers/hcl.rb
321
+ - lib/rouge/lexers/hlsl.rb
297
322
  - lib/rouge/lexers/hocon.rb
298
323
  - lib/rouge/lexers/hql.rb
299
324
  - lib/rouge/lexers/html.rb
@@ -304,6 +329,9 @@ files:
304
329
  - lib/rouge/lexers/ini.rb
305
330
  - lib/rouge/lexers/io.rb
306
331
  - lib/rouge/lexers/irb.rb
332
+ - lib/rouge/lexers/isbl.rb
333
+ - lib/rouge/lexers/isbl/builtins.rb
334
+ - lib/rouge/lexers/janet.rb
307
335
  - lib/rouge/lexers/java.rb
308
336
  - lib/rouge/lexers/javascript.rb
309
337
  - lib/rouge/lexers/jinja.rb
@@ -316,13 +344,15 @@ files:
316
344
  - lib/rouge/lexers/julia.rb
317
345
  - lib/rouge/lexers/kotlin.rb
318
346
  - lib/rouge/lexers/lasso.rb
319
- - lib/rouge/lexers/lasso/keywords.yml
347
+ - lib/rouge/lexers/lasso/keywords.rb
320
348
  - lib/rouge/lexers/liquid.rb
321
349
  - lib/rouge/lexers/literate_coffeescript.rb
322
350
  - lib/rouge/lexers/literate_haskell.rb
351
+ - lib/rouge/lexers/livescript.rb
323
352
  - lib/rouge/lexers/llvm.rb
353
+ - lib/rouge/lexers/llvm/keywords.rb
324
354
  - lib/rouge/lexers/lua.rb
325
- - lib/rouge/lexers/lua/builtins.rb
355
+ - lib/rouge/lexers/lua/keywords.rb
326
356
  - lib/rouge/lexers/lustre.rb
327
357
  - lib/rouge/lexers/lutin.rb
328
358
  - lib/rouge/lexers/m68k.rb
@@ -331,9 +361,10 @@ files:
331
361
  - lib/rouge/lexers/markdown.rb
332
362
  - lib/rouge/lexers/mason.rb
333
363
  - lib/rouge/lexers/mathematica.rb
334
- - lib/rouge/lexers/mathematica/builtins.rb
364
+ - lib/rouge/lexers/mathematica/keywords.rb
335
365
  - lib/rouge/lexers/matlab.rb
336
- - lib/rouge/lexers/matlab/builtins.yml
366
+ - lib/rouge/lexers/matlab/builtins.rb
367
+ - lib/rouge/lexers/matlab/keywords.rb
337
368
  - lib/rouge/lexers/minizinc.rb
338
369
  - lib/rouge/lexers/moonscript.rb
339
370
  - lib/rouge/lexers/mosel.rb
@@ -354,7 +385,7 @@ files:
354
385
  - lib/rouge/lexers/pascal.rb
355
386
  - lib/rouge/lexers/perl.rb
356
387
  - lib/rouge/lexers/php.rb
357
- - lib/rouge/lexers/php/builtins.rb
388
+ - lib/rouge/lexers/php/keywords.rb
358
389
  - lib/rouge/lexers/plain_text.rb
359
390
  - lib/rouge/lexers/plist.rb
360
391
  - lib/rouge/lexers/pony.rb
@@ -371,6 +402,7 @@ files:
371
402
  - lib/rouge/lexers/r.rb
372
403
  - lib/rouge/lexers/racket.rb
373
404
  - lib/rouge/lexers/reasonml.rb
405
+ - lib/rouge/lexers/rego.rb
374
406
  - lib/rouge/lexers/robot_framework.rb
375
407
  - lib/rouge/lexers/ruby.rb
376
408
  - lib/rouge/lexers/rust.rb
@@ -388,10 +420,12 @@ files:
388
420
  - lib/rouge/lexers/smalltalk.rb
389
421
  - lib/rouge/lexers/smarty.rb
390
422
  - lib/rouge/lexers/sml.rb
423
+ - lib/rouge/lexers/solidity.rb
391
424
  - lib/rouge/lexers/sparql.rb
392
425
  - lib/rouge/lexers/sqf.rb
393
- - lib/rouge/lexers/sqf/commands.rb
426
+ - lib/rouge/lexers/sqf/keywords.rb
394
427
  - lib/rouge/lexers/sql.rb
428
+ - lib/rouge/lexers/ssh.rb
395
429
  - lib/rouge/lexers/supercollider.rb
396
430
  - lib/rouge/lexers/swift.rb
397
431
  - lib/rouge/lexers/tap.rb
@@ -409,6 +443,7 @@ files:
409
443
  - lib/rouge/lexers/vala.rb
410
444
  - lib/rouge/lexers/varnish.rb
411
445
  - lib/rouge/lexers/vb.rb
446
+ - lib/rouge/lexers/velocity.rb
412
447
  - lib/rouge/lexers/verilog.rb
413
448
  - lib/rouge/lexers/vhdl.rb
414
449
  - lib/rouge/lexers/viml.rb
@@ -420,6 +455,8 @@ files:
420
455
  - lib/rouge/lexers/xpath.rb
421
456
  - lib/rouge/lexers/xquery.rb
422
457
  - lib/rouge/lexers/yaml.rb
458
+ - lib/rouge/lexers/yang.rb
459
+ - lib/rouge/lexers/zig.rb
423
460
  - lib/rouge/plugins/redcarpet.rb
424
461
  - lib/rouge/regex_lexer.rb
425
462
  - lib/rouge/template_lexer.rb