ver 2009.10.14 → 2009.11.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) hide show
  1. data/CHANGELOG +1094 -0
  2. data/MANIFEST +227 -25
  3. data/README.textile +185 -0
  4. data/bin/ver +96 -12
  5. data/config/detect.rb +73 -21
  6. data/config/keymap/emacs.rb +66 -0
  7. data/config/keymap/vim.rb +250 -140
  8. data/config/preferences/ANTLR.json +10 -0
  9. data/config/preferences/ASP vb.NET.json +3 -0
  10. data/config/preferences/ASP.json +15 -0
  11. data/config/preferences/ActionScript.json +755 -0
  12. data/config/preferences/Active4D.json +89 -0
  13. data/config/preferences/Ada.json +23 -0
  14. data/config/preferences/Ant.json +356 -0
  15. data/config/preferences/Apache.json +644 -0
  16. data/config/preferences/AppleScript.json +92 -0
  17. data/config/preferences/Bison.json +3 -0
  18. data/config/preferences/Blogging.json +3 -0
  19. data/config/preferences/C.json +127 -0
  20. data/config/preferences/CMake.json +41 -0
  21. data/config/preferences/CSS.json +461 -0
  22. data/config/preferences/CTags.json +3 -0
  23. data/config/preferences/CVS.json +3 -0
  24. data/config/preferences/ColdFusion.json +32 -0
  25. data/config/preferences/D.json +58 -0
  26. data/config/preferences/Darcs.json +3 -0
  27. data/config/preferences/Diff.json +67 -0
  28. data/config/preferences/DokuWiki.json +19 -0
  29. data/config/preferences/Doxygen.json +3 -0
  30. data/config/preferences/Dylan.json +3 -0
  31. data/config/preferences/Eiffel.json +59 -0
  32. data/config/preferences/Erlang.json +72 -0
  33. data/config/preferences/Experimental.json +1356 -0
  34. data/config/preferences/F-Script.json +87 -0
  35. data/config/preferences/FXScript.json +78 -0
  36. data/config/preferences/FileMerge.json +3 -0
  37. data/config/preferences/Fortran.json +158 -0
  38. data/config/preferences/GTD2.json +11 -0
  39. data/config/preferences/GTDAlt.json +20 -0
  40. data/config/preferences/GetBundle.json +3 -0
  41. data/config/preferences/Gettext.json +24 -0
  42. data/config/preferences/Graphviz.json +42 -0
  43. data/config/preferences/Greasemonkey.json +3 -0
  44. data/config/preferences/Gri.json +34 -0
  45. data/config/preferences/HTML.json +492 -0
  46. data/config/preferences/Haskell.json +72 -0
  47. data/config/preferences/Hotkey.json +3 -0
  48. data/config/preferences/ImageBrowser.json +3 -0
  49. data/config/preferences/Inform.json +3 -0
  50. data/config/preferences/Ini.json +60 -0
  51. data/config/preferences/Installer.json +3 -0
  52. data/config/preferences/Io.json +64 -0
  53. data/config/preferences/JSON.json +3 -0
  54. data/config/preferences/Java.json +86 -0
  55. data/config/preferences/JavaDoc.json +3 -0
  56. data/config/preferences/JavaScript.json +76 -0
  57. data/config/preferences/LaTeX.json +267 -0
  58. data/config/preferences/Lex/Flex.json +3 -0
  59. data/config/preferences/Lighttpd.json +3 -0
  60. data/config/preferences/LilyPond.json +77 -0
  61. data/config/preferences/Lisp.json +63 -0
  62. data/config/preferences/Logo.json +58 -0
  63. data/config/preferences/Logtalk.json +236 -0
  64. data/config/preferences/Lua.json +24 -0
  65. data/config/preferences/MEL.json +19 -0
  66. data/config/preferences/MIPS Assembler.json +26 -0
  67. data/config/preferences/MacPorts.json +3 -0
  68. data/config/preferences/Mail.json +3 -0
  69. data/config/preferences/Make.json +16 -0
  70. data/config/preferences/Markdown.json +102 -0
  71. data/config/preferences/Math.json +3 -0
  72. data/config/preferences/Matlab.json +128 -0
  73. data/config/preferences/Maven.json +308 -0
  74. data/config/preferences/Mediawiki.json +73 -0
  75. data/config/preferences/Mercurial.json +3 -0
  76. data/config/preferences/Modula.json +37 -0
  77. data/config/preferences/MoinMoin.json +52 -0
  78. data/config/preferences/Navigation.json +3 -0
  79. data/config/preferences/Nemerle.json +3 -0
  80. data/config/preferences/OCaml Code Completion.json +3 -0
  81. data/config/preferences/OCaml.json +163 -0
  82. data/config/preferences/ODCompletion.json +3 -0
  83. data/config/preferences/Objective-C.json +84 -0
  84. data/config/preferences/OpenGL.json +3331 -0
  85. data/config/preferences/Outlines.json +3 -0
  86. data/config/preferences/Pascal.json +60 -0
  87. data/config/preferences/Perforce.json +3 -0
  88. data/config/preferences/Perl.json +15 -0
  89. data/config/preferences/PmWiki.json +27 -0
  90. data/config/preferences/Postscript.json +15 -0
  91. data/config/preferences/Processing.json +32 -0
  92. data/config/preferences/Prolog.json +3 -0
  93. data/config/preferences/Propel.json +3 -0
  94. data/config/preferences/Python.json +38 -0
  95. data/config/preferences/Quake.json +15 -0
  96. data/config/preferences/R.json +33 -0
  97. data/config/preferences/Ragel.json +15 -0
  98. data/config/preferences/Regular Expressions.json +3 -0
  99. data/config/preferences/Remind.json +15 -0
  100. data/config/preferences/Rez.json +46 -0
  101. data/config/preferences/Ruby.json +98 -0
  102. data/config/preferences/S5 Slide Show.json +20 -0
  103. data/config/preferences/SCons.json +3 -0
  104. data/config/preferences/SQL.json +32 -0
  105. data/config/preferences/SSH Config.json +15 -0
  106. data/config/preferences/SVK.json +3 -0
  107. data/config/preferences/SWIG.json +3 -0
  108. data/config/preferences/SWeave.json +32 -0
  109. data/config/preferences/Scheme.json +35 -0
  110. data/config/preferences/Scilab.json +15 -0
  111. data/config/preferences/Setext.json +3 -0
  112. data/config/preferences/Shell Script.json +25 -0
  113. data/config/preferences/Slate.json +113 -0
  114. data/config/preferences/Source.json +132 -0
  115. data/config/preferences/Subversion.json +10 -0
  116. data/config/preferences/TODO.json +3 -0
  117. data/config/preferences/Tabular.json +3 -0
  118. data/config/preferences/Tcl.json +82 -0
  119. data/config/preferences/TerminalMate.json +112 -0
  120. data/config/preferences/Text.json +89 -0
  121. data/config/preferences/TextMate.json +38 -0
  122. data/config/preferences/Textile.json +76 -0
  123. data/config/preferences/Thrift.json +56 -0
  124. data/config/preferences/Transmit.json +3 -0
  125. data/config/preferences/Twiki.json +51 -0
  126. data/config/preferences/Txt2tags.json +81 -0
  127. data/config/preferences/Vectorscript.json +1280 -0
  128. data/config/preferences/XML.json +60 -0
  129. data/config/preferences/Xcode.json +3 -0
  130. data/config/preferences/YAML.json +24 -0
  131. data/config/preferences/iCalendar.json +10 -0
  132. data/config/preferences/iTerm.json +36 -0
  133. data/config/preferences/reStructuredText.json +48 -0
  134. data/config/rc.rb +49 -0
  135. data/config/syntax/ANTLR.json +5 -5
  136. data/config/syntax/{ASP VB.net.json → ASP vb.NET.json } +3 -3
  137. data/config/syntax/ASP.json +1 -1
  138. data/config/syntax/ActionScript.json +6 -6
  139. data/config/syntax/Active4D Config.json +86 -0
  140. data/config/syntax/Active4D Library.json +20 -0
  141. data/config/syntax/Active4D.json +418 -0
  142. data/config/syntax/Ada.json +3 -3
  143. data/config/syntax/Ant.json +196 -0
  144. data/config/syntax/Apache.json +7 -7
  145. data/config/syntax/AppleScript.json +3 -3
  146. data/config/syntax/{Bibtex.json → BibTeX.json} +1 -1
  147. data/config/syntax/Bison.json +59 -0
  148. data/config/syntax/{Blog (HTML).json → Blog - HTML.json } +2 -2
  149. data/config/syntax/{Blog (Markdown).json → Blog - Markdown.json } +2 -2
  150. data/config/syntax/Blog (Text).json b/data/config/syntax/Blog - → Text.json +0 -0
  151. data/config/syntax/Blog (Textile).json b/data/config/syntax/Blog - → Textile.json +0 -0
  152. data/config/syntax/C++.json +3 -3
  153. data/config/syntax/C.json +13 -13
  154. data/config/syntax/CMake Listfile.json +171 -0
  155. data/config/syntax/CSS.json +6 -6
  156. data/config/syntax/CSV.json +108 -0
  157. data/config/syntax/ColdFusion.json +204 -0
  158. data/config/syntax/D.json +560 -0
  159. data/config/syntax/Diff.json +1 -1
  160. data/config/syntax/DokuWiki.json +412 -0
  161. data/config/syntax/Doxygen.json +80 -0
  162. data/config/syntax/Dylan.json +4 -4
  163. data/config/syntax/Erlang.json +5 -5
  164. data/config/syntax/F-Script.json +1 -1
  165. data/config/syntax/FXScript.json +5 -5
  166. data/config/syntax/Fortran - Modern.json +221 -0
  167. data/config/syntax/Fortran - Punchcard.json +468 -0
  168. data/config/syntax/GTD.json +39 -0
  169. data/config/syntax/GTDalt.json +233 -0
  170. data/config/syntax/Gettext.json +118 -0
  171. data/config/syntax/Go.json +555 -0
  172. data/config/syntax/{DOT.json → Graphviz (DOT).json } +3 -3
  173. data/config/syntax/Greasemonkey.json +56 -0
  174. data/config/syntax/Gri.json +4 -4
  175. data/config/syntax/{HTML-ASP.json → HTML (ASP).json } +1 -1
  176. data/config/syntax/{HTML for ASP.net.json → HTML (ASP.net).json } +19 -19
  177. data/config/syntax/HTML (Active4D).json +540 -0
  178. data/config/syntax/HTML (Erlang).json +31 -0
  179. data/config/syntax/HTML (Tcl).json +1 -1
  180. data/config/syntax/HTML.json +20 -20
  181. data/config/syntax/Haskell.json +3 -3
  182. data/config/syntax/Installer Distribution Script.json +135 -0
  183. data/config/syntax/Io.json +6 -6
  184. data/config/syntax/JSON.json +151 -0
  185. data/config/syntax/{JavaProperties.json → Java Properties.json } +2 -2
  186. data/config/syntax/Java Server Page (JSP).json +163 -0
  187. data/config/syntax/Java.json +7 -7
  188. data/config/syntax/JavaDoc.json +435 -0
  189. data/config/syntax/JavaScript.json +8 -8
  190. data/config/syntax/LaTeX Log.json +3 -3
  191. data/config/syntax/LaTeX Memoir.json +101 -0
  192. data/config/syntax/LaTeX.json +2 -2
  193. data/config/syntax/Lex-Flex.json +396 -0
  194. data/config/syntax/LilyPond.json +608 -0
  195. data/config/syntax/Logo.json +48 -0
  196. data/config/syntax/Logtalk.json +6 -6
  197. data/config/syntax/Lua.json +1 -1
  198. data/config/syntax/{M.json → MATLAB.json} +3 -3
  199. data/config/syntax/MEL.json +7 -7
  200. data/config/syntax/MIPS.json b/data/config/syntax/MIPS → Assembler.json +0 -0
  201. data/config/syntax/MacPorts Portfile.json +298 -0
  202. data/config/syntax/Mail.json +1 -1
  203. data/config/syntax/Markdown.json +6 -6
  204. data/config/syntax/Maven POM.json +774 -0
  205. data/config/syntax/Mediawiki.json +736 -0
  206. data/config/syntax/MoinMoin.json +335 -0
  207. data/config/syntax/MultiMarkdown.json +41 -0
  208. data/config/syntax/Nemerle.json +128 -0
  209. data/config/syntax/OCaml.json +4 -4
  210. data/config/syntax/OCamllex.json +307 -0
  211. data/config/syntax/OCamlyacc.json +346 -0
  212. data/config/syntax/Objective-C++.json +2 -2
  213. data/config/syntax/Objective-C.json +979 -0
  214. data/config/syntax/Octave.json +417 -0
  215. data/config/syntax/PHP.json +32 -32
  216. data/config/syntax/Pascal.json +1 -1
  217. data/config/syntax/Perl.json +8 -8
  218. data/config/syntax/{Plain text.json → Plain Text.json } +1 -1
  219. data/config/syntax/PmWiki.json +241 -0
  220. data/config/syntax/Postscript.json +206 -0
  221. data/config/syntax/Processing.json +8 -8
  222. data/config/syntax/Prolog.json +70 -0
  223. data/config/syntax/Python.json +1934 -0
  224. data/config/syntax/{Quake3 Config.json → Quake Style .cfg.json } +1 -1
  225. data/config/syntax/R.json +2 -2
  226. data/config/syntax/Ragel.json +362 -0
  227. data/config/syntax/Rd (R Documentation).json +119 -0
  228. data/config/syntax/Regular Expressions (Oniguruma).json +186 -0
  229. data/config/syntax/Regular Expressions (Python).json +188 -0
  230. data/config/syntax/Release Notes.json +78 -0
  231. data/config/syntax/Remind.json +461 -0
  232. data/config/syntax/Rez.json +5 -5
  233. data/config/syntax/Ruby Sass.json +497 -0
  234. data/config/syntax/Ruby.json +13 -13
  235. data/config/syntax/S5 Slide Show.json +85 -0
  236. data/config/syntax/SQL.json +11 -11
  237. data/config/syntax/SSH Config.json +55 -0
  238. data/config/syntax/SWIG.json +2 -2
  239. data/config/syntax/SWeave.json +139 -0
  240. data/config/syntax/Scheme.json +8 -8
  241. data/config/syntax/Scilab.json +69 -0
  242. data/config/syntax/Setext.json +247 -0
  243. data/config/syntax/{Shell-Unix-Generic.json → Shell Script (Bash).json } +4 -4
  244. data/config/syntax/Slate.json +5 -5
  245. data/config/syntax/Strings File.json +53 -0
  246. data/config/syntax/TSV.json +83 -0
  247. data/config/syntax/Tcl.json +1 -1
  248. data/config/syntax/TeX Math.json +2 -2
  249. data/config/syntax/TeX.json +2 -2
  250. data/config/syntax/Textile.json +9 -9
  251. data/config/syntax/Thrift.json +641 -0
  252. data/config/syntax/Twiki.json +1 -1
  253. data/config/syntax/Txt2tags.json +154 -0
  254. data/config/syntax/XML strict.json +4 -4
  255. data/config/syntax/XML.json +6 -6
  256. data/config/syntax/XSL.json +2 -2
  257. data/config/syntax/camlp4.json +63 -0
  258. data/config/syntax/mod_perl.json +72 -0
  259. data/config/syntax/reStructuredText.json +1 -1
  260. data/config/syntax/{Subversion commit message.json → svn-commit.tmp.json} +0 -0
  261. data/config/tutorial +23 -19
  262. data/config/welcome +3 -3
  263. data/lib/ver.rb +273 -62
  264. data/lib/ver/entry.rb +142 -26
  265. data/lib/ver/font.rb +51 -0
  266. data/lib/ver/help.rb +16 -0
  267. data/lib/ver/help/describe_key.rb +82 -0
  268. data/lib/ver/help/help_for_help.rb +39 -0
  269. data/lib/ver/hover_completion.rb +129 -0
  270. data/lib/ver/keymap.rb +95 -24
  271. data/lib/ver/layout.rb +107 -43
  272. data/lib/ver/methods.rb +24 -8
  273. data/lib/ver/methods/clipboard.rb +91 -0
  274. data/lib/ver/methods/completion.rb +146 -71
  275. data/lib/ver/methods/control.rb +203 -222
  276. data/lib/ver/methods/ctags.rb +55 -0
  277. data/lib/ver/methods/delete.rb +30 -0
  278. data/lib/ver/methods/help.rb +7 -0
  279. data/lib/ver/methods/insert.rb +233 -1
  280. data/lib/ver/methods/move.rb +181 -32
  281. data/lib/ver/methods/open.rb +208 -0
  282. data/lib/ver/methods/preview.rb +14 -0
  283. data/lib/ver/methods/save.rb +111 -0
  284. data/lib/ver/methods/search.rb +57 -7
  285. data/lib/ver/methods/select.rb +97 -17
  286. data/lib/ver/methods/shortcuts.rb +21 -0
  287. data/lib/ver/methods/views.rb +56 -1
  288. data/lib/ver/mode.rb +60 -14
  289. data/lib/ver/status.rb +97 -19
  290. data/lib/ver/syntax.rb +14 -6
  291. data/lib/ver/syntax/detector.rb +16 -5
  292. data/lib/ver/syntax/processor.rb +9 -3
  293. data/lib/ver/text.rb +258 -199
  294. data/lib/ver/text/index.rb +103 -0
  295. data/lib/ver/theme.rb +27 -16
  296. data/lib/ver/tooltip.rb +59 -0
  297. data/lib/ver/vendor/binary_search.rb +61 -0
  298. data/lib/ver/vendor/levenshtein.rb +57 -0
  299. data/lib/ver/{textpow.rb → vendor/textpow.rb} +31 -29
  300. data/lib/ver/view.rb +65 -41
  301. data/lib/ver/view/console.rb +171 -0
  302. data/lib/ver/view/entry.rb +9 -5
  303. data/lib/ver/view/list.rb +44 -29
  304. data/lib/ver/view/list/ex.rb +71 -0
  305. data/lib/ver/view/list/grep.rb +42 -0
  306. data/lib/ver/view/list/methods.rb +159 -0
  307. data/lib/ver/view/term.rb +249 -0
  308. data/tasks/syntax_list.rake +3 -2
  309. data/ver.gemspec +4 -4
  310. metadata +230 -28
  311. data/config/syntax/Bulletin Board.json +0 -428
  312. data/config/syntax/HTML (Mason).json +0 -207
  313. data/config/syntax/HTML (Rails).json +0 -52
  314. data/config/syntax/Movable Type.json +0 -348
  315. data/config/syntax/Ruby on Rails.json +0 -170
  316. data/config/syntax/SQL (Rails).json +0 -31
  317. data/config/syntax/Smarty.json +0 -110
  318. data/config/syntax/Standard ML.json +0 -322
