ver 2010.02 → 2010.08

Sign up to get free protection for your applications and to get access to all the features.
Files changed (651) hide show
  1. data/.gitignore +1 -0
  2. data/.yardopts +1 -1
  3. data/AUTHORS +2 -2
  4. data/CHANGELOG +1160 -0
  5. data/MANIFEST +212 -62
  6. data/README.textile +68 -9
  7. data/Rakefile +2 -2
  8. data/bin/ver +33 -8
  9. data/config/commands/ANTLR.rb +11 -0
  10. data/config/commands/ActionScript.rb +102 -0
  11. data/config/commands/Active4D.rb +30 -0
  12. data/config/commands/Ada.rb +11 -0
  13. data/config/commands/Ant.rb +90 -0
  14. data/config/commands/Apache.rb +98 -0
  15. data/config/commands/AppleScript.rb +169 -0
  16. data/config/commands/Blogging.rb +72 -0
  17. data/config/commands/Bulletin Board.rb +10 -0
  18. data/config/commands/Bundle Development.rb +83 -0
  19. data/config/commands/C++ Qt.rb +158 -0
  20. data/config/commands/C.rb +82 -0
  21. data/config/commands/CMake.rb +32 -0
  22. data/config/commands/CSS.rb +76 -0
  23. data/config/commands/CTags.rb +29 -0
  24. data/config/commands/CVS.rb +114 -0
  25. data/config/commands/CoffeeScript.rb +58 -0
  26. data/config/commands/Context Free.rb +20 -0
  27. data/config/commands/Cucumber.rb +94 -0
  28. data/config/commands/D.rb +47 -0
  29. data/config/commands/Darcs.rb +72 -0
  30. data/config/commands/Diff.rb +76 -0
  31. data/config/commands/Doxygen.rb +9 -0
  32. data/config/commands/Experimental Wiki.rb +9 -0
  33. data/config/commands/Experimental.rb +172 -0
  34. data/config/commands/F-Script.rb +13 -0
  35. data/config/commands/FXScript.rb +11 -0
  36. data/config/commands/FileMerge.rb +42 -0
  37. data/config/commands/Fortran.rb +58 -0
  38. data/config/commands/GTD2.rb +134 -0
  39. data/config/commands/GTDAlt.rb +225 -0
  40. data/config/commands/GetBundle.rb +41 -0
  41. data/config/commands/Go.rb +29 -0
  42. data/config/commands/Graphviz.rb +11 -0
  43. data/config/commands/Greasemonkey.rb +158 -0
  44. data/config/commands/Gri.rb +11 -0
  45. data/config/commands/Groovy Grails.rb +174 -0
  46. data/config/commands/Groovy.rb +66 -0
  47. data/config/commands/HTML.rb +206 -0
  48. data/config/commands/Haskell.rb +48 -0
  49. data/config/commands/Hotkey.rb +50 -0
  50. data/config/commands/Hyperlink Helper.rb +81 -0
  51. data/config/commands/ImageBrowser.rb +10 -0
  52. data/config/commands/Io.rb +11 -0
  53. data/config/commands/JSFL.rb +29 -0
  54. data/config/commands/JSON.rb +11 -0
  55. data/config/commands/Java.rb +45 -0
  56. data/config/commands/JavaDoc.rb +12 -0
  57. data/config/commands/JavaScript Prototype & Script.aculo.us.rb +51 -0
  58. data/config/commands/JavaScript YUI.rb +12 -0
  59. data/config/commands/JavaScript jQuery.rb +12 -0
  60. data/config/commands/JavaScript.rb +50 -0
  61. data/config/commands/LaTeX.rb +423 -0
  62. data/config/commands/Lisp.rb +20 -0
  63. data/config/commands/Logo.rb +10 -0
  64. data/config/commands/Logtalk.rb +34 -0
  65. data/config/commands/Lua.rb +29 -0
  66. data/config/commands/MEL.rb +20 -0
  67. data/config/commands/Mail.rb +73 -0
  68. data/config/commands/Make.rb +20 -0
  69. data/config/commands/Man Pages.rb +20 -0
  70. data/config/commands/Markdown.rb +194 -0
  71. data/config/commands/Math.rb +79 -0
  72. data/config/commands/Matlab.rb +188 -0
  73. data/config/commands/Maven.rb +162 -0
  74. data/config/commands/Mediawiki.rb +12 -0
  75. data/config/commands/Mercurial.rb +185 -0
  76. data/config/commands/MoinMoin.rb +74 -0
  77. data/config/commands/Movable Type.rb +68 -0
  78. data/config/commands/Nemerle.rb +29 -0
  79. data/config/commands/OCaml Experimental Completions.rb +22 -0
  80. data/config/commands/OCaml.rb +99 -0
  81. data/config/commands/Objective-C.rb +181 -0
  82. data/config/commands/Outlines.rb +54 -0
  83. data/config/commands/PHP Smarty.rb +10 -0
  84. data/config/commands/Pascal.rb +11 -0
  85. data/config/commands/Perforce.rb +102 -0
  86. data/config/commands/Perl.rb +78 -0
  87. data/config/commands/Processing.rb +11 -0
  88. data/config/commands/Prolog.rb +11 -0
  89. data/config/commands/Property List.rb +38 -0
  90. data/config/commands/Python Django.rb +11 -0
  91. data/config/commands/Python.rb +131 -0
  92. data/config/commands/R Console (R.app).rb +80 -0
  93. data/config/commands/R Console (Rdaemon).rb +414 -0
  94. data/config/commands/R.rb +337 -0
  95. data/config/commands/Ragel.rb +10 -0
  96. data/config/commands/Regular Expressions.rb +18 -0
  97. data/config/commands/Remind.rb +44 -0
  98. data/config/commands/Ruby RSpec.rb +40 -0
  99. data/config/commands/Ruby on Rails.rb +331 -0
  100. data/config/commands/Ruby.rb +220 -0
  101. data/config/commands/S5 Slide Show.rb +37 -0
  102. data/config/commands/SCons.rb +24 -0
  103. data/config/commands/SQL.rb +60 -0
  104. data/config/commands/SVK.rb +83 -0
  105. data/config/commands/SWeave.rb +63 -0
  106. data/config/commands/Scheme.rb +30 -0
  107. data/config/commands/Scilab.rb +28 -0
  108. data/config/commands/Setext.rb +20 -0
  109. data/config/commands/Shell Script.rb +59 -0
  110. data/config/commands/Slate.rb +9 -0
  111. data/config/commands/Source.rb +84 -0
  112. data/config/commands/Standard ML.rb +38 -0
  113. data/config/commands/Subversion.rb +181 -0
  114. data/config/commands/TODO.rb +32 -0
  115. data/config/commands/Tcl.rb +21 -0
  116. data/config/commands/TerminalMate.rb +30 -0
  117. data/config/commands/Text.rb +137 -0
  118. data/config/commands/TextMate.rb +100 -0
  119. data/config/commands/Textile.rb +58 -0
  120. data/config/commands/Thrift.rb +20 -0
  121. data/config/commands/Transmit.rb +34 -0
  122. data/config/commands/Txt2tags.rb +213 -0
  123. data/config/commands/Vectorscript.rb +19 -0
  124. data/config/commands/Widget Creator.rb +23 -0
  125. data/config/commands/XML.rb +29 -0
  126. data/config/commands/Xcode.rb +106 -0
  127. data/config/commands/YAML.rb +39 -0
  128. data/config/commands/YARD.rb +12 -0
  129. data/config/commands/iTerm.rb +26 -0
  130. data/config/commands/reStructuredText.rb +126 -0
  131. data/config/detect.rb +13 -1
  132. data/config/keymap/diakonos.rb +113 -115
  133. data/config/keymap/emacs.rb +6 -2
  134. data/config/keymap/nano.rb +104 -112
  135. data/config/keymap/vim.rb +329 -258
  136. data/config/plugin/autosave.rb +3 -6
  137. data/config/plugin/git.rb +18 -12
  138. data/config/plugin/soma.rb +1 -1
  139. data/config/preferences/Apache.rb +17 -17
  140. data/config/preferences/AppleScript.rb +5 -5
  141. data/config/preferences/Bundle Development.rb +10 -10
  142. data/config/preferences/C.rb +38 -30
  143. data/config/preferences/CoffeeScript.rb +28 -0
  144. data/config/preferences/ColdFusion.rb +6 -6
  145. data/config/preferences/Cucumber.rb +40 -0
  146. data/config/preferences/Diff.rb +4 -4
  147. data/config/preferences/Eiffel.rb +6 -6
  148. data/config/preferences/Erlang.rb +16 -16
  149. data/config/preferences/F-Script.rb +12 -12
  150. data/config/preferences/FXScript.rb +5 -5
  151. data/config/preferences/Fortran.rb +17 -17
  152. data/config/preferences/Go.rb +23 -0
  153. data/config/preferences/Groovy.rb +29 -0
  154. data/config/preferences/HTML.rb +44 -44
  155. data/config/preferences/Haskell.rb +14 -14
  156. data/config/preferences/Io.rb +11 -11
  157. data/config/preferences/Java.rb +8 -8
  158. data/config/preferences/LaTeX.rb +24 -24
  159. data/config/preferences/Logo.rb +6 -6
  160. data/config/preferences/Logtalk.rb +5 -5
  161. data/config/preferences/Markdown.rb +43 -0
  162. data/config/preferences/Maven.rb +42 -42
  163. data/config/preferences/Mediawiki.rb +8 -8
  164. data/config/preferences/Movable Type.rb +14 -14
  165. data/config/preferences/OCaml.rb +15 -15
  166. data/config/preferences/Objective-C.rb +5 -5
  167. data/config/preferences/PHP.rb +2564 -0
  168. data/config/preferences/Property List.rb +8 -8
  169. data/config/preferences/R.rb +5 -5
  170. data/config/preferences/Ruby.rb +24 -24
  171. data/config/preferences/Source.rb +13 -13
  172. data/config/preferences/Standard ML.rb +9 -9
  173. data/config/preferences/Tcl.rb +5 -5
  174. data/config/preferences/Text.rb +14 -14
  175. data/config/preferences/TextMate.rb +5 -5
  176. data/config/preferences/Textile.rb +8 -8
  177. data/config/preferences/YARD.rb +9 -0
  178. data/config/preferences/iTerm.rb +9 -9
  179. data/config/rc.rb +5 -2
  180. data/config/snippets/ASP vb.NET.rb +203 -54
  181. data/config/snippets/ASP.rb +51 -36
  182. data/config/snippets/ActionScript.rb +332 -205
  183. data/config/snippets/Active4D.rb +325 -256
  184. data/config/snippets/Ada.rb +106 -60
  185. data/config/snippets/Ant.rb +7 -5
  186. data/config/snippets/Apache.rb +24 -20
  187. data/config/snippets/AppleScript.rb +213 -82
  188. data/config/snippets/Blogging.rb +41 -18
  189. data/config/snippets/Bulletin Board.rb +56 -21
  190. data/config/snippets/Bundle Development.rb +108 -63
  191. data/config/snippets/C++ Qt.rb +72 -57
  192. data/config/snippets/C.rb +128 -100
  193. data/config/snippets/CMake.rb +42 -32
  194. data/config/snippets/CSS.rb +515 -115
  195. data/config/snippets/CoffeeScript.rb +85 -0
  196. data/config/snippets/ColdFusion.rb +2228 -1547
  197. data/config/snippets/Context Free.rb +35 -28
  198. data/config/snippets/Cucumber.rb +55 -0
  199. data/config/snippets/D.rb +164 -111
  200. data/config/snippets/DokuWiki.rb +103 -54
  201. data/config/snippets/Doxygen.rb +87 -40
  202. data/config/snippets/Eiffel.rb +121 -18
  203. data/config/snippets/Erlang.rb +109 -68
  204. data/config/snippets/F-Script.rb +30 -24
  205. data/config/snippets/FXScript.rb +364 -210
  206. data/config/snippets/Fortran.rb +462 -280
  207. data/config/snippets/GTDAlt.rb +10 -4
  208. data/config/snippets/Gettext.rb +10 -8
  209. data/config/snippets/Go.rb +52 -0
  210. data/config/snippets/Greasemonkey.rb +52 -42
  211. data/config/snippets/Gri.rb +12 -10
  212. data/config/snippets/Groovy Grails.rb +313 -0
  213. data/config/snippets/Groovy.rb +685 -0
  214. data/config/snippets/HTML.rb +325 -126
  215. data/config/snippets/Haskell.rb +32 -24
  216. data/config/snippets/Io.rb +53 -42
  217. data/config/snippets/Java.rb +204 -92
  218. data/config/snippets/JavaDoc.rb +105 -56
  219. data/config/snippets/JavaScript MooTools.rb +208 -13
  220. data/config/snippets/JavaScript Objective-J.rb +18 -15
  221. data/config/snippets/JavaScript Prototype & Script.aculo.us.rb +362 -107
  222. data/config/snippets/JavaScript YUI.rb +1245 -186
  223. data/config/snippets/JavaScript jQuery.rb +693 -375
  224. data/config/snippets/JavaScript.rb +71 -53
  225. data/config/snippets/LaTeX.rb +188 -0
  226. data/config/snippets/Lisp.rb +59 -40
  227. data/config/snippets/Logo.rb +12 -6
  228. data/config/snippets/Logtalk.rb +131 -60
  229. data/config/snippets/Lua.rb +43 -33
  230. data/config/snippets/MIPS Assembler.rb +7 -5
  231. data/config/snippets/Mail.rb +10 -1
  232. data/config/snippets/Markdown.rb +7 -0
  233. data/config/snippets/Matlab.rb +232 -178
  234. data/config/snippets/Maven.rb +6 -5
  235. data/config/snippets/Mediawiki.rb +43 -12
  236. data/config/snippets/MoinMoin.rb +50 -10
  237. data/config/snippets/Movable Type.rb +368 -53
  238. data/config/snippets/Nemerle.rb +127 -79
  239. data/config/snippets/OCaml Code Completion Misc.rb +1716 -72
  240. data/config/snippets/OCaml Code Completion Unix.rb +2128 -203
  241. data/config/snippets/OCaml.rb +107 -73
  242. data/config/snippets/ODCompletion.rb +169 -118
  243. data/config/snippets/Objective-C.rb +281 -193
  244. data/config/snippets/PHP Smarty.rb +149 -79
  245. data/config/snippets/PHP.rb +186 -0
  246. data/config/snippets/Pascal.rb +47 -33
  247. data/config/snippets/Perl HTML-Template.rb +33 -0
  248. data/config/snippets/Perl Mason.rb +50 -30
  249. data/config/snippets/Perl Template Toolkit.rb +25 -20
  250. data/config/snippets/Perl.rb +91 -72
  251. data/config/snippets/Processing.rb +55 -33
  252. data/config/snippets/Propel.rb +36 -30
  253. data/config/snippets/Property List.rb +57 -24
  254. data/config/snippets/Python Django Templates.rb +381 -95
  255. data/config/snippets/Python Django.rb +159 -132
  256. data/config/snippets/Python.rb +88 -0
  257. data/config/snippets/R Console (Rdaemon).rb +11 -9
  258. data/config/snippets/R.rb +96 -77
  259. data/config/snippets/Remind.rb +18 -15
  260. data/config/snippets/Ruby RSpec.rb +343 -238
  261. data/config/snippets/Ruby on Rails.rb +1116 -765
  262. data/config/snippets/Ruby.rb +770 -545
  263. data/config/snippets/S5 Slide Show.rb +32 -24
  264. data/config/snippets/SSH Config.rb +21 -17
  265. data/config/snippets/SWIG.rb +30 -18
  266. data/config/snippets/Scilab.rb +98 -79
  267. data/config/snippets/Setext.rb +10 -8
  268. data/config/snippets/Shell Script.rb +52 -42
  269. data/config/snippets/Slate.rb +62 -48
  270. data/config/snippets/Source.rb +24 -1
  271. data/config/snippets/Standard ML.rb +37 -27
  272. data/config/snippets/Tcl.rb +32 -26
  273. data/config/snippets/Text.rb +28 -15
  274. data/config/snippets/Textile.rb +130 -45
  275. data/config/snippets/Thrift.rb +22 -18
  276. data/config/snippets/Twiki.rb +158 -105
  277. data/config/snippets/Txt2tags.rb +166 -79
  278. data/config/snippets/Vectorscript.rb +47 -38
  279. data/config/snippets/Widget Creator.rb +5 -5
  280. data/config/snippets/XML.rb +30 -18
  281. data/config/snippets/YAML.rb +5 -4
  282. data/config/snippets/YARD.rb +93 -0
  283. data/config/snippets/reStructuredText.rb +25 -20
  284. data/config/syntax/ANTLR.rb +17 -15
  285. data/config/syntax/ASP vb.NET.rb +27 -24
  286. data/config/syntax/ASP.rb +21 -19
  287. data/config/syntax/ActionScript.rb +16 -16
  288. data/config/syntax/Active4D Config.rb +5 -5
  289. data/config/syntax/Active4D Library.rb +2 -2
  290. data/config/syntax/Active4D.rb +32 -30
  291. data/config/syntax/Ada.rb +13 -10
  292. data/config/syntax/Ant.rb +9 -7
  293. data/config/syntax/Apache.rb +22 -18
  294. data/config/syntax/AppleScript.rb +486 -192
  295. data/config/syntax/AsciiDoc.rb +21 -0
  296. data/config/syntax/BibTeX.rb +7 -7
  297. data/config/syntax/Blog - HTML.rb +7 -7
  298. data/config/syntax/Blog - Markdown.rb +6 -6
  299. data/config/syntax/Blog - Text.rb +2 -2
  300. data/config/syntax/Blog - Textile.rb +2 -2
  301. data/config/syntax/Bulletin Board.rb +33 -32
  302. data/config/syntax/C++ Qt.rb +7 -6
  303. data/config/syntax/C++.rb +31 -28
  304. data/config/syntax/C.rb +55 -51
  305. data/config/syntax/CMake Listfile.rb +12 -11
  306. data/config/syntax/CSS.rb +24 -23
  307. data/config/syntax/CSV.rb +3 -3
  308. data/config/syntax/CoffeeScript.rb +161 -0
  309. data/config/syntax/ColdFusion.rb +8 -8
  310. data/config/syntax/Context Free.rb +18 -16
  311. data/config/syntax/Cucumber Steps.rb +108 -0
  312. data/config/syntax/D.rb +70 -69
  313. data/config/syntax/Diff.rb +13 -10
  314. data/config/syntax/DokuWiki.rb +22 -18
  315. data/config/syntax/Doxygen.rb +1 -1
  316. data/config/syntax/Dylan.rb +8 -8
  317. data/config/syntax/Eiffel.rb +12 -12
  318. data/config/syntax/Erlang.rb +96 -89
  319. data/config/syntax/F-Script.rb +11 -9
  320. data/config/syntax/FXScript.rb +16 -14
  321. data/config/syntax/Fortran - Modern.rb +25 -24
  322. data/config/syntax/Fortran - Punchcard.rb +43 -40
  323. data/config/syntax/GTD.rb +1 -1
  324. data/config/syntax/GTDalt.rb +14 -11
  325. data/config/syntax/Gettext.rb +10 -9
  326. data/config/syntax/Gherkin.rb +65 -0
  327. data/config/syntax/Go.rb +256 -0
  328. data/config/syntax/Grails Server Page.rb +108 -0
  329. data/config/syntax/Graphviz (DOT).rb +6 -6
  330. data/config/syntax/Greasemonkey.rb +3 -3
  331. data/config/syntax/Gri.rb +12 -12
  332. data/config/syntax/Groovy.rb +502 -0
  333. data/config/syntax/HTML (ASP).rb +3 -3
  334. data/config/syntax/HTML (ASP.net).rb +31 -31
  335. data/config/syntax/HTML (Active4D).rb +19 -19
  336. data/config/syntax/HTML (Django).rb +6 -6
  337. data/config/syntax/HTML (Erlang).rb +4 -4
  338. data/config/syntax/HTML (Mason).rb +13 -13
  339. data/config/syntax/HTML (Rails).rb +5 -5
  340. data/config/syntax/HTML (Tcl).rb +3 -3
  341. data/config/syntax/HTML (Template Toolkit).rb +9 -9
  342. data/config/syntax/HTML.rb +27 -27
  343. data/config/syntax/Haskell.rb +31 -28
  344. data/config/syntax/Inform.rb +5 -5
  345. data/config/syntax/Ini.rb +4 -4
  346. data/config/syntax/Installer Distribution Script.rb +19 -18
  347. data/config/syntax/Io.rb +17 -15
  348. data/config/syntax/JSFL.rb +7 -6
  349. data/config/syntax/Java Properties.rb +3 -3
  350. data/config/syntax/Java Server Page (JSP).rb +5 -4
  351. data/config/syntax/Java.rb +40 -33
  352. data/config/syntax/JavaDoc.rb +24 -22
  353. data/config/syntax/JavaScript (Rails).rb +1 -1
  354. data/config/syntax/JavaScript.rb +41 -34
  355. data/config/syntax/Javascript YUI.rb +109 -101
  356. data/config/syntax/LaTeX Beamer.rb +3 -3
  357. data/config/syntax/LaTeX Log.rb +3 -3
  358. data/config/syntax/LaTeX Memoir.rb +7 -5
  359. data/config/syntax/LaTeX Rdaemon.rb +1 -1
  360. data/config/syntax/LaTeX.rb +52 -47
  361. data/config/syntax/Language Grammar.rb +58 -55
  362. data/config/syntax/Lex-Flex.rb +13 -13
  363. data/config/syntax/Lighttpd.rb +7 -7
  364. data/config/syntax/Lisp.rb +6 -5
  365. data/config/syntax/Literate Haskell.rb +2 -2
  366. data/config/syntax/Logo.rb +4 -4
  367. data/config/syntax/Logtalk.rb +64 -49
  368. data/config/syntax/Lua.rb +12 -12
  369. data/config/syntax/MATLAB.rb +71 -70
  370. data/config/syntax/MEL.rb +16 -15
  371. data/config/syntax/MIPS Assembler.rb +11 -11
  372. data/config/syntax/MacPorts Portfile.rb +16 -15
  373. data/config/syntax/Mail.rb +5 -4
  374. data/config/syntax/Makefile.rb +3 -3
  375. data/config/syntax/Man.rb +2 -2
  376. data/config/syntax/Markdown.rb +440 -0
  377. data/config/syntax/Maven POM.rb +17 -16
  378. data/config/syntax/Mediawiki.rb +46 -46
  379. data/config/syntax/Modula-3.rb +7 -6
  380. data/config/syntax/MoinMoin.rb +16 -16
  381. data/config/syntax/MooTools.rb +75 -65
  382. data/config/syntax/Movable Type (MT only).rb +18 -18
  383. data/config/syntax/Movable Type.rb +20 -20
  384. data/config/syntax/MultiMarkdown.rb +35 -0
  385. data/config/syntax/Nemerle.rb +12 -12
  386. data/config/syntax/OCaml.rb +79 -71
  387. data/config/syntax/OCamllex.rb +14 -14
  388. data/config/syntax/OCamlyacc.rb +14 -12
  389. data/config/syntax/Objective-C++.rb +2 -2
  390. data/config/syntax/Objective-C.rb +76 -70
  391. data/config/syntax/Objective-J.rb +30 -29
  392. data/config/syntax/Octave.rb +27 -27
  393. data/config/syntax/OpenGL.rb +4 -4
  394. data/config/syntax/PHP.rb +1154 -0
  395. data/config/syntax/Pascal.rb +8 -8
  396. data/config/syntax/Perl HTML-Template.rb +5 -5
  397. data/config/syntax/Perl.rb +80 -76
  398. data/config/syntax/Plain Text.rb +5 -5
  399. data/config/syntax/Postscript.rb +6 -6
  400. data/config/syntax/Processing.rb +20 -20
  401. data/config/syntax/Prolog.rb +2 -2
  402. data/config/syntax/Property List.rb +50 -47
  403. data/config/syntax/Prototype & Script.aculo.us (JavaScript) Bracketed.rb +15 -13
  404. data/config/syntax/Prototype & Script.aculo.us (JavaScript).rb +9 -8
  405. data/config/syntax/Python Django.rb +6 -6
  406. data/config/syntax/Python.rb +94 -87
  407. data/config/syntax/Quake Style .cfg.rb +4 -4
  408. data/config/syntax/R Console (Rdaemon) Plain.rb +2 -2
  409. data/config/syntax/R Console (Rdaemon).rb +2 -2
  410. data/config/syntax/R.rb +21 -20
  411. data/config/syntax/RSpec.rb +15 -15
  412. data/config/syntax/Ragel.rb +14 -13
  413. data/config/syntax/Rd (R Documentation).rb +4 -4
  414. data/config/syntax/Regular Expressions (Oniguruma).rb +11 -10
  415. data/config/syntax/Regular Expressions (Python).rb +9 -9
  416. data/config/syntax/Release Notes.rb +7 -6
  417. data/config/syntax/Remind.rb +19 -17
  418. data/config/syntax/Rez.rb +10 -9
  419. data/config/syntax/Ruby Haml.rb +11 -11
  420. data/config/syntax/Ruby on Rails.rb +26 -24
  421. data/config/syntax/Ruby.rb +73 -71
  422. data/config/syntax/S5 Slide Show.rb +9 -9
  423. data/config/syntax/SQL.rb +29 -27
  424. data/config/syntax/SSH Config.rb +4 -4
  425. data/config/syntax/SWIG.rb +12 -11
  426. data/config/syntax/SWeave.rb +8 -7
  427. data/config/syntax/Scheme.rb +56 -54
  428. data/config/syntax/Scilab.rb +7 -6
  429. data/config/syntax/Setext.rb +14 -13
  430. data/config/syntax/Shell Script (Bash).rb +42 -42
  431. data/config/syntax/Slate.rb +24 -19
  432. data/config/syntax/Smarty.rb +11 -10
  433. data/config/syntax/Standard ML - CM.rb +2 -2
  434. data/config/syntax/Standard ML.rb +26 -23
  435. data/config/syntax/Strings File.rb +6 -6
  436. data/config/syntax/TSV.rb +2 -2
  437. data/config/syntax/Tcl.rb +10 -9
  438. data/config/syntax/TeX Math.rb +7 -6
  439. data/config/syntax/TeX.rb +7 -7
  440. data/config/syntax/Textile.rb +33 -27
  441. data/config/syntax/Thrift.rb +37 -29
  442. data/config/syntax/Twiki.rb +19 -18
  443. data/config/syntax/Txt2tags.rb +26 -23
  444. data/config/syntax/Vectorscript.rb +9 -7
  445. data/config/syntax/XML strict.rb +6 -4
  446. data/config/syntax/XML.rb +55 -30
  447. data/config/syntax/XSL.rb +5 -5
  448. data/config/syntax/YAML.rb +14 -12
  449. data/config/syntax/camlp4.rb +5 -5
  450. data/config/syntax/iCalendar.rb +3 -3
  451. data/config/syntax/jQuery (JavaScript).rb +9 -9
  452. data/config/syntax/mod_perl.rb +6 -6
  453. data/config/syntax/qmake Project file.rb +16 -15
  454. data/config/syntax/reStructuredText.rb +23 -21
  455. data/config/syntax/svn-commit.tmp.rb +5 -5
  456. data/lib/ver.rb +169 -85
  457. data/lib/ver/action.rb +39 -30
  458. data/lib/ver/buffer.rb +962 -144
  459. data/lib/ver/buffer/frame.rb +23 -0
  460. data/lib/ver/buffer/invalid_trailing_whitespace.rb +17 -0
  461. data/lib/ver/buffer/markup_underline_link.rb +30 -0
  462. data/lib/ver/buffer/matching_brace.rb +22 -0
  463. data/lib/ver/buffer/term.rb +1 -1
  464. data/lib/ver/clipboard.rb +107 -0
  465. data/lib/ver/digraphs.rb +1373 -0
  466. data/lib/ver/entry.rb +54 -43
  467. data/lib/ver/event.rb +335 -0
  468. data/lib/ver/exception_view.rb +3 -1
  469. data/lib/ver/executor.rb +7 -7
  470. data/lib/ver/executor/buffer.rb +4 -4
  471. data/lib/ver/executor/encoding.rb +19 -0
  472. data/lib/ver/executor/entry.rb +9 -9
  473. data/lib/ver/executor/fuzzy_file_finder.rb +1 -1
  474. data/lib/ver/executor/label.rb +2 -0
  475. data/lib/ver/executor/method.rb +2 -3
  476. data/lib/ver/help/describe_key.rb +44 -44
  477. data/lib/ver/hover_completion.rb +11 -6
  478. data/lib/ver/keymap.rb +68 -39
  479. data/lib/ver/layout/paned.rb +56 -44
  480. data/lib/ver/layout/toplevel.rb +68 -0
  481. data/lib/ver/layout/vim.rb +919 -0
  482. data/lib/ver/major_mode.rb +49 -49
  483. data/lib/ver/methods.rb +22 -25
  484. data/lib/ver/methods/basic.rb +49 -20
  485. data/lib/ver/methods/bookmark.rb +33 -33
  486. data/lib/ver/methods/clipboard.rb +186 -49
  487. data/lib/ver/methods/completion.rb +5 -5
  488. data/lib/ver/methods/control.rb +47 -66
  489. data/lib/ver/methods/delete.rb +5 -122
  490. data/lib/ver/methods/help.rb +2 -2
  491. data/lib/ver/methods/insert.rb +101 -29
  492. data/lib/ver/methods/layout.rb +62 -64
  493. data/lib/ver/methods/macro.rb +45 -0
  494. data/lib/ver/methods/move.rb +63 -349
  495. data/lib/ver/methods/nano.rb +99 -71
  496. data/lib/ver/methods/open.rb +8 -7
  497. data/lib/ver/methods/preview.rb +34 -14
  498. data/lib/ver/methods/save.rb +194 -163
  499. data/lib/ver/methods/search.rb +169 -81
  500. data/lib/ver/methods/search_and_replace.rb +62 -49
  501. data/lib/ver/methods/selection.rb +26 -54
  502. data/lib/ver/methods/snippet.rb +79 -54
  503. data/lib/ver/methods/undo.rb +12 -16
  504. data/lib/ver/minibuffer.rb +283 -134
  505. data/lib/ver/minor_mode.rb +36 -47
  506. data/lib/ver/mode_resolving.rb +71 -0
  507. data/lib/ver/platform.rb +41 -0
  508. data/lib/ver/plist.rb +16 -4
  509. data/lib/ver/register.rb +86 -0
  510. data/lib/ver/status.rb +44 -6
  511. data/lib/ver/status/battery.rb +1 -1
  512. data/lib/ver/status/buffer_position.rb +2 -2
  513. data/lib/ver/status/diakonos_position.rb +3 -3
  514. data/lib/ver/status/encoding.rb +1 -1
  515. data/lib/ver/status/filename.rb +1 -1
  516. data/lib/ver/status/label.rb +20 -20
  517. data/lib/ver/status/mode.rb +1 -1
  518. data/lib/ver/status/nano_help.rb +3 -14
  519. data/lib/ver/status/nano_position.rb +6 -6
  520. data/lib/ver/status/percent.rb +2 -2
  521. data/lib/ver/status/position.rb +2 -2
  522. data/lib/ver/status/short_filename.rb +1 -1
  523. data/lib/ver/status/syntax.rb +1 -1
  524. data/lib/ver/struct.rb +28 -0
  525. data/lib/ver/syntax/processor.rb +2 -1
  526. data/lib/ver/text.rb +48 -520
  527. data/lib/ver/text/end.rb +14 -0
  528. data/lib/ver/text/index.rb +16 -101
  529. data/lib/ver/text/insert.rb +138 -0
  530. data/lib/ver/text/mark.rb +559 -0
  531. data/lib/ver/text/position.rb +240 -0
  532. data/lib/ver/text/range.rb +74 -0
  533. data/lib/ver/text/selection.rb +402 -0
  534. data/lib/ver/text/selection/block.rb +69 -0
  535. data/lib/ver/text/selection/char.rb +93 -0
  536. data/lib/ver/text/selection/line.rb +64 -0
  537. data/lib/ver/text/tag.rb +322 -0
  538. data/lib/ver/undo.rb +109 -34
  539. data/lib/ver/vendor/eval_completer.rb +184 -0
  540. data/lib/ver/vendor/json_store.rb +23 -0
  541. data/lib/ver/vendor/open3.rb +729 -0
  542. data/lib/ver/vendor/pathname.rb +73 -0
  543. data/lib/ver/vendor/textpow.rb +1 -1
  544. data/lib/ver/version.rb +1 -1
  545. data/lib/ver/widget_event.rb +9 -5
  546. data/lib/ver/widget_major_mode.rb +69 -23
  547. data/spec/helper.rb +124 -8
  548. data/spec/ver/action.rb +160 -46
  549. data/spec/ver/buffer.rb +23 -0
  550. data/spec/ver/clipboard.rb +92 -0
  551. data/spec/ver/keymap.rb +63 -61
  552. data/spec/ver/keymap/diakonos.rb +88 -0
  553. data/spec/ver/keymap/emacs.rb +65 -0
  554. data/spec/ver/keymap/general.rb +98 -0
  555. data/spec/ver/keymap/nano.rb +84 -0
  556. data/spec/ver/keymap/vim.rb +205 -0
  557. data/spec/ver/keymap/vim/changing_text.rb +489 -0
  558. data/spec/ver/keymap/vim/complex_changes.rb +53 -0
  559. data/spec/ver/keymap/vim/copying_and_moving_text.rb +258 -0
  560. data/spec/ver/keymap/vim/deleting_text.rb +188 -0
  561. data/spec/ver/keymap/vim/digraphs.rb +52 -0
  562. data/spec/ver/keymap/vim/external_commands.rb +21 -0
  563. data/spec/ver/keymap/vim/inserting_mode_keys.rb +115 -0
  564. data/spec/ver/keymap/vim/inserting_mode_special.rb +168 -0
  565. data/spec/ver/keymap/vim/inserting_text.rb +108 -0
  566. data/spec/ver/keymap/vim/left_right_motion.rb +120 -0
  567. data/spec/ver/keymap/vim/mark_motion.rb +73 -0
  568. data/spec/ver/keymap/vim/repeating_commands.rb +64 -0
  569. data/spec/ver/keymap/vim/text_object_motion.rb +137 -0
  570. data/spec/ver/keymap/vim/text_objects.rb +101 -0
  571. data/spec/ver/keymap/vim/undo_redo.rb +21 -0
  572. data/spec/ver/keymap/vim/up_down_motion.rb +94 -0
  573. data/spec/ver/keymap/vim/various_motion.rb +33 -0
  574. data/spec/ver/keysyms.rb +13 -0
  575. data/spec/ver/major_mode.rb +37 -37
  576. data/spec/ver/minor_mode.rb +21 -20
  577. data/spec/ver/plugin/smart_autoindent.rb +2 -2
  578. data/spec/ver/text/index.rb +122 -0
  579. data/spec/ver/text/insert.rb +299 -0
  580. data/spec/ver/text/mark.rb +94 -0
  581. data/spec/ver/text/range.rb +71 -0
  582. data/spec/ver/text/selection.rb +315 -0
  583. data/spec/ver/text/tag.rb +93 -0
  584. data/spec/ver/undo.rb +133 -0
  585. data/spec/ver/undo/record_sanitize.rb +85 -0
  586. data/spec/ver/vendor/eval_completer.rb +91 -0
  587. data/spec/ver/widget_major_mode.rb +4 -3
  588. data/ver.gemspec +8 -8
  589. metadata +234 -72
  590. data/.todo +0 -102
  591. data/ROADMAP.textile +0 -187
  592. data/config/snippets/ANTLR.rb +0 -3
  593. data/config/snippets/Bison.rb +0 -3
  594. data/config/snippets/CTags.rb +0 -3
  595. data/config/snippets/CVS.rb +0 -3
  596. data/config/snippets/Darcs.rb +0 -3
  597. data/config/snippets/Diff.rb +0 -3
  598. data/config/snippets/Dylan.rb +0 -3
  599. data/config/snippets/Experimental Wiki.rb +0 -3
  600. data/config/snippets/Experimental.rb +0 -3
  601. data/config/snippets/FileMerge.rb +0 -3
  602. data/config/snippets/GTD2.rb +0 -3
  603. data/config/snippets/GetBundle.rb +0 -3
  604. data/config/snippets/Graphviz.rb +0 -3
  605. data/config/snippets/Hotkey.rb +0 -3
  606. data/config/snippets/Hyperlink Helper.rb +0 -3
  607. data/config/snippets/ImageBrowser.rb +0 -3
  608. data/config/snippets/Inform.rb +0 -3
  609. data/config/snippets/Ini.rb +0 -3
  610. data/config/snippets/Installer.rb +0 -3
  611. data/config/snippets/JSFL.rb +0 -3
  612. data/config/snippets/JSON.rb +0 -3
  613. data/config/snippets/Lex-Flex.rb +0 -3
  614. data/config/snippets/Lighttpd.rb +0 -3
  615. data/config/snippets/MEL.rb +0 -3
  616. data/config/snippets/MacPorts.rb +0 -3
  617. data/config/snippets/Make.rb +0 -3
  618. data/config/snippets/Man Pages.rb +0 -3
  619. data/config/snippets/Math.rb +0 -3
  620. data/config/snippets/Mercurial.rb +0 -3
  621. data/config/snippets/Modula.rb +0 -3
  622. data/config/snippets/Navigation.rb +0 -3
  623. data/config/snippets/OCaml Experimental Completions.rb +0 -3
  624. data/config/snippets/OpenGL.rb +0 -3
  625. data/config/snippets/Outlines.rb +0 -3
  626. data/config/snippets/Perforce.rb +0 -3
  627. data/config/snippets/Perl HTML::Template.rb +0 -27
  628. data/config/snippets/Postscript.rb +0 -3
  629. data/config/snippets/Prolog.rb +0 -3
  630. data/config/snippets/Quake.rb +0 -3
  631. data/config/snippets/R Console (R.app).rb +0 -3
  632. data/config/snippets/Ragel.rb +0 -3
  633. data/config/snippets/Regular Expressions.rb +0 -3
  634. data/config/snippets/Rez.rb +0 -3
  635. data/config/snippets/Ruby Haml.rb +0 -3
  636. data/config/snippets/SCons.rb +0 -3
  637. data/config/snippets/SQL.rb +0 -3
  638. data/config/snippets/SVK.rb +0 -3
  639. data/config/snippets/SWeave.rb +0 -3
  640. data/config/snippets/Scheme.rb +0 -3
  641. data/config/snippets/Subversion.rb +0 -3
  642. data/config/snippets/TODO.rb +0 -3
  643. data/config/snippets/Tabular.rb +0 -3
  644. data/config/snippets/TerminalMate.rb +0 -3
  645. data/config/snippets/TextMate.rb +0 -3
  646. data/config/snippets/Transmit.rb +0 -3
  647. data/config/snippets/Xcode.rb +0 -3
  648. data/config/snippets/iCalendar.rb +0 -3
  649. data/config/snippets/iTerm.rb +0 -3
  650. data/lib/ver/keysyms.rb +0 -104
  651. data/spec/ver/methods/move.rb +0 -150