@@ -8,18 +8,18 @@
8
8
  "name": "Dylan",
9
9
  "patterns": [
10
10
  {
11
- "begin": "\/\\*",
11
+ "begin": "/\\*",
12
12
  "captures": {
13
13
  "0": {
14
14
  "name": "punctuation.definition.comment.dylan"
15
15
  }
16
16
  },
17
17
  "comment": "TODO -- Dylan allows nested comments.",
18
- "end": "\\*\/",
18
+ "end": "\\*/",
19
19
  "name": "comment.block.dylan"
20
20
  },
21
21
  {
22
- "begin": "\/\/",
22
+ "begin": "//",
23
23
  "beginCaptures": {
24
24
  "0": {
25
25
  "name": "punctuation.definition.comment.dylan"
@@ -95,7 +95,7 @@
95
95
  "name": "support.class.dylan"
96
96
  },
97
97
  {
98
- "match": "\\b(?<!-)(abort|abs|add|add!|add-method|add-new|add-new!|all-superclasses|always|any?|applicable-method?|apply|aref|aref-setter|as|as-lowercase|as-lowercase!|as-uppercase|as-uppercase!|ash|backward-iteration-protocol|break|ceiling|ceiling\/|cerror|check-type|choose|choose-by|complement|compose|concatenate|concatenate-as|condition-format-arguments|condition-format-string|conjoin|copy-sequence|curry|default-handler|dimension|dimensions|direct-subclasses|direct-superclasses|disjoin|do|do-handlers|element|element-setter|empty?|error|even?|every?|fill!|find-key|find-method|first|first-setter|floor|floor\/|forward-iteration-protocol|function-arguments|function-return-values|function-specializers|gcd|generic-function-mandatory-|keywords|generic-function-methods|head|head-setter|identity|initialize|instance?|integral?|intersection|key-sequence|key-test|last|last-setter|lcm|limited|list|logand|logbit?|logior|lognot|logxor|make|map|map-as|map-into|max|member?|merge-hash-codes|min|modulo|negative|negative?|object-class|object-hash|odd?|pair|pop|pop-last|positive?|push|push-last|range|rank|rcurry|reduce|reduce1|remainder|remove|remove!|remove-duplicates|remove-duplicates!|remove-key!|remove-method|replace-elements!|replace-subsequence!|restart-query|return-allowed?|return-description|return-query|reverse|reverse!|round|round\/|row-major-index|second|second-setter|shallow-copy|signal|singleton|size|size-setter|slot-initialized?|sort|sort!|sorted-applicable-methods|subsequence-position|subtype?|table-protocol|tail|tail-setter|third|third-setter|truncate|truncate\/|type-error-expected-type|type-error-value|type-for-copy|type-union|union|values|vector|zero?)(?![:-])\\b",
98
+ "match": "\\b(?<!-)(abort|abs|add|add!|add-method|add-new|add-new!|all-superclasses|always|any?|applicable-method?|apply|aref|aref-setter|as|as-lowercase|as-lowercase!|as-uppercase|as-uppercase!|ash|backward-iteration-protocol|break|ceiling|ceiling/|cerror|check-type|choose|choose-by|complement|compose|concatenate|concatenate-as|condition-format-arguments|condition-format-string|conjoin|copy-sequence|curry|default-handler|dimension|dimensions|direct-subclasses|direct-superclasses|disjoin|do|do-handlers|element|element-setter|empty?|error|even?|every?|fill!|find-key|find-method|first|first-setter|floor|floor/|forward-iteration-protocol|function-arguments|function-return-values|function-specializers|gcd|generic-function-mandatory-|keywords|generic-function-methods|head|head-setter|identity|initialize|instance?|integral?|intersection|key-sequence|key-test|last|last-setter|lcm|limited|list|logand|logbit?|logior|lognot|logxor|make|map|map-as|map-into|max|member?|merge-hash-codes|min|modulo|negative|negative?|object-class|object-hash|odd?|pair|pop|pop-last|positive?|push|push-last|range|rank|rcurry|reduce|reduce1|remainder|remove|remove!|remove-duplicates|remove-duplicates!|remove-key!|remove-method|replace-elements!|replace-subsequence!|restart-query|return-allowed?|return-description|return-query|reverse|reverse!|round|round/|row-major-index|second|second-setter|shallow-copy|signal|singleton|size|size-setter|slot-initialized?|sort|sort!|sorted-applicable-methods|subsequence-position|subtype?|table-protocol|tail|tail-setter|third|third-setter|truncate|truncate/|type-error-expected-type|type-error-value|type-for-copy|type-union|union|values|vector|zero?)(?![:-])\\b",
99
99
  "name": "support.function.dylan"
100
100
  }
101
101
  ],
@@ -1,5 +1,5 @@
1
1
  {
2
- "comment": "The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function\/module\/record\/macro names must be given unquoted. -- desp",
2
+ "comment": "The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp",
3
3
  "fileTypes": [
4
4
  "erl",
5
5
  "hrl"
@@ -448,7 +448,7 @@
448
448
  "name": "punctuation.separator.function-arity.erlang"
449
449
  }
450
450
  },
451
- "match": "\\b(fun)\\s*+(([a-z][a-zA-Z\\d@_]*+)\\s*+(:)\\s*+)?([a-z][a-zA-Z\\d@_]*+)\\s*(\/)"
451
+ "match": "\\b(fun)\\s*+(([a-z][a-zA-Z\\d@_]*+)\\s*+(:)\\s*+)?([a-z][a-zA-Z\\d@_]*+)\\s*(/)"
452
452
  },
453
453
  {
454
454
  "begin": "\\b(fun)\\b",
@@ -761,7 +761,7 @@
761
761
  "name": "meta.structure.list.function.erlang",
762
762
  "patterns": [
763
763
  {
764
- "begin": "([a-z][a-zA-Z\\d@_]*+)\\s*+(\/)",
764
+ "begin": "([a-z][a-zA-Z\\d@_]*+)\\s*+(/)",
765
765
  "beginCaptures": {
766
766
  "1": {
767
767
  "name": "entity.name.function.erlang"
@@ -891,7 +891,7 @@
891
891
  ]
892
892
  },
893
893
  "internal-type-specifiers": {
894
- "begin": "(\/)",
894
+ "begin": "(/)",
895
895
  "beginCaptures": {
896
896
  "1": {
897
897
  "name": "punctuation.separator.value-type.erlang"
@@ -1588,7 +1588,7 @@
1588
1588
  ]
1589
1589
  },
1590
1590
  "symbolic-operator": {
1591
- "match": "\\+\\+|\\+|--|-|\\*|\/=|\/|=\/=|=:=|==|=<|=|<-|<|>=|>|!",
1591
+ "match": "\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!",
1592
1592
  "name": "keyword.operator.symbolic.erlang"
1593
1593
  },
1594
1594
  "textual-operator": {
@@ -25,7 +25,7 @@
25
25
  "name": "constant.numeric.fscript"
26
26
  },
27
27
  {
28
- "match": "#([[:lower:]]|_|[+=\\-\/!%&*|><~?])(\\w|[+=\\-\/!%&*|><~?:])*",
28
+ "match": "#([[:lower:]]|_|[+=\\-/!%&*|><~?])(\\w|[+=\\-/!%&*|><~?:])*",
29
29
  "name": "constant.other.block.compact.fscript"
30
30
  },
31
31
  {
@@ -3,7 +3,7 @@
3
3
  "fxscript"
4
4
  ],
5
5
  "foldingStartMarker": "(^|(?<=;)[ \\t]*)on[ \\t]+(\\w+)[ \\t]*",
6
- "foldingStopMarker": "end(;|;?[ \\t]*|;?[ \\t]*\/\/.*[ \\t]*)",
6
+ "foldingStopMarker": "end(;|;?[ \\t]*|;?[ \\t]*//.*[ \\t]*)",
7
7
  "keyEquivalent": "^~F",
8
8
  "name": "FXScript",
9
9
  "patterns": [
@@ -14,7 +14,7 @@
14
14
  "name": "entity.name.function.fxscript"
15
15
  }
16
16
  },
17
- "end": "end(;|;?[ \\t]*\\n|;?[ \\t]*\/\/.*[ \\t]*\\n)",
17
+ "end": "end(;|;?[ \\t]*\\n|;?[ \\t]*//.*[ \\t]*\\n)",
18
18
  "name": "meta.function.fxscript",
19
19
  "patterns": [
20
20
  {
@@ -74,11 +74,11 @@
74
74
  "name": "keyword.control.fxscrpt"
75
75
  },
76
76
  {
77
- "match": "\/b(?i:AlphaType|EffectID|FullFrame|Group|InformationFlag|InvalEntireItem|KeyType|ProducesAlpha|QTEffect|RenderEachFrameWhenStill|WipeCode)\/b",
77
+ "match": "/b(?i:AlphaType|EffectID|FullFrame|Group|InformationFlag|InvalEntireItem|KeyType|ProducesAlpha|QTEffect|RenderEachFrameWhenStill|WipeCode)/b",
78
78
  "name": "keyword.other.definition-statements.fxscript"
79
79
  },
80
80
  {
81
- "match": "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|!==|<=|>=|<|>|!|&&|\\|\\||\\?\\:|\\*=|\/=|%=|\\+=|\\-=|&=|\\^=",
81
+ "match": "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|!==|<=|>=|<|>|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=",
82
82
  "name": "keyword.operator.arithmetic.fxscrpt"
83
83
  },
84
84
  {
@@ -87,7 +87,7 @@
87
87
  "name": "punctuation.definition.comment.fxscript"
88
88
  }
89
89
  },
90
- "match": "(\/\/).*$\\n?",
90
+ "match": "(//).*$\\n?",
91
91
  "name": "comment.line.double-slash.fxscript"
92
92
  },
93
93
  {
@@ -0,0 +1,221 @@
1
+ {
2
+ "comment": "Specificities of Fortran >= 90",
3
+ "fileTypes": [
4
+ "f90",
5
+ "F90",
6
+ "f95",
7
+ "F95",
8
+ "f03",
9
+ "F03",
10
+ "f08",
11
+ "F08"
12
+ ],
13
+ "firstLineMatch": "(?i)-[*]- mode: f90 -[*]-",
14
+ "foldingStartMarker": "(?x)\t\t\t\t# extended mode\n\t\t\t\t^\\s*\t\t\t\t\t\t# start of line and some space\n\t\t\t\t(?i:\t\t\t\t\t\t# case insensitive match\n\t\t\t\t\t(\n\t\t\t\t\t\tif.*then\t\t\t\t# if ... then\n\t\t\t\t\t\t|for|do|select\\s+case|where|interface\t# some easy keywords\n\t\t\t\t\t\t|module(?!\\s*procedure)\t# module not followed by procedure\n\t\t\t\t\t\t|type(?!\\s*\\()\t\t# type but not type(\n\t\t\t\t\t)\n\t\t\t \t\t|\t\t\t\t\t# ...or...\n\t\t\t\t\t(\n\t\t\t\t\t\t[a-z]*(?<!end)\\s*(function|subroutine)\t# possibly some letters, but not the word end, and a space, then function\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.*$\t\t\t\t\t\t# anything until the end of the line\n\t\t\t",
15
+ "foldingStopMarker": "(?x)\t\t\t\t# extended mode\n\t\t\t\t^\\s*\t\t\t\t\t\t# start of line and some space\n\t\t\t\t(?i:(end))\t\t\t\t# the word end, was insensitive\n\t\t\t\t.*$\t\t\t\t\t\t# anything until the end of the line\n\t\t\t",
16
+ "keyEquivalent": "^~F",
17
+ "name": "Fortran - Modern",
18
+ "patterns": [
19
+ {
20
+ "begin": "^[Cc]\\s+",
21
+ "beginCaptures": {
22
+ "0": {
23
+ "name": "punctuation.definition.comment.fortran"
24
+ }
25
+ },
26
+ "end": "$\\n?",
27
+ "name": "invalid.deprecated.comment.line.fortran",
28
+ "patterns": [
29
+ {
30
+ "match": "\\\\\\s*\\n"
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "include": "source.fortran"
36
+ },
37
+ {
38
+ "begin": "(?x:\t\t\t\t\t# extended mode\n\t\t\t\t\t^\n\t\t\t\t\t\\s*\t\t\t\t\t# start of line and possibly some space\n\t\t\t\t\t(?i:(interface))\t\t# 1: word interface\n\t\t\t\t\t\\s+\t\t\t\t\t# some space\n\t\t\t\t\t(?i:(operator|assignment))\t\t# 2: the words operator or assignment\n\t\t\t\t\t\\(\t\t\t\t\t# opening parenthesis\n\t\t\t\t\t((\\.[a-zA-Z0-9_]+\\.)|[\\+\\-\\=\\/\\*]+)\t# 3: an operator\n\t\t\t\t\t\n\t\t\t\t\t\\)\t\t\t\t\t# closing parenthesis\n\t\t\t\t\t)",
39
+ "beginCaptures": {
40
+ "1": {
41
+ "name": "storage.type.function.fortran"
42
+ },
43
+ "2": {
44
+ "name": "storage.type.fortran"
45
+ },
46
+ "3": {
47
+ "name": "keyword.operator.fortran"
48
+ }
49
+ },
50
+ "comment": "Interface declaration of operator/assignments",
51
+ "end": "(?x:\n\t\t\t\t\t((?i:end))\t\t\t# 1: the word end\n\t\t\t\t\t\\s*\t\t\t\t\t# possibly some space\n\t\t\t\t\t((?i:interface)?) \t\t# 2: possibly interface\n\t\t\t\t\t)",
52
+ "endCaptures": {
53
+ "1": {
54
+ "name": "keyword.other.fortran"
55
+ },
56
+ "2": {
57
+ "name": "storage.type.function.fortran"
58
+ }
59
+ },
60
+ "name": "meta.function.interface.operator.fortran.modern",
61
+ "patterns": [
62
+ {
63
+ "include": "$self"
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "begin": "(?x:\t\t\t\t\t# extended mode\n\t\t\t\t\t^\n\t\t\t\t\t\\s*\t\t\t\t\t# start of line and possibly some space\n\t\t\t\t\t(?i:(interface))\t\t# 1: word interface\n\t\t\t\t\t\\s+\t\t\t\t\t# some space\n\t\t\t\t\t([A-Za-z_][A-Za-z0-9_]*)\t# 1: name\n\t\t\t\t\t)",
69
+ "beginCaptures": {
70
+ "1": {
71
+ "name": "storage.type.function.fortran"
72
+ },
73
+ "2": {
74
+ "name": "entity.name.function.fortran"
75
+ }
76
+ },
77
+ "comment": "Interface declaration of function/subroutines",
78
+ "end": "(?x:\t\t\t\t# extended mode\n\t\t\t\t\t((?i:end))\t\t# 1: the word end\n\t\t\t\t\t\\s*\t\t\t\t# possibly some space\n\t\t\t\t\t((?i:interface)?) \t# 2: possibly interface\n\t\t\t\t\t)",
79
+ "endCaptures": {
80
+ "1": {
81
+ "name": "keyword.other.fortran"
82
+ },
83
+ "2": {
84
+ "name": "storage.type.function.fortran"
85
+ }
86
+ },
87
+ "name": "meta.function.interface.fortran.modern",
88
+ "patterns": [
89
+ {
90
+ "include": "$self"
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "begin": "(?x:\t\t\t# extended mode\n\t\t\t\t\t^\\s*\t\t\t# begining of line and some space\n\t\t\t\t\t(?i:(type))\t# 1: word type\n\t\t\t\t\t\\s+\t\t\t# some space\n\t\t\t\t\t([a-zA-Z_][a-zA-Z0-9_]*)\t# 2: type name\n\t\t\t\t\t)",
96
+ "beginCaptures": {
97
+ "1": {
98
+ "name": "storage.type.fortran.modern"
99
+ },
100
+ "2": {
101
+ "name": "entity.name.type.fortran.modern"
102
+ }
103
+ },
104
+ "comment": "Type definition",
105
+ "end": "(?x:\n\t\t\t\t\t((?i:end))\t\t\t# 1: the word end\n\t\t\t\t\t\\s*\t\t\t\t\t# possibly some space\n\t\t\t\t\t(?i:(type))? \t\t\t# 2: possibly the word type\n\t\t\t\t\t(\\s+[A-Za-z_][A-Za-z0-9_]*)?\t# 3: possibly the name\n\t\t\t\t\t)",
106
+ "endCaptures": {
107
+ "1": {
108
+ "name": "keyword.other.fortran"
109
+ },
110
+ "2": {
111
+ "name": "storage.type.fortran.modern"
112
+ },
113
+ "3": {
114
+ "name": "entity.name.type.end.fortran.modern"
115
+ }
116
+ },
117
+ "name": "meta.type-definition.fortran.modern",
118
+ "patterns": [
119
+ {
120
+ "include": "$self"
121
+ }
122
+ ]
123
+ },
124
+ {
125
+ "begin": "(!-)",
126
+ "beginCaptures": {
127
+ "0": {
128
+ "name": "punctuation.definition.comment.fortran"
129
+ }
130
+ },
131
+ "end": "$\\n?",
132
+ "name": "comment.line.exclamation.mark.fortran.modern",
133
+ "patterns": [
134
+ {
135
+ "match": "\\\\\\s*\\n"
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "begin": "[!]",
141
+ "beginCaptures": {
142
+ "0": {
143
+ "name": "punctuation.definition.comment.fortran"
144
+ }
145
+ },
146
+ "end": "$\\n?",
147
+ "name": "comment.line.exclamation.fortran.modern",
148
+ "patterns": [
149
+ {
150
+ "match": "\\\\\\s*\\n"
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "comment": "statements controling the flow of the program",
156
+ "match": "\\b(?i:(select\\s+case|case(\\s+default)?|end\\s+select|use|(end\\s+)?forall))\\b",
157
+ "name": "keyword.control.fortran.modern"
158
+ },
159
+ {
160
+ "comment": "input/output instrinsics",
161
+ "match": "\\b(?i:(access|action|advance|append|apostrophe|asis|blank|delete|delim|direct|end|eor|err|exist|file|fmt|form|formatted|iolength|iostat|keep|name|named|nextrec|new|nml|no|null|number|old|opened|pad|position|quote|read|readwrite|rec|recl|replace|scratch|sequential|size|status|undefined|unformatted|unit|unknown|write|yes|zero|namelist)(?=\\())",
162
+ "name": "keyword.control.io.fortran.modern"
163
+ },
164
+ {
165
+ "comment": "logical operators in symbolic format",
166
+ "match": "\\b(\\=\\=|\\/\\=|\\>\\=|\\>|\\<|\\<\\=)\\b",
167
+ "name": "keyword.operator.logical.fortran.modern"
168
+ },
169
+ {
170
+ "comment": "operators",
171
+ "match": "(\\%|\\=\\>)",
172
+ "name": "keyword.operator.fortran.modern"
173
+ },
174
+ {
175
+ "comment": "numeric instrinsics",
176
+ "match": "\\b(?i:(ceiling|floor|modulo)(?=\\())",
177
+ "name": "keyword.other.instrinsic.numeric.fortran.modern"
178
+ },
179
+ {
180
+ "comment": "matrix/vector/array instrinsics",
181
+ "match": "\\b(?i:(allocate|allocated|deallocate)(?=\\())",
182
+ "name": "keyword.other.instrinsic.array.fortran.modern"
183
+ },
184
+ {
185
+ "comment": "pointer instrinsics",
186
+ "match": "\\b(?i:(associated)(?=\\())",
187
+ "name": "keyword.other.instrinsic.pointer.fortran.modern"
188
+ },
189
+ {
190
+ "comment": "programming units",
191
+ "match": "\\b(?i:((end\\s*)?(interface|procedure|module)))\\b",
192
+ "name": "keyword.other.programming-units.fortran.modern"
193
+ },
194
+ {
195
+ "begin": "\\b(?i:(type(?=\\s*\\()))\\b(?=.*::)",
196
+ "beginCaptures": {
197
+ "1": {
198
+ "name": "storage.type.fortran.modern"
199
+ }
200
+ },
201
+ "comment": "Line of type specification",
202
+ "end": "(?=!)|$",
203
+ "name": "meta.specification.fortran.modern",
204
+ "patterns": [
205
+ {
206
+ "include": "$base"
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ "match": "\\b(?i:(type(?=\\s*\\()))\\b",
212
+ "name": "storage.type.fortran.modern"
213
+ },
214
+ {
215
+ "match": "\\b(?i:(optional|recursive|pointer|allocatable|target|private|public))\\b",
216
+ "name": "storage.modifier.fortran.modern"
217
+ }
218
+ ],
219
+ "scopeName": "source.fortran.modern",
220
+ "uuid": "016CA1B6-8351-4B17-9215-29C275D5D973"
221
+ }
@@ -0,0 +1,468 @@
1
+ {
2
+ "comment": "?i: has to be added everywhere because fortran is case insensitive; NB: order of matching matters",
3
+ "fileTypes": [
4
+ "f",
5
+ "F",
6
+ "f77",
7
+ "F77",
8
+ "for",
9
+ "FOR",
10
+ "fpp",
11
+ "FPP"
12
+ ],
13
+ "foldingStartMarker": "(?x:\t\t# extended mode\n\t\t^\\s*\t\t\t\t\t\t# start of line and some space\n\t\t(?i:\t\t\t\t\t\t# case insensitive match\n\t\t\t(\n\t\t\t\tif.*then\t\t\t# if ... then\n\t\t\t\t|for|do|select\\s+case|where|interface\t# some easy keywords\n\t\t\t\t|module(?!\\s*procedure)\t\t\t\t# module not followed by procedure\n\t\t\t\t|type(?!\\s*\\()\t# type but not type(\n\t\t\t)\n\t\t\t|\t\t\t\t\t# ...or...\n\t\t\t(\n\t\t\t\t[a-z]*(?<!end)\\s*(function|subroutine)\t# possibly some letters, but not the word end, and a space, then function\n\t\t\t)\n\t\t)\n\t\t.*$\t\t\t\t\t\t# anything until the end of the line\n\t\t)",
14
+ "foldingStopMarker": "(?x:\t\t# extended mode\n\t\t^\\s*\t\t\t\t# start of line and some space\n\t\t(?i:(end))\t\t# the word end, case insensitive\n\t\t.*$\t\t\t\t# anything until the end of the line\n\t\t)",
15
+ "name": "Fortran - Punchcard",
16
+ "patterns": [
17
+ {
18
+ "include": "#preprocessor-rule-enabled"
19
+ },
20
+ {
21
+ "include": "#preprocessor-rule-disabled"
22
+ },
23
+ {
24
+ "include": "#preprocessor-rule-other"
25
+ },
26
+ {
27
+ "comment": "built-in constants",
28
+ "match": "(?i:(r8|r4|\\.TRUE\\.|\\.FALSE\\.))",
29
+ "name": "constant.language.fortran"
30
+ },
31
+ {
32
+ "comment": "numbers",
33
+ "match": "\\b[\\+\\-]?[0-9]+\\.?[0-9a-zA-Z_]*\\b",
34
+ "name": "constant.numeric.fortran"
35
+ },
36
+ {
37
+ "begin": "(?x:\t\t\t\t\t# extended mode\n\t\t\t\t\t^\n\t\t\t\t\t\\s*\t\t\t\t\t# start of line and possibly some space\n\t\t\t\t\t([a-zA-Z\\(\\)]*)(?<!end)\t# 1: possibly some type specification but not the word end\n\t\t\t\t\t\\s*\t\t\t\t\t# possibly some space\n\t\t\t\t\t(?i:(function|subroutine))\\b\t# 2: function or subroutine\n\t\t\t\t\t\\s+\t\t\t\t\t# some space\n\t\t\t\t\t([A-Za-z_][A-Za-z0-9_]*)\t\t# 3: name\n\t\t\t\t\t\\s*\t\t\t\t\t# possibly some space\n\t\t\t\t\t(\\()\t\t\t\t\t# 4: opening parenthesis\n\t\t\t\t\t([^)]*)? \t\t# 5: arguments (anything but a parenthesis)\n\t\t\t\t\t(\\))?\t\t\t\t\t# 6: closing parenthesis\n\t\t\t\t\t)",
38
+ "beginCaptures": {
39
+ "1": {
40
+ "name": "storage.type.fortran"
41
+ },
42
+ "2": {
43
+ "name": "storage.type.function.fortran"
44
+ },
45
+ "3": {
46
+ "name": "entity.name.function.fortran"
47
+ },
48
+ "4": {
49
+ "name": "punctuation.definition.parameters.fortran"
50
+ },
51
+ "5": {
52
+ "name": "variable.parameter.fortran"
53
+ },
54
+ "6": {
55
+ "name": "punctuation.definition.parameters.fortran"
56
+ }
57
+ },
58
+ "comment": "First line of function/subroutine definition",
59
+ "end": "(?x:\t\t\t\t\t# extended mode\n\t\t\t\t\t((?i:end))\t\t\t# 1: the word end\n\t\t\t\t\t(\t\t\t\t\t# followed by\n\t\t\t\t\t\t$\t\t\t\t# end of line\n\t\t\t\t\t|\t\t\t\t\t# or\n\t\t\t\t\t\t\\s*\t\t\t\t# possibly some space\n\t\t\t\t\t\t(?i:(function|subroutine))\t# 2: function or subroutine\n\t\t\t\t\t\t((\\s+[A-Za-z_][A-Za-z0-9_]*)?)\t# 3: possibly the name\n\t\t\t\t\t)\n\t\t\t\t\t)",
60
+ "endCaptures": {
61
+ "1": {
62
+ "name": "keyword.other.fortran"
63
+ },
64
+ "3": {
65
+ "name": "storage.type.function.fortran"
66
+ },
67
+ "4": {
68
+ "name": "entity.name.function.end.fortran"
69
+ }
70
+ },
71
+ "name": "meta.function.fortran",
72
+ "patterns": [
73
+ {
74
+ "include": "$self"
75
+ },
76
+ {
77
+ "include": "source.fortran.modern"
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "begin": "\\b(?i:(integer|real|double\\s+precision|complex|logical|character))\\b(?=.*::)",
83
+ "beginCaptures": {
84
+ "1": {
85
+ "name": "storage.type.fortran"
86
+ }
87
+ },
88
+ "comment": "Line of type specification",
89
+ "end": "(?=!)|$",
90
+ "name": "meta.specification.fortran",
91
+ "patterns": [
92
+ {
93
+ "include": "$self"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "comment": "statements controling the flow of the program",
99
+ "match": "\\b(?i:(go\\s*to|assign|to|if|then|else|end\\s*if|continue|stop|pause|do|end\\s*do|while|cycle))\\b",
100
+ "name": "keyword.control.fortran"
101
+ },
102
+ {
103
+ "comment": "programming units",
104
+ "match": "\\b(?i:(program|end\\s+program|entry|block\\s+data|call|return|contains|include))\\b",
105
+ "name": "keyword.control.programming-units.fortran"
106
+ },
107
+ {
108
+ "comment": "i/o statements",
109
+ "match": "\\b(?i:(open|close|read|write|print|inquire|backspace|endfile|format))\\b",
110
+ "name": "keyword.control.io.fortran"
111
+ },
112
+ {
113
+ "comment": "operators",
114
+ "match": "((?<!\\=)\\=(?!\\=)|\\-|\\+|\\/\\/|\\/|\\*|::)",
115
+ "name": "keyword.operator.fortran"
116
+ },
117
+ {
118
+ "comment": "logical operators",
119
+ "match": "(?i:(\\.and\\.|\\.or\\.|\\.eq\\.|\\.lt\\.|\\.le\\.|\\.gt\\.|\\.ge\\.|\\.ne\\.|\\.not\\.|\\.eqv\\.|\\.neqv\\.))",
120
+ "name": "keyword.operator.logical.fortran"
121
+ },
122
+ {
123
+ "comment": "argument related intrisics",
124
+ "match": "\\b(?i:(present)(?=\\())",
125
+ "name": "keyword.other.instrisic.argument.fortran"
126
+ },
127
+ {
128
+ "comment": "numeric intrisics",
129
+ "match": "\\b(?i:(abs|aimag|aint|anint|cmplx|conjg|dble|dim|dprod|int|max|min|mod|nint|real|sign|digits|epsilon|huge|maxexponent|minexponent|precision|radix|range|tiny)(?=\\())",
130
+ "name": "keyword.other.instrisic.numeric.fortran"
131
+ },
132
+ {
133
+ "comment": "character string intrinsics",
134
+ "match": "\\b(?i:(achar|adjustl|adjustr|char|iachar|ichar|index|len_trim|repeat|scan|string|trim|verify|len)(?=\\())",
135
+ "name": "keyword.other.instrisic.string.fortran"
136
+ },
137
+ {
138
+ "comment": "mathematical intrisics",
139
+ "match": "\\b(?i:(((acos|asin|atan|atan2|cos|cosh|exp|log|log10|sin|sinh|sqrt|tan|tanh)(?=\\())|(random_number|random_seed)))\\b",
140
+ "name": "keyword.other.instrisic.math.fortran"
141
+ },
142
+ {
143
+ "comment": "data kind intrinsics",
144
+ "match": "\\b(?i:(kind|selected_int_kind|selected_real_kind|transfer)(?=\\())",
145
+ "name": "keyword.other.instrisic.data.fortran"
146
+ },
147
+ {
148
+ "comment": "logical intrinsics",
149
+ "match": "\\b(?i:(logical)(?=\\())",
150
+ "name": "keyword.other.instrisic.logical.fortran"
151
+ },
152
+ {
153
+ "comment": "bit operations intrinsics",
154
+ "match": "\\b(?i:(((bit_size|btest|iand|ibclr|ibits|ibset|ieor|ior|ishift|ishiftc|not)(?=\\())|mvbits))\\b",
155
+ "name": "keyword.other.instrisic.bit.fortran"
156
+ },
157
+ {
158
+ "comment": "floating point intrinsics",
159
+ "match": "\\b(?i:(exponent|fraction|nearest|rrspacing|scale|set_exponent|spacing)(?=\\())",
160
+ "name": "keyword.other.instrisic.floating-point.fortran"
161
+ },
162
+ {
163
+ "comment": "matrix/vector/array intrisics",
164
+ "match": "\\b(?i:(((dot_product|sum|matmul|transpose|all|any|count|maxval|minval|maxloc|minloc|product|sum|lbound|ubound|shape|size|merge|pack|unpack|reshape|spread|cshift|eoshift)(?=\\())|(where|elsewhere|end\\s*where)))\\b",
165
+ "name": "keyword.other.instrisic.array.fortran"
166
+ },
167
+ {
168
+ "comment": "other intrisics",
169
+ "match": "\\b(?i:(((dtime)(?=\\())|(date_and_time|system_clock)))\\b",
170
+ "name": "keyword.other.instrisic.fortran"
171
+ },
172
+ {
173
+ "comment": "data specification",
174
+ "match": "\\b(?i:(integer|real|double\\s+precision|complex|logical|character|block\\sdata|operator|assignment))\\b",
175
+ "name": "storage.type.fortran"
176
+ },
177
+ {
178
+ "comment": "data type attributes",
179
+ "match": "\\b(?i:(dimension|common|equivalence|parameter|external|intrinsic|save|data|implicit\\s*none|implicit|intent|in|out|inout))\\b",
180
+ "name": "storage.modifier.fortran"
181
+ },
182
+ {
183
+ "applyEndPatternLast": 1,
184
+ "begin": "'",
185
+ "beginCaptures": {
186
+ "0": {
187
+ "name": "punctuation.definition.string.begin.fortran"
188
+ }
189
+ },
190
+ "comment": "String",
191
+ "end": "'",
192
+ "endCaptures": {
193
+ "0": {
194
+ "name": "punctuation.definition.string.end.fortran"
195
+ }
196
+ },
197
+ "name": "string.quoted.single.fortran",
198
+ "patterns": [
199
+ {
200
+ "match": "''",
201
+ "name": "constant.character.escape.apostrophe.fortran"
202
+ }
203
+ ]
204
+ },
205
+ {
206
+ "applyEndPatternLast": 1,
207
+ "begin": "\"",
208
+ "beginCaptures": {
209
+ "0": {
210
+ "name": "punctuation.definition.string.begin.fortran"
211
+ }
212
+ },
213
+ "comment": "String",
214
+ "end": "\"",
215
+ "endCaptures": {
216
+ "0": {
217
+ "name": "punctuation.definition.string.end.fortran"
218
+ }
219
+ },
220
+ "name": "string.quoted.double.fortran",
221
+ "patterns": [
222
+ {
223
+ "match": "\"\"",
224
+ "name": "constant.character.escape.quote.fortran"
225
+ }
226
+ ]
227
+ },
228
+ {
229
+ "begin": "^[Cc]",
230
+ "beginCaptures": {
231
+ "0": {
232
+ "name": "punctuation.definition.comment.fortran"
233
+ }
234
+ },
235
+ "end": "$\\n?",
236
+ "name": "comment.line.c.fortran",
237
+ "patterns": [
238
+ {
239
+ "match": "\\\\\\s*\\n"
240
+ }
241
+ ]
242
+ },
243
+ {
244
+ "begin": "^\\s*#\\s*(error|warning)\\b",
245
+ "captures": {
246
+ "1": {
247
+ "name": "keyword.control.import.error.fortran"
248
+ }
249
+ },
250
+ "end": "$\\n?",
251
+ "name": "meta.preprocessor.diagnostic.fortran",
252
+ "patterns": [
253
+ {
254
+ "match": "(?>\\\\\\s*\\n)",
255
+ "name": "punctuation.separator.continuation.fortran"
256
+ }
257
+ ]
258
+ },
259
+ {
260
+ "begin": "^\\s*#\\s*(include|import)\\b\\s+",
261
+ "captures": {
262
+ "1": {
263
+ "name": "keyword.control.import.include.fortran"
264
+ }
265
+ },
266
+ "end": "(?=(?://|/\\*))|$\\n?",
267
+ "name": "meta.preprocessor.fortran.include",
268
+ "patterns": [
269
+ {
270
+ "match": "(?>\\\\\\s*\\n)",
271
+ "name": "punctuation.separator.continuation.fortran"
272
+ },
273
+ {
274
+ "begin": "\"",
275
+ "beginCaptures": {
276
+ "0": {
277
+ "name": "punctuation.definition.string.begin.fortran"
278
+ }
279
+ },
280
+ "end": "\"",
281
+ "endCaptures": {
282
+ "0": {
283
+ "name": "punctuation.definition.string.end.fortran"
284
+ }
285
+ },
286
+ "name": "string.quoted.double.include.fortran"
287
+ },
288
+ {
289
+ "begin": "<",
290
+ "beginCaptures": {
291
+ "0": {
292
+ "name": "punctuation.definition.string.begin.fortran"
293
+ }
294
+ },
295
+ "end": ">",
296
+ "endCaptures": {
297
+ "0": {
298
+ "name": "punctuation.definition.string.end.fortran"
299
+ }
300
+ },
301
+ "name": "string.quoted.other.lt-gt.include.fortran"
302
+ }
303
+ ]
304
+ },
305
+ {
306
+ "include": "#pragma-mark"
307
+ },
308
+ {
309
+ "begin": "^\\s*#\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef)\\b",
310
+ "captures": {
311
+ "1": {
312
+ "name": "keyword.control.import.fortran"
313
+ }
314
+ },
315
+ "end": "(?=(?://|/\\*))|$\\n?",
316
+ "name": "meta.preprocessor.fortran",
317
+ "patterns": [
318
+ {
319
+ "match": "(?>\\\\\\s*\\n)",
320
+ "name": "punctuation.separator.continuation.fortran"
321
+ }
322
+ ]
323
+ }
324
+ ],
325
+ "repository": {
326
+ "disabled": {
327
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
328
+ "comment": "eat nested preprocessor if(def)s",
329
+ "end": "^\\s*#\\s*endif\\b.*$",
330
+ "patterns": [
331
+ {
332
+ "include": "#disabled"
333
+ },
334
+ {
335
+ "include": "#pragma-mark"
336
+ }
337
+ ]
338
+ },
339
+ "pragma-mark": {
340
+ "captures": {
341
+ "1": {
342
+ "name": "meta.preprocessor.fortran"
343
+ },
344
+ "2": {
345
+ "name": "keyword.control.import.pragma.fortran"
346
+ },
347
+ "3": {
348
+ "name": "meta.toc-list.pragma-mark.fortran"
349
+ }
350
+ },
351
+ "match": "^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))",
352
+ "name": "meta.section"
353
+ },
354
+ "preprocessor-rule-disabled": {
355
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
356
+ "captures": {
357
+ "1": {
358
+ "name": "meta.preprocessor.fortran"
359
+ },
360
+ "2": {
361
+ "name": "keyword.control.import.if.fortran"
362
+ },
363
+ "3": {
364
+ "name": "constant.numeric.preprocessor.fortran"
365
+ }
366
+ },
367
+ "end": "^\\s*(#\\s*(endif)\\b)",
368
+ "patterns": [
369
+ {
370
+ "begin": "^\\s*(#\\s*(else)\\b)",
371
+ "captures": {
372
+ "1": {
373
+ "name": "meta.preprocessor.fortran"
374
+ },
375
+ "2": {
376
+ "name": "keyword.control.import.else.fortran"
377
+ }
378
+ },
379
+ "end": "(?=^\\s*#\\s*endif\\b.*$)",
380
+ "patterns": [
381
+ {
382
+ "include": "$base"
383
+ }
384
+ ]
385
+ },
386
+ {
387
+ "begin": "",
388
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*$)",
389
+ "name": "comment.block.preprocessor.if-branch",
390
+ "patterns": [
391
+ {
392
+ "include": "#disabled"
393
+ },
394
+ {
395
+ "include": "#pragma-mark"
396
+ }
397
+ ]
398
+ }
399
+ ]
400
+ },
401
+ "preprocessor-rule-enabled": {
402
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
403
+ "captures": {
404
+ "1": {
405
+ "name": "meta.preprocessor.fortran"
406
+ },
407
+ "2": {
408
+ "name": "keyword.control.import.if.fortran"
409
+ },
410
+ "3": {
411
+ "name": "constant.numeric.preprocessor.fortran"
412
+ }
413
+ },
414
+ "end": "^\\s*(#\\s*(endif)\\b)",
415
+ "patterns": [
416
+ {
417
+ "begin": "^\\s*(#\\s*(else)\\b).*",
418
+ "captures": {
419
+ "1": {
420
+ "name": "meta.preprocessor.fortran"
421
+ },
422
+ "2": {
423
+ "name": "keyword.control.import.else.fortran"
424
+ }
425
+ },
426
+ "contentName": "comment.block.preprocessor.else-branch",
427
+ "end": "(?=^\\s*#\\s*endif\\b.*$)",
428
+ "patterns": [
429
+ {
430
+ "include": "#disabled"
431
+ },
432
+ {
433
+ "include": "#pragma-mark"
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "begin": "",
439
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*$)",
440
+ "patterns": [
441
+ {
442
+ "include": "$base"
443
+ }
444
+ ]
445
+ }
446
+ ]
447
+ },
448
+ "preprocessor-rule-other": {
449
+ "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
450
+ "captures": {
451
+ "1": {
452
+ "name": "meta.preprocessor.fortran"
453
+ },
454
+ "2": {
455
+ "name": "keyword.control.import.fortran"
456
+ }
457
+ },
458
+ "end": "^\\s*(#\\s*(endif)\\b).*$",
459
+ "patterns": [
460
+ {
461
+ "include": "$base"
462
+ }
463
+ ]
464
+ }
465
+ },
466
+ "scopeName": "source.fortran",
467
+ "uuid": "45253F88-F7CC-49C5-9C32-F3FADD2AB579"
468
+ }