@@ -1,15 +1,16 @@
1
1
  module VER
2
+ # A Layout containing frames in a master and slave pane.
2
3
  class PanedLayout < Tk::Tile::LabelFrame
3
- # contains the buffers in the order they are displayed
4
- attr_reader :stack
4
+ # contains the frames in the order they are displayed
5
+ attr_reader :frames
5
6
 
6
7
  # contains the master and slave pane
7
8
  attr_reader :layout_pane
8
9
 
9
- # contains master buffers
10
+ # contains master frames
10
11
  attr_reader :master_pane
11
12
 
12
- # contains slave buffers
13
+ # contains slave frames
13
14
  attr_reader :slave_pane
14
15
 
15
16
  # options specific for the paned layout
@@ -30,7 +31,7 @@ module VER
30
31
 
31
32
  pack(fill: :both, expand: true)
32
33
 
33
- @stack = []
34
+ @frames = []
34
35
 
35
36
  @layout_pane = Tk::Tile::PanedWindow.new(self, orient: :horizontal)
36
37
  @master_pane = Tk::Tile::PanedWindow.new(@layout_pane, orient: :vertical)
@@ -42,22 +43,22 @@ module VER
42
43
  @layout_pane.bind('<Map>'){ apply }
43
44
  end
44
45
 
45
- # Add the given +buffer+ to the {stack}, apply, and focus +buffer+.
46
+ # Add the given +buffer+.frame to the {frames}, apply, and focus +buffer+.
46
47
  def add_buffer(buffer)
47
- stack.unshift(buffer)
48
+ frames.unshift(buffer.frame)
48
49
  apply
49
50
  buffer.focus
50
51
  end
51
52
 
52
- # Remove given +buffer+ from {stack} and apply.
53
+ # Remove given +buffer+ from {frames} and apply.
53
54
  def forget_buffer(buffer)
54
- stack.delete(buffer)
55
+ frames.delete(buffer.frame)
55
56
  apply
56
57
  end
57
58
 
58
59
  # Create a new {Buffer} inside the {PanedLayout}, +options+ are passed to
59
60
  # {Buffer.new}.
60
- # The new {Buffer} will be at top of the {stack}.
61
+ # The new {Buffer} will be at top of the {frames}.
61
62
  #
62
63
  # @see add_buffer
63
64
  def create_buffer(options = {})
@@ -72,7 +73,7 @@ module VER
72
73
  # @see forget_buffer
73
74
  def close_buffer(buffer)
74
75
  forget_buffer(buffer)
75
- buffer.destroy
76
+ buffer.frame.destroy
76
77
 
77
78
  if previous = visible.first
78
79
  previous.focus
@@ -109,76 +110,87 @@ module VER
109
110
 
110
111
  def masters_slaves
111
112
  masters_max, slaves_max = options.values_at(:masters, :slaves)
112
- stack.compact!
113
- possible = stack.select{|buffer| buffer.shown? }
113
+ frames.compact!
114
+ possible = frames.select(&:shown?)
114
115
  return [*possible[0, masters_max]], [*possible[masters_max, slaves_max]]
115
116
  end
116
117
 
117
- def visible?(buffer)
118
- visible.index(buffer)
118
+ def visible?(frame)
119
+ visible.index(frame)
119
120
  end
120
121
 
121
122
  def visible
122
123
  masters_slaves.flatten
123
124
  end
124
125
 
125
- def focus_next(buffer)
126
- return unless index = visible.index(buffer)
126
+ def show(frame)
127
+ frame.shown = true
128
+ push_up(frame) until visible?(frame)
129
+ frame.focus
130
+ end
131
+
132
+ def hide(frame)
133
+ frame.shown = false
134
+ apply
135
+ end
136
+
137
+ def focus_next(frame)
138
+ return unless index = visible.index(frame)
127
139
 
128
140
  found = visible[index + 1] || visible[0]
129
141
  found.focus
130
142
  end
131
143
 
132
- def focus_prev(buffer)
133
- return unless index = visible.index(buffer)
144
+ def focus_prev(frame)
145
+ return unless index = visible.index(frame)
134
146
 
135
147
  found = visible[index - 1]
136
148
  found.focus
137
149
  end
138
150
 
139
- def push_up(buffer)
140
- return unless index = stack.index(buffer)
141
- previous = stack[index - 1]
142
- buffer.raise(previous)
143
- stack[index - 1], stack[index] = buffer, previous
151
+ def push_up(frame)
152
+ return unless index = frames.index(frame)
153
+ previous = frames[index - 1]
154
+ frame.raise(previous)
155
+ frames[index - 1], frames[index] = frame, previous
144
156
 
145
157
  apply
146
- previous.focus unless visible?(buffer)
158
+ previous.focus unless visible?(frame)
147
159
  end
148
160
 
149
- def push_down(buffer)
150
- return unless index = stack.index(buffer)
151
- following = stack[index + 1] || stack[0]
152
- buffer.raise(following)
153
- stack[stack.index(following)], stack[index] = buffer, following
161
+ def push_down(frame)
162
+ return unless index = frames.index(frame)
163
+ following = frames[index + 1] || frames[0]
164
+ frame.raise(following)
165
+ frames[frames.index(following)], frames[index] = frame, following
154
166
 
155
167
  apply
156
- following.focus unless visible?(buffer)
168
+ following.focus unless visible?(frame)
157
169
  end
158
170
 
159
- def push_top(buffer)
160
- stack.unshift(stack.delete(buffer))
171
+ def push_top(frame)
172
+ frames.unshift(frames.delete(frame))
161
173
  apply
162
174
  end
163
175
 
164
- def push_bottom(buffer)
165
- stack.push(stack.delete(buffer))
176
+ def push_bottom(frame)
177
+ frames.push(frames.delete(frame))
166
178
  apply
167
- stack.last.focus unless visible?(buffer)
179
+ frames.last.focus unless visible?(frame)
168
180
  end
169
181
 
170
- def cycle_next(buffer)
171
- return unless index = stack.index(buffer)
172
- stack.push(stack.shift)
182
+ def cycle_next(frame)
183
+ return unless index = frames.index(frame)
184
+ frames.push(frames.shift)
173
185
  apply
174
- stack[index].focus
186
+ frames[index].focus
175
187
  end
176
188
 
177
- def cycle_prev(buffer)
178
- return unless index = stack.index(buffer)
179
- stack.unshift(stack.pop)
189
+ def cycle_prev(frame)
190
+ return unless index = frames.index(frame)
191
+ frames.unshift(frames.pop)
180
192
  apply
181
- stack[index].focus
193
+ frames[index].focus
182
194
  end
183
195
  end
184
196
  end
@@ -0,0 +1,68 @@
1
+ module VER
2
+ # A layout that puts every {Buffer} into its own {Tk::Toplevel}.
3
+ # This means that the buffers can be managed by the window-manager itself
4
+ # instead of VER, which might be preferable for people using tiling wms.
5
+ #
6
+ # So far this only has been used inside awesome, feedback on other wms are
7
+ # welcome.
8
+ class ToplevelLayout < Tk::Frame
9
+ class Toplevel < Tk::Toplevel
10
+ attr_accessor :buffer
11
+
12
+ def hide
13
+ wm_withdraw
14
+ end
15
+
16
+ def show
17
+ @really_destroy = false
18
+ return if buffer.options.hidden
19
+
20
+ buffer.focus
21
+ return if buffer.winfo_ismapped
22
+
23
+ buffer.frame.pack expand: true, fill: :both
24
+ wm_withdraw
25
+
26
+ # catch destroy requests from the WM before it's too late.
27
+ wm_protocol('WM_DELETE_WINDOW'){
28
+ buffer.close unless @really_destroy
29
+ Tk::OK # don't forget about those...
30
+ }
31
+ bind('<FocusIn>'){|event|
32
+ if event.window_path == self.tk_pathname
33
+ buffer.focus
34
+ Tk.callback_break
35
+ end
36
+ }
37
+ Tk.update
38
+ wm_deiconify
39
+ end
40
+ end
41
+
42
+ def initialize(*args)
43
+ super
44
+ configure takefocus: false
45
+ VER.root.wm_withdraw
46
+ end
47
+
48
+ def add_buffer(buffer)
49
+ buffer.layout.show
50
+ end
51
+
52
+ def forget_buffer(buffer)
53
+ buffer.layout.hide
54
+ end
55
+
56
+ def create_buffer(options = {})
57
+ toplevel = Toplevel.new(self, takefocus: false)
58
+ buffer = Buffer.new(toplevel, options)
59
+ toplevel.buffer = buffer
60
+ yield buffer if block_given?
61
+ buffer
62
+ end
63
+
64
+ def close_buffer(buffer)
65
+ buffer.layout.close
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,919 @@
1
+ class Window
2
+ # Split current window in two.
3
+ # The result is two viewports on the same file.
4
+ # Make new window N high (default is to use half the height of the current
5
+ # window). Reduces the current window height to create room (and others, if
6
+ # the 'equalalways' option is set, 'eadirection' isn't "hor", and one of the
7
+ # mis higher than the current or the new window.
8
+ def split_horizontal(n = nil)
9
+ end
10
+
11
+ # Like {split_horizontal}, but split vertically.
12
+ def split_vertical(n = nil)
13
+ end
14
+
15
+ # Create a new window and start editing an empty file in it.
16
+ # Make new window N high (default is to use half the existing height).
17
+ # Reduces the current window height to create room.
18
+ def new_horizontal(n = nil)
19
+ end
20
+
21
+ # Like {new_horizontal} but split vertically.
22
+ def new_vertical(n = nil)
23
+ end
24
+
25
+ # Quit current window.
26
+ # When quitting the last window (not counting symbolic ones), exit VER.
27
+ # Asks before unsaved changes are abandoned.
28
+ def quit
29
+ end
30
+
31
+ # Same as {quit}, but doesn't ask if buffer was modified.
32
+ def quit!
33
+ end
34
+
35
+ # Close this window to hide it, asks if buffer was modified, will do nothing
36
+ # if current window is last window on screen.
37
+ def close
38
+ end
39
+
40
+ # Same as {close}, but will not ask anything.
41
+ def close!
42
+ end
43
+
44
+ # Make this the only window on the screen. All other windows are {close}d.
45
+ def only
46
+ end
47
+
48
+ # Focus the nth window below.
49
+ # Uses insert cursor position to select between alternatives.
50
+ def go_below(n = nil)
51
+ end
52
+
53
+ # Focus the nth window above.
54
+ # Uses insert cursor position to select between alternatives.
55
+ def go_above(n = nil)
56
+ end
57
+
58
+ # Focus the nth window to the left.
59
+ # Uses insert cursor position to select between alternatives.
60
+ def go_left(n = nil)
61
+ end
62
+
63
+ # Focus the nth window to the right.
64
+ # Uses insert cursor position to select between alternatives.
65
+ def go_right(n = nil)
66
+ end
67
+ end
68
+
69
+ __END__
70
+ CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W*
71
+ CTRL-W CTRL-W Without count: move cursor to window below/right of the
72
+ current one. If there is no window below or right, go to
73
+ top-left window.
74
+ With count: go to Nth window (windows are numbered from
75
+ top-left to bottom-right). To obtain the window number see
76
+ |bufwinnr()| and |winnr()|.
77
+
78
+ *CTRL-W_W*
79
+ CTRL-W W Without count: move cursor to window above/left of current
80
+ one. If there is no window above or left, go to bottom-right
81
+ window. With count: go to Nth window (windows are numbered
82
+ from top-left to bottom-right).
83
+
84
+ CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T*
85
+ CTRL-W CTRL-T Move cursor to top-left window.
86
+
87
+ CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B*
88
+ CTRL-W CTRL-B Move cursor to bottom-right window.
89
+
90
+ CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P*
91
+ CTRL-W CTRL-P Go to previous (last accessed) window.
92
+
93
+ *CTRL-W_P* *E441*
94
+ CTRL-W P Go to preview window. When there is no preview window this is
95
+ an error.
96
+ {not available when compiled without the |+quickfix| feature}
97
+
98
+ If Visual mode is active and the new window is not for the same buffer, the
99
+ Visual mode is ended. If the window is on the same buffer, the cursor
100
+ position is set to keep the same Visual area selected.
101
+
102
+ *:winc* *:wincmd*
103
+ These commands can also be executed with ":wincmd":
104
+
105
+ :[count]winc[md] {arg}
106
+ Like executing CTRL-W [count] {arg}. Example: >
107
+ :wincmd j
108
+ < Moves to the window below the current one.
109
+ This command is useful when a Normal mode cannot be used (for
110
+ the |CursorHold| autocommand event). Or when a Normal mode
111
+ command is inconvenient.
112
+ The count can also be a window number. Example: >
113
+ :exe nr . "wincmd w"
114
+ < This goes to window "nr".
115
+
116
+ ==============================================================================
117
+ 5. Moving windows around *window-moving*
118
+
119
+ CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443*
120
+ CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes
121
+ the second one, the second one becomes the third one, etc.
122
+ The last window becomes the first window. The cursor remains
123
+ in the same window.
124
+ This only works within the row or column of windows that the
125
+ current window is in.
126
+
127
+ *CTRL-W_R*
128
+ CTRL-W R Rotate windows upwards/leftwards. The second window becomes
129
+ the first one, the third one becomes the second one, etc. The
130
+ first window becomes the last window. The cursor remains in
131
+ the same window.
132
+ This only works within the row or column of windows that the
133
+ current window is in.
134
+
135
+ CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X*
136
+ CTRL-W CTRL-X Without count: Exchange current window with next one. If there
137
+ is no next window, exchange with previous window.
138
+ With count: Exchange current window with Nth window (first
139
+ window is 1). The cursor is put in the other window.
140
+ When vertical and horizontal window splits are mixed, the
141
+ exchange is only done in the row or column of windows that the
142
+ current window is in.
143
+
144
+ The following commands can be used to change the window layout. For example,
145
+ when there are two vertically split windows, CTRL-W K will change that in
146
+ horizontally split windows. CTRL-W H does it the other way around.
147
+
148
+ *CTRL-W_K*
149
+ CTRL-W K Move the current window to be at the very top, using the full
150
+ width of the screen. This works like closing the current
151
+ window and then creating another one with ":topleft split",
152
+ except that the current window contents is used for the new
153
+ window.
154
+
155
+ *CTRL-W_J*
156
+ CTRL-W J Move the current window to be at the very bottom, using the
157
+ full width of the screen. This works like closing the current
158
+ window and then creating another one with ":botright split",
159
+ except that the current window contents is used for the new
160
+ window.
161
+
162
+ *CTRL-W_H*
163
+ CTRL-W H Move the current window to be at the far left, using the
164
+ full height of the screen. This works like closing the
165
+ current window and then creating another one with
166
+ ":vert topleft split", except that the current window contents
167
+ is used for the new window.
168
+ {not available when compiled without the +vertsplit feature}
169
+
170
+ *CTRL-W_L*
171
+ CTRL-W L Move the current window to be at the far right, using the full
172
+ height of the screen. This works like closing the
173
+ current window and then creating another one with
174
+ ":vert botright split", except that the current window
175
+ contents is used for the new window.
176
+ {not available when compiled without the +vertsplit feature}
177
+
178
+ *CTRL-W_T*
179
+ CTRL-W T Move the current window to a new tab page. This fails if
180
+ there is only one window in the current tab page.
181
+ When a count is specified the new tab page will be opened
182
+ before the tab page with this index. Otherwise it comes after
183
+ the current tab page.
184
+
185
+ ==============================================================================
186
+ 6. Window resizing *window-resize*
187
+
188
+ *CTRL-W_=*
189
+ CTRL-W = Make all windows (almost) equally high and wide, but use
190
+ 'winheight' and 'winwidth' for the current window.
191
+ Windows with 'winfixheight' set keep their height and windows
192
+ with 'winfixwidth' set keep their width.
193
+
194
+ :res[ize] -N *:res* *:resize* *CTRL-W_-*
195
+ CTRL-W - Decrease current window height by N (default 1).
196
+ If used after 'vertical': decrease width by N.
197
+
198
+ :res[ize] +N *CTRL-W_+*
199
+ CTRL-W + Increase current window height by N (default 1).
200
+ If used after 'vertical': increase width by N.
201
+
202
+ :res[ize] [N]
203
+ CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__*
204
+ CTRL-W _ Set current window height to N (default: highest possible).
205
+
206
+ z{nr}<CR> Set current window height to {nr}.
207
+
208
+ *CTRL-W_<*
209
+ CTRL-W < Decrease current window width by N (default 1).
210
+
211
+ *CTRL-W_>*
212
+ CTRL-W > Increase current window width by N (default 1).
213
+
214
+ :vertical res[ize] [N] *:vertical-resize* *CTRL-W_bar*
215
+ CTRL-W | Set current window width to N (default: widest possible).
216
+
217
+ You can also resize a window by dragging a status line up or down with the
218
+ mouse. Or by dragging a vertical separator line left or right. This only
219
+ works if the version of Vim that is being used supports the mouse and the
220
+ 'mouse' option has been set to enable it.
221
+
222
+ The option 'winheight' ('wh') is used to set the minimal window height of the
223
+ current window. This option is used each time another window becomes the
224
+ current window. If the option is '0', it is disabled. Set 'winheight' to a
225
+ very large value, e.g., '9999', to make the current window always fill all
226
+ available space. Set it to a reasonable value, e.g., '10', to make editing in
227
+ the current window comfortable.
228
+
229
+ The equivalent 'winwidth' ('wiw') option is used to set the minimal width of
230
+ the current window.
231
+
232
+ When the option 'equalalways' ('ea') is set, all the windows are automatically
233
+ made the same size after splitting or closing a window. If you don't set this
234
+ option, splitting a window will reduce the size of the current window and
235
+ leave the other windows the same. When closing a window, the extra lines are
236
+ given to the window above it.
237
+
238
+ The 'eadirection' option limits the direction in which the 'equalalways'
239
+ option is applied. The default "both" resizes in both directions. When the
240
+ value is "ver" only the heights of windows are equalized. Use this when you
241
+ have manually resized a vertically split window and want to keep this width.
242
+ Likewise, "hor" causes only the widths of windows to be equalized.
243
+
244
+ The option 'cmdheight' ('ch') is used to set the height of the command-line.
245
+ If you are annoyed by the |hit-enter| prompt for long messages, set this
246
+ option to 2 or 3.
247
+
248
+ If there is only one window, resizing that window will also change the command
249
+ line height. If there are several windows, resizing the current window will
250
+ also change the height of the window below it (and sometimes the window above
251
+ it).
252
+
253
+ The minimal height and width of a window is set with 'winminheight' and
254
+ 'winminwidth'. These are hard values, a window will never become smaller.
255
+
256
+ ==============================================================================
257
+ 7. Argument and buffer list commands *buffer-list*
258
+
259
+ args list buffer list meaning ~
260
+ 1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N
261
+ 2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf
262
+ 3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf
263
+ 4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf
264
+ 5. :rewind / :first 15. :brewind / :bfirst to first arg/buf
265
+ 6. :last 16. :blast to last arg/buf
266
+ 7. :all 17. :ball edit all args/buffers
267
+ 18. :unhide edit all loaded buffers
268
+ 19. :[N]bmod [N] to Nth modified buf
269
+
270
+ split & args list split & buffer list meaning ~
271
+ 21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N
272
+ 22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf
273
+ 23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf
274
+ 24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf
275
+ 25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf
276
+ 26. :slast 36. :sblast split + to last arg/buf
277
+ 27. :sall 37. :sball edit all args/buffers
278
+ 38. :sunhide edit all loaded buffers
279
+ 39. :[N]sbmod [N] split + to Nth modified buf
280
+
281
+ 40. :args list of arguments
282
+ 41. :buffers list of buffers
283
+
284
+ The meaning of [N] depends on the command:
285
+ [N] is number of buffers to go forward/backward on ?2, ?3, and ?4
286
+ [N] is an argument number, defaulting to current argument, for 1 and 21
287
+ [N] is a buffer number, defaulting to current buffer, for 11 and 31
288
+ [N] is a count for 19 and 39
289
+
290
+ Note: ":next" is an exception, because it must accept a list of file names
291
+ for compatibility with Vi.
292
+
293
+
294
+ The argument list and multiple windows
295
+ --------------------------------------
296
+
297
+ The current position in the argument list can be different for each window.
298
+ Remember that when doing ":e file", the position in the argument list stays
299
+ the same, but you are not editing the file at that position. To indicate
300
+ this, the file message (and the title, if you have one) shows
301
+ "(file (N) of M)", where "(N)" is the current position in the file list, and
302
+ "M" the number of files in the file list.
303
+
304
+ All the entries in the argument list are added to the buffer list. Thus, you
305
+ can also get to them with the buffer list commands, like ":bnext".
306
+
307
+ :[N]al[l][!] [N] *:al* *:all* *:sal* *:sall*
308
+ :[N]sal[l][!] [N]
309
+ Rearrange the screen to open one window for each argument.
310
+ All other windows are closed. When a count is given, this is
311
+ the maximum number of windows to open.
312
+ With the |:tab| modifier open a tab page for each argument.
313
+ When there are more arguments than 'tabpagemax' further ones
314
+ become split windows in the last tab page.
315
+ When the 'hidden' option is set, all buffers in closed windows
316
+ become hidden.
317
+ When 'hidden' is not set, and the 'autowrite' option is set,
318
+ modified buffers are written. Otherwise, windows that have
319
+ buffers that are modified are not removed, unless the [!] is
320
+ given, then they become hidden. But modified buffers are
321
+ never abandoned, so changes cannot get lost.
322
+ [N] is the maximum number of windows to open. 'winheight'
323
+ also limits the number of windows opened ('winwidth' if
324
+ |:vertical| was prepended).
325
+ Buf/Win Enter/Leave autocommands are not executed for the new
326
+ windows here, that's only done when they are really entered.
327
+
328
+ :[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument*
329
+ Short for ":split | argument [N]": split window and go to Nth
330
+ argument. But when there is no such argument, the window is
331
+ not split. Also see |++opt| and |+cmd|.
332
+
333
+ :[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext*
334
+ Short for ":split | [N]next": split window and go to Nth next
335
+ argument. But when there is no next file, the window is not
336
+ split. Also see |++opt| and |+cmd|.
337
+
338
+ :[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious*
339
+ :[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext*
340
+ Short for ":split | [N]Next": split window and go to Nth
341
+ previous argument. But when there is no previous file, the
342
+ window is not split. Also see |++opt| and |+cmd|.
343
+
344
+ *:sre* *:srewind*
345
+ :sre[wind][!] [++opt] [+cmd]
346
+ Short for ":split | rewind": split window and go to first
347
+ argument. But when there is no argument list, the window is
348
+ not split. Also see |++opt| and |+cmd|.
349
+
350
+ *:sfir* *:sfirst*
351
+ :sfir[st] [++opt] [+cmd]
352
+ Same as ":srewind".
353
+
354
+ *:sla* *:slast*
355
+ :sla[st][!] [++opt] [+cmd]
356
+ Short for ":split | last": split window and go to last
357
+ argument. But when there is no argument list, the window is
358
+ not split. Also see |++opt| and |+cmd|.
359
+
360
+ *:dr* *:drop*
361
+ :dr[op] [++opt] [+cmd] {file} ..
362
+ Edit the first {file} in a window.
363
+ - If the file is already open in a window change to that
364
+ window.
365
+ - If the file is not open in a window edit the file in the
366
+ current window. If the current buffer can't be |abandon|ed,
367
+ the window is split first.
368
+ The |argument-list| is set, like with the |:next| command.
369
+ The purpose of this command is that it can be used from a
370
+ program that wants Vim to edit another file, e.g., a debugger.
371
+ When using the |:tab| modifier each argument is opened in a
372
+ tab page. The last window is used if it's empty.
373
+ Also see |++opt| and |+cmd|.
374
+ {only available when compiled with the +gui feature}
375
+
376
+ ==============================================================================
377
+ 8. Do a command in all buffers or windows *list-repeat*
378
+
379
+ *:windo*
380
+ :windo {cmd} Execute {cmd} in each window.
381
+ It works like doing this: >
382
+ CTRL-W t
383
+ :{cmd}
384
+ CTRL-W w
385
+ :{cmd}
386
+ etc.
387
+ < This only operates in the current tab page.
388
+ When an error is detected on one window, further
389
+ windows will not be visited.
390
+ The last window (or where an error occurred) becomes
391
+ the current window.
392
+ {cmd} can contain '|' to concatenate several commands.
393
+ {cmd} must not open or close windows or reorder them.
394
+ {not in Vi} {not available when compiled without the
395
+ |+listcmds| feature}
396
+ Also see |:tabdo|, |:argdo| and |:bufdo|.
397
+
398
+ *:bufdo*
399
+ :bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list.
400
+ It works like doing this: >
401
+ :bfirst
402
+ :{cmd}
403
+ :bnext
404
+ :{cmd}
405
+ etc.
406
+ < When the current file can't be |abandon|ed and the [!]
407
+ is not present, the command fails.
408
+ When an error is detected on one buffer, further
409
+ buffers will not be visited.
410
+ Unlisted buffers are skipped.
411
+ The last buffer (or where an error occurred) becomes
412
+ the current buffer.
413
+ {cmd} can contain '|' to concatenate several commands.
414
+ {cmd} must not delete buffers or add buffers to the
415
+ buffer list.
416
+ Note: While this command is executing, the Syntax
417
+ autocommand event is disabled by adding it to
418
+ 'eventignore'. This considerably speeds up editing
419
+ each buffer.
420
+ {not in Vi} {not available when compiled without the
421
+ |+listcmds| feature}
422
+ Also see |:tabdo|, |:argdo| and |:windo|.
423
+
424
+ Examples: >
425
+
426
+ :windo set nolist nofoldcolumn | normal zn
427
+
428
+ This resets the 'list' option and disables folding in all windows. >
429
+
430
+ :bufdo set fileencoding= | update
431
+
432
+ This resets the 'fileencoding' in each buffer and writes it if this changed
433
+ the buffer. The result is that all buffers will use the 'encoding' encoding
434
+ (if conversion works properly).
435
+
436
+ ==============================================================================
437
+ 9. Tag or file name under the cursor *window-tag*
438
+
439
+ *:sta* *:stag*
440
+ :sta[g][!] [tagname]
441
+ Does ":tag[!] [tagname]" and splits the window for the found
442
+ tag. See also |:tag|.
443
+
444
+ CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]*
445
+ CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a
446
+ tag and jump to it in the new upper window. Make new window N
447
+ high.
448
+
449
+ *CTRL-W_g]*
450
+ CTRL-W g ] Split current window in two. Use identifier under cursor as a
451
+ tag and perform ":tselect" on it in the new upper window.
452
+ Make new window N high.
453
+
454
+ *CTRL-W_g_CTRL-]*
455
+ CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a
456
+ tag and perform ":tjump" on it in the new upper window. Make
457
+ new window N high.
458
+
459
+ CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F*
460
+ CTRL-W CTRL-F Split current window in two. Edit file name under cursor.
461
+ Like ":split gf", but window isn't split if the file does not
462
+ exist.
463
+ Uses the 'path' variable as a list of directory names where to
464
+ look for the file. Also the path for current file is
465
+ used to search for the file name.
466
+ If the name is a hypertext link that looks like
467
+ "type://machine/path", only "/path" is used.
468
+ If a count is given, the count'th matching file is edited.
469
+ {not available when the |+file_in_path| feature was disabled
470
+ at compile time}
471
+
472
+ CTRL-W F *CTRL-W_F*
473
+ Split current window in two. Edit file name under cursor and
474
+ jump to the line number following the file name. See |gF| for
475
+ details on how the line number is obtained.
476
+ {not available when the |+file_in_path| feature was disabled
477
+ at compile time}
478
+
479
+ CTRL-W gf *CTRL-W_gf*
480
+ Open a new tab page and edit the file name under the cursor.
481
+ Like "tab split" and "gf", but the new tab page isn't created
482
+ if the file does not exist.
483
+ {not available when the |+file_in_path| feature was disabled
484
+ at compile time}
485
+
486
+ CTRL-W gF *CTRL-W_gF*
487
+ Open a new tab page and edit the file name under the cursor
488
+ and jump to the line number following the file name. Like
489
+ "tab split" and "gF", but the new tab page isn't created if
490
+ the file does not exist.
491
+ {not available when the |+file_in_path| feature was disabled
492
+ at compile time}
493
+
494
+ Also see |CTRL-W_CTRL-I|: open window for an included file that includes
495
+ the keyword under the cursor.
496
+
497
+ ==============================================================================
498
+ 10. The preview window *preview-window*
499
+
500
+ The preview window is a special window to show (preview) another file. It is
501
+ normally a small window used to show an include file or definition of a
502
+ function.
503
+ {not available when compiled without the |+quickfix| feature}
504
+
505
+ There can be only one preview window (per tab page). It is created with one
506
+ of the commands below. The 'previewheight' option can be set to specify the
507
+ height of the preview window when it's opened. The 'previewwindow' option is
508
+ set in the preview window to be able to recognize it. The 'winfixheight'
509
+ option is set to have it keep the same height when opening/closing other
510
+ windows.
511
+
512
+ *:pta* *:ptag*
513
+ :pta[g][!] [tagname]
514
+ Does ":tag[!] [tagname]" and shows the found tag in a
515
+ "Preview" window without changing the current buffer or cursor
516
+ position. If a "Preview" window already exists, it is re-used
517
+ (like a help window is). If a new one is opened,
518
+ 'previewheight' is used for the height of the window. See
519
+ also |:tag|.
520
+ See below for an example. |CursorHold-example|
521
+ Small difference from |:tag|: When [tagname] is equal to the
522
+ already displayed tag, the position in the matching tag list
523
+ is not reset. This makes the CursorHold example work after a
524
+ |:ptnext|.
525
+
526
+ CTRL-W z *CTRL-W_z*
527
+ CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose*
528
+ :pc[lose][!] Close any "Preview" window currently open. When the 'hidden'
529
+ option is set, or when the buffer was changed and the [!] is
530
+ used, the buffer becomes hidden (unless there is another
531
+ window editing it). The command fails if any "Preview" buffer
532
+ cannot be closed. See also |:close|.
533
+
534
+ *:pp* *:ppop*
535
+ :[count]pp[op][!]
536
+ Does ":[count]pop[!]" in the preview window. See |:pop| and
537
+ |:ptag|. {not in Vi}
538
+
539
+ CTRL-W } *CTRL-W_}*
540
+ Use identifier under cursor as a tag and perform a :ptag on
541
+ it. Make the new Preview window (if required) N high. If N is
542
+ not given, 'previewheight' is used.
543
+
544
+ CTRL-W g } *CTRL-W_g}*
545
+ Use identifier under cursor as a tag and perform a :ptjump on
546
+ it. Make the new Preview window (if required) N high. If N is
547
+ not given, 'previewheight' is used.
548
+
549
+ *:ped* *:pedit*
550
+ :ped[it][!] [++opt] [+cmd] {file}
551
+ Edit {file} in the preview window. The preview window is
552
+ opened like with |:ptag|. The current window and cursor
553
+ position isn't changed. Useful example: >
554
+ :pedit +/fputc /usr/include/stdio.h
555
+ <
556
+ *:ps* *:psearch*
557
+ :[range]ps[earch][!] [count] [/]pattern[/]
558
+ Works like |:ijump| but shows the found match in the preview
559
+ window. The preview window is opened like with |:ptag|. The
560
+ current window and cursor position isn't changed. Useful
561
+ example: >
562
+ :psearch popen
563
+ < Like with the |:ptag| command, you can use this to
564
+ automatically show information about the word under the
565
+ cursor. This is less clever than using |:ptag|, but you don't
566
+ need a tags file and it will also find matches in system
567
+ include files. Example: >
568
+ :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
569
+ < Warning: This can be slow.
570
+
571
+ Example *CursorHold-example* >
572
+
573
+ :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
574
+
575
+ This will cause a ":ptag" to be executed for the keyword under the cursor,
576
+ when the cursor hasn't moved for the time set with 'updatetime'. The "nested"
577
+ makes other autocommands be executed, so that syntax highlighting works in the
578
+ preview window. The "silent!" avoids an error message when the tag could not
579
+ be found. Also see |CursorHold|. To disable this again: >
580
+
581
+ :au! CursorHold
582
+
583
+ A nice addition is to highlight the found tag, avoid the ":ptag" when there
584
+ is no word under the cursor, and a few other things: >
585
+
586
+ :au! CursorHold *.[ch] nested call PreviewWord()
587
+ :func PreviewWord()
588
+ : if &previewwindow " don't do this in the preview window
589
+ : return
590
+ : endif
591
+ : let w = expand("<cword>") " get the word under cursor
592
+ : if w =~ '\a' " if the word contains a letter
593
+ :
594
+ : " Delete any existing highlight before showing another tag
595
+ : silent! wincmd P " jump to preview window
596
+ : if &previewwindow " if we really get there...
597
+ : match none " delete existing highlight
598
+ : wincmd p " back to old window
599
+ : endif
600
+ :
601
+ : " Try displaying a matching tag for the word under the cursor
602
+ : try
603
+ : exe "ptag " . w
604
+ : catch
605
+ : return
606
+ : endtry
607
+ :
608
+ : silent! wincmd P " jump to preview window
609
+ : if &previewwindow " if we really get there...
610
+ : if has("folding")
611
+ : silent! .foldopen " don't want a closed fold
612
+ : endif
613
+ : call search("$", "b") " to end of previous line
614
+ : let w = substitute(w, '\\', '\\\\', "")
615
+ : call search('\<\V' . w . '\>') " position cursor on match
616
+ : " Add a match highlight to the word at this position
617
+ : hi previewWord term=bold ctermbg=green guibg=green
618
+ : exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
619
+ : wincmd p " back to old window
620
+ : endif
621
+ : endif
622
+ :endfun
623
+
624
+ ==============================================================================
625
+ 11. Using hidden buffers *buffer-hidden*
626
+
627
+ A hidden buffer is not displayed in a window, but is still loaded into memory.
628
+ This makes it possible to jump from file to file, without the need to read or
629
+ write the file every time you get another buffer in a window.
630
+ {not available when compiled without the |+listcmds| feature}
631
+
632
+ *:buffer-!*
633
+ If the option 'hidden' ('hid') is set, abandoned buffers are kept for all
634
+ commands that start editing another file: ":edit", ":next", ":tag", etc. The
635
+ commands that move through the buffer list sometimes make the current buffer
636
+ hidden although the 'hidden' option is not set. This happens when a buffer is
637
+ modified, but is forced (with '!') to be removed from a window, and
638
+ 'autowrite' is off or the buffer can't be written.
639
+
640
+ You can make a hidden buffer not hidden by starting to edit it with any
641
+ command. Or by deleting it with the ":bdelete" command.
642
+
643
+ The 'hidden' is global, it is used for all buffers. The 'bufhidden' option
644
+ can be used to make an exception for a specific buffer. It can take these
645
+ values:
646
+ <empty> Use the value of 'hidden'.
647
+ hide Hide this buffer, also when 'hidden' is not set.
648
+ unload Don't hide but unload this buffer, also when 'hidden'
649
+ is set.
650
+ delete Delete the buffer.
651
+
652
+ *hidden-quit*
653
+ When you try to quit Vim while there is a hidden, modified buffer, you will
654
+ get an error message and Vim will make that buffer the current buffer. You
655
+ can then decide to write this buffer (":wq") or quit without writing (":q!").
656
+ Be careful: there may be more hidden, modified buffers!
657
+
658
+ A buffer can also be unlisted. This means it exists, but it is not in the
659
+ list of buffers. |unlisted-buffer|
660
+
661
+
662
+ :files[!] *:files*
663
+ :buffers[!] *:buffers* *:ls*
664
+ :ls[!] Show all buffers. Example:
665
+
666
+ 1 #h "/test/text" line 1 ~
667
+ 2u "asdf" line 0 ~
668
+ 3 %a+ "version.c" line 1 ~
669
+
670
+ When the [!] is included the list will show unlisted buffers
671
+ (the term "unlisted" is a bit confusing then...).
672
+
673
+ Each buffer has a unique number. That number will not change,
674
+ so you can always go to a specific buffer with ":buffer N" or
675
+ "N CTRL-^", where N is the buffer number.
676
+
677
+ Indicators (chars in the same column are mutually exclusive):
678
+ u an unlisted buffer (only displayed when [!] is used)
679
+ |unlisted-buffer|
680
+ % the buffer in the current window
681
+ # the alternate buffer for ":e #" and CTRL-^
682
+ a an active buffer: it is loaded and visible
683
+ h a hidden buffer: It is loaded, but currently not
684
+ displayed in a window |hidden-buffer|
685
+ - a buffer with 'modifiable' off
686
+ = a readonly buffer
687
+ + a modified buffer
688
+ x a buffer with read errors
689
+
690
+ *:bad* *:badd*
691
+ :bad[d] [+lnum] {fname}
692
+ Add file name {fname} to the buffer list, without loading it.
693
+ If "lnum" is specified, the cursor will be positioned at that
694
+ line when the buffer is first entered. Note that other
695
+ commands after the + will be ignored.
696
+
697
+ :[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516*
698
+ :bd[elete][!] [N]
699
+ Unload buffer [N] (default: current buffer) and delete it from
700
+ the buffer list. If the buffer was changed, this fails,
701
+ unless when [!] is specified, in which case changes are lost.
702
+ The file remains unaffected. Any windows for this buffer are
703
+ closed. If buffer [N] is the current buffer, another buffer
704
+ will be displayed instead. This is the most recent entry in
705
+ the jump list that points into a loaded buffer.
706
+ Actually, the buffer isn't completely deleted, it is removed
707
+ from the buffer list |unlisted-buffer| and option values,
708
+ variables and mappings/abbreviations for the buffer are
709
+ cleared.
710
+
711
+ :bdelete[!] {bufname} *E93* *E94*
712
+ Like ":bdelete[!] [N]", but buffer given by name. Note that a
713
+ buffer whose name is a number cannot be referenced by that
714
+ name; use the buffer number instead. Insert a backslash
715
+ before a space in a buffer name.
716
+
717
+ :bdelete[!] N1 N2 ...
718
+ Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be
719
+ buffer numbers or buffer names (but not buffer names that are
720
+ a number). Insert a backslash before a space in a buffer
721
+ name.
722
+
723
+ :N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M
724
+ |inclusive|.
725
+
726
+ :[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517*
727
+ :bw[ipeout][!] {bufname}
728
+ :N,Mbw[ipeout][!]
729
+ :bw[ipeout][!] N1 N2 ...
730
+ Like |:bdelete|, but really delete the buffer. Everything
731
+ related to the buffer is lost. All marks in this buffer
732
+ become invalid, option settings are lost, etc. Don't use this
733
+ unless you know what you are doing.
734
+
735
+ :[N]bun[load][!] *:bun* *:bunload* *E515*
736
+ :bun[load][!] [N]
737
+ Unload buffer [N] (default: current buffer). The memory
738
+ allocated for this buffer will be freed. The buffer remains
739
+ in the buffer list.
740
+ If the buffer was changed, this fails, unless when [!] is
741
+ specified, in which case the changes are lost.
742
+ Any windows for this buffer are closed. If buffer [N] is the
743
+ current buffer, another buffer will be displayed instead.
744
+ This is the most recent entry in the jump list that points
745
+ into a loaded buffer.
746
+
747
+ :bunload[!] {bufname}
748
+ Like ":bunload[!] [N]", but buffer given by name. Note that a
749
+ buffer whose name is a number cannot be referenced by that
750
+ name; use the buffer number instead. Insert a backslash
751
+ before a space in a buffer name.
752
+
753
+ :N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M
754
+ |inclusive|.
755
+
756
+ :bunload[!] N1 N2 ...
757
+ Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be
758
+ buffer numbers or buffer names (but not buffer names that are
759
+ a number). Insert a backslash before a space in a buffer
760
+ name.
761
+
762
+ :[N]b[uffer][!] [N] *:b* *:bu* *:buf* *:buffer* *E86*
763
+ Edit buffer [N] from the buffer list. If [N] is not given,
764
+ the current buffer remains being edited. See |:buffer-!| for
765
+ [!]. This will also edit a buffer that is not in the buffer
766
+ list, without setting the 'buflisted' flag.
767
+
768
+ :[N]b[uffer][!] {bufname}
769
+ Edit buffer for {bufname} from the buffer list. See
770
+ |:buffer-!| for [!]. This will also edit a buffer that is not
771
+ in the buffer list, without setting the 'buflisted' flag.
772
+
773
+ :[N]sb[uffer] [N] *:sb* *:sbuffer*
774
+ Split window and edit buffer [N] from the buffer list. If [N]
775
+ is not given, the current buffer is edited. Respects the
776
+ "useopen" setting of 'switchbuf' when splitting. This will
777
+ also edit a buffer that is not in the buffer list, without
778
+ setting the 'buflisted' flag.
779
+
780
+ :[N]sb[uffer] {bufname}
781
+ Split window and edit buffer for {bufname} from the buffer
782
+ list. This will also edit a buffer that is not in the buffer
783
+ list, without setting the 'buflisted' flag.
784
+ Note: If what you want to do is split the buffer, make a copy
785
+ under another name, you can do it this way: >
786
+ :w foobar | sp #
787
+
788
+ :[N]bn[ext][!] [N] *:bn* *:bnext* *E87*
789
+ Go to [N]th next buffer in buffer list. [N] defaults to one.
790
+ Wraps around the end of the buffer list.
791
+ See |:buffer-!| for [!].
792
+ If you are in a help buffer, this takes you to the next help
793
+ buffer (if there is one). Similarly, if you are in a normal
794
+ (non-help) buffer, this takes you to the next normal buffer.
795
+ This is so that if you have invoked help, it doesn't get in
796
+ the way when you're browsing code/text buffers. The next three
797
+ commands also work like this.
798
+
799
+ *:sbn* *:sbnext*
800
+ :[N]sbn[ext] [N]
801
+ Split window and go to [N]th next buffer in buffer list.
802
+ Wraps around the end of the buffer list. Uses 'switchbuf'
803
+
804
+ :[N]bN[ext][!] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
805
+ :[N]bp[revious][!] [N]
806
+ Go to [N]th previous buffer in buffer list. [N] defaults to
807
+ one. Wraps around the start of the buffer list.
808
+ See |:buffer-!| for [!] and 'switchbuf'.
809
+
810
+ :[N]sbN[ext] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
811
+ :[N]sbp[revious] [N]
812
+ Split window and go to [N]th previous buffer in buffer list.
813
+ Wraps around the start of the buffer list.
814
+ Uses 'switchbuf'.
815
+
816
+ *:br* *:brewind*
817
+ :br[ewind][!] Go to first buffer in buffer list. If the buffer list is
818
+ empty, go to the first unlisted buffer.
819
+ See |:buffer-!| for [!].
820
+
821
+ *:bf* *:bfirst*
822
+ :bf[irst] Same as ":brewind".
823
+
824
+ *:sbr* *:sbrewind*
825
+ :sbr[ewind] Split window and go to first buffer in buffer list. If the
826
+ buffer list is empty, go to the first unlisted buffer.
827
+ Respects the 'switchbuf' option.
828
+
829
+ *:sbf* *:sbfirst*
830
+ :sbf[irst] Same as ":sbrewind".
831
+
832
+ *:bl* *:blast*
833
+ :bl[ast][!] Go to last buffer in buffer list. If the buffer list is
834
+ empty, go to the last unlisted buffer.
835
+ See |:buffer-!| for [!].
836
+
837
+ *:sbl* *:sblast*
838
+ :sbl[ast] Split window and go to last buffer in buffer list. If the
839
+ buffer list is empty, go to the last unlisted buffer.
840
+ Respects 'switchbuf' option.
841
+
842
+ :[N]bm[odified][!] [N] *:bm* *:bmodified* *E84*
843
+ Go to [N]th next modified buffer. Note: this command also
844
+ finds unlisted buffers. If there is no modified buffer the
845
+ command fails.
846
+
847
+ :[N]sbm[odified] [N] *:sbm* *:sbmodified*
848
+ Split window and go to [N]th next modified buffer.
849
+ Respects 'switchbuf' option.
850
+ Note: this command also finds buffers not in the buffer list.
851
+
852
+ :[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide*
853
+ :[N]sun[hide] [N]
854
+ Rearrange the screen to open one window for each loaded buffer
855
+ in the buffer list. When a count is given, this is the
856
+ maximum number of windows to open.
857
+
858
+ :[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball*
859
+ :[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in
860
+ the buffer list. When a count is given, this is the maximum
861
+ number of windows to open. 'winheight' also limits the number
862
+ of windows opened ('winwidth' if |:vertical| was prepended).
863
+ Buf/Win Enter/Leave autocommands are not executed for the new
864
+ windows here, that's only done when they are really entered.
865
+ When the |:tab| modifier is used new windows are opened in a
866
+ new tab, up to 'tabpagemax'.
867
+
868
+ Note: All the commands above that start editing another buffer, keep the
869
+ 'readonly' flag as it was. This differs from the ":edit" command, which sets
870
+ the 'readonly' flag each time the file is read.
871
+
872
+ ==============================================================================
873
+ 12. Special kinds of buffers *special-buffers*
874
+
875
+ Instead of containing the text of a file, buffers can also be used for other
876
+ purposes. A few options can be set to change the behavior of a buffer:
877
+ 'bufhidden' what happens when the buffer is no longer displayed
878
+ in a window.
879
+ 'buftype' what kind of a buffer this is
880
+ 'swapfile' whether the buffer will have a swap file
881
+ 'buflisted' buffer shows up in the buffer list
882
+
883
+ A few useful kinds of a buffer:
884
+
885
+ quickfix Used to contain the error list or the location list. See
886
+ |:cwindow| and |:lwindow|. This command sets the 'buftype'
887
+ option to "quickfix". You are not supposed to change this!
888
+ 'swapfile' is off.
889
+
890
+ help Contains a help file. Will only be created with the |:help|
891
+ command. The flag that indicates a help buffer is internal
892
+ and can't be changed. The 'buflisted' option will be reset
893
+ for a help buffer.
894
+
895
+ directory Displays directory contents. Can be used by a file explorer
896
+ plugin. The buffer is created with these settings: >
897
+ :setlocal buftype=nowrite
898
+ :setlocal bufhidden=delete
899
+ :setlocal noswapfile
900
+ < The buffer name is the name of the directory and is adjusted
901
+ when using the |:cd| command.
902
+
903
+ scratch Contains text that can be discarded at any time. It is kept
904
+ when closing the window, it must be deleted explicitly.
905
+ Settings: >
906
+ :setlocal buftype=nofile
907
+ :setlocal bufhidden=hide
908
+ :setlocal noswapfile
909
+ < The buffer name can be used to identify the buffer.
910
+
911
+ *unlisted-buffer*
912
+ unlisted The buffer is not in the buffer list. It is not used for
913
+ normal editing, but to show a help file, remember a file name
914
+ or marks. The ":bdelete" command will also set this option,
915
+ thus it doesn't completely delete the buffer. Settings: >
916
+ :setlocal nobuflisted
917
+ <
918
+
919
+ vim:tw=78:ts=8:ft=help:norl: