From 4d3290716773c1e53d369c4300310b3824797d92 Mon Sep 17 00:00:00 2001 From: Bjorn Winckler Date: Fri, 4 Apr 2008 16:01:50 +0200 Subject: [PATCH] Update runtime files --- runtime/README.txt | 29 + runtime/autoload/ada.vim | 6 +- runtime/autoload/adacomplete.vim | 6 +- runtime/autoload/ccomplete.vim | 25 +- runtime/autoload/decada.vim | 6 +- runtime/autoload/getscript.vim | 193 +- runtime/autoload/gnat.vim | 6 +- runtime/autoload/netrw.vim | 7637 +++++++++++++++++----------- runtime/autoload/netrwSettings.vim | 37 +- runtime/autoload/rubycomplete.vim | 2 +- runtime/autoload/tar.vim | 49 +- runtime/autoload/vimball.vim | 217 +- runtime/autoload/xml/html32.vim | 1 - runtime/autoload/xml/html401f.vim | 1 - runtime/autoload/xml/html401s.vim | 1 - runtime/autoload/xml/html401t.vim | 1 - runtime/autoload/xml/html40f.vim | 1 - runtime/autoload/xml/html40s.vim | 1 - runtime/autoload/xml/html40t.vim | 1 - runtime/autoload/xml/xhtml10f.vim | 1 - runtime/autoload/xml/xhtml10s.vim | 1 - runtime/autoload/xml/xhtml10t.vim | 1 - runtime/autoload/xml/xhtml11.vim | 1 - runtime/autoload/xmlcomplete.vim | 10 +- runtime/autoload/zip.vim | 22 +- runtime/colors/slate.vim | 1 + runtime/compiler/decada.vim | 6 +- runtime/compiler/eruby.vim | 2 +- runtime/compiler/gcc.vim | 4 +- runtime/compiler/gnat.vim | 6 +- runtime/compiler/perl.vim | 14 +- runtime/compiler/ruby.vim | 2 +- runtime/compiler/rubyunit.vim | 2 +- runtime/doc.info | Bin 624 -> 0 bytes runtime/doc/ada.txt | 12 +- runtime/doc/autocmd.txt | 15 +- runtime/doc/change.txt | 25 +- runtime/doc/cmdline.txt | 6 +- runtime/doc/digraph.txt | 6 +- runtime/doc/editing.txt | 16 +- runtime/doc/eval.txt | 64 +- runtime/doc/filetype.txt | 23 +- runtime/doc/gui_w32.txt | 2 +- runtime/doc/gui_x11.txt | 4 +- runtime/doc/hebrew.txt | 9 +- runtime/doc/help.txt.info | Bin 582 -> 0 bytes runtime/doc/indent.txt | 111 +- runtime/doc/index.txt | 18 +- runtime/doc/intro.txt | 28 +- runtime/doc/makehtml.awk | 0 runtime/doc/maketags.awk | 0 runtime/doc/map.txt | 21 +- runtime/doc/mbyte.txt | 4 +- runtime/doc/message.txt | 4 +- runtime/doc/motion.txt | 23 +- runtime/doc/options.txt | 98 +- runtime/doc/pattern.txt | 17 +- runtime/doc/pi_getscript.txt | 10 +- runtime/doc/pi_netrw.txt | 2747 ++++++---- runtime/doc/pi_paren.txt | 3 +- runtime/doc/pi_tar.txt | 10 +- runtime/doc/pi_vimball.txt | 28 +- runtime/doc/pi_zip.txt | 17 +- runtime/doc/print.txt | 5 +- runtime/doc/quickfix.txt | 57 +- runtime/doc/quickref.txt | 40 +- runtime/doc/repeat.txt | 11 +- runtime/doc/spell.txt | 5 +- runtime/doc/sponsor.txt | 10 +- runtime/doc/syntax.txt | 116 +- runtime/doc/tags | 94 +- runtime/doc/todo.txt | 475 +- runtime/doc/uganda.txt | 19 +- runtime/doc/usr_22.txt | 184 +- runtime/doc/usr_27.txt | 4 +- runtime/doc/usr_29.txt | 6 +- runtime/doc/usr_30.txt | 4 +- runtime/doc/usr_41.txt | 7 +- runtime/doc/various.txt | 21 +- runtime/doc/vim-fr.1 | 8 +- runtime/doc/vim-fr.UTF-8.1 | 8 +- runtime/doc/vim.man.info | Bin 582 -> 0 bytes runtime/doc/vim2html.pl | 0 runtime/doc/windows.txt | 12 +- runtime/filetype.vim | 145 +- runtime/ftplugin/ada.vim | 6 +- runtime/ftplugin/bst.vim | 2 +- runtime/ftplugin/c.vim | 7 +- runtime/ftplugin/cdrdaoconf.vim | 18 + runtime/ftplugin/changelog.vim | 4 +- runtime/ftplugin/cobol.vim | 2 +- runtime/ftplugin/denyhosts.vim | 18 + runtime/ftplugin/dosini.vim | 13 + runtime/ftplugin/eruby.vim | 4 +- runtime/ftplugin/gitcommit.vim | 79 + runtime/ftplugin/gitconfig.vim | 15 + runtime/ftplugin/gitsendemail.vim | 6 + runtime/ftplugin/hostconf.vim | 18 + runtime/ftplugin/html.vim | 94 +- runtime/ftplugin/lua.vim | 4 +- runtime/ftplugin/man.vim | 19 +- runtime/ftplugin/ocaml.vim | 574 ++- runtime/ftplugin/pdf.vim | 89 + runtime/ftplugin/perl.vim | 6 +- runtime/ftplugin/php.vim | 21 +- runtime/ftplugin/reva.vim | 25 + runtime/ftplugin/ruby.vim | 4 +- runtime/ftplugin/vim.vim | 20 +- runtime/getdos.aap | 4245 ++++++++++++++++ runtime/getunix.aap | 4647 +++++++++++++++++ runtime/icons.info | Bin 624 -> 0 bytes runtime/icons/README.txt | 35 - runtime/icons/README.txt.info | Bin 1191 -> 0 bytes runtime/icons/Vim_32Colors.info | Bin 2212 -> 0 bytes runtime/icons/Vim_4ColorsLace.info | Bin 358 -> 0 bytes runtime/icons/Vim_8Colors.info | Bin 4228 -> 0 bytes runtime/icons/Vim_8ColorsLace.info | Bin 2170 -> 0 bytes runtime/indent/ada.vim | 6 +- runtime/indent/bst.vim | 2 +- runtime/indent/cmake.vim | 18 +- runtime/indent/cobol.vim | 2 +- runtime/indent/erlang.vim | 206 + runtime/indent/eruby.vim | 6 +- runtime/indent/gitconfig.vim | 37 + runtime/indent/lua.vim | 34 +- runtime/indent/php.vim | 6 +- runtime/indent/ruby.vim | 4 +- runtime/indent/sql.vim | 2 +- runtime/indent/sqlanywhere.vim | 2 +- runtime/indent/tcsh.vim | 4 +- runtime/indent/tf.vim | 72 + runtime/indent/vhdl.vim | 31 +- runtime/keymap/croatian.vim | 16 + runtime/keymap/croatian_cp1250.vim | 65 + runtime/keymap/croatian_iso-8859-2.vim | 84 + runtime/keymap/croatian_utf-8.vim | 68 + runtime/keymap/russian-dvorak.vim | 89 + runtime/keymap/russian-yawerty.vim | 12 +- runtime/keymap/sinhala-phonetic_utf-8.vim | 42 +- runtime/keymap/ukrainian-dvorak.vim | 92 + runtime/keymap/ukrainian-jcuken.vim | 4 +- runtime/lang/menu_eo.utf-8.vim | 3 + runtime/lang/menu_eo_eo.utf-8.vim | 3 + runtime/lang/menu_eo_xx.utf-8.vim | 457 ++ runtime/lang/menu_fi.latin1.vim | 3 + runtime/lang/menu_fi.utf-8.vim | 3 + runtime/lang/menu_fi_fi.latin1.vim | 473 ++ runtime/lang/menu_fi_fi.utf-8.vim | 3 + runtime/lang/menu_finnish_finland.1252.vim | 3 + runtime/macros.info | Bin 624 -> 0 bytes runtime/macros/README.txt.info | Bin 734 -> 0 bytes runtime/macros/editexisting.vim | 5 +- runtime/macros/hanoi.info | Bin 624 -> 0 bytes runtime/macros/hanoi/click.me.info | Bin 973 -> 0 bytes runtime/macros/hanoi/poster.info | Bin 735 -> 0 bytes runtime/macros/less.sh | 27 +- runtime/macros/life/click.me.info | Bin 972 -> 0 bytes runtime/macros/life/life.vim | 3 +- runtime/macros/matchit.txt | 32 +- runtime/macros/matchit.vim | 58 +- runtime/macros/maze.info | Bin 624 -> 0 bytes runtime/macros/maze/README.txt.info | Bin 734 -> 0 bytes runtime/macros/maze/maze_5.78.info | Bin 972 -> 0 bytes runtime/macros/maze/poster.info | Bin 734 -> 0 bytes runtime/macros/urm.info | Bin 624 -> 0 bytes runtime/macros/urm/README.txt.info | Bin 734 -> 0 bytes runtime/main.aap | 23 + runtime/optwin.vim | 6 +- runtime/plugin/getscriptPlugin.vim | 8 +- runtime/plugin/netrwPlugin.vim | 20 +- runtime/plugin/tarPlugin.vim | 5 +- runtime/plugin/vimballPlugin.vim | 14 +- runtime/plugin/zipPlugin.vim | 6 +- runtime/scripts.vim | 6 +- runtime/syntax/2html.vim | 6 +- runtime/syntax/ada.vim | 6 +- runtime/syntax/arch.vim | 4 +- runtime/syntax/aspvbs.vim | 2 +- runtime/syntax/autohotkey.vim | 7 +- runtime/syntax/b.vim | 27 +- runtime/syntax/bst.vim | 2 +- runtime/syntax/bzr.vim | 2 +- runtime/syntax/c.vim | 24 +- runtime/syntax/cdrdaoconf.vim | 139 + runtime/syntax/cf.vim | 572 ++- runtime/syntax/cmake.vim | 12 +- runtime/syntax/cmusrc.vim | 4 +- runtime/syntax/cobol.vim | 2 +- runtime/syntax/coco.vim | 33 + runtime/syntax/conaryrecipe.vim | 60 +- runtime/syntax/css.vim | 4 +- runtime/syntax/cuda.vim | 72 + runtime/syntax/def.vim | 10 +- runtime/syntax/denyhosts.vim | 289 ++ runtime/syntax/dosbatch.vim | 22 +- runtime/syntax/elinks.vim | 4 +- runtime/syntax/erlang.vim | 453 +- runtime/syntax/eruby.vim | 4 +- runtime/syntax/esterel.vim | 34 +- runtime/syntax/forth.vim | 65 +- runtime/syntax/fstab.vim | 22 +- runtime/syntax/fvwm.vim | 66 +- runtime/syntax/gitcommit.vim | 53 + runtime/syntax/gitconfig.vim | 39 + runtime/syntax/gitsendemail.vim | 21 + runtime/syntax/gp.vim | 6 +- runtime/syntax/gpg.vim | 4 +- runtime/syntax/hostconf.vim | 147 + runtime/syntax/indent.vim | 4 +- runtime/syntax/initng.vim | 2 +- runtime/syntax/java.vim | 7 +- runtime/syntax/lftp.vim | 4 +- runtime/syntax/lisp.vim | 1167 +++-- runtime/syntax/lsl.vim | 272 + runtime/syntax/mail.vim | 12 +- runtime/syntax/man.vim | 4 +- runtime/syntax/manual.vim | 9 +- runtime/syntax/masm.vim | 4 +- runtime/syntax/mmp.vim | 53 + runtime/syntax/modconf.vim | 4 +- runtime/syntax/mplayerconf.vim | 4 +- runtime/syntax/mrxvtrc.vim | 29 +- runtime/syntax/muttrc.vim | 201 +- runtime/syntax/mysql.vim | 594 +-- runtime/syntax/netrw.vim | 66 +- runtime/syntax/objcpp.vim | 13 +- runtime/syntax/pdf.vim | 73 + runtime/syntax/php.vim | 2 +- runtime/syntax/phtml.vim | 250 +- runtime/syntax/pinfo.vim | 4 +- runtime/syntax/po.vim | 24 +- runtime/syntax/postscr.vim | 260 +- runtime/syntax/promela.vim | 60 + runtime/syntax/quake.vim | 4 +- runtime/syntax/readline.vim | 4 +- runtime/syntax/reva.vim | 191 + runtime/syntax/rexx.vim | 238 +- runtime/syntax/rnc.vim | 4 +- runtime/syntax/rnoweb.vim | 2 +- runtime/syntax/ruby.vim | 4 +- runtime/syntax/scheme.vim | 5 +- runtime/syntax/sh.vim | 141 +- runtime/syntax/sisu.vim | 216 +- runtime/syntax/snobol4.vim | 94 +- runtime/syntax/sql.vim | 2 +- runtime/syntax/sqlanywhere.vim | 1417 +++--- runtime/syntax/sudoers.vim | 4 +- runtime/syntax/tcsh.vim | 219 +- runtime/syntax/tex.vim | 53 +- runtime/syntax/verilogams.vim | 31 +- runtime/syntax/vim.vim | 210 +- runtime/syntax/voscm.vim | 94 + runtime/syntax/xbl.vim | 29 + runtime/syntax/xdefaults.vim | 2 +- runtime/syntax/yacc.vim | 54 +- runtime/syntax/yaml.vim | 254 +- runtime/syntax/zsh.vim | 4 +- runtime/tools.info | Bin 624 -> 0 bytes runtime/tutor.info | Bin 624 -> 0 bytes runtime/tutor/Makefile | 12 +- runtime/tutor/README.txt.info | Bin 738 -> 0 bytes runtime/tutor/tutor.hr | 972 ++++ runtime/tutor/tutor.hr.cp1250 | 972 ++++ runtime/tutor/tutor.hr.utf-8 | 972 ++++ runtime/tutor/tutor.hu.cp1250 | 823 +++ runtime/tutor/tutor.info | Bin 972 -> 0 bytes runtime/tutor/tutor.vi.utf-8 | 812 +++ runtime/tutor/tutor.vim | 17 +- runtime/vimrc_example.vim | 10 +- 269 files changed, 29756 insertions(+), 8334 deletions(-) create mode 100644 runtime/README.txt delete mode 100755 runtime/doc.info delete mode 100755 runtime/doc/help.txt.info mode change 100644 => 100755 runtime/doc/makehtml.awk mode change 100644 => 100755 runtime/doc/maketags.awk delete mode 100755 runtime/doc/vim.man.info mode change 100644 => 100755 runtime/doc/vim2html.pl create mode 100644 runtime/ftplugin/cdrdaoconf.vim create mode 100644 runtime/ftplugin/denyhosts.vim create mode 100644 runtime/ftplugin/dosini.vim create mode 100644 runtime/ftplugin/gitcommit.vim create mode 100644 runtime/ftplugin/gitconfig.vim create mode 100644 runtime/ftplugin/gitsendemail.vim create mode 100644 runtime/ftplugin/hostconf.vim create mode 100644 runtime/ftplugin/pdf.vim create mode 100644 runtime/ftplugin/reva.vim create mode 100644 runtime/getdos.aap create mode 100644 runtime/getunix.aap delete mode 100644 runtime/icons.info delete mode 100644 runtime/icons/README.txt delete mode 100644 runtime/icons/README.txt.info delete mode 100644 runtime/icons/Vim_32Colors.info delete mode 100644 runtime/icons/Vim_4ColorsLace.info delete mode 100644 runtime/icons/Vim_8Colors.info delete mode 100644 runtime/icons/Vim_8ColorsLace.info create mode 100644 runtime/indent/erlang.vim create mode 100644 runtime/indent/gitconfig.vim create mode 100644 runtime/indent/tf.vim create mode 100644 runtime/keymap/croatian.vim create mode 100644 runtime/keymap/croatian_cp1250.vim create mode 100644 runtime/keymap/croatian_iso-8859-2.vim create mode 100644 runtime/keymap/croatian_utf-8.vim create mode 100644 runtime/keymap/russian-dvorak.vim create mode 100644 runtime/keymap/ukrainian-dvorak.vim create mode 100644 runtime/lang/menu_eo.utf-8.vim create mode 100644 runtime/lang/menu_eo_eo.utf-8.vim create mode 100644 runtime/lang/menu_eo_xx.utf-8.vim create mode 100644 runtime/lang/menu_fi.latin1.vim create mode 100644 runtime/lang/menu_fi.utf-8.vim create mode 100644 runtime/lang/menu_fi_fi.latin1.vim create mode 100644 runtime/lang/menu_fi_fi.utf-8.vim create mode 100644 runtime/lang/menu_finnish_finland.1252.vim delete mode 100755 runtime/macros.info delete mode 100644 runtime/macros/README.txt.info delete mode 100644 runtime/macros/hanoi.info delete mode 100644 runtime/macros/hanoi/click.me.info delete mode 100644 runtime/macros/hanoi/poster.info rewrite runtime/macros/less.sh (61%) delete mode 100644 runtime/macros/life/click.me.info delete mode 100644 runtime/macros/maze.info delete mode 100644 runtime/macros/maze/README.txt.info delete mode 100644 runtime/macros/maze/maze_5.78.info delete mode 100644 runtime/macros/maze/poster.info delete mode 100644 runtime/macros/urm.info delete mode 100644 runtime/macros/urm/README.txt.info create mode 100644 runtime/main.aap create mode 100644 runtime/syntax/cdrdaoconf.vim rewrite runtime/syntax/cf.vim (65%) create mode 100644 runtime/syntax/coco.vim create mode 100644 runtime/syntax/cuda.vim create mode 100644 runtime/syntax/denyhosts.vim rewrite runtime/syntax/erlang.vim (85%) create mode 100644 runtime/syntax/gitcommit.vim create mode 100644 runtime/syntax/gitconfig.vim create mode 100644 runtime/syntax/gitsendemail.vim create mode 100644 runtime/syntax/hostconf.vim rewrite runtime/syntax/lisp.vim (88%) create mode 100644 runtime/syntax/lsl.vim create mode 100644 runtime/syntax/mmp.vim rewrite runtime/syntax/mysql.vim (85%) create mode 100644 runtime/syntax/pdf.vim rewrite runtime/syntax/phtml.vim (99%) create mode 100644 runtime/syntax/promela.vim create mode 100644 runtime/syntax/reva.vim rewrite runtime/syntax/sqlanywhere.vim (89%) create mode 100644 runtime/syntax/voscm.vim create mode 100644 runtime/syntax/xbl.vim rewrite runtime/syntax/yaml.vim (66%) delete mode 100755 runtime/tools.info delete mode 100755 runtime/tutor.info delete mode 100755 runtime/tutor/README.txt.info create mode 100644 runtime/tutor/tutor.hr create mode 100644 runtime/tutor/tutor.hr.cp1250 create mode 100644 runtime/tutor/tutor.hr.utf-8 create mode 100644 runtime/tutor/tutor.hu.cp1250 delete mode 100644 runtime/tutor/tutor.info create mode 100644 runtime/tutor/tutor.vi.utf-8 diff --git a/runtime/README.txt b/runtime/README.txt new file mode 100644 index 00000000..f7d66a3b --- /dev/null +++ b/runtime/README.txt @@ -0,0 +1,29 @@ +This directory contains the latest version of Vim runtime files. + +To obtain those files that differ from your current files: +1. Make sure you have Python (version 1.5 or later). +2. Install Aap; see http://www.a-a-p.org/download.html +3. Change to the $VIMRUNTIME directory. Use ":echo $VIMRUNTIME" in Vim to + find out the right directory. +4. Run "aap" with the main.aap recipe from the ftp site. It will download all + the files that you don't have yet and those that are different from what's + stored here. + +For steps 3 and 4 you could type this: + + cd /usr/local/share/vim/vim70/ + aap -f ftp://ftp.vim.org/pub/vim/runtime/main.aap + +You now have a complete set of the latest runtime files. + +If you later want to obtain updated files, you can do: + + cd /usr/local/share/vim/vim70/ + aap update + +Note: This only obtains new files, it does not delete files that are no +longer used. It also is an effective way to erase any changes you made +to the files yourself! + +The "main.aap" recipe was generated with the ":mkdownload" command in +"aap". diff --git a/runtime/autoload/ada.vim b/runtime/autoload/ada.vim index dff6606e..da8bb0cc 100644 --- a/runtime/autoload/ada.vim +++ b/runtime/autoload/ada.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Perform Ada specific completion & tagging. " Language: Ada (2005) -" $Id: ada.vim,v 1.4 2007/05/12 14:44:22 vimboss Exp $ +" $Id: ada.vim,v 1.1 2007/05/05 18:02:22 vimboss Exp $ " Maintainer: Martin Krischik " Neil Bird " $Author: vimboss $ -" $Date: 2007/05/12 14:44:22 $ +" $Date: 2007/05/05 18:02:22 $ " Version: 4.2 -" $Revision: 1.4 $ +" $Revision: 1.1 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $ " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK ' should not be in iskeyword. diff --git a/runtime/autoload/adacomplete.vim b/runtime/autoload/adacomplete.vim index cd1b1b16..0b1799b8 100644 --- a/runtime/autoload/adacomplete.vim +++ b/runtime/autoload/adacomplete.vim @@ -1,12 +1,12 @@ "------------------------------------------------------------------------------ " Description: Vim Ada omnicompletion file " Language: Ada (2005) -" $Id: adacomplete.vim,v 1.4 2007/05/12 13:48:35 vimboss Exp $ +" $Id: adacomplete.vim,v 1.1 2007/05/05 17:34:16 vimboss Exp $ " Maintainer: Martin Krischik " $Author: vimboss $ -" $Date: 2007/05/12 13:48:35 $ +" $Date: 2007/05/05 17:34:16 $ " Version: 4.2 -" $Revision: 1.4 $ +" $Revision: 1.1 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $ " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK improved search for begin of word. diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim index 0f013d79..6850e19a 100644 --- a/runtime/autoload/ccomplete.vim +++ b/runtime/autoload/ccomplete.vim @@ -1,7 +1,7 @@ " Vim completion script " Language: C " Maintainer: Bram Moolenaar -" Last Change: 2006 May 08 +" Last Change: 2007 Aug 30 " This function is used for the 'omnifunc' option. @@ -119,6 +119,27 @@ function! ccomplete#Complete(findstart, base) " TODO: join previous line if it makes sense let line = getline('.') let col = col('.') + if stridx(strpart(line, 0, col), ';') != -1 + " Handle multiple declarations on the same line. + let col2 = col - 1 + while line[col2] != ';' + let col2 -= 1 + endwhile + let line = strpart(line, col2 + 1) + let col -= col2 + endif + if stridx(strpart(line, 0, col), ',') != -1 + " Handle multiple declarations on the same line in a function + " declaration. + let col2 = col - 1 + while line[col2] != ',' + let col2 -= 1 + endwhile + if strpart(line, col2 + 1, col - col2 - 1) =~ ' *[^ ][^ ]* *[^ ]' + let line = strpart(line, col2 + 1) + let col -= col2 + endif + endif if len(items) == 1 " Completing one word and it's a local variable: May add '[', '.' or " '->'. @@ -140,7 +161,7 @@ function! ccomplete#Complete(findstart, base) let res = [{'match': match, 'tagline' : '', 'kind' : kind, 'info' : line}] else " Completing "var.", "var.something", etc. - let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1) + let res = s:Nextitem(strpart(line, 0, col), items[-1], 0, 1) endif endif diff --git a/runtime/autoload/decada.vim b/runtime/autoload/decada.vim index 2f4fbb4e..0128d94b 100644 --- a/runtime/autoload/decada.vim +++ b/runtime/autoload/decada.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/Dec Ada compiler file " Language: Ada (Dec Ada) -" $Id: decada.vim,v 1.4 2007/05/12 13:30:23 vimboss Exp $ +" $Id: decada.vim,v 1.1 2007/05/05 17:25:32 vimboss Exp $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " $Author: vimboss $ -" $Date: 2007/05/12 13:30:23 $ +" $Date: 2007/05/05 17:25:32 $ " Version: 4.2 -" $Revision: 1.4 $ +" $Revision: 1.1 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $ " History: 21.07.2006 MK New Dec Ada " 15.10.2006 MK Bram's suggestion for runtime integration diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim index 729be836..44d56689 100644 --- a/runtime/autoload/getscript.vim +++ b/runtime/autoload/getscript.vim @@ -1,8 +1,8 @@ " --------------------------------------------------------------------- " getscript.vim " Author: Charles E. Campbell, Jr. -" Date: May 11, 2007 -" Version: 27 +" Date: Jan 08, 2008 +" Version: 29 " Installing: :help glvs-install " Usage: :help glvs " @@ -11,7 +11,7 @@ " --------------------------------------------------------------------- " Initialization: {{{1 " if you're sourcing this file, surely you can't be -" expecting vim to be in its vi-compatible mode +" expecting vim to be in its vi-compatible mode! if &cp echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" finish @@ -23,11 +23,44 @@ set cpo&vim if exists("g:loaded_getscript") finish endif -let g:loaded_getscript= "v27" +let g:loaded_getscript= "v29" + +" --------------------------- +" Global Variables: {{{1 +" --------------------------- +" Cygwin Detection ------- {{{2 +if !exists("g:getscript_cygwin") + if has("win32") || has("win95") || has("win64") || has("win16") + if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' + let g:getscript_cygwin= 1 + else + let g:getscript_cygwin= 0 + endif + else + let g:getscript_cygwin= 0 + endif +endif +" shell quoting character {{{2 +if exists("g:netrw_shq") && !exists("g:getscript_shq") + let g:getscript_shq= g:netrw_shq +elseif !exists("g:getscript_shq") + if exists("&shq") && &shq != "" + let g:getscript_shq= &shq + elseif exists("&sxq") && &sxq != "" + let g:getscript_shq= &sxq + elseif has("win32") || has("win95") || has("win64") || has("win16") + if g:getscript_cygwin + let g:getscript_shq= "'" + else + let g:getscript_shq= '"' + endif + else + let g:getscript_shq= "'" + endif +" call Decho("g:getscript_shq<".g:getscript_shq.">") +endif -" --------------------------------------------------------------------- -" Global Variables: {{{1 -" allow user to change the command for obtaining scripts (does fetch work?) +" wget vs curl {{{2 if !exists("g:GetLatestVimScripts_wget") if executable("wget") let g:GetLatestVimScripts_wget= "wget" @@ -102,6 +135,7 @@ fun! s:GetOneScript(...) " call Dfunc("GetOneScript()") " set options to allow progress to be shown on screen + let rega= @a let t_ti= &t_ti let t_te= &t_te let rs = &rs @@ -122,6 +156,7 @@ fun! s:GetOneScript(...) else let curline = getline(".") if curline =~ '^\s*#' + let @a= rega " call Dret("GetOneScript : skipping a pure comment line") return endif @@ -154,15 +189,15 @@ fun! s:GetOneScript(...) endif if scriptid == 0 || srcid == 0 - " When looking for :AutoInstall: lines, skip scripts that - " have 0 0 scriptname + " When looking for :AutoInstall: lines, skip scripts that have 0 0 scriptname + let @a= rega " call Dret("GetOneScript : skipping a scriptid==srcid==0 line") return endif let doautoinstall= 0 if fname =~ ":AutoInstall:" -" call Decho("fname<".fname."> has :AutoInstall:...") +" call Decho("case AutoInstall: fname<".fname.">") let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','') " call Decho("aicmmnt<".aicmmnt."> s:autoinstall=".s:autoinstall) if s:autoinstall != "" @@ -188,14 +223,14 @@ fun! s:GetOneScript(...) while itry <= 3 " call Decho("try#".itry." to download description of <".aicmmnt."> with addr=".scriptaddr) if has("win32") || has("win16") || has("win95") -" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"') - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile.' "'.scriptaddr.'"' +" call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.tmpfile.g:getscript_shq.' '.g:getscript_shq.scriptaddr.g:getscript_shq."|q!") + new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.tmpfile.g:getscript_shq.' '.g:getscript_shq.scriptaddr.g:getscript_shq|q! else -" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'") - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".tmpfile." '".scriptaddr."'" +" call Decho("exe silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.tmpfile.g:getscript_shq." ".g:getscript_shq.scriptaddr.g:getscript_shq) + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.tmpfile.g:getscript_shq." ".g:getscript_shq.scriptaddr.g:getscript_shq endif if itry == 1 - exe "silent vsplit ".tmpfile + exe "silent vsplit ".tmpfile else silent! e % endif @@ -222,6 +257,7 @@ fun! s:GetOneScript(...) " call Decho("***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">") echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" " call Dret("GetOneScript : srch for /Click on the package/ failed") + let @a= rega return endif " call Decho('found "Click on the package to download"') @@ -237,6 +273,7 @@ fun! s:GetOneScript(...) let s:downerrors = s:downerrors + 1 " call Decho("***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">") echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">" + let @a= rega " call Dret("GetOneScript : srch for /src_id/ failed") return endif @@ -268,62 +305,69 @@ fun! s:GetOneScript(...) " the plugin has been updated since we last obtained it, so download a new copy " call Decho("...downloading new <".sname.">") echomsg "...downloading new <".sname.">" - if has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95") -" call Decho("windows: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"') - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname.' "'.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.'"' + if has("win32") || has("win16") || has("win95") +" call Decho("new|exe silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.sname.g:getscript_shq." ".g:getscript_shq.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.g:getscript_shq."|q") + new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.sname.g:getscript_shq." ".g:getscript_shq.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.g:getscript_shq|q else -" call Decho("unix: silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'") - exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".sname." '".'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid."'" +" call Decho("silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.sname.g:getscript_shq." ".g:getscript_shq.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.g:getscript_shq) + exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".g:getscript_shq.sname.g:getscript_shq." ".g:getscript_shq.'http://vim.sf.net/scripts/download_script.php?src_id='.latestsrcid.g:getscript_shq endif - " AutoInstall: only if doautoinstall is so indicating + " AutoInstall: only if doautoinstall has been requested by the plugin itself if doautoinstall " call Decho("attempting to do autoinstall: getcwd<".getcwd()."> filereadable(".sname.")=".filereadable(sname)) if filereadable(sname) -" call Decho("move <".sname."> to ".s:autoinstall) - exe "silent !".g:GetLatestVimScripts_mv." ".sname." ".s:autoinstall - let curdir= escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") -" call Decho("exe cd ".s:autoinstall) - exe "cd ".s:autoinstall +" call Decho("silent !".g:GetLatestVimScripts_mv." ".g:getscript_shq.sname.g:getscript_shq." ".g:getscript_shq.s:autoinstall.g:getscript_shq) + exe "silent !".g:GetLatestVimScripts_mv." ".g:getscript_shq.sname.g:getscript_shq." ".g:getscript_shq.s:autoinstall.g:getscript_shq + let curdir = escape(substitute(getcwd(),'\','/','ge'),"|[]*'\" #") + let installdir= curdir."/Installed" + if !isdirectory(installdir) + call mkdir(installdir) + endif +" call Decho("exe cd ".s:autoinstall) + exe "cd ".escape(s:autoinstall,' ') - " decompress - if sname =~ '\.bz2$' -" call Decho("decompress: attempt to bunzip2 ".sname) - exe "silent !bunzip2 ".sname - let sname= substitute(sname,'\.bz2$','','') -" call Decho("decompress: new sname<".sname."> after bunzip2") - elseif sname =~ '\.gz$' -" call Decho("decompress: attempt to gunzip ".sname) - exe "silent !gunzip ".sname - let sname= substitute(sname,'\.gz$','','') -" call Decho("decompress: new sname<".sname."> after gunzip") - endif + " decompress + if sname =~ '\.bz2$' +" call Decho("decompress: attempt to bunzip2 ".sname) + exe "silent !bunzip2 ".g:getscript_shq.sname.g:getscript_shq + let sname= substitute(sname,'\.bz2$','','') +" call Decho("decompress: new sname<".sname."> after bunzip2") + elseif sname =~ '\.gz$' +" call Decho("decompress: attempt to gunzip ".sname) + exe "silent !gunzip ".g:getscript_shq.sname.g:getscript_shq + let sname= substitute(sname,'\.gz$','','') +" call Decho("decompress: new sname<".sname."> after gunzip") + endif - " distribute archive(.zip, .tar, .vba) contents - if sname =~ '\.zip$' -" call Decho("dearchive: attempt to unzip ".sname) - exe "silent !unzip -o ".sname - elseif sname =~ '\.tar$' -" call Decho("dearchive: attempt to untar ".sname) - exe "silent !tar -xvf ".sname - elseif sname =~ '\.vba$' -" call Decho("dearchive: attempt to handle a vimball: ".sname) - silent 1split - exe "silent e ".sname - silent so % - silent q - endif + " distribute archive(.zip, .tar, .vba) contents + if sname =~ '\.zip$' +" call Decho("dearchive: attempt to unzip ".sname) + exe "silent !unzip -o ".g:getscript_shq.sname.g:getscript_shq + elseif sname =~ '\.tar$' +" call Decho("dearchive: attempt to untar ".sname) + exe "silent !tar -xvf ".g:getscript_shq.sname.g:getscript_shq + elseif sname =~ '\.vba$' +" call Decho("dearchive: attempt to handle a vimball: ".sname) + silent 1split + exe "silent e ".escape(sname,' ') + silent so % + silent q + endif - if sname =~ '.vim$' -" call Decho("dearchive: attempt to simply move ".sname." to plugin") - exe "silent !".g:GetLatestVimScripts_mv." ".sname." plugin" - endif + if sname =~ '.vim$' +" call Decho("dearchive: attempt to simply move ".sname." to plugin") + exe "silent !".g:GetLatestVimScripts_mv." ".g:getscript_shq.sname.g:getscript_shq." plugin" + else +" call Decho("dearchive: move <".sname."> to installdir<".installdir.">") + exe "silent !".g:GetLatestVimScripts_mv." ".g:getscript_shq.sname.g:getscript_shq." ".installdir + endif - " helptags step - let docdir= substitute(&rtp,',.*','','e')."/doc" -" call Decho("helptags: docdir<".docdir.">") - exe "helptags ".docdir - exe "cd ".curdir + " helptags step + let docdir= substitute(&rtp,',.*','','e')."/doc" +" call Decho("helptags: docdir<".docdir.">") + exe "helptags ".docdir + exe "cd ".curdir endif if fname !~ ':AutoInstall:' let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt @@ -342,9 +386,10 @@ fun! s:GetOneScript(...) endif " restore options - let &t_ti= t_ti - let &t_te= t_te - let &rs = rs + let &t_ti = t_ti + let &t_te = t_te + let &rs = rs + let @a = rega " call Dret("GetOneScript") endfun @@ -421,7 +466,7 @@ fun! getscript#GetLatestVimScripts() " call Decho("searching plugins for GetLatestVimScripts dependencies") let lastline = line("$") " call Decho("lastline#".lastline) - let plugins = split(globpath(&rtp,"plugin/*.vim")) + let plugins = split(globpath(&rtp,"plugin/*.vim"),'\n') let foundscript = 0 let firstdir= "" @@ -430,11 +475,12 @@ fun! getscript#GetLatestVimScripts() " don't process plugins in system directories if firstdir == "" let firstdir= substitute(plugin,'[/\\][^/\\]\+$','','') -" call Decho("firstdir<".firstdir.">") +" call Decho("setting firstdir<".firstdir.">") else let curdir= substitute(plugin,'[/\\][^/\\]\+$','','') " call Decho("curdir<".curdir.">") if curdir != firstdir +" call Decho("skipping subsequent plugins: curdir<".curdir."> != firstdir<".firstdir.">") break endif endif @@ -443,14 +489,14 @@ fun! getscript#GetLatestVimScripts() $ " call Decho(" ") " call Decho(".dependency checking<".plugin."> line$=".line("$")) - exe "silent r ".plugin + exe "silent r ".escape(plugin,"[]#*$%'\" ?`!&();<>\\") while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 let newscript= substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') let llp1 = lastline+1 " call Decho("..newscript<".newscript.">") - " don't process ""GetLatestVimScripts lines + " don't process ""GetLatestVimScripts lines -- those that have been doubly-commented out if newscript !~ '^"' " found a "GetLatestVimScripts: # #" line in the script; check if its already in the datafile let curline = line(".") @@ -487,12 +533,12 @@ fun! getscript#GetLatestVimScripts() " call Decho(" ") if foundscript == 0 - set nomod + setlocal nomod endif " Check on out-of-date scripts using GetLatest/GetLatestVimScripts.dat " call Decho("begin: checking out-of-date scripts using datafile<".datafile.">") - set lz + setlocal lz 1 " /^-----/,$g/^\s*\d/call Decho(getline(".")) 1 @@ -531,12 +577,15 @@ fun! getscript#GetLatestVimScripts() " restore events and current directory exe "cd ".escape(substitute(origdir,'\','/','ge'),"|[]*'\" #") let &ei= eikeep - set nolz + setlocal nolz " call Dret("GetLatestVimScripts : did ".s:downloads." downloads") endfun -" --------------------------------------------------------------------- +" --------------------------------------------------------------------- " Restore Options: {{{1 let &cpo= s:keepcpo +unlet s:keepcpo +" --------------------------------------------------------------------- +" Modelines: {{{1 " vim: ts=8 sts=2 fdm=marker nowrap diff --git a/runtime/autoload/gnat.vim b/runtime/autoload/gnat.vim index d44b615d..e1fb790f 100644 --- a/runtime/autoload/gnat.vim +++ b/runtime/autoload/gnat.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/GNAT compiler file " Language: Ada (GNAT) -" $Id: gnat.vim,v 1.4 2007/05/12 15:19:25 vimboss Exp $ +" $Id: gnat.vim,v 1.1 2007/05/05 18:18:20 vimboss Exp $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " $Author: vimboss $ -" $Date: 2007/05/12 15:19:25 $ +" $Date: 2007/05/05 18:18:20 $ " Version: 4.2 -" $Revision: 1.4 $ +" $Revision: 1.1 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/gnat.vim $ " History: 24.05.2006 MK Unified Headers " 16.07.2006 MK Ada-Mode as vim-ball diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index b4753c27..a974a8f4 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,7 +1,7 @@ " netrw.vim: Handles file transfer and remote directory listing across " AUTOLOAD SECTION -" Date: May 05, 2007 -" Version: 109 +" Date: Mar 28, 2008 +" Version: 123 " Maintainer: Charles E Campbell, Jr " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1 @@ -9,14 +9,11 @@ " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, " netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided -" *as is* and comes with no warranty of any kind, either +" *as is* and come with no warranty of any kind, either " expressed or implied. By using this plugin, you agree that " in no event will the copyright holder be liable for any damages " resulting from the use of this software. -" of this software. -" COMBAK: worked with tmpfile s:GetTempname() in NetRead() NetWrite() -" !!NEEDS DEBUGGING && TESTING!!! -"redraw!|call inputsave()|call input("Press to continue")|call inputrestore() +"redraw!|call DechoSep()|call inputsave()|call input("Press to continue")|call inputrestore() " " But be doers of the Word, and not only hearers, deluding your own selves {{{1 " (James 1:22 RSV) @@ -30,7 +27,7 @@ if !exists("s:NOTE") let s:WARNING = 1 let s:ERROR = 2 endif -let g:loaded_netrw = "v109" +let g:loaded_netrw = "v123" if v:version < 700 call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1) finish @@ -115,6 +112,18 @@ endif " --------------------------------------------------------------------- " Default values for netrw's global variables {{{2 +" Cygwin Detection ------- {{{3 +if !exists("g:netrw_cygwin") + if has("win32") || has("win95") || has("win64") || has("win16") + if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' + let g:netrw_cygwin= 1 + else + let g:netrw_cygwin= 0 + endif + else + let g:netrw_cygwin= 0 + endif +endif " Default values - a-c ---------- {{{3 if !exists("g:netrw_alto") let g:netrw_alto= &sb @@ -128,26 +137,22 @@ endif if !exists("g:netrw_chgwin") let g:netrw_chgwin = -1 endif -if !exists("g:netrw_cygwin") - if has("win32") || has("win95") || has("win64") || has("win16") - if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' - let g:netrw_cygwin= 1 - else - let g:netrw_cygwin= 0 - endif - else - let g:netrw_cygwin= 0 - endif -else - let g:netrw_cygwin= 0 +if !exists("g:netrw_compress") + let g:netrw_compress= "gzip" endif " Default values - d-f ---------- {{{3 if !exists("g:NETRW_DIRHIST_CNT") let g:NETRW_DIRHIST_CNT= 0 endif +if !exists("g:netrw_decompress") + let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"} +endif if !exists("g:netrw_dirhistmax") let g:netrw_dirhistmax= 10 endif +if !exists("g:netrw_fastbrowse") + let g:netrw_fastbrowse= 1 +endif if !exists("g:netrw_ftp_browse_reject") let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$' endif @@ -198,9 +203,35 @@ if !exists("g:netrw_list_hide") let g:netrw_list_hide= "" endif " Default values - lh-lz ---------- {{{3 +if !exists("g:netrw_localcopycmd") + if has("win32") || has("win95") || has("win64") || has("win16") + if g:netrw_cygwin + let g:netrw_localcopycmd= "cp" + else + let g:netrw_localcopycmd= "copy" + endif + elseif has("unix") || has("macunix") + let g:netrw_localcopycmd= "cp" + else + let g:netrw_localcopycmd= "" + endif +endif if !exists("g:netrw_local_mkdir") let g:netrw_local_mkdir= "mkdir" endif +if !exists("g:netrw_localmovecmd") + if has("win32") || has("win95") || has("win64") || has("win16") + if g:netrw_cygwin + let g:netrw_localmovecmd= "mv" + else + let g:netrw_localmovecmd= "move" + endif + elseif has("unix") || has("macunix") + let g:netrw_localmovecmd= "mv" + else + let g:netrw_localmovecmd= "" + endif +endif if !exists("g:netrw_local_rmdir") let g:netrw_local_rmdir= "rmdir" endif @@ -215,6 +246,9 @@ if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp' let g:netrw_list_cmd= g:netrw_list_cmd." -l" endif " Default values - m-r ---------- {{{3 +if !exists("g:netrw_markfileesc") + let g:netrw_markfileesc= '*./[\~' +endif if !exists("g:netrw_maxfilenamelen") let g:netrw_maxfilenamelen= 32 endif @@ -224,6 +258,19 @@ endif if !exists("g:netrw_mkdir_cmd") let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir" endif +if !exists("g:netrw_mousemaps") + if exists("&mouse") && &mouse =~ '[anh]' + let g:netrw_mousemaps= 1 + else + let g:netrw_mousemaps= 0 + endif +endif +if !exists("g:netrw_retmap") + let g:netrw_retmap= 0 +endif +if !exists("g:netrw_preview") + let g:netrw_preview= 0 +endif if !exists("g:netrw_scpport") let g:netrw_scpport= "-P" endif @@ -248,12 +295,11 @@ if exists("g:netrw_silent") && g:netrw_silent != 0 else let g:netrw_silentxfer= "" endif -if !exists("g:netrw_fastbrowse") - let g:netrw_fastbrowse= 1 -endif if !exists("g:netrw_shq") if exists("&shq") && &shq != "" let g:netrw_shq= &shq + elseif exists("&sxq") && &sxq != "" + let g:netrw_shq= &sxq elseif has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin let g:netrw_shq= "'" @@ -274,7 +320,10 @@ if !exists("g:netrw_sort_direction") let g:netrw_sort_direction= "normal" endif if !exists("g:netrw_sort_sequence") - let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,\.[a-np-z]$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$' + let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$' +endif +if !exists("g:netrw_special_syntax") + let g:netrw_special_syntax= 0 endif if !exists("g:netrw_ssh_browse_reject") let g:netrw_ssh_browse_reject='^total\s\+\d\+$' @@ -287,6 +336,9 @@ else let g:netrw_use_noswf= 0 endif " Default values - t-w ---------- {{{3 +if !exists("g:netrw_ctags") + let g:netrw_ctags= "ctags" +endif if !exists("g:netrw_timefmt") let g:netrw_timefmt= "%c" endif @@ -304,17 +356,17 @@ if !exists("g:netrw_winsize") endif " --------------------------------------------------------------------- " Default values for netrw's script variables: {{{2 -if !exists("s:netrw_cd_escape") - let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" +if !exists("g:netrw_cd_escape") + let g:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" endif if !exists("g:netrw_fname_escape") - let g:netrw_fname_escape= ' ?&;' + let g:netrw_fname_escape= ' ?&;%' endif -if !exists("g:netrw_tmpfile_escape") - let g:netrw_tmpfile_escape= ' ?&;' +if !exists("g:netrw_glob_escape") + let g:netrw_glob_escape= '[]*?`{~$' endif -if !exists("s:netrw_glob_escape") - let s:netrw_glob_escape= '[]*?`{~$' +if !exists("g:netrw_tmpfile_escape") + let g:netrw_tmpfile_escape= ' &;' endif " BufEnter event ignored by decho when following variable is true @@ -327,184 +379,196 @@ endif " ============================== " ------------------------------------------------------------------------ -" NetSavePosn: saves position of cursor on screen {{{2 -fun! netrw#NetSavePosn() -" call Dfunc("netrw#NetSavePosn()") - " Save current line and column - let w:netrw_winnr= winnr() - let w:netrw_line = line(".") - let w:netrw_col = virtcol(".") - - " Save top-of-screen line - norm! H0 - let w:netrw_hline= line(".") - - call netrw#NetRestorePosn() -" call Dret("netrw#NetSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) -endfun - -" ------------------------------------------------------------------------ -" NetRestorePosn: restores the cursor and file position as saved by NetSavePosn() {{{2 -fun! netrw#NetRestorePosn() -" call Dfunc("netrw#NetRestorePosn() winnr=".(exists("w:netrw_winnr")? w:netrw_winnr : -1)." line=".(exists("w:netrw_line")? w:netrw_line : -1)." col=".(exists("w:netrw_col")? w:netrw_col : -1)." hline=".(exists("w:netrw_hline")? w:netrw_hline : -1)) - let eikeep= &ei - set ei=all - if expand("%") == "NetrwMessage" - exe s:winBeforeErr."wincmd w" - endif - - " restore window - if exists("w:netrw_winnr") -" call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w") - exe "silent! ".w:netrw_winnr."wincmd w" - endif - if v:shell_error == 0 - " as suggested by Bram M: redraw on no error - " allows protocol error messages to remain visible - redraw! - endif - - " restore top-of-screen line - if exists("w:netrw_hline") -" call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z") - exe "norm! ".w:netrw_hline."G0z\" - endif - - " restore position - if exists("w:netrw_line") && exists("w:netrw_col") -" call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|") - exe "norm! ".w:netrw_line."G0".w:netrw_col."\" - endif - - let &ei= eikeep -" call Dret("netrw#NetRestorePosn") -endfun - -" =============================== -" NetOptionSave: save options and set to "standard" form {{{2 -"DechoTabOn -fun! s:NetOptionSave() -" call Dfunc("s:NetOptionSave() win#".winnr()." buf#".bufnr(".")) - if !exists("w:netrw_optionsave") - let w:netrw_optionsave= 1 +" s:NetrwOptionSave: save options and set to "standard" form {{{2 +" 06/08/07 : removed call to NetrwSafeOptions(), either placed +" immediately after NetrwOptionSave() calls in NetRead +" and NetWrite, or after the s:NetrwEnew() call in +" NetrwBrowse. +" vt: normally its "w:" or "s:" (a variable type) +fun! s:NetrwOptionSave(vt) +" call Dfunc("s:NetrwOptionSave(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">") + +" call Decho(a:vt."netrw_optionsave".(exists("{a:vt}netrw_optionsave")? ("=".{a:vt}netrw_optionsave) : " doesn't exist")) + if !exists("{a:vt}netrw_optionsave") + let {a:vt}netrw_optionsave= 1 else -" call Dret("s:NetOptionSave : netoptionsave=".w:netrw_optionsave) +" call Dret("s:NetrwOptionSave : options already saved") return endif +" call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) " Save current settings and current directory let s:yykeep = @@ if exists("&l:acd") - let w:netrw_acdkeep = &l:acd - endif - let w:netrw_aikeep = &l:ai - let w:netrw_awkeep = &l:aw - let w:netrw_cikeep = &l:ci - let w:netrw_cinkeep = &l:cin - let w:netrw_cinokeep = &l:cino - let w:netrw_comkeep = &l:com - let w:netrw_cpokeep = &l:cpo + let {a:vt}netrw_acdkeep = &l:acd + endif + let {a:vt}netrw_aikeep = &l:ai + let {a:vt}netrw_awkeep = &l:aw + let {a:vt}netrw_cikeep = &l:ci + let {a:vt}netrw_cinkeep = &l:cin + let {a:vt}netrw_cinokeep = &l:cino + let {a:vt}netrw_comkeep = &l:com + let {a:vt}netrw_cpokeep = &l:cpo if g:netrw_keepdir - let w:netrw_dirkeep = getcwd() - endif - let w:netrw_fokeep = &l:fo " formatoptions - let w:netrw_gdkeep = &l:gd " gdefault - let w:netrw_hidkeep = &l:hidden - let w:netrw_magickeep = &l:magic - let w:netrw_repkeep = &l:report - let w:netrw_spellkeep = &l:spell - let w:netrw_twkeep = &l:tw " textwidth - let w:netrw_wigkeep = &l:wig " wildignore + let {a:vt}netrw_dirkeep = getcwd() + endif + let {a:vt}netrw_fokeep = &l:fo " formatoptions + let {a:vt}netrw_gdkeep = &l:gd " gdefault + let {a:vt}netrw_hidkeep = &l:hidden + let {a:vt}netrw_magickeep = &l:magic + let {a:vt}netrw_repkeep = &l:report + let {a:vt}netrw_spellkeep = &l:spell + let {a:vt}netrw_twkeep = &l:tw " textwidth + let {a:vt}netrw_wigkeep = &l:wig " wildignore if has("win32") && !has("win95") - let w:netrw_swfkeep= &l:swf " swapfile + let {a:vt}netrw_swfkeep= &l:swf " swapfile endif - call s:NetrwSafeOptions() - if &go =~ 'a' | silent! let w:netrw_regstar = @* | endif - silent! let w:netrw_regslash= @/ + if &go =~ 'a' | silent! let {a:vt}netrw_regstar = @* | endif + silent! let {a:vt}netrw_regslash= @/ -" call Dret("s:NetOptionSave") -" call Dret("s:NetOptionSave : win#".winnr()." buf#".bufnr(".")) +" call Dret("s:NetrwOptionSave : win#".winnr()." buf#".bufnr("%")) endfun " ------------------------------------------------------------------------ -" NetOptionRestore: restore options {{{2 -fun! s:NetOptionRestore() -" call Dfunc("s:NetOptionRestore() win#".winnr()." buf#".bufnr(".")) - if !exists("w:netrw_optionsave") -" call Dret("s:NetOptionRestore : w:netrw_optionsave doesn't exist") +" s:NetrwOptionRestore: restore options {{{2 +fun! s:NetrwOptionRestore(vt) +" call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")) + if !exists("{a:vt}netrw_optionsave") +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") return endif - unlet w:netrw_optionsave + unlet {a:vt}netrw_optionsave if exists("&acd") - if exists("w:netrw_acdkeep") |let &l:acd = w:netrw_acdkeep |unlet w:netrw_acdkeep |endif - endif - if exists("w:netrw_aikeep") |let &l:ai = w:netrw_aikeep |unlet w:netrw_aikeep |endif - if exists("w:netrw_awkeep") |let &l:aw = w:netrw_awkeep |unlet w:netrw_awkeep |endif - if exists("w:netrw_cikeep") |let &l:ci = w:netrw_cikeep |unlet w:netrw_cikeep |endif - if exists("w:netrw_cinkeep") |let &l:cin = w:netrw_cinkeep |unlet w:netrw_cinkeep |endif - if exists("w:netrw_cinokeep") |let &l:cino = w:netrw_cinokeep |unlet w:netrw_cinokeep |endif - if exists("w:netrw_comkeep") |let &l:com = w:netrw_comkeep |unlet w:netrw_comkeep |endif - if exists("w:netrw_cpokeep") |let &l:cpo = w:netrw_cpokeep |unlet w:netrw_cpokeep |endif - if exists("w:netrw_dirkeep") |exe "lcd ".w:netrw_dirkeep |unlet w:netrw_dirkeep |endif - if exists("w:netrw_fokeep") |let &l:fo = w:netrw_fokeep |unlet w:netrw_fokeep |endif - if exists("w:netrw_gdkeep") |let &l:gd = w:netrw_gdkeep |unlet w:netrw_gdkeep |endif - if exists("w:netrw_hidkeep") |let &l:hidden = w:netrw_hidkeep |unlet w:netrw_hidkeep |endif - if exists("w:netrw_magic") |let &l:magic = w:netrw_magic |unlet w:netrw_magic |endif - if exists("w:netrw_repkeep") |let &l:report = w:netrw_repkeep |unlet w:netrw_repkeep |endif - if exists("w:netrw_spellkeep")|let &l:spell = w:netrw_spellkeep |unlet w:netrw_spellkeep|endif - if exists("w:netrw_twkeep") |let &l:tw = w:netrw_twkeep |unlet w:netrw_twkeep |endif - if exists("w:netrw_wigkeep") |let &l:wig = w:netrw_wigkeep |unlet w:netrw_wigkeep |endif - if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif - if exists("w:netrw_swfkeep") + if exists("{a:vt}netrw_acdkeep") +" call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd) + let curdir = getcwd() + let &l:acd = {a:vt}netrw_acdkeep + unlet {a:vt}netrw_acdkeep + if &l:acd +" call Decho("exe cd ".escape(curdir,g:netrw_cd_escape)) " NOTE: was g:netrw_fname_escape for some reason + exe "lcd ".escape(curdir,g:netrw_cd_escape) + endif + endif + endif + if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif + if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif + if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif + if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif + if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif + if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif + if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif + if exists("{a:vt}netrw_dirkeep") && isdirectory({a:vt}netrw_dirkeep) && g:netrw_keepdir + let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g') + let dirkeep = escape(dirkeep,g:netrw_cd_escape) + if exists("{a:vt}netrw_dirkeep") |exe "lcd ".dirkeep|unlet {a:vt}netrw_dirkeep |endif + endif + if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif + if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif + if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif + if exists("{a:vt}netrw_magic") |let &l:magic = {a:vt}netrw_magic |unlet {a:vt}netrw_magic |endif + if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif + if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif + if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif + if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif + if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif + if exists("{a:vt}netrw_swfkeep") if &directory == "" " user hasn't specified a swapfile directory; " netrw will temporarily set the swapfile directory " to the current directory as returned by getcwd(). let &l:directory = getcwd() - silent! let &l:swf = w:netrw_swfkeep + silent! let &l:swf = {a:vt}netrw_swfkeep setlocal directory= - unlet w:netrw_swfkeep - elseif &l:swf != w:netrw_swfkeep - " following line causes a Press ENTER in windows -- can't seem to work around it!!! (COMBAK) - silent! let &l:swf= w:netrw_swfkeep - unlet w:netrw_swfkeep + unlet {a:vt}netrw_swfkeep + elseif &l:swf != {a:vt}netrw_swfkeep + " following line causes a Press ENTER in windows -- can't seem to work around it!!! + silent! let &l:swf= {a:vt}netrw_swfkeep + unlet {a:vt}netrw_swfkeep endif endif - if exists("w:netrw_regstar") |silent! let @*= w:netrw_regstar |unlet w:netrw_regstar |endif - if exists("w:netrw_regslash")|silent! let @/= w:netrw_regslash|unlet w:netrw_regslash|endif + if exists("{a:vt}netrw_regstar") |silent! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif + if exists("{a:vt}netrw_regslash")|silent! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif +" call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd) -" call Dret("s:NetOptionRestore : win#".winnr()." buf#".bufnr(".")) +" call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwOptionRestore : win#".winnr()." buf#".bufnr("%")) endfun " --------------------------------------------------------------------- -" NetrwSafeOptions: sets options to help netrw do its job {{{2 +" s:NetrwSafeOptions: sets options to help netrw do its job {{{2 fun! s:NetrwSafeOptions() -" call Dfunc("s:NetrwSafeOptions()") +" call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%")).">") +" call Decho("window's ft=".&ft) setlocal cino= setlocal com= setlocal cpo-=aA - if exists("&acd") - setlocal noacd nocin noai noci magic nospell nohid wig= noaw - setlocal fo=nroql2 - else - setlocal nocin noai noci magic nospell nohid wig= noaw - setlocal fo=nroql2 - endif + if exists("&acd") | setlocal noacd | endif + setlocal nocin noai noci magic nospell nohid wig= noaw + setlocal fo=nroql2 setlocal tw=0 setlocal report=10000 if g:netrw_use_noswf && has("win32") && !has("win95") setlocal noswf endif +" call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")) " call Dret("s:NetrwSafeOptions") endfun +" --------------------------------------------------------------------- +" netrw#NetrwClean: remove netrw {{{2 +" supports :NetrwClean -- remove netrw from first directory on runtimepath +" :NetrwClean! -- remove netrw from all directories on runtimepath +fun! netrw#NetrwClean(sys) +" call Dfunc("netrw#NetrwClean(sys=".a:sys.")") + + if a:sys + let choice= confirm("Remove personal and system copies of netrw?","&Yes\n&No") + else + let choice= confirm("Remove personal copy of netrw?","&Yes\n&No") + endif +" call Decho("choice=".choice) + let diddel= 0 + let diddir= "" + + if choice == 1 + for dir in split(&rtp,',') + if filereadable(dir."/plugin/netrwPlugin.vim") +" call Decho("removing netrw-related files from ".dir) + if s:System("delete",dir."/plugin/netrwPlugin.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/plugin/netrwPlugin.vim",55) |endif + if s:System("delete",dir."/autoload/netrwFileHandlers.vim")|call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwFileHandlers.vim",55)|endif + if s:System("delete",dir."/autoload/netrwSettings.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwSettings.vim",55) |endif + if s:System("delete",dir."/autoload/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrw.vim",55) |endif + if s:System("delete",dir."/syntax/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrw.vim",55) |endif + if s:System("delete",dir."/syntax/netrwlist.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrwlist.vim",55) |endif + let diddir= dir + let diddel= diddel + 1 + if !a:sys|break|endif + endif + endfor + endif + + echohl WarningMsg + if diddel == 0 + echomsg "netrw is either not installed or not removable" + elseif diddel == 1 + echomsg "removed one copy of netrw from <".diddir.">" + else + echomsg "removed ".diddel." copies of netrw" + endif + echohl None + +" call Dret("netrw#NetrwClean") +endfun + " ------------------------------------------------------------------------ " Netrw Transfer Functions: {{{1 " =============================== " ------------------------------------------------------------------------ -" NetRead: responsible for reading a file over the net {{{2 +" netrw#NetRead: responsible for reading a file over the net {{{2 " mode: =0 read remote file and insert before current line " =1 read remote file and insert after current line " =2 replace with remote file @@ -513,7 +577,8 @@ fun! netrw#NetRead(mode,...) " call Dfunc("netrw#NetRead(mode=".a:mode.",...) a:0=".a:0." ".g:loaded_netrw) " save options {{{3 - call s:NetOptionSave() + call s:NetrwOptionSave("w:") + call s:NetrwSafeOptions() " interpret mode into a readcmd {{{3 if a:mode == 0 " read remote file before current line @@ -572,10 +637,10 @@ fun! netrw#NetRead(mode,...) " call Decho("reconstructing choice") if match(choice,'"$') != -1 " case "..." - let choice=strpart(choice,1,strlen(choice)-2) + let choice=strpart(choice,1,s:Strlen(choice)-2) else " case "... ... ..." - let choice = strpart(choice,1,strlen(choice)-1) + let choice = strpart(choice,1,s:Strlen(choice)-1) let wholechoice = "" while match(choice,'"$') == -1 @@ -590,7 +655,7 @@ fun! netrw#NetRead(mode,...) endif let choice= a:{ichoice} endwhile - let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) + let choice= strpart(wholechoice,1,s:Strlen(wholechoice)-1) . " " . strpart(choice,0,s:Strlen(choice)-1) endif endif endif @@ -599,14 +664,14 @@ fun! netrw#NetRead(mode,...) let ichoice= ichoice + 1 " Determine method of read (ftp, rcp, etc) {{{3 - call s:NetMethod(choice) + call s:NetrwMethod(choice) let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix - " Check if NetBrowse() should be handling this request -" call Decho("checking if NetBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">") + " Check if NetrwBrowse() should be handling this request +" call Decho("checking if NetrwBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">") if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://' " call Decho("yes, choice matches '^.*[\/]$'") - keepjumps call s:NetBrowse(0,choice) + keepjumps call s:NetrwBrowse(0,choice) " call Dret("netrw#NetRead :3 getcwd<".getcwd().">") return endif @@ -640,9 +705,9 @@ fun! netrw#NetRead(mode,...) let uid_machine = g:netrw_machine endif endif -" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) +" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".g:netrw_shq.uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile.g:netrw_shq) + exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".g:netrw_shq.uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile.g:netrw_shq + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -650,7 +715,7 @@ fun! netrw#NetRead(mode,...) elseif b:netrw_method == 2 " read with ftp + <.netrc> " call Decho("read via ftp+.netrc (method #2)") let netrw_fname= b:netrw_fname - new + call s:SaveBufVars()|new|call s:RestoreBufVars() setlocal ff=unix exe "put ='".g:netrw_ftpmode."'" " call Decho("filter input: ".getline(".")) @@ -674,8 +739,8 @@ fun! netrw#NetRead(mode,...) call netrw#ErrorMsg(s:ERROR,getline(1),4) let &debug= debugkeep endif - bd! - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + call s:SaveBufVars()|bd!|call s:RestoreBufVars() + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -684,7 +749,7 @@ fun! netrw#NetRead(mode,...) " Construct execution string (four lines) which will be passed through filter " call Decho("read via ftp+mipf (method #3)") let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) - new + call s:SaveBufVars()|new|call s:RestoreBufVars() setlocal ff=unix if exists("g:netrw_port") && g:netrw_port != "" put ='open '.g:netrw_machine.' '.g:netrw_port @@ -697,10 +762,10 @@ fun! netrw#NetRead(mode,...) if exists("g:netrw_ftp") && g:netrw_ftp == 1 put =g:netrw_uid " call Decho("filter input: ".getline(".")) - put ='\"'.g:netrw_passwd.'\"' + put ='\"'.s:netrw_passwd.'\"' " call Decho("filter input: ".getline(".")) else - put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"' + put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' " call Decho("filter input: ".getline(".")) endif @@ -729,8 +794,8 @@ fun! netrw#NetRead(mode,...) call netrw#ErrorMsg(s:ERROR,getline(1),5) endif endif - bd! - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + call s:SaveBufVars()|bd!|call s:RestoreBufVars() + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -742,9 +807,9 @@ fun! netrw#NetRead(mode,...) else let useport= "" endif -" call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".tmpfile) +" call Decho("exe g:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".g:netrw_shq.g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape).g:netrw_shq." ".tmpfile) exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_shq.g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape).g:netrw_shq." ".tmpfile - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -759,22 +824,24 @@ fun! netrw#NetRead(mode,...) return endif + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if match(b:netrw_fname,"#") == -1 " simple wget - let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) -" call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_fname) - exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_fname - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) +" call Decho('using simple wget (# not in b:netrw_fname<'.b:netrw_fname.">)") +" call Decho("exe ".g:netrw_silentxfer."!".g:netrw_http_cmd." ".g:netrw_shq.tmpfile.g:netrw_shq." ".g:netrw_shq."http://".g:netrw_machine.netrw_fname.g:netrw_shq) + exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".g:netrw_shq.tmpfile.g:netrw_shq." ".g:netrw_shq."http://".g:netrw_machine.netrw_fname.g:netrw_shq + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) else " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker) +" call Decho(("wget/curl plus jump (# in b:netrw_fname<".b:netrw_fname.">)") let netrw_html= substitute(netrw_fname,"#.*$","","") let netrw_tag = substitute(netrw_fname,"^.*#","","") " call Decho("netrw_html<".netrw_html.">") " call Decho("netrw_tag <".netrw_tag.">") -" call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_html) - exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_html - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) +" call Decho("exe ".g:netrw_silentxfer."!".g:netrw_http_cmd." ".g:netrw_shq.tmpfile.g:netrw_shq." ".g:netrw_shq."http://".g:netrw_machine.netrw_html.g:netrw_shq) + exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".g:netrw_shq.tmpfile.g:netrw_shq." ".g:netrw_shq."http://".g:netrw_machine.netrw_html.g:netrw_shq + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) " call Decho('<\s*a\s*name=\s*"'.netrw_tag.'"/') exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\" endif @@ -795,7 +862,7 @@ fun! netrw#NetRead(mode,...) else put ='open '.g:netrw_machine endif - put ='user '.g:netrw_uid.' '.g:netrw_passwd + put ='user '.g:netrw_uid.' '.s:netrw_passwd put ='get '.netrw_fname.' '.tmpfile put ='quit' @@ -804,7 +871,7 @@ fun! netrw#NetRead(mode,...) " call Decho("executing: %!".g:netrw_dav_cmd) exe g:netrw_silentxfer."%!".g:netrw_dav_cmd bd! - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -812,9 +879,9 @@ fun! netrw#NetRead(mode,...) elseif b:netrw_method == 7 " call Decho("read via rsync (method #7)") let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) -" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile - let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) +" call Decho("exe ".g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_shq.g:netrw_machine.":".netrw_fname.g:netrw_shq." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_shq.g:netrw_machine.":".netrw_fname.g:netrw_shq." ".tmpfile + let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -836,15 +903,15 @@ fun! netrw#NetRead(mode,...) endif " call Decho("read via fetch for ".netrw_option) - if exists("g:netrw_uid") && g:netrw_uid != "" && exists("g:netrw_passwd") && g:netrw_passwd != "" -" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname) - exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname + if exists("g:netrw_uid") && g:netrw_uid != "" && exists("s:netrw_passwd") && s:netrw_passwd != "" +" call Decho("exe ".g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".g:netrw_shq.netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname.g:netrw_shq) + exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".g:netrw_shq.netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname.g:netrw_shq else -" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".netrw_fname) - exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".netrw_fname +" call Decho("exe ".g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".g:netrw_shq.netrw_option."://".g:netrw_machine."/".netrw_fname.g:netrw_shq) + exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".g:netrw_shq.netrw_option."://".g:netrw_machine."/".netrw_fname.g:netrw_shq endif - let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) + let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice setlocal ro @@ -853,9 +920,9 @@ fun! netrw#NetRead(mode,...) elseif b:netrw_method == 9 " call Decho("read via sftp (method #9)") let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) -" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) +" call Decho("exe ".g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_shq.g:netrw_machine.":".netrw_fname.g:netrw_shq." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_shq.g:netrw_machine.":".netrw_fname.g:netrw_shq." ".tmpfile + let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice "......................................... @@ -875,19 +942,20 @@ fun! netrw#NetRead(mode,...) " call Decho("cleanup by deleting tmpfile<".tmpfile.">") call s:System("delete",tmpfile) endif - call s:NetOptionRestore() + call s:NetrwOptionRestore("w:") " call Dret("netrw#NetRead :5 getcwd<".getcwd().">") endfun " ------------------------------------------------------------------------ -" NetWrite: responsible for writing a file over the net {{{2 +" netrw#NetWrite: responsible for writing a file over the net {{{2 fun! netrw#NetWrite(...) range " call Dfunc("netrw#NetWrite(a:0=".a:0.") ".g:loaded_netrw) " option handling let mod= 0 - call s:NetOptionSave() + call s:NetrwOptionSave("w:") + call s:NetrwSafeOptions() " Get Temporary Filename {{{3 let tmpfile= s:GetTempfile("") @@ -959,10 +1027,10 @@ fun! netrw#NetWrite(...) range elseif match(choice,"^\"") != -1 if match(choice,"\"$") != -1 " case "..." - let choice=strpart(choice,1,strlen(choice)-2) + let choice=strpart(choice,1,s:Strlen(choice)-2) else " case "... ... ..." - let choice = strpart(choice,1,strlen(choice)-1) + let choice = strpart(choice,1,s:Strlen(choice)-1) let wholechoice = "" while match(choice,"\"$") == -1 @@ -977,7 +1045,7 @@ fun! netrw#NetWrite(...) range endif let choice= a:{ichoice} endwhile - let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) + let choice= strpart(wholechoice,1,s:Strlen(wholechoice)-1) . " " . strpart(choice,0,s:Strlen(choice)-1) endif endif endif @@ -985,7 +1053,7 @@ fun! netrw#NetWrite(...) range " call Decho("choice<" . choice . "> ichoice=".ichoice) " Determine method of write (ftp, rcp, etc) {{{4 - call s:NetMethod(choice) + call s:NetrwMethod(choice) " ============= " Perform Protocol-Based Write {{{4 @@ -1066,10 +1134,10 @@ fun! netrw#NetWrite(...) range if exists("g:netrw_ftp") && g:netrw_ftp == 1 put =g:netrw_uid " call Decho("filter input: ".getline(".")) - put ='\"'.g:netrw_passwd.'\"' + put ='\"'.s:netrw_passwd.'\"' " call Decho("filter input: ".getline(".")) else - put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"' + put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' " call Decho("filter input: ".getline(".")) endif put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"' @@ -1129,7 +1197,7 @@ fun! netrw#NetWrite(...) range else put ='open '.g:netrw_machine endif - put ='user '.g:netrw_uid.' '.g:netrw_passwd + put ='user '.g:netrw_uid.' '.s:netrw_passwd put ='put '.tmpfile.' '.netrw_fname " perform cadaver operation: @@ -1181,7 +1249,7 @@ fun! netrw#NetWrite(...) range " call Decho("tmpfile<".tmpfile."> readable, will now delete it") call s:System("delete",tmpfile) endif - call s:NetOptionRestore() + call s:NetrwOptionRestore("w:") if a:firstline == 1 && a:lastline == line("$") " restore modifiability; usually equivalent to set nomod @@ -1192,7 +1260,7 @@ fun! netrw#NetWrite(...) range endfun " --------------------------------------------------------------------- -" NetSource: source a remotely hosted vim script {{{2 +" netrw#NetSource: source a remotely hosted vim script {{{2 " uses NetRead to get a copy of the file into a temporarily file, " then sources that file, " then removes that file. @@ -1230,17 +1298,18 @@ fun! netrw#NetSource(...) endfun " =========================================== -" NetGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 +" s:NetrwGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 " readcmd == %r : replace buffer with newly read file " == 0r : read file at top of buffer " == r : read file after current line " == t : leave file in temporary form (ie. don't read into buffer) -fun! s:NetGetFile(readcmd, tfile, method) -" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") +fun! s:NetrwGetFile(readcmd, tfile, method) +" call Dfunc("NetrwGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") " readcmd=='t': simply do nothing if a:readcmd == 't' -" call Dret("NetGetFile : skip read of <".a:tfile.">") +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("NetrwGetFile : skip read of <".a:tfile.">") return endif @@ -1263,8 +1332,8 @@ fun! s:NetGetFile(readcmd, tfile, method) else let tfile= a:tfile endif -" call Decho("keepalt exe file ".tfile) - keepalt exe "silent! keepalt file ".tfile +" " call Decho("exe silent! keepalt file ".tfile) + exe "silent! keepalt file ".tfile " edit temporary file (ie. read the temporary file in) if rfile =~ '\.zip$' @@ -1285,8 +1354,13 @@ fun! s:NetGetFile(readcmd, tfile, method) endif " rename buffer back to remote filename +" call Decho("exe silent! keepalt file ".escape(rfile,' ')) exe "silent! keepalt file ".escape(rfile,' ') - filetype detect + if a:method == 5 + set ft=html + else + filetype detect + endif " call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") let line1 = 1 let line2 = line("$") @@ -1303,9 +1377,10 @@ fun! s:NetGetFile(readcmd, tfile, method) else " not readable +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) " call Decho("tfile<".a:tfile."> not readable") call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9) -" call Dret("NetGetFile : tfile<".a:tfile."> not readable") +" call Dret("NetrwGetFile : tfile<".a:tfile."> not readable") return endif @@ -1317,20 +1392,22 @@ fun! s:NetGetFile(readcmd, tfile, method) " call Decho("NetReadFixup() not called, doesn't exist (line1=".line1." line2=".line2.")") endif - " update the Buffers menu - if has("gui") && has("gui_running") - silent! emenu Buffers.Refresh\ menu + if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' + " update the Buffers menu + call s:UpdateBuffersMenu() endif " call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".s:FileReadable(a:tfile)) " make sure file is being displayed - redraw! -" call Dret("NetGetFile") +" redraw! + +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("NetrwGetFile") endfun " ------------------------------------------------------------------------ -" NetMethod: determine method of transfer {{{2 +" s:NetrwMethod: determine method of transfer {{{2 " method == 1: rcp " 2: ftp + <.netrc> " 3: ftp + machine, id, password, and [path]filename @@ -1340,8 +1417,8 @@ endfun " 7: rsync " 8: fetch " 9: sftp -fun! s:NetMethod(choice) " globals: method machine id passwd fname -" call Dfunc("NetMethod(a:choice<".a:choice.">)") +fun! s:NetrwMethod(choice) " globals: method machine id passwd fname +" call Dfunc("NetrwMethod(a:choice<".a:choice.">)") " initialization let b:netrw_method = 0 @@ -1352,8 +1429,8 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname " Patterns: " mipf : a:machine a:id password filename Use ftp - " mf : a:machine filename Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd - " ftpurm : ftp://[user@]host[[#:]port]/filename Use ftp + <.netrc> or g:netrw_uid g:netrw_passwd + " mf : a:machine filename Use ftp + <.netrc> or g:netrw_uid s:netrw_passwd + " ftpurm : ftp://[user@]host[[#:]port]/filename Use ftp + <.netrc> or g:netrw_uid s:netrw_passwd " rcpurm : rcp://[user@]host/filename Use rcp " rcphf : [user@]host:filename Use rcp " scpurm : scp://[user@]host[[#:]port]/filename Use scp @@ -1430,7 +1507,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname if userid != "" let g:netrw_uid= userid endif - if exists("g:netrw_uid") && exists("g:netrw_passwd") + if exists("g:netrw_uid") && exists("s:netrw_passwd") let b:netrw_method = 3 else if s:FileReadable(expand("$HOME/.netrc")) && !g:netrw_ignorenetrc @@ -1438,9 +1515,9 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname else if !exists("g:netrw_uid") || g:netrw_uid == "" call NetUserPass() - elseif !exists("g:netrw_passwd") || g:netrw_passwd == "" + elseif !exists("s:netrw_passwd") || s:netrw_passwd == "" call NetUserPass(g:netrw_uid) - " else just use current g:netrw_uid and g:netrw_passwd + " else just use current g:netrw_uid and s:netrw_passwd endif let b:netrw_method= 3 endif @@ -1460,13 +1537,13 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname let b:netrw_method = 3 let g:netrw_machine = substitute(a:choice,mipf,'\1',"") let g:netrw_uid = substitute(a:choice,mipf,'\2',"") - let g:netrw_passwd = substitute(a:choice,mipf,'\3',"") + let s:netrw_passwd = substitute(a:choice,mipf,'\3',"") let b:netrw_fname = substitute(a:choice,mipf,'\4',"") " Issue an ftp: "hostname [path/]filename" elseif match(a:choice,mf) == 0 " call Decho("(ftp) host file") - if exists("g:netrw_uid") && exists("g:netrw_passwd") + if exists("g:netrw_uid") && exists("s:netrw_passwd") let b:netrw_method = 3 let g:netrw_machine = substitute(a:choice,mf,'\1',"") let b:netrw_fname = substitute(a:choice,mf,'\2',"") @@ -1518,11 +1595,11 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname " if exists("g:netrw_uid") "Decho " call Decho("g:netrw_uid <".g:netrw_uid.">") " endif "Decho -" if exists("g:netrw_passwd") "Decho -" call Decho("g:netrw_passwd <".g:netrw_passwd.">") +" if exists("s:netrw_passwd") "Decho +" call Decho("s:netrw_passwd <".s:netrw_passwd.">") " endif "Decho " call Decho("b:netrw_fname <".b:netrw_fname.">") -" call Dret("NetMethod : b:netrw_method=".b:netrw_method) +" call Dret("NetrwMethod : b:netrw_method=".b:netrw_method) endfun " ------------------------------------------------------------------------ @@ -1565,10 +1642,10 @@ fun! NetUserPass(...) " get password if a:0 <= 1 " via prompt " call Decho("a:0=".a:0." case <=1:") - let g:netrw_passwd= inputsecret("Enter Password: ") + let s:netrw_passwd= inputsecret("Enter Password: ") else " from command line " call Decho("a:0=".a:0." case >1: a:2<".a:2.">") - let g:netrw_passwd=a:2 + let s:netrw_passwd=a:2 endif " call Dret("NetUserPass") @@ -1583,218 +1660,454 @@ endfun fun! s:BrowserMaps(islocal) " call Dfunc("s:BrowserMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") if a:islocal - nnoremap :call netrw#LocalBrowseCheck(NetBrowseChgDir(1,NetGetWord())) - nnoremap :call netrw#LocalBrowseCheck(NetBrowseChgDir(1,NetGetWord())) - nnoremap :call NetRefresh(1,NetBrowseChgDir(1,'./')) - nnoremap - :exe "norm! 0"call netrw#LocalBrowseCheck(NetBrowseChgDir(1,'../')) - nnoremap a :call NetHide(1) - nnoremap mb :call NetBookmarkDir(0,b:netrw_curdir) - nnoremap gb :call NetBookmarkDir(1,b:netrw_curdir) - nnoremap c :exe "cd ".b:netrw_curdir + nnoremap :call netrw#LocalBrowseCheck(NetrwBrowseChgDir(1,NetrwGetWord())) + nnoremap - :exe "norm! 0"call netrw#LocalBrowseCheck(NetrwBrowseChgDir(1,'../')) + nnoremap a :call NetrwHide(1) + nnoremap mb :call NetrwBookmarkDir(0,b:netrw_curdir) + nnoremap mc :call NetrwMarkFileCopy(1) + nnoremap md :call NetrwMarkFileDiff(1) + nnoremap me :call NetrwMarkFileEdit(1) + nnoremap mf :call NetrwMarkFile(1,NetrwGetWord()) + nnoremap mh :call NetrwMarkHideSfx(1) + nnoremap mm :call NetrwMarkFileMove(1) + nnoremap mp :call NetrwMarkFilePrint(1) + nnoremap mr :call NetrwMarkFileRegexp(1) + nnoremap ms :call NetrwMarkFileSource(1) + nnoremap mT :call NetrwMarkFileTag(1) + nnoremap mt :call NetrwMarkFileTgt(1) + nnoremap mu :call NetrwUnMarkFile(1) + nnoremap mx :call NetrwMarkFileExe(1) + nnoremap mz :call NetrwMarkFileCompress(1) + nnoremap gb :call NetrwBookmarkDir(1,b:netrw_curdir) + nnoremap gh :call NetrwHidden(1) + nnoremap c :exe "lcd ".escape(b:netrw_curdir,g:netrw_cd_escape) nnoremap C :let g:netrw_chgwin= winnr() - nnoremap d :call NetMakeDir("") - nnoremap :call NetHideEdit(1) - nnoremap i :call NetListStyle(1) - nnoremap o :call NetSplit(3) - nnoremap O :call LocalObtain() - nnoremap p :call NetPreview(NetBrowseChgDir(1,NetGetWord(),1)) - nnoremap P :call NetPrevWinOpen(1) - nnoremap q :call NetBookmarkDir(2,b:netrw_curdir) - nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'exe "norm! 0"call NetRefresh(1,NetBrowseChgDir(1,'./')) - nnoremap s :call NetSortStyle(1) + nnoremap d :call NetrwMakeDir("") + nnoremap i :call NetrwListStyle(1) + nnoremap o :call NetrwSplit(3) + nnoremap O :call NetrwObtain(0) + nnoremap p :call NetrwPreview(NetrwBrowseChgDir(1,NetrwGetWord(),1)) + nnoremap P :call NetrwPrevWinOpen(1) + nnoremap qb :call NetrwBookmarkDir(2,b:netrw_curdir) + nnoremap qf :call NetrwFileInfo(1,NetrwGetWord()) + nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'exe "norm! 0"call NetrwRefresh(1,NetrwBrowseChgDir(1,'./')) + nnoremap s :call NetrwSortStyle(1) nnoremap S :call NetSortSequence(1) - nnoremap t :call NetSplit(4) - nnoremap u :call NetBookmarkDir(4,expand("%")) - nnoremap U :call NetBookmarkDir(5,expand("%")) - nnoremap v :call NetSplit(5) - nnoremap x :call netrw#NetBrowseX(NetBrowseChgDir(1,NetGetWord(),0),0)" + nnoremap t :call NetrwSplit(4) + nnoremap u :call NetrwBookmarkDir(4,expand("%")) + nnoremap U :call NetrwBookmarkDir(5,expand("%")) + nnoremap v :call NetrwSplit(5) + nnoremap x :call netrw#NetrwBrowseX(NetrwBrowseChgDir(1,NetrwGetWord(),0),0)" + if !hasmapto('NetrwHideEdit') + nmap NetrwHideEdit + endif + nnoremap NetrwHideEdit :call NetrwHideEdit(1) + if !hasmapto('NetrwRefresh') + nmap NetrwRefresh + endif + nnoremap NetrwRefresh :call NetrwRefresh(1,NetrwBrowseChgDir(1,'./')) if s:didstarstar || !mapcheck("","n") nnoremap :Nexplore endif if s:didstarstar || !mapcheck("","n") nnoremap :Pexplore endif - exe 'nnoremap :call LocalBrowseRm("'.b:netrw_curdir.'")' - exe 'vnoremap :call LocalBrowseRm("'.b:netrw_curdir.'")' - exe 'nnoremap :call LocalBrowseRm("'.b:netrw_curdir.'")' - exe 'vnoremap :call LocalBrowseRm("'.b:netrw_curdir.'")' - exe 'nnoremap D :call LocalBrowseRm("'.b:netrw_curdir.'")' - exe 'vnoremap D :call LocalBrowseRm("'.b:netrw_curdir.'")' - exe 'nnoremap R :call LocalBrowseRename("'.b:netrw_curdir.'")' - exe 'vnoremap R :call LocalBrowseRename("'.b:netrw_curdir.'")' - exe 'nnoremap m :call NetMakeDir("")' + if g:netrw_mousemaps == 1 + nnoremap :call NetrwLeftmouse(1) + nnoremap :call NetrwPrevWinOpen(1) + nnoremap :call NetrwMarkFile(1,NetrwGetWord()) + exe 'nnoremap :call NetrwLocalRm("'.b:netrw_curdir.'")' + exe 'vnoremap :call NetrwLocalRm("'.b:netrw_curdir.'")' + endif + exe 'nnoremap :call NetrwLocalRm("'.b:netrw_curdir.'")' + exe 'vnoremap :call NetrwLocalRm("'.b:netrw_curdir.'")' + exe 'nnoremap D :call NetrwLocalRm("'.b:netrw_curdir.'")' + exe 'vnoremap D :call NetrwLocalRm("'.b:netrw_curdir.'")' + exe 'nnoremap R :call NetrwLocalRename("'.b:netrw_curdir.'")' + exe 'vnoremap R :call NetrwLocalRename("'.b:netrw_curdir.'")' + exe 'nnoremap m :call NetrwMakeDir("")' nnoremap :he netrw-dir else " remote call s:RemotePathAnalysis(b:netrw_curdir) - nnoremap :call NetBrowse(0,NetBrowseChgDir(0,NetGetWord())) - nnoremap :call NetBrowse(0,NetBrowseChgDir(0,NetGetWord())) - nnoremap :call NetRefresh(0,NetBrowseChgDir(0,'./')) - nnoremap - :exe "norm! 0"call NetBrowse(0,NetBrowseChgDir(0,'../')) - nnoremap a :call NetHide(0) - nnoremap mb :call NetBookmarkDir(0,b:netrw_curdir) - nnoremap gb :call NetBookmarkDir(1,b:netrw_cur) + nnoremap :call NetrwBrowse(0,NetrwBrowseChgDir(0,NetrwGetWord())) + nnoremap :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) + nnoremap - :exe "norm! 0"call NetrwBrowse(0,NetrwBrowseChgDir(0,'../')) + nnoremap a :call NetrwHide(0) + nnoremap mb :call NetrwBookmarkDir(0,b:netrw_curdir) + nnoremap mc :call NetrwMarkFileCopy(0) + nnoremap md :call NetrwMarkFileDiff(0) + nnoremap me :call NetrwMarkFileEdit(0) + nnoremap mf :call NetrwMarkFile(0,NetrwGetWord()) + nnoremap mh :call NetrwMarkHideSfx(0) + nnoremap mm :call NetrwMarkFileMove(0) + nnoremap mp :call NetrwMarkFilePrint(0) + nnoremap mr :call NetrwMarkFileRegexp(0) + nnoremap ms :call NetrwMarkFileSource(0) + nnoremap mT :call NetrwMarkFileTag(0) + nnoremap mt :call NetrwMarkFileTgt(0) + nnoremap mu :call NetrwUnMarkFile(0) + nnoremap mx :call NetrwMarkFileExe(0) + nnoremap mz :call NetrwMarkFileCompress(0) + nnoremap gb :call NetrwBookmarkDir(1,b:netrw_cur) + nnoremap gh :call NetrwHidden(0) nnoremap C :let g:netrw_chgwin= winnr() - nnoremap :call NetHideEdit(0) - nnoremap i :call NetListStyle(0) - nnoremap o :call NetSplit(0) - nnoremap O :call netrw#NetObtain(0) - vnoremap O :call netrw#NetObtain(1) - nnoremap p :call NetPreview(NetBrowseChgDir(1,NetGetWord(),1)) - nnoremap P :call NetPrevWinOpen(0) - nnoremap q :call NetBookmarkDir(2,b:netrw_curdir) - nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'exe "norm! 0"call NetBrowse(0,NetBrowseChgDir(0,'./')) - nnoremap s :call NetSortStyle(0) + nnoremap i :call NetrwListStyle(0) + nnoremap o :call NetrwSplit(0) + nnoremap O :call NetrwObtain(0) + nnoremap p :call NetrwPreview(NetrwBrowseChgDir(1,NetrwGetWord(),1)) + nnoremap P :call NetrwPrevWinOpen(0) + nnoremap qb :call NetrwBookmarkDir(2,b:netrw_curdir) + nnoremap qf :call NetrwFileInfo(0,NetrwGetWord()) + nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'exe "norm! 0"call NetrwBrowse(0,NetrwBrowseChgDir(0,'./')) + nnoremap s :call NetrwSortStyle(0) nnoremap S :call NetSortSequence(0) - nnoremap t :call NetSplit(1) - nnoremap u :call NetBookmarkDir(4,b:netrw_curdir) - nnoremap U :call NetBookmarkDir(5,b:netrw_curdir) - nnoremap v :call NetSplit(2) - nnoremap x :call netrw#NetBrowseX(NetBrowseChgDir(0,NetGetWord()),1) - exe 'nnoremap :call NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")' - exe 'vnoremap :call NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")' - exe 'nnoremap :call NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")' - exe 'vnoremap :call NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")' - exe 'nnoremap d :call NetMakeDir("'.s:user.s:machine.'")' - exe 'nnoremap D :call NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")' - exe 'vnoremap D :call NetBrowseRm("'.s:user.s:machine.'","'.s:path.'")' - exe 'nnoremap R :call NetBrowseRename("'.s:user.s:machine.'","'.s:path.'")' - exe 'vnoremap R :call NetBrowseRename("'.s:user.s:machine.'","'.s:path.'")' + nnoremap t :call NetrwSplit(1) + nnoremap u :call NetrwBookmarkDir(4,b:netrw_curdir) + nnoremap U :call NetrwBookmarkDir(5,b:netrw_curdir) + nnoremap v :call NetrwSplit(2) + nnoremap x :call netrw#NetrwBrowseX(NetrwBrowseChgDir(0,NetrwGetWord()),1) + if !hasmapto('NetrwHideEdit') + nmap NetrwHideEdit + endif + nnoremap NetrwHideEdit :call NetrwHideEdit(0) + if !hasmapto('NetrwRefresh') + nmap NetrwRefresh + endif + nnoremap NetrwRefresh :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) + if g:netrw_mousemaps == 1 + nnoremap :call NetrwLeftmouse(0) + nnoremap :call NetrwPrevWinOpen(0) + nnoremap :call NetrwMarkFile(0,NetrwGetWord()) + exe 'nnoremap :call NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")' + exe 'vnoremap :call NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")' + endif + exe 'nnoremap :call NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")' + exe 'vnoremap :call NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")' + exe 'nnoremap d :call NetrwMakeDir("'.s:user.s:machine.'")' + exe 'nnoremap D :call NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")' + exe 'vnoremap D :call NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")' + exe 'nnoremap R :call NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")' + exe 'vnoremap R :call NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")' nnoremap :he netrw-browse-cmds endif + call s:SetRexDir(a:islocal,b:netrw_curdir) " call Dret("s:BrowserMaps") endfun " --------------------------------------------------------------------- -" s:NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2 -" of the contents of a remote directory. It is assumed that the -" g:netrw_list_cmd has a string, USEPORT HOSTNAME, that needs to be substituted -" with the requested remote hostname first. -fun! s:NetBrowse(islocal,dirname) - if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif -" call Dfunc("NetBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">") -" call Dredir("ls!") - - if exists("s:netrw_skipbrowse") - unlet s:netrw_skipbrowse -" call Dret("NetBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse) - return - endif - - call s:NetOptionSave() - - if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep -" call Decho("handle w:netrw_acdkeep:") -" call Decho("cd ".escape(a:dirname,s:netrw_cd_escape)." (due to 'acd')") - exe 'cd '.escape(a:dirname,s:netrw_cd_escape) -" call Decho("getcwd<".getcwd().">") - - elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"' - " looks like a regular file, attempt transfer -" call Decho("attempt transfer as regular file<".a:dirname.">") - - " remove any filetype indicator from end of dirname, except for the {{{3 - " "this is a directory" indicator (/). - " There shouldn't be one of those here, anyway. - let path= substitute(a:dirname,'[*=@|]\r\=$','','e') -" call Decho("new path<".path.">") - call s:RemotePathAnalysis(a:dirname) - - " remote-read the requested file into current buffer {{{3 - mark ' - call s:NetrwEnew(a:dirname) - let b:netrw_curdir= a:dirname - call s:NetrwSafeOptions() - setlocal ma noro -" call Decho("exe silent! keepalt file ".s:method."://".s:user.s:machine."/".escape(s:path,s:netrw_cd_escape)." (bt=".&bt.")") - exe "silent! keepalt file ".s:method."://".s:user.s:machine."/".escape(s:path,s:netrw_cd_escape) - exe "silent keepalt doau BufReadPre ".s:fname - silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path) - exe "silent keepalt doau BufReadPost ".s:fname - - " save certain window-oriented variables into buffer-oriented variables {{{3 - call s:SetBufWinVars() - call s:NetOptionRestore() - setlocal nomod nowrap - -" call Dret("NetBrowse : file<".s:fname.">") - return - endif - - " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3 - call s:UseBufWinVars() - - " set up some variables {{{3 - let b:netrw_browser_active = 1 - let dirname = a:dirname - let s:last_sort_by = g:netrw_sort_by +" s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 +fun! s:ExplorePatHls(pattern) +" call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") + let repat= substitute(a:pattern,'^**/\{1,2}','','') +" call Decho("repat<".repat.">") + let repat= escape(repat,'][.\') +" call Decho("repat<".repat.">") + let repat= '\<'.substitute(repat,'\*','\\(\\S\\+ \\)*\\S\\+','g').'\>' +" call Dret("s:ExplorePatHls repat<".repat.">") + return repat +endfun - call s:NetMenu(1) " set up menu {{{3 - if s:NetGetBuffer(a:islocal,dirname) " set up buffer {{{3 -" call Dret("NetBrowse : re-using buffer") - return - endif +" --------------------------------------------------------------------- +" s:NetrwBookmarkDir: {{{2 +" 0: (user: ) bookmark current directory +" 1: (user: ) change to the bookmarked directory +" 2: (user: ) list bookmarks +" 3: (browsing) record current directory history +" 4: (user: ) go up (previous) bookmark +" 5: (user: ) go down (next) bookmark +fun! s:NetrwBookmarkDir(chg,curdir) +" call Dfunc("NetrwBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax) - " set b:netrw_curdir to the new directory name {{{3 -" call Decho("set b:netrw_curdir to the new directory name:") - let b:netrw_curdir= dirname - if b:netrw_curdir =~ '[/\\]$' - let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') - endif - if b:netrw_curdir == '' - if has("amiga") - " On the Amiga, the empty string connotes the current directory - let b:netrw_curdir= getcwd() + if a:chg == 0 + " bookmark the current directory +" call Decho("(user: ) bookmark the current directory") + if v:count > 0 + " handle bookmark# specified via the count + let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir + if !exists("g:NETRW_BOOKMARKMAX") + let g:NETRW_BOOKMARKMAX= v:count + elseif v:count > g:NETRW_BOOKMARKMAX + let g:NETRW_BOOKMARKMAX= v:count + endif else - " under unix, when the root directory is encountered, the result - " from the preceding substitute is an empty string. - let b:netrw_curdir= '/' + " handle no count specified + let g:NETRW_BOOKMARKMAX = g:NETRW_BOOKMARKMAX + 1 + let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir endif - endif - if !a:islocal && b:netrw_curdir !~ '/$' - let b:netrw_curdir= b:netrw_curdir.'/' - endif -" call Decho("b:netrw_curdir<".b:netrw_curdir.">") - - " ------------ - " (local only) {{{3 - " ------------ - if a:islocal -" call Decho("local only:") - - " Set up ShellCmdPost handling. Append current buffer to browselist - call s:LocalFastBrowser() + echo "bookmarked the current directory" - " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 - if !g:netrw_keepdir -" call Decho("handle keepdir: (g:netrw_keepdir=".g:netrw_keepdir.")") -" call Decho('exe cd '.escape(b:netrw_curdir,s:netrw_cd_escape)) - try - exe 'cd '.escape(b:netrw_curdir,s:netrw_cd_escape) - catch /^Vim\%((\a\+)\)\=:E472/ - call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",33) - if exists("w:netrw_prvdir") - let b:netrw_curdir= w:netrw_prvdir - else - call s:NetOptionRestore() - let b:netrw_curdir= dirname -" call Dret("NetBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") - return - endif - endtry + elseif a:chg == 1 + " change to the bookmarked directory +" call Decho("(user: ) change to the bookmarked directory") + if exists("g:NETRW_BOOKMARKDIR_{v:count}") + exe "e ".g:NETRW_BOOKMARKDIR_{v:count} + else + echomsg "Sorry, bookmark#".v:count." doesn't exist!" endif - " -------------------------------- - " remote handling: {{{3 - " -------------------------------- + elseif a:chg == 2 +" redraw! + let didwork= 0 + " list user's bookmarks +" call Decho("(user: ) list user's bookmarks") + if exists("g:NETRW_BOOKMARKMAX") +" call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]") + let cnt= 0 + while cnt <= g:NETRW_BOOKMARKMAX + if exists("g:NETRW_BOOKMARKDIR_{cnt}") +" call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}) + echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt} + let didwork= 1 + endif + let cnt= cnt + 1 + endwhile + endif + + " list directory history + let cnt = g:NETRW_DIRHIST_CNT + let first = 1 + let histcnt = 0 + while ( first || cnt != g:NETRW_DIRHIST_CNT ) +" call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT) + let histcnt= histcnt + 1 + if exists("g:NETRW_DIRHIST_{cnt}") +" call Decho("Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}) + echo "Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt} + let didwork= 1 + endif + let first = 0 + let cnt = ( cnt - 1 ) % g:netrw_dirhistmax + if cnt < 0 + let cnt= cnt + g:netrw_dirhistmax + endif + endwhile + if didwork + call inputsave()|call input("Press to continue")|call inputrestore() + endif + + elseif a:chg == 3 + " saves most recently visited directories (when they differ) +" call Decho("(browsing) record curdir history") + if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir + let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax +" let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e') + let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir +" call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") + endif + + elseif a:chg == 4 + " u: change to the previous directory stored on the history list +" call Decho("(user: ) chg to prev dir from history") + let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax + if g:NETRW_DIRHIST_CNT < 0 + let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax + endif + if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}") +" call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") + if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") + setlocal ma noro +" call Decho("setlocal ma noro") + %d + setlocal nomod +" call Decho("setlocal nomod") + endif +" call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) + exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} + else + let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax + echo "Sorry, no predecessor directory exists yet" + endif + + elseif a:chg == 5 + " U: change to the subsequent directory stored on the history list +" call Decho("(user: ) chg to next dir from history") + let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax + if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}") +" call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") + if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") + setlocal ma noro +" call Decho("setlocal ma noro") + %d +" call Decho("removed all lines from buffer (%d)") + setlocal nomod +" call Decho("setlocal nomod") + endif +" call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) + exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} + else + let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax + if g:NETRW_DIRHIST_CNT < 0 + let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax + endif + echo "Sorry, no successor directory exists yet" + endif + endif + call s:NetrwBookmarkMenu() +" call Dret("NetrwBookmarkDir") +endfun + +" --------------------------------------------------------------------- +" s:NetrwBrowse: This function uses the command in g:netrw_list_cmd to provide a {{{2 +" list of the contents of a local or remote directory. It is assumed that the +" g:netrw_list_cmd has a string, USEPORT HOSTNAME, that needs to be substituted +" with the requested remote hostname first. +fun! s:NetrwBrowse(islocal,dirname) + if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif +" call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%").">") +" call Decho("tab#".tabpagenr()." win#".winnr()) +" call Dredir("ls!") + + if exists("s:netrw_skipbrowse") + unlet s:netrw_skipbrowse +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse) + return + endif + + call s:NetrwOptionSave("w:") + call s:NetrwSafeOptions() + + " re-instate any marked files + if exists("s:netrwmarkfilelist_{bufnr('%')}") +" call Decho("clearing marked files") + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" + endif + + if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep +" call Decho("handle w:netrw_acdkeep:") +" call Decho("lcd ".escape(a:dirname,g:netrw_cd_escape)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")") + exe 'lcd '.escape(a:dirname,g:netrw_cd_escape) +" call Decho("getcwd<".getcwd().">") + + elseif !a:islocal && a:dirname !~ '[\/]$' && a:dirname !~ '^"' + " looks like a regular file, attempt transfer +" call Decho("attempt transfer as regular file<".a:dirname.">") + + " remove any filetype indicator from end of dirname, except for the {{{3 + " "this is a directory" indicator (/). + " There shouldn't be one of those here, anyway. + let path= substitute(a:dirname,'[*=@|]\r\=$','','e') +" call Decho("new path<".path.">") + call s:RemotePathAnalysis(a:dirname) + + " remote-read the requested file into current buffer {{{3 + mark ' + call s:NetrwEnew(a:dirname) + setlocal ma noro +" call Decho("setlocal ma noro") + let b:netrw_curdir= a:dirname +" call Decho("exe silent! keepalt file ".s:method."://".s:user.s:machine."/".escape(s:path,g:netrw_cd_escape)." (bt=".&bt.")") + exe "silent! keepalt file ".s:method."://".s:user.s:machine."/".escape(s:path,g:netrw_cd_escape) + exe "silent keepalt doau BufReadPre ".s:fname + silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path) + if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz' + " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error + exe "silent keepalt doau BufReadPost ".s:fname + endif + + " save certain window-oriented variables into buffer-oriented variables {{{3 + call s:SetBufWinVars() + call s:NetrwOptionRestore("w:") + setlocal ma nomod + +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwBrowse : file<".s:fname.">") + return + endif + + " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3 + call s:UseBufWinVars() + + " set up some variables {{{3 + let b:netrw_browser_active = 1 + let dirname = a:dirname + let s:last_sort_by = g:netrw_sort_by + + " set up menu {{{3 + call s:NetrwMenu(1) + + " set up buffer {{{3 + let reusing= s:NetrwGetBuffer(a:islocal,dirname) + " maintain markfile highlighting + if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" +" call Decho("bufnr(%)=".bufnr('%')) +" call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/") + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" + else +" call Decho("2match none") + 2match none + endif + if reusing + call s:NetrwOptionRestore("w:") + setlocal noma nomod nowrap +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwBrowse : re-using buffer") + return + endif + + " set b:netrw_curdir to the new directory name {{{3 +" call Decho("set b:netrw_curdir to the new directory name:") + let b:netrw_curdir= dirname + if b:netrw_curdir =~ '[/\\]$' + let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') + endif + if b:netrw_curdir == '' + if has("amiga") + " On the Amiga, the empty string connotes the current directory + let b:netrw_curdir= getcwd() + else + " under unix, when the root directory is encountered, the result + " from the preceding substitute is an empty string. + let b:netrw_curdir= '/' + endif + endif + if !a:islocal && b:netrw_curdir !~ '/$' + let b:netrw_curdir= b:netrw_curdir.'/' + endif +" call Decho("b:netrw_curdir<".b:netrw_curdir.">") + + " ------------ + " (local only) {{{3 + " ------------ + if a:islocal +" call Decho("local only:") + + " Set up ShellCmdPost handling. Append current buffer to browselist + call s:LocalFastBrowser() + + " handle g:netrw_keepdir: set vim's current directory to netrw's notion of the current directory {{{3 + if !g:netrw_keepdir +" call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd) +" call Decho('exe cd '.escape(b:netrw_curdir,g:netrw_cd_escape)) + try + exe 'lcd '.escape(b:netrw_curdir,g:netrw_cd_escape) + catch /^Vim\%((\a\+)\)\=:E472/ + call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".b:netrw_curdir."> (permissions?)",33) + if exists("w:netrw_prvdir") + let b:netrw_curdir= w:netrw_prvdir + else + call s:NetrwOptionRestore("w:") + setlocal noma nomod nowrap + let b:netrw_curdir= dirname +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") + return + endif + endtry + endif + + " -------------------------------- + " remote handling: {{{3 + " -------------------------------- else " call Decho("remote only:") " analyze a:dirname and g:netrw_list_cmd {{{4 " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist")."> a:dirname<".a:dirname.">") - if a:dirname == "NetrwTreeListing" + if a:dirname =~ "^NetrwTreeListing\>" let dirname= b:netrw_curdir -" call Decho("(dirname was NetrwTreeListing) dirname<".dirname.">") +" call Decho("(dirname was ".a:dirname.") dirname<".dirname.">") elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") let dirname= substitute(b:netrw_curdir,'\\','/','g') if dirname !~ '/$' @@ -1812,8 +2125,10 @@ fun! s:NetBrowse(islocal,dirname) if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) endif - call s:NetOptionRestore() -" call Dret("NetBrowse : badly formatted dirname<".dirname.">") + call s:NetrwOptionRestore("w:") + setlocal noma nomod nowrap +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">") return endif let b:netrw_curdir= dirname @@ -1823,47 +2138,105 @@ fun! s:NetBrowse(islocal,dirname) " ----------------------- " Directory Listing: {{{3 " ----------------------- - setlocal noro ma call s:BrowserMaps(a:islocal) call s:PerformListing(a:islocal) -" call Dret("NetBrowse") +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) +" call Dret("s:NetrwBrowse : did PerformListing") return endfun " --------------------------------------------------------------------- -" s:NetGetBuffer: {{{2 +" s:NetrwFileInfo: supports qf (query for file information) {{{2 +fun! s:NetrwFileInfo(islocal,fname) +" call Dfunc("s:NetrwFileInfo(islocal=".a:islocal." fname<".a:fname.">)") + if a:islocal + if (has("unix") || has("macunix")) && executable("/bin/ls") + echo system("/bin/ls -lsad ".a:fname) + else + " use vim functions to return information about file below cursor + if !isdirectory(a:fname) && !filereadable(a:fname) && a:fname =~ '[*@/]' + let fname= substitute(a:fname,".$","","") + else + let fname= a:fname + endif + let t = getftime(fname) + let sz = getfsize(fname) + echo a:fname.": ".sz." ".strftime(g:netrw_timefmt,getftime(fname)) +" call Decho(fname.": ".sz." ".strftime(g:netrw_timefmt,getftime(fname))) + endif + else + echo "sorry, \"qf\" not supported yet for remote files" + endif +" call Dret("s:NetrwFileInfo") +endfun + +" --------------------------------------------------------------------- +" s:NetrwGetBuffer: {{{2 " returns 0=cleared buffer " 1=re-used buffer -fun! s:NetGetBuffer(islocal,dirname) -" call Dfunc("s:NetGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">)") +fun! s:NetrwGetBuffer(islocal,dirname) +" call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) + let dirname= a:dirname " re-use buffer if possible {{{3 +" call Decho("--re-use a buffer if possible--") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST " find NetrwTreeList buffer if there is one - let dirname= "NetrwTreeListing" - let bufnum = bufnr('\') - if bufnum != -1 -" call Dret("s:NetGetBuffer : bufnum#".bufnum."") + if exists("w:netrw_treebufnr") && w:netrw_treebufnr > 0 +" call Decho(" re-use w:netrw_treebufnr=".w:netrw_treebufnr) + let eikeep= &ei + set ei=all + exe "b ".w:netrw_treebufnr + let &ei= eikeep +" call Dret("s:NetrwGetBuffer : bufnum#".bufnum."") return endif + let bufnum= -1 +" call Decho(" liststyle=TREE but w:netrw_treebufnr doesn't exist") else " find buffer number of buffer named precisely the same as dirname {{{3 +" call Decho("--find buffer numnber of buffer named precisely the same as dirname--") " call Dredir("ls!") - let dirname= a:dirname -" call Decho("find buffer<".dirname.">'s number ") - let bufnum= bufnr(escape(dirname,'\')) -" call Decho("findbuf1: bufnum=bufnr('".escape(dirname,'\')."')=".bufnum." (initial)") - let ibuf= 1 - if bufnum > 0 && bufname(bufnum) != dirname + + " get dirname and associated buffer number + let bufnum = bufnr(escape(dirname,'\')) +" call Decho(" find buffer<".dirname.">'s number ") +" call Decho(" bufnr(dirname<".escape(dirname,'\').">)=".bufnum) + + if bufnum < 0 && dirname !~ '/$' + " trying appending a trailing / +" call Decho(" try appending a trailing / to dirname<".dirname.">") + let bufnum= bufnr(escape(dirname.'/','\')) + if bufnum > 0 + let dirname= dirname.'/' + endif + endif + + if bufnum < 0 && dirname =~ '/$' + " trying removing a trailing / +" call Decho(" try removing a trailing / from dirname<".dirname.">") + let bufnum= bufnr(escape(substitute(dirname,'/$','',''),'\')) + if bufnum > 0 + let dirname= substitute(dirname,'/$','','') + endif + endif + +" call Decho(" findbuf1: bufnum=bufnr('".dirname."')=".bufnum." bufname(".bufnum.")<".bufname(bufnum)."> (initial)") + " note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/ and abc/ matches) + if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.' + " handle approximate matches +" call Decho(" handling approx match: bufnum#%d<".bufname(bufnum)."> approx= dirname<".dirname.">") + let ibuf = 1 let buflast = bufnr("$") -" call Decho("findbuf2: buflast=".buflast) +" call Decho(" findbuf2: buflast=".buflast) while ibuf <= buflast - let bname= bufname(ibuf) -" call Decho("findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">") - if bname != '' && bname !~ '/' && dirname =~ '/'.bname.'$' | break | endif - if bname =~ '^'.dirname.'\=$' | break | endif + let bname= substitute(bufname(ibuf),'\\','/','g') +" call Decho(" findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">") + if bname != '' && bname !~ '/' && dirname =~ '/'.bname.'/\=$' | break | endif + if bname =~ '^'.dirname.'/\=$' | break | endif + if dirname =~ '^'.bname.'/$' | break | endif let ibuf= ibuf + 1 endwhile if ibuf > buflast @@ -1871,54 +2244,71 @@ fun! s:NetGetBuffer(islocal,dirname) else let bufnum= ibuf endif -" call Decho("findbuf4: bufnum=".bufnum) +" call Decho(" findbuf4: bufnum=".bufnum." (ibuf=".ibuf." buflast=".buflast.")") endif endif " get enew buffer and name it -or- re-use buffer {{{3 +" call Decho("--get enew buffer and name it OR re-use buffer-- (bufnum=".bufnum.")") mark ' if bufnum < 0 || !bufexists(bufnum) -" call Decho("get enew buffer") call s:NetrwEnew(dirname) - call s:NetrwSafeOptions() +" call Decho(" got enew buffer#".bufnr("%")." (altbuf<".expand("#").">)") " name the buffer if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST -" call Decho('silent! keepalt file NetrwTreeListing') - silent! keepalt file NetrwTreeListing + " Got enew buffer; transform into a NetrwTreeListing +" call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --") + if !exists("s:netrw_treelistnum") + let s:netrw_treelistnum= 1 + else + let s:netrw_treelistnum= s:netrw_treelistnum + 1 + endif + let w:netrw_treebufnr= bufnr("%") +" call Decho(" exe silent! keepalt file NetrwTreeListing ".s:netrw_treelistnum) + exe 'silent! keepalt file NetrwTreeListing\ '.s:netrw_treelistnum + nnoremap [ :silent call TreeListMove('[') + nnoremap ] :silent call TreeListMove(']') + nnoremap [[ :silent call TreeListMove('[') + nnoremap ]] :silent call TreeListMove(']') +" call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr) else -" call Decho('exe silent! keepalt file '.escape(dirname,s:netrw_cd_escape)) " let v:errmsg= "" " Decho - let escdirname= escape(dirname,s:netrw_cd_escape) + let escdirname= escape(dirname,g:netrw_cd_escape) +" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") +" call Decho(' exe silent! keepalt file '.escdirname) exe 'silent! keepalt file '.escdirname -" call Decho("errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") +" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">") endif -" call Decho("named enew buffer#".bufnr("%")."<".bufname("%").">") +" call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">") else " Re-use the buffer - -" call Decho("re-use buffer:") +" call Decho("--re-use buffer#".bufnum.": --") let eikeep= &ei set ei=all if getline(2) =~ '^" Netrw Directory Listing' -" call Decho("re-use buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: keepalt b ".bufnum) +" call Decho(" re-use buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: keepalt b ".bufnum) exe "keepalt b ".bufnum else -" call Decho("reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: b ".bufnum) +" call Decho(" reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using: b ".bufnum) exe "b ".bufnum endif + if bufname("%") == '.' + exe "silent! keepalt file ".escape(getcwd(),' ') + endif let &ei= eikeep if line("$") <= 1 call s:NetrwListSettings(a:islocal) -" call Dret("s:NetGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it") +" call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it") return 0 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST -" call Decho("clear buffer<".expand("%")."> with :%d") +" call Decho("--re-use tree listing--") +" call Decho(" clear buffer<".expand("%")."> with :%d") silent %d call s:NetrwListSettings(a:islocal) -" call Dret("s:NetGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") +" call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh") return 0 else -" call Dret("s:NetGetBuffer 1 : buf#".bufnr("%")) +" call Dret("s:NetrwGetBuffer 1 : buf#".bufnr("%")) return 1 endif endif @@ -1928,254 +2318,324 @@ fun! s:NetGetBuffer(islocal,dirname) " slow 0 D D Deleting a buffer implies it will not be re-used (slow) " med 1 D H " fast 2 H H +" call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--") let fname= expand("%") call s:NetrwListSettings(a:islocal) - exe "file ".escape(fname,' ') + exe "keepalt file ".escape(fname,' ') " delete all lines from buffer {{{3 -" call Decho("clear buffer<".expand("%")."> with :%d") +" call Decho("--delete all lines from buffer--") +" call Decho(" clear buffer<".expand("%")."> with :%d") keepalt silent! %d -" call Dret("s:NetGetBuffer 0 : buf#".bufnr("%")) +" call Dret("s:NetrwGetBuffer 0 : buf#".bufnr("%")) return 0 endfun " --------------------------------------------------------------------- -" s:NetrwListSettings: {{{2 -fun! s:NetrwListSettings(islocal) -" call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") - let fname= bufname("%") - setlocal bt=nofile nobl ma nonu nowrap noro - exe "file ".escape(fname,' ') - if g:netrw_use_noswf - setlocal noswf +" s:NetrwGetcwd: get the current directory. {{{2 +" Change backslashes to forward slashes, if any. +" If doesc is true, escape certain troublesome characters +fun! s:NetrwGetcwd(doesc) +" call Dfunc("NetrwGetcwd(doesc=".a:doesc.")") + let curdir= substitute(getcwd(),'\\','/','ge') + if curdir !~ '[\/]$' + let curdir= curdir.'/' endif -" call Dredir("ls!") -" call Decho("exe setlocal ts=".g:netrw_maxfilenamelen) - exe "setlocal ts=".g:netrw_maxfilenamelen - if g:netrw_fastbrowse > a:islocal - setlocal bh=hide - else - setlocal bh=delete + if a:doesc + let curdir= escape(curdir,g:netrw_cd_escape) endif -" call Dret("s:NetrwListSettings") +" call Dret("NetrwGetcwd <".curdir.">") + return curdir endfun " --------------------------------------------------------------------- -" s:PerformListing: {{{2 -fun! s:PerformListing(islocal) -" call Dfunc("s:PerformListing(islocal=".a:islocal.") buf(%)=".bufnr("%")."<".bufname("%").">") - -" if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho -" call Decho("(netrw) Processing your browsing request...") -" endif " Decho - -" call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a')) - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") - " force a refresh for tree listings -" call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d") - setlocal ma noro - keepjumps %d - endif +" s:NetrwGetWord: it gets the directory named under the cursor {{{2 +fun! s:NetrwGetWord() +" call Dfunc("s:NetrwGetWord() line#".line(".")." liststyle=".g:netrw_liststyle." virtcol=".virtcol(".")) + call s:UseBufWinVars() - " save current directory on directory history list - call s:NetBookmarkDir(3,b:netrw_curdir) - - " Set up the banner {{{3 -" call Decho("set up banner") - keepjumps put ='\" ============================================================================' - keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')' - keepjumps put ='\" '.b:netrw_curdir - keepjumps 1d - let w:netrw_bannercnt= 3 - exe w:netrw_bannercnt - - let sortby= g:netrw_sort_by - if g:netrw_sort_direction =~ "^r" - let sortby= sortby." reversed" - endif - - " Sorted by... {{{3 -" call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">") - if g:netrw_sort_by =~ "^n" -" call Decho("directories will be sorted by name") - " sorted by name - keepjumps put ='\" Sorted by '.sortby - keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence - let w:netrw_bannercnt= w:netrw_bannercnt + 2 - else -" call Decho("directories will be sorted by size or time") - " sorted by size or date - keepjumps put ='\" Sorted by '.sortby - let w:netrw_bannercnt= w:netrw_bannercnt + 1 - endif - exe w:netrw_bannercnt - - " Hiding... -or- Showing... {{{3 -" call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)") - if g:netrw_list_hide != "" && g:netrw_hide - if g:netrw_hide == 1 - keepjumps put ='\" Hiding: '.g:netrw_list_hide + " insure that w:netrw_liststyle is set up + if !exists("w:netrw_liststyle") + if exists("g:netrw_liststyle") + let w:netrw_liststyle= g:netrw_liststyle else - keepjumps put ='\" Showing: '.g:netrw_list_hide + let w:netrw_liststyle= s:THINLIST endif - let w:netrw_bannercnt= w:netrw_bannercnt + 1 +" call Decho("w:netrw_liststyle=".w:netrw_liststyle) endif - exe w:netrw_bannercnt - keepjumps put ='\" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec' - keepjumps put ='\" ============================================================================' - let w:netrw_bannercnt= w:netrw_bannercnt + 2 - " bannercnt should index the line just after the banner - let w:netrw_bannercnt= w:netrw_bannercnt + 1 - exe w:netrw_bannercnt -" call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$")) + if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt + " Active Banner support +" call Decho("active banner handling") + norm! 0 + let dirname= "./" + let curline= getline(".") - " set up syntax highlighting {{{3 -" call Decho("set up syntax highlighting") - if has("syntax") - setlocal ft=netrw - if !exists("g:syntax_on") || !g:syntax_on - setlocal ft= - endif - endif + if curline =~ '"\s*Sorted by\s' + norm s + let s:netrw_skipbrowse= 1 + echo 'Pressing "s" also works' - " get list of files - if a:islocal - call s:LocalListing() - else " remote - call s:RemoteListing() - endif -" call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)") + elseif curline =~ '"\s*Sort sequence:' + let s:netrw_skipbrowse= 1 + echo 'Press "S" to edit sorting sequence' - " manipulate the directory listing (hide, sort) {{{3 - if line("$") >= w:netrw_bannercnt -" call Decho("manipulate directory listing (hide)") -" call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") - if g:netrw_hide && g:netrw_list_hide != "" - call s:NetListHide() + elseif curline =~ '"\s*Quick Help:' + norm ? + let s:netrw_skipbrowse= 1 + echo 'Pressing "?" also works' + + elseif curline =~ '"\s*\%(Hiding\|Showing\):' + norm a + let s:netrw_skipbrowse= 1 + echo 'Pressing "a" also works' + + elseif line("$") > w:netrw_bannercnt + exe 'silent keepjumps '.w:netrw_bannercnt endif - if line("$") >= w:netrw_bannercnt -" call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">") - if g:netrw_sort_by =~ "^n" - " sort by name - call s:SetSort() + elseif w:netrw_liststyle == s:THINLIST +" call Decho("thin column handling") + norm! 0 + let dirname= getline(".") - if w:netrw_bannercnt < line("$") -" call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")") - if g:netrw_sort_direction =~ 'n' - " normal direction sorting - exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' - else - " reverse direction sorting - exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' - endif - endif - " remove priority pattern prefix -" call Decho("remove priority pattern prefix") - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e' + elseif w:netrw_liststyle == s:LONGLIST +" call Decho("long column handling") + norm! 0 + let dirname= substitute(getline("."),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e') - elseif a:islocal - if w:netrw_bannercnt < line("$") -" call Decho("g:netrw_sort_direction=".g:netrw_sort_direction) - if g:netrw_sort_direction =~ 'n' -" call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort') - exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' - else -" call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!') - exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' - endif - endif - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' - endif + elseif w:netrw_liststyle == s:TREELIST +" call Decho("treelist handling") + let dirname= substitute(getline("."),'^\(| \)*','','e') - elseif g:netrw_sort_direction =~ 'r' -" call Decho('reverse the sorted listing') - exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt - endif - endif + else +" call Decho("obtain word from wide listing") + let dirname= getline(".") - " convert to wide/tree listing {{{3 -" call Decho("modify display if wide/tree listing style") - call s:NetWideListing() - call s:NetTreeListing(b:netrw_curdir) + if !exists("b:netrw_cpf") + let b:netrw_cpf= 0 + exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' +" call Decho("computed cpf") + endif - if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt - " place cursor on the top-left corner of the file listing -" call Decho("place cursor on top-left corner of file listing") - exe 'silent '.w:netrw_bannercnt - norm! 0 +" call Decho("buf#".bufnr("%")."<".bufname("%").">") + let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf +" call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt) +" call Decho("1: dirname<".dirname.">") + if filestart > 0|let dirname= substitute(dirname,'^.\{'.filestart.'}','','')|endif +" call Decho("2: dirname<".dirname.">") + let dirname = substitute(dirname,'^\(.\{'.b:netrw_cpf.'}\).*$','\1','e') +" call Decho("3: dirname<".dirname.">") + let dirname = substitute(dirname,'\s\+$','','e') +" call Decho("4: dirname<".dirname.">") endif - " record previous current directory - let w:netrw_prvdir= b:netrw_curdir -" call Decho("record netrw_prvdir<".w:netrw_prvdir.">") + " symlinks are indicated by a trailing "@". Remove it before further processing. + let dirname= substitute(dirname,"@$","","") - " save certain window-oriented variables into buffer-oriented variables {{{3 - call s:SetBufWinVars() - call s:NetOptionRestore() + " executables are indicated by a trailing "*". Remove it before further processing. + let dirname= substitute(dirname,"\*$","","") - " set display to netrw display settings -" call Decho("set display to netrw display settings (noma nomod etc)") - setlocal noma nomod nonu nobl nowrap ro - if exists("s:treecurpos") - call setpos('.',s:treecurpos) - unlet s:treecurpos - endif +" call Dret("s:NetrwGetWord <".dirname.">") + return dirname +endfun -" call Dret("s:PerformListing : curpos<".string(getpos(".")).">") +" --------------------------------------------------------------------- +" s:NetrwListSettings: {{{2 +fun! s:NetrwListSettings(islocal) +" call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") + let fname= bufname("%") + setlocal bt=nofile nobl ma nonu nowrap noro +" call Decho("setlocal bt=nofile nobl ma nonu nowrap noro") + exe "keepalt file ".escape(fname,' ') + if g:netrw_use_noswf + setlocal noswf + endif +" call Dredir("ls!") +" call Decho("exe setlocal ts=".g:netrw_maxfilenamelen) + exe "setlocal ts=".g:netrw_maxfilenamelen + setlocal isk+=.,~,- + if g:netrw_fastbrowse > a:islocal + setlocal bh=hide + else + setlocal bh=delete + endif +" call Dret("s:NetrwListSettings") endfun " --------------------------------------------------------------------- -" s:NetBrowseChgDir: constructs a new directory based on the current {{{2 -" directory and a new directory name -fun! s:NetBrowseChgDir(islocal,newdir,...) -" call Dfunc("s:NetBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">") +" s:NetrwListStyle: {{{2 +" islocal=0: remote browsing +" =1: local browsing +fun! s:NetrwListStyle(islocal) +" call Dfunc("NetrwListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) + let fname = s:NetrwGetWord() + if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif + let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST +" call Decho("fname<".fname.">") +" call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle) +" call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">") - if !exists("b:netrw_curdir") -" call Decho("(NetBrowseChgDir) b:netrw_curdir doesn't exist!") - echoerr "(NetBrowseChgDir) b:netrw_curdir doesn't exist!" -" call Dret("s:NetBrowseChgDir") - return - endif + if w:netrw_liststyle == s:THINLIST + " use one column listing +" call Decho("use one column list") + let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') - call netrw#NetSavePosn() - let nbcd_curpos = getpos('.') - let dirname = substitute(b:netrw_curdir,'\\','/','ge') - let newdir = a:newdir + elseif w:netrw_liststyle == s:LONGLIST + " use long list +" call Decho("use long list") + let g:netrw_list_cmd = g:netrw_list_cmd." -l" + + elseif w:netrw_liststyle == s:WIDELIST + " give wide list +" call Decho("use wide list") + let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') + + elseif w:netrw_liststyle == s:TREELIST +" call Decho("use tree list") + let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') - " set up o/s-dependent directory recognition pattern - if has("amiga") - let dirpat= '[\/:]$' else - let dirpat= '[\/]$' + call netrw#ErrorMsg(s:WARNING,"bad value for g:netrw_liststyle (=".w:netrw_liststyle.")",46) + let g:netrw_liststyle = s:THINLIST + let w:netrw_liststyle = g:netrw_liststyle + let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') endif -" call Decho("dirname<".dirname."> dirpat<".dirpat.">") + setlocal ma noro +" call Decho("setlocal ma noro") - if dirname !~ dirpat - " apparently vim is "recognizing" that it is in a directory and - " is removing the trailing "/". Bad idea, so I have to put it back. - let dirname= dirname.'/' -" call Decho("adjusting dirname<".dirname.">") + " clear buffer - this will cause NetrwBrowse/LocalBrowseCheck to do a refresh +" call Decho("clear buffer<".expand("%")."> with :%d") + %d + + " refresh the listing + let svpos= netrw#NetrwSavePosn() + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + + " keep cursor on the filename + silent keepjumps $ + let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') +" call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A')) + if result <= 0 && exists("w:netrw_bannercnt") + exe "keepjumps ".w:netrw_bannercnt endif - if newdir !~ dirpat - " handling a file -" call Decho('case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">") - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)' - let dirname= s:NetTreeDir().newdir -" call Decho("tree listing") - elseif newdir =~ '^\(/\|\a:\)' - let dirname= newdir - else - let dirname= s:ComposePath(dirname,newdir) - endif +" call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : "")) +endfun + +" --------------------------------------------------------------------- +" s:NetrwBookmarkMenu: Uses menu priorities {{{2 +" .2.[cnt] for bookmarks, and +" .3.[cnt] for history +" (see s:NetrwMenu()) +fun! s:NetrwBookmarkMenu() + if !exists("s:netrw_menucnt") + return + endif +" call Dfunc("NetrwBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt) + + " the following test assures that gvim is running, has menus available, and has menus enabled. + if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu + if exists("g:NetrwTopLvlMenu") + exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark' + endif + + " show bookmarked places + let cnt = 0 + while cnt <= g:NETRW_BOOKMARKMAX + if exists("g:NETRW_BOOKMARKDIR_{cnt}") + let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'.') +" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.' :e '.g:NETRW_BOOKMARKDIR_{cnt}) + exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.' :e '.g:NETRW_BOOKMARKDIR_{cnt}."\" + endif + let cnt= cnt + 1 + endwhile + + " show directory browsing history + let cnt = g:NETRW_DIRHIST_CNT + let first = 1 + let histcnt = 0 + while ( first || cnt != g:NETRW_DIRHIST_CNT ) + let histcnt = histcnt + 1 + let priority = g:NETRW_DIRHIST_CNT + histcnt + if exists("g:NETRW_DIRHIST_{cnt}") + let bmdir= escape(g:NETRW_DIRHIST_{cnt},'.') +" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.g:NETRW_DIRHIST_{cnt}) + exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.g:NETRW_DIRHIST_{cnt}."\" + endif + let first = 0 + let cnt = ( cnt - 1 ) % g:netrw_dirhistmax + if cnt < 0 + let cnt= cnt + g:netrw_dirhistmax + endif + endwhile + endif +" call Dret("NetrwBookmarkMenu") +endfun + +" --------------------------------------------------------------------- +" s:NetrwBrowseChgDir: constructs a new directory based on the current {{{2 +" directory and a new directory name. Also, if the +" "new directory name" is actually a file, +" NetrwBrowseChgDir() edits the file. +fun! s:NetrwBrowseChgDir(islocal,newdir,...) +" call Dfunc("s:NetrwBrowseChgDir(islocal=".a:islocal."> newdir<".a:newdir.">) a:0=".a:0." curpos<".string(getpos("."))."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "").">") + + if !exists("b:netrw_curdir") +" call Decho("(NetrwBrowseChgDir) b:netrw_curdir doesn't exist!") + echoerr "(NetrwBrowseChgDir) b:netrw_curdir doesn't exist!" +" call Dret("s:NetrwBrowseChgDir") + return + endif + + call s:NetrwOptionSave("s:") + call s:NetrwSafeOptions() + let nbcd_curpos = netrw#NetrwSavePosn() + let dirname = substitute(b:netrw_curdir,'\\','/','ge') + let newdir = a:newdir + let dolockout = 0 + + " set up o/s-dependent directory recognition pattern + if has("amiga") + let dirpat= '[\/:]$' + else + let dirpat= '[\/]$' + endif +" call Decho("dirname<".dirname."> dirpat<".dirpat.">") + + if dirname !~ dirpat + " apparently vim is "recognizing" that it is in a directory and + " is removing the trailing "/". Bad idea, so I put it back. + let dirname= dirname.'/' +" call Decho("adjusting dirname<".dirname.">") + endif + + if newdir !~ dirpat + " ------------ + " edit a file: + " ------------ +" call Decho('case "handling a file": newdir<'.newdir.'> !~ dirpat<'.dirpat.">") + if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)' + let dirname= s:NetrwTreeDir() + if dirname =~ '/$' + let dirname= dirname.newdir + else + let dirname= s:NetrwTreeDir()."/".newdir + endif +" call Decho("tree listing") + elseif newdir =~ '^\(/\|\a:\)' + let dirname= newdir + else + let dirname= s:ComposePath(dirname,newdir) + endif " call Decho("handling a file: dirname<".dirname."> (a:0=".a:0.")") - " this lets NetBrowseX avoid the edit + " this lets NetrwBrowseX avoid the edit if a:0 < 1 -" call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape."> browse_split=".g:netrw_browse_split) -" call Decho("about to edit<".escape(dirname,s:netrw_cd_escape)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist")) +" call Decho("dirname<".dirname."> netrw_cd_escape<".g:netrw_cd_escape."> browse_split=".g:netrw_browse_split) +" call Decho("set up windows for editing<".escape(dirname,g:netrw_cd_escape)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist")) + call s:NetrwOptionRestore("s:") if !exists("s:didsplit") if g:netrw_browse_split == 1 new @@ -2185,42 +2645,60 @@ fun! s:NetBrowseChgDir(islocal,newdir,...) wincmd | elseif g:netrw_browse_split == 3 tabnew + elseif g:netrw_browse_split == 4 + if s:NetrwPrevWinOpen(2) == 3 +" call Dret("s:NetrwBrowseChgDir") + return + endif else " handling a file, didn't split, so remove menu " call Decho("handling a file+didn't split, so remove menu") - call s:NetMenu(0) + call s:NetrwMenu(0) " optional change to window - if g:netrw_chgwin >= 1 + if g:netrw_chgwin >= 1 exe g:netrw_chgwin."wincmd w" endif endif endif - " edit the file - " its local only: LocalBrowseCheck() doesn't edit a file, but NetBrowse() will + " the point where netrw actually edits the (local) file + " if its local only: LocalBrowseCheck() doesn't edit a file, but NetrwBrowse() will if a:islocal -" call Decho("edit file: exe e! ".escape(dirname,s:netrw_cd_escape)) - exe "e! ".escape(dirname,s:netrw_cd_escape) +" call Decho("edit local file: exe e! ".escape(dirname,g:netrw_cd_escape)) + exe "e! ".escape(dirname,g:netrw_cd_escape) + let dolockout= 1 + else +" call Decho("remote file: NetrwBrowse will edit it") + let dolockout= 1 endif - setlocal ma nomod noro endif elseif newdir =~ '^/' + " --------------------------------- " just go to the new directory spec + " --------------------------------- " call Decho('case "just go to new directory spec": newdir<'.newdir.'>') let dirname= newdir + call s:SetRexDir(a:islocal,dirname) + call s:NetrwOptionRestore("s:") elseif newdir == './' + " -------------------------- " refresh the directory list + " -------------------------- " call Decho('case "refresh directory listing": newdir == "./"') + call s:SetRexDir(a:islocal,dirname) elseif newdir == '../' + " ------------------- " go up one directory + " ------------------- " call Decho('case "go up one directory": newdir == "../"') if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") " force a refresh " call Decho("clear buffer<".expand("%")."> with :%d") setlocal noro ma +" call Decho("setlocal noro ma") keepjumps %d endif @@ -2248,16 +2726,18 @@ fun! s:NetBrowseChgDir(islocal,newdir,...) endif " call Decho("unix: dirname<".dirname."> (go up one dir)") endif + call s:SetRexDir(a:islocal,dirname) - elseif w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") + elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") " call Decho('case liststyle is TREELIST and w:netrw_treedict exists') - " force a refresh (for TREELIST, wait for NetTreeDir() to force the refresh) + " force a refresh (for TREELIST, wait for NetrwTreeDir() to force the refresh) setlocal noro ma +" call Decho("setlocal noro ma") if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")) " call Decho("clear buffer<".expand("%")."> with :%d") keepjumps %d endif - let treedir = s:NetTreeDir() + let treedir = s:NetrwTreeDir() let s:treecurpos = nbcd_curpos let haskey= 0 " call Decho("w:netrw_treedict<".string(w:netrw_treedict).">") @@ -2304,772 +2784,665 @@ fun! s:NetBrowseChgDir(islocal,newdir,...) let dirname= substitute(treedir,'/*$','/','') " call Decho("go down one dir: treedir<".treedir.">") endif + call s:SetRexDir(a:islocal,dirname) else " go down one directory let dirname= s:ComposePath(dirname,newdir) " call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">") + call s:SetRexDir(a:islocal,dirname) + endif + + call s:NetrwOptionRestore("s:") + if dolockout +" call Decho("doing modification lockout settings: ma nomod noro") + setlocal ma nomod noro +" call Decho("setlocal ma nomod noro") endif -" call Dret("s:NetBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") +" call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") return dirname endfun " --------------------------------------------------------------------- -" s:NetHide: this function is invoked by the "a" map for browsing {{{2 -" and switches the hiding mode -fun! s:NetHide(islocal) -" call Dfunc("NetHide(islocal=".a:islocal.")") - let g:netrw_hide=(g:netrw_hide+1)%3 - exe "norm! 0" - if g:netrw_hide && g:netrw_list_hide == "" - call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49) -" call Dret("NetHide") - return - endif - call netrw#NetSavePosn() - call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./')) -" call Dret("NetHide") -endfun +" s:NetrwBrowseX: allows users to write custom functions to operate on {{{2 +" files given their extension. Passes 0=local, 1=remote +fun! netrw#NetrwBrowseX(fname,remote) +" call Dfunc("NetrwBrowseX(fname<".a:fname."> remote=".a:remote.")") -" --------------------------------------------------------------------- + " set up the filename + " (lower case the extension, make a local copy of a remote file) + let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') + if has("win32") || has("win95") || has("win64") || has("win16") + let exten= substitute(exten,'^.*$','\L&\E','') + endif + let fname= escape(a:fname,"%#") +" call Decho("fname<".fname."> after escape()") -" =========================================== -" s:NetPreview: {{{2 -fun! s:NetPreview(path) range -" call Dfunc("NetPreview(path<".a:path.">)") - if has("quickfix") - if !isdirectory(a:path) - exe "pedit ".escape(a:path,g:netrw_fname_escape) - elseif !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) + " seems kde systems often have gnome-open due to dependencies, even though + " gnome-open's subsidiary display tools are largely absent. Kde systems + " usually have "kdeinit" running, though... (tnx Mikolaj Machowski) + if !exists("s:haskdeinit") + if has("unix") + let s:haskdeinit= s:System("system",'ps -e') =~ 'kdeinit' + if v:shell_error + let s:haskdeinit = 0 + endif + else + let s:haskdeinit= 0 endif - elseif !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) +" call Decho("setting s:haskdeinit=".s:haskdeinit) endif -" call Dret("NetPreview") -endfun -" --------------------------------------------------------------------- -" s:NetSortStyle: change sorting style (name - time - size) and refresh display {{{2 -fun! s:NetSortStyle(islocal) -" call Dfunc("s:NetSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">") - call s:NetSaveWordPosn() + if a:remote == 1 + " create a local copy + let fname= fnamemodify(tempname(),":r").".".exten +" call Decho("a:remote=".a:remote.": create a local copy of <".a:fname."> as <".fname.">") + exe "silent keepjumps bot 1new ".a:fname + setlocal bh=delete +" call Decho("read <".fname.">, now writing: exe w! ".fname) + exe "silent! w! ".fname + q + endif +" call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten)) - let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name' - norm! 0 - call netrw#NetSavePosn() - call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./')) + " set up redirection + if &srr =~ "%s" + if (has("win32") || has("win95") || has("win64") || has("win16")) + let redir= substitute(&srr,"%s","nul","") + else + let redir= substitute(&srr,"%s","/dev/null","") + endif + elseif (has("win32") || has("win95") || has("win64") || has("win16")) + let redir= &srr . "nul" + else + let redir= &srr . "/dev/null" + endif +" call Decho("redir{".redir."} srr{".&srr."}") -" call Dret("s:NetSortStyle : netrw_sort_by<".g:netrw_sort_by.">") -endfun + " extract any viewing options. Assumes that they're set apart by quotes. + if exists("g:netrw_browsex_viewer") + if g:netrw_browsex_viewer =~ '\s' + let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') + let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " + let oviewer = '' + let cnt = 1 + while !executable(viewer) && viewer != oviewer + let viewer = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\1','') + let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." " + let cnt = cnt + 1 + let oviewer = viewer +" call Decho("!exe: viewer<".viewer."> viewopt<".viewopt.">") + endwhile + else + let viewer = g:netrw_browsex_viewer + let viewopt = "" + endif +" call Decho("viewer<".viewer."> viewopt<".viewopt.">") + endif -" --------------------------------------------------------------------- -" Remote Directory Browsing Support: {{{1 -" =========================================== + " execute the file handler + if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' +" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") + let ret= netrwFileHandlers#Invoke(exten,fname) -" --------------------------------------------------------------------- -" s:RemoteListing: {{{2 -fun! s:RemoteListing() -" call Dfunc("s:RemoteListing() b:netrw_curdir<".b:netrw_curdir.">)") + elseif exists("g:netrw_browsex_viewer") && executable(viewer) +" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") +" call Decho("exe silent !".viewer." ".viewopt.g:netrw_shq.escape(fname,'%#').g:netrw_shq.redir) + exe "silent !".viewer." ".viewopt.g:netrw_shq.escape(fname,'%#').g:netrw_shq.redir + let ret= v:shell_error - call s:RemotePathAnalysis(b:netrw_curdir) + elseif has("win32") || has("win64") +" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.g:netrw_shq.escape(fname, '%#').g:netrw_shq) + exe 'silent !start rundll32 url.dll,FileProtocolHandler '.g:netrw_shq.escape(fname, '%#').g:netrw_shq + call inputsave()|call input("Press to continue")|call inputrestore() + let ret= v:shell_error - " sanity check: - if exists("b:netrw_method") && b:netrw_method =~ '[235]' -" call Decho("b:netrw_method=".b:netrw_method) - if !executable("ftp") - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18) - endif - call s:NetOptionRestore() -" call Dret("s:RemoteListing") - return - endif + elseif has("unix") && executable("gnome-open") && !s:haskdeinit +" call Decho("exe silent !gnome-open ".g:netrw_shq.escape(fname,'%#').g:netrw_shq." ".redir) + exe "silent !gnome-open ".g:netrw_shq.escape(fname,'%#').g:netrw_shq.redir + let ret= v:shell_error - elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' - if !exists("g:netrw_quiet") - if g:netrw_list_cmd == "" - call netrw#ErrorMsg(s:ERROR,g:netrw_ssh_cmd." is not executable on your system",47) - else - call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19) - endif - endif + elseif has("unix") && executable("kfmclient") && s:haskdeinit +" call Decho("exe silent !kfmclient exec ".g:netrw_shq.escape(fname,'%#').g:netrw_shq." ".redir) + exe "silent !kfmclient exec ".g:netrw_shq.escape(fname,'%#').g:netrw_shq." ".redir + let ret= v:shell_error - call s:NetOptionRestore() -" call Dret("s:RemoteListing") - return - endif " (remote handling sanity check) + elseif has("macunix") && executable("open") +" call Decho("exe silent !open '".escape(fname,'%#')."' ".redir) + exe silent !open '".escape(fname,'%#')."' ".redir + let ret= v:shell_error - if exists("b:netrw_method") -" call Decho("setting w:netrw_method<".b:netrw_method.">") - let w:netrw_method= b:netrw_method + else + " netrwFileHandlers#Invoke() always returns 0 + let ret= netrwFileHandlers#Invoke(exten,fname) endif - if s:method == "ftp" - " use ftp to get remote file listing -" call Decho("use ftp to get remote file listing") - let s:method = "ftp" - let listcmd = g:netrw_ftp_list_cmd - if g:netrw_sort_by =~ '^t' - let listcmd= g:netrw_ftp_timelist_cmd - elseif g:netrw_sort_by =~ '^s' - let listcmd= g:netrw_ftp_sizelist_cmd - endif -" call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)") - call s:NetBrowseFtpCmd(s:path,listcmd) -" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))' - - if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST - " shorten the listing -" call Decho("generate short listing") - exe "keepjumps ".w:netrw_bannercnt + " if unsuccessful, attempt netrwFileHandlers#Invoke() + if ret + let ret= netrwFileHandlers#Invoke(exten,fname) + endif - " cleanup - if g:netrw_ftp_browse_reject != "" - exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d" - endif - silent! keepjumps %s/\r$//e +" redraw! - " if there's no ../ listed, then put ./ and ../ in - let line1= line(".") - exe "keepjumps ".w:netrw_bannercnt - let line2= search('^\.\.\/\%(\s\|$\)','cnW') - if line2 == 0 -" call Decho("netrw is putting ./ and ../ into listing") - keepjumps put='../' - keepjumps put='./' - endif - exe "keepjumps ".line1 - keepjumps norm! 0 + " cleanup: remove temporary file, + " delete current buffer if success with handler, + " return to prior buffer (directory listing) + " Feb 12, 2008: had to de-activiate removal of + " temporary file because it wasn't getting seen. +" if a:remote == 1 && fname != a:fname +" call Decho("deleting temporary file<".fname.">") +" call s:System("delete",fname) +" endif -" call Decho("line1=".line1." line2=".line2." line(.)=".line(".")) - if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup -" call Decho("M$ ftp cleanup") - exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(\|\d\+\)\s\+//' - else " normal ftp cleanup -" call Decho("normal ftp cleanup") - exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' - exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' - exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' - endif + if a:remote == 1 + setlocal bh=delete bt=nofile + if g:netrw_use_noswf + setlocal noswf endif + exe "norm! \" +" redraw! + endif - else - " use ssh to get remote file listing {{{3 -" call Decho("use ssh to get remote file listing: s:netrw_shq<".g:netrw_shq."> s:path<".s:path."> s:netrw_cd_escape<".s:netrw_cd_escape.">") - let listcmd= s:MakeSshCmd(g:netrw_list_cmd) -" call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)") - if g:netrw_scp_cmd =~ '^pscp' -" call Decho("1: exe silent r! ".listcmd.g:netrw_shq.s:path.g:netrw_shq) - exe "silent r! ".listcmd.g:netrw_shq.s:path.g:netrw_shq - " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like - g/^Listing directory/d - g/^d[-rwx][-rwx][-rwx]/s+$+/+e - silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e - if g:netrw_liststyle != s:LONGLIST - g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e - endif - else - if s:path == "" -" call Decho("2: exe silent r! ".listcmd) - exe "silent r! ".listcmd - else -" call Decho("3: exe silent r! ".listcmd." ".g:netrw_shq.s:path.g:netrw_shq) - exe "silent r! ".listcmd." ".g:netrw_shq.s:path.g:netrw_shq - endif - endif - - " cleanup - if g:netrw_ftp_browse_reject != "" -" call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d") - exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" - endif - endif - - if w:netrw_liststyle == s:LONGLIST - " do a long listing; these substitutions need to be done prior to sorting {{{3 -" call Decho("fix long listing:") - - if s:method == "ftp" - " cleanup - exe "keepjumps ".w:netrw_bannercnt - while getline(".") =~ g:netrw_ftp_browse_reject - keepjumps d - endwhile - " if there's no ../ listed, then put ./ and ../ in - let line1= line(".") - keepjumps 1 - silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') - let line2= line(".") - if line2 == 0 - exe 'keepjumps '.w:netrw_bannercnt."put='./'" - if b:netrw_curdir != '/' - exe 'keepjumps '.w:netrw_bannercnt."put='../'" - endif - endif - exe "keepjumps ".line1 - keepjumps norm! 0 - endif - - if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup -" call Decho("M$ ftp site listing cleanup") - exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/' - elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") -" call Decho("normal ftp site listing cleanup: bannercnt=".w:netrw_bannercnt." line($)=".line("$")) - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e' - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' - exe 'silent keepjumps '.w:netrw_bannercnt - endif - endif - -" if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho -" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))' -" endif " Decho -" call Dret("s:RemoteListing") +" call Dret("NetrwBrowseX") endfun " --------------------------------------------------------------------- -" NetGetWord: it gets the directory named under the cursor {{{2 -fun! s:NetGetWord() -" call Dfunc("NetGetWord() line#".line(".")." liststyle=".g:netrw_liststyle." virtcol=".virtcol(".")) - call s:UseBufWinVars() - - " insure that w:netrw_liststyle is set up - if !exists("w:netrw_liststyle") - if exists("g:netrw_liststyle") - let w:netrw_liststyle= g:netrw_liststyle - else - let w:netrw_liststyle= s:THINLIST - endif -" call Decho("w:netrw_liststyle=".w:netrw_liststyle) +" netrw#Explore: launch the local browser in the directory of the current file {{{2 +" dosplit==0: the window will be split iff the current file has +" been modified +" dosplit==1: the window will be split before running the local +" browser +fun! netrw#Explore(indx,dosplit,style,...) +" call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0) + if !exists("b:netrw_curdir") + let b:netrw_curdir= getcwd() +" call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)") endif + let curfile= b:netrw_curdir +" call Decho("curfile<".curfile.">") - if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt - " Active Banner support -" call Decho("active banner handling") - norm! 0 - let dirname= "./" - let curline= getline(".") - - if curline =~ '"\s*Sorted by\s' - norm s - let s:netrw_skipbrowse= 1 - echo 'Pressing "s" also works' - - elseif curline =~ '"\s*Sort sequence:' - let s:netrw_skipbrowse= 1 - echo 'Press "S" to edit sorting sequence' + " save registers + silent! let keepregstar = @* + silent! let keepregplus = @+ + silent! let keepregslash= @/ - elseif curline =~ '"\s*Quick Help:' - norm ? - let s:netrw_skipbrowse= 1 - echo 'Pressing "?" also works' + " if dosplit or file has been modified + if a:dosplit || &modified || a:style == 6 +" call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style) + call s:SaveWinVars() - elseif curline =~ '"\s*\%(Hiding\|Showing\):' - norm a - let s:netrw_skipbrowse= 1 - echo 'Pressing "a" also works' + if a:style == 0 " Explore, Sexplore +" call Decho("style=0: Explore or Sexplore") + exe g:netrw_winsize."wincmd s" - elseif line("$") > w:netrw_bannercnt - exe 'silent keepjumps '.w:netrw_bannercnt - endif + elseif a:style == 1 "Explore!, Sexplore! +" call Decho("style=1: Explore! or Sexplore!") + exe g:netrw_winsize."wincmd v" - elseif w:netrw_liststyle == s:THINLIST -" call Decho("thin column handling") - norm! 0 - let dirname= getline(".") + elseif a:style == 2 " Hexplore +" call Decho("style=2: Hexplore") + exe "bel ".g:netrw_winsize."wincmd s" - elseif w:netrw_liststyle == s:LONGLIST -" call Decho("long column handling") - norm! 0 - let dirname= substitute(getline("."),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e') + elseif a:style == 3 " Hexplore! +" call Decho("style=3: Hexplore!") + exe "abo ".g:netrw_winsize."wincmd s" - elseif w:netrw_liststyle == s:TREELIST -" call Decho("treelist handling") - let dirname= substitute(getline("."),'^\(| \)*','','e') + elseif a:style == 4 " Vexplore +" call Decho("style=4: Vexplore") + exe "lefta ".g:netrw_winsize."wincmd v" - else -" call Decho("obtain word from wide listing") - let dirname= getline(".") + elseif a:style == 5 " Vexplore! +" call Decho("style=5: Vexplore!") + exe "rightb ".g:netrw_winsize."wincmd v" - if !exists("b:netrw_cpf") - let b:netrw_cpf= 0 - exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' -" call Decho("computed cpf") + elseif a:style == 6 " Texplore + call s:SaveBufVars() +" call Decho("style = 6: Texplore") + tabnew + call s:RestoreBufVars() endif - -" call Decho("buf#".bufnr("%")."<".bufname("%").">") - let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf -" call Decho("filestart= ([virtcol=".virtcol(".")."]/[b:netrw_cpf=".b:netrw_cpf."])*b:netrw_cpf=".filestart." bannercnt=".w:netrw_bannercnt) -" call Decho("1: dirname<".dirname.">") - if filestart > 0|let dirname= substitute(dirname,'^.\{'.filestart.'}','','')|endif -" call Decho("2: dirname<".dirname.">") - let dirname = substitute(dirname,'^\(.\{'.b:netrw_cpf.'}\).*$','\1','e') -" call Decho("3: dirname<".dirname.">") - let dirname = substitute(dirname,'\s\+$','','e') -" call Decho("4: dirname<".dirname.">") + call s:RestoreWinVars() endif + norm! 0 -" call Dret("NetGetWord <".dirname.">") - return dirname -endfun - -" --------------------------------------------------------------------- -" NetBrowseRm: remove/delete a remote file or directory {{{2 -fun! s:NetBrowseRm(usrhost,path) range -" call Dfunc("NetBrowseRm(usrhost<".a:usrhost."> path<".a:path.">) virtcol=".virtcol(".")) -" call Decho("firstline=".a:firstline." lastline=".a:lastline) - - " preparation for removing multiple files/directories - let ctr= a:firstline - let all= 0 - - " remove multiple files and directories - while ctr <= a:lastline - exe ctr - - let rmfile= s:NetGetWord() -" call Decho("rmfile<".rmfile.">") - - if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') - " attempt to remove file -" call Decho("attempt to remove file") - if !all - echohl Statement - call inputsave() - let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") - call inputrestore() - echohl NONE - if ok == "" - let ok="no" - endif - let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') - if ok =~ 'a\%[ll]' - let all= 1 - endif - endif - - if all || ok =~ 'y\%[es]' || ok == "" - if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) - silent! keepjumps .,$d - call s:NetBrowseFtpCmd(a:path,"delete ".rmfile) - else - let netrw_rm_cmd= s:MakeSshCmd(g:netrw_rm_cmd) -" call Decho("attempt to remove file: system(".netrw_rm_cmd.")") - let ret= s:System("system",netrw_rm_cmd) -" call Decho("returned=".ret." errcode=".v:shell_error) - endif - elseif ok =~ 'q\%[uit]' - break + if a:0 > 0 +" call Decho("case [a:0=".a:0."]>0: a:1<".a:1.">") + if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)) + let dirname= substitute(a:1,'\~',expand("$HOME"),'') +" call Decho("using dirname<".dirname."> (case: ~ && unix||cygwin)") + elseif a:1 == '.' + let dirname= exists("b:netrw_curdir")? b:netrw_curdir : getcwd() + if dirname !~ '/$' + let dirname= dirname."/" endif - +" call Decho("using dirname<".dirname."> (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")") + elseif a:1 =~ '\$' + let dirname= expand(a:1) else - " attempt to remove directory -" call Decho("attempt to remove directory") - if !all - call inputsave() - let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") - call inputrestore() - if ok == "" - let ok="no" - endif - let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') - if ok =~ 'a\%[ll]' - let all= 1 - endif - endif - - if all || ok =~ 'y\%[es]' || ok == "" - if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) - call s:NetBrowseFtpCmd(a:path,"rmdir ".rmfile) - else - let rmfile = substitute(a:path.rmfile,'/$','','') - let netrw_rmdir_cmd = s:MakeSshCmd(g:netrw_rmdir_cmd).' '.rmfile -" call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")") - let ret= s:System("system",netrw_rmdir_cmd) -" call Decho("returned=".ret." errcode=".v:shell_error) - - if v:shell_error != 0 -" call Decho("v:shell_error not 0") - let netrw_rmf_cmd= s:MakeSshCmd(g:netrw_rmf_cmd).' '.substitute(rmfile,'[\/]$','','e') -" call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") - let ret= s:System("system",netrw_rmf_cmd) -" call Decho("returned=".ret." errcode=".v:shell_error) - - if v:shell_error != 0 && !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22) - endif - endif - endif - - elseif ok =~ 'q\%[uit]' - break - endif + let dirname= a:1 +" call Decho("using dirname<".dirname.">") endif + else + " clear explore +" call Decho("clearing explore variables") + 2match none + if exists("s:explore_match") |unlet s:explore_match |endif + if exists("s:explore_indx") |unlet s:explore_indx |endif + if exists("s:dirstarstar") |unlet s:dirstarstar |endif + if exists("s:dirstarstar") |unlet s:dirstarstar |endif + if exists("w:netrw_explore_indx") |unlet w:netrw_explore_indx |endif + if exists("w:netrw_explore_listlen")|unlet w:netrw_explore_listlen|endif + if exists("w:netrw_explore_list") |unlet w:netrw_explore_list |endif + if exists("w:netrw_explore_bufnr") |unlet w:netrw_explore_bufnr |endif +" redraw! + echo " " + echo " " +" call Dret("netrw#Explore : cleared list") + return + endif - let ctr= ctr + 1 - endwhile - - " refresh the (remote) directory listing -" call Decho("refresh remote directory listing") - call netrw#NetSavePosn() - call s:NetRefresh(0,s:NetBrowseChgDir(0,'./')) - -" call Dret("NetBrowseRm") -endfun - -" --------------------------------------------------------------------- -" NetBrowseRename: rename a remote file or directory {{{2 -fun! s:NetBrowseRename(usrhost,path) range -" call Dfunc("NetBrowseRename(usrhost<".a:usrhost."> path<".a:path.">)") - - " preparation for removing multiple files/directories - let ctr = a:firstline - let rename_cmd = s:MakeSshCmd(g:netrw_rename_cmd) - - " attempt to rename files/directories - while ctr <= a:lastline - exe "keepjumps ".ctr + if dirname =~ '/\*\*/' + " handle .../**/.../filepat +" call Decho("case Explore .../**/.../filepat") + let prefixdir= substitute(dirname,'^\(.\{-}\)\*\*.*$','\1','') + if prefixdir =~ '^/' || (prefixdir =~ '^\a:/' && (has("win32") || has("win95") || has("win64") || has("win16"))) + let b:netrw_curdir = prefixdir + else + let b:netrw_curdir= getcwd().'/'.prefixdir + endif + let dirname= substitute(dirname,'^.\{-}\(\*\*/.*\)$','\1','') + let starpat= 4; +" call Decho("pwd<".getcwd()."> dirname<".dirname.">") +" call Decho("case Explore ../**/../filepat (starpat=".starpat.")") + + elseif dirname =~ '^\*//' + " starpat=1: Explore *//pattern (current directory only search for files containing pattern) +" call Decho("case Explore *//pattern") + let pattern= substitute(dirname,'^\*//\(.*\)$','\1','') + let starpat= 1 +" call Decho("Explore *//pat: (starpat=".starpat.") dirname<".dirname."> -> pattern<".pattern.">") + if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif - norm! 0 - let oldname= s:NetGetWord() -" call Decho("oldname<".oldname.">") + elseif dirname =~ '^\*\*//' + " starpat=2: Explore **//pattern (recursive descent search for files containing pattern) +" call Decho("case Explore **//pattern") + let pattern= substitute(dirname,'^\*\*//','','') + let starpat= 2 +" call Decho("Explore **//pat: (starpat=".starpat.") dirname<".dirname."> -> pattern<".pattern.">") + + elseif dirname =~ '^\*/' + " starpat=3: Explore */filepat (search in current directory for filenames matching filepat) + let starpat= 3 +" call Decho("case Explore */filepat (starpat=".starpat.")") + + elseif dirname=~ '^\*\*/' + " starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat) + let starpat= 4 +" call Decho("case Explore **/filepat (starpat=".starpat.")") + else + let starpat= 0 + endif - call inputsave() - let newname= input("Moving ".oldname." to : ",oldname) - call inputrestore() + if starpat == 0 && a:indx >= 0 + " [Explore Hexplore Vexplore Sexplore] [dirname] +" call Decho("case dirname<".dirname."> a:indx=".a:indx.": Explore Hexplore Vexplore Sexplore") + if dirname == "" + let dirname= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') + endif + if dirname =~ '^scp:' || dirname =~ '^ftp:' +" call Decho("calling NetrwBrowse(0,dirname<".dirname.">)") + call s:NetrwBrowse(0,dirname) + else + if dirname == ""|let dirname= getcwd()|endif +" call Decho("calling LocalBrowseCheck(dirname<".dirname.">)") + call netrw#LocalBrowseCheck(dirname) + endif - if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) - call s:NetBrowseFtpCmd(a:path,"rename ".oldname." ".newname) +" call Decho("curfile<".curfile.">") + if has("win32") || has("win95") || has("win64") || has("win16") + call search('\<'.substitute(curfile,'^.*[/\\]','','e').'\>','cW') else - let oldname= a:path.oldname - let newname= a:path.newname -" call Decho("system(rename_cmd".' "'.escape(oldname," ").'" "'.escape(newname,s:netrw_cd_escape).'"') - let ret= s:System("system",rename_cmd.' "'.escape(oldname,s:netrw_cd_escape).'" "'.escape(newname,s:netrw_cd_escape).'"') + call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW') endif - let ctr= ctr + 1 - endwhile + " starpat=1: Explore *//pattern (current directory only search for files containing pattern) + " starpat=2: Explore **//pattern (recursive descent search for files containing pattern) + " starpat=3: Explore */filepat (search in current directory for filenames matching filepat) + " starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat) + elseif a:indx <= 0 + " Nexplore, Pexplore, Explore: handle starpat +" call Decho("case Nexplore, Pexplore, , : starpat=".starpat." a:indx=".a:indx) + if !mapcheck("","n") && !mapcheck("","n") && exists("b:netrw_curdir") +" call Decho("set up and maps") + let s:didstarstar= 1 + nnoremap :Pexplore + nnoremap :Nexplore + endif - " refresh the directory - let curline= line(".") - call s:NetBrowse(0,s:NetBrowseChgDir(0,'./')) - exe "keepjumps ".curline -" call Dret("NetBrowseRename") -endfun + if has("path_extra") +" call Decho("starpat=".starpat.": has +path_extra") + if !exists("w:netrw_explore_indx") + let w:netrw_explore_indx= 0 + endif + let indx = a:indx +" call Decho("starpat=".starpat.": set indx= [a:indx=".indx."]") +" + if indx == -1 + " Nexplore +" call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")") + if !exists("w:netrw_explore_list") " sanity check + call netrw#ErrorMsg(s:WARNING,"using Nexplore or improperly; see help for netrw-starstar",40) + silent! let @* = keepregstar + silent! let @+ = keepregstar + silent! let @/ = keepregslash +" call Dret("netrw#Explore") + return + endif + let indx= w:netrw_explore_indx + if indx < 0 | let indx= 0 | endif + if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif + let curfile= w:netrw_explore_list[indx] +" call Decho("indx=".indx." curfile<".curfile.">") + while indx < w:netrw_explore_listlen && curfile == w:netrw_explore_list[indx] + let indx= indx + 1 +" call Decho("indx=".indx." (Nexplore while loop)") + endwhile + if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif +" call Decho("Nexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx) -" --------------------------------------------------------------------- -" NetRefresh: {{{2 -fun! s:NetRefresh(islocal,dirname) -" call Dfunc("NetRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") hide=".g:netrw_hide." sortdir=".g:netrw_sort_direction) - " at the current time (Mar 19, 2007) all calls to NetRefresh() call NetBrowseChgDir() first. - " NetBrowseChgDir() may clear the display; hence a NetSavePosn() may not work if its placed here. - " Also, NetBrowseChgDir() now does a NetSavePosn() itself. - setlocal ma noro -" call Decho("clear buffer<".expand("%")."> with :%d") - %d - if a:islocal - call netrw#LocalBrowseCheck(a:dirname) - else - call s:NetBrowse(a:islocal,a:dirname) - endif - call netrw#NetRestorePosn() - redraw! -" call Dret("NetRefresh") -endfun + elseif indx == -2 + " Pexplore +" call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")") + if !exists("w:netrw_explore_list") " sanity check + call netrw#ErrorMsg(s:WARNING,"using Pexplore or improperly; see help for netrw-starstar",41) + silent! let @* = keepregstar + silent! let @+ = keepregstar + silent! let @/ = keepregslash +" call Dret("netrw#Explore") + return + endif + let indx= w:netrw_explore_indx + if indx < 0 | let indx= 0 | endif + if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif + let curfile= w:netrw_explore_list[indx] +" call Decho("indx=".indx." curfile<".curfile.">") + while indx >= 0 && curfile == w:netrw_explore_list[indx] + let indx= indx - 1 +" call Decho("indx=".indx." (Pexplore while loop)") + endwhile + if indx < 0 | let indx= 0 | endif +" call Decho("Pexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx) -" --------------------------------------------------------------------- -" NetSplit: mode {{{2 -" =0 : net and o -" =1 : net and t -" =2 : net and v -" =3 : local and o -" =4 : local and t -" =5 : local and v -fun! s:NetSplit(mode) -" call Dfunc("NetSplit(mode=".a:mode.") alto=".g:netrw_alto." altv=".g:netrw_altv) + else + " Explore -- initialize + " build list of files to Explore with Nexplore/Pexplore +" call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")") + let w:netrw_explore_indx= 0 + if !exists("b:netrw_curdir") + let b:netrw_curdir= getcwd() + endif +" call Decho("starpat=".starpat.": b:netrw_curdir<".b:netrw_curdir.">") + + " switch on starpat to build the w:netrw_explore_list of files + if starpat == 1 + " starpat=1: Explore *//pattern (current directory only search for files containing pattern) +" call Decho("starpat=".starpat.": build *//pattern list") + exe "vimgrep /".pattern."/gj ".b:netrw_curdir."/*" + let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)') + if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif + + elseif starpat == 2 + " starpat=2: Explore **//pattern (recursive descent search for files containing pattern) +" call Decho("starpat=".starpat.": build **//pattern list") + try + exe "silent vimgrep /".pattern."/gj "."**/*" + catch /^Vim\%((\a\+)\)\=:E480/ + call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) + if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif + silent! let @* = keepregstar + silent! let @+ = keepregstar + silent! let @/ = keepregslash +" call Dret("netrw#Explore : no files matched pattern") + return + endtry + let s:netrw_curdir = b:netrw_curdir + let w:netrw_explore_list = getqflist() + let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)') + + elseif starpat == 3 + " starpat=3: Explore */filepat (search in current directory for filenames matching filepat) +" call Decho("starpat=".starpat.": build */filepat list") + let dirname = substitute(dirname,'^\*/','','') + let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n') + if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif - call s:SaveWinVars() + elseif starpat == 4 + " starpat=4: Explore **/filepat (recursive descent search for filenames matching filepat) +" call Decho("starpat=".starpat.": build **/filepat list") + let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n') + if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif + endif " switch on starpat to build w:netrw_explore_list - if a:mode == 0 - " remote and o - exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" - let s:didsplit= 1 - call s:RestoreWinVars() - call s:NetBrowse(0,s:NetBrowseChgDir(0,s:NetGetWord())) - unlet s:didsplit + let w:netrw_explore_listlen = len(w:netrw_explore_list) +" call Decho("w:netrw_explore_list<".string(w:netrw_explore_list).">") +" call Decho("w:netrw_explore_listlen=".w:netrw_explore_listlen) - elseif a:mode == 1 - " remote and t - let cursorword = s:NetGetWord() - tabnew - let s:didsplit= 1 - call s:RestoreWinVars() - call s:NetBrowse(0,s:NetBrowseChgDir(0,cursorword)) - unlet s:didsplit + if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') + call netrw#ErrorMsg(s:WARNING,"no files matched",42) + silent! let @* = keepregstar + silent! let @+ = keepregstar + silent! let @/ = keepregslash +" call Dret("netrw#Explore : no files matched") + return + endif + endif " if indx ... endif - elseif a:mode == 2 - " remote and v - exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" - let s:didsplit= 1 - call s:RestoreWinVars() - call s:NetBrowse(0,s:NetBrowseChgDir(0,s:NetGetWord())) - unlet s:didsplit + " NetrwStatusLine support - for exploring support + let w:netrw_explore_indx= indx +" call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen) - elseif a:mode == 3 - " local and o - exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" - let s:didsplit= 1 - call s:RestoreWinVars() - call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,s:NetGetWord())) - unlet s:didsplit + " wrap the indx around, but issue a note + if indx >= w:netrw_explore_listlen || indx < 0 +" call Decho("wrap indx (indx=".indx." listlen=".w:netrw_explore_listlen.")") + let indx = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0 + let w:netrw_explore_indx= indx + call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43) + sleep 1 + endif - elseif a:mode == 4 - " local and t - let netrw_curdir= b:netrw_curdir - let cursorword = s:NetGetWord() - tabnew - let b:netrw_curdir= netrw_curdir - let s:didsplit= 1 - call s:RestoreWinVars() - call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,cursorword)) - unlet s:didsplit + exe "let dirfile= w:netrw_explore_list[".indx."]" +" call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">") + let newdir= substitute(dirfile,'/[^/]*$','','e') +" call Decho("newdir<".newdir.">") - elseif a:mode == 5 - " local and v - exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" - let s:didsplit= 1 - call s:RestoreWinVars() - call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,s:NetGetWord())) - unlet s:didsplit +" call Decho("calling LocalBrowseCheck(newdir<".newdir.">)") + call netrw#LocalBrowseCheck(newdir) + if !exists("w:netrw_liststyle") + let w:netrw_liststyle= g:netrw_liststyle + endif + if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST + call search('^'.substitute(dirfile,"^.*/","","").'\>',"W") + else + call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w") + endif + let w:netrw_explore_mtchcnt = indx + 1 + let w:netrw_explore_bufnr = bufnr("%") + let w:netrw_explore_line = line(".") + call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}') +" call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line) + + else +" call Decho("your vim does not have +path_extra") + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) + endif + silent! let @* = keepregstar + silent! let @+ = keepregstar + silent! let @/ = keepregslash +" call Dret("netrw#Explore : missing +path_extra") + return + endif + + else +" call Decho("case Explore newdir<".dirname.">") + if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/' + silent! unlet w:netrw_treedict + silent! unlet w:netrw_treetop + endif + let newdir= dirname + if !exists("b:netrw_curdir") + call netrw#LocalBrowseCheck(getcwd()) + else + call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir)) + endif + endif + " visual display of **/ **// */ Exploration files + if exists("w:netrw_explore_indx") && exists("b:netrw_curdir") + if !exists("s:explore_prvdir") || s:explore_prvdir != b:netrw_curdir + " only update match list if current directory isn't the same as before + let s:explore_prvdir = b:netrw_curdir + let s:explore_match = "" + let dirlen = strlen(b:netrw_curdir) + if b:netrw_curdir !~ '/$' + let dirlen= dirlen + 1 + endif + let prvfname= "" + for fname in w:netrw_explore_list +" call Decho("fname<".fname.">") + if fname =~ '^'.b:netrw_curdir + if s:explore_match == "" + let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + else + let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + endif + elseif fname !~ '^/' && fname != prvfname + if s:explore_match == "" + let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + else + let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + endif + endif + let prvfname= fname + endfor +" call Decho("explore_match<".s:explore_match.">") + exe "2match netrwMarkFile /".s:explore_match."/" + endif + echo "==Pexplore ==Nexplore" else - call netrw#ErrorMsg(s:ERROR,"(NetSplit) unsupported mode=".a:mode,45) + 2match none + if exists("s:explore_match") | unlet s:explore_match | endif + if exists("s:explore_prvdir") | unlet s:explore_prvdir | endif + echo " " +" call Decho("cleared explore match list") endif -" call Dret("NetSplit") + silent! let @* = keepregstar + silent! let @+ = keepregstar + silent! let @/ = keepregslash +" call Dret("netrw#Explore : @/<".@/.">") endfun " --------------------------------------------------------------------- -" NetBrowseX: allows users to write custom functions to operate on {{{2 -" files given their extension. Passes 0=local, 1=remote -fun! netrw#NetBrowseX(fname,remote) -" call Dfunc("NetBrowseX(fname<".a:fname."> remote=".a:remote.")") +" s:NetrwHide: this function is invoked by the "a" map for browsing {{{2 +" and switches the hiding mode. The actual hiding is done by +" s:NetrwListHide(). +" g:netrw_hide= 0: show all +" 1: show not-hidden files +" 2: show hidden files only +fun! s:NetrwHide(islocal) +" call Dfunc("NetrwHide(islocal=".a:islocal.") g:netrw_hide=".g:netrw_hide) + let svpos= netrw#NetrwSavePosn() + + if exists("s:netrwmarkfilelist_{bufnr('%')}") +" call Decho(((g:netrw_hide == 1)? "unhide" : "hide")." files in markfilelist<".string(s:netrwmarkfilelist_{bufnr("%")}).">") +" call Decho("g:netrw_list_hide<".g:netrw_list_hide.">") + + " hide the files in the markfile list + for fname in s:netrwmarkfilelist_{bufnr("%")} +" call Decho("match(g:netrw_list_hide<".g:netrw_list_hide.'> fname<\<'.fname.'\>>)='.match(g:netrw_list_hide,'\<'.fname.'\>')." isk=".&isk) + if match(g:netrw_list_hide,'\<'.fname.'\>') != -1 + " remove fname from hiding list + let g:netrw_list_hide= substitute(g:netrw_list_hide,'..\<'.escape(fname,g:netrw_fname_escape).'\>..','','') + let g:netrw_list_hide= substitute(g:netrw_list_hide,',,',',','g') + let g:netrw_list_hide= substitute(g:netrw_list_hide,'^,\|,$','','') +" call Decho("unhide: g:netrw_list_hide<".g:netrw_list_hide.">") + else + " append fname to hiding list + if exists("g:netrw_list_hide") && g:netrw_list_hide != "" + let g:netrw_list_hide= g:netrw_list_hide.',\<'.escape(fname,g:netrw_fname_escape).'\>' + else + let g:netrw_list_hide= '\<'.escape(fname,g:netrw_fname_escape).'\>' + endif +" call Decho("hide: g:netrw_list_hide<".g:netrw_list_hide.">") + endif + endfor + unlet s:netrwmarkfilelist_{bufnr("%")} + unlet s:netrwmarkfilemtch_{bufnr("%")} + 2match none + let g:netrw_hide= 1 - " set up the filename - " (lower case the extension, make a local copy of a remote file) - let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') - if has("win32") || has("win95") || has("win64") || has("win16") - let exten= substitute(exten,'^.*$','\L&\E','') - endif - let fname= escape(a:fname,"%#") -" call Decho("fname<".fname."> after escape()") + else - " seems kde systems often have gnome-open due to dependencies, even though - " gnome-open's subsidiary display tools are largely absent. Kde systems - " usually have "kdeinit" running, though... (tnx Mikolaj Machowski) - if !exists("s:haskdeinit") - if has("unix") - let s:haskdeinit= s:System("system",'ps -e') =~ 'kdeinit' - if v:shell_error - let s:haskdeinit = 0 - endif - else - let s:haskdeinit= 0 + " switch between show-all/show-not-hidden/show-hidden + let g:netrw_hide=(g:netrw_hide+1)%3 + exe "norm! 0" + if g:netrw_hide && g:netrw_list_hide == "" + call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49) +" call Dret("NetrwHide") + return endif -" call Decho("setting s:haskdeinit=".s:haskdeinit) endif - if a:remote == 1 - " create a local copy - let fname= fnamemodify(tempname(),":t:r").".".exten -" call Decho("a:remote=".a:remote.": create a local copy of <".a:fname."> as <".fname.">") - exe "silent keepjumps bot 1new ".a:fname - setlocal bh=delete -" call Decho("exe w! ".fname) - exe "w! ".fname - q - endif -" call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten)) + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) +" call Dret("NetrwHide") +endfun - " set up redirection - if &srr =~ "%s" - let redir= substitute(&srr,"%s","/dev/null","") +" --------------------------------------------------------------------- +" s:NetrwHidden: invoked by "gh" {{{2 +fun! s:NetrwHidden(islocal) +" call Dfunc("s:NetrwHidden()") + " save current position + let svpos= netrw#NetrwSavePosn() + + if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' + " remove pattern from hiding list + let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') + elseif strlen(g:netrw_list_hide) >= 1 + let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' else - let redir= &srr . "/dev/null" + let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' endif -" call Decho("redir{".redir."} srr{".&srr."}") - " execute the file handler - if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' -" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") - let ret= netrwFileHandlers#Invoke(exten,fname) + " refresh screen and return to saved position + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) +" call Dret("s:NetrwHidden") +endfun - elseif exists("g:netrw_browsex_viewer") && executable(g:netrw_browsex_viewer) -" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">") -" call Decho("exe silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."' ".redir) - exe "silent !".g:netrw_browsex_viewer." '".escape(fname,'%#')."'".redir - let ret= v:shell_error - - elseif has("win32") || has("win64") -" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"') - exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"' - call inputsave()|call input("Press to continue")|call inputrestore() - let ret= v:shell_error - - elseif has("unix") && executable("gnome-open") && !s:haskdeinit -" call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir) - exe "silent !gnome-open '".escape(fname,'%#')."'".redir - let ret= v:shell_error - - elseif has("unix") && executable("kfmclient") && s:haskdeinit -" call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir) - exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir - let ret= v:shell_error - - else - " netrwFileHandlers#Invoke() always returns 0 - let ret= netrwFileHandlers#Invoke(exten,fname) - endif - - " if unsuccessful, attempt netrwFileHandlers#Invoke() - if ret - let ret= netrwFileHandlers#Invoke(exten,fname) - endif - - redraw! - - " cleanup: remove temporary file, - " delete current buffer if success with handler, - " return to prior buffer (directory listing) - if a:remote == 1 && fname != a:fname -" call Decho("deleting temporary file<".fname.">") - call s:System("delete",fname) - endif - - if a:remote == 1 - setlocal bh=delete bt=nofile - if g:netrw_use_noswf - setlocal noswf - endif - exe "norm! \" - redraw! - endif - -" call Dret("NetBrowseX") -endfun - -" --------------------------------------------------------------------- -" NetBrowseFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 -" This function assumes that a long listing will be received. Size, time, -" and reverse sorts will be requested of the server but not otherwise -" enforced here. -fun! s:NetBrowseFtpCmd(path,listcmd) -" call Dfunc("NetBrowseFtpCmd(path<".a:path."> listcmd<".a:listcmd.">) netrw_method=".w:netrw_method) -" call Decho("line($)=".line("$")." bannercnt=".w:netrw_bannercnt) - - " because WinXX ftp uses unix style input - let ffkeep= &ff - setlocal ma ff=unix noro - - " clear off any older non-banner lines - " note that w:netrw_bannercnt indexes the line after the banner -" call Decho('exe silent! keepjumps '.w:netrw_bannercnt.",$d (clear off old non-banner lines)") - exe "silent! keepjumps ".w:netrw_bannercnt.",$d" - - "......................................... - if w:netrw_method == 2 || w:netrw_method == 5 - " ftp + <.netrc>: Method #2 - if a:path != "" - put ='cd \"'.a:path.'\"' - endif - if exists("g:netrw_ftpextracmd") - exe "put ='".g:netrw_ftpextracmd."'" -" call Decho("filter input: ".getline(".")) - endif - exe "put ='".a:listcmd."'" -" exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' - if exists("g:netrw_port") && g:netrw_port != "" -" call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) - exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port - else -" call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) - exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine - endif - - "......................................... - elseif w:netrw_method == 3 - " ftp + machine,id,passwd,filename: Method #3 - setlocal ff=unix - if exists("g:netrw_port") && g:netrw_port != "" - put ='open '.g:netrw_machine.' '.g:netrw_port - else - put ='open '.g:netrw_machine - endif - - if exists("g:netrw_ftp") && g:netrw_ftp == 1 - put =g:netrw_uid - put ='\"'.g:netrw_passwd.'\"' - else - put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"' - endif - - if a:path != "" - put ='cd \"'.a:path.'\"' - endif - if exists("g:netrw_ftpextracmd") - exe "put ='".g:netrw_ftpextracmd."'" -" call Decho("filter input: ".getline(".")) - endif - exe "put ='".a:listcmd."'" - - " perform ftp: - " -i : turns off interactive prompting from ftp - " -n unix : DON'T use <.netrc>, even though it exists - " -n win32: quit being obnoxious about password -" exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' -" call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n") - exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n" - - "......................................... - else - call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23) - endif - - " cleanup for Windows - if has("win32") || has("win95") || has("win64") || has("win16") - silent! keepjumps %s/\r$//e - endif - if a:listcmd == "dir" - " infer directory/link based on the file permission string - silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@ - silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/ - if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST - exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e' - endif - endif - - " ftp's listing doesn't seem to include ./ or ../ - if !search('^\.\/$\|\s\.\/$','wn') - exe 'keepjumps '.w:netrw_bannercnt - put ='./' - endif - if !search('^\.\.\/$\|\s\.\.\/$','wn') - exe 'keepjumps '.w:netrw_bannercnt - put ='../' - endif - - " restore settings - let &ff= ffkeep -" call Dret("NetBrowseFtpCmd") -endfun +" --------------------------------------------------------------------- +" s:NetrwLeftmouse: handles the when in a netrw browsing window {{{2 +fun! s:NetrwLeftmouse(islocal) +" call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") + if a:islocal + if exists("b:netrw_curdir") + call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) + endif + else + if exists("b:netrw_curdir") + call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord())) + endif + endif +" call Dret("s:NetrwLeftmouse") +endfun " --------------------------------------------------------------------- -" NetListHide: uses [range]g~...~d to delete files that match comma {{{2 +" s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2 " separated patterns given in g:netrw_list_hide -fun! s:NetListHide() -" call Dfunc("NetListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">") +fun! s:NetrwListHide() +" call Dfunc("NetrwListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">") " find a character not in the "hide" string to use as a separator for :g and :v commands " How-it-works: take the hiding command, convert it into a range. Duplicate @@ -3085,7 +3458,7 @@ fun! s:NetListHide() let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') else let hide = listhide - let listhide= "" + let listhide = "" endif " Prune the list by hiding any files which match @@ -3102,16 +3475,16 @@ fun! s:NetListHide() exe 'silent keepjumps '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' endif -" call Dret("NetListHide") +" call Dret("NetrwListHide") endfun " --------------------------------------------------------------------- -" NetHideEdit: allows user to edit the file/directory hiding list -fun! s:NetHideEdit(islocal) -" call Dfunc("NetHideEdit(islocal=".a:islocal.")") +" NetrwHideEdit: allows user to edit the file/directory hiding list +fun! s:NetrwHideEdit(islocal) +" call Dfunc("NetrwHideEdit(islocal=".a:islocal.")") " save current cursor position - let s:nhe_curpos= getpos(".") + let svpos= netrw#NetrwSavePosn() " get new hiding list from user call inputsave() @@ -3121,13 +3494,12 @@ fun! s:NetHideEdit(islocal) " call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">") " refresh the listing - silent call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,"./")) + silent call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./")) " restore cursor position - call setpos('.',s:nhe_curpos) - unlet s:nhe_curpos + call netrw#NetrwRestorePosn(svpos) -" call Dret("NetHideEdit") +" call Dret("NetrwHideEdit") endfun " --------------------------------------------------------------------- @@ -3135,1791 +3507,3073 @@ endfun fun! s:NetSortSequence(islocal) " call Dfunc("NetSortSequence(islocal=".a:islocal.")") + let svpos= netrw#NetrwSavePosn() call inputsave() let newsortseq= input("Edit Sorting Sequence: ",g:netrw_sort_sequence) call inputrestore() " refresh the listing let g:netrw_sort_sequence= newsortseq - call netrw#NetSavePosn() - call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./')) + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) " call Dret("NetSortSequence") endfun " --------------------------------------------------------------------- -" NetListStyle: {{{2 -" islocal=0: remote browsing -" =1: local browsing -fun! s:NetListStyle(islocal) -" call Dfunc("NetListStyle(islocal=".a:islocal.") w:netrw_liststyle=".w:netrw_liststyle) - let fname = s:NetGetWord() - if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif - let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST -" call Decho("fname<".fname.">") -" call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle) -" call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">") - - if w:netrw_liststyle == s:THINLIST - " use one column listing -" call Decho("use one column list") - let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') +" s:NetrwMakeDir: this function makes a directory (both local and remote) {{{2 +fun! s:NetrwMakeDir(usrhost) +" call Dfunc("NetrwMakeDir(usrhost<".a:usrhost.">)") - elseif w:netrw_liststyle == s:LONGLIST - " use long list -" call Decho("use long list") - let g:netrw_list_cmd = g:netrw_list_cmd." -l" + " get name of new directory from user. A bare will skip. + " if its currently a directory, also request will be skipped, but with + " a message. + call inputsave() + let newdirname= input("Please give directory name: ") + call inputrestore() +" call Decho("newdirname<".newdirname.">") - elseif w:netrw_liststyle == s:WIDELIST - " give wide list -" call Decho("use wide list") - let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') + if newdirname == "" +" call Dret("NetrwMakeDir : user aborted with bare ") + return + endif - elseif w:netrw_liststyle == s:TREELIST -" call Decho("use tree list") - let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') + if a:usrhost == "" - else - call netrw#ErrorMsg(s:WARNING,"bad value for g:netrw_liststyle (=".w:netrw_liststyle.")",46) - let g:netrw_liststyle = s:THINLIST - let w:netrw_liststyle = g:netrw_liststyle - let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') - endif - setlocal ma noro + " Local mkdir: + " sanity checks + let fullnewdir= b:netrw_curdir.'/'.newdirname +" call Decho("fullnewdir<".fullnewdir.">") + if isdirectory(fullnewdir) + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24) + endif +" call Dret("NetrwMakeDir : directory<".newdirname."> exists previously") + return + endif + if s:FileReadable(fullnewdir) + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25) + endif +" call Dret("NetrwMakeDir : file<".newdirname."> exists previously") + return + endif - " clear buffer - this will cause NetBrowse/LocalBrowseCheck to do a refresh -" call Decho("clear buffer<".expand("%")."> with :%d") - %d + " requested new local directory is neither a pre-existing file or + " directory, so make it! + if exists("*mkdir") + call mkdir(fullnewdir,"p") + else + let netrw_origdir= s:NetrwGetcwd(1) + exe 'keepjumps cd '.b:netrw_curdir +" call Decho("netrw_origdir<".netrw_origdir.">: cd b:netrw_curdir<".b:netrw_curdir.">") +" call Decho("exe silent! !".g:netrw_local_mkdir.' '.g:netrw_shq.newdirname.g:netrw_shq) + exe "silent! !".g:netrw_local_mkdir.' '.g:netrw_shq.newdirname.g:netrw_shq + if !g:netrw_keepdir + exe 'keepjumps cd '.netrw_origdir +" call Decho("netrw_keepdir=".g:netrw_keepdir.": cd ".netrw_origdir." getcwd<".getcwd().">") + endif + endif - " refresh the listing - call netrw#NetSavePosn() - call s:NetRefresh(a:islocal,s:NetBrowseChgDir(a:islocal,'./')) + if v:shell_error == 0 + " refresh listing +" call Decho("refresh listing") + let svpos= netrw#NetrwSavePosn() + call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) + call netrw#NetrwRestorePosn(svpos) + elseif !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",26) + endif +" redraw! - " keep cursor on the filename - silent keepjumps $ - let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') -" call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A')) - if result <= 0 && exists("w:netrw_bannercnt") - exe w:netrw_bannercnt + else + " Remote mkdir: + let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) + let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname +" call Decho("exe silent! !".mkdircmd." ".g:netrw_shq.newdirname.g:netrw_shq) + exe "silent! !".mkdircmd." ".g:netrw_shq.newdirname.g:netrw_shq + if v:shell_error == 0 + " refresh listing + let svpos= netrw#NetrwSavePosn() + call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) + call netrw#NetrwRestorePosn(svpos) + elseif !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27) + endif +" redraw! endif -" call Dret("NetListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : "")) +" call Dret("NetrwMakeDir") endfun " --------------------------------------------------------------------- -" NetWideListing: {{{2 -fun! s:NetWideListing() +" s:NetrwMarkFile: (invoked by mf) This function is used to both {{{2 +" mark and unmark files. If a markfile list exists, +" then the rename and delete functions will use it instead +" of whatever may happen to be under the cursor at that +" moment. When the mouse and gui are available, +" shift-leftmouse may also be used to mark files. +fun! s:NetrwMarkFile(islocal,fname) +" call Dfunc("s:NetrwMarkFile(islocal=".a:islocal." fname<".a:fname.">)") + let curbufnr= bufnr("%") + let curdir = b:netrw_curdir + if exists("s:netrwmarkfilelist_{curbufnr}") + " markfile list exists +" call Decho("starting s:netrwmarkfilelist_{curbufnr}<".string(s:netrwmarkfilelist_{curbufnr}).">") +" call Decho("starting s:netrwmarkfilemtch_{curbufnr}<".s:netrwmarkfilemtch_{curbufnr}.">") + + if index(s:netrwmarkfilelist_{curbufnr},a:fname) == -1 + " append filename to local-directory markfilelist +" call Decho("append filename<".a:fname."> to local markfilelist_".curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">") + call add(s:netrwmarkfilelist_{curbufnr},a:fname) + let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(a:fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' - if w:netrw_liststyle == s:WIDELIST -" call Dfunc("NetWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo) - " look for longest filename (cpf=characters per filename) - " cpf: characters per file - " fpl: files per line - " fpc: files per column - setlocal ma noro - let b:netrw_cpf= 0 - if line("$") >= w:netrw_bannercnt - exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' else -" call Dret("NetWideListing") - return + " remove filename from local markfilelist +" call Decho("remove filename<".a:fname."> from local markfilelist_".curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">") + call filter(s:netrwmarkfilelist_{curbufnr},'v:val != a:fname') + if s:netrwmarkfilelist_{curbufnr} == [] + " local markfilelist is empty; remove it entirely +" call Decho("markfile list now empty, unlet s:netrwmarkfilelist_".curbufnr." and ...mtch_".curbufnr) + call s:NetrwUnmarkList(curbufnr,curdir) + else + " rebuild match list to display markings correctly +" call Decho("rebuild s:netrwmarkfilemtch_".curbufnr) + let s:netrwmarkfilemtch_{curbufnr}= "" + let first = 1 + for fname in s:netrwmarkfilelist_{curbufnr} + if first + let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + else + let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|\<'.escape(fname,g:netrw_markfileesc."'".g:netrw_markfileesc."'").'\>' + endif + let first= 0 + endfor +" call Decho("ending s:netrwmarkfilelist_"curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">") +" call Decho("ending s:netrwmarkfilemtch_"curbufnr."<".s:netrwmarkfilemtch_{curbufnr}.">") + endif endif -" call Decho("max file strlen+1=".b:netrw_cpf) - let b:netrw_cpf= b:netrw_cpf + 1 - " determine qty files per line (fpl) - let w:netrw_fpl= winwidth(0)/b:netrw_cpf - if w:netrw_fpl <= 0 - let w:netrw_fpl= 1 + else + " initialize new markfilelist + +" call Decho("add fname<".a:fname."> to new markfilelist_".curbufnr) + let s:netrwmarkfilelist_{curbufnr}= [] + call add(s:netrwmarkfilelist_{curbufnr},a:fname) +" call Decho("ending s:netrwmarkfilelist_{curbufnr}<".string(s:netrwmarkfilelist_{curbufnr}).">") + + " build initial markfile matching pattern + if a:fname =~ '/$' + let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc) + else + let s:netrwmarkfilemtch_{curbufnr}= '\<'.escape(a:fname,g:netrw_markfileesc).'\>' endif -" call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl) +" call Decho("ending s:netrwmarkfilemtch_".curbufnr."<".s:netrwmarkfilemtch_{curbufnr}.">") + endif - " make wide display - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/' - let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl - let newcolstart = w:netrw_bannercnt + fpc - let newcolend = newcolstart + fpc - 1 -" call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]") - silent! let keepregstar = @* - while line("$") >= newcolstart - if newcolend > line("$") | let newcolend= line("$") | endif - let newcolqty= newcolend - newcolstart - exe newcolstart - if newcolqty == 0 - exe "silent keepjumps norm! 0\$hx".w:netrw_bannercnt."G$p" - else - exe "silent keepjumps norm! 0\".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' + " handle global markfilelist + if exists("s:netrwmarkfilelist") + let dname= s:ComposePath(b:netrw_curdir,a:fname) + if index(s:netrwmarkfilelist,dname) == -1 + " append new filename to global markfilelist + call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) +" call Decho("append filename<".a:fname."> to global markfilelist<".string(s:netrwmarkfilelist).">") + else + " remove new filename from global markfilelist +" call Decho("filter(".string(s:netrwmarkfilelist).",'v:val != '.".dname.")") + call filter(s:netrwmarkfilelist,'v:val != "'.dname.'"') +" call Decho("ending s:netrwmarkfilelist <".string(s:netrwmarkfilelist).">") + if s:netrwmarkfilelist == [] + unlet s:netrwmarkfilelist endif - exe "silent keepjumps ".newcolstart.','.newcolend.'d' - exe 'silent keepjumps '.w:netrw_bannercnt - endwhile - silent! let @*= keepregstar - exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e' - setlocal noma nomod ro -" call Dret("NetWideListing") + endif + else + " initialize new global-directory markfilelist + let s:netrwmarkfilelist= [] + call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) +" call Decho("init s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">") endif + " set up 2match'ing to netrwmarkfilemtch list + if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" +" call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/") + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" + else +" call Decho("2match none") + 2match none + endif +" call Dret("s:NetrwMarkFile : netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") endfun " --------------------------------------------------------------------- -" NetTreeDir: determine tree directory given current cursor position {{{2 -" (full path directory with trailing slash returned) -fun! s:NetTreeDir() -" call Dfunc("NetTreeDir() curline#".line(".")."<".getline(".")."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%").">") +" s:NetrwMarkFileCompress: (invoked by mz) This function is used to {{{2 +" compress/decompress files using the programs +" in g:netrw_compress and g:netrw_uncompress, +" using g:netrw_compress_suffix to know which to +" do. By default: +" g:netrw_compress = "gzip" +" g:netrw_decompress = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"} +fun! s:NetrwMarkFileCompress(islocal) +" call Dfunc("s:NetrwMarkFileCompress(islocal=".a:islocal.")") + let svpos = netrw#NetrwSavePosn() + let curdir = b:netrw_curdir + let curbufnr = bufnr("%") + + if exists("s:netrwmarkfilelist_{curbufnr}") && exists("g:netrw_compress") && exists("g:netrw_decompress") + for fname in s:netrwmarkfilelist_{curbufnr} + " for every filename in the marked list + for sfx in sort(keys(g:netrw_decompress)) + if fname =~ '\'.sfx.'$' + " fname has a suffix indicating that its compressed; apply associated decompression routine + let exe= g:netrw_decompress[sfx] +" call Decho("fname<".fname."> is compressed so decompress with <".exe.">") + if a:islocal + if g:netrw_keepdir + let fname= s:ComposePath(curdir,fname) + endif + else + let fname= b:netrw_curdir.fname + endif + if executable(exe) + if a:islocal + call system(exe." ".fname) + else + call s:RemoteSystem(exe." ".fname) + endif + else + call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) + endif + break + endif + endfor + if exists("exe") + unlet exe + elseif a:islocal + " fname not a compressed file, so compress it + call system(g:netrw_compress." ".s:ComposePath(b:netrw_curdir,fname)) + else + " fname not a compressed file, so compress it + call s:RemoteSystem(g:netrw_compress." ".fname) + endif + endfor + call s:NetrwUnmarkList(curbufnr,curdir) + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + endif +" call Dret("s:NetrwMarkFileCompress") +endfun - let treedir= b:netrw_curdir -" call Decho("set initial treedir<".treedir.">") - let s:treecurpos= getpos(".") +" --------------------------------------------------------------------- +" s:NetrwMarkFileCopy: (invoked by mc) copy marked files to target {{{2 +" If no marked files, then set up directory as the +" target. Currently does not support copying entire +" directories. Uses the global marked file list. +" Returns 1=success (used by NetrwMarkFileMove()) +" 0=failure +fun! s:NetrwMarkFileCopy(islocal) +" call Dfunc("s:NetrwMarkFileCopy(islocal=".a:islocal.") target<".(exists("s:netrwmftgt")? s:netrwmftgt : '---').">") + + " s:netrwmarkfilelist_{bufnr("%")}: the List of marked files + let curbufnr= bufnr("%") + if exists("s:netrwmarkfilelist") +" call Decho("s:netrwmarkfilelist<".string(s:netrwmarkfilelist).">") + let svpos = netrw#NetrwSavePosn() + let curdir = b:netrw_curdir - if w:netrw_liststyle == s:TREELIST -" call Decho("w:netrrw_liststyle is TREELIST:") -" call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">") - if getline('.') =~ '/$' - let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e') - else - let treedir= "" - endif + " s:netrwmftgt : name of directory to copy files to + " s:netrwmfloc : =0 target directory is remote + " =1 target directory is local + if exists("s:netrwmftgt") && exists("s:netrwmfloc") +" call Decho("s:netrwmftgt<".s:netrwmftgt.">") +" call Decho("s:netrwmfloc=".s:netrwmfloc) + + for fname in s:netrwmarkfilelist +" call Decho("s:NetrwMarkFileCopy: fname<".fname.">") + + " sanity check + if (a:islocal && isdirectory(fname)) || (!a:islocal && fname =~ '/$') + call netrw#ErrorMsg(s:ERROR,"currently netrw can't copy entire directories such as <".fname.">",58) +" call Dret("s:NetrwMarkFileCopy 0 : currently netrw can't copy entire directories") + return 0 + endif -" call Decho("treedir<".treedir.">") + if a:islocal && s:netrwmfloc + " local to local copy +" call Decho("local to local copy") +" call Decho("from b:netrw_curdir<".b:netrw_curdir."> fname<".fname."> to s:netrwmftgt<".s:netrwmftgt.">") + if executable(g:netrw_localcopycmd) +" call Decho("let ret= system(".g:netrw_localcopycmd." ".s:ComposePath(b:netrw_curdir,fname)." ".s:netrwmftgt.")") + let ret= system(g:netrw_localcopycmd." "." ".s:netrwmftgt) " global markfilelist verison + if v:shell_error < 0 + call netrw#ErrorMsg(s:ERROR,"command<".g:netrw_localcopycmd."> failed, aborting",54) + break + endif + else + call netrw#ErrorMsg(s:ERROR,"command<".g:netrw_localcopycmd."> is not executable!",57) + break + endif - " detect user attempting to close treeroot - if getline('.') !~ '|' && getline('.') != '..' -" call Decho("user attempted to close treeroot") - " now force a refresh -" call Decho("clear buffer<".expand("%")."> with :%d") - keepjumps %d -" call Dret("NetTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">") - return b:netrw_curdir - endif + elseif !a:islocal && s:netrwmfloc + " remote to local copy +" call Decho("remote to local copy") +" call Decho("getcwd<".getcwd()."> b:netrw_curdir<".b:netrw_curdir.">") + call netrw#NetrwObtain(a:islocal,fname,s:netrwmftgt) - " elide all non-depth information - let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e') -" call Decho("depth<".depth."> 1st subst") + elseif a:islocal && !s:netrwmfloc + " local to remote copy +" call Decho("local to remote copy") +" call Decho("getcwd<".getcwd()."> b:netrw_curdir<".b:netrw_curdir.">") + call s:NetrwUpload(fname,s:netrwmftgt) - " elide first depth - let depth = substitute(depth,'^| ','','') -" call Decho("depth<".depth."> 2nd subst") + else + " remote to remote copy +" call Decho("remote to remote copy") + call s:NetrwUpload(fname,s:netrwmftgt) + endif + endfor - " construct treedir by searching backwards at correct depth -" call Decho("constructing treedir<".treedir."> depth<".depth.">") - while depth != "" && search('^'.depth.'[^|].\{-}/$','bW') - let dirname= substitute(getline("."),'^\(| \)*','','e') - let treedir= dirname.treedir - let depth = substitute(depth,'^| ','','') -" call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">") - endwhile - if w:netrw_treetop =~ '/$' - let treedir= w:netrw_treetop.treedir + " unmark all marked file lists + call s:NetrwUnmarkAll() else - let treedir= w:netrw_treetop.'/'.treedir + call netrw#ErrorMsg(s:ERROR,"missing a markfile copy target! (see help for netrw-mt)",56) endif -" call Decho("bufnr(.)=".bufnr(".")." line($)=".line("$")." line(.)=".line(".")) + + " refresh the listing + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + else + call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif - let treedir= substitute(treedir,'//$','/','') + +" call Dret("s:NetrwMarkFileCopy 1") + return 1 +endfun -" " now force a refresh -" call Decho("clear buffer<".expand("%")."> with :%d") -" setlocal ma noro -" keepjumps %d +" --------------------------------------------------------------------- +" s:NetrwMarkFileDiff: (invoked by md) This function is used to {{{2 +" invoke vim's diff mode on the marked files. +" Either two or three files can be so handled. +" Uses the global marked file list. +fun! s:NetrwMarkFileDiff(islocal) +" call Dfunc("s:NetrwMarkFileDiff(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") + let curbufnr= bufnr("%") + if exists("s:netrwmarkfilelist_{curbufnr}") + + let cnt = 0 + let curdir = b:netrw_curdir + for fname in s:netrwmarkfilelist + let cnt= cnt + 1 + if !a:islocal + let fname= curdir.fname + endif + if cnt == 1 +" call Decho("diffthis: ".fname) + exe "e ".fname + diffthis + elseif cnt == 2 || cnt == 3 + vsplit + wincmd l +" call Decho("diffthis: ".fname) + exe "e ".fname + diffthis + else + break + endif + endfor + call s:NetrwUnmarkList(curbufnr,curdir) + endif +" call Dret("s:NetrwMarkFileDiff") +endfun -" call Dret("NetTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">") - return treedir +" --------------------------------------------------------------------- +" s:NetrwMarkFileEdit: (invoked by me) put marked files on arg list and start editing them {{{2 +" Uses global markfilelist +fun! s:NetrwMarkFileEdit(islocal) +" call Dfunc("s:NetrwMarkFileEdit(islocal=".a:islocal.")") + + let curdir = b:netrw_curdir + let curbufnr = bufnr("%") + if exists("s:netrwmarkfilelist_{curbufnr}") + call s:SetRexDir(a:islocal,curdir) + if a:islocal && g:netrw_keepdir + " use complete paths if its local and keepdir enabled + let flist= "" + for fname in s:netrwmarkfilelist +" let flist= flist." ".s:ComposePath(curdir,fname) + let flist= flist." ".fname + endfor + else +" let flist= substitute(escape(join(s:netrwmarkfilelist_{curbufnr},"\t"),' '),"\t",' ','g') + let flist= substitute(escape(join(s:netrwmarkfilelist,"\t"),' '),"\t",' ','g') + endif + " unmark markedfile list +" call s:NetrwUnmarkList(curbufnr,curdir) + call s:NetrwUnmarkAll() +" call Decho("exe silent args ".flist) + exe "silent args ".flist + endif + +" call Dret("s:NetrwMarkFileEdit") endfun " --------------------------------------------------------------------- -" NetTreeDisplay: recursive tree display {{{2 -fun! s:NetTreeDisplay(dir,depth) -" call Dfunc("NetTreeDisplay(dir<".a:dir."> depth<".a:depth.">)") +" s:NetrwMarkFileExe: (invoked by mx) execute arbitrary command on marked files, one at a time {{{2 +" Uses the local marked-file list. +fun! s:NetrwMarkFileExe(islocal) +" call Dfunc("s:NetrwMarkFileExe(islocal=".a:islocal.")") + let svpos = netrw#NetrwSavePosn() + let curdir = b:netrw_curdir + let curbufnr = bufnr("%") + + if exists("s:netrwmarkfilelist_{curbufnr}") + " get the command + call inputsave() + let cmd= input("Enter command: ","","file") + call inputrestore() +" call Decho("cmd<".cmd.">") - " insure that there are no folds - setlocal nofen + " apply command to marked files. Substitute: filename -> % + " If no %, then append a space and the filename to the command + for fname in s:netrwmarkfilelist_{curbufnr} + if a:islocal + if g:netrw_keepdir + let fname= s:ComposePath(curdir,fname) + endif + else + let fname= b:netrw_curdir.fname + endif + if cmd =~ '%' + let xcmd= substitute(cmd,'%',fname,'g') + else + let xcmd= cmd.' '.fname + endif + if a:islocal +" call Decho("local: xcmd<".xcmd.">") + let ret= system(xcmd) + else +" call Decho("remote: xcmd<".xcmd.">") + let ret= s:RemoteSystem(xcmd) + endif + if v:shell_error < 0 + call netrw#ErrorMsg(s:ERROR,"command<".xcmd."> failed, aborting",54) + break + else + echo ret + endif + endfor - " install ../ and shortdir - if a:depth == "" - call setline(line("$")+1,'../') -" call Decho("setline#".line("$")." ../ (depth is zero)") - endif - if a:dir =~ '^\a\+://' - if a:dir == w:netrw_treetop - let shortdir= a:dir - else - let shortdir= substitute(a:dir,'^.*/\([^/]\+\)/$','\1/','e') - endif - call setline(line("$")+1,a:depth.shortdir) + " unmark marked file list + call s:NetrwUnmarkList(curbufnr,curdir) + + " refresh the listing + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) else - let shortdir= substitute(a:dir,'^.*/','','e') - call setline(line("$")+1,a:depth.shortdir.'/') + call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif -" call Decho("setline#".line("$")." shortdir<".a:depth.shortdir.">") + +" call Dret("s:NetrwMarkFileExe") +endfun - " append a / to dir if its missing one - let dir= a:dir - if dir !~ '/$' - let dir= dir.'/' +" --------------------------------------------------------------------- +" s:NetrwMarkHideSfx: (invoked by mh) (un)hide files having same suffix +" as the marked file(s) (toggles suffix presence) +" Uses the local marked file list. +fun! s:NetrwMarkHideSfx(islocal) +" call Dfunc("s:NetrwMarkHideSfx(islocal=".a:islocal.")") + let svpos = netrw#NetrwSavePosn() + let curbufnr = bufnr("%") + + " s:netrwmarkfilelist_{curbufnr}: the List of marked files + if exists("s:netrwmarkfilelist_{curbufnr}") + + for fname in s:netrwmarkfilelist_{curbufnr} +" call Decho("s:NetrwMarkFileCopy: fname<".fname.">") + " construct suffix pattern + if fname =~ '\.' + let sfxpat= "^.*".substitute(fname,'^.*\(\.[^. ]\+\)$','\1','') + else + let sfxpat= '^\%(\%(\.\)\@!.\)*$' + endif + " determine if its in the hiding list or not + let inhidelist= 0 + if g:netrw_list_hide != "" + let itemnum = 0 + let hidelist= split(g:netrw_list_hide,',') + for hidepat in hidelist + if sfxpat == hidepat + let inhidelist= 1 + break + endif + let itemnum= itemnum + 1 + endfor + endif +" call Decho("fname<".fname."> inhidelist=".inhidelist." sfxpat<".sfxpat.">") + if inhidelist + " remove sfxpat from list + call remove(hidelist,itemnum) + let g:netrw_list_hide= join(hidelist,",") + elseif g:netrw_list_hide != "" + " append sfxpat to non-empty list + let g:netrw_list_hide= g:netrw_list_hide.",".sfxpat + else + " set hiding list to sfxpat + let g:netrw_list_hide= sfxpat + endif + endfor + + " refresh the listing + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + else + call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif - " display subtrees (if any) - let depth= "| ".a:depth -" call Decho("display subtrees with depth<".depth."> and current leaves") - for entry in w:netrw_treedict[a:dir] - let direntry= substitute(dir.entry,'/$','','e') -" call Decho("dir<".dir."> entry<".entry."> direntry<".direntry.">") - if entry =~ '/$' && has_key(w:netrw_treedict,direntry) -" call Decho("<".direntry."> is a key in treedict - display subtree for it") - call s:NetTreeDisplay(direntry,depth) - elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/') -" call Decho("<".direntry."/> is a key in treedict - display subtree for it") - call s:NetTreeDisplay(direntry.'/',depth) - else -" call Decho("<".entry."> is not a key in treedict (no subtree)") - call setline(line("$")+1,depth.entry) +" call Dret("s:NetrwMarkHideSfx") +endfun + +" --------------------------------------------------------------------- +" s:NetrwMarkFileMove: (invoked by mm) execute arbitrary command on marked files, one at a time {{{2 +" uses the global marked file list +fun! s:NetrwMarkFileMove(islocal) +" call Dfunc("s:NetrwMarkFileMove(islocal=".a:islocal.")") + + if exists("s:netrwmarkfilelist") + let svpos = netrw#NetrwSavePosn() + let curbufnr = bufnr("%") + let curdir = b:netrw_curdir + if exists("s:netrwmftgt") && exists("s:netrwmfloc") + + for fname in s:netrwmarkfilelist + let islocal= fname !~ '^\a\+://' +" call Decho("s:NetrwMarkFileMove: fname<".fname."> islocal=".islocal) + if islocal && s:netrwmfloc + " local to local move + " s:netrwmfloc= 0: target directory is remote + " = 1: target directory is local +" call Decho("local to local move") + if executable(g:netrw_localmovecmd) +" call Decho("let ret= system(".g:netrw_localmovecmd." ".fname." ".s:netrwmftgt.")") + let ret= system(g:netrw_localmovecmd." ".fname." ".s:netrwmftgt) + if v:shell_error < 0 + call netrw#ErrorMsg(s:ERROR,"command<".g:netrw_localmovecmd."> failed, aborting",54) + break + endif + else + call netrw#ErrorMsg(s:ERROR,"command<".g:netrw_localmovecmd."> is not executable!",57) + break + endif + elseif !islocal && s:netrwmfloc + " remote to local move +" call Decho("remote to local: copy and remove") +" call Decho("islocal =".islocal) +" call Decho("fname <".fname.">") +" call Decho("s:netrwmftgt<".s:netrwmftgt.">") + call netrw#NetrwObtain(islocal,fname,s:netrwmftgt) + let path = substitute(fname,'^\(.*/\)\(.\{-}\)$','\1','') + let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') + let ok= s:NetrwRemoteRmFile(path,barefname,1) + elseif !islocal && s:netrwmfloc + " local to remote move +" call Decho("local to remote: copy and remove") + call s:NetrwUpload(fname,s:netrwmftgt) + let path = substitute(fname,'^\(.*/\)\(.\{-}\)$','\1','') + let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') + let ok = s:NetrwLocalRmFile(path,barefname,1) + else + " remote to remote move +" call Decho("remote to remote: copy and remove") + call s:NetrwUpload(fname,s:netrwmftgt) + let path = substitute(fname,'^\(.*/\)\(.\{-}\)$','\1','') + let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') + let ok = s:NetrwRemoteRmFile(path,barefname,1) + endif + endfor endif - endfor -" call Dret("NetTreeDisplay") + + " unmark marked file lists + call s:NetrwUnmarkAll() + + " refresh the listing and restore cursor position + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + else + call netrw#ErrorMsg(s:ERROR,"no files marked!",59) + endif + +" call Dret("s:NetrwMarkFileMove") endfun " --------------------------------------------------------------------- -" NetTreeListing: displays tree listing from treetop on down, using NetTreeDisplay() {{{2 -fun! s:NetTreeListing(dirname) - if w:netrw_liststyle == s:TREELIST -" call Dfunc("NetTreeListing() bufname<".expand("%").">") -" call Decho("curdir<".a:dirname.">") +" s:NetrwMarkFilePrint: (invoked by mp) This function prints marked files {{{2 +" using the hardcopy command. Local marked-file list only. +fun! s:NetrwMarkFilePrint(islocal) +" call Dfunc("s:NetrwMarkFilePrint(islocal=".a:islocal.")") + let curbufnr= bufnr("%") + if exists("s:netrwmarkfilelist_{curbufnr}") + let netrwmarkfilelist = s:netrwmarkfilelist_{curbufnr} + let curdir = b:netrw_curdir + call s:NetrwUnmarkList(curbufnr,curdir) + for fname in netrwmarkfilelist + if a:islocal + if g:netrw_keepdir + let fname= s:ComposePath(curdir,fname) + endif + else + let fname= curdir.fname + endif + 1split + " the autocmds will handle both local and remote files + exe "silent e ".fname +" call Decho("hardcopy ".fname) + hardcopy + q + endfor + 2match none + endif +" call Dret("s:NetrwMarkFilePrint") +endfun - " update the treetop -" call Decho("update the treetop") - if !exists("w:netrw_treetop") - let w:netrw_treetop= a:dirname -" call Decho("w:netrw_treetop<".w:netrw_treetop."> (reusing)") - elseif (w:netrw_treetop =~ ('^'.a:dirname) && strlen(a:dirname) < strlen(w:netrw_treetop)) || a:dirname !~ ('^'.w:netrw_treetop) - let w:netrw_treetop= a:dirname -" call Decho("w:netrw_treetop<".w:netrw_treetop."> (went up)") - endif +" --------------------------------------------------------------------- +" s:NetrwMarkFileRegexp: (invoked by mr) This function is used to mark {{{2 +" files when given a regexp (for which a prompt is +" issued). +fun! s:NetrwMarkFileRegexp(islocal) +" call Dfunc("s:NetrwMarkFileRegexp(islocal=".a:islocal.")") - " insure that we have at least an empty treedict - if !exists("w:netrw_treedict") - let w:netrw_treedict= {} - endif + " get the regular expression + call inputsave() + let regexp= input("Enter regexp: ","","file") + call inputrestore() - " update the directory listing for the current directory -" call Decho("updating dictionary with ".a:dirname.":[..directory listing..]") -" call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$")) - exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d' - let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$")) -" call Decho("treedict=".string(w:netrw_treedict)) - exe "silent! keepjumps ".w:netrw_bannercnt.",$d" + if a:islocal + " get the matching list of files using local glob() + let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) + let filelist = glob(s:ComposePath(dirname,regexp)) + if filelist != "" + let filelist= filelist."\n" + endif - " if past banner, record word - if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt - let fname= expand("") + " mark the list of files + while filelist != "" + if filelist =~ '\n' + let filename = substitute(filelist,'\n.*$','','e') + let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e') else - let fname= "" + let filename = filelist + let filelist = "" endif +" call Decho("filelist<".filelist.">") +" call Decho("filename<".filename.">") + call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','','')) + endwhile - " display from treetop on down - call s:NetTreeDisplay(w:netrw_treetop,"") - - " place cursor - if !exists("s:nbcd_curpos") - if fname != "" -" call Decho("(NetTreeListing) place cursor <".fname.">") - call search('\<'.fname.'\>','cw') - elseif exists("w:netrw_bannercnt") - exe (w:netrw_bannercnt+1) -" call Decho("(NetTreeListing) place cursor line#".(w:netrw_bannercnt+1)) - endif - endif + else -" call Dret("NetTreeListing : bufname<".expand("%").">") + " convert displayed listing into a filelist + let eikeep = &ei + let areg = @a + silent %y a + set ei=all ma +" call Decho("set ei=all ma") + 1split + enew + silent norm! "ap + 2 + let bannercnt= search('^" =====','W') + exe "silent 1,".bannercnt."d" + set bt=nofile + if g:netrw_liststyle == s:LONGLIST + silent %s/\s\{2,}\S.*$//e + elseif g:netrw_liststyle == s:WIDELIST + silent %s/\s\{2,}/\r/ge + elseif g:netrw_liststyle == s:TREELIST + silent %s/^| //e + silent! g/^ .*$/d + endif + exe "silent! v/".escape(regexp,'/')."/d" + let filelist= getline(1,line("$")) + q! + for filename in filelist + call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','','')) + endfor + unlet filelist + let @a = areg + let &ei = eikeep endif -endfun -" --------------------------------------------------------------------- -" NetSaveWordPosn: used by the "s" command in both remote and local {{{2 -" browsing. Along with NetRestoreWordPosn(), it keeps the cursor on -" the same word even though the sorting has changed its order of appearance. -fun! s:NetSaveWordPosn() -" call Dfunc("NetSaveWordPosn()") - let s:netrw_saveword= '^'.escape(getline("."),s:netrw_cd_escape).'$' -" call Dret("NetSaveWordPosn : saveword<".s:netrw_saveword.">") +" call Dret("s:NetrwMarkFileRegexp") endfun " --------------------------------------------------------------------- -" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2 -fun! s:NetRestoreWordPosn() -" call Dfunc("NetRestoreWordPosn()") - silent! call search(s:netrw_saveword,'w') -" call Dret("NetRestoreWordPosn") +" s:NetrwMarkFileSource: (invoked by ms) This function sources marked files {{{2 +" Uses the local marked file list. +fun! s:NetrwMarkFileSource(islocal) +" call Dfunc("s:NetrwMarkFileSource(islocal=".a:islocal.")") + let curbufnr= bufnr("%") + if exists("s:netrwmarkfilelist_{curbufnr}") + let netrwmarkfilelist = s:netrwmarkfilelist_{bufnr("%")} + let curdir = b:netrw_curdir + call s:NetrwUnmarkList(curbufnr,curdir) + for fname in netrwmarkfilelist + if a:islocal + if g:netrw_keepdir + let fname= s:ComposePath(curdir,fname) + endif + else + let fname= curdir.fname + endif + " the autocmds will handle sourcing both local and remote files + exe "so ".fname + endfor + 2match none + endif +" call Dret("s:NetrwMarkFileSource") endfun " --------------------------------------------------------------------- -" NetMakeDir: this function makes a directory (both local and remote) {{{2 -fun! s:NetMakeDir(usrhost) -" call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)") +" s:NetrwMarkFileTag: (invoked by mT) This function applies g:netrw_ctags to marked files {{{2 +" Uses the global markfilelist +fun! s:NetrwMarkFileTag(islocal) +" call Dfunc("s:NetrwMarkFileTag(islocal=".a:islocal.")") + let svpos = netrw#NetrwSavePosn() + let curdir = b:netrw_curdir + let curbufnr = bufnr("%") + + if exists("s:netrwmarkfilelist") +" call Decho("s:netrwmarkfilelist".string(s:netrwmarkfilelist).">") + if a:islocal && g:netrw_keepdir + let netrwmarkfilelist= "" + for fname in s:netrwmarkfilelist +" let netrwmarkfilelist= netrwmarkfilelist." ".s:ComposePath(curdir,fname) + let netrwmarkfilelist= netrwmarkfilelist." ".fname + endfor + else + let netrwmarkfilelist= string(s:netrwmarkfilelist) + let netrwmarkfilelist= substitute(netrwmarkfilelist,'[[\],]','','g') + endif + call s:NetrwUnmarkAll() - " get name of new directory from user. A bare will skip. - " if its currently a directory, also request will be skipped, but with - " a message. - call inputsave() - let newdirname= input("Please give directory name: ") - call inputrestore() -" call Decho("newdirname<".newdirname.">") + if a:islocal + if executable(g:netrw_ctags) + if g:netrw_shq != "'" + let netrwmarkfilelist= substitute(netrwmarkfilelist,"'",g:netrw_shq,'g') + endif +" call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")") + call system(g:netrw_ctags." ".netrwmarkfilelist) + else + call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) + endif + else + let cmd= s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) + call netrw#NetrwObtain(a:islocal,"tags") + let curdir= b:netrw_curdir + 1split + e tags + let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','') +" call Decho("curdir<".curdir."> path<".path.">") + exe '%s/\t\(\S\+\)\t/\t'.escape(path,'/').'\1\t/e' + wq! + endif + 2match none + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + endif + +" call Dret("s:NetrwMarkFileTag") +endfun - if newdirname == "" -" call Dret("NetMakeDir : user aborted with bare ") - return - endif +" --------------------------------------------------------------------- +" s:NetrwMarkFileTgt: (invoked by mt) This function sets up a marked file target {{{2 +" Sets up two variables, +" s:netrwmftgt : holds the target directory +" s:netrwmfloc : 0=target directory is remote +" 1=target directory is local +fun! s:NetrwMarkFileTgt(islocal) +" call Dfunc("s:NetrwMarkFileTgt(islocal=".a:islocal.")") + let svpos = netrw#NetrwSavePosn() + let curdir = b:netrw_curdir + let hadtgt = exists("s:netrwmftgt") + + " set up target + if line(".") < w:netrw_bannercnt + " if cursor in banner region, use b:netrw_curdir for the target + let s:netrwmftgt= b:netrw_curdir +" call Decho("inbanner: s:netrwmftgt<".s:netrwmftgt.">") - if a:usrhost == "" - - " Local mkdir: - " sanity checks - let fullnewdir= b:netrw_curdir.'/'.newdirname -" call Decho("fullnewdir<".fullnewdir.">") - if isdirectory(fullnewdir) - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24) - endif -" call Dret("NetMakeDir : directory<".newdirname."> exists previously") - return - endif - if s:FileReadable(fullnewdir) - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25) - endif -" call Dret("NetMakeDir : file<".newdirname."> exists previously") - return + else + " get word under cursor. + " * If directory, use it for the target. + " * If file, use b:netrw_curdir for the target + let curword= s:NetrwGetWord() + let tgtdir = s:ComposePath(curdir,curword) + if isdirectory(tgtdir) + let s:netrwmftgt = tgtdir +" call Decho("isdir: s:netrwmftgt<".s:netrwmftgt.">") + else + let s:netrwmftgt = curdir +" call Decho("isfile: s:netrwmftgt<".s:netrwmftgt.">") endif + endif + if a:islocal + " simplify the target (eg. /abc/def/../ghi -> /abc/ghi) + let s:netrwmftgt= simplify(s:netrwmftgt) +" call Decho("simplify: s:netrwmftgt<".s:netrwmftgt.">") + endif + if g:netrw_cygwin + let s:netrwmftgt= substitute(system("cygpath ".s:netrwmftgt),'\n$','','') + endif + let s:netrwmfloc= a:islocal - " requested new local directory is neither a pre-existing file or - " directory, so make it! - if exists("*mkdir") - call mkdir(fullnewdir,"p") - else - let netrw_origdir= s:NetGetcwd(1) - exe 'keepjumps cd '.b:netrw_curdir -" call Decho("netrw_origdir<".netrw_origdir.">: cd b:netrw_curdir<".b:netrw_curdir.">") -" call Decho("exe silent! !".g:netrw_local_mkdir.' '.g:netrw_shq.newdirname.g:netrw_shq) - exe "silent! !".g:netrw_local_mkdir.' '.g:netrw_shq.newdirname.g:netrw_shq - if !g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif - if !g:netrw_keepdir - exe 'keepjumps cd '.netrw_origdir -" call Decho("netrw_keepdir=".g:netrw_keepdir.": cd ".netrw_origdir) + if g:netrw_fastbrowse > 0 + call s:LocalBrowseShellCmdRefresh() + endif + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + if !hadtgt + norm! j + endif + +" call Dret("s:NetrwMarkFileTgt") +endfun + +" --------------------------------------------------------------------- +" s:NetrwUnmarkList: delete local marked file lists and remove their contents from the global marked-file list {{{2 +fun! s:NetrwUnmarkList(curbufnr,curdir) +" call Dfunc("s:NetrwUnmarkList(curbufnr=".a:curbufnr." curdir<".a:curdir.">)") + + " remove all files in local marked-file list from global list + for mfile in s:netrwmarkfilelist_{a:curbufnr} + let dfile = s:ComposePath(a:curdir,mfile) " prepend directory to mfile + let idx = index(s:netrwmarkfilelist,dfile) " get index in list of dfile + call remove(s:netrwmarkfilelist,idx) " remove from global list + endfor + if s:netrwmarkfilelist == [] + unlet s:netrwmarkfilelist + endif + + " getting rid of the local marked-file lists is easy + unlet s:netrwmarkfilelist_{a:curbufnr} + unlet s:netrwmarkfilemtch_{a:curbufnr} + 2match none +" call Dret("s:NetrwUnmarkList") +endfun + +" --------------------------------------------------------------------- +" s:NetrwUnmarkAll: remove the global marked file list and all local ones {{{2 +fun! s:NetrwUnmarkAll() +" call Dfunc("s:NetrwUnmarkAll()") + if exists("s:netrwmarkfilelist") + unlet s:netrwmarkfilelist + endif + silent call s:NetrwUnmarkAll2() + 2match none +" call Dret("s:NetrwUnmarkAll") +endfun + +" --------------------------------------------------------------------- +" s:NetrwUnmarkAll2: {{{2 +fun! s:NetrwUnmarkAll2() +" call Dfunc("s:NetrwUnmarkAll2()") + redir => netrwmarkfilelist_let + let + redir END + let netrwmarkfilelist_list= split(netrwmarkfilelist_let,'\n') " convert let string into a let list + call filter(netrwmarkfilelist_list,"v:val =~ '^s:netrwmarkfilelist_'") " retain only those vars that start as s:netrwmarkfilelist_ + call map(netrwmarkfilelist_list,"substitute(v:val,'\\s.*$','','')") " remove what the entries are equal to + for flist in netrwmarkfilelist_list + let curbufnr= substitute(flist,'s:netrwmarkfilelist_','','') + unlet s:netrwmarkfilelist_{curbufnr} + unlet s:netrwmarkfilemtch_{curbufnr} + endfor +" call Dret("s:NetrwUnmarkAll2") +endfun + +" --------------------------------------------------------------------- +" s:NetrwUnMarkFile: {{{2 +fun! s:NetrwUnMarkFile(islocal) +" call Dfunc("s:NetrwUnMarkFile(islocal=".a:islocal.")") + let svpos = netrw#NetrwSavePosn() + let curbufnr = bufnr("%") + + " unmark marked file list (although I expect s:NetrwUpload() + " to do it, I'm just making sure) + if exists("s:netrwmarkfilelist_{bufnr('%')}") +" call Decho("unlet'ing: s:netrwmarkfile[list|mtch]_".bufnr("%")) + unlet s:netrwmarkfilelist + unlet s:netrwmarkfilelist_{curbufnr} + unlet s:netrwmarkfilemtch_{curbufnr} + 2match none + endif + +" call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) +" call Dret("s:NetrwUnMarkFile") +endfun + +" =========================================== +" s:NetrwMenu: generates the menu for gvim and netrw {{{2 +fun! s:NetrwMenu(domenu) + + if !exists("g:NetrwMenuPriority") + let g:NetrwMenuPriority= 80 + endif + + if has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu +" call Dfunc("NetrwMenu(domenu=".a:domenu.")") + + if !exists("s:netrw_menu_enabled") && a:domenu +" call Decho("initialize menu") + let s:netrw_menu_enabled= 1 + exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help ' + call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4 + exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :' + exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory- -' + exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewerx x' + exe 'silent! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directorymb mb' + exe 'silent! menu '.g:NetrwMenuPriority.'.8.2 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Bookmarkgb gb' + exe 'silent! menu '.g:NetrwMenuPriority.'.8.3 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)u u' + exe 'silent! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)U U' + exe 'silent! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Listqb qb' + exe 'silent! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List'." \NetrwHideEdit" + exe 'silent! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ SequenceS S' + exe 'silent! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing'." \NetrwRefresh" + exe 'silent! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options:NetrwSettings '.":NetrwSettings\" + exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/DirectoryD D' + exe 'silent! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window '."\" + exe 'silent! menu '.g:NetrwMenuPriority.'.11.2 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directoryp p' + exe 'silent! menu '.g:NetrwMenuPriority.'.11.3 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ WindowP P' + exe 'silent! menu '.g:NetrwMenuPriority.'.11.4 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Windowo o' + exe 'silent! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Windowv v' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore ' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only):Explore\ */ :Explore */' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs):Explore\ **/ :Explore **/' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (curdir\ only):Explore\ *// :Explore *//' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ Pattern\ (+subdirs):Explore\ **// :Explore **//' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match:Nexplore :Nexplore' + exe 'silent! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match:Pexplore :Pexplore' + exe 'silent! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectoryd d' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.1 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Filemf mf' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.2 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexpmr mr' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.3 '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Controla a' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.4 '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Targetmc mc' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.5 '.g:NetrwTopLvlMenu.'Marked\ Files.DeleteD D' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.6 '.g:NetrwTopLvlMenu.'Marked\ Files.Diffmd md' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.7 '.g:NetrwTopLvlMenu.'Marked\ Files.Editme me' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmdmx mx' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Targetmm mm' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.ObtainO O' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Printmp mp' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.ReplaceR R' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Targetmt mt' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.TagmT mT' + exe 'silent! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompressmz mz' + exe 'silent! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'Obtain\ FileO O' + exe 'silent! menu '.g:NetrwMenuPriority.'.16.1 '.g:NetrwTopLvlMenu.'Style.Listing\ Style\ (thin-long-wide-tree)i i' + exe 'silent! menu '.g:NetrwMenuPriority.'.16.2 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Showa a' + exe 'silent! menu '.g:NetrwMenuPriority.'.16.3 '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order'."r r" + exe 'silent! menu '.g:NetrwMenuPriority.'.16.4 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method\ (name-time-size)s s' + exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/DirectoryR R' + exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directoryc c' + let s:netrw_menucnt= 28 + + elseif !a:domenu + let s:netrwcnt = 0 + let curwin = winnr() + windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif + exe curwin."wincmd w" + + if s:netrwcnt <= 1 +" call Decho("clear menus") + exe 'silent! unmenu '.g:NetrwTopLvlMenu +" call Decho('exe silent! unmenu '.g:NetrwTopLvlMenu.'*') + silent! unlet s:netrw_menu_enabled endif endif +" call Dret("NetrwMenu") + endif - if v:shell_error == 0 - " refresh listing -" call Decho("refresh listing") - call netrw#NetSavePosn() - call s:NetRefresh(1,s:NetBrowseChgDir(1,'./')) - elseif !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",26) - endif - redraw! +endfun +" ========================================== +" s:NetrwObtain: obtain file under cursor or from markfile list {{{2 +fun! s:NetrwObtain(islocal) +" call Dfunc("NetrwObtain(islocal=".a:islocal.")") + + if exists("s:netrwmarkfilelist_{bufnr('%')}") + for fname in s:netrwmarkfilelist_{bufnr("%")} + let islocal= fname !~ '^\a\+://' + call netrw#NetrwObtain(islocal,fname) + endfor + call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) + endif + if exists("s:netrwmarkfilelist") + for fname in s:netrwmarkfilelist + let islocal= fname !~ '^\a\+://' + call netrw#NetrwObtain(islocal,fname) + endfor + call s:NetrwUnmarkAll() else - " Remote mkdir: - let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) - let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname -" call Decho("exe silent! !".mkdircmd." ".g:netrw_shq.newdirname.g:netrw_shq) - exe "silent! !".mkdircmd." ".g:netrw_shq.newdirname.g:netrw_shq - if v:shell_error == 0 - " refresh listing - call netrw#NetSavePosn() - call s:NetRefresh(0,s:NetBrowseChgDir(0,'./')) - elseif !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27) - endif - redraw! + call netrw#NetrwObtain(a:islocal,expand("")) endif -" call Dret("NetMakeDir") +" call Dret("NetrwObtain") endfun " --------------------------------------------------------------------- -" NetBookmarkDir: {{{2 -" 0: (user: ) bookmark current directory -" 1: (user: ) change to the bookmarked directory -" 2: (user: ) list bookmarks -" 3: (browsing) record current directory history -" 4: (user: ) go up (previous) bookmark -" 5: (user: ) go down (next) bookmark -fun! s:NetBookmarkDir(chg,curdir) -" call Dfunc("NetBookmarkDir(chg=".a:chg." curdir<".a:curdir.">) cnt=".v:count." bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." bookmax=".g:NETRW_BOOKMARKMAX." histmax=".g:netrw_dirhistmax) +" netrw#NetrwObtain: {{{2 +fun! netrw#NetrwObtain(islocal,fname,...) +" call Dfunc("netrw#NetrwObtain(islocal=".a:islocal." fname<".a:fname.">) a:0=".a:0) + " NetrwStatusLine support - for obtaining support - if a:chg == 0 - " bookmark the current directory -" call Decho("(user: ) bookmark the current directory") - if v:count > 0 - " handle bookmark# specified via the count - let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir - if !exists("g:NETRW_BOOKMARKMAX") - let g:NETRW_BOOKMARKMAX= v:count - elseif v:count > g:NETRW_BOOKMARKMAX - let g:NETRW_BOOKMARKMAX= v:count - endif + if a:islocal + + " obtain local file from getcwd() to b:netrw_curdir +" call Decho("obtain local file from ".getcwd()." to b:netrw_curdir<".b:netrw_curdir.">") + if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir + let fname= expand("") + let fcopy= readfile(b:netrw_curdir."/".fname,"b") + call writefile(fcopy,getcwd()."/".fname,"b") + elseif !exists("b:netrw_curdir") + call netrw#ErrorMsg(s:ERROR,"local browsing directory doesn't exist!",36) else - " handle no count specified - let g:NETRW_BOOKMARKMAX = g:NETRW_BOOKMARKMAX + 1 - let g:NETRW_BOOKMARKDIR_{g:NETRW_BOOKMARKMAX} = a:curdir + call netrw#ErrorMsg(s:WARNING,"local browsing directory and current directory are identical",37) endif - echo "bookmarked the current directory" - elseif a:chg == 1 - " change to the bookmarked directory -" call Decho("(user: ) change to the bookmarked directory") - if exists("g:NETRW_BOOKMARKDIR_{v:count}") - exe "e ".g:NETRW_BOOKMARKDIR_{v:count} + else + + " obtain a remote file to local directory (see tgtdir below) +" call Decho("obtain a remote file to local directory<".getcwd().">") + call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.a:fname) + + " set up target directory (default is vim's idea of the current directory) + if a:0 > 0 + let tgtdir= a:1 else - echomsg "Sorry, bookmark#".v:count." doesn't exist!" - endif + let tgtdir= getcwd() + endif +" call Decho("obtain a remote file<".a:fname."> to tgtdir<".tgtdir.">") + if exists("w:netrw_method") && w:netrw_method =~ '[235]' +" call Decho("method=".w:netrw_method) + if executable("ftp") +" call Decho("using ftp, method=".w:netrw_method) + let curdir = b:netrw_curdir + let path = substitute(curdir,'ftp://[^/]\+/','','e') + let curline= line(".") + let endline= line("$")+1 + setlocal ma noro +" call Decho("setlocal ma noro") + keepjumps $ +" call Decho("getcwd<".getcwd().">") +" call Decho("curdir<".curdir.">") +" call Decho("path<".path.">") +" call Decho("curline=".curline) +" call Decho("endline=".endline) + + "......................................... + if w:netrw_method == 2 + " ftp + <.netrc>: Method #2 + setlocal ff=unix + if path != "" + put ='cd '.path +" call Decho("ftp: cd ".path) + endif + if tgtdir != '.' + put ='lcd '.tgtdir + endif + put ='get '.a:fname +" call Decho("ftp: get ".a:fname) + put ='quit' +" call Decho("ftp: quit") + if exists("g:netrw_port") && g:netrw_port != "" +" call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) + exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port + else +" call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) + exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine + endif - elseif a:chg == 2 - redraw! - let didwork= 0 - " list user's bookmarks -" call Decho("(user: ) list user's bookmarks") - if exists("g:NETRW_BOOKMARKMAX") -" call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]") - let cnt= 0 - while cnt <= g:NETRW_BOOKMARKMAX - if exists("g:NETRW_BOOKMARKDIR_{cnt}") -" call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}) - echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt} - let didwork= 1 + "......................................... + elseif w:netrw_method == 3 + " ftp + machine,id,passwd,filename: Method #3 + setlocal ff=unix + if exists("g:netrw_port") && g:netrw_port != "" + put ='open '.g:netrw_machine.' '.g:netrw_port +" call Decho('ftp: open '.g:netrw_machine.' '.g:netrw_port) + else + put ='open '.g:netrw_machine +" call Decho('ftp: open '.g:netrw_machine) endif - let cnt= cnt + 1 - endwhile - endif - " list directory history - let cnt = g:NETRW_DIRHIST_CNT - let first = 1 - let histcnt = 0 - while ( first || cnt != g:NETRW_DIRHIST_CNT ) -" call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:NETRW_DIRHIST_CNT) - let histcnt= histcnt + 1 - if exists("g:NETRW_DIRHIST_{cnt}") -" call Decho("Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt}) - echo "Netrw History#".histcnt.": ".g:NETRW_DIRHIST_{cnt} - let didwork= 1 + if exists("g:netrw_ftp") && g:netrw_ftp == 1 + put =g:netrw_uid + put ='\"'.s:netrw_passwd.'\"' +" call Decho('ftp: g:netrw_uid') +" call Decho('ftp: s:netrw_passwd') + else + put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' +" call Decho('user '.g:netrw_uid.' '.s:netrw_passwd) + endif + + if path != "" + put ='cd '.path +" call Decho('ftp: cd '.a:path) endif - let first = 0 - let cnt = ( cnt - 1 ) % g:netrw_dirhistmax - if cnt < 0 - let cnt= cnt + g:netrw_dirhistmax + if tgtdir != '.' + put ='lcd '.tgtdir +" call Decho('ftp: lcd '.tgtdir) endif - endwhile - if didwork - call inputsave()|call input("Press to continue")|call inputrestore() - endif + put ='get '.a:fname +" call Decho("ftp: get ".a:fname) + put ='quit' +" call Decho("ftp: quit") - elseif a:chg == 3 - " saves most recently visited directories (when they differ) -" call Decho("(browsing) record curdir history") - if !exists("g:NETRW_DIRHIST_0") || g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} != a:curdir - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax -" let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= substitute(a:curdir,'[/\\]$','','e') - let g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}= a:curdir -" call Decho("save dirhist#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") - endif + " perform ftp: + " -i : turns off interactive prompting from ftp + " -n unix : DON'T use <.netrc>, even though it exists + " -n win32: quit being obnoxious about password +" call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i -n") + exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i -n" - elseif a:chg == 4 - " u: change to the previous directory stored on the history list -" call Decho("(user: ) chg to prev dir from history") - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax - if g:NETRW_DIRHIST_CNT < 0 - let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax - endif - if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}") -" call Decho("changedir u#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") - setlocal ma noro - %d - setlocal nomod + "......................................... + else + call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",28) endif -" call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) - exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} + " restore + exe "silent! ".endline.",$d" + exe "keepjumps ".curline + setlocal noma nomod ro else - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax - echo "Sorry, no predecessor directory exists yet" - endif - - elseif a:chg == 5 - " U: change to the subsequent directory stored on the history list -" call Decho("(user: ) chg to next dir from history") - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax - if exists("g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}") -" call Decho("changedir U#".g:NETRW_DIRHIST_CNT."<".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}.">") - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") - setlocal ma noro - %d - setlocal nomod +" call Decho("ftp not executable") + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"this system doesn't support ftp",29) endif -" call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}) - exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT} - else - let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT - 1 ) % g:netrw_dirhistmax - if g:NETRW_DIRHIST_CNT < 0 - let g:NETRW_DIRHIST_CNT= g:NETRW_DIRHIST_CNT + g:netrw_dirhistmax + " restore status line + let &stl = s:netrw_users_stl + let &laststatus = s:netrw_users_ls + " restore NetrwMethod + if exists("keep_netrw_method") + call s:NetrwMethod(keep_netrw_choice) + let w:netrw_method = keep_netrw_wmethod endif - echo "Sorry, no successor directory exists yet" +" call Dret("NetrwObtain") + return endif - endif - call s:NetBookmarkMenu() -" call Dret("NetBookmarkDir") -endfun -" --------------------------------------------------------------------- -" NetBookmarkMenu: {{{2 -fun! s:NetBookmarkMenu() - if !exists("s:netrw_menucnt") - return - endif -" call Dfunc("NetBookmarkMenu() bookmarkcnt=".g:NETRW_BOOKMARKMAX." histcnt=".g:NETRW_DIRHIST_CNT." menucnt=".s:netrw_menucnt) - if has("menu") && has("gui_running") && &go =~ 'm' - if exists("g:NetrwTopLvlMenu") - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark' + "......................................... + else + " scp: Method#4 + let curdir = b:netrw_curdir + let path = substitute(curdir,'scp://[^/]\+/','','e') + if exists("g:netrw_port") && g:netrw_port != "" + let useport= " ".g:netrw_scpport." ".g:netrw_port + else + let useport= "" + endif + if a:fname =~ '^\a\+:' + let fname= substitute(a:fname,'^.*/','','') + else + let fname= a:fname + endif + if path !~ '/$' + let path= path.'/' + endif +" call Decho("using scp: curdir <".curdir.">") +" call Decho("using scp: fname <".fname.">") +" call Decho("using scp: machine<".g:netrw_machine.">") +" call Decho("using scp: path <".path.">") +" call Decho("using scp: pwd <".getcwd().">") +" call Decho("using scp: tgtdir <".tgtdir.">") +" call Decho("using scp: useport<".useport.">") +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ".tgtdir) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ".tgtdir + endif + + " restore status line + let &stl = s:netrw_users_stl + let &laststatus = s:netrw_users_ls +" redraw! + + " restore NetrwMethod + if exists("keep_netrw_method") + call s:NetrwMethod(keep_netrw_choice) + let w:netrw_method = keep_netrw_wmethod + endif + endif + +" call Dret("netrw#NetrwObtain") +endfun + +" --------------------------------------------------------------------- +" s:NetrwPrevWinOpen: open file/directory in previous window. {{{2 +" If there's only one window, then the window will first be split. +" Returns: +" choice = 0 : didn't have to choose +" choice = 1 : saved modified file in window first +" choice = 2 : didn't save modified file, opened window +" choice = 3 : cancel open +fun! s:NetrwPrevWinOpen(islocal) +" call Dfunc("NetrwPrevWinOpen(islocal=".a:islocal.")") + + " grab a copy of the b:netrw_curdir to pass it along to newly split windows + let curdir = b:netrw_curdir + + " get last window number and the word currently under the cursor + let lastwinnr = winnr("$") + let curword = s:NetrwGetWord() + let choice = 0 +" call Decho("lastwinnr=".lastwinnr." curword<".curword.">") + + let didsplit = 0 + if lastwinnr == 1 + " if only one window, open a new one first +" call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")") + if g:netrw_preview +" call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".g:netrw_winsize."wincmd s") + exe (g:netrw_alto? "top " : "bot ")."vert ".g:netrw_winsize."wincmd s" + else +" call Decho("exe ".(g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s") + exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" + endif + let didsplit = 1 + + else + call s:SaveBufVars() +" call Decho("wincmd p") + wincmd p + call s:RestoreBufVars() + " if the previous window's buffer has been changed (is modified), + " and it doesn't appear in any other extant window, then ask the + " user if s/he wants to abandon modifications therein. + let bnr = winbufnr(0) + let bnrcnt = 0 + if &mod +" call Decho("detected: prev window's buffer has been modified: bnr=".bnr." winnr#".winnr()) + let eikeep= &ei + set ei=all + windo if winbufnr(0) == bnr | let bnrcnt=bnrcnt+1 | endif + exe bnr."wincmd p" + let &ei= eikeep +" call Decho("bnr=".bnr." bnrcnt=".bnrcnt." buftype=".&bt." winnr#".winnr()) + if bnrcnt == 1 + let bufname= bufname(winbufnr(winnr())) + let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel") +" call Decho("bufname<".bufname."> choice=".choice." winnr#".winnr()) + + if choice == 1 + " Yes -- write file & then browse + let v:errmsg= "" + silent w + if v:errmsg != "" + call netrw#ErrorMsg(s:ERROR,"unable to write <".bufname.">!",30) + if didsplit + q + else + wincmd p + endif +" call Dret("NetrwPrevWinOpen ".choice." : unable to write <".bufname.">") + return choice + endif + + elseif choice == 2 + " No -- don't worry about changed file, just browse anyway + setlocal nomod + call netrw#ErrorMsg(s:WARNING,bufname." changes to ".bufname." abandoned",31) + wincmd p + + else + " Cancel -- don't do this + if didsplit + q + else + wincmd p + endif +" call Dret("NetrwPrevWinOpen ".choice." : cancelled") + return choice + endif + endif + endif + endif + + " restore b:netrw_curdir (window split/enew may have lost it) + let b:netrw_curdir= curdir + if a:islocal < 2 + if a:islocal + call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(a:islocal,curword)) + else + call s:NetrwBrowse(a:islocal,s:NetrwBrowseChgDir(a:islocal,curword)) + endif + endif +" call Dret("NetrwPrevWinOpen ".choice) + return choice +endfun + +" --------------------------------------------------------------------- +" s:NetrwUpload: load fname to tgt (used by NetrwMarkFileCopy()) {{{2 +" fname may itself be a remote or local file +" tgt is assumed to be remote, so NetWrite will be used +" (indirectly via an autocmd) +fun! s:NetrwUpload(fname,tgt) +" call Dfunc("s:NetrwUpload(fname<".a:fname."> tgt<".a:tgt.">)") + + 1split + let efname= escape(a:fname,g:netrw_fname_escape) +" call Decho("exe e ".efname) + exe "e ".efname + if a:tgt =~ '/$' + let wfname= substitute(a:fname,'^.*/','','') + let wfname= escape(a:tgt.wfname,g:netrw_fname_escape) +" call Decho("exe w ".wfname) + exe "w ".wfname + else + let wfname= escape(a:tgt,g:netrw_fname_escape) +" call Decho("exe w ".wfname) + exe "w ".wfname + endif + q! + +" call Dret("s:NetrwUpload") +endfun + +" --------------------------------------------------------------------- +" s:NetrwPreview: {{{2 +fun! s:NetrwPreview(path) range +" call Dfunc("NetrwPreview(path<".a:path.">)") + call s:NetrwOptionSave("s:") + call s:NetrwSafeOptions() + if has("quickfix") + if !isdirectory(a:path) + exe (g:netrw_preview? "vert " : "")."pedit ".escape(a:path,g:netrw_fname_escape) + elseif !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) + endif + elseif !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) + endif + call s:NetrwOptionRestore("s:") +" call Dret("NetrwPreview") +endfun + +" --------------------------------------------------------------------- +" s:NetrwRefresh: {{{2 +fun! s:NetrwRefresh(islocal,dirname) +" call Dfunc("NetrwRefresh(islocal<".a:islocal.">,dirname=".a:dirname.") hide=".g:netrw_hide." sortdir=".g:netrw_sort_direction) + " at the current time (Mar 19, 2007) all calls to NetrwRefresh() call NetrwBrowseChgDir() first. + " NetrwBrowseChgDir() may clear the display; hence a NetrwSavePosn() may not work if its placed here. + " Also, NetrwBrowseChgDir() now does a NetrwSavePosn() itself. + setlocal ma noro +" call Decho("setlocal ma noro") +" call Decho("clear buffer<".expand("%")."> with :%d") + %d + if a:islocal + call netrw#LocalBrowseCheck(a:dirname) + else + call s:NetrwBrowse(a:islocal,a:dirname) + endif + call netrw#NetrwRestorePosn() + + " restore file marks + if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" +" call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/") + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" + else +" call Decho("2match none") + 2match none + endif + +" redraw! +" call Dret("NetrwRefresh") +endfun + +" --------------------------------------------------------------------- +" s:NetrwSetSort: sets up the sort based on the g:netrw_sort_sequence {{{2 +" What this function does is to compute a priority for the patterns +" in the g:netrw_sort_sequence. It applies a substitute to any +" "files" that satisfy each pattern, putting the priority / in +" front. An "*" pattern handles the default priority. +fun! s:NetrwSetSort() +" call Dfunc("SetSort() bannercnt=".w:netrw_bannercnt) + if w:netrw_liststyle == s:LONGLIST + let seqlist = substitute(g:netrw_sort_sequence,'\$','\\%(\t\\|\$\\)','ge') + else + let seqlist = g:netrw_sort_sequence + endif + " sanity check -- insure that * appears somewhere + if seqlist == "" + let seqlist= '*' + elseif seqlist !~ '\*' + let seqlist= seqlist.',*' + endif + let priority = 1 + while seqlist != "" + if seqlist =~ ',' + let seq = substitute(seqlist,',.*$','','e') + let seqlist = substitute(seqlist,'^.\{-},\(.*\)$','\1','e') + else + let seq = seqlist + let seqlist = "" + endif + let eseq= escape(seq,'/') + if priority < 10 + let spriority= "00".priority.'\/' + elseif priority < 100 + let spriority= "0".priority.'\/' + else + let spriority= priority.'\/' + endif +" call Decho("priority=".priority." spriority<".spriority."> seq<".seq."> seqlist<".seqlist.">") + + " sanity check + if w:netrw_bannercnt > line("$") + " apparently no files were left after a Hiding pattern was used +" call Dret("SetSort : no files left after hiding") + return + endif + if seq == '*' + let starpriority= spriority + else + exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/' + exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^\d\{3}\/\d\{3}\//s/^\d\{3}\///' + endif + let priority = priority + 1 + endwhile + if exists("starpriority") + exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.starpriority.'/' + endif + + " Following line associated with priority -- items that satisfy a priority + " pattern get prefixed by ###/ which permits easy sorting by priority. + " Sometimes files can satisfy multiple priority patterns -- only the latest + " priority pattern needs to be retained. So, at this point, these excess + " priority prefixes need to be removed, but not directories that happen to + " be just digits themselves. + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+\ze./\1/e' + +" call Dret("SetSort") +endfun + +" ===================================================================== +" s:NetrwSortStyle: change sorting style (name - time - size) and refresh display {{{2 +fun! s:NetrwSortStyle(islocal) +" call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">") + call s:NetrwSaveWordPosn() + let svpos= netrw#NetrwSavePosn() + + let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name' + norm! 0 + call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) + call netrw#NetrwRestorePosn(svpos) + +" call Dret("s:NetrwSortStyle : netrw_sort_by<".g:netrw_sort_by.">") +endfun + +" --------------------------------------------------------------------- +" s:NetrwSplit: mode {{{2 +" =0 : net and o +" =1 : net and t +" =2 : net and v +" =3 : local and o +" =4 : local and t +" =5 : local and v +fun! s:NetrwSplit(mode) +" call Dfunc("s:NetrwSplit(mode=".a:mode.") alto=".g:netrw_alto." altv=".g:netrw_altv) + + call s:SaveWinVars() + + if a:mode == 0 + " remote and o +" call Decho("exe ".(g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s") + exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" + let s:didsplit= 1 + call s:RestoreWinVars() + call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord())) + unlet s:didsplit + + elseif a:mode == 1 + " remote and t + let cursorword = s:NetrwGetWord() +" call Decho("tabnew") + tabnew + let s:didsplit= 1 + call s:RestoreWinVars() + call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,cursorword)) + unlet s:didsplit + + elseif a:mode == 2 + " remote and v +" call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v") + exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" + let s:didsplit= 1 + call s:RestoreWinVars() + call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord())) + unlet s:didsplit + + elseif a:mode == 3 + " local and o +" call Decho("exe ".(g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s") + exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" + let s:didsplit= 1 + call s:RestoreWinVars() + call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) + unlet s:didsplit + + elseif a:mode == 4 + " local and t + let netrw_curdir= b:netrw_curdir + let cursorword = s:NetrwGetWord() +" call Decho("tabnew") + tabnew + let b:netrw_curdir= netrw_curdir + let s:didsplit= 1 + call s:RestoreWinVars() + call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,cursorword)) + unlet s:didsplit + + elseif a:mode == 5 + " local and v +" call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v") + exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v" + let s:didsplit= 1 + call s:RestoreWinVars() + call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) + unlet s:didsplit + + else + call netrw#ErrorMsg(s:ERROR,"(NetrwSplit) unsupported mode=".a:mode,45) + endif + +" call Dret("s:NetrwSplit") +endfun + +" --------------------------------------------------------------------- +" NetrwStatusLine: {{{2 +fun! NetrwStatusLine() + +" vvv NetrwStatusLine() debugging vvv +" let g:stlmsg="" +" if !exists("w:netrw_explore_bufnr") +" let g:stlmsg="!X" +" elseif w:netrw_explore_bufnr != bufnr("%") +" let g:stlmsg="explore_bufnr!=".bufnr("%") +" endif +" if !exists("w:netrw_explore_line") +" let g:stlmsg=" !X" +" elseif w:netrw_explore_line != line(".") +" let g:stlmsg=" explore_line!={line(.)<".line(".").">" +" endif +" if !exists("w:netrw_explore_list") +" let g:stlmsg=" !X" +" endif +" ^^^ NetrwStatusLine() debugging ^^^ + + if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") + " restore user's status line + let &stl = s:netrw_users_stl + let &laststatus = s:netrw_users_ls + if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif + if exists("w:netrw_explore_line") |unlet w:netrw_explore_line |endif + return "" + else + return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen + endif +endfun + +" --------------------------------------------------------------------- +" s:NetrwTreeDir: determine tree directory given current cursor position {{{2 +" (full path directory with trailing slash returned) +fun! s:NetrwTreeDir() +" call Dfunc("NetrwTreeDir() curline#".line(".")."<".getline(".")."> b:netrw_curdir<".b:netrw_curdir."> tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%").">") + + let treedir= b:netrw_curdir +" call Decho("set initial treedir<".treedir.">") + let s:treecurpos= netrw#NetrwSavePosn() + + if w:netrw_liststyle == s:TREELIST +" call Decho("w:netrrw_liststyle is TREELIST:") +" call Decho("line#".line(".")." getline(.)<".getline('.')."> treecurpos<".string(s:treecurpos).">") + if getline('.') =~ '/$' + let treedir= substitute(getline('.'),'^\%(| \)*\([^|].\{-}\)$','\1','e') + else + let treedir= "" + endif + +" call Decho("treedir<".treedir.">") + + " detect user attempting to close treeroot + if getline('.') !~ '|' && getline('.') != '..' +" call Decho("user attempted to close treeroot") + " now force a refresh +" call Decho("clear buffer<".expand("%")."> with :%d") + keepjumps %d +" call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">") + return b:netrw_curdir + endif + + " elide all non-depth information + let depth = substitute(getline('.'),'^\(\%(| \)*\)[^|].\{-}$','\1','e') +" call Decho("depth<".depth."> 1st subst") + + " elide first depth + let depth = substitute(depth,'^| ','','') +" call Decho("depth<".depth."> 2nd subst") + + " construct treedir by searching backwards at correct depth +" call Decho("constructing treedir<".treedir."> depth<".depth.">") + while depth != "" && search('^'.depth.'[^|].\{-}/$','bW') + let dirname= substitute(getline("."),'^\(| \)*','','e') + let treedir= dirname.treedir + let depth = substitute(depth,'^| ','','') +" call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">") + endwhile + if w:netrw_treetop =~ '/$' + let treedir= w:netrw_treetop.treedir + else + let treedir= w:netrw_treetop.'/'.treedir + endif +" call Decho("bufnr(.)=".bufnr("%")." line($)=".line("$")." line(.)=".line(".")) + endif + let treedir= substitute(treedir,'//$','/','') + +" " now force a refresh +"" call DECHO("clear buffer<".expand("%")."> with :%d") +" setlocal ma noro +" keepjumps %d + +" call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">") + return treedir +endfun + +" --------------------------------------------------------------------- +" s:NetrwTreeDisplay: recursive tree display {{{2 +fun! s:NetrwTreeDisplay(dir,depth) +" call Dfunc("NetrwTreeDisplay(dir<".a:dir."> depth<".a:depth.">)") + + " insure that there are no folds + setlocal nofen + + " install ../ and shortdir + if a:depth == "" + call setline(line("$")+1,'../') +" call Decho("setline#".line("$")." ../ (depth is zero)") + endif + if a:dir =~ '^\a\+://' + if a:dir == w:netrw_treetop + let shortdir= a:dir + else + let shortdir= substitute(a:dir,'^.*/\([^/]\+\)/$','\1/','e') + endif + call setline(line("$")+1,a:depth.shortdir) + else + let shortdir= substitute(a:dir,'^.*/','','e') + call setline(line("$")+1,a:depth.shortdir.'/') + endif +" call Decho("setline#".line("$")." shortdir<".a:depth.shortdir.">") + + " append a / to dir if its missing one + let dir= a:dir + if dir !~ '/$' + let dir= dir.'/' + endif + + " display subtrees (if any) + let depth= "| ".a:depth + +" call Decho("display subtrees with depth<".depth."> and current leaves") + for entry in w:netrw_treedict[a:dir] + let direntry= substitute(dir.entry,'/$','','e') +" call Decho("dir<".dir."> entry<".entry."> direntry<".direntry.">") + if entry =~ '/$' && has_key(w:netrw_treedict,direntry) +" call Decho("<".direntry."> is a key in treedict - display subtree for it") + call s:NetrwTreeDisplay(direntry,depth) + elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/') +" call Decho("<".direntry."/> is a key in treedict - display subtree for it") + call s:NetrwTreeDisplay(direntry.'/',depth) + else +" call Decho("<".entry."> is not a key in treedict (no subtree)") + call setline(line("$")+1,depth.entry) + endif + endfor +" call Dret("NetrwTreeDisplay") +endfun + +" --------------------------------------------------------------------- +" s:NetrwTreeListing: displays tree listing from treetop on down, using NetrwTreeDisplay() {{{2 +fun! s:NetrwTreeListing(dirname) + if w:netrw_liststyle == s:TREELIST +" call Dfunc("NetrwTreeListing() bufname<".expand("%").">") +" call Decho("curdir<".a:dirname.">") +" call Decho("win#".winnr().": w:netrw_treetop ".(exists("w:netrw_treetop")? "exists" : "doesn't exit")." w:netrw_treedict ".(exists("w:netrw_treedict")? "exists" : "doesn't exit")) + + " update the treetop +" call Decho("update the treetop") + if !exists("w:netrw_treetop") + let w:netrw_treetop= a:dirname +" call Decho("w:netrw_treetop<".w:netrw_treetop."> (reusing)") + elseif (w:netrw_treetop =~ ('^'.a:dirname) && s:Strlen(a:dirname) < s:Strlen(w:netrw_treetop)) || a:dirname !~ ('^'.w:netrw_treetop) + let w:netrw_treetop= a:dirname +" call Decho("w:netrw_treetop<".w:netrw_treetop."> (went up)") + endif + + " insure that we have at least an empty treedict + if !exists("w:netrw_treedict") + let w:netrw_treedict= {} + endif + + " update the directory listing for the current directory +" call Decho("updating dictionary with ".a:dirname.":[..directory listing..]") +" call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$")) + exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d' + let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$")) +" call Decho("w:treedict[".a:dirname."]= ".w:netrw_treedict[a:dirname]) + exe "silent! keepjumps ".w:netrw_bannercnt.",$d" + + " if past banner, record word + if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt + let fname= expand("") + else + let fname= "" endif +" call Decho("fname<".fname.">") - " show bookmarked places - let cnt = 0 - while cnt <= g:NETRW_BOOKMARKMAX - if exists("g:NETRW_BOOKMARKDIR_{cnt}") - let bmdir= escape(g:NETRW_BOOKMARKDIR_{cnt},'.') -" call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmdir.' :e '.g:NETRW_BOOKMARKDIR_{cnt}) - exe 'silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmdir.' :e '.g:NETRW_BOOKMARKDIR_{cnt}."\" + " display from treetop on down + call s:NetrwTreeDisplay(w:netrw_treetop,"") + +" call Dret("NetrwTreeListing : bufname<".expand("%").">") + endif +endfun + +" --------------------------------------------------------------------- +" s:NetrwWideListing: {{{2 +fun! s:NetrwWideListing() + + if w:netrw_liststyle == s:WIDELIST +" call Dfunc("NetrwWideListing() w:netrw_liststyle=".w:netrw_liststyle.' fo='.&fo.' l:fo='.&l:fo) + " look for longest filename (cpf=characters per filename) + " cpf: characters per file + " fpl: files per line + " fpc: files per column + setlocal ma noro +" call Decho("setlocal ma noro") + let b:netrw_cpf= 0 + if line("$") >= w:netrw_bannercnt + exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' + else +" call Dret("NetrwWideListing") + return + endif +" call Decho("max file strlen+1=".b:netrw_cpf) + let b:netrw_cpf= b:netrw_cpf + 1 + + " determine qty files per line (fpl) + let w:netrw_fpl= winwidth(0)/b:netrw_cpf + if w:netrw_fpl <= 0 + let w:netrw_fpl= 1 + endif +" call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl) + + " make wide display + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/' + let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl + let newcolstart = w:netrw_bannercnt + fpc + let newcolend = newcolstart + fpc - 1 +" call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]") + silent! let keepregstar = @* + while line("$") >= newcolstart + if newcolend > line("$") | let newcolend= line("$") | endif + let newcolqty= newcolend - newcolstart + exe newcolstart + if newcolqty == 0 + exe "silent keepjumps norm! 0\$hx".w:netrw_bannercnt."G$p" + else + exe "silent keepjumps norm! 0\".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' endif - let cnt= cnt + 1 + exe "silent keepjumps ".newcolstart.','.newcolend.'d' + exe 'silent keepjumps '.w:netrw_bannercnt endwhile + silent! let @*= keepregstar + exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e' + setlocal noma nomod ro +" call Dret("NetrwWideListing") + endif - " show directory browsing history - let cnt = g:NETRW_DIRHIST_CNT - let first = 1 - let histcnt = 0 - while ( first || cnt != g:NETRW_DIRHIST_CNT ) - let histcnt = histcnt + 1 - let priority = g:NETRW_DIRHIST_CNT + histcnt - if exists("g:NETRW_DIRHIST_{cnt}") - let bmdir= escape(g:NETRW_DIRHIST_{cnt},'.') -" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.g:NETRW_DIRHIST_{cnt}) - exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.g:NETRW_DIRHIST_{cnt}."\" +endfun + +" --------------------------------------------------------------------- +" s:PerformListing: {{{2 +fun! s:PerformListing(islocal) +" call Dfunc("s:PerformListing(islocal=".a:islocal.") buf(%)=".bufnr("%")."<".bufname("%").">") + + call s:NetrwSafeOptions() + setlocal noro ma +" call Decho("setlocal noro ma") + +" if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 " Decho +" call Decho("(netrw) Processing your browsing request...") +" endif " Decho + +" call Decho('w:netrw_liststyle='.(exists("w:netrw_liststyle")? w:netrw_liststyle : 'n/a')) + if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") + " force a refresh for tree listings +" call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d") + keepjumps %d + endif + + " save current directory on directory history list + call s:NetrwBookmarkDir(3,b:netrw_curdir) + + " Set up the banner {{{3 +" call Decho("set up banner") + keepjumps put ='\" ============================================================================' + keepjumps put ='\" Netrw Directory Listing (netrw '.g:loaded_netrw.')' + keepjumps put ='\" '.b:netrw_curdir + keepjumps 1d + let w:netrw_bannercnt= 3 + exe "keepjumps ".w:netrw_bannercnt + + let sortby= g:netrw_sort_by + if g:netrw_sort_direction =~ "^r" + let sortby= sortby." reversed" + endif + + " Sorted by... {{{3 +" call Decho("handle specified sorting: g:netrw_sort_by<".g:netrw_sort_by.">") + if g:netrw_sort_by =~ "^n" +" call Decho("directories will be sorted by name") + " sorted by name + keepjumps put ='\" Sorted by '.sortby + keepjumps put ='\" Sort sequence: '.g:netrw_sort_sequence + let w:netrw_bannercnt= w:netrw_bannercnt + 2 + else +" call Decho("directories will be sorted by size or time") + " sorted by size or date + keepjumps put ='\" Sorted by '.sortby + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + endif + exe "keepjumps ".w:netrw_bannercnt + + " show copy/move target, if any + if exists("s:netrwmftgt") && exists("s:netrwmfloc") +" call Decho("show copy/move target<".s:netrwmftgt.">") + if s:netrwmfloc + keepjumps put ='\" Copy/Move Tgt: '.s:netrwmftgt.' (local)' + else + keepjumps put ='\" Copy/Move Tgt: '.s:netrwmftgt.' (remote)' + endif + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + else +" call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt") + endif + exe "keepjumps ".w:netrw_bannercnt + + " Hiding... -or- Showing... {{{3 +" call Decho("handle hiding/showing (g:netrw_hide=".g:netrw_list_hide." g:netrw_list_hide<".g:netrw_list_hide.">)") + if g:netrw_list_hide != "" && g:netrw_hide + if g:netrw_hide == 1 + keepjumps put ='\" Hiding: '.g:netrw_list_hide + else + keepjumps put ='\" Showing: '.g:netrw_list_hide + endif + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + endif + exe "keepjumps ".w:netrw_bannercnt + keepjumps put ='\" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec' + keepjumps put ='\" ============================================================================' + let w:netrw_bannercnt= w:netrw_bannercnt + 2 + + " bannercnt should index the line just after the banner + let w:netrw_bannercnt= w:netrw_bannercnt + 1 + exe "keepjumps ".w:netrw_bannercnt +" call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$")) + + " set up syntax highlighting {{{3 +" call Decho("set up syntax highlighting") + if has("syntax") + setlocal ft=netrw + if !exists("g:syntax_on") || !g:syntax_on + setlocal ft= + endif + endif + + " get list of files +" call Decho("Get list of files - islocal=".a:islocal) + if a:islocal + call s:LocalListing() + else " remote + call s:NetrwRemoteListing() + endif +" call Decho("w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)") + + " manipulate the directory listing (hide, sort) {{{3 + if line("$") >= w:netrw_bannercnt +" call Decho("manipulate directory listing (hide)") +" call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") + if g:netrw_hide && g:netrw_list_hide != "" + call s:NetrwListHide() + endif + if line("$") >= w:netrw_bannercnt +" call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">") + + if g:netrw_sort_by =~ "^n" + " sort by name + call s:NetrwSetSort() + + if w:netrw_bannercnt < line("$") +" call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")") + if g:netrw_sort_direction =~ 'n' + " normal direction sorting + exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' + else + " reverse direction sorting + exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' + endif + endif + " remove priority pattern prefix +" call Decho("remove priority pattern prefix") + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e' + + elseif a:islocal + if w:netrw_bannercnt < line("$") +" call Decho("g:netrw_sort_direction=".g:netrw_sort_direction) + if g:netrw_sort_direction =~ 'n' +" call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort') + exe 'silent keepjumps '.w:netrw_bannercnt.',$sort' + else +" call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!') + exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!' + endif + endif + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e' endif - let first = 0 - let cnt = ( cnt - 1 ) % g:netrw_dirhistmax - if cnt < 0 - let cnt= cnt + g:netrw_dirhistmax + + elseif g:netrw_sort_direction =~ 'r' +" call Decho('reverse the sorted listing') + exe 'silent keepjumps '.w:netrw_bannercnt.'g/^/m '.w:netrw_bannercnt + endif + endif + + " convert to wide/tree listing {{{3 +" call Decho("modify display if wide/tree listing style") + call s:NetrwWideListing() + call s:NetrwTreeListing(b:netrw_curdir) + + if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt + " place cursor on the top-left corner of the file listing +" call Decho("place cursor on top-left corner of file listing") + exe 'silent keepjumps '.w:netrw_bannercnt + norm! 0 + endif + + " record previous current directory + let w:netrw_prvdir= b:netrw_curdir +" call Decho("record netrw_prvdir<".w:netrw_prvdir.">") + + " save certain window-oriented variables into buffer-oriented variables {{{3 + call s:SetBufWinVars() + call s:NetrwOptionRestore("w:") + + " set display to netrw display settings +" call Decho("set display to netrw display settings (noma nomod etc)") + setlocal noma nomod nonu nobl nowrap ro + if exists("s:treecurpos") + + call netrw#NetrwRestorePosn(s:treecurpos) + unlet s:treecurpos + endif + +" call Dret("s:PerformListing : curpos<".string(getpos(".")).">") +endfun + +" --------------------------------------------------------------------- +" s:SetupNetrwStatusLine: {{{2 +fun! s:SetupNetrwStatusLine(statline) +" call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)") + + if !exists("s:netrw_setup_statline") + let s:netrw_setup_statline= 1 +" call Decho("do first-time status line setup") + + if !exists("s:netrw_users_stl") + let s:netrw_users_stl= &stl + endif + if !exists("s:netrw_users_ls") + let s:netrw_users_ls= &laststatus + endif + + " set up User9 highlighting as needed + let keepa= @a + redir @a + try + hi User9 + catch /^Vim\%((\a\+)\)\=:E411/ + if &bg == "dark" + hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue + else + hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue endif - endwhile + endtry + redir END + let @a= keepa endif -" call Dret("NetBookmarkMenu") + + " set up status line (may use User9 highlighting) + " insure that windows have a statusline + " make sure statusline is displayed + let &stl=a:statline + setlocal laststatus=2 +" call Decho("stl=".&stl) + redraw + +" call Dret("SetupNetrwStatusLine : stl=".&stl) endfun " --------------------------------------------------------------------- -" NetObtain: obtain file under cursor (for remote browsing support) {{{2 -fun! netrw#NetObtain(vismode,...) range -" call Dfunc("NetObtain(vismode=".a:vismode.") a:0=".a:0) - - if a:vismode == 0 - " normal mode - let fname= expand("") -" call Decho("no arguments, use <".fname.">") - elseif a:vismode == 1 - " visual mode - let keeprega = @a - norm! gv"ay - if g:netrw_liststyle == s:THINLIST - " thin listing - let filelist= split(@a,'\n') - elseif g:netrw_liststyle == s:LONGLIST - " long listing - let filelist= split(substitute(@a,'\t.\{-}\n','\n','g'),'\n') - else - " wide listing - let filelist = split(substitute(@a,'\s\{2,}','\n','g'),'\n') - let filelist = map(filelist,'substitute(v:val,"^\\s\\+","","")') - let filelist = map(filelist,'substitute(v:val,"\\s\\+$","","")') - endif -" call Decho("filelist<".string(filelist).">") - let @a= keeprega - for f in filelist - if f != "" - call netrw#NetObtain(2,f) - endif - endfor -" call Dret("NetObtain : visual mode handler") - return - elseif a:vismode == 2 - " multiple file mode - let fname= a:1 -" call Decho("visual mode handling: <".fname.">") - endif - - " NetrwStatusLine support - for obtaining support - call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname) +" Remote Directory Browsing Support: {{{1 +" =========================================== - if exists("w:netrw_method") && w:netrw_method =~ '[235]' -" call Decho("method=".w:netrw_method) - if executable("ftp") -" call Decho("ftp is executable, method=".w:netrw_method) - let curdir = b:netrw_curdir - let path = substitute(curdir,'ftp://[^/]\+/','','e') - let curline= line(".") - let endline= line("$")+1 - setlocal ma noro - keepjumps $ -" call Decho("getcwd<".getcwd().">") -" call Decho("curdir<".curdir.">") -" call Decho("path<".path.">") -" call Decho("curline=".curline) -" call Decho("endline=".endline) +" --------------------------------------------------------------------- +" s:NetrwRemoteListing: {{{2 +fun! s:NetrwRemoteListing() +" call Dfunc("s:NetrwRemoteListing() b:netrw_curdir<".b:netrw_curdir.">)") - "......................................... - if w:netrw_method == 2 - " ftp + <.netrc>: Method #2 - setlocal ff=unix - if path != "" - put ='cd '.path -" call Decho("ftp: cd ".path) - endif - put ='get '.fname -" call Decho("ftp: get ".fname) - put ='quit' -" call Decho("ftp: quit") - if exists("g:netrw_port") && g:netrw_port != "" -" call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) - exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port - else -" call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) - exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine - endif + call s:RemotePathAnalysis(b:netrw_curdir) - "......................................... - elseif w:netrw_method == 3 - " ftp + machine,id,passwd,filename: Method #3 - setlocal ff=unix - if exists("g:netrw_port") && g:netrw_port != "" - put ='open '.g:netrw_machine.' '.g:netrw_port -" call Decho('ftp: open '.g:netrw_machine.' '.g:netrw_port) - else - put ='open '.g:netrw_machine -" call Decho('ftp: open '.g:netrw_machine) + " sanity check: + if exists("b:netrw_method") && b:netrw_method =~ '[235]' +" call Decho("b:netrw_method=".b:netrw_method) + if !executable("ftp") + if !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18) endif + call s:NetrwOptionRestore("w:") +" call Dret("s:NetrwRemoteListing") + return + endif - if exists("g:netrw_ftp") && g:netrw_ftp == 1 - put =g:netrw_uid - put ='\"'.g:netrw_passwd.'\"' -" call Decho('ftp: g:netrw_uid') -" call Decho('ftp: g:netrw_passwd') + elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' + if !exists("g:netrw_quiet") + if g:netrw_list_cmd == "" + call netrw#ErrorMsg(s:ERROR,g:netrw_ssh_cmd." is not executable on your system",47) else - put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"' -" call Decho('user '.g:netrw_uid.' '.g:netrw_passwd) + call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19) endif + endif + + call s:NetrwOptionRestore("w:") +" call Dret("s:NetrwRemoteListing") + return + endif " (remote handling sanity check) + + if exists("b:netrw_method") +" call Decho("setting w:netrw_method<".b:netrw_method.">") + let w:netrw_method= b:netrw_method + endif - if path != "" - put ='cd '.path -" call Decho('cd '.a:path) + if s:method == "ftp" + " use ftp to get remote file listing +" call Decho("use ftp to get remote file listing") + let s:method = "ftp" + let listcmd = g:netrw_ftp_list_cmd + if g:netrw_sort_by =~ '^t' + let listcmd= g:netrw_ftp_timelist_cmd + elseif g:netrw_sort_by =~ '^s' + let listcmd= g:netrw_ftp_sizelist_cmd endif - put ='get '.fname -" call Decho("ftp: get ".fname) - put ='quit' -" call Decho("ftp: quit") +" call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)") + call s:NetrwRemoteFtpCmd(s:path,listcmd) +" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))' - " perform ftp: - " -i : turns off interactive prompting from ftp - " -n unix : DON'T use <.netrc>, even though it exists - " -n win32: quit being obnoxious about password -" call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i -n") - exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i -n" + if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST + " shorten the listing +" call Decho("generate short listing") + exe "keepjumps ".w:netrw_bannercnt - "......................................... - else - call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",28) + " cleanup + if g:netrw_ftp_browse_reject != "" + exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d" endif - " restore - exe "silent! ".endline.",$d" - exe "keepjumps ".curline - setlocal noma nomod ro - else -" call Decho("ftp not executable") - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"this system doesn't support ftp",29) + silent! keepjumps %s/\r$//e + + " if there's no ../ listed, then put ./ and ../ in + let line1= line(".") + exe "keepjumps ".w:netrw_bannercnt + let line2= search('^\.\.\/\%(\s\|$\)','cnW') + if line2 == 0 +" call Decho("netrw is putting ./ and ../ into listing") + keepjumps put='../' + keepjumps put='./' endif - " restore status line - let &stl = s:netrw_users_stl - let &laststatus = s:netrw_users_ls - " restore NetMethod - if exists("keep_netrw_method") - call s:NetMethod(keep_netrw_choice) - let w:netrw_method = keep_netrw_wmethod + exe "keepjumps ".line1 + keepjumps norm! 0 + +" call Decho("line1=".line1." line2=".line2." line(.)=".line(".")) + if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup +" call Decho("M$ ftp cleanup") + exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(\|\d\+\)\s\+//' + else " normal ftp cleanup +" call Decho("normal ftp cleanup") + exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' + exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' + exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' endif -" call Dret("NetObtain") - return endif - "......................................... else - " scp: Method#4 -" call Decho("using scp") - let curdir = b:netrw_curdir - let path = substitute(curdir,'scp://[^/]\+/','','e') -" call Decho("path<".path.">") - if exists("g:netrw_port") && g:netrw_port != "" - let useport= " ".g:netrw_scpport." ".g:netrw_port + " use ssh to get remote file listing {{{3 +" call Decho("use ssh to get remote file listing: s:netrw_shq<".g:netrw_shq."> s:path<".s:path."> g:netrw_cd_escape<".g:netrw_cd_escape.">") + let listcmd= s:MakeSshCmd(g:netrw_list_cmd) +" call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)") + if g:netrw_scp_cmd =~ '^pscp' +" call Decho("1: exe silent r! ".listcmd.g:netrw_shq.s:path.g:netrw_shq) + exe "silent r! ".listcmd.g:netrw_shq.s:path.g:netrw_shq + " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like + g/^Listing directory/d + g/^d[-rwx][-rwx][-rwx]/s+$+/+e + silent g/^l[-rwx][-rwx][-rwx]/s+$+@+e + if g:netrw_liststyle != s:LONGLIST + g/^[dlsp-][-rwx][-rwx][-rwx]/s/^.*\s\(\S\+\)$/\1/e + endif else - let useport= "" + if s:path == "" +" call Decho("2: exe silent r! ".listcmd) + exe "silent r! ".listcmd + else +" call Decho("3: exe silent r! ".listcmd." ".g:netrw_shq.s:path.g:netrw_shq) + exe "silent r! ".listcmd." ".g:netrw_shq.s:path.g:netrw_shq + endif endif -" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .") - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ." + + " cleanup + if g:netrw_ftp_browse_reject != "" +" call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d") + exe "silent! g/".g:netrw_ssh_browse_reject."/keepjumps d" endif endif - " restore status line - let &stl = s:netrw_users_stl - let &laststatus = s:netrw_users_ls - redraw! + if w:netrw_liststyle == s:LONGLIST + " do a long listing; these substitutions need to be done prior to sorting {{{3 +" call Decho("fix long listing:") + + if s:method == "ftp" + " cleanup + exe "keepjumps ".w:netrw_bannercnt + while getline(".") =~ g:netrw_ftp_browse_reject + keepjumps d + endwhile + " if there's no ../ listed, then put ./ and ../ in + let line1= line(".") + keepjumps 1 + silent keepjumps call search('^\.\.\/\%(\s\|$\)','W') + let line2= line(".") + if line2 == 0 + exe 'keepjumps '.w:netrw_bannercnt."put='./'" + if b:netrw_curdir != '/' + exe 'keepjumps '.w:netrw_bannercnt."put='../'" + endif + endif + exe "keepjumps ".line1 + keepjumps norm! 0 + endif - " restore NetMethod - if exists("keep_netrw_method") - call s:NetMethod(keep_netrw_choice) - let w:netrw_method = keep_netrw_wmethod + if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup +" call Decho("M$ ftp site listing cleanup") + exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/' + elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") +" call Decho("normal ftp site listing cleanup: bannercnt=".w:netrw_bannercnt." line($)=".line("$")) + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e' + exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e' + exe 'silent keepjumps '.w:netrw_bannercnt + endif endif -" call Dret("NetObtain") +" if exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") " Decho +" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("listing: ".getline("."))' +" endif " Decho +" call Dret("s:NetrwRemoteListing") endfun " --------------------------------------------------------------------- -" NetPrevWinOpen: open file/directory in previous window. {{{2 -" If there's only one window, then the window will first be split. -fun! s:NetPrevWinOpen(islocal) -" call Dfunc("NetPrevWinOpen(islocal=".a:islocal.")") - - " get last window number and the word currently under the cursor - let lastwinnr = winnr("$") - let curword = s:NetGetWord() -" call Decho("lastwinnr=".lastwinnr." curword<".curword.">") +" s:NetrwRemoteRm: remove/delete a remote file or directory {{{2 +fun! s:NetrwRemoteRm(usrhost,path) range +" call Dfunc("s:NetrwRemoteRm(usrhost<".a:usrhost."> path<".a:path.">) virtcol=".virtcol(".")) +" call Decho("firstline=".a:firstline." lastline=".a:lastline) + let svpos= netrw#NetrwSavePosn() - let didsplit = 0 - if lastwinnr == 1 - " if only one window, open a new one first -" call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")") - exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s" - let didsplit = 1 + let all= 0 + if exists("s:netrwmarkfilelist_{bufnr('%')}") + " remove all marked files + for fname in s:netrwmarkfilelist_{bufnr("%")} + let ok= s:NetrwRemoteRmFile(a:path,fname,all) + if ok =~ 'q\%[uit]' + break + elseif ok =~ 'a\%[ll]' + let all= 1 + endif + endfor + unlet s:netrwmarkfilelist_{bufnr("%")} + unlet s:netrwmarkfilemtch_{bufnr("%")} + 2match none else - wincmd p - " if the previous window's buffer has been changed (is modified), - " and it doesn't appear in any other extant window, then ask the - " user if s/he wants to abandon modifications therein. - let bnr = winbufnr(0) - let bnrcnt = 0 - if &mod - windo if winbufnr(0) == bnr | let bnrcnt=bnrcnt+1 | endif -" call Decho("bnr=".bnr." bnrcnt=".bnrcnt) - if bnrcnt == 1 - let bufname= bufname(winbufnr(winnr())) - let choice= confirm("Save modified file<".bufname.">?","&Yes\n&No\n&Cancel") + " remove files specified by range - if choice == 1 - " Yes -- write file & then browse - let v:errmsg= "" - silent w - if v:errmsg != "" - call netrw#ErrorMsg(s:ERROR,"unable to write <".bufname.">!",30) - if didsplit - q - else - wincmd p - endif -" call Dret("NetPrevWinOpen : unable to write <".bufname.">") - return - endif + " preparation for removing multiple files/directories + let ctr= a:firstline - elseif choice == 2 - " No -- don't worry about changed file, just browse anyway - setlocal nomod - call netrw#ErrorMsg(s:WARNING,bufname." changes abandoned",31) + " remove multiple files and directories + while ctr <= a:lastline + exe ctr + let ok= s:NetrwRemoteRmFile(a:path,s:NetrwGetWord(),all) + if ok =~ 'q\%[uit]' + break + elseif ok =~ 'a\%[ll]' + let all= 1 + endif + let ctr= ctr + 1 + endwhile + endif - else - " Cancel -- don't do this - if didsplit - q + " refresh the (remote) directory listing +" call Decho("refresh remote directory listing") + call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) + call netrw#NetrwRestorePosn(svpos) + +" call Dret("s:NetrwRemoteRm") +endfun + +" --------------------------------------------------------------------- +" s:NetrwRemoteRmFile: {{{2 +fun! s:NetrwRemoteRmFile(path,rmfile,all) +" call Dfunc("s:NetrwRemoteRmFile(path<".a:path."> rmfile<".a:rmfile.">) all=".a:all) + + let all= a:all + let ok = "" + + if a:rmfile !~ '^"' && (a:rmfile =~ '@$' || a:rmfile !~ '[\/]$') + " attempt to remove file +" call Decho("attempt to remove file (all=".all.")") + if !all + echohl Statement + call inputsave() + let ok= input("Confirm deletion of file<".a:rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") + call inputrestore() + echohl NONE + if ok == "" + let ok="no" + endif + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') + if ok =~ 'a\%[ll]' + let all= 1 + endif + endif + + if all || ok =~ 'y\%[es]' || ok == "" + if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) + silent! keepjumps .,$d + call s:NetrwRemoteFtpCmd(a:path,"delete ".a:rmfile) + else + let netrw_rm_cmd= s:MakeSshCmd(g:netrw_rm_cmd) +" call Decho("netrw_rm_cmd<".netrw_rm_cmd.">") + if !exists("b:netrw_curdir") + call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) + let ok="q" + else + let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') +" call Decho("netrw_rm_cmd<".netrw_rm_cmd.">") +" call Decho("remotedir<".remotedir.">") +" call Decho("rmfile<".a:rmfile.">") + if remotedir != "" + let netrw_rm_cmd= netrw_rm_cmd." ".remotedir.escape(a:rmfile,g:netrw_cd_escape) else - wincmd p + let netrw_rm_cmd= netrw_rm_cmd." ".escape(a:rmfile,g:netrw_cd_escape) endif -" call Dret("NetPrevWinOpen : cancelled") - return +" call Decho("call system(".netrw_rm_cmd.")") + let ret= system(netrw_rm_cmd) + if ret != 0 + call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) + endif +" call Decho("returned=".ret." errcode=".v:shell_error) endif endif + elseif ok =~ 'q\%[uit]' + break endif - endif - if a:islocal - call netrw#LocalBrowseCheck(s:NetBrowseChgDir(a:islocal,curword)) else - call s:NetBrowse(a:islocal,s:NetBrowseChgDir(a:islocal,curword)) - endif -" call Dret("NetPrevWinOpen") -endfun - -" --------------------------------------------------------------------- -" NetMenu: generates the menu for gvim and netrw {{{2 -fun! s:NetMenu(domenu) - - if !exists("g:NetrwMenuPriority") - let g:NetrwMenuPriority= 80 - endif + " attempt to remove directory +" call Decho("attempt to remove directory") + if !all + call inputsave() + let ok= input("Confirm deletion of directory<".a:rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") + call inputrestore() + if ok == "" + let ok="no" + endif + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') + if ok =~ 'a\%[ll]' + let all= 1 + endif + endif - if has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu -" call Dfunc("NetMenu(domenu=".a:domenu.")") + if all || ok =~ 'y\%[es]' || ok == "" + if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) + call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile) + else + let rmfile = substitute(a:path.a:rmfile,'/$','','') + let netrw_rmdir_cmd = s:MakeSshCmd(g:netrw_rmdir_cmd).' '.rmfile +" call Decho("attempt to remove dir: system(".netrw_rmdir_cmd.")") + let ret= s:System("system",netrw_rmdir_cmd) +" call Decho("returned=".ret." errcode=".v:shell_error) - if !exists("s:netrw_menu_enabled") && a:domenu -" call Decho("initialize menu") - let s:netrw_menu_enabled= 1 - exe 'silent! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help ' - call s:NetBookmarkMenu() " provide some history! - exe 'silent! menu '.g:NetrwMenuPriority.'.4 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory- -' - exe 'silent! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewerx x' - exe 'silent! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directorymb mb' - exe 'silent! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directorygb gb' - exe 'silent! menu '.g:NetrwMenuPriority.'.8 '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directoryu u' - exe 'silent! menu '.g:NetrwMenuPriority.'.9 '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ DirectoryU U' - exe 'silent! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/DirectoryD D' - exe 'silent! menu '.g:NetrwMenuPriority.'.11 '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List'." \" - exe 'silent! menu '.g:NetrwMenuPriority.'.12 '.g:NetrwTopLvlMenu.'Edit\ File/Directory '."\" - exe 'silent! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Windowo o' - exe 'silent! menu '.g:NetrwMenuPriority.'.14 '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Windowv v' - exe 'silent! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ Historyq q' - exe 'silent! menu '.g:NetrwMenuPriority.'.16 '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)i i' - exe 'silent! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Make\ Subdirectoryd d' - exe 'silent! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Normal-Hide-Showa a' - exe 'silent! menu '.g:NetrwMenuPriority.'.19 '.g:NetrwTopLvlMenu.'Obtain\ FileO O' - exe 'silent! menu '.g:NetrwMenuPriority.'.20 '.g:NetrwTopLvlMenu.'Preview\ File/Directoryp p' - exe 'silent! menu '.g:NetrwMenuPriority.'.21 '.g:NetrwTopLvlMenu.'Previous\ Window\ BrowserP P' - exe 'silent! menu '.g:NetrwMenuPriority.'.22 '.g:NetrwTopLvlMenu.'Refresh\ Listing'." \" - exe 'silent! menu '.g:NetrwMenuPriority.'.23 '.g:NetrwTopLvlMenu.'Rename\ File/DirectoryR R' - exe 'silent! menu '.g:NetrwMenuPriority.'.24 '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order'."r r" - exe 'silent! menu '.g:NetrwMenuPriority.'.25 '.g:NetrwTopLvlMenu.'Select\ Sorting\ Styles s' - exe 'silent! menu '.g:NetrwMenuPriority.'.26 '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ EditS S' - exe 'silent! menu '.g:NetrwMenuPriority.'.27 '.g:NetrwTopLvlMenu.'Set\ Current\ Directoryc c' - exe 'silent! menu '.g:NetrwMenuPriority.'.28 '.g:NetrwTopLvlMenu.'Settings/Options:NetrwSettings '.":NetrwSettings\" - let s:netrw_menucnt= 28 + if v:shell_error != 0 +" call Decho("v:shell_error not 0") + let netrw_rmf_cmd= s:MakeSshCmd(g:netrw_rmf_cmd).' '.substitute(rmfile,'[\/]$','','e') +" call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") + let ret= s:System("system",netrw_rmf_cmd) +" call Decho("returned=".ret." errcode=".v:shell_error) - elseif !a:domenu - let s:netrwcnt = 0 - let curwin = winnr() - windo if getline(2) =~ "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif - exe curwin."wincmd w" - - if s:netrwcnt <= 1 -" call Decho("clear menus") - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Help' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Delete\ File/Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Edit\ File' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Enter\ File/Directory\ (vertical\ split)' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Make\ Subdirectory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Normal-Hide-Show' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Obtain\ File' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Preview\ File/Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Refresh\ Listing' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Rename\ File/Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Settings/Options' - exe 'silent! unmenu '.g:NetrwTopLvlMenu.'Bookmarks' - silent! unlet s:netrw_menu_enabled + if v:shell_error != 0 && !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22) + endif + endif endif + + elseif ok =~ 'q\%[uit]' + break endif -" call Dret("NetMenu") endif -endfun - -" ========================================== -" Local Directory Browsing Support: {{{1 -" ========================================== - -" --------------------------------------------------------------------- -" LocalBrowseCheck: {{{2 -fun! netrw#LocalBrowseCheck(dirname) - " unfortunate interaction -- split window debugging can't be -" " used here, must use DechoRemOn or DechoTabOn -- the BufEnter - " event triggers another call to LocalBrowseCheck() when attempts - " to write to the DBG buffer are made. -" call Dfunc("LocalBrowseCheck(dirname<".a:dirname.">") - if isdirectory(a:dirname) - silent! call s:NetBrowse(1,a:dirname) - endif -" call Dret("LocalBrowseCheck") - " not a directory, ignore it +" call Dret("s:NetrwRemoteRmFile ".ok) + return ok endfun " --------------------------------------------------------------------- -" LocalListing: does the job of "ls" for local directories {{{2 -fun! s:LocalListing() -" call Dfunc("LocalListing() &ma=".&ma." &mod=".&mod." &ro=".&ro." buf(%)=".buf("%")) -" if exists("b:netrw_curdir") |call Decho('b:netrw_curdir<'.b:netrw_curdir.">") |else|call Decho("b:netrw_curdir doesn't exist") |endif -" if exists("g:netrw_sort_by")|call Decho('g:netrw_sort_by<'.g:netrw_sort_by.">")|else|call Decho("g:netrw_sort_by doesn't exist")|endif - - " get the list of files contained in the current directory - let dirname = escape(b:netrw_curdir,s:netrw_glob_escape) - let dirnamelen = strlen(b:netrw_curdir) - let filelist = glob(s:ComposePath(dirname,"*")) -" call Decho("glob(dirname<".dirname."/*>)=".filelist) - if filelist != "" - let filelist= filelist."\n" - endif - let filelist= filelist.glob(s:ComposePath(dirname,".*")) -" call Decho("glob(dirname<".dirname."/.*>)=".glob(dirname.".*")) +" s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 +" This function assumes that a long listing will be received. Size, time, +" and reverse sorts will be requested of the server but not otherwise +" enforced here. +fun! s:NetrwRemoteFtpCmd(path,listcmd) +" call Dfunc("NetrwRemoteFtpCmd(path<".a:path."> listcmd<".a:listcmd.">) netrw_method=".w:netrw_method) +" call Decho("line($)=".line("$")." bannercnt=".w:netrw_bannercnt) - " if the directory name includes a "$", and possibly other characters, - " the glob() doesn't include "." and ".." entries. - if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)' -" call Decho("forcibly tacking on .") - if filelist == "" - let filelist= s:ComposePath(dirname,"./") - else - let filelist= filelist."\n".s:ComposePath(b:netrw_curdir,"./") - endif -" call Decho("filelist<".filelist.">") - endif - if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)' -" call Decho("forcibly tacking on ..") - let filelist= filelist."\n".s:ComposePath(b:netrw_curdir,"../") -" call Decho("filelist<".filelist.">") - endif - if b:netrw_curdir == '/' - " remove .. from filelist when current directory is root directory - let filelist= substitute(filelist,'/\.\.\n','','') -" call Decho("remove .. from filelist") - endif - let filelist= substitute(filelist,'\n\{2,}','\n','ge') - if (has("win32") || has("win95") || has("win64") || has("win16")) - let filelist= substitute(filelist,'\','/','ge') - else - let filelist= substitute(filelist,'\','\\','ge') - endif + " because WinXX ftp uses unix style input + let ffkeep= &ff + setlocal ma ff=unix noro +" call Decho("setlocal ma ff=unix noro") -" call Decho("dirname<".dirname.">") -" call Decho("dirnamelen<".dirnamelen.">") -" call Decho("filelist<".filelist.">") + " clear off any older non-banner lines + " note that w:netrw_bannercnt indexes the line after the banner +" call Decho('exe silent! keepjumps '.w:netrw_bannercnt.",$d (clear off old non-banner lines)") + exe "silent! keepjumps ".w:netrw_bannercnt.",$d" - while filelist != "" - if filelist =~ '\n' - let filename = substitute(filelist,'\n.*$','','e') - let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e') - else - let filename = filelist - let filelist = "" - endif - let pfile= filename - if isdirectory(filename) - let pfile= filename."/" + "......................................... + if w:netrw_method == 2 || w:netrw_method == 5 + " ftp + <.netrc>: Method #2 + if a:path != "" + put ='cd \"'.a:path.'\"' endif - if pfile =~ '//$' - let pfile= substitute(pfile,'//$','/','e') + if exists("g:netrw_ftpextracmd") + exe "put ='".g:netrw_ftpextracmd."'" +" call Decho("filter input: ".getline(".")) endif - let pfile= strpart(pfile,dirnamelen) - let pfile= substitute(pfile,'^[/\\]','','e') -" call Decho(" ") -" call Decho("filename<".filename.">") -" call Decho("pfile <".pfile.">") - - if w:netrw_liststyle == s:LONGLIST - let sz = getfsize(filename) - let fsz = strpart(" ",1,15-strlen(sz)).sz - let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) -" call Decho("sz=".sz." fsz=".fsz) + exe "put ='".a:listcmd."'" +" exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' + if exists("g:netrw_port") && g:netrw_port != "" +" call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) + exe g:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port + else +" call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine) + exe g:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine endif - if g:netrw_sort_by =~ "^t" - " sort by time (handles time up to 1 quintillion seconds, US) -" call Decho("getftime(".filename.")=".getftime(filename)) - let t = getftime(filename) - let ft = strpart("000000000000000000",1,18-strlen(t)).t -" call Decho("exe keepjumps put ='".ft.'/'.filename."'") - let ftpfile= ft.'/'.pfile - keepjumps silent! put=ftpfile + "......................................... + elseif w:netrw_method == 3 + " ftp + machine,id,passwd,filename: Method #3 + setlocal ff=unix + if exists("g:netrw_port") && g:netrw_port != "" + put ='open '.g:netrw_machine.' '.g:netrw_port + else + put ='open '.g:netrw_machine + endif - elseif g:netrw_sort_by =~ "^s" - " sort by size (handles file sizes up to 1 quintillion bytes, US) -" call Decho("getfsize(".filename.")=".getfsize(filename)) - let sz = getfsize(filename) - let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz -" call Decho("exe keepjumps put ='".fsz.'/'.filename."'") - let fszpfile= fsz.'/'.pfile - keepjumps silent! put =fszpfile + if exists("g:netrw_ftp") && g:netrw_ftp == 1 + put =g:netrw_uid + put ='\"'.s:netrw_passwd.'\"' + else + put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' + endif - else - " sort by name -" call Decho("exe keepjumps put ='".pfile."'") - keepjumps silent! put=pfile + if a:path != "" + put ='cd \"'.a:path.'\"' endif - endwhile - - " cleanup any windows mess at end-of-line - silent! keepjumps %s/\r$//e - setlocal ts=32 -" call Decho("setlocal ts=32") - -" call Dret("LocalListing") -endfun - -" --------------------------------------------------------------------- -" LocalBrowseShellCmdRefresh: this function is called after a user has {{{2 -" performed any shell command. The idea is to cause all local-browsing -" buffers to be refreshed after a user has executed some shell command, -" on the chance that s/he removed/created a file/directory with it. -fun! s:LocalBrowseShellCmdRefresh() -" call Dfunc("LocalBrowseShellCmdRefresh() browselist=".string(s:netrw_browselist)) - " determine which buffers currently reside in a tab - let itab = 1 - let buftablist = [] - while itab <= tabpagenr("$") - let buftablist= buftablist + tabpagebuflist() - let itab= itab + 1 - tabn - endwhile -" call Decho("buftablist".string(buftablist)) - " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): - " | refresh any netrw window - " | wipe out any non-displaying netrw buffer - let curwin = winnr() - let ibl = 0 - for ibuf in s:netrw_browselist -" call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf)) - if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 -" call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">") - exe "silent! bw ".ibuf - call remove(s:netrw_browselist,ibl) -" call Decho("browselist=".string(s:netrw_browselist)) - continue - elseif index(tabpagebuflist(),ibuf) != -1 -" call Decho("refresh buf#".ibuf.'-> win#'.bufwinnr(ibuf)) - exe bufwinnr(ibuf)."wincmd w" - call s:NetRefresh(1,s:NetBrowseChgDir(1,'./')) + if exists("g:netrw_ftpextracmd") + exe "put ='".g:netrw_ftpextracmd."'" +" call Decho("filter input: ".getline(".")) endif - let ibl= ibl + 1 - endfor - exe curwin."wincmd w" + exe "put ='".a:listcmd."'" -" call Dret("LocalBrowseShellCmdRefresh") -endfun + " perform ftp: + " -i : turns off interactive prompting from ftp + " -n unix : DON'T use <.netrc>, even though it exists + " -n win32: quit being obnoxious about password +" exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))' +" call Decho("exe ".g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n") + exe g:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n" -" --------------------------------------------------------------------- -" LocalBrowseRm: {{{2 -fun! s:LocalBrowseRm(path) range -" call Dfunc("LocalBrowseRm(path<".a:path.">)") -" call Decho("firstline=".a:firstline." lastline=".a:lastline) + "......................................... + else + call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23) + endif - " preparation for removing multiple files/directories - let ctr = a:firstline - let ret = 0 - let all= 0 + " cleanup for Windows + if has("win32") || has("win95") || has("win64") || has("win16") + silent! keepjumps %s/\r$//e + endif + if a:listcmd == "dir" + " infer directory/link based on the file permission string + silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@ + silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/ + if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST + exe "silent! keepjumps ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e' + endif + endif - " remove multiple files and directories - while ctr <= a:lastline - exe "keepjumps ".ctr + " ftp's listing doesn't seem to include ./ or ../ + if !search('^\.\/$\|\s\.\/$','wn') + exe 'keepjumps '.w:netrw_bannercnt + put ='./' + endif + if !search('^\.\.\/$\|\s\.\.\/$','wn') + exe 'keepjumps '.w:netrw_bannercnt + put ='../' + endif - " sanity checks - if line(".") < w:netrw_bannercnt - let ctr= ctr + 1 - continue - endif - let curword= s:NetGetWord() - if curword == "./" || curword == "../" - let ctr= ctr + 1 - continue - endif + " restore settings + let &ff= ffkeep +" call Dret("NetrwRemoteFtpCmd") +endfun - norm! 0 - let rmfile= s:ComposePath(a:path,curword) -" call Decho("rmfile<".rmfile.">") +" --------------------------------------------------------------------- +" s:NetrwRemoteRename: rename a remote file or directory {{{2 +fun! s:NetrwRemoteRename(usrhost,path) range +" call Dfunc("NetrwRemoteRename(usrhost<".a:usrhost."> path<".a:path.">)") + + " preparation for removing multiple files/directories + let svpos = netrw#NetrwSavePosn() + let ctr = a:firstline + let rename_cmd = s:MakeSshCmd(g:netrw_rename_cmd) - if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') - " attempt to remove file - if !all - echohl Statement + " rename files given by the markfilelist + if exists("s:netrwmarkfilelist_{bufnr('%')}") + for oldname in s:netrwmarkfilelist_{bufnr("%")} +" call Decho("oldname<".oldname.">") + if exists("subfrom") + let newname= substitute(oldname,subfrom,subto,'') +" call Decho("subfrom<".subfrom."> subto<".subto."> newname<".newname.">") + else call inputsave() - let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") + let newname= input("Moving ".oldname." to : ",oldname) call inputrestore() - echohl NONE - if ok == "" - let ok="no" - endif -" call Decho("response: ok<".ok.">") - let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') -" call Decho("response: ok<".ok."> (after sub)") - if ok =~ 'a\%[ll]' - let all= 1 + if newname =~ '^s/' + let subfrom = substitute(newname,'^s/\([^/]*\)/.*/$','\1','') + let subto = substitute(newname,'^s/[^/]*/\(.*\)/$','\1','') + let newname = substitute(oldname,subfrom,subto,'') +" call Decho("subfrom<".subfrom."> subto<".subto."> newname<".newname.">") endif endif - - if all || ok =~ 'y\%[es]' || ok == "" - let ret= s:System("delete",rmfile) -" call Decho("errcode=".v:shell_error." ret=".ret) - elseif ok =~ 'q\%[uit]' - break + + if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) + call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) + else + let oldname= a:path.oldname + let newname= a:path.newname +" call Decho("system(rename_cmd".' "'.escape(oldname," ").'" "'.escape(newname,g:netrw_cd_escape).'"') + let ret= s:System("system",rename_cmd.' "'.escape(oldname,g:netrw_cd_escape).'" "'.escape(newname,g:netrw_cd_escape).'"') endif - else - " attempt to remove directory - if !all - echohl Statement - call inputsave() - let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") - call inputrestore() - let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') - if ok == "" - let ok="no" - endif - if ok =~ 'a\%[ll]' - let all= 1 - endif - endif - let rmfile= substitute(rmfile,'[\/]$','','e') + endfor + call s:NetrwUnMarkFile(1) - if all || ok =~ 'y\%[es]' || ok == "" -" call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")') - call s:System("system",g:netrw_local_rmdir.' "'.rmfile.'"') -" call Decho("v:shell_error=".v:shell_error) + else - if v:shell_error != 0 -" call Decho("2nd attempt to remove directory<".rmfile.">") - let errcode= s:System("delete",rmfile) -" call Decho("errcode=".errcode) + " attempt to rename files/directories + while ctr <= a:lastline + exe "keepjumps ".ctr - if errcode != 0 - if has("unix") -" call Decho("3rd attempt to remove directory<".rmfile.">") - call s:System("system","rm ".rmfile) - if v:shell_error != 0 && !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34) -endif - elseif !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",35) - endif - endif - endif + let oldname= s:NetrwGetWord() +" call Decho("oldname<".oldname.">") - elseif ok =~ 'q\%[uit]' - break + call inputsave() + let newname= input("Moving ".oldname." to : ",oldname) + call inputrestore() + + if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) + call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) + else + let oldname= a:path.oldname + let newname= a:path.newname +" call Decho("system(rename_cmd".' "'.escape(oldname," ").'" "'.escape(newname,g:netrw_cd_escape).'"') + let ret= s:System("system",rename_cmd.' "'.escape(oldname,g:netrw_cd_escape).'" "'.escape(newname,g:netrw_cd_escape).'"') endif - endif - let ctr= ctr + 1 - endwhile + let ctr= ctr + 1 + endwhile + endif " refresh the directory - let curline= line(".") -" call Decho("refresh the directory") - call s:NetRefresh(1,s:NetBrowseChgDir(1,'./')) - exe curline + call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) + call netrw#NetrwRestorePosn(svpos) -" call Dret("LocalBrowseRm") +" call Dret("NetrwRemoteRename") endfun " --------------------------------------------------------------------- -" LocalBrowseRename: rename a remote file or directory {{{2 -fun! s:LocalBrowseRename(path) range -" call Dfunc("LocalBrowseRename(path<".a:path.">)") - - " preparation for removing multiple files/directories - let ctr= a:firstline - - " attempt to rename files/directories - while ctr <= a:lastline - exe "keepjumps ".ctr +" Local Directory Browsing Support: {{{1 +" ========================================== - " sanity checks - if line(".") < w:netrw_bannercnt - let ctr= ctr + 1 - continue - endif - let curword= s:NetGetWord() - if curword == "./" || curword == "../" - let ctr= ctr + 1 - continue +" --------------------------------------------------------------------- +" netrw#LocalBrowseCheck: {{{2 +fun! netrw#LocalBrowseCheck(dirname) + " unfortunate interaction -- split window debugging can't be + " used here, must use D-echoRemOn or D-echoTabOn -- the BufEnter + " event triggers another call to LocalBrowseCheck() when attempts + " to write to the DBG buffer are made. + " The &ft == "netrw" test was installed because the BufEnter event + " would hit when re-entering netrw windows, creating unexpected + " refreshes (and would do so in the middle of NetrwSaveOptions(), too) +" call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">") +" call Decho("isdir=".isdirectory(a:dirname)) + if isdirectory(a:dirname) +" call Decho(" ft=".&ft." b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : " doesn't exist")."> dirname<".a:dirname.">"." line($)=".line("$")) + if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname) + silent! call s:NetrwBrowse(1,a:dirname) + elseif &ft == "netrw" && line("$") == 1 + silent! call s:NetrwBrowse(1,a:dirname) endif - - norm! 0 - let oldname= s:ComposePath(a:path,curword) -" call Decho("oldname<".oldname.">") - - call inputsave() - let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e')) - call inputrestore() - - let ret= rename(oldname,newname) -" call Decho("renaming <".oldname."> to <".newname.">") - - let ctr= ctr + 1 - endwhile - - " refresh the directory -" call Decho("refresh the directory listing") - call netrw#NetSavePosn() - call s:NetRefresh(1,s:NetBrowseChgDir(1,'./')) -" call Dret("LocalBrowseRename") + endif + " not a directory, ignore it +" call Dret("netrw#LocalBrowseCheck") endfun " --------------------------------------------------------------------- -" LocalFastBrowser: handles setting up/taking down fast browsing for the {{{2 -" local browser -" fastbrowse Local Remote Hiding a buffer implies it may be re-used (fast) -" slow 0 D D Deleting a buffer implies it will not be re-used (slow) -" med 1 D H -" fast 2 H H -fun! s:LocalFastBrowser() -" call Dfunc("LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse) +" s:LocalListing: does the job of "ls" for local directories {{{2 +fun! s:LocalListing() +" call Dfunc("s:LocalListing()") +" call Decho("&ma=".&ma) +" call Decho("&mod=".&mod) +" call Decho("&ro=".&ro) +" call Decho("bufname(%)<".bufname("%").">") - " initialize browselist, a list of buffer numbers that the local browser has used - if !exists("s:netrw_browselist") -" call Decho("initialize s:netrw_browselist") - let s:netrw_browselist= [] - endif +" if exists("b:netrw_curdir") |call Decho('b:netrw_curdir<'.b:netrw_curdir.">") |else|call Decho("b:netrw_curdir doesn't exist") |endif +" if exists("g:netrw_sort_by")|call Decho('g:netrw_sort_by<'.g:netrw_sort_by.">")|else|call Decho("g:netrw_sort_by doesn't exist")|endif - " append current buffer to fastbrowse list - if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1]) -" call Decho("appendng current buffer to browselist") - call add(s:netrw_browselist,bufnr("%")) -" call Decho("browselist=".string(s:netrw_browselist)) + " get the list of files contained in the current directory + let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) + let dirnamelen = s:Strlen(b:netrw_curdir) + let filelist = glob(s:ComposePath(dirname,"*")) +" call Decho("glob(dirname<".dirname."/*>)=".filelist) + if filelist != "" + let filelist= filelist."\n" endif - - " enable autocmd events to handle refreshing/removing local browser buffers - " If local browse buffer is currently showing: refresh it - " If local browse buffer is currently hidden : wipe it - if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1 -" call Decho("setting up local-browser shell command refresh") - let s:netrw_browser_shellcmd= 1 - augroup AuNetrwShellCmd - au! - if (has("win32") || has("win95") || has("win64") || has("win16")) - au ShellCmdPost * call s:LocalBrowseShellCmdRefresh() - else - au ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh() - endif - augroup END + let filelist= filelist.glob(s:ComposePath(dirname,".*")) +" call Decho("glob(dirname<".dirname."/.*>)=".filelist) + + " Coding choice: either elide ./ if present + " or include ./ if not present + if filelist =~ '[\\/]\.[\\/]\=\(\n\|$\)' + " elide /path/. from glob() entries if present + let filelist = substitute(filelist,'\n','\t','g') + let filelist = substitute(filelist,'^[^\t]\+[/\\]\.\t','','') + let filelist = substitute(filelist,'[^\t]\+[/\\]\.$','','') + let filelist = substitute(filelist,'\t\zs[^\t]\+[/\\]\.\t','','') + let filelist = substitute(filelist,'\t','\n','g') + endif +" if filelist !~ '[\\/]\.[\\/]\=\(\n\|$\)' + " include ./ in the glob() entry if its missing +" call Decho("forcibly tacking on .") +" if filelist == "" +" let filelist= s:ComposePath(dirname,"./") +" else +" let filelist= filelist."\n".s:ComposePath(b:netrw_curdir,"./") +" endif +" call Decho("filelist<".filelist.">") +" endif + if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)' + " include ../ in the glob() entry if its missing +" call Decho("forcibly tacking on ..") + let filelist= filelist."\n".s:ComposePath(b:netrw_curdir,"../") +" call Decho("filelist<".filelist.">") endif - - " user must have changed fastbrowse to its fast setting, so remove - " the associated autocmd events - if g:netrw_fastbrowse > 1 && exists("s:netrw_browser_shellcmd") -" call Decho("remove AuNetrwShellCmd autcmd group") - unlet s:netrw_browser_shellcmd - augroup AuNetrwShellCmd - au! - augroup END - augroup! AuNetrwShellCmd + if b:netrw_curdir == '/' + " remove .. from filelist when current directory is root directory + let filelist= substitute(filelist,'/\.\.\n','','') +" call Decho("remove .. from filelist") endif - -" call Dret("LocalFastBrowser") -endfun - -" --------------------------------------------------------------------- -" LocalObtain: copy selected file to current working directory {{{2 -fun! s:LocalObtain() -" call Dfunc("LocalObtain()") - if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir - let fname= expand("") - let fcopy= readfile(b:netrw_curdir."/".fname,"b") - call writefile(fcopy,getcwd()."/".fname,"b") - elseif !exists("b:netrw_curdir") - call netrw#ErrorMsg(s:ERROR,"local browsing directory doesn't exist!",36) + let filelist= substitute(filelist,'\n\{2,}','\n','ge') + if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) + " change all \s to /s + let filelist= substitute(filelist,'\','/','g') else - call netrw#ErrorMsg(s:ERROR,"local browsing directory and current directory are identical",37) - endif -" call Dret("LocalObtain") -endfun - -" --------------------------------------------------------------------- -" netrw#Explore: launch the local browser in the directory of the current file {{{2 -" dosplit==0: the window will be split iff the current file has -" been modified -" dosplit==1: the window will be split before running the local -" browser -fun! netrw#Explore(indx,dosplit,style,...) -" call Dfunc("netrw#Explore(indx=".a:indx." dosplit=".a:dosplit." style=".a:style.",a:1<".a:1.">) &modified=".&modified." a:0=".a:0) - if !exists("b:netrw_curdir") - let b:netrw_curdir= getcwd() -" call Decho("set b:netrw_curdir<".b:netrw_curdir."> (used getcwd)") + " escape all \s to \\ + let filelist= substitute(filelist,'\','\\','g') endif - let curfile= b:netrw_curdir -" call Decho("curfile<".curfile.">") - - " save registers - silent! let keepregstar = @* - silent! let keepregplus = @+ - silent! let keepregslash= @/ - - " if dosplit or file has been modified - if a:dosplit || &modified || a:style == 6 -" call Decho("case: dosplit=".a:dosplit." modified=".&modified." a:style=".a:style) - call s:SaveWinVars() - - if a:style == 0 " Explore, Sexplore -" call Decho("style=0: Explore or Sexplore") - exe g:netrw_winsize."wincmd s" - - elseif a:style == 1 "Explore!, Sexplore! -" call Decho("style=1: Explore! or Sexplore!") - exe g:netrw_winsize."wincmd v" - - elseif a:style == 2 " Hexplore -" call Decho("style=2: Hexplore") - exe "bel ".g:netrw_winsize."wincmd s" - - elseif a:style == 3 " Hexplore! -" call Decho("style=3: Hexplore!") - exe "abo ".g:netrw_winsize."wincmd s" - - elseif a:style == 4 " Vexplore -" call Decho("style=4: Vexplore") - exe "lefta ".g:netrw_winsize."wincmd v" - elseif a:style == 5 " Vexplore! -" call Decho("style=5: Vexplore!") - exe "rightb ".g:netrw_winsize."wincmd v" +" call Decho("dirname<".dirname.">") +" call Decho("dirnamelen<".dirnamelen.">") +" call Decho("filelist<".filelist.">") - elseif a:style == 6 " Texplore - call s:SaveBufVars() -" call Decho("style = 6: Texplore") - tabnew - call s:RestoreBufVars() + while filelist != "" + if filelist =~ '\n' + let filename = substitute(filelist,'\n.*$','','e') + let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e') + else + let filename = filelist + let filelist = "" endif - call s:RestoreWinVars() - endif - norm! 0 - - if a:0 > 0 -" call Decho("a:1<".a:1.">") - if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)) - let dirname= substitute(a:1,'\~',expand("$HOME"),'') -" call Decho("using dirname<".dirname."> (case: ~ && unix||cygwin)") - elseif a:1 == '.' - let dirname= exists("b:netrw_curdir")? b:netrw_curdir : getcwd() - if dirname !~ '/$' - let dirname= dirname."/" + if filename !~ '/\.$' && filename !~ '/\.\.$' && fnamemodify(filename,"") != resolve(filename) + " indicate a symbolic link +" call Decho("indicate <".filename."> is a symbolic link with trailing @") + let pfile= filename."@" + elseif isdirectory(filename) +" call Decho("indicate <".filename."> is a directory with trailing /") + let pfile= filename."/" + elseif exists("b:netrw_curdir") && b:netrw_curdir !~ '^.*://' && !isdirectory(filename) + if (has("win32") || has("win95") || has("win64") || has("win16")) + if filename =~ '\.[eE][xX][eE]$' || filename =~ '\.[cC][oO][mM]$' || filename =~ '\.[bB][aA][tT]$' + " indicate an executable +" call Decho("indicate <".filename."> is executable with trailing *") + let pfile= filename."*" + else + " normal file + let pfile= filename + endif + elseif executable(filename) + " indicate an executable +" call Decho("indicate <".filename."> is executable with trailing *") + let pfile= filename."*" + else + " normal file + let pfile= filename endif -" call Decho("using dirname<".dirname."> (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")") - elseif a:1 =~ '\$' - let dirname= expand(a:1) else - let dirname= a:1 -" call Decho("using dirname<".dirname.">") + let pfile= filename endif - endif + if pfile =~ '//$' + let pfile= substitute(pfile,'//$','/','e') + endif + let pfile= strpart(pfile,dirnamelen) + let pfile= substitute(pfile,'^[/\\]','','e') +" call Decho(" ") +" call Decho("filename<".filename.">") +" call Decho("pfile <".pfile.">") + + if w:netrw_liststyle == s:LONGLIST + let sz = getfsize(filename) + let fsz = strpart(" ",1,15-s:Strlen(sz)).sz + let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) +" call Decho("sz=".sz." fsz=".fsz) + endif + + if g:netrw_sort_by =~ "^t" + " sort by time (handles time up to 1 quintillion seconds, US) +" call Decho("getftime(".filename.")=".getftime(filename)) + let t = getftime(filename) + let ft = strpart("000000000000000000",1,18-s:Strlen(t)).t +" call Decho("exe keepjumps put ='".ft.'/'.filename."'") + let ftpfile= ft.'/'.pfile + keepjumps silent! put=ftpfile + + elseif g:netrw_sort_by =~ "^s" + " sort by size (handles file sizes up to 1 quintillion bytes, US) +" call Decho("getfsize(".filename.")=".getfsize(filename)) + let sz = getfsize(filename) + let fsz = strpart("000000000000000000",1,18-s:Strlen(sz)).sz +" call Decho("exe keepjumps put ='".fsz.'/'.filename."'") + let fszpfile= fsz.'/'.pfile + keepjumps silent! put =fszpfile - if dirname =~ '^\*/' - " Explore */pattern -" call Decho("case Explore */pattern") - let pattern= substitute(dirname,'^\*/\(.*\)$','\1','') -" call Decho("Explore */pat: dirname<".dirname."> -> pattern<".pattern.">") - if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif - elseif dirname =~ '^\*\*//' - " Explore **//pattern -" call Decho("case Explore **//pattern") - let pattern = substitute(dirname,'^\*\*//','','') - let starstarpat = 1 -" call Decho("Explore **//pat: dirname<".dirname."> -> pattern<".pattern.">") - endif - - if dirname == "" && a:indx >= 0 - " Explore Hexplore Vexplore Sexplore -" call Decho("case Explore Hexplore Vexplore Sexplore") - let newdir= substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') - if newdir =~ '^scp:' || newdir =~ '^ftp:' -" call Decho("calling NetBrowse(0,newdir<".newdir.">)") - call s:NetBrowse(0,newdir) else - if newdir == ""|let newdir= getcwd()|endif -" call Decho("calling LocalBrowseCheck(newdir<".newdir.">)") - call netrw#LocalBrowseCheck(newdir) + " sort by name +" call Decho("exe keepjumps put ='".pfile."'") + keepjumps silent! put=pfile endif - call search('\<'.substitute(curfile,'^.*/','','e').'\>','cW') + endwhile - elseif dirname =~ '^\*\*/' || a:indx < 0 || dirname =~ '^\*/' - " Nexplore, Pexplore, Explore **/... , or Explore */pattern -" call Decho("case Nexplore, Pexplore, , , Explore dirname<".dirname.">") - if !mapcheck("","n") && !mapcheck("","n") && exists("b:netrw_curdir") -" call Decho("set up and maps") - let s:didstarstar= 1 - nnoremap :Pexplore - nnoremap :Nexplore - endif + " cleanup any windows mess at end-of-line + silent! keepjumps %s/\r$//e + setlocal ts=32 +" call Decho("setlocal ts=32") - if has("path_extra") -" call Decho("has path_extra") - if !exists("w:netrw_explore_indx") - let w:netrw_explore_indx= 0 - endif - let indx = a:indx -" call Decho("set indx= [a:indx=".indx."]") -" - if indx == -1 - "Nexplore -" call Decho("case Nexplore: (indx=".indx.")") - if !exists("w:netrw_explore_list") " sanity check - call netrw#ErrorMsg(s:WARNING,"using Nexplore or improperly; see help for netrw-starstar",40) - silent! let @* = keepregstar - silent! let @+ = keepregstar - silent! let @/ = keepregslash -" call Dret("netrw#Explore") - return - endif - let indx= w:netrw_explore_indx - if indx < 0 | let indx= 0 | endif - if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif - let curfile= w:netrw_explore_list[indx] -" call Decho("indx=".indx." curfile<".curfile.">") - while indx < w:netrw_explore_listlen && curfile == w:netrw_explore_list[indx] - let indx= indx + 1 -" call Decho("indx=".indx." (Nexplore while loop)") - endwhile - if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif -" call Decho("Nexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx) +" call Dret("s:LocalListing") +endfun - elseif indx == -2 - "Pexplore -" call Decho("case Pexplore: (indx=".indx.")") - if !exists("w:netrw_explore_list") " sanity check - call netrw#ErrorMsg(s:WARNING,"using Pexplore or improperly; see help for netrw-starstar",41) - silent! let @* = keepregstar - silent! let @+ = keepregstar - silent! let @/ = keepregslash -" call Dret("netrw#Explore") - return - endif - let indx= w:netrw_explore_indx - if indx < 0 | let indx= 0 | endif - if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif - let curfile= w:netrw_explore_list[indx] -" call Decho("indx=".indx." curfile<".curfile.">") - while indx >= 0 && curfile == w:netrw_explore_list[indx] - let indx= indx - 1 -" call Decho("indx=".indx." (Pexplore while loop)") - endwhile - if indx < 0 | let indx= 0 | endif -" call Decho("Pexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx) +" --------------------------------------------------------------------- +" s:LocalBrowseShellCmdRefresh: this function is called after a user has {{{2 +" performed any shell command. The idea is to cause all local-browsing +" buffers to be refreshed after a user has executed some shell command, +" on the chance that s/he removed/created a file/directory with it. +fun! s:LocalBrowseShellCmdRefresh() +" call Dfunc("LocalBrowseShellCmdRefresh() browselist=".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "empty")." ".tabpagenr("$")." tabs") + " determine which buffers currently reside in a tab + if !exists("s:netrw_browselist") +" call Dret("LocalBrowseShellCmdRefresh : browselist is empty") + return + endif + let itab = 1 + let buftablist = [] + while itab <= tabpagenr("$") + let buftablist = buftablist + tabpagebuflist() + let itab = itab + 1 + tabn + endwhile +" call Decho("buftablist".string(buftablist)) +" call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">") + " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): + " | refresh any netrw window + " | wipe out any non-displaying netrw buffer + let curwin = winnr() + let ibl = 0 + for ibuf in s:netrw_browselist +" call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf)) + if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 +" call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">") + exe "silent! bw ".ibuf + call remove(s:netrw_browselist,ibl) +" call Decho("browselist=".string(s:netrw_browselist)) + continue + elseif index(tabpagebuflist(),ibuf) != -1 +" call Decho("refresh buf#".ibuf.'-> win#'.bufwinnr(ibuf)) + exe bufwinnr(ibuf)."wincmd w" + call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) + endif + let ibl= ibl + 1 + endfor + exe curwin."wincmd w" - else - " Explore -- initialize - " build list of files to Explore with Nexplore/Pexplore -" call Decho("case Explore: initialize (indx=".indx.")") - let w:netrw_explore_indx= 0 - if !exists("b:netrw_curdir") - let b:netrw_curdir= getcwd() - endif -" call Decho("b:netrw_curdir<".b:netrw_curdir.">") - - if exists("pattern") -" call Decho("pattern exists: building list pattern<".pattern."> cwd<".getcwd().">") - if exists("starstarpat") -" call Decho("starstarpat<".starstarpat.">") - try - exe "silent vimgrep /".pattern."/gj "."**/*" - catch /^Vim\%((\a\+)\)\=:E480/ - call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) - if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif - silent! let @* = keepregstar - silent! let @+ = keepregstar - silent! let @/ = keepregslash -" call Dret("netrw#Explore : no files matched pattern") - return - endtry - let s:netrw_curdir = b:netrw_curdir - let w:netrw_explore_list = getqflist() - let w:netrw_explore_list = map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)') - else -" call Decho("no starstarpat") - exe "vimgrep /".pattern."/gj ".b:netrw_curdir."/*" - let w:netrw_explore_list = map(getqflist(),'bufname(v:val.bufnr)') - if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif - endif - else -" call Decho("no pattern: building list based on ".b:netrw_curdir."/".dirname) - let w:netrw_explore_list= split(expand(b:netrw_curdir."/".dirname),'\n') - if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif - endif +" call Dret("LocalBrowseShellCmdRefresh") +endfun - let w:netrw_explore_listlen = len(w:netrw_explore_list) -" call Decho("w:netrw_explore_list<".string(w:netrw_explore_list)."> listlen=".w:netrw_explore_listlen) +" --------------------------------------------------------------------- +" s:NetrwLocalRm: {{{2 +fun! s:NetrwLocalRm(path) range +" call Dfunc("NetrwLocalRm(path<".a:path.">)") +" call Decho("firstline=".a:firstline." lastline=".a:lastline) - if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') - call netrw#ErrorMsg(s:WARNING,"no files matched",42) - silent! let @* = keepregstar - silent! let @+ = keepregstar - silent! let @/ = keepregslash -" call Dret("netrw#Explore : no files matched") - return - endif + " preparation for removing multiple files/directories + let ret = 0 + let all = 0 + let svpos = netrw#NetrwSavePosn() + + if exists("s:netrwmarkfilelist_{bufnr('%')}") + " remove all marked files +" call Decho("remove all marked files") + for fname in s:netrwmarkfilelist_{bufnr("%")} + let ok= s:NetrwLocalRmFile(a:path,fname,all) + if ok =~ 'q\%[uit]' + break + elseif ok =~ 'a\%[ll]' + let all= 1 endif + endfor + call s:NetrwUnMarkFile(1) - " NetrwStatusLine support - for exploring support - let w:netrw_explore_indx= indx -" call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen) + else + " remove (multiple) files and directories +" call Decho("remove files in range [".a:firstline.",".a:lastline."]") - " wrap the indx around, but issue a note - if indx >= w:netrw_explore_listlen || indx < 0 -" call Decho("wrap indx (indx=".indx." listlen=".w:netrw_explore_listlen.")") - let indx = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0 - let w:netrw_explore_indx= indx - call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43) - sleep 1 + let ctr = a:firstline + while ctr <= a:lastline + exe "keepjumps ".ctr + + " sanity checks + if line(".") < w:netrw_bannercnt + let ctr= ctr + 1 + continue + endif + let curword= s:NetrwGetWord() + if curword == "./" || curword == "../" + let ctr= ctr + 1 + continue + endif + let ok= s:NetrwLocalRmFile(a:path,curword,all) + if ok =~ 'q\%[uit]' + break + elseif ok =~ 'a\%[ll]' + let all= 1 endif + let ctr= ctr + 1 + endwhile + endif - exe "let dirfile= w:netrw_explore_list[".indx."]" -" call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">") - let newdir= substitute(dirfile,'/[^/]*$','','e') -" call Decho("newdir<".newdir.">") + " refresh the directory + call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) + call netrw#NetrwRestorePosn(svpos) -" call Decho("calling LocalBrowseCheck(newdir<".newdir.">)") - call netrw#LocalBrowseCheck(newdir) - if !exists("w:netrw_liststyle") - let w:netrw_liststyle= g:netrw_liststyle +" call Dret("NetrwLocalRm") +endfun + +" --------------------------------------------------------------------- +" s:NetrwLocalRmFile: remove file fname given the path {{{2 +" Give confirmation prompt unless all==1 +fun! s:NetrwLocalRmFile(path,fname,all) +" call Dfunc("s:NetrwLocalRmFile(path<".a:path."> fname<".a:fname."> all=".a:all) + + let all= a:all + let ok = "" + norm! 0 + let rmfile= s:ComposePath(a:path,a:fname) +" call Decho("rmfile<".rmfile.">") + + if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') + " attempt to remove file + if !all + echohl Statement + call inputsave() + let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") + call inputrestore() + echohl NONE + if ok == "" + let ok="no" endif - if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST - call search('^'.substitute(dirfile,"^.*/","","").'\>',"W") - else - call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w") +" call Decho("response: ok<".ok.">") + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') +" call Decho("response: ok<".ok."> (after sub)") + if ok =~ 'a\%[ll]' + let all= 1 endif - let w:netrw_explore_mtchcnt = indx + 1 - let w:netrw_explore_bufnr = bufnr("%") - let w:netrw_explore_line = line(".") - call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}') -" call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line) + endif - else -" call Decho("vim does not have path_extra") - if !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) - endif - silent! let @* = keepregstar - silent! let @+ = keepregstar - silent! let @/ = keepregslash -" call Dret("netrw#Explore : missing +path_extra") - return + if all || ok =~ 'y\%[es]' || ok == "" + let ret= s:System("delete",rmfile) +" call Decho("errcode=".v:shell_error." ret=".ret) endif else -" call Decho("case Explore newdir<".dirname.">") - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/' - silent! unlet w:netrw_treedict - silent! unlet w:netrw_treetop + " attempt to remove directory + if !all + echohl Statement + call inputsave() + let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") + call inputrestore() + let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') + if ok == "" + let ok="no" + endif + if ok =~ 'a\%[ll]' + let all= 1 + endif endif - let newdir= dirname - if !exists("b:netrw_curdir") - call netrw#LocalBrowseCheck(getcwd()) - else - call netrw#LocalBrowseCheck(s:NetBrowseChgDir(1,newdir)) + let rmfile= substitute(rmfile,'[\/]$','','e') + + if all || ok =~ 'y\%[es]' || ok == "" +" call Decho("1st attempt: system(".g:netrw_local_rmdir.' "'.rmfile.'")') + call s:System("system",g:netrw_local_rmdir.' "'.rmfile.'"') +" call Decho("v:shell_error=".v:shell_error) + + if v:shell_error != 0 +" call Decho("2nd attempt to remove directory<".rmfile.">") + let errcode= s:System("delete",rmfile) +" call Decho("errcode=".errcode) + + if errcode != 0 + if has("unix") +" call Decho("3rd attempt to remove directory<".rmfile.">") + call s:System("system","rm ".rmfile) + if v:shell_error != 0 && !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34) + endif + elseif !exists("g:netrw_quiet") + call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",35) + endif + endif + endif endif endif - silent! let @* = keepregstar - silent! let @+ = keepregstar - silent! let @/ = keepregslash -" call Dret("netrw#Explore : @/<".@/.">") -endfun - -" --------------------------------------------------------------------- -" s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 -fun! s:ExplorePatHls(pattern) -" call Dfunc("s:ExplorePatHls(pattern<".a:pattern.">)") - let repat= substitute(a:pattern,'^**/\{1,2}','','') -" call Decho("repat<".repat.">") - let repat= escape(repat,'][.\') -" call Decho("repat<".repat.">") - let repat= '\<'.substitute(repat,'\*','\\(\\S\\+ \\)*\\S\\+','g').'\>' -" call Dret("s:ExplorePatHls repat<".repat.">") - return repat +" call Dret("s:NetrwLocalRmFile ".ok) + return ok endfun " --------------------------------------------------------------------- -" SetupNetrwStatusLine: {{{2 -fun! s:SetupNetrwStatusLine(statline) -" call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)") +" s:NetrwLocalRename: rename a remote file or directory {{{2 +fun! s:NetrwLocalRename(path) range +" call Dfunc("NetrwLocalRename(path<".a:path.">)") - if !exists("s:netrw_setup_statline") - let s:netrw_setup_statline= 1 -" call Decho("do first-time status line setup") + " preparation for removing multiple files/directories + let ctr = a:firstline + let svpos= netrw#NetrwSavePosn() + + " rename files given by the markfilelist + if exists("s:netrwmarkfilelist_{bufnr('%')}") + for oldname in s:netrwmarkfilelist_{bufnr("%")} +" call Decho("oldname<".oldname.">") + if exists("subfrom") + let newname= substitute(oldname,subfrom,subto,'') +" call Decho("subfrom<".subfrom."> subto<".subto."> newname<".newname.">") + else + call inputsave() + let newname= input("Moving ".oldname." to : ",oldname) + call inputrestore() + if newname =~ '^s/' + let subfrom = substitute(newname,'^s/\([^/]*\)/.*/$','\1','') + let subto = substitute(newname,'^s/[^/]*/\(.*\)/$','\1','') +" call Decho("subfrom<".subfrom."> subto<".subto."> newname<".newname.">") + let newname = substitute(oldname,subfrom,subto,'') + endif + endif + let ret= rename(oldname,newname) + endfor + 2match none + unlet s:netrwmarkfilelist_{bufnr("%")} + unlet s:netrwmarkfilemtch_{bufnr("%")} + + else - if !exists("s:netrw_users_stl") - let s:netrw_users_stl= &stl - endif - if !exists("s:netrw_users_ls") - let s:netrw_users_ls= &laststatus - endif + " attempt to rename files/directories + while ctr <= a:lastline + exe "keepjumps ".ctr - " set up User9 highlighting as needed - let keepa= @a - redir @a - try - hi User9 - catch /^Vim\%((\a\+)\)\=:E411/ - if &bg == "dark" - hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue - else - hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue + " sanity checks + if line(".") < w:netrw_bannercnt + let ctr= ctr + 1 + continue endif - endtry - redir END - let @a= keepa + let curword= s:NetrwGetWord() + if curword == "./" || curword == "../" + let ctr= ctr + 1 + continue + endif + + norm! 0 + let oldname= s:ComposePath(a:path,curword) +" call Decho("oldname<".oldname.">") + + call inputsave() + let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e')) + call inputrestore() + + let ret= rename(oldname,newname) +" call Decho("renaming <".oldname."> to <".newname.">") + + let ctr= ctr + 1 + endwhile endif - " set up status line (may use User9 highlighting) - " insure that windows have a statusline - " make sure statusline is displayed - let &stl=a:statline - setlocal laststatus=2 -" call Decho("stl=".&stl) - redraw! + " refresh the directory +" call Decho("refresh the directory listing") + call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) + call netrw#NetrwRestorePosn(svpos) -" call Dret("SetupNetrwStatusLine : stl=".&stl) +" call Dret("NetrwLocalRename") endfun " --------------------------------------------------------------------- -" NetrwStatusLine: {{{2 -fun! NetrwStatusLine() +" s:LocalFastBrowser: handles setting up/taking down fast browsing for the local browser {{{2 +" +" Directory Is +" fastbrowse Local Remote +" slow 0 D D D=Deleting a buffer implies it will not be re-used (slow) +" med 1 D H H=Hiding a buffer implies it may be re-used (fast) +" fast 2 H H +fun! s:LocalFastBrowser() +" call Dfunc("LocalFastBrowser() g:netrw_fastbrowse=".g:netrw_fastbrowse) -" vvv NetrwStatusLine() debugging vvv -" let g:stlmsg="" -" if !exists("w:netrw_explore_bufnr") -" let g:stlmsg="!X" -" elseif w:netrw_explore_bufnr != bufnr("%") -" let g:stlmsg="explore_bufnr!=".bufnr("%") -" endif -" if !exists("w:netrw_explore_line") -" let g:stlmsg=" !X" -" elseif w:netrw_explore_line != line(".") -" let g:stlmsg=" explore_line!={line(.)<".line(".").">" -" endif -" if !exists("w:netrw_explore_list") -" let g:stlmsg=" !X" -" endif -" ^^^ NetrwStatusLine() debugging ^^^ + " initialize browselist, a list of buffer numbers that the local browser has used + if !exists("s:netrw_browselist") +" call Decho("initialize s:netrw_browselist") + let s:netrw_browselist= [] + endif - if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") - " restore user's status line - let &stl = s:netrw_users_stl - let &laststatus = s:netrw_users_ls - if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif - if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif - return "" - else - return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen + " append current buffer to fastbrowse list + if empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1] +" call Decho("appendng current buffer to browselist") + call add(s:netrw_browselist,bufnr("%")) +" call Decho("browselist=".string(s:netrw_browselist)) endif -endfun -" --------------------------------------------------------------------- -" NetGetcwd: get the current directory. {{{2 -" Change backslashes to forward slashes, if any. -" If doesc is true, escape certain troublesome characters -fun! s:NetGetcwd(doesc) -" call Dfunc("NetGetcwd(doesc=".a:doesc.")") - let curdir= substitute(getcwd(),'\\','/','ge') - if curdir !~ '[\/]$' - let curdir= curdir.'/' + " enable autocmd events to handle refreshing/removing local browser buffers + " If local browse buffer is currently showing: refresh it + " If local browse buffer is currently hidden : wipe it + if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1 +" call Decho("setting up local-browser shell command refresh") + let s:netrw_browser_shellcmd= 1 + augroup AuNetrwShellCmd + au! + if (has("win32") || has("win95") || has("win64") || has("win16")) + au ShellCmdPost * call s:LocalBrowseShellCmdRefresh() + else + au ShellCmdPost,FocusGained * call s:LocalBrowseShellCmdRefresh() + endif + augroup END endif - if a:doesc - let curdir= escape(curdir,s:netrw_cd_escape) + + " user must have changed fastbrowse to its fast setting, so remove + " the associated autocmd events + if g:netrw_fastbrowse > 1 && exists("s:netrw_browser_shellcmd") +" call Decho("remove AuNetrwShellCmd autcmd group") + unlet s:netrw_browser_shellcmd + augroup AuNetrwShellCmd + au! + augroup END + augroup! AuNetrwShellCmd endif -" call Dret("NetGetcwd <".curdir.">") - return curdir + +" call Dret("LocalFastBrowser : browselist<".string(s:netrw_browselist).">") endfun " --------------------------------------------------------------------- -" SetSort: sets up the sort based on the g:netrw_sort_sequence {{{2 -" What this function does is to compute a priority for the patterns -" in the g:netrw_sort_sequence. It applies a substitute to any -" "files" that satisfy each pattern, putting the priority / in -" front. An "*" pattern handles the default priority. -fun! s:SetSort() -" call Dfunc("SetSort() bannercnt=".w:netrw_bannercnt) - if w:netrw_liststyle == s:LONGLIST - let seqlist = substitute(g:netrw_sort_sequence,'\$','\\%(\t\\|\$\\)','ge') - else - let seqlist = g:netrw_sort_sequence - endif - " sanity check -- insure that * appears somewhere - if seqlist == "" - let seqlist= '*' - elseif seqlist !~ '\*' - let seqlist= seqlist.',*' +" Support Functions: {{{1 + +" --------------------------------------------------------------------- +" s:UpdateBuffersMenu: does emenu Buffers.Refresh (but due to locale, the menu item may not be called that) {{{2 +" The Buffers.Refresh menu calls s:BMShow(); unfortunately, that means that that function +" can't be called except via emenu. But due to locale, that menu line may not be called +" Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway. +fun! s:UpdateBuffersMenu() +" call Dfunc("s:UpdateBuffersMenu()") + if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' + try + silent emenu Buffers.Refresh\ menu + catch /^Vim\%((\a\+)\)\=:E/ + let v:errmsg= "" + silent call s:NetrwBMShow() + endtry endif - let priority = 1 - while seqlist != "" - if seqlist =~ ',' - let seq = substitute(seqlist,',.*$','','e') - let seqlist = substitute(seqlist,'^.\{-},\(.*\)$','\1','e') - else - let seq = seqlist - let seqlist = "" - endif - let eseq= escape(seq,'/') - if priority < 10 - let spriority= "00".priority.'\/' - elseif priority < 100 - let spriority= "0".priority.'\/' - else - let spriority= priority.'\/' - endif -" call Decho("priority=".priority." spriority<".spriority."> seq<".seq."> seqlist<".seqlist.">") +" call Dret("s:UpdateBuffersMenu") +endfun - " sanity check - if w:netrw_bannercnt > line("$") - " apparently no files were left after a Hiding pattern was used -" call Dret("SetSort : no files left after hiding") - return - endif - if seq == '*' - exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/' - else - exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/' +" --------------------------------------------------------------------- +" s:NetrwBMShow: {{{2 +fun! s:NetrwBMShow() +" call Dfunc("s:NetrwBMShow()") + redir => bmshowraw + menu + redir END + let bmshowlist = split(bmshowraw,'\n') + if bmshowlist != [] + let bmshowfuncs= filter(bmshowlist,'v:val =~ "\\d\\+_BMShow()"') + if bmshowfuncs != [] + let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','') + if bmshowfunc =~ '^call.*BMShow()' + exe "silent! ".bmshowfunc + endif endif - let priority = priority + 1 - endwhile - - " Following line associated with priority -- items that satisfy a priority - " pattern get prefixed by ###/ which permits easy sorting by priority. - " Sometimes files can satisfy multiple priority patterns -- only the latest - " priority pattern needs to be retained. So, at this point, these excess - " priority prefixes need to be removed, but not directories that happen to - " be just digits themselves. - exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+\ze./\1/e' - -" call Dret("SetSort") + endif +" call Dret("s:NetrwBMShow : bmshowfunc<".bmshowfunc.">") endfun -" ===================================================================== -" Support Functions: {{{1 - " --------------------------------------------------------------------- -" ComposePath: Appends a new part to a path taking different systems into consideration {{{2 +" s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 fun! s:ComposePath(base,subdir) " call Dfunc("s:ComposePath(base<".a:base."> subdir<".a:subdir.">)") if(has("amiga")) - let ec = a:base[strlen(a:base)-1] + let ec = a:base[s:Strlen(a:base)-1] if ec != '/' && ec != ':' let ret = a:base . "/" . a:subdir else let ret = a:base . a:subdir endif + elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) + let ret= a:subdir elseif a:base =~ '^\a\+://' let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','') let curpath = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\2','') @@ -4929,6 +6583,10 @@ fun! s:ComposePath(base,subdir) " call Decho("ret<".ret.">") else let ret = substitute(a:base."/".a:subdir,"//","/","g") + if a:base =~ '^//' + " keeping initial '//' for the benefit of network share listing support + let ret= '/'.ret + endif endif " call Dret("s:ComposePath ".ret) return ret @@ -4939,7 +6597,7 @@ endfun " 0=note = s:NOTE " 1=warning = s:WARNING " 2=error = s:ERROR -" Mar 19, 2007 : max errnum currently is 49 +" Sep 17, 2007 : max errnum currently is 60 fun! netrw#ErrorMsg(level,msg,errnum) " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) @@ -4955,14 +6613,15 @@ fun! netrw#ErrorMsg(level,msg,errnum) " (default) netrw creates a one-line window to show error/warning " messages (reliably displayed) - " record current window number for NetRestorePosn()'s benefit + " record current window number for NetrwRestorePosn()'s benefit let s:winBeforeErr= winnr() - + " getting messages out reliably is just plain difficult! " This attempt splits the current window, creating a one line window. if bufexists("NetrwMessage") && bufwinnr("NetrwMessage") > 0 exe bufwinnr("NetrwMessage")."wincmd w" set ma noro +" call Decho("set ma noro") call setline(line("$")+1,level.a:msg) $ else @@ -4985,7 +6644,7 @@ fun! netrw#ErrorMsg(level,msg,errnum) else " (optional) netrw will show messages using echomsg. Even if the " message doesn't appear, at least it'll be recallable via :messages - redraw! +" redraw! if a:level == s:WARNING echohl WarningMsg elseif a:level == s:ERROR @@ -5034,28 +6693,31 @@ fun! s:GetTempfile(fname) " get a brand new temporary filename let tmpfile= tempname() " call Decho("tmpfile<".tmpfile."> : from tempname()") - + let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape) " call Decho("tmpfile<".tmpfile."> : chgd any \\ -> /") - + " sanity check -- does the temporary file's directory exist? if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2) " call Dret("s:GetTempfile getcwd<".getcwd().">") return "" endif - + " let netrw#NetSource() know about the tmpfile let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() " call Decho("tmpfile<".tmpfile."> s:netrw_tmpfile<".s:netrw_tmpfile.">") - + " o/s dependencies - if g:netrw_cygwin == 1 + if g:netrw_cygwin != 0 let tmpfile = substitute(tmpfile,'^\(\a\):','/cygdrive/\1','e') elseif has("win32") || has("win95") || has("win64") || has("win16") - let tmpfile = substitute(tmpfile,'/','\\','g') + if !exists("+shellslash") || !&ssl + let tmpfile = substitute(tmpfile,'/','\','g') + endif else - let tmpfile = tmpfile + let tmpfile = tmpfile endif let b:netrw_tmpfile= tmpfile " call Decho("o/s dependent fixed tempname<".tmpfile.">") @@ -5084,9 +6746,10 @@ fun! s:GetTempfile(fname) endif endif +" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap) " call Dret("s:GetTempfile <".tmpfile.">") return tmpfile -endfun +endfun " --------------------------------------------------------------------- " s:MakeSshCmd: transforms input command using USEPORT HOSTNAME into {{{2 @@ -5106,11 +6769,36 @@ fun! s:MakeSshCmd(sshcmd) endfun " --------------------------------------------------------------------- +" s:RemoteSystem: runs a command on a remote host using ssh {{{2 +" Returns status +fun! s:RemoteSystem(cmd) +" call Dfunc("s:RemoteSystem(cmd<".a:cmd.">)") + if !executable(g:netrw_ssh_cmd) + call netrw#ErrorMsg(s:ERROR,"g:netrw_ssh_cmd<".g:netrw_ssh_cmd."> is not executable!",52) + elseif !exists("b:netrw_curdir") + call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) + else + let cmd = s:MakeSshCmd(g:netrw_ssh_cmd." USEPORT HOSTNAME") + let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') + if remotedir != "" + let cmd= cmd.' "lcd '."'".remotedir."';" + else + let cmd= cmd.' "' + endif + let cmd= cmd.a:cmd.'"' +" call Decho("call system(".cmd.")") + let ret= system(cmd) + endif +" call Dret("s:RemoteSystem ".ret) + return ret +endfun + +" --------------------------------------------------------------------- " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 fun! s:NetrwEnew(curdir) " call Dfunc("s:NetrwEnew(curdir<".a:curdir.">) buf#".bufnr("%")."<".bufname("%").">") - " grab a function-local copy of buffer variables + " grab a function-local-variable copy of buffer variables if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif if exists("b:netrw_browser_active") |let netrw_browser_active = b:netrw_browser_active |endif if exists("b:netrw_cpf") |let netrw_cpf = b:netrw_cpf |endif @@ -5128,15 +6816,12 @@ fun! s:NetrwEnew(curdir) if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif - if getline(2) =~ '^" Netrw Directory Listing' -" call Decho("generate a buffer with keepjumps keepalt enew! (1)") - keepjumps keepalt enew! - else -" call Decho("generate a buffer with keepjumps enew! (2)") - keepjumps enew! - endif + call s:NetrwOptionRestore("w:") +" call Decho("generate a buffer with keepjumps keepalt enew!") + keepjumps keepalt enew! + call s:NetrwOptionSave("w:") - " copy function-local variables to buffer variable equivalents + " copy function-local-variables to buffer variable equivalents if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif if exists("netrw_cpf") |let b:netrw_cpf = netrw_cpf |endif @@ -5158,15 +6843,97 @@ fun! s:NetrwEnew(curdir) if b:netrw_curdir =~ '/$' if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST file NetrwTreeListing + nno [ :silent call TreeListMove('[') + nno ] :silent call TreeListMove(']') else - exe "silent! file ".b:netrw_curdir + exe "silent! keepalt file ".b:netrw_curdir endif endif -" call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%").">") +" call Dret("s:NetrwEnew : buf#".bufnr("%")."<".bufname("%")."> expand(%)<".expand("%")."> expand(#)<".expand("#").">") +endfun + +" ------------------------------------------------------------------------ +" netrw#NetrwSavePosn: saves position of cursor on screen {{{2 +fun! netrw#NetrwSavePosn() +" call Dfunc("netrw#NetrwSavePosn()") + " Save current line and column + let w:netrw_winnr= winnr() + let w:netrw_line = line(".") + let w:netrw_col = virtcol(".") + + " Save top-of-screen line + norm! H0 + let w:netrw_hline= line(".") + + " set up string holding position parameters + let ret = "let w:netrw_winnr=".w:netrw_winnr."|let w:netrw_line=".w:netrw_line."|let w:netrw_col=".w:netrw_col."|let w:netrw_hline=".w:netrw_hline + + call netrw#NetrwRestorePosn() +" call Dret("netrw#NetrwSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline) + return ret endfun " ------------------------------------------------------------------------ +" netrw#NetrwRestorePosn: restores the cursor and file position as saved by NetrwSavePosn() {{{2 +fun! netrw#NetrwRestorePosn(...) +" call Dfunc("netrw#NetrwRestorePosn() a:0=".a:0." winnr=".(exists("w:netrw_winnr")? w:netrw_winnr : -1)." line=".(exists("w:netrw_line")? w:netrw_line : -1)." col=".(exists("w:netrw_col")? w:netrw_col : -1)." hline=".(exists("w:netrw_hline")? w:netrw_hline : -1)) + let eikeep= &ei + set ei=all + if expand("%") == "NetrwMessage" + exe s:winBeforeErr."wincmd w" + endif + + if a:0 > 0 + exe a:1 + endif + + " restore window + if exists("w:netrw_winnr") +" call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w") + exe "silent! ".w:netrw_winnr."wincmd w" + endif + if v:shell_error == 0 + " as suggested by Bram M: redraw on no error + " allows protocol error messages to remain visible +" redraw! + endif + + " restore top-of-screen line + if exists("w:netrw_hline") +" call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z") + exe "norm! ".w:netrw_hline."G0z\" + endif + + " restore position + if exists("w:netrw_line") && exists("w:netrw_col") +" call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|") + exe "norm! ".w:netrw_line."G0".w:netrw_col."\" + endif + + let &ei= eikeep +" call Dret("netrw#NetrwRestorePosn") +endfun + +" --------------------------------------------------------------------- +" s:NetrwSaveWordPosn: used to keep cursor on same word after refresh, {{{2 +" changed sorting, etc. Also see s:NetrwRestoreWordPosn(). +fun! s:NetrwSaveWordPosn() +" call Dfunc("NetrwSaveWordPosn()") + let s:netrw_saveword= '^'.escape(getline("."),g:netrw_cd_escape).'$' +" call Dret("NetrwSaveWordPosn : saveword<".s:netrw_saveword.">") +endfun + +" --------------------------------------------------------------------- +" s:NetrwRestoreWordPosn: used to keep cursor on same word after refresh, {{{2 +" changed sorting, etc. Also see s:NetrwSaveWordPosn(). +fun! s:NetrwRestoreWordPosn() +" call Dfunc("NetrwRestoreWordPosn()") + silent! call search(s:netrw_saveword,'w') +" call Dret("NetrwRestoreWordPosn") +endfun + +" --------------------------------------------------------------------- " s:RemotePathAnalysis: {{{2 fun! s:RemotePathAnalysis(dirname) " call Dfunc("s:RemotePathAnalysis()") @@ -5205,7 +6972,7 @@ fun! s:RestoreBufVars() endfun " --------------------------------------------------------------------- -" s:RestoreWinVars: (used by Explore() and NetSplit()) {{{2 +" s:RestoreWinVars: (used by Explore() and NetrwSplit()) {{{2 fun! s:RestoreWinVars() " call Dfunc("s:RestoreWinVars()") if exists("s:bannercnt") |let w:netrw_bannercnt = s:bannercnt |unlet s:bannercnt |endif @@ -5245,7 +7012,7 @@ fun! s:SaveBufVars() endfun " --------------------------------------------------------------------- -" s:SaveWinVars: (used by Explore() and NetSplit()) {{{2 +" s:SaveWinVars: (used by Explore() and NetrwSplit()) {{{2 fun! s:SaveWinVars() " call Dfunc("s:SaveWinVars()") if exists("w:netrw_bannercnt") |let s:bannercnt = w:netrw_bannercnt |endif @@ -5270,7 +7037,7 @@ fun! s:SaveWinVars() endfun " --------------------------------------------------------------------- -" s:SetBufWinVars: (used by NetBrowse() and LocalBrowseCheck()) {{{2 +" s:SetBufWinVars: (used by NetrwBrowse() and LocalBrowseCheck()) {{{2 " To allow separate windows to have their own activities, such as " Explore **/pattern, several variables have been made window-oriented. " However, when the user splits a browser window (ex: ctrl-w s), these @@ -5292,6 +7059,45 @@ fun! s:SetBufWinVars() endfun " --------------------------------------------------------------------- +" s:SetRexDir: set directory for :Rexplore {{{2 +fun! s:SetRexDir(islocal,dirname) +" call Dfunc("s:SetRexDir(islocal=".a:islocal." dirname<".a:dirname.">)") + " set up Rex and leftmouse-double-click + if a:islocal + exe 'com! Rexplore call netrw#LocalBrowseCheck("'.escape(a:dirname,g:netrw_cd_escape).'")' + if g:netrw_retmap + silent! unmap <2-leftmouse> + if !hasmapto("NetrwReturn") + nmap <2-leftmouse> NetrwReturn + endif + exe 'nnoremap NetrwReturn :call netrw#LocalBrowseCheck("'.a:dirname.'")' + endif + else + exe 'com! Rexplore call s:NetrwBrowse(0,"'.escape(a:dirname,g:netrw_cd_escape).'")' + if g:netrw_retmap + silent! unmap <2-leftmouse> + if !hasmapto("NetrwReturn") + nmap <2-leftmouse> NetrwReturn + endif + exe 'nnoremap NetrwReturn :call NetrwBrowse(0,"'.a:dirname.'")' + endif + endif +" call Dret("s:SetRexDir") +endfun + +" --------------------------------------------------------------------- +" s:Strlen: this function returns the length of a string, even if its {{{2 +" using two-byte etc characters. Depends on virtcol(). +" Currently, its only used if g:Align_xstrlen is set to a +" nonzero value. +fun! s:Strlen(x) +" call Dfunc("s:Strlen(x<".a:x.">") + let ret= strlen(substitute(a:x,'.','c','g')) +" call Dret("s:Strlen ".ret) + return ret +endfun + +" --------------------------------------------------------------------- " s:System: using Steve Hall's idea to insure that Windows paths stay {{{2 " acceptable. No effect on Unix paths. " Examples of use: let result= s:System("system",path) @@ -5300,7 +7106,7 @@ fun! s:System(cmd,path) " call Dfunc("s:System(cmd<".a:cmd."> path<".a:path.">)") let path = a:path - if (has("win32") || has("win95") || has("win64") || has("win16")) + if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) " system call prep " remove trailing slash (Win95) let path = substitute(path, '\(\\\|/\)$', '', 'g') @@ -5320,13 +7126,68 @@ fun! s:System(cmd,path) exe "let result= ".a:cmd."('".path."')" endif -" call Decho("result<".result.">") -" call Dret("s:System") +" call Dret("s:System result<".result.">") return result endfun " --------------------------------------------------------------------- -" s:UseBufWinVars: (used by NetBrowse() and LocalBrowseCheck() {{{2 +" s:TreeListMove: {{{2 +fun! s:TreeListMove(dir) +" call Dfunc("s:TreeListMove(dir<".a:dir.">)") + let curline = getline(".") + let prvline = (line(".") > 1)? getline(line(".")-1) : '' + let nxtline = (line(".") < line("$"))? getline(line(".")+1) : '' + let curindent= substitute(curline,'^\([| ]*\).\{-}$','\1','') + let indentm1 = substitute(curindent,'^| ','','') +" call Decho("prvline <".prvline."> #".line(".")-1) +" call Decho("curline <".curline."> #".line(".")) +" call Decho("nxtline <".nxtline."> #".line(".")+1) +" call Decho("curindent<".curindent.">") +" call Decho("indentm1 <".indentm1.">") + + if curline !~ '/$' +" call Decho('regfile') + if a:dir == '[' && prvline != '' + norm! 0 + let nl = search('^'.indentm1.'[^|]','bWe') " search backwards from regular file +" call Decho("regfile srch back: ".nl) + elseif a:dir == ']' && nxtline != '' + norm! $ + let nl = search('^'.indentm1.'[^|]','We') " search forwards from regular file +" call Decho("regfile srch fwd: ".nl) + endif + + elseif a:dir == '[' && prvline != '' + norm! 0 + let curline= line(".") + let nl = search('^'.curindent.'[^|]','bWe') " search backwards From directory, same indentation +" call Decho("dir srch back ind: ".nl) + if nl != 0 + if line(".") == curline-1 + let nl= search('^'.indentm1.'[^|]','bWe') " search backwards from directory, indentation - 1 +" call Decho("dir srch back ind-1: ".nl) + endif + endif + + elseif a:dir == ']' && nxtline != '' + norm! $ + let curline = line(".") + let nl = search('^'.curindent.'[^|]','We') " search forwards from directory, same indentation +" call Decho("dir srch fwd ind: ".nl) + if nl != 0 + if line(".") == curline+1 + let nl= search('^'.indentm1.'[^|]','We') " search forwards from directory, indentation - 1 +" call Decho("dir srch fwd ind-1: ".nl) + endif + endif + + endif + +" call Dret("s:TreeListMove") +endfun + +" --------------------------------------------------------------------- +" s:UseBufWinVars: (used by NetrwBrowse() and LocalBrowseCheck() {{{2 " Matching function to BufferWinVars() fun! s:UseBufWinVars() " call Dfunc("s:UseBufWinVars()") diff --git a/runtime/autoload/netrwSettings.vim b/runtime/autoload/netrwSettings.vim index 5f4445fb..8b5170c6 100644 --- a/runtime/autoload/netrwSettings.vim +++ b/runtime/autoload/netrwSettings.vim @@ -1,7 +1,7 @@ " netrwSettings.vim: makes netrw settings simpler -" Date: Mar 26, 2007 +" Date: Mar 11, 2008 " Maintainer: Charles E Campbell, Jr -" Version: 9 +" Version: 11 " Copyright: Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright @@ -19,13 +19,13 @@ if exists("g:loaded_netrwSettings") || &cp finish endif -let g:loaded_netrwSettings = "v9" +let g:loaded_netrwSettings = "v11" " --------------------------------------------------------------------- " NetrwSettings: {{{1 fun! netrwSettings#NetrwSettings() " this call is here largely just to insure that netrw has been loaded - call netrw#NetSavePosn() + call netrw#NetrwSavePosn() if !exists("g:loaded_netrw") echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None return @@ -101,23 +101,36 @@ fun! netrwSettings#NetrwSettings() else put = 'let g:netrw_browsex_viewer = (not defined)' endif + let cdescline= line("$") + put ='let g:netrw_cd_escape...' + put = 'let g:netrw_compress = '.g:netrw_compress + let decompressline= line("$") + put ='let g:netrw_decompress...' put = 'let g:netrw_dirhistmax = '.g:netrw_dirhistmax put = 'let g:netrw_fastbrowse = '.g:netrw_fastbrowse + let fnameescline= line("$") + put = 'let g:netrw_fname_escape...' put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd put = 'let g:netrw_ftp_sizelist_cmd = '.g:netrw_ftp_sizelist_cmd put = 'let g:netrw_ftp_timelist_cmd = '.g:netrw_ftp_timelist_cmd + let globescline= line("$") + put ='let g:netrw_glob_escape...' put = 'let g:netrw_hide = '.g:netrw_hide put = 'let g:netrw_keepdir = '.g:netrw_keepdir put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd put = 'let g:netrw_list_hide = '.g:netrw_list_hide + put = 'let g:netrw_liststyle = '.g:netrw_liststyle + put = 'let g:netrw_localcopycmd = '.g:netrw_localcopycmd put = 'let g:netrw_local_mkdir = '.g:netrw_local_mkdir + put = 'let g:netrw_localmovecmd = '.g:netrw_localmovecmd put = 'let g:netrw_local_rmdir = '.g:netrw_local_rmdir - put = 'let g:netrw_liststyle = '.g:netrw_liststyle put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen put = 'let g:netrw_menu = '.g:netrw_menu put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd + put = 'let g:netrw_preview = '.g:netrw_preview put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd + put = 'let g:netrw_retmap = '.g:netrw_retmap put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd put = 'let g:netrw_rmdir_cmd = '.g:netrw_rmdir_cmd put = 'let g:netrw_rmf_cmd = '.g:netrw_rmf_cmd @@ -125,10 +138,13 @@ fun! netrwSettings#NetrwSettings() put = 'let g:netrw_sort_by = '.g:netrw_sort_by put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence + put = 'let g:netrw_special_syntax = '.g:netrw_special_syntax put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject put = 'let g:netrw_scpport = '.g:netrw_scpport put = 'let g:netrw_sshport = '.g:netrw_sshport put = 'let g:netrw_timefmt = '.g:netrw_timefmt + let tmpfileescline= line("$") + put ='let g:netrw_tmpfile_escape...' put = 'let g:netrw_use_noswf = '.g:netrw_use_noswf put = 'let g:netrw_winsize = '.g:netrw_winsize @@ -142,13 +158,18 @@ fun! netrwSettings#NetrwSettings() silent %s/= $/= ''/e 1 - " Put in shq setting. + " Put in g:netrw_shq setting and g:netrw_cd_escape " (deferred so as to avoid the quote manipulation just preceding) if g:netrw_shq == "'" - call setline(shqline,'let g:netrw_shq = "'.g:netrw_shq.'"') + call setline(shqline, 'let g:netrw_shq = "'.g:netrw_shq.'"') else - call setline(shqline,"let g:netrw_shq = '".g:netrw_shq."'") + call setline(shqline, "let g:netrw_shq = '".g:netrw_shq."'") endif + call setline(cdescline, "let g:netrw_cd_escape = ".'"'.escape(g:netrw_cd_escape,'\"').'"') + call setline(decompressline,"let g:netrw_decompress = ".substitute(string(g:netrw_decompress),"^'\\(.*\\)'$",'\1','')) + call setline(fnameescline, "let g:netrw_fname_escape = '".escape(g:netrw_fname_escape,"'")."'") + call setline(globescline, "let g:netrw_glob_escape = '".escape(g:netrw_glob_escape,"'")."'") + call setline(tmpfileescline,"let g:netrw_tmpfile_escape = '".escape(g:netrw_tmpfile_escape,"'")."'") set nomod diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim index 52fcfee4..d2c2325d 100644 --- a/runtime/autoload/rubycomplete.vim +++ b/runtime/autoload/rubycomplete.vim @@ -1,7 +1,7 @@ " Vim completion script " Language: Ruby " Maintainer: Mark Guzman -" Info: $Id: rubycomplete.vim,v 1.9 2007/05/12 13:11:30 vimboss Exp $ +" Info: $Id: rubycomplete.vim,v 1.6 2007/05/05 17:17:50 vimboss Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim index 6c172386..3fb8d97f 100644 --- a/runtime/autoload/tar.vim +++ b/runtime/autoload/tar.vim @@ -1,21 +1,21 @@ " tar.vim: Handles browsing tarfiles " AUTOLOAD PORTION -" Date: Sep 29, 2006 -" Version: 11 +" Date: Jan 07, 2008 +" Version: 13 " Maintainer: Charles E Campbell, Jr " License: Vim License (see vim's :help license) " " Contains many ideas from Michael Toren's " -" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 +" Copyright: Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, -" tarPlugin.vim is provided *as is* and comes with no warranty -" of any kind, either expressed or implied. By using this -" plugin, you agree that in no event will the copyright -" holder be liable for any damages resulting from the use -" of this software. +" tar.vim and tarPlugin.vim are provided *as is* and comes +" with no warranty of any kind, either expressed or implied. +" By using this plugin, you agree that in no event will the +" copyright holder be liable for any damages resulting from +" the use of this software. " --------------------------------------------------------------------- " Load Once: {{{1 @@ -24,7 +24,7 @@ set cpo&vim if &cp || exists("g:loaded_tar") || v:version < 700 finish endif -let g:loaded_tar= "v11" +let g:loaded_tar= "v13" "call Decho("loading autoload/tar.vim") " --------------------------------------------------------------------- @@ -42,7 +42,9 @@ if !exists("g:tar_writeoptions") let g:tar_writeoptions= "uf" endif if !exists("g:tar_shq") - if has("unix") + if &shq != "" + let g:tar_shq= &shq + elseif has("unix") let g:tar_shq= "'" else let g:tar_shq= '"' @@ -108,11 +110,13 @@ fun! tar#Browse(tarfile) endif let curlast= line("$") if tarfile =~# '\.\(gz\|tgz\)$' -" call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - ") - exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - " +" call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq." | ".g:tar_cmd." -".g:tar_browseoptions." - ") + exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq." | ".g:tar_cmd." -".g:tar_browseoptions." - " + elseif tarfile =~# '\.lrp' + exe "silent r! cat ".g:tar_shq.tarfile.g:tar_shq."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.bz2$' -" call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - ") - exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_browseoptions." - " +" call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq." | ".g:tar_cmd." -".g:tar_browseoptions." - ") + exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq." | ".g:tar_cmd." -".g:tar_browseoptions." - " else " call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".g:tar_shq.tarfile.g:tar_shq) exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".g:tar_shq.tarfile.g:tar_shq @@ -170,7 +174,9 @@ fun! s:TarBrowseSelect() endif new - wincmd _ + if !exists("g:tar_nomax") || g:tar_nomax == 0 + wincmd _ + endif let s:tblfile_{winnr()}= curfile call tar#Read("tarfile:".tarfile.':'.fname,1) filetype detect @@ -195,11 +201,14 @@ fun! tar#Read(fname,mode) " call Decho("fname<".fname.">") if tarfile =~# '\.\(gz\|tgz\)$' -" call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -OPxf - '".fname."'") - exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'" +" call Decho("exe silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_shq.fname.g:tar_shq) + exe "silent r! gzip -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_shq.fname.g:tar_shq + elseif tarfile =~# '\.lrp$' +" call Decho("exe silent r! cat ".g:tar_shq.tarfile.g:tar_shq." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_shq.fname.g:tar_shq) + exe "silent r! cat ".g:tar_shq.tarfile.g:tar_shq." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_shq.fname.g:tar_shq elseif tarfile =~# '\.bz2$' -" call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'") - exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - '".fname."'" +" call Decho("exe silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_shq.fname.g:tar_shq) + exe "silent r! bzip2 -d -c ".g:tar_shq.tarfile.g:tar_shq."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_shq.fname.g:tar_shq else " call Decho("exe silent r! ".g:tar_cmd." -".g:tar_readoptions." ".g:tar_shq.tarfile.g:tar_shq." ".g:tar_shq.fname.g:tar_shq) exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".g:tar_shq.tarfile.g:tar_shq." ".g:tar_shq.fname.g:tar_shq @@ -387,4 +396,4 @@ endfun " Modelines And Restoration: {{{1 let &cpo= s:keepcpo unlet s:keepcpo -" vim:ts=8 fdm=marker +" vim:ts=8 fdm=marker diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim index 5ed34f22..d8961639 100644 --- a/runtime/autoload/vimball.vim +++ b/runtime/autoload/vimball.vim @@ -1,9 +1,9 @@ " vimball.vim : construct a file containing both paths and files " Author: Charles E. Campbell, Jr. -" Date: May 07, 2007 -" Version: 22 +" Date: Apr 01, 2008 +" Version: 25 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim -" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. +" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr. " The VIM LICENSE applies to Vimball.vim, and Vimball.txt " (see |copyright|) except use "Vimball" instead of "Vim". " No warranty, express or implied. @@ -15,8 +15,9 @@ if &cp || exists("g:loaded_vimball") || v:version < 700 finish endif let s:keepcpo = &cpo -let g:loaded_vimball = "v22" +let g:loaded_vimball = "v25" set cpo&vim +"DechoTabOn " ===================================================================== " Constants: {{{1 @@ -24,6 +25,37 @@ if !exists("s:USAGE") let s:USAGE = 0 let s:WARNING = 1 let s:ERROR = 2 + if exists("g:vimball_shq") && !exists("g:netrw_shq") + let g:netrw_shq= g:vimball_shq + endif + if !exists("g:netrw_cygwin") + if has("win32") || has("win95") || has("win64") || has("win16") + if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' + let g:netrw_cygwin= 1 + else + let g:netrw_cygwin= 0 + endif + else + let g:netrw_cygwin= 0 + endif + endif + if !exists("g:netrw_shq") + if exists("&shq") && &shq != "" + let g:netrw_shq= &shq + elseif has("win32") || has("win95") || has("win64") || has("win16") + if g:netrw_cygwin + let g:netrw_shq= "'" + else + let g:netrw_shq= '"' + endif + else + let g:netrw_shq= "'" + endif +" call Decho("g:netrw_shq<".g:netrw_shq.">") + endif + if !exists("g:vimball_path_escape") + let g:vimball_path_escape= ' ;#%' + endif endif " ===================================================================== @@ -31,7 +63,12 @@ endif " --------------------------------------------------------------------- " vimball#MkVimball: creates a vimball given a list of paths to files {{{2 -" Vimball Format: +" Input: +" line1,line2: a range of lines containing paths to files to be included in the vimball +" writelevel : if true, force a write to filename.vba, even if it exists +" (usually accomplished with :MkVimball! ... +" filename : base name of file to be created (ie. filename.vba) +" Output: a filename.vba using vimball format: " path " filesize " [file] @@ -127,6 +164,7 @@ fun! vimball#MkVimball(line1,line2,writelevel,...) range " write the vimball exe "tabn ".vbtabnr call s:ChgDir(curdir) + setlocal ff=unix if a:writelevel let vbnamepath= s:Path(vbname,'') " call Decho("exe w! ".vbnamepath) @@ -152,6 +190,8 @@ endfun " --------------------------------------------------------------------- " vimball#Vimball: extract and distribute contents from a vimball {{{2 +" (invoked the the UseVimball command embedded in +" vimballs' prologue) fun! vimball#Vimball(really,...) " call Dfunc("vimball#Vimball(really=".a:really.") a:0=".a:0) @@ -163,7 +203,8 @@ fun! vimball#Vimball(really,...) " set up standard settings call s:SaveSettings() - let curtabnr = tabpagenr() + let curtabnr = tabpagenr() + let vimballfile = expand("%:tr") " set up vimball tab " call Decho("setting up vimball tab") @@ -186,16 +227,18 @@ fun! vimball#Vimball(really,...) " call Decho("curdir<".curdir.">") call s:ChgDir(home) - call vimball#RmVimball() + let s:ok_unablefind= 1 + call vimball#RmVimball(vimballfile) + unlet s:ok_unablefind let linenr = 4 let filecnt = 0 " give title to listing of (extracted) files from Vimball Archive if a:really - echohl Title | echomsg "Vimball Archive" | echohl None - else - echohl Title | echomsg "Vimball Archive Listing" | echohl None + echohl Title | echomsg "Vimball Archive" | echohl None + else + echohl Title | echomsg "Vimball Archive Listing" | echohl None echohl Statement | echomsg "files would be placed under: ".home | echohl None endif @@ -206,7 +249,7 @@ fun! vimball#Vimball(really,...) while 1 < linenr && linenr < line("$") let fname = substitute(getline(linenr),'\t\[\[\[1$','','') let fname = substitute(fname,'\\','/','g') - let fsize = getline(linenr+1) + let fsize = getline(linenr+1)+0 let filecnt = filecnt + 1 " call Decho("fname<".fname."> fsize=".fsize." filecnt=".filecnt) @@ -257,6 +300,7 @@ fun! vimball#Vimball(really,...) " copy "a" buffer into tab " call Decho('copy "a buffer into tab#'.vbtabnr) exe "tabn ".vbtabnr + setlocal ma silent! %d silent put a 1 @@ -277,21 +321,20 @@ fun! vimball#Vimball(really,...) " set up help if its a doc/*.txt file " call Decho("didhelp<".didhelp."> fname<".fname.">") - if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.txt$' - let didhelp= substitute(fname,'^\(.*\") endif " update for next file -" let oldlinenr = linenr " Decho - let linenr = linenr + fsize -" call Decho("update linenr= [linenr=".oldlinenr."] + [fsize=".fsize."] = ".linenr) +" call Decho("update linenr= [linenr=".linenr."] + [fsize=".fsize."] = ".(linenr+fsize)) + let linenr= linenr + fsize endwhile " set up help " call Decho("about to set up help: didhelp<".didhelp.">") if didhelp != "" - let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','g'),' ') + let htpath= s:Path(home."/".didhelp,"") " call Decho("exe helptags ".htpath) exe "helptags ".htpath echo "did helptags" @@ -334,7 +377,8 @@ fun! vimball#RmVimball(...) " call Decho("turned off all events") if a:0 == 0 - let curfile= '^'.expand("%:tr") + let curfile= expand("%:tr") +" call Decho("case a:0=0: curfile<".curfile."> (used expand(%:tr))") else if a:1 =~ '[\/]' call vimball#ShowMesg(s:USAGE,"RmVimball vimballname [path]") @@ -342,11 +386,10 @@ fun! vimball#RmVimball(...) return endif let curfile= a:1 +" call Decho("case a:0=".a:0.": curfile<".curfile.">") endif - if curfile !~ '.vba$' - let curfile= curfile.".vba: " - else - let curfile= curfile.": " + if curfile =~ '\.vba$' + let curfile= substitute(curfile,'\.vba','','') endif if a:0 >= 2 let home= expand(a:2) @@ -365,13 +408,31 @@ fun! vimball#RmVimball(...) keepalt keepjumps 1split silent! keepalt keepjumps e .VimballRecord let keepsrch= @/ - if search(curfile,'cw') - let exestring= substitute(getline("."),curfile,'','') +" call Decho("search for ^".curfile.".vba:") +" call Decho("search for ^".curfile."[-0-9.]*.vba:") + if search('^'.curfile.": ".'cw') + let foundit= 1 + elseif search('^'.curfile.".vba: ",'cw') + let foundit= 1 + elseif search('^'.curfile.'[-0-9.]*.vba: ','cw') + let foundit= 1 + else + let foundit = 0 + endif + if foundit + let exestring= substitute(getline("."),'^'.curfile.'\S\{-}\.vba: ','','') " call Decho("exe ".exestring) silent! keepalt keepjumps exe exestring silent! keepalt keepjumps d + let exestring= strlen(substitute(exestring,'call delete(.\{-})|\=',"D","g")) +" call Decho("exestring<".exestring.">") + echomsg "removed ".exestring." files" else -" call Decho("unable to find <".curfile."> in .VimballRecord") + let curfile= substitute(curfile,'\.vba','','') +" call Decho("unable to find <".curfile."> in .VimballRecord") + if !exists("s:ok_unablefind") + call vimball#ShowMesg(s:WARNING,"(RmVimball) unable to find <".curfile."> in .VimballRecord") + endif endif silent! keepalt keepjumps g/^\s*$/d silent! keepalt keepjumps wq! @@ -393,17 +454,26 @@ fun! vimball#Decompress(fname) " decompression: if expand("%") =~ '.*\.gz' && executable("gunzip") - exe "!gunzip ".a:fname + silent exe "!gunzip ".s:Escape(a:fname) + if v:shell_error != 0 + call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) gunzip may have failed with <".a:fname.">") + endif let fname= substitute(a:fname,'\.gz$','','') exe "e ".escape(fname,' \') call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") elseif expand("%") =~ '.*\.bz2' && executable("bunzip2") - exe "!bunzip2 ".a:fname + silent exe "!bunzip2 ".s:Escape(a:fname) + if v:shell_error != 0 + call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) bunzip2 may have failed with <".a:fname.">") + endif let fname= substitute(a:fname,'\.bz2$','','') exe "e ".escape(fname,' \') call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") elseif expand("%") =~ '.*\.zip' && executable("unzip") - exe "!unzip ".a:fname + silent exe "!unzip ".s:Escape(a:fname) + if v:shell_error != 0 + call vimball#ShowMesg(s:WARNING,"(vimball#Decompress) unzip may have failed with <".a:fname.">") + endif let fname= substitute(a:fname,'\.zip$','','') exe "e ".escape(fname,' \') call vimball#ShowMesg(s:USAGE,"Source this file to extract it! (:so %)") @@ -443,10 +513,6 @@ fun! vimball#ShowMesg(level,msg) " call Dret("vimball#ShowMesg") endfun - -" --------------------------------------------------------------------- -let &cpo= s:keepcpo -unlet s:keepcpo " ===================================================================== " s:ChgDir: change directory (in spite of Windoze) {{{2 fun! s:ChgDir(newdir) @@ -456,21 +522,26 @@ fun! s:ChgDir(newdir) else exe 'silent cd '.escape(a:newdir,' ') endif -" call Dret("ChgDir") +" call Dret("ChgDir : curdir<".getcwd().">") endfun " --------------------------------------------------------------------- -" s:Path: prepend and append quotes, do escaping, as necessary {{{2 +" s:Path: prepend and append quotes and do escaping {{{2 fun! s:Path(cmd,quote) -" call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">)") +" call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">) vimball_path_escape<".g:vimball_path_escape.">") if (has("win32") || has("win95") || has("win64") || has("win16")) - let cmdpath= a:quote.substitute(a:cmd,'/','\\','g').a:quote +" let cmdpath= a:quote.substitute(a:cmd,'/','\\','g').a:quote + let cmdpath= a:quote.substitute(a:cmd,'\\','/','g').a:quote +" call Decho("cmdpath<".cmdpath."> (win32 mod)") else let cmdpath= a:quote.a:cmd.a:quote +" call Decho("cmdpath<".cmdpath."> (not-win32 mod)") endif - if a:quote == "" + if a:quote == "" && g:vimball_path_escape !~ ' ' let cmdpath= escape(cmdpath,' ') +" call Decho("cmdpath<".cmdpath."> (empty quote case)") endif + let cmdpath= escape(cmdpath,g:vimball_path_escape) " call Dret("Path <".cmdpath.">") return cmdpath endfun @@ -485,23 +556,20 @@ fun! s:RecordInVar(home,cmd) " else " let s:recorddir= s:recorddir."|".substitute(a:cmd,'^rmdir',"call s:Rmdir",'') " endif -" call Decho("recorddir=".s:recorddir) elseif !exists("s:recordfile") let s:recordfile= a:cmd -" call Decho("recordfile=".s:recordfile) else let s:recordfile= s:recordfile."|".a:cmd -" call Decho("recordfile=".s:recordfile) endif -" call Dret("RecordInVar") +" call Dret("RecordInVar : s:recordfile<".(exists("s:recordfile")? s:recordfile : "")."> s:recorddir<".(exists("s:recorddir")? s:recorddir : "").">") endfun " --------------------------------------------------------------------- " s:RecordInFile: {{{2 fun! s:RecordInFile(home) -" call Dfunc("RecordInFile()") +" call Dfunc("s:RecordInFile()") if exists("g:vimball_norecord") -" call Dret("RecordInFile : (g:vimball_norecord)") +" call Dret("s:RecordInFile : g:vimball_norecord") return endif @@ -509,8 +577,12 @@ fun! s:RecordInFile(home) let curdir= getcwd() call s:ChgDir(a:home) keepalt keepjumps 1split + let cmd= expand("%:tr").": " +" call Decho("cmd<".cmd.">") + silent! keepalt keepjumps e .VimballRecord + setlocal ma $ if exists("s:recordfile") && exists("s:recorddir") let cmd= cmd.s:recordfile."|".s:recorddir @@ -519,35 +591,33 @@ fun! s:RecordInFile(home) elseif exists("s:recordfile") let cmd= cmd.s:recordfile else -" call Dret("RecordInFile") +" call Dret("s:RecordInFile : neither recordfile nor recorddir exist") return endif +" call Decho("cmd<".cmd.">") + + " put command into buffer, write .VimballRecord `file keepalt keepjumps put=cmd silent! keepalt keepjumps g/^\s*$/d silent! keepalt keepjumps wq! call s:ChgDir(curdir) - if exists("s:recorddir") |unlet s:recorddir |endif - if exists("s:recordfile")|unlet s:recordfile|endif + + if exists("s:recorddir") +" call Decho("unlet s:recorddir<".s:recorddir.">") + unlet s:recorddir + endif + if exists("s:recordfile") +" call Decho("unlet s:recordfile<".s:recordfile.">") + unlet s:recordfile + endif else " call Decho("s:record[file|dir] doesn't exist") endif -" call Dret("RecordInFile") +" call Dret("s:RecordInFile") endfun " --------------------------------------------------------------------- -" s:Rmdir: {{{2 -"fun! s:Rmdir(dirname) -"" call Dfunc("s:Rmdir(dirname<".a:dirname.">)") -" if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$' -" call system("del ".a:dirname) -" else -" call system("rmdir ".a:dirname) -" endif -"" call Dret("s:Rmdir") -"endfun - -" --------------------------------------------------------------------- " s:VimballHome: determine/get home directory path (usually from rtp) {{{2 fun! s:VimballHome() " call Dfunc("VimballHome()") @@ -587,11 +657,14 @@ fun! s:SaveSettings() let s:pmkeep = &pm let s:repkeep = &report let s:vekeep = &ve + let s:ffkeep = &ff if exists("&acd") - set ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= + setlocal ei=all ve=all noacd nofen noic report=999 nohid bt= ma lz pm= ff=unix else - set ei=all ve=all nofen noic report=999 nohid bt= ma lz pm= + setlocal ei=all ve=all nofen noic report=999 nohid bt= ma lz pm= ff=unix endif + " vimballs should be in unix format + setlocal ff=unix " call Dret("SaveSettings") endfun @@ -611,20 +684,34 @@ fun! s:RestoreSettings() let &report = s:repkeep let &ve = s:vekeep let &ei = s:eikeep + let &ff = s:ffkeep if s:makeep[0] != 0 " restore mark a " call Decho("restore mark-a: makeep=".string(makeep)) call setpos("'a",s:makeep) endif if exists("&acd") - unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep - else - unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep + unlet s:acdkeep endif - set bt=nofile noma + unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep s:lzkeep s:pmkeep s:ffkeep " call Dret("RestoreSettings") endfun " --------------------------------------------------------------------- +" s:Escape: {{{2 +fun s:Escape(name) + " shellescape() was added by patch 7.0.111 + if exists("*shellescape") + return shellescape(a:name) + endif + return g:netrw_shq . a:name . g:netrw_shq +endfun + +" --------------------------------------------------------------------- +" Restore: +let &cpo= s:keepcpo +unlet s:keepcpo + +" --------------------------------------------------------------------- " Modelines: {{{1 " vim: fdm=marker diff --git a/runtime/autoload/xml/html32.vim b/runtime/autoload/xml/html32.vim index 9b971d6f..242f52b1 100644 --- a/runtime/autoload/xml/html32.vim +++ b/runtime/autoload/xml/html32.vim @@ -381,4 +381,3 @@ let g:xmldata_html32 = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/html401f.vim b/runtime/autoload/xml/html401f.vim index 62612655..1797a5a0 100644 --- a/runtime/autoload/xml/html401f.vim +++ b/runtime/autoload/xml/html401f.vim @@ -466,4 +466,3 @@ let g:xmldata_html401t = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/html401s.vim b/runtime/autoload/xml/html401s.vim index 8f726486..37f581ba 100644 --- a/runtime/autoload/xml/html401s.vim +++ b/runtime/autoload/xml/html401s.vim @@ -408,4 +408,3 @@ let g:xmldata_html401s = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/html401t.vim b/runtime/autoload/xml/html401t.vim index 4c53f03b..ae6c63f6 100644 --- a/runtime/autoload/xml/html401t.vim +++ b/runtime/autoload/xml/html401t.vim @@ -458,4 +458,3 @@ let g:xmldata_html401t = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/html40f.vim b/runtime/autoload/xml/html40f.vim index 2b3ccacf..b5ba99f8 100644 --- a/runtime/autoload/xml/html40f.vim +++ b/runtime/autoload/xml/html40f.vim @@ -466,4 +466,3 @@ let g:xmldata_html40t = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/html40s.vim b/runtime/autoload/xml/html40s.vim index 7db45ecf..bb3a45b5 100644 --- a/runtime/autoload/xml/html40s.vim +++ b/runtime/autoload/xml/html40s.vim @@ -408,4 +408,3 @@ let g:xmldata_html40s = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/html40t.vim b/runtime/autoload/xml/html40t.vim index f53aa22d..2d732465 100644 --- a/runtime/autoload/xml/html40t.vim +++ b/runtime/autoload/xml/html40t.vim @@ -458,4 +458,3 @@ let g:xmldata_html40t = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/xhtml10f.vim b/runtime/autoload/xml/xhtml10f.vim index 4cd894d3..0bfa30ce 100644 --- a/runtime/autoload/xml/xhtml10f.vim +++ b/runtime/autoload/xml/xhtml10f.vim @@ -467,4 +467,3 @@ let g:xmldata_xhtml10f = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/xhtml10s.vim b/runtime/autoload/xml/xhtml10s.vim index ec8300ed..3fb7cf8c 100644 --- a/runtime/autoload/xml/xhtml10s.vim +++ b/runtime/autoload/xml/xhtml10s.vim @@ -408,4 +408,3 @@ let g:xmldata_xhtml10s = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/xhtml10t.vim b/runtime/autoload/xml/xhtml10t.vim index 9a904189..0e857ac9 100644 --- a/runtime/autoload/xml/xhtml10t.vim +++ b/runtime/autoload/xml/xhtml10t.vim @@ -458,4 +458,3 @@ let g:xmldata_xhtml10t = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/xhtml11.vim b/runtime/autoload/xml/xhtml11.vim index db631e2b..ef79fd77 100644 --- a/runtime/autoload/xml/xhtml11.vim +++ b/runtime/autoload/xml/xhtml11.vim @@ -432,4 +432,3 @@ let g:xmldata_xhtml11 = { \ 'param': ['/>', ''], \ } \ } -" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xmlcomplete.vim b/runtime/autoload/xmlcomplete.vim index 79d913d6..37f9bb41 100644 --- a/runtime/autoload/xmlcomplete.vim +++ b/runtime/autoload/xmlcomplete.vim @@ -1,10 +1,12 @@ " Vim completion script " Language: XML " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Last Change: 2006 Jul 18 -" Version: 1.8 +" Last Change: 2006 Aug 15 +" Version: 1.9 " " Changelog: +" 1.9 - 2007 Aug 15 +" - fix closing of namespaced tags (Johannes Weiss) " 1.8 - 2006 Jul 18 " - allow for closing of xml tags even when data file isn't available @@ -413,12 +415,12 @@ function! xmlcomplete#GetLastOpenTag(unaryTagsStack) if exists("b:xml_namespace") if b:xml_namespace == 'DEFAULT' - let tagpat='' + let tagpat='' else let tagpat='' endif else - let tagpat='' + let tagpat='' endif while (linenum>0) let line=getline(linenum) diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim index 5875be0d..5bb41d63 100644 --- a/runtime/autoload/zip.vim +++ b/runtime/autoload/zip.vim @@ -1,16 +1,16 @@ " zip.vim: Handles browsing zipfiles " AUTOLOAD PORTION -" Date: May 08, 2007 -" Version: 14 +" Date: Jan 07, 2008 +" Version: 16 " Maintainer: Charles E Campbell, Jr " License: Vim License (see vim's :help license) -" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 +" Copyright: Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, -" zipPlugin.vim is provided *as is* and comes with no warranty -" of any kind, either expressed or implied. By using this -" plugin, you agree that in no event will the copyright +" zip.vim and zipPlugin.vim are provided *as is* and comes with +" no warranty of any kind, either expressed or implied. By using +" this plugin, you agree that in no event will the copyright " holder be liable for any damages resulting from the use " of this software. @@ -22,7 +22,7 @@ if &cp || exists("g:loaded_zip") || v:version < 700 finish endif -let g:loaded_zip = "v14" +let g:loaded_zip = "v16" let s:zipfile_escape = ' ?&;\' let s:ERROR = 2 let s:WARNING = 1 @@ -31,7 +31,9 @@ let s:NOTE = 0 " --------------------------------------------------------------------- " Global Values: {{{1 if !exists("g:zip_shq") - if has("unix") + if &shq != "" + let g:zip_shq= &shq + elseif has("unix") let g:zip_shq= "'" else let g:zip_shq= '"' @@ -160,7 +162,9 @@ fun! s:ZipBrowseSelect() " call Decho("curfile<".curfile.">") new - wincmd _ + if !exists("g:zip_nomax") || g:zip_nomax == 0 + wincmd _ + endif let s:zipfile_{winnr()}= curfile " call Decho("exe e zipfile:".escape(zipfile,s:zipfile_escape).'::'.escape(fname,s:zipfile_escape)) exe "e zipfile:".escape(zipfile,s:zipfile_escape).'::'.escape(fname,s:zipfile_escape) diff --git a/runtime/colors/slate.vim b/runtime/colors/slate.vim index 12d91bab..f9a70b87 100644 --- a/runtime/colors/slate.vim +++ b/runtime/colors/slate.vim @@ -9,6 +9,7 @@ if version > 580 syntax reset endif endif +let colors_name = "slate" :hi Normal guifg=White guibg=grey15 :hi Cursor guibg=khaki guifg=slategrey :hi VertSplit guibg=#c2bfa5 guifg=grey40 gui=none cterm=reverse diff --git a/runtime/compiler/decada.vim b/runtime/compiler/decada.vim index d30c0ea5..6ba6c2a3 100644 --- a/runtime/compiler/decada.vim +++ b/runtime/compiler/decada.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/Dec Ada compiler file " Language: Ada (Dec Ada) -" $Id: decada.vim,v 1.4 2007/05/12 15:01:42 vimboss Exp $ +" $Id: decada.vim,v 1.1 2007/05/05 18:09:54 vimboss Exp $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " $Author: vimboss $ -" $Date: 2007/05/12 15:01:42 $ +" $Date: 2007/05/05 18:09:54 $ " Version: 4.2 -" $Revision: 1.4 $ +" $Revision: 1.1 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/decada.vim $ " History: 21.07.2006 MK New Dec Ada " 15.10.2006 MK Bram's suggestion for runtime integration diff --git a/runtime/compiler/eruby.vim b/runtime/compiler/eruby.vim index 2ae7458a..9f901435 100644 --- a/runtime/compiler/eruby.vim +++ b/runtime/compiler/eruby.vim @@ -38,4 +38,4 @@ CompilerSet errorformat= let &cpo = s:cpo_save unlet s:cpo_save -" vim: nowrap sw=2 sts=2 ts=8 ff=unix: +" vim: nowrap sw=2 sts=2: diff --git a/runtime/compiler/gcc.vim b/runtime/compiler/gcc.vim index d6667080..a62415f6 100644 --- a/runtime/compiler/gcc.vim +++ b/runtime/compiler/gcc.vim @@ -11,7 +11,7 @@ let current_compiler = "gcc" let s:cpo_save = &cpo set cpo-=C -setlocal errorformat= +CompilerSet errorformat= \%*[^\"]\"%f\"%*\\D%l:\ %m, \\"%f\"%*\\D%l:\ %m, \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once, @@ -25,7 +25,7 @@ setlocal errorformat= \%DMaking\ %*\\a\ in\ %f if exists('g:compiler_gcc_ignore_unmatched_lines') - let &errorformat .= ',%-G%.%#' + CompilerSet errorformat+=%-G%.%# endif let &cpo = s:cpo_save diff --git a/runtime/compiler/gnat.vim b/runtime/compiler/gnat.vim index ab2cf8f7..9ce7f9ec 100644 --- a/runtime/compiler/gnat.vim +++ b/runtime/compiler/gnat.vim @@ -1,13 +1,13 @@ "------------------------------------------------------------------------------ " Description: Vim Ada/GNAT compiler file " Language: Ada (GNAT) -" $Id: gnat.vim,v 1.4 2007/05/12 14:48:28 vimboss Exp $ +" $Id: gnat.vim,v 1.1 2007/05/05 18:04:19 vimboss Exp $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " $Author: vimboss $ -" $Date: 2007/05/12 14:48:28 $ +" $Date: 2007/05/05 18:04:19 $ " Version: 4.2 -" $Revision: 1.4 $ +" $Revision: 1.1 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/compiler/gnat.vim $ " History: 24.05.2006 MK Unified Headers " 16.07.2006 MK Ada-Mode as vim-ball diff --git a/runtime/compiler/perl.vim b/runtime/compiler/perl.vim index 1d30472b..2b7c94a8 100644 --- a/runtime/compiler/perl.vim +++ b/runtime/compiler/perl.vim @@ -1,7 +1,7 @@ " Vim Compiler File " Compiler: Perl syntax checks (perl -Wc) " Maintainer: Christian J. Robinson -" Last Change: 2004 Mar 27 +" Last Change: 2006 Aug 13 if exists("current_compiler") finish @@ -15,12 +15,20 @@ endif let s:savecpo = &cpo set cpo&vim +if exists('g:perl_compiler_force_warnings') && g:perl_compiler_force_warnings == 0 + let s:warnopt = 'w' +else + let s:warnopt = 'W' +endif + if getline(1) =~# '-[^ ]*T' - CompilerSet makeprg=perl\ -WTc\ % + let s:taintopt = 'T' else - CompilerSet makeprg=perl\ -Wc\ % + let s:taintopt = '' endif +exe 'CompilerSet makeprg=perl\ -' . s:warnopt . s:taintopt . 'c\ %' + CompilerSet errorformat= \%-G%.%#had\ compilation\ errors., \%-G%.%#syntax\ OK, diff --git a/runtime/compiler/ruby.vim b/runtime/compiler/ruby.vim index 60f93156..30b5c188 100644 --- a/runtime/compiler/ruby.vim +++ b/runtime/compiler/ruby.vim @@ -65,4 +65,4 @@ CompilerSet errorformat= let &cpo = s:cpo_save unlet s:cpo_save -" vim: nowrap sw=2 sts=2 ts=8 ff=unix: +" vim: nowrap sw=2 sts=2 ts=8: diff --git a/runtime/compiler/rubyunit.vim b/runtime/compiler/rubyunit.vim index 27cd1934..d0e30014 100644 --- a/runtime/compiler/rubyunit.vim +++ b/runtime/compiler/rubyunit.vim @@ -32,4 +32,4 @@ CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:, let &cpo = s:cpo_save unlet s:cpo_save -" vim: nowrap sw=2 sts=2 ts=8 ff=unix: +" vim: nowrap sw=2 sts=2 ts=8: diff --git a/runtime/doc.info b/runtime/doc.info deleted file mode 100755 index a836031ee043e8f7a60249a7578cd1e7ad978b55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 624 zcwUWG9%Bzn3oUHyv#VcRokGNcz5Di`e|P8K2T*YJjQ|5YqfC2+=Cpz4B0#>zv{Zq)(TeE%MXQ9? zXXcw>sI~~Lb(;cSGfGQnP(Xxnq_1R37;FYC1QKmgeJ)uxY z3wf}S5H55O`f-$MyJ9jxhso|n@1DFb". + buffer being deleted "" and "". *BufEnter* BufEnter After entering a buffer. Useful for setting options for a file type. Also executed when @@ -677,7 +677,7 @@ QuickFixCmdPre Before a quickfix command is run (|:make|, *QuickFixCmdPost* QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix command is run, before jumping to the first - location. + location. See |QuickFixCmdPost-example|. *RemoteReply* RemoteReply When a reply from a Vim that functions as server was received |server2client()|. The @@ -848,7 +848,7 @@ This autocommand will for example be executed for "/tmp/doc/xx.txt" and The file name that the pattern is matched against is after expanding -wildcards. Thus is you issue this command: > +wildcards. Thus if you issue this command: > :e $ROOTDIR/main.$EXT The argument is first expanded to: > /usr/root/main.py @@ -927,7 +927,7 @@ simply use the special string instead of the pattern. Examples: > " current buffer :au! * " remove buffer-local autocommands for " buffer #33 - :dobuf :au! CursorHold " remove autocmd for given event for all + :bufdo :au! CursorHold " remove autocmd for given event for all " buffers :au * " list buffer-local autocommands for " current buffer @@ -1031,8 +1031,9 @@ option will not cause any commands to be executed. undefined group name, Vim gives you an error message. After applying the autocommands the modelines are - processed, so that their overrule the settings from - autocommands, like what happens when editing a file. + processed, so that their settings overrule the + settings from autocommands, like what happens when + editing a file. *:doautoa* *:doautoall* :doautoa[ll] [group] {event} [fname] diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index c1eed2c0..bf2b1045 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.1. Last change: 2007 Jan 07 +*change.txt* For Vim version 7.1. Last change: 2008 Jan 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -345,6 +345,10 @@ g?{motion} Rot13 encode {motion} text. {not in Vi} g?g? *g?g?* *g??* g?? Rot13 encode current line. {not in Vi}. +To turn one line into title caps, make every first letter of a word +uppercase: > + :s/\v<(.)(\w*)/\u\1\L\2/g + Adding and subtracting ~ *CTRL-A* @@ -474,7 +478,7 @@ For example: > A filter is a program that accepts text at standard input, changes it in some way, and sends it to standard output. You can use the commands below to send -some text through a filter, so that it is replace by the filter output. +some text through a filter, so that it is replaced by the filter output. Examples of filters are "sort", which sorts lines alphabetically, and "indent", which formats C program files (you need a version of indent that works like a filter; not all versions do). The 'shell' option specifies the @@ -661,9 +665,9 @@ The flags that you can use for the substitute commands: {not in Vi} Note that there is no flag to change the "magicness" of the pattern. A -different command is used instead. The reason is that the flags can only be -found by skipping the pattern, and in order to skip the pattern the -"magicness" must be known. Catch 22! +different command is used instead, or you can use |/\v| and friends. The +reason is that the flags can only be found by skipping the pattern, and in +order to skip the pattern the "magicness" must be known. Catch 22! If the {pattern} for the substitute command is empty, the command uses the pattern from the last substitute or ":global" command. With the [r] flag, the @@ -686,7 +690,9 @@ can use any other single-byte character, but not an alphanumeric character, pattern or replacement string. Example: > :s+/+//+ -For the definition of a pattern, see |pattern|. +For the definition of a pattern, see |pattern|. In Visual block mode, use +|/\%V| in the pattern to have the substitute work in the block only. +Otherwise it works on whole lines anyway. *sub-replace-special* *:s\=* When the {string} starts with "\=" it is evaluated as an expression, see @@ -1555,9 +1561,10 @@ found here: |sort()|. :sort /.*\%10v/ < To sort on the first number in the line, no matter what is in front of it: > - :sort /.*\ze\d/ - -< With [r] sorting is done on the matching {pattern} + :sort /.\{-}\ze\d/ +< (Explanation: ".\{-}" matches any text, "\ze" sets the + end of the match and \d matches a digit.) + With [r] sorting is done on the matching {pattern} instead of skipping past it as described above. For example, to sort on only the first three letters of each line: > diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index fd18e672..1d967fa0 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 7.1. Last change: 2008 Jan 04 +*cmdline.txt* For Vim version 7.1. Last change: 2008 Mar 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -226,6 +226,8 @@ CTRL-J *c_CTRL-J* *c_* *c_* When typed and 'x' not present in 'cpoptions', quit Command-line mode without executing. In macros or when 'x' present in 'cpoptions', start entered command. + Note: If your key is hard to hit on your keyboard, train + yourself to use CTRL-[. *c_CTRL-C* CTRL-C quit command-line without executing @@ -482,7 +484,7 @@ argument. line. If you want to use '|' in an argument, precede it with '\'. These commands see the '|' as their argument, and can therefore not be -followed by another command: +followed by another Vim command: :argdo :autocmd :bufdo diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt index 904142ac..2b65e1be 100644 --- a/runtime/doc/digraph.txt +++ b/runtime/doc/digraph.txt @@ -1,4 +1,4 @@ -*digraph.txt* For Vim version 7.1. Last change: 2006 Jul 18 +*digraph.txt* For Vim version 7.1. Last change: 2007 Sep 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -130,10 +130,10 @@ a standard meaning: Exclamation mark ! Grave Apostrophe ' Acute accent Greater-Than sign > Circumflex accent - Question Mark ? tilde + Question mark ? Tilde Hyphen-Minus - Macron Left parenthesis ( Breve - Full Stop . Dot Above + Full stop . Dot above Colon : Diaeresis Comma , Cedilla Underline _ Underline diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 0df39dc4..19fc46e6 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 7.1. Last change: 2007 May 11 +*editing.txt* For Vim version 7.1. Last change: 2008 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -888,8 +888,10 @@ Note: When the 'write' option is off, you are not able to write any file. the previous command |:!|. The default [range] for the ":w" command is the whole buffer (1,$). If you -write the whole buffer, it is no longer considered changed. Also when you -write it to a different file with ":w somefile"! +write the whole buffer, it is no longer considered changed. When you +write it to a different file with ":w somefile" it depends on the "+" flag in +'cpoptions'. When included, the write command will reset the 'modified' flag, +even though the buffer itself may still be different from its file. If a file name is given with ":w" it becomes the alternate file. This can be used, for example, when the write fails and you want to try again later with @@ -1105,6 +1107,8 @@ MULTIPLE WINDOWS AND BUFFERS *window-exit* changed. See |:confirm|. {not in Vi} :qa[ll]! Exit Vim. Any changes to buffers are lost. {not in Vi} + Also see |:cquit|, it does the same but exits with a non-zero + value. *:quita* *:quitall* :quita[ll][!] Same as ":qall". {not in Vi} @@ -1478,7 +1482,9 @@ There are three different types of searching: supported by your operating system. '*' and '**' are handled inside Vim, so they work on all operating systems. - The usage of '*' is quite simple: It matches 0 or more characters. + The usage of '*' is quite simple: It matches 0 or more characters. In a + search pattern this would be ".*". Note that the "." is not used for file + searching. '**' is more sophisticated: - It ONLY matches directories. @@ -1498,7 +1504,7 @@ There are three different types of searching: levels. The allowed number range is 0 ('**0' is removed) to 255. If the given number is smaller than 0 it defaults to 30, if it's - bigger than 255 it defaults to 255. + bigger than 255 then 255 is used. - '**' can only be at the end of the path or be followed by a path separator or by a number and a path separator. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 13caa16c..46504607 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.1. Last change: 2008 Feb 20 +*eval.txt* For Vim version 7.1. Last change: 2008 Mar 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -258,13 +258,13 @@ variables. Example: > < 0 Thus comparing Lists is more strict than comparing numbers and strings. You -can compare simple values this way too by putting them in a string: > +can compare simple values this way too by putting them in a list: > :let a = 5 :let b = "5" - echo a == b + :echo a == b < 1 > - echo [a] == [b] + :echo [a] == [b] < 0 @@ -1891,12 +1891,15 @@ bufexists({expr}) *bufexists()* exactly. The name can be: - Relative to the current directory. - A full path. - - The name of a buffer with 'filetype' set to "nofile". + - The name of a buffer with 'buftype' set to "nofile". - A URL name. Unlisted buffers will be found. Note that help files are listed by their short name in the output of |:buffers|, but bufexists() requires using their long name to be able to find them. + bufexists() may report a buffer exists, but to use the name + with a |:buffer| command you may need to use |expand()|. Esp + for MS-Windows 8.3 names in the form "c:\DOCUME~1" Use "bufexists(0)" to test for the existence of an alternate file name. *buffer_exists()* @@ -2024,7 +2027,7 @@ char2nr({expr}) *char2nr()* < The current 'encoding' is used. Example for "utf-8": > char2nr("á") returns 225 char2nr("á"[0]) returns 195 -< nr2char() does the opposite. +< |nr2char()| does the opposite. cindent({lnum}) *cindent()* Get the amount of indent for line {lnum} according the C @@ -2172,7 +2175,7 @@ copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't different from using {expr} directly. When {expr} is a |List| a shallow copy is created. This means that the original |List| can be changed without changing the - copy, and vise versa. But the items are identical, thus + copy, and vice versa. But the items are identical, thus changing an item changes the contents of both |Lists|. Also see |deepcopy()|. @@ -2250,7 +2253,7 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698* different from using {expr} directly. When {expr} is a |List| a full copy is created. This means that the original |List| can be changed without changing the - copy, and vise versa. When an item is a |List|, a copy for it + copy, and vice versa. When an item is a |List|, a copy for it is made, recursively. Thus changing an item in the copy does not change the contents of the original |List|. When {noref} is omitted or zero a contained |List| or @@ -2567,7 +2570,7 @@ filereadable({file}) *filereadable()* filewritable({file}) *filewritable()* The result is a Number, which is 1 when a file with the name {file} exists, and can be written. If {file} doesn't - exist, or is not writable, the result is 0. If (file) is a + exist, or is not writable, the result is 0. If {file} is a directory, and we can write to it, the result is 2. @@ -2628,7 +2631,7 @@ fnamemodify({fname}, {mods}) *fnamemodify()* :echo fnamemodify("main.c", ":p:h") < results in: > /home/mool/vim/vim/src -< Note: Environment variables and "~" don't work in {fname}, use +< Note: Environment variables don't work in {fname}, use |expand()| first then. foldclosed({lnum}) *foldclosed()* @@ -3512,7 +3515,7 @@ line({expr}) The result is a Number, which is the line number of the file < *last-position-jump* This autocommand jumps to the last known position in a file just after opening it, if the '" mark is set: > - :au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"" | endif + :au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif line2byte({lnum}) *line2byte()* Return the byte count from the start of the buffer for line @@ -3727,7 +3730,7 @@ matcharg({nr}) *matcharg()* matchdelete({id}) *matchdelete()* *E802* *E803* Deletes a match with ID {id} previously defined by |matchadd()| - or one of the |:match| commands. Returns 0 if succesfull, + or one of the |:match| commands. Returns 0 if successful, otherwise -1. See example for |matchadd()|. All matches can be deleted in one operation by |clearmatches()|. @@ -3761,7 +3764,7 @@ matchlist({expr}, {pat}[, {start}[, {count}]]) *matchlist()* When there is no match an empty list is returned. matchstr({expr}, {pat}[, {start}[, {count}]]) *matchstr()* - Same as match(), but return the matched string. Example: > + Same as |match()|, but return the matched string. Example: > :echo matchstr("testing", "ing") < results in "ing". When there is no match "" is returned. @@ -3836,7 +3839,8 @@ nr2char({expr}) *nr2char()* *getpid()* getpid() Return a Number which is the process ID of the Vim process. - On Unix this is a unique number. On MS-DOS it's always zero. + On Unix and MS-Windows this is a unique number, until Vim + exits. On MS-DOS it's always zero. *getpos()* getpos({expr}) Get the position for {expr}. For possible values of {expr} @@ -4340,9 +4344,11 @@ searchpair({start}, {middle}, {end} [, {flags} [, {skip} {flags} 'b', 'c', 'n', 's', 'w' and 'W' are used like with |search()|. Additionally: 'r' Repeat until no more matches found; will find the - outer pair - 'm' return number of Matches instead of line number with + outer pair. Implies the 'W' flag. + 'm' Return number of matches instead of line number with the match; will be > 1 when 'r' is used. + Note: it's nearly always a good idea to use the 'W' flag, to + avoid wrapping around the end of the file. When a match for {start}, {middle} or {end} is found, the {skip} expression is evaluated with the cursor positioned on @@ -4474,15 +4480,15 @@ setcmdpos({pos}) *setcmdpos()* Returns 0 when successful, 1 when not editing the command line. -setline({lnum}, {line}) *setline()* - Set line {lnum} of the current buffer to {line}. +setline({lnum}, {text}) *setline()* + Set line {lnum} of the current buffer to {text}. {lnum} is used like with |getline()|. - When {lnum} is just below the last line the {line} will be + When {lnum} is just below the last line the {text} will be added as a new line. If this succeeds, 0 is returned. If this fails (most likely because {lnum} is invalid) 1 is returned. Example: > :call setline(5, strftime("%c")) -< When {line} is a |List| then line {lnum} and following lines +< When {text} is a |List| then line {lnum} and following lines will be set to the items in the list. Example: > :call setline(5, ['aaa', 'bbb', 'ccc']) < This is equivalent to: > @@ -4501,7 +4507,7 @@ setloclist({nr}, {list} [, {action}]) *setloclist()* setmatches({list}) *setmatches()* Restores a list of matches saved by |getmatches()|. Returns 0 - if succesfull, otherwise -1. All current matches are cleared + if successful, otherwise -1. All current matches are cleared before the list is restored. See example for |getmatches()|. *setpos()* @@ -5200,6 +5206,8 @@ visualmode([expr]) *visualmode()* < This enters the same Visual mode as before. It is also useful in scripts if you wish to act differently depending on the Visual mode that was used. + If Visual mode is active, use |mode()| to get the Visual mode + (e.g., in a |:vmap|). If an expression is supplied that results in a non-zero number or a non-empty string, then the Visual mode will be cleared @@ -5386,6 +5394,7 @@ gui Compiled with GUI enabled. gui_athena Compiled with Athena GUI. gui_gtk Compiled with GTK+ GUI (any version). gui_gtk2 Compiled with GTK+ 2 GUI (gui_gtk is also defined). +gui_gnome Compiled with Gnome support (gui_gtk is also defined). gui_mac Compiled with Macintosh GUI. gui_motif Compiled with Motif GUI. gui_photon Compiled with Photon GUI. @@ -5600,7 +5609,9 @@ See |:verbose-cmd| for more information. dictionary. See |Dictionary-function|. The last used search pattern and the redo command "." - will not be changed by the function. + will not be changed by the function. This also + implies that the effect of |:nohlsearch| is undone + when the function returns. *:endf* *:endfunction* *E126* *E193* :endf[unction] The end of a function definition. Must be on a line @@ -5809,7 +5820,7 @@ function, the script will be sourced every time you try to call the function. And you will get an error message every time. Also note that if you have two script files, and one calls a function in the -other and vise versa, before the used function is defined, it won't work. +other and vice versa, before the used function is defined, it won't work. Avoid using the autoload functionality at the toplevel. Hint: If you distribute a bunch of scripts you can pack them together with the @@ -5870,8 +5881,11 @@ This would call the function "my_func_whizz(parameter)". {expr1}. {var-name} must refer to a list and {idx} must be a valid index in that list. For nested list the index can be repeated. - This cannot be used to add an item to a list. - + This cannot be used to add an item to a |List|. + This cannot be used to set a byte in a String. You + can do that like this: > + :let var = var[0:2] . 'X' . var[4:] +< *E711* *E719* :let {var-name}[{idx1}:{idx2}] = {expr1} *E708* *E709* *E710* Set a sequence of items in a |List| to the result of diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 21019b27..790f89d5 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.1. Last change: 2007 May 10 +*filetype.txt* For Vim version 7.1. Last change: 2007 Dec 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -502,6 +502,13 @@ For further discussion of fortran_have_tabs and the method used for the detection of source format see |ft-fortran-syntax|. +GIT COMMIT *ft-gitcommit-plugin* + +One command, :GitDiffCached, is provided to show a diff of the current commit +in the preview window. It is equivalent to calling "git diff --cached" plus +any arguments given to the command. + + MAIL *ft-mail-plugin* Options: @@ -546,6 +553,20 @@ CTRL-] Jump to the manual page for the word under the cursor. CTRL-T Jump back to the previous manual page. +PDF *ft-pdf-plugin* + +Two maps, and , are provided to simulate a tag stack for navigating +the PDF. The following are treated as tags: + +- The byte offset after "startxref" to the xref table +- The byte offset after the /Prev key in the trailer to an earlier xref table +- A line of the form "0123456789 00000 n" in the xref table +- An object reference like "1 0 R" anywhere in the PDF + +These maps can be disabled with > + :let g:no_pdf_maps = 1 +< + RPM SPEC *ft-spec-plugin* Since the text for this plugin is rather long it has been put in a separate diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt index 17ed69a6..6c5362ba 100644 --- a/runtime/doc/gui_w32.txt +++ b/runtime/doc/gui_w32.txt @@ -1,4 +1,4 @@ -*gui_w32.txt* For Vim version 7.1. Last change: 2007 Aug 14 +*gui_w32.txt* For Vim version 7.1. Last change: 2007 Aug 30 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt index 9ff6177b..b7566e58 100644 --- a/runtime/doc/gui_x11.txt +++ b/runtime/doc/gui_x11.txt @@ -1,4 +1,4 @@ -*gui_x11.txt* For Vim version 7.1. Last change: 2006 Jul 12 +*gui_x11.txt* For Vim version 7.1. Last change: 2007 Dec 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -426,7 +426,7 @@ means in detail: - The session file is stored to a separate directory (usually $HOME/.gnome2). - 'sessionoptions' is ignored, and a hardcoded set of appropriate flags is used instead: > - blank,curdir,folds,globals,help,options,winsize + blank,curdir,folds,globals,help,options,tabpages,winsize - The internal variable |v:this_session| is not changed when storing the session. Also, it is restored to its old value when logging in again. diff --git a/runtime/doc/hebrew.txt b/runtime/doc/hebrew.txt index 966befef..a5288a9e 100644 --- a/runtime/doc/hebrew.txt +++ b/runtime/doc/hebrew.txt @@ -1,4 +1,4 @@ -*hebrew.txt* For Vim version 7.1. Last change: 2003 May 11 +*hebrew.txt* For Vim version 7.1. Last change: 2007 Jun 14 VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem) @@ -7,11 +7,8 @@ Hebrew Language support (options & mapping) for Vim *hebrew* The supporting 'rightleft' functionality was originally created by Avner -Lottem: - E-mail: alottem@iil.intel.com - Phone: +972-4-8307322 - -Ron Aaron is currently helping support these features. +Lottem. Ron Aaron is +currently helping support these features. {Vi does not have any of these commands} diff --git a/runtime/doc/help.txt.info b/runtime/doc/help.txt.info deleted file mode 100755 index 0f8df8182eb6d7fe259ee491b7948f01f924ebc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 582 zcwTjoze_?<6vxkdN(Du)tsw%D25D){3i2P2415JG4H85RK_MC3dKdZ&99qL@D4&sz z)zVucXt6~cdleD9hQx;;rJl~c*CoUYhcBP|<8VLceGD`ZYZwfOQ4K(VcEWohnEHjD zr3JSjJW=YBK^5$|6N6FELEEndBpwyKymtv;Ayyj+%60ti*c_}PR?&<}Mmwjtl2A+! zBsY?Ze{98VQ!zD=ObsL>x{8q>u2z<@3BYt76&dlJ=ofNezB5}y2iSQz`)Rqv<=Zze zNBIzarHg`HY^k(5D(6w2yW_|se)%S6pu^6VvhEC3g<_2 z+b&TaV?#P?l{N1QSRJq}oa>NYxhnv3VG-#M5eFvCYujNQ44SUXgj`Z8j?ATI;_1|8 Jd}nt9{s7Ez3LyXh diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt index d7559573..0791b9ff 100644 --- a/runtime/doc/indent.txt +++ b/runtime/doc/indent.txt @@ -1,4 +1,4 @@ -*indent.txt* For Vim version 7.1. Last change: 2007 May 11 +*indent.txt* For Vim version 7.1. Last change: 2007 Aug 17 VIM REFERENCE MANUAL by Bram Moolenaar @@ -572,6 +572,115 @@ In addition, you can turn the verbose mode for debug issue: > Make sure to do ":set cmdheight=2" first to allow the display of the message. +VHDL *ft-vhdl-indent* + +Alignment of generic/port mapping statements are performed by default. This +causes the following alignment example: > + + ENTITY sync IS + PORT ( + clk : IN STD_LOGIC; + reset_n : IN STD_LOGIC; + data_input : IN STD_LOGIC; + data_out : OUT STD_LOGIC + ); + END ENTITY sync; + +To turn this off, add > + + let g:vhdl_indent_genportmap = 0 + +to the .vimrc file, which causes the previous alignment example to change: > + + ENTITY sync IS + PORT ( + clk : IN STD_LOGIC; + reset_n : IN STD_LOGIC; + data_input : IN STD_LOGIC; + data_out : OUT STD_LOGIC + ); + END ENTITY sync; + +---------------------------------------- + +Alignment of right-hand side assignment "<=" statements are performed by +default. This causes the following alignment example: > + + sig_out <= (bus_a(1) AND + (sig_b OR sig_c)) OR + (bus_a(0) AND sig_d); + +To turn this off, add > + + let g:vhdl_indent_rhsassign = 0 + +to the .vimrc file, which causes the previous alignment example to change: > + + sig_out <= (bus_a(1) AND + (sig_b OR sig_c)) OR + (bus_a(0) AND sig_d); + +---------------------------------------- + +Full-line comments (lines that begin with "--") are indented to be aligned with +the very previous line's comment, PROVIDED that a whitespace follows after +"--". + +For example: > + + sig_a <= sig_b; -- start of a comment + -- continuation of the comment + -- more of the same comment + +While in Insert mode, after typing "-- " (note the space " "), hitting CTRL-F +will align the current "-- " with the previous line's "--". + +If the very previous line does not contain "--", THEN the full-line comment +will be aligned with the start of the next non-blank line that is NOT a +full-line comment. + +Indenting the following code: > + + sig_c <= sig_d; -- comment 0 + -- comment 1 + -- comment 2 + --debug_code: + --PROCESS(debug_in) + --BEGIN + -- FOR i IN 15 DOWNTO 0 LOOP + -- debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i); + -- END LOOP; + --END PROCESS debug_code; + + -- comment 3 + sig_e <= sig_f; -- comment 4 + -- comment 5 + +results in: > + + sig_c <= sig_d; -- comment 0 + -- comment 1 + -- comment 2 + --debug_code: + --PROCESS(debug_in) + --BEGIN + -- FOR i IN 15 DOWNTO 0 LOOP + -- debug_out(8*i+7 DOWNTO 8*i) <= debug_in(15-i); + -- END LOOP; + --END PROCESS debug_code; + + -- comment 3 + sig_e <= sig_f; -- comment 4 + -- comment 5 + +Notice that "--debug_code:" does not align with "-- comment 2" +because there is no whitespace that follows after "--" in "--debug_code:". + +Given the dynamic nature of indenting comments, indenting should be done TWICE. +On the first pass, code will be indented. On the second pass, full-line +comments will be indented according to the correctly indented code. + + VIM *ft-vim-indent* For indenting Vim scripts there is one variable that specifies the amount of diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index f587cc90..a730b5bc 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 7.1. Last change: 2007 May 05 +*index.txt* For Vim version 7.1. Last change: 2007 Dec 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -467,6 +467,7 @@ tag command action in Normal mode ~ |v_ab| ab "a block" from "[(" to "])" (with braces) |v_ap| ap "a paragraph" (with white space) |v_as| as "a sentence" (with white space) +|v_at| at "a tag block" (with white space) |v_aw| aw "a word" (with white space) |v_a{| a{ same as aB |v_a}| a} same as aB @@ -484,6 +485,7 @@ tag command action in Normal mode ~ |v_ib| ib "inner block" from "[(" to "])" |v_ip| ip "inner paragraph" |v_is| is "inner sentence" +|v_it| it "inner tag block" |v_iw| iw "inner word" |v_i{| i{ same as iB |v_i}| i} same as iB @@ -874,6 +876,10 @@ tag command note action in Visual mode ~ mode |v_X| X 2 delete the highlighted lines |v_Y| Y yank the highlighted lines +|v_aquote| a" extend highlighted area with a double + quoted string +|v_a'| a' extend highlighted area with a single + quoted string |v_a(| a( same as ab |v_a)| a) same as ab |v_a<| a< extend highlighted area with a <> block @@ -882,9 +888,12 @@ tag command note action in Visual mode ~ |v_aW| aW extend highlighted area with "a WORD" |v_a[| a[ extend highlighted area with a [] block |v_a]| a] same as a[ +|v_a`| a` extend highlighted area with a backtick + quoted string |v_ab| ab extend highlighted area with a () block |v_ap| ap extend highlighted area with a paragraph |v_as| as extend highlighted area with a sentence +|v_at| at extend highlighted area with a tag block |v_aw| aw extend highlighted area with "a word" |v_a{| a{ same as aB |v_a}| a} same as aB @@ -895,6 +904,10 @@ tag command note action in Visual mode ~ |v_gq| gq 2 format the highlighted lines |v_gv| gv exchange current and previous highlighted area +|v_iquote| i" extend highlighted area with a double + quoted string (without quotes) +|v_i'| i' extend highlighted area with a single + quoted string (without quotes) |v_i(| i( same as ib |v_i)| i) same as ib |v_i<| i< extend highlighted area with inner <> block @@ -903,9 +916,12 @@ tag command note action in Visual mode ~ |v_iW| iW extend highlighted area with "inner WORD" |v_i[| i[ extend highlighted area with inner [] block |v_i]| i] same as i[ +|v_i`| i` extend highlighted area with a backtick + quoted string (without the backticks) |v_ib| ib extend highlighted area with inner () block |v_ip| ip extend highlighted area with inner paragraph |v_is| is extend highlighted area with inner sentence +|v_it| it extend highlighted area with inner tag block |v_iw| iw extend highlighted area with "inner word" |v_i{| i{ same as iB |v_i}| i} same as iB diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt index b00e4514..6654db3e 100644 --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.1. Last change: 2007 May 07 +*intro.txt* For Vim version 7.1. Last change: 2008 Jan 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -120,27 +120,12 @@ NOTE: *subscribe-maillist* If you want to join, send a message to - + Make sure that your "From:" address is correct. Then the list server will give you help on how to subscribe. -You can retrieve old messages from the maillist software, and an index of -messages. Ask vim-help for instructions. - -Archives are kept at: *maillist-archive* -http://groups.yahoo.com/group/vim -http://groups.yahoo.com/group/vimdev -http://groups.yahoo.com/group/vimannounce -http://groups.yahoo.com/group/vim-multibyte -http://groups.yahoo.com/group/vim-mac - - -Additional maillists: - - *french-maillist* - Vim list in the French language. Subscribe by sending a message to - - Or go to http://groups.yahoo.com/group/vim-fr. +For more information and archives look on the Vim maillist page: +http://www.vim.org/maillist.php Bug reports: *bugs* *bug-reports* *bugreport.vim* @@ -220,6 +205,7 @@ Vim would never have become what it is now, without the help of these people! Eric Fischer Mac port, 'cindent', and other improvements Benji Fisher Answering lots of user questions Bill Foster Athena GUI port + Google Lets me work on Vim one day a week Loic Grenie xvim (ideas for multi windows version) Sven Guckes Vim promotor and previous WWW page maintainer Darren Hiebert Exuberant ctags @@ -231,7 +217,7 @@ Vim would never have become what it is now, without the help of these people! Steve Kirkendall Elvis Roger Knobbe original port to Windows NT Sergey Laskavy Vim's help from Moscow - Felix von Leitner Maintainer of Vim Mailing Lists + Felix von Leitner Previous maintainer of Vim Mailing Lists David Leonard Port of Python extensions to Unix Avner Lottem Edit in right-to-left windows Flemming Madsen X11 client-server, various features and patches @@ -241,6 +227,8 @@ Vim would never have become what it is now, without the help of these people! Sung-Hyun Nam Work on multi-byte versions Vince Negri Win32 GUI and generic console enhancements Steve Oualline Author of the first Vim book |frombook| + Dominique Pelle figuring out valgrind reports and fixes + A.Politz Many bug reports and some fixes George V. Reilly Win32 port, Win32 GUI start-off Stephen Riehm bug collector Stefan Roemer various patches and help to users diff --git a/runtime/doc/makehtml.awk b/runtime/doc/makehtml.awk old mode 100644 new mode 100755 diff --git a/runtime/doc/maketags.awk b/runtime/doc/maketags.awk old mode 100644 new mode 100755 diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index e099491a..69ae9a5a 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.1. Last change: 2007 May 11 +*map.txt* For Vim version 7.1. Last change: 2007 Nov 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -266,12 +266,13 @@ as a special key. 1.3 MAPPING AND MODES *:map-modes* + *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o* There are five sets of mappings - For Normal mode: When typing commands. - For Visual mode: When typing commands while the Visual area is highlighted. - For Operator-pending mode: When an operator is pending (after "d", "y", "c", - etc.). Example: ":omap { w" makes "y{" work like "yw" and "d{" like "dw". + etc.). See below: |omap-info|. - For Insert mode. These are also used in Replace mode. - For Command-line mode: When entering a ":" or "/" command. @@ -282,7 +283,6 @@ to type a count with a zero. *map-overview* *map-modes* Overview of which map command works in which mode: - *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o* commands: modes: ~ Normal Visual+Select Operator-pending ~ :map :noremap :unmap :mapclear yes yes yes @@ -318,6 +318,19 @@ Therefore the ":map" and ":map!" commands enter and display mappings for several modes. In Vim you can use the ":nmap", ":vmap", ":omap", ":cmap" and ":imap" commands to enter mappings for each mode separately. + *omap-info* +Operator-pending mappings can be used to define a movement command that can be +used with any operator. Simple example: ":omap { w" makes "y{" work like "yw" +and "d{" like "dw". + +To ignore the starting cursor position and select different text, you can have +the omap start Visual mode to select the text to be operated upon. Example +that operates on a function name in the current line: > + onoremap F :normal! 0f(hviw +The CTRL-U () is used to remove the range that Vim may insert. The +Normal mode commands find the first '(' character and select the first word +before it. That usually is the function name. + To enter a mapping for Normal and Visual mode, but not Operator-pending mode, first define it for all three modes, then unmap it for Operator-pending mode: :map xx something-difficult @@ -1203,7 +1216,7 @@ Custom completion *:command-completion-custom* *E467* *E468* It is possible to define customized completion schemes via the "custom,{func}" or the "customlist,{func}" completion argument. The {func} part should be a -function with the following prototype > +function with the following signature: > :function {func}(ArgLead, CmdLine, CursorPos) diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt index 121dec17..b85930ce 100644 --- a/runtime/doc/mbyte.txt +++ b/runtime/doc/mbyte.txt @@ -1,4 +1,4 @@ -*mbyte.txt* For Vim version 7.1. Last change: 2006 Aug 11 +*mbyte.txt* For Vim version 7.1. Last change: 2008 Feb 19 VIM REFERENCE MANUAL by Bram Moolenaar et al. @@ -351,6 +351,8 @@ u unicode same as ucs-2 u ucs2be same as ucs-2 (big endian) u ucs-2be same as ucs-2 (big endian) u ucs-4be same as ucs-4 (big endian) +u utf-32 same as ucs-4 +u utf-32le same as ucs-4le default stands for the default value of 'encoding', depends on the environment diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt index 885d1eea..bf3b679a 100644 --- a/runtime/doc/message.txt +++ b/runtime/doc/message.txt @@ -1,4 +1,4 @@ -*message.txt* For Vim version 7.1. Last change: 2007 Mar 20 +*message.txt* For Vim version 7.1. Last change: 2007 Aug 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -53,7 +53,7 @@ If you are lazy, it also works without the shift key: > :help e72 ============================================================================== -2. Error messages *error-messages* +2. Error messages *error-messages* *errors* When an error message is displayed, but it is removed before you could read it, you can see it again with: > diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index a7302e92..b8045c5a 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,4 +1,4 @@ -*motion.txt* For Vim version 7.1. Last change: 2006 Dec 07 +*motion.txt* For Vim version 7.1. Last change: 2008 Mar 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -366,9 +366,11 @@ W [count] WORDS forward. |exclusive| motion. *e* e Forward to the end of word [count] |inclusive|. + Does not stop in an empty line. *E* E Forward to the end of WORD [count] |inclusive|. + Does not stop in an empty line. or ** *b* b [count] words backward. |exclusive| motion. @@ -465,9 +467,9 @@ The definition of a sentence cannot be changed. *paragraph* A paragraph begins after each empty line, and also at each of a set of paragraph macros, specified by the pairs of characters in the 'paragraphs' -option. The default is "IPLPPPQPP LIpplpipbp", which corresponds to the -macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in the -first column). A section boundary is also a paragraph boundary. +option. The default is "IPLPPPQPP TPHPLIPpLpItpplpipbp", which corresponds to +the macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in +the first column). A section boundary is also a paragraph boundary. Note that a blank line (only containing white space) is NOT a paragraph boundary. Also note that this does not include a '{' or '}' in the first column. When @@ -1173,13 +1175,15 @@ remembered. cursor is on the # or no ([{ following) For other items the matchit plugin can be used, see - |matchit-install|. + |matchit-install|. This plugin also helps to skip + matches in comments. When 'cpoptions' contains "M" |cpo-M| backslashes before parens and braces are ignored. Without "M" the number of backslashes matters: an even number doesn't match with an odd number. Thus in "( \) )" and "\( ( \)" the first and last parenthesis match. + When the '%' character is not present in 'cpoptions' |cpo-%|, parens and braces inside double quotes are ignored, unless the number of parens/braces in a line @@ -1188,8 +1192,13 @@ remembered. are also ignored (parens and braces inside single quotes). Note that this works fine for C, but not for Perl, where single quotes are used for strings. - No count is allowed ({count}% jumps to a line {count} - percentage down the file |N%|). Using '%' on + + Nothing special is done for matches in comments. You + can either use the matchit plugin |matchit-install| or + put quotes around matches. + + No count is allowed, {count}% jumps to a line {count} + percentage down the file |N%|. Using '%' on #if/#else/#endif makes the movement linewise. *[(* diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 568228c6..28bc3c47 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -111,19 +111,31 @@ and the following arguments will be ignored. When 'verbose' is non-zero, displaying an option value will also tell where it was last set. Example: > :verbose set shiftwidth cindent? - shiftwidth=4 - Last set from modeline - cindent - Last set from /usr/local/share/vim/vim60/ftplugin/c.vim -This is only done when specific option values are requested, not for ":set -all" or ":set" without an argument. -When the option was set by hand there is no "Last set" message. There is only -one value for all local options with the same name. Thus the message applies -to the option name, not necessarily its value. +< shiftwidth=4 ~ + Last set from modeline ~ + cindent ~ + Last set from /usr/local/share/vim/vim60/ftplugin/c.vim ~ +This is only done when specific option values are requested, not for ":verbose +set all" or ":verbose set" without an argument. +When the option was set by hand there is no "Last set" message. When the option was set while executing a function, user command or autocommand, the script in which it was defined is reported. Note that an option may also have been set as a side effect of setting 'compatible'. +A few special texts: + Last set from modeline ~ + Option was set in a |modeline|. + Last set from --cmd argument ~ + Option was set with command line argument |--cmd| or +. + Last set from -c argument ~ + Option was set with command line argument |-c|, +, |-S| or + |-q|. + Last set from environment variable ~ + Option was set from an environment variable, $VIMINIT, + $GVIMINIT or $EXINIT. + Last set from error handler ~ + Option was cleared when evaluating it resulted in an error. + {not available when compiled without the +eval feature} *:set-termcap* *E522* @@ -265,7 +277,10 @@ You will not get back the 'list' value as it was the last time you edited Without argument: Display all local option's local values which are different from the default. When displaying a specific local option, show the - local value. For a global option the global value is + local value. For a global/local boolean option, when + the global value is being used, "--" is displayed + before the option name. + For a global option the global value is shown (but that might change in the future). {not in Vi} @@ -1148,9 +1163,11 @@ A jump table for the options with a short description can be found at |Q_op|. *'browsedir'* *'bsdir'* 'browsedir' 'bsdir' string (default: "last") global - {not in Vi} {only for Motif and Win32 GUI} + {not in Vi} {only for Motif, Athena, GTK, Mac and + Win32 GUI} Which directory to use for the file browser: - last Use same directory as with last file browser. + last Use same directory as with last file browser, where a + file was opened or saved. buffer Use the directory of the related buffer. current Use the current directory. {path} Use the specified directory @@ -1343,7 +1360,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} {not available when compiled without the |+cindent| feature} - Enables automatic C program indenting See 'cinkeys' to set the keys + Enables automatic C program indenting. See 'cinkeys' to set the keys that trigger reindenting in insert mode and 'cinoptions' to set your preferred indent style. If 'indentexpr' is not empty, it overrules 'cindent'. @@ -1711,7 +1728,8 @@ A jump table for the options with a short description can be found at |Q_op|. tabs followed by spaces as required (unless |'expandtab'| is enabled, in which case only spaces are used). Enabling this option makes the new line copy whatever characters were used for indenting on the - existing line. If the new indent is greater than on the existing + existing line. 'expandtab' has no effect on these characters, a Tab + remains a Tab. If the new indent is greater than on the existing line, the remaining space is filled in the normal manner. NOTE: 'copyindent' is reset when 'compatible' is set. Also see 'preserveindent'. @@ -3362,7 +3380,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'guitablabel' can be used to change the text in the labels. When 'e' is missing a non-GUI tab pages line may be used. The GUI tabs are only supported on some systems, currently - GTK, Motif and MS-Windows. + GTK, Motif, Mac OS/X and MS-Windows. *'go-f'* 'f' Foreground: Don't use fork() to detach the GUI from the shell where it was started. Use this for programs that wait for the @@ -3618,7 +3636,7 @@ A jump table for the options with a short description can be found at |Q_op|. When you get bored looking at the highlighted matches, you can turn it off with |:nohlsearch|. As soon as you use a search command, the highlighting comes back. - 'redrawtime' specifies the maximum time spend on finding matches. + 'redrawtime' specifies the maximum time spent on finding matches. When the search pattern can match an end-of-line, Vim will try to highlight all of the matched text. However, this depends on where the search starts. This will be the first line in the window or the first @@ -3917,12 +3935,13 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} When doing keyword completion in insert mode |ins-completion|, and - 'ignorecase' is also on, the case of the match is adjusted. If the - typed text contains a lowercase letter where the match has an upper - case letter, the completed part is made lowercase. If the typed text - has no lowercase letters and the match has a lowercase letter where - the typed text has an uppercase letter, and there is a letter before - it, the completed part is made uppercase. + 'ignorecase' is also on, the case of the match is adjusted depending + on the typed text. If the typed text contains a lowercase letter + where the match has an upper case letter, the completed part is made + lowercase. If the typed text has no lowercase letters and the match + has a lowercase letter where the typed text has an uppercase letter, + and there is a letter before it, the completed part is made uppercase. + With 'noinfercase' the match is used as-is. *'insertmode'* *'im'* *'noinsertmode'* *'noim'* 'insertmode' 'im' boolean (default off) @@ -3967,6 +3986,10 @@ A jump table for the options with a short description can be found at |Q_op|. Multi-byte characters 256 and above are always included, only the characters up to 255 are specified with this option. For UTF-8 the characters 0xa0 to 0xff are included as well. + Think twice before adding white space to this option. Although a + space may appear inside a file name, the effect will be that Vim + doesn't know where a file name starts or ends when doing completion. + It most likely works better without a space in 'isfname'. Note that on systems using a backslash as path separator, Vim tries to do its best to make it work as you would expect. That is a bit @@ -3993,7 +4016,7 @@ A jump table for the options with a short description can be found at |Q_op|. are included. Normally these are the characters a to z and A to Z, plus accented characters. To include '@' itself use "@-@". Examples: "@,^a-z" All alphabetic characters, excluding lower - case letters. + case ASCII letters. "a-z,A-Z,@-@" All letters plus the '@' character. A comma can be included by using it where a character number is expected. Example: @@ -5054,6 +5077,8 @@ A jump table for the options with a short description can be found at |Q_op|. enabled, in which case only spaces are used). Enabling this option means the indent will preserve as many existing characters as possible for indenting, and only add additional tabs or spaces as required. + 'expandtab' does not apply to the preserved white space, a Tab remains + a Tab. NOTE: When using ">>" multiple times the resulting indent is a mix of tabs and spaces. You might not like this. NOTE: 'preserveindent' is reset when 'compatible' is set. @@ -5894,6 +5919,9 @@ A jump table for the options with a short description can be found at |Q_op|. pattern (if there is one) as possible matches. Thus, if you have matched a C function, you can see a template for what arguments are required (coding style permitting). + Note that this doesn't work well together with having "longest" in + 'completeopt', because the completion from the search pattern may not + match the typed text. *'showmatch'* *'sm'* *'noshowmatch'* *'nosm'* 'showmatch' 'sm' boolean (default off) @@ -6602,7 +6630,7 @@ A jump table for the options with a short description can be found at |Q_op|. Linear searching is done anyway, for one file, when Vim finds a line at the start of the file indicating that it's not sorted: > - !_TAG_FILE_SORTED 0 /some command/ + !_TAG_FILE_SORTED 0 /some comment/ < [The whitespace before and after the '0' must be a single ] When a binary search was done and no match was found in any of the @@ -7424,6 +7452,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Character you have to type to start wildcard expansion in the command-line, as specified with 'wildmode'. + More info here: |cmdline-completion|. The character is not recognized when used inside a macro. See 'wildcharm' for that. Although 'wc' is a number option, you can set it to a special key: > @@ -7441,7 +7470,7 @@ A jump table for the options with a short description can be found at |Q_op|. you'll never actually type 'wildcharm', just use it in mappings that automatically invoke completion mode, e.g.: > :set wcm= - :cmap ss so $vim/sessions/*.vim + :cnoremap ss so $vim/sessions/*.vim < Then after typing :ss you can use CTRL-P & CTRL-N. *'wildignore'* *'wig'* @@ -7536,6 +7565,7 @@ A jump table for the options with a short description can be found at |Q_op|. < List all matches without completing, then each full match > :set wildmode=longest,list < Complete longest common string, then list alternatives. + More info here: |cmdline-completion|. *'wildoptions'* *'wop'* 'wildoptions' 'wop' string (default "") @@ -7596,13 +7626,17 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Minimal number of lines for the current window. This is not a hard minimum, Vim will use fewer lines if there is not enough room. If the - current window is smaller, its size is increased, at the cost of the - height of other windows. Set it to 999 to make the current window - always fill the screen (although this has the drawback that ":all" - will create only two windows). Set it to a small number for normal - editing. - Minimum value is 1. - The height is not adjusted after one of the commands to change the + focus goes to a window that is smaller, its size is increased, at the + cost of the height of other windows. + Set 'winheight' to a small number for normal editing. + Set it to 999 to make the current window fill most of the screen. + Other windows will be only 'winminheight' high. This has the drawback + that ":all" will create only two windows. To avoid "vim -o 1 2 3 4" + to create only two windows, set the option after startup is done, + using the |VimEnter| event: > + au VimEnter * set winheight=999 +< Minimum value is 1. + The height is not adjusted after one of the commands that change the height of the current window. 'winheight' applies to the current window. Use 'winminheight' to set the minimal height for other windows. diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt index 5331cfec..80e42c1d 100644 --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 7.1. Last change: 2007 May 11 +*pattern.txt* For Vim version 7.1. Last change: 2008 Feb 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -138,6 +138,7 @@ CTRL-C Interrupt current (search) command. Use CTRL-Break on This command doesn't work in an autocommand, because the highlighting state is saved and restored when executing autocommands |autocmd-searchpat|. + Same thing for when invoking a user function. While typing the search pattern the current match will be shown if the 'incsearch' option is on. Remember that you still have to finish the search @@ -497,8 +498,8 @@ Character classes {not in Vi}: */character-classes* |/[]| [] \[] any character specified inside the [] |/\%[]| \%[] \%[] a sequence of optionally matched atoms -|/\c| \c \c ignore case -|/\C| \C \C match case +|/\c| \c \c ignore case, do not use the 'ignorecase' option +|/\C| \C \C match case, do not use the 'ignorecase' option |/\m| \m \m 'magic' on for the following chars in the pattern |/\M| \M \M 'magic' off for the following chars in the pattern |/\v| \v \v the following chars in the pattern are "very magic" @@ -720,7 +721,7 @@ An ordinary atom can be: start-of-line */$* -$ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"): +$ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): matches end-of-line ; at other positions, matches literal '$'. |/zero-width| @@ -1071,6 +1072,9 @@ x A single character, with no special meaning, matches itself < Matches the words "r", "re", "ro", "rea", "roa", "read" and "road". There can be no \(\), \%(\) or \z(\) items inside the [] and \%[] does not nest. + To include a "[" use "[[]" and for "]" use []]", e.g.,: > + /index\%[[[]0[]]] +< matches "index" "index[", "index[0" and "index[0]". {not available when compiled without the +syntax feature} */\%d* */\%x* */\%o* */\%u* */\%U* *E678* @@ -1225,11 +1229,14 @@ Finally, these constructs are unique to Perl: 'ignorecase' does not apply, use |/\c| in the pattern to ignore case. Otherwise case is not ignored. + 'redrawtime' defines the maximum time searched for pattern + matches. + When matching end-of-line and Vim redraws only part of the display you may get unexpected results. That is because Vim looks for a match in the line where redrawing starts. - Also see |matcharg()|and |getmatches()|. The former returns + Also see |matcharg()| and |getmatches()|. The former returns the highlight group and pattern of a previous |:match| command. The latter returns a list with highlight groups and patterns defined by both |matchadd()| and |:match|. diff --git a/runtime/doc/pi_getscript.txt b/runtime/doc/pi_getscript.txt index a5eafae9..28339807 100644 --- a/runtime/doc/pi_getscript.txt +++ b/runtime/doc/pi_getscript.txt @@ -1,4 +1,4 @@ -*pi_getscript.txt* For Vim version 7.1. Last change: 2007 May 08 +*pi_getscript.txt* For Vim version 7.0. Last change: 2008 Jan 07 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell, Jr. < @@ -136,7 +136,7 @@ insures that GetLatestVimScripts will assume that the script it has is out-of-date. The SourceID is extracted by GetLatestVimScripts from the script's page on -vim.sf.net; whenever it's greater than the one stored in the +vim.sf.net; whenever its greater than the one stored in the GetLatestVimScripts.dat file, the script will be downloaded (see |GetLatestVimScripts_dat|). @@ -335,6 +335,12 @@ The AutoInstall process will: ============================================================================== 9. GetLatestVimScripts History *getscript-history* *glvs-hist* {{{1 +v29 Jan 07, 2008 : * Bram M pointed out that cpo is a global option and that + getscriptPlugin.vim was setting it but not restoring it. +v28 Jan 02, 2008 : * improved shell quoting character handling, cygwin + interface, register-a bypass + Oct 29, 2007 * Bill McCarthy suggested a change to getscript that avoids + creating pop-up windows v24 Apr 16, 2007 : * removed save&restore of the fo option during script loading v23 Nov 03, 2006 : * ignores comments (#...) diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index e880aef8..6b0c9a6c 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -1,93 +1,90 @@ -*pi_netrw.txt* For Vim version 7.1. Last change: 2007 May 08 +*pi_netrw.txt* For Vim version 7.1. Last change: 2008 Mar 28 ----------------------------------------------------- NETRW REFERENCE MANUAL by Charles E. Campbell, Jr. ----------------------------------------------------- -*dav* *http* *network* *Nwrite* *netrw-file* -*fetch* *netrw* *Nread* *rcp* *scp* -*ftp* *netrw.vim* *Nsource* *rsync* *sftp* +*dav* *http* *network* *Nwrite* *netrw-file* +*fetch* *netrw* *Nread* *rcp* *scp* +*ftp* *netrw.vim* *Nsource* *rsync* *sftp* ============================================================================== -1. Contents *netrw-contents* +1. Contents *netrw-contents* {{{1 1. Contents.............................................|netrw-contents| 2. Starting With Netrw..................................|netrw-start| 3. Netrw Reference......................................|netrw-ref| - CONTROLLING EXTERNAL APPLICATIONS..................|netrw-externapp| + EXTERNAL APPLICATIONS AND PROTOCOLS................|netrw-externapp| READING............................................|netrw-read| WRITING............................................|netrw-write| DIRECTORY LISTING..................................|netrw-dirlist| CHANGING THE USERID AND PASSWORD...................|netrw-chgup| - VARIABLES..........................................|netrw-variables| + VARIABLES AND SETTINGS.............................|netrw-variables| PATHS..............................................|netrw-path| 4. Network-Oriented File Transfer.......................|netrw-xfer| NETRC..............................................|netrw-netrc| PASSWORD...........................................|netrw-passwd| 5. Activation...........................................|netrw-activate| -6. Transparent File Transfer............................|netrw-transparent| +6. Transparent File Editing.............................|netrw-transparent| 7. Ex Commands..........................................|netrw-ex| 8. Variables and Options................................|netrw-var| -9. Directory Browsing...................................|netrw-browse| {{{1 - Maps...............................................|netrw-maps| - Exploring..........................................|netrw-explore-cmds| - Quick Reference Commands Table.....................|netrw-browse-cmds| - Netrw Browser Variables............................|netrw-browse-var| - Introduction To Directory Browsing.................|netrw-browse-intro| - Netrw Browsing And Option Incompatibilities........|netrw-incompatible| - Directory Exploring Commands.......................|netrw-explore| - Refreshing The Listing.............................|netrw-ctrl-l| - Going Up...........................................|netrw--| +9. Browsing.............................................|netrw-browse| + Introduction To Browsing...........................|netrw-browse-intro| + Quick Reference: Maps..............................|netrw-browse-maps| + Quick Reference: Commands..........................|netrw-browse-cmds| + Bookmarking A Directory............................|netrw-mb| Browsing...........................................|netrw-cr| - Obtaining A File...................................|netrw-O| - Change Listing Style...............................|netrw-i| - Making A New Directory.............................|netrw-d| - Deleting Files Or Directories......................|netrw-D| - Renaming Files Or Directories......................|netrw-move| - Hiding Files Or Directories........................|netrw-a| - Edit File Or Directory Hiding List.................|netrw-ctrl-h| Browsing With A Horizontally Split Window..........|netrw-o| - Browsing With A Vertically Split Window............|netrw-v| Browsing With A New Tab............................|netrw-t| - Preview Window.....................................|netrw-p| - Selecting Sorting Style............................|netrw-s| - Editing The Sorting Sequence.......................|netrw-S| - Reversing Sorting Order............................|netrw-r| + Browsing With A Vertically Split Window............|netrw-v| + Change Listing Style...............................|netrw-i| + Changing To A Bookmarked Directory.................|netrw-gb| Changing To A Predecessor Directory................|netrw-u| Changing To A Successor Directory..................|netrw-U| Customizing Browsing With A User Function..........|netrw-x| + Deleting Files Or Directories......................|netrw-D| + Directory Exploring Commands.......................|netrw-explore| + Exploring With Stars and Patterns..................|netrw-star| + Displaying Information About File..................|netrw-qf| + Edit File Or Directory Hiding List.................|netrw-ctrl-h| + Editing The Sorting Sequence.......................|netrw-S| + Going Up...........................................|netrw--| + Hiding Files Or Directories........................|netrw-a| + Improving Browsing.................................|netrw-ssh-hack| + Listing Bookmarks And History......................|netrw-qb| + Making A New Directory.............................|netrw-d| Making The Browsing Directory The Current Directory|netrw-c| - Bookmarking A Directory............................|netrw-mb| - Changing To A Bookmarked Directory.................|netrw-gb| - Listing Bookmarks And History......................|netrw-q| - Improving Directory Browsing.......................|netrw-listhack| }}}1 + Marked Files: Compression And Decompression........|netrw-mz| + Marked Files: Printing.............................|netrw-mp| + Marked Files: Tagging..............................|netrw-mT| + Marked Files: Unmarking............................|netrw-mu| + Marking Files......................................|netrw-mf| + Marking Files By Regular Expression................|netrw-mr| + Netrw Browser Variables............................|netrw-browser-var| + Netrw Browsing And Option Incompatibilities........|netrw-incompatible| + Netrw Settings.....................................|netrw-settings| + Obtaining A File...................................|netrw-O| + Preview Window.....................................|netrw-p| + Previous Window....................................|netrw-P| + Refreshing The Listing.............................|netrw-ctrl-l| + Renaming Files Or Directories......................|netrw-move| + Reversing Sorting Order............................|netrw-r| + Selecting Sorting Style............................|netrw-s| 10. Problems and Fixes...................................|netrw-problems| -11. Debugging............................................|netrw-debug| +11. Debugging Netrw Itself...............................|netrw-debug| 12. History..............................................|netrw-history| 13. Credits..............................................|netrw-credits| -The Netrw plugin is generally sourced automatically as it is a -|standard-plugin|. That said, to make use of netrw, one must -have plugins available which can be done with the following -two lines in your <.vimrc>: > - - set nocp " 'compatible' is not set - filetype plugin on " plugins are enabled -< -You can avoid loading this plugin by setting the "loaded_netrw" variable -in your <.vimrc> file: > - - :let loaded_netrw = 1 - {Vi does not have any of this} ============================================================================== -2. Starting With Netrw *netrw-start* +2. Starting With Netrw *netrw-start* {{{1 -Netrw makes reading, writing, and browsing over a network connection easy! -First, make sure that you have plugins enabled, so you'll need to have at -least the following in your <.vimrc>: (or see |netrw-activate|) > +Netrw makes reading files, writing files, browsing over a network, and +browsing locally easy! First, make sure that you have plugins enabled, so +you'll need to have at least the following in your <.vimrc>: +(or see |netrw-activate|) > set nocp " 'compatible' is not set filetype plugin on " plugins are enabled @@ -96,14 +93,13 @@ least the following in your <.vimrc>: (or see |netrw-activate|) > Netrw supports "transparent" editing of files on other machines using urls (see |netrw-transparent|). As an example of this, let's assume you have an -account on some other machine; try > +account on some other machine; if you can use scp, try: > vim scp://hostname/path/to/file < -if you have an ssh connection. Want to make ssh/scp easier to use? Check -out |netrw-listhack|! +Want to make ssh/scp easier to use? Check out |netrw-ssh-hack|! -What if you have ftp, not ssh/scp? That's easy, too; try > +So, what if you have ftp, not ssh/scp? That's easy, too; try > vim ftp://hostname/path/to/file < @@ -117,7 +113,7 @@ and has lines resembling > ... default login USERID password "PASSWORD" < -Now about browsing -- ie. when you just want to look around before editing a +Now about browsing -- when you just want to look around before editing a file. For browsing on your current host, just "edit" a directory: > vim . @@ -131,28 +127,49 @@ the directory name is followed by a "/"): > < See |netrw-browse| for more! -There's more protocols supported than scp and ftp, too: see the next -section, |netrw-externapp|. +There are more protocols supported by netrw just than scp and ftp, too: see the +next section, |netrw-externapp|, for how to use these external applications. + +If you want to use plugins, but for some reason don't wish to use netrw, then +you need to avoid loading both the plugin and the autoload portions of netrw. +You may do so by placing the following two lines in your <.vimrc>: > + + :let g:loaded_netrw = 1 + :let g:loaded_netrwPlugin = 1 +< ============================================================================== -3. Netrw Reference *netrw-ref* +3. Netrw Reference *netrw-ref* {{{1 + + Netrw supports several protocols in addition to scp and ftp mentioned + in |netrw-start|. These include dav, fetch, http,... well, just look + at the list in |netrw-externapp|. Each protocol is associated with a + variable which holds the default command supporting that protocol. -CONTROLLING EXTERNAL APPLICATIONS *netrw-externapp* +EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 Protocol Variable Default Value -------- ---------------- ------------- dav: *g:netrw_dav_cmd* = "cadaver" fetch: *g:netrw_fetch_cmd* = "fetch -o" if fetch is available ftp: *g:netrw_ftp_cmd* = "ftp" - http: *g:netrw_http_cmd* = "curl -o" if curl is available - http: g:netrw_http_cmd = "wget -q -O" else if wget is available - http: g:netrw_http_cmd = "fetch -o" else if fetch is available + http: *g:netrw_http_cmd* = "curl -o" if curl is available + http: g:netrw_http_cmd = "wget -q -O" elseif wget is available + http: g:netrw_http_cmd = "fetch -o" elseif fetch is available rcp: *g:netrw_rcp_cmd* = "rcp" rsync: *g:netrw_rsync_cmd* = "rsync -a" scp: *g:netrw_scp_cmd* = "scp -q" sftp: *g:netrw_sftp_cmd* = "sftp" -READING *netrw-read* *netrw-nread* +READING *netrw-read* *netrw-nread* {{{2 + + Generally, one may just use the url notation with a normal editing + command, such as > + + :e ftp://[user@]machine/path +< + Netrw also provides the Nread command: + :Nread ? give help :Nread "machine:path" uses rcp :Nread "machine path" uses ftp w/ <.netrc> @@ -166,7 +183,15 @@ READING *netrw-read* *netrw-nread* :Nread "scp://[user@]machine[[:#]port]/path" uses scp :Nread "sftp://[user@]machine/path" uses sftp -WRITING *netrw-write* *netrw-nwrite* +WRITING *netrw-write* *netrw-nwrite* {{{2 + + One may just use the url notation with a normal file writing + command, such as > + + :w ftp://[user@]machine/path +< + Netrw also provides the Nwrite command: + :Nwrite ? give help :Nwrite "machine:path" uses rcp :Nwrite "machine path" uses ftp w/ <.netrc> @@ -179,7 +204,15 @@ WRITING *netrw-write* *netrw-nwrite* :Nwrite "sftp://[user@]machine/path" uses sftp http: not supported! -SOURCING *netrw-source* +SOURCING *netrw-source* {{{2 + + One may just use the url notation with the normal file sourcing + command, such as > + + :so ftp://[user@]machine/path +< + Netrw also provides the Nsource command: + :Nsource ? give help :Nsource "dav://machine[:port]/path" uses cadaver :Nsource "fetch://[user@]machine/path" uses fetch @@ -190,30 +223,48 @@ SOURCING *netrw-source* :Nsource "scp://[user@]machine[[:#]port]/path" uses scp :Nsource "sftp://[user@]machine/path" uses sftp -DIRECTORY LISTING *netrw-dirlist* +DIRECTORY LISTING *netrw-dirlist* {{{2 + + One may browse a directory to get a listing by simply attempting to + edit the directory: > + + :e scp://[user]@hostname/path/ + :e ftp://[user]@hostname/path/ +< + For remote directories (ie. those using scp or ftp), that trailing + "/" is necessary (it tells netrw that its to treat it as a directory + to browse instead of a file to download). + + However, the Nread command can also be used to accomplish this: + :Nread [protocol]://[user]@hostname/path/ - *netrw-login* *netrw-password* - CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* + *netrw-login* *netrw-password* +CHANGING USERID AND PASSWORD *netrw-chgup* *netrw-userpass* {{{2 Attempts to use ftp will prompt you for a user-id and a password. These will be saved in global variables g:netrw_uid and - g:netrw_passwd; subsequent uses of ftp will re-use those two items to + s:netrw_passwd; subsequent uses of ftp will re-use those two items to simplify the further use of ftp. However, if you need to use a different user id and/or password, you'll want to call NetUserPass() first. To work around the need to enter passwords, check if your ftp supports a <.netrc> file in your home directory. Also see |netrw-passwd| (and if you're using ssh/scp hoping to figure out how - to not need to use passwords, look at |netrw-listhack|). + to not need to use passwords, look at |netrw-ssh-hack|). :NetUserPass [uid [password]] -- prompts as needed :call NetUserPass() -- prompts for uid and password :call NetUserPass("uid") -- prompts for password :call NetUserPass("uid","password") -- sets global uid and password -VARIABLES *netrw-variables* +NETRW VARIABLES AND SETTINGS *netrw-variables* {{{2 +(also see: |netrw-browser-var| |netrw-protocol| |netrw-settings| |netrw-var|) -(also see: |netrw-browse-var| |netrw-protocol| |netrw-settings| |netrw-var|) +Netrw provides a lot of variables which allow you to customize netrw to your +preferences. One way to look at them is via the command :NetrwSettings (see +|netrw-settings|) which will display your current netrw settings. Most such +settings are described below, in |netrw-browser-options|, and in +|netrw-externapp|: *b:netrw_lastfile* last file Network-read/written retained on a per-buffer basis (supports plain :Nw ) @@ -226,7 +277,7 @@ VARIABLES *netrw-variables* method works for your setup. *g:netrw_extracmd* default: doesn't exist - If this variable exists, then any string it contains + If this variable exists, then any string it contains will be placed into the commands set to your ftp client. As an example: ="passive" @@ -236,8 +287,8 @@ VARIABLES *netrw-variables* *g:netrw_ignorenetrc* =0 (default for linux, cygwin) =1 If you have a <.netrc> file but it doesn't work and - you want it ignored, then set this variable as shown. - (default for Windows + cmd.exe) + you want it ignored, then set this variable as + shown. (default for Windows + cmd.exe) *g:netrw_menu* =0 disable netrw's menu =1 (default) netrw's menu enabled @@ -246,7 +297,13 @@ VARIABLES *netrw-variables* be available (see |netrw-gx|) *g:netrw_uid* (ftp) user-id, retained on a per-session basis - *g:netrw_passwd* (ftp) password, retained on a per-session basis + *s:netrw_passwd* (ftp) password, retained on a per-session basis + + *g:netrw_preview* =0 (default) preview window shown in a horizontally + split window + =1 preview window shown in a vertically split window. + Also affects the "previous window" (see |netrw-P|) in + the same way. *g:netrw_shq* = "'" for Unix/Linux systems (ie. a single quote) = "'" for Windows + cygwin systems (ie. a single quote) @@ -258,11 +315,14 @@ VARIABLES *netrw-variables* *g:netrw_scpport* = "-P" : option to use to set port for scp *g:netrw_sshport* = "-p" : option to use to set port for ssh + *g:netrw_silent* =0 : transfers done normally + =1 : transfers done silently + *g:netrw_use_errorwindow* =1 : messages from netrw will use a separate one - line window. This window provides reliable + line window. This window provides reliable delivery of messages. (default) =0 : messages from netrw will use echoerr ; - messages don't always seem to show up this + messages don't always seem to show up this way, but one doesn't have to quit the window. *g:netrw_win95ftp* =1 if using Win95, will remove four trailing blank @@ -277,9 +337,9 @@ VARIABLES *netrw-variables* This option is ignored if you're using unix *g:netrw_use_nt_rcp* =0 don't use the rcp of WinNT, Win2000 and WinXP - =1 use WinNT's rcp in binary mode (default) + =1 use WinNT's rcp in binary mode (default) -PATHS *netrw-path* +PATHS *netrw-path* {{{2 Paths to files are generally user-directory relative for most protocols. It is possible that some protocol will make paths relative to some @@ -288,7 +348,7 @@ associated directory, however. example: vim scp://user@host/somefile example: vim scp://user@host/subdir1/subdir2/somefile < -where "somefile" is the "user"'s home directory. If you wish to get a +where "somefile" is in the "user"'s home directory. If you wish to get a file using root-relative paths, use the full path: > example: vim scp://user@host//somefile @@ -296,7 +356,7 @@ file using root-relative paths, use the full path: < ============================================================================== -4. Network-Oriented File Transfer *netrw-xfer* +4. Network-Oriented File Transfer *netrw-xfer* {{{1 Network-oriented file transfer under Vim is implemented by a VimL-based script () using plugin techniques. It currently supports both reading and @@ -312,7 +372,7 @@ FileReadCmd, BufWriteCmd) to intercept reads/writes with url-like filenames. > ex. vim ftp://hostname/path/to/file < The characters preceding the colon specify the protocol to use; in the -example, its ftp. The script then formulates a command or a +example, it's ftp. The script then formulates a command or a series of commands (typically ftp) which it issues to an external program (ftp, scp, etc) which does the actual file transfer/protocol. Files are read from/written to a temporary file (under Unix/Linux, /tmp/...) which the @@ -408,7 +468,7 @@ additional prompting. work with your ftp client. Otherwise the script will prompt for user-id and password. - (*3) for ftp, "machine" may be machine#port or machine:port + (*3) for ftp, "machine" may be machine#port or machine:port if a different port is needed than the standard ftp port (*4) for http:..., if wget is available it will be used. Otherwise, @@ -419,6 +479,10 @@ Both the :Nread and the :Nwrite ex-commands can accept multiple filenames. NETRC *netrw-netrc* +The <.netrc> file, typically located in your home directory, contains lines +therein which map a hostname (machine name) to the user id and password you +prefer to use with it. + The typical syntax for lines in a <.netrc> file is given as shown below. Ftp under Unix usually supports <.netrc>; ftp under Windows usually doesn't. > @@ -433,7 +497,7 @@ password. Since this file contains passwords, make very sure nobody else can read this file! Most programs will refuse to use a .netrc that is readable for others. Don't forget that the system administrator can - still read the file! + still read the file! Ie. for Linux/Unix: chmod 600 .netrc PASSWORD *netrw-passwd* @@ -444,17 +508,19 @@ after one has set it. Unfortunately there doesn't appear to be a way for netrw to feed a password to scp. Thus every transfer via scp will require re-entry of the password. -However, |netrw-listhack| can help with this problem. +However, |netrw-ssh-hack| can help with this problem. ============================================================================== -5. Activation *netrw-activate* +5. Activation *netrw-activate* {{{1 Network-oriented file transfers are available by default whenever Vim's -|'nocompatible'| mode is enabled. The file resides in your -system's vim-plugin directory and is sourced automatically whenever you bring -up vim. I suggest that, at a minimum, you have at least the following in your -<.vimrc> customization file: > +|'nocompatible'| mode is enabled. Netrw's script files reside in your +system's plugin, autoload, and syntax directories; just the +plugin/netrwPlugin.vim script is sourced automatically whenever you bring up +vim. The main script in autoload/netrw.vim is only loaded when you actually +use netrw. I suggest that, at a minimum, you have at least the following in +your <.vimrc> customization file: > set nocp if version >= 600 @@ -463,11 +529,12 @@ up vim. I suggest that, at a minimum, you have at least the following in your < ============================================================================== -6. Transparent File Transfer *netrw-transparent* +6. Transparent File Editing *netrw-transparent* {{{1 Transparent file transfers occur whenever a regular file read or write -(invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made. -Thus one may use files across networks just as simply as if they were local. > +(invoked via an |:autocmd| for |BufReadCmd|, |BufWriteCmd|, or |SourceCmd| +events) is made. Thus one may read, write, or source files across networks +just as easily as if they were local files! > vim ftp://[user@]machine/path ... @@ -478,10 +545,10 @@ such as netrw. ============================================================================== -7. Ex Commands *netrw-ex* +7. Ex Commands *netrw-ex* {{{1 The usual read/write commands are supported. There are also a few -additional commands available. Often you won't need to use Nw or +additional commands available. Often you won't need to use Nwrite or Nread as shown in |netrw-transparent| (ie. simply use > :e url :r url @@ -489,20 +556,20 @@ Nread as shown in |netrw-transparent| (ie. simply use > instead, as appropriate) -- see |netrw-urls|. In the explanations below, a {netfile} is an url to a remote file. -:[range]Nw Write the specified lines to the current +:[range]Nw[rite] Write the specified lines to the current file as specified in b:netrw_lastfile. -:[range]Nw {netfile} [{netfile}]... +:[range]Nw[rite] {netfile} [{netfile}]... Write the specified lines to the {netfile}. -:Nread Read the specified lines into the current +:Nr[ead] Read the specified lines into the current buffer from the file specified in b:netrw_lastfile. -:Nread {netfile} {netfile}... +:Nr[ead] {netfile} {netfile}... Read the {netfile} after the current line. -:Nsource {netfile} +:Ns[ource] {netfile} Source the {netfile}. To start up vim using a remote .vimrc, one may use the following (all on one line) (tnx to Antoine Mechelynck) > @@ -511,35 +578,37 @@ below, a {netfile} is an url to a remote file. --cmd "source scp://HOSTNAME/.vimrc" < *netrw-uidpass* :call NetUserPass() - If b:netrw_uid and b:netrw_passwd don't exist, - this function query the user for them. + If g:netrw_uid and s:netrw_passwd don't exist, + this function will query the user for them. :call NetUserPass("userid") - This call will set the b:netrw_uid and, if + This call will set the g:netrw_uid and, if the password doesn't exist, will query the user for it. :call NetUserPass("userid","passwd") - This call will set both the b:netrw_uid and b:netrw_passwd. + This call will set both the g:netrw_uid and s:netrw_passwd. The user-id and password are used by ftp transfers. One may - effectively remove the user-id and password by using "" - strings. + effectively remove the user-id and password by using empty + strings (ie. ""). :NetrwSettings This command is described in |netrw-settings| -- used to - display netrw settings and change netrw behavior. + display netrw settings and change netrw behavior. ============================================================================== -8. Variables and Options *netrw-options* *netrw-var* +8. Variables and Options *netrw-options* *netrw-var* {{{1 + +(if you're interested in the netrw browser settings, see: |netrw-browser-var|) The script provides several variables which act as options to -ffect 's behavior. These variables typically may be set in the -user's <.vimrc> file: -(also see: -|netrw-settings| |netrw-browse-var| |netrw-protocol| |netrw-settings|) > - - ------------- - Netrw Options - ------------- +affect 's file transfer behavior. These variables typically may be +set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|) + +> + + ------------- + Netrw Options + ------------- Option Meaning -------------- ----------------------------------------------- < @@ -584,7 +653,7 @@ temporarily. g:netrw_fname Holds filename being accessed > ------------------------------------------------------------ < - *netrw-protocol* + *netrw-protocol* Netrw supports a number of protocols. These protocols are invoked using the variables listed below, and may be modified by the user. @@ -706,300 +775,437 @@ itself: > ============================================================================== -9. Directory Browsing *netrw-browse* *netrw-dir* *netrw-list* *netrw-help* - -MAPS *netrw-maps* - .............Help.......................................|netrw-help| - .............Browsing...................................|netrw-cr| - ............Deleting Files or Directories..............|netrw-delete| - -................Going Up...................................|netrw--| - a................Hiding Files or Directories................|netrw-a| - mb...............Bookmarking a Directory....................|netrw-mb| - gb...............Changing to a Bookmarked Directory.........|netrw-gb| - c................Make Browsing Directory The Current Dir....|netrw-c| - d................Make A New Directory.......................|netrw-d| - D................Deleting Files or Directories..............|netrw-D| - ............Edit File/Directory Hiding List............|netrw-ctrl-h| - i................Change Listing Style.......................|netrw-i| - ............Refreshing the Listing.....................|netrw-ctrl-l| - o................Browsing with a Horizontal Split...........|netrw-o| - p................Preview Window.............................|netrw-p| - q................Listing Bookmarks and History..............|netrw-q| - r................Reversing Sorting Order....................|netrw-r| - R................Renaming Files or Directories..............|netrw-R| - s................Selecting Sorting Style....................|netrw-s| - S................Editing the Sorting Sequence...............|netrw-S| - t................Browsing with a new tab....................|netrw-t| - u................Changing to a Predecessor Directory........|netrw-u| - U................Changing to a Successor Directory..........|netrw-U| - v................Browsing with a Vertical Split.............|netrw-v| - x................Customizing Browsing.......................|netrw-x| - - COMMANDS *netrw-explore-cmds* - :Explore[!] [dir] Explore directory of current file........|netrw-explore| - :Sexplore[!] [dir] Split & Explore directory ...............|netrw-explore| - :Hexplore[!] [dir] Horizontal Split & Explore...............|netrw-explore| - :Vexplore[!] [dir] Vertical Split & Explore.................|netrw-explore| - :Texplore[!] [dir] Tab & Explore............................|netrw-explore| - :Pexplore[!] [dir] Vertical Split & Explore.................|netrw-explore| - :Nexplore[!] [dir] Vertical Split & Explore.................|netrw-explore| - :NetrwSettings.............................................|netrw-settings| - -QUICK REFERENCE COMMANDS TABLE *netrw-browse-cmds* -> - ------- ----------- - Command Explanation - ------- ----------- -< Causes Netrw to issue help - Netrw will enter the directory or read the file |netrw-cr| - Netrw will attempt to remove the file/directory |netrw-del| - - Makes Netrw go up one directory |netrw--| - a Toggles between normal display, |netrw-a| - hiding (suppress display of files matching g:netrw_list_hide) - showing (display only files which match g:netrw_list_hide) - mb bookmark current directory - gb go to previous bookmarked directory - c Make current browsing directory the current directory |netrw-c| - d Make a directory |netrw-d| - D Netrw will attempt to remove the file(s)/directory(ies) |netrw-D| - Edit file hiding list |netrw-ctrl-h| - i Cycle between thin, long, wide, and tree listings|netrw-i| - Causes Netrw to refresh the directory listing |netrw-ctrl-l| - o Enter the file/directory under the cursor in a new browser - window. A horizontal split is used. |netrw-o| - O Obtain a file specified by cursor |netrw-O| - p Preview the file |netrw-p| - P Browse in the previously used window |netrw-P| - q List bookmarked directories and history |netrw-q| - r Reverse sorting order |netrw-r| - R Rename the designed file(s)/directory(ies) |netrw-R| - s Select sorting style: by name, time, or file size |netrw-s| - S Specify suffix priority for name-sorting |netrw-S| - t Enter the file/directory under the cursor in a new tab|netrw-t| - u Change to recently-visited directory |netrw-u| - U Change to subsequently-visited directory |netrw-U| - v Enter the file/directory under the cursor in a new browser - window. A vertical split is used. |netrw-v| - x Apply a function to a file. (special browsers) |netrw-x| +9. Browsing *netrw-browsing* *netrw-browse* *netrw-help* {{{1 + *netrw-browser* *netrw-dir* *netrw-list* -NETRW BROWSER VARIABLES *netrw-browse-var* -> - --- ----------- - Var Explanation - --- ----------- -< *g:netrw_alto* change from above splitting to below splitting - by setting this variable (see |netrw-o|) - default: =&sb (see |'sb'|) +INTRODUCTION TO BROWSING *netrw-browse-intro* {{{2 - *g:netrw_altv* change from left splitting to right splitting - by setting this variable (see |netrw-v|) - default: =&spr (see |'spr'|) +Netrw supports the browsing of directories on your local system and on remote +hosts; browsing includes listing files and directories, entering directories, +editing files therein, deleting files/directories, making new directories, +moving (renaming) files and directories, copying files and directories, etc. +One may mark files and execute any system command on them! The Netrw browser +generally implements the previous explorer's maps and commands for remote +directories, although details (such as pertinent global variable names) +necessarily differ. To browse a directory, simply "edit" it! > - *g:netrw_browse_split* when browsing, will open the file by: - =0: re-using the same window - =1: horizontally splitting the window first - =2: vertically splitting the window first - =3: open file in new tab + vim /your/directory/ + vim . + vim c:\your\directory\ +< +(Related topics: |netrw-cr| |netrw-o| |netrw-p| |netrw-P| |netrw-t| + |netrw-mf| |netrw-mx| |netrw-D| |netrw-R| |netrw-v| ) - *g:netrw_browsex_viewer* specify user's preference for a viewer: > - "kfmclient exec" - "gnome-open" -< If > - "-" -< is used, then netrwFileHandler() will look for - a script/function to handle the given - extension. (see |netrw_filehandler|). +The Netrw remote file and directory browser handles two protocols: ssh and +ftp. The protocol in the url, if it is ftp, will cause netrw also to use ftp +in its remote browsing. Specifying any other protocol will cause it to be +used for file transfers; but the ssh protocol will be used to do remote +browsing. - *g:netrw_fastbrowse* =0: slow speed browsing, never re-use - directory listings; always obtain - directory listings. - =1: medium speed browsing, re-use directory - listings only when remote browsing. - (default value) - =2: fast browsing, only obtains directory - listings when the directory hasn't been - seen before (or |netrw-ctrl-l| is used). - Fast browsing retains old directory listing - buffers so that they don't need to be - re-acquired. This feature is especially - important for remote browsing. However, if - a file is introduced or deleted into or from - such directories, the old directory buffer - becomes out-of-date. One may always refresh - such a directory listing with |netrw-ctrl-l|. - This option gives the choice of the trade-off - between accuracy and speed to the user. +To use Netrw's remote directory browser, simply attempt to read a "file" with +a trailing slash and it will be interpreted as a request to list a directory: +> + vim [protocol]://[user@]hostname/path/ +< +where [protocol] is typically scp or ftp. As an example, try: > - *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings - that can show up as "directories" and "files" - in the listing. This pattern is used to - remove such embedded messages. By default its - value is: - '^total\s\+\d\+$\| - ^Trying\s\+\d\+.*$\| - ^KERBEROS_V\d rejected\| - ^Security extensions not\| - No such file\| - : connect to address [0-9a-fA-F:]* - : No route to host$' + vim ftp://ftp.home.vim.org/pub/vim/ +< +For local directories, the trailing slash is not required. Again, because its +easy to miss: to browse remote directories, the url must terminate with a +slash! - *g:netrw_ftp_list_cmd* options for passing along to ftp for directory - listing. Defaults: - unix or g:netrw_cygwin set: : "ls -lF" - otherwise "dir" +If you'd like to avoid entering the password repeatedly for remote directory +listings with ssh or scp, see |netrw-ssh-hack|. To avoid password entry with +ftp, see |netrw-netrc| (if your ftp supports it). +There are several things you can do to affect the browser's display of files: - *g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory - listing, sorted by size of file. - Defaults: - unix or g:netrw_cygwin set: : "ls -slF" - otherwise "dir" + * To change the listing style, press the "i" key (|netrw-i|). + Currently there are four styles: thin, long, wide, and tree. - *g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory - listing, sorted by time of last modification. - Defaults: - unix or g:netrw_cygwin set: : "ls -tlF" - otherwise "dir" + * To hide files (don't want to see those xyz~ files anymore?) see + |netrw-ctrl-h|. - *g:netrw_hide* if true, the hiding list is used - default: =0 + * Press s to sort files by name, time, or size. - *g:netrw_keepdir* =1 (default) keep current directory immune from - the browsing directory. - =0 keep the current directory the same as the - browsing directory. - The current browsing directory is contained in - b:netrw_curdir (also see |netrw-c|) +See |netrw-browse-cmds| for all the things you can do with netrw! - *g:netrw_list_cmd* command for listing remote directories - default: (if ssh is executable) - "ssh HOSTNAME ls -FLa" - *g:netrw_liststyle* Set the default listing style: - = 0: thin listing (one file per line) - = 1: long listing (one file per line with time - stamp information and file size) - = 2: wide listing (multiple files in columns) - = 3: tree style listing - *g:netrw_list_hide* comma separated pattern list for hiding files - default: "" +QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 +> + --- ----------------- ---- + Map Quick Explanation Link + --- ----------------- ---- +< Causes Netrw to issue help + Netrw will enter the directory or read the file |netrw-cr| + Netrw will attempt to remove the file/directory |netrw-del| + - Makes Netrw go up one directory |netrw--| + a Toggles between normal display, |netrw-a| + hiding (suppress display of files matching g:netrw_list_hide) + showing (display only files which match g:netrw_list_hide) + c Make browsing directory the current directory |netrw-c| + d Make a directory |netrw-d| + D Attempt to remove the file(s)/directory(ies) |netrw-D| + gb Go to previous bookmarked directory |netrw-gb| + gi Display information on file |netrw-qf| + Edit file hiding list |netrw-ctrl-h| + i Cycle between thin, long, wide, and tree listings |netrw-i| + Causes Netrw to refresh the directory listing |netrw-ctrl-l| + mb Bookmark current directory |netrw-mb| + mc Copy marked files to marked-file target directory |netrw-mc| + md Apply diff to marked files (up to 3) |netrw-md| + me Place marked files on arg list and edit them |netrw-me| + mf Mark a file |netrw-mf| + mh Toggle marked file suffices' presence on hiding list |netrw-mh| + mm Move marked files to marked-file target directory |netrw-mm| + mp Print marked files |netrw-mp| + mr Mark files satisfying a |regexp| |netrw-mr| + mt Current browsing directory becomes markfile target |netrw-mt| + mT Apply ctags to marked files |netrw-mT| + mu Unmark all marked files |netrw-mu| + mx Apply arbitrary shell command to marked files |netrw-mx| + mz Compress/decompress marked files |netrw-mz| + o Enter the file/directory under the cursor in a new |netrw-o| + browser window. A horizontal split is used. + O Obtain a file specified by cursor |netrw-O| + p Preview the file |netrw-p| + P Browse in the previously used window |netrw-P| + q List bookmarked directories and history |netrw-qb| + r Reverse sorting order |netrw-r| + R Rename the designed file(s)/directory(ies) |netrw-R| + s Select sorting style: by name, time, or file size |netrw-s| + S Specify suffix priority for name-sorting |netrw-S| + t Enter the file/directory under the cursor in a new tab|netrw-t| + u Change to recently-visited directory |netrw-u| + U Change to subsequently-visited directory |netrw-U| + v Enter the file/directory under the cursor in a new |netrw-v| + browser window. A vertical split is used. + x View file with an associated program |netrw-x| + + (gvim only) selects word under mouse as if a + had been pressed (ie. edit file, change directory) + (gvim only) same as P selecting word under mouse; + see |netrw-P| + (gvim only) delete file/directory using word under + mouse + <2-leftmouse> (gvim only) when: + * in a netrw-selected file, AND + * |g:netrw_retmap| == 1 AND + * the user doesn't already have a <2-leftmouse> mapping + defined before netrw is autoloaded, + then a double clicked leftmouse button will return + to the netrw browser window. + (gvim only) like mf, will mark files + +QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2 + :NetrwClean[!] ...........................................|netrw-clean| + :NetrwSettings ...........................................|netrw-settings| + :Explore[!] [dir] Explore directory of current file......|netrw-explore| + :Hexplore[!] [dir] Horizontal Split & Explore.............|netrw-explore| + :Nexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| + :Pexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| + :Rexplore Return to Explorer.....................|netrw-explore| + :Sexplore[!] [dir] Split & Explore directory .............|netrw-explore| + :Texplore[!] [dir] Tab & Explore..........................|netrw-explore| + :Vexplore[!] [dir] Vertical Split & Explore...............|netrw-explore| + +BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2 +One may easily "bookmark" a directory by using > - *g:netrw_local_mkdir* command for making a local directory - default: "mkdir" + {cnt}mb +< +Any count may be used. One may use viminfo's "!" option to retain bookmarks +between vim sessions. See |netrw-gb| for how to return to a bookmark and +|netrw-qb| for how to list them. - *g:netrw_local_rmdir* remove directory command (rmdir) - default: "rmdir" - *g:netrw_maxfilenamelen* =32 by default, selected so as to make long - listings fit on 80 column displays. - If your screen is wider, and you have file - or directory names longer than 32 bytes, - you may set this option to keep listings - columnar. +BROWSING *netrw-cr* {{{2 - *g:netrw_mkdir_cmd* command for making a remote directory - default: "ssh USEPORT HOSTNAME mkdir" +Browsing is simple: move the cursor onto a file or directory of interest. +Hitting the (the return key) will select the file or directory. +Directories will themselves be listed, and files will be opened using the +protocol given in the original read request. - *g:netrw_rm_cmd* command for removing files - default: "ssh USEPORT HOSTNAME rm" + CAVEAT: There are four forms of listing (see |netrw-i|). Netrw assumes that + two or more spaces delimit filenames and directory names for the long and + wide listing formats. Thus, if your filename or directory name has two or + more sequential spaces embedded in it, or any trailing spaces, then you'll + need to use the "thin" format to select it. - *g:netrw_rmdir_cmd* command for removing directories - default: "ssh USEPORT HOSTNAME rmdir" +The |g:netrw_browse_split| option, which is zero by default, may be used to +cause the opening of files to be done in a new window or tab instead of the +default. When the option is one or two, the splitting will be taken +horizontally or vertically, respectively. When the option is set to three, a + will cause the file to appear in a new tab. - *g:netrw_rmf_cmd* command for removing softlinks - default: "ssh USEPORT HOSTNAME rm -f" - *g:netrw_sort_by* sort by "name", "time", or "size" - default: "name" +When using the gui (gvim) one may select a file by pressing the +button. In addtion, if - *g:netrw_sort_direction* sorting direction: "normal" or "reverse" - default: "normal" + *|g:netrw_retmap| == 1 AND (its default value is 0) + * in a netrw-selected file, AND + * the user doesn't already have a <2-leftmouse> mapping defined before + netrw is loaded - *g:netrw_sort_sequence* when sorting by name, first sort by the - comma-separated pattern sequence - default: '[\/]$,*,\.bak$,\.o$,\.h$, - \.info$,\.swp$,\.obj$' +then a doubly-clicked leftmouse button will return to the netrw browser +window. - *g:netrw_ssh_cmd* One may specify an executable command - to use instead of ssh for remote actions - such as listing, file removal, etc. - default: ssh +Netrw attempts to speed up browsing, especially for remote browsing where one +may have to enter passwords, by keeping and re-using previously obtained +directory listing buffers. The |g:netrw_fastbrowse| variable is used to +control this behavior; one may have slow browsing (no buffer re-use), medium +speed browsing (re-use directory buffer listings only for remote directories), +and fast browsing (re-use directory buffer listings as often as possible). +The price for such re-use is that when changes are made (such as new files +are introduced into a directory), the listing may become out-of-date. One may +always refresh directory listing buffers by pressing ctrl-L (see +|netrw-ctrl-l|). - *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines, - messages, banners, and whatnot that one doesn't - want masquerading as "directories" and "files". - Use this pattern to remove such embedded - messages. By default its value is: - '^total\s\+\d\+$' - *g:netrw_use_noswf* netrw normally avoids writing swapfiles - for browser buffers. However, under some - systems this apparently is causing nasty - ml_get errors to appear; if you're getting - ml_get errors, try putting - let g:netrw_use_noswf= 0 - in your .vimrc. +Related topics: |netrw-o| |netrw-p| |netrw-P| |netrw-t| |netrw-v| +Associated setting variables: |g:netrw_browse_split| |g:netrw_fastbrowse| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_ssh_cmd| + |g:netrw_ssh_browse_reject| |g:netrw_use_noswf| - *g:netrw_timefmt* specify format string to strftime() (%c) - default: "%c" - *g:netrw_winsize* specify initial size of new o/v windows - default: "" +BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* {{{2 - *g:NetrwTopLvlMenu* This variable specifies the top level - menu name; by default, its "Netrw.". If - you wish to change this, do so in your - .vimrc. +Normally one enters a file or directory using the . However, the "o" map +allows one to open a new window to hold the new directory listing or file. A +horizontal split is used. (for vertical splitting, see |netrw-v|) -INTRODUCTION TO DIRECTORY BROWSING *netrw-browse-intro* +Normally, the o key splits the window horizontally with the new window and +cursor at the top. To change to splitting the window horizontally with the +new window and cursor at the bottom, have -Netrw supports the browsing of directories on the local system and on remote -hosts, including listing files and directories, entering directories, editing -files therein, deleting files/directories, making new directories, and moving -(renaming) files and directories. The Netrw browser generally implements the -previous explorer maps and commands for remote directories, although details -(such as pertinent global variable names) necessarily differ. + let g:netrw_alto = 1 -The Netrw remote file and directory browser handles two protocols: ssh and -ftp. The protocol in the url, if it is ftp, will cause netrw to use ftp -in its remote browsing. Any other protocol will be used for file transfers, -but otherwise the ssh protocol will be used to do remote directory browsing. +in your <.vimrc>. (also see |netrw-t| |netrw-v|) -To use Netrw's remote directory browser, simply attempt to read a "file" with a -trailing slash and it will be interpreted as a request to list a directory: +There is only one tree listing buffer; using "o" on a displayed subdirectory +will split the screen, but the same buffer will be shown twice. - vim [protocol]://[user@]hostname/path/ +Associated setting variables: |g:netrw_alto| |g:netrw_winsize| -For local directories, the trailing slash is not required. -If you'd like to avoid entering the password in for remote directory listings -with ssh or scp, see |netrw-listhack|. +BROWSING WITH A NEW TAB *netrw-t* {{{2 +Normally one enters a file or directory using the . The "t" map +allows one to open a new window hold the new directory listing or file in a +new tab. (also see: |netrw-o| |netrw-v|) -NETRW BROWSING AND OPTION INCOMPATIBILITIES *netrw-incompatible* -Netrw will not work properly with > +BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* {{{2 - :set acd - :set fo=...ta... -< -If either of these options are present when browsing is attempted, netrw -will change them by using noacd and removing the ta suboptions from the -|'formatoptions'|. +Normally one enters a file or directory using the . However, the "v" map +allows one to open a new window to hold the new directory listing or file. A +vertical split is used. (for horizontal splitting, see |netrw-o|) - *netrw-explore* *netrw-pexplore* *netrw-texplore* - *netrw-hexplore* *netrw-sexplore* *netrw-nexplore* - *netrw-vexplore* -DIRECTORY EXPLORING COMMANDS +Normally, the v key splits the window vertically with the new window and +cursor at the left. To change to splitting the window vertically with the new +window and cursor at the right, have - :Explore[!] [dir]... Explore directory of current file *:Explore* - :Sexplore[!] [dir]... Split&Explore directory of current file *:Sexplore* - :Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore* - :Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore* - :Texplore [dir]... Tab & Explore *:Texplore* + let g:netrw_altv = 1 - Used with :Explore **/pattern : (also see |netrw-starstar|) - :Nexplore............. go to next matching file *:Nexplore* +in your <.vimrc>. (also see: |netrw-o| |netrw-t|) + +There is only one tree listing buffer; using "v" on a displayed subdirectory +will split the screen, but the same buffer will be shown twice. + +Associated setting variable: |g:netrw_altv| |g:netrw_winsize| + +CHANGE LISTING STYLE *netrw-i* {{{2 + +The "i" map cycles between the thin, long, wide, and tree listing formats. + +The short listing format gives just the files' and directories' names. + +The long listing is either based on the "ls" command via ssh for remote +directories or displays the filename, file size (in bytes), and the time and +date of last modification for local directories. With the long listing +format, netrw is not able to recognize filenames which have trailing spaces. +Use the thin listing format for such files. + +The wide listing format uses two or more contiguous spaces to delineate +filenames; when using that format, netrw won't be able to recognize or use +filenames which have two or more contiguous spaces embedded in the name or any +trailing spaces. The thin listing format will, however, work with such files. +This listing format is the most compact. + +The tree listing format has a top directory followed by files and directories +preceded by a "|". One may open and close directories by pressing the +key while atop the directory name. There is only one tree listing buffer; +hence, using "v" or "o" on a subdirectory will only show the same buffer, +twice. + +Associated setting variables: |g:netrw_liststyle| |g:netrw_maxfilenamelen| + |g:netrw_timefmt| |g:netrw_list_cmd| + + +CHANGING TO A BOOKMARKED DIRECTORY *netrw-gb* {{{2 + +To change directory back to a bookmarked directory, use + + {cnt}gb + +Any count may be used to reference any of the bookmarks. See |netrw-mb| on +how to bookmark a directory and |netrw-qb| on how to list bookmarks. + + +CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* {{{2 + +Every time you change to a new directory (new for the current session), +netrw will save the directory in a recently-visited directory history +list (unless g:netrw_dirhistmax is zero; by default, it's ten). With the +"u" map, one can change to an earlier directory (predecessor). To do +the opposite, see |netrw-U|. + + +CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* {{{2 + +With the "U" map, one can change to a later directory (successor). +This map is the opposite of the "u" map. (see |netrw-u|) Use the +q map to list both the bookmarks and history. (see |netrw-qb|) + + +NETRW CLEAN *netrw-clean* *:NetrwClean* + +With :NetrwClean one may easily remove netrw from one's home directory; +more precisely, from the first directory on your |'runtimepath'|. + +With :NetrwClean!, netrw will remove netrw from all directories on your +|'runtimepath'|. + +With either form of the command, netrw will first ask for confirmation +that the removal is in fact what you want to do. If netrw doesn't have +permission to remove a file, it will issue an error message. + + *netrw-gx* +CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler* {{{2 + (also see |netrw_filehandler|) + +Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are +best seen with a special handler (ie. a tool provided with your computer). +Netrw allows one to invoke such special handlers by: > + + * when Exploring, hit the "x" key + * when editing, hit gx with the cursor atop the special filename +< (not available if the |g:netrw_nogx| variable exists) + +Netrw determines which special handler by the following method: + + * if |g:netrw_browsex_viewer| exists, then it will be used to attempt to + view files. Examples of useful settings (place into your <.vimrc>): > + + :let g:netrw_browsex_viewer= "kfmclient exec" +< or > + :let g:netrw_browsex_viewer= "gnome-open" +< + If g:netrw_browsex_viewer == '-', then netrwFileHandler() will be + invoked first (see |netrw_filehandler|). + + * for Windows 32 or 64, the url and FileProtocolHandler dlls are used. + * for Gnome (with gnome-open): gnome-open is used. + * for KDE (with kfmclient) : kfmclient is used. + * for Mac OS X : open is used. + * otherwise the netrwFileHandler plugin is used. + +The file's suffix is used by these various approaches to determine an +appropriate application to use to "handle" these files. Such things as +OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps, +*.eps) can be handled. + + *netrw_filehandler* + +The "x" map applies a function to a file, based on its extension. Of course, +the handler function must exist for it to be called! +> + Ex. mypgm.html x -> + NFH_html("scp://user@host/some/path/mypgm.html") +< +Users may write their own netrw File Handler functions to support more +suffixes with special handling. See for +examples on how to make file handler functions. As an example: > + + " NFH_suffix(filename) + fun! NFH_suffix(filename) + ..do something special with filename.. + endfun +< +These functions need to be defined in some file in your .vim/plugin +(vimfiles\plugin) directory. Vim's function names may not have punctuation +characters (except for the underscore) in them. To support suffices that +contain such characters, netrw will first convert the suffix using the +following table: > + + @ -> AT ! -> EXCLAMATION % -> PERCENT + : -> COLON = -> EQUAL ? -> QUESTION + , -> COMMA - -> MINUS ; -> SEMICOLON + $ -> DOLLAR + -> PLUS ~ -> TILDE +< +So, for example: > + + file.rcs,v -> NFH_rcsCOMMAv() +< +If more such translations are necessary, please send me email: > + NdrOchip at ScampbellPfamily.AbizM - NOSPAM +with a request. + +Associated setting variable: |g:netrw_browsex_viewer| + + *netrw-curdir* +DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D* *netrw-del* {{{2 + +If files have not been marked with |netrw-mf|: (local marked file list) + + Deleting/removing files and directories involves moving the cursor to the + file/directory to be deleted and pressing "D". Directories must be empty + first before they can be successfully removed. If the directory is a + softlink to a directory, then netrw will make two requests to remove the + directory before succeeding. Netrw will ask for confirmation before doing + the removal(s). You may select a range of lines with the "V" command + (visual selection), and then pressing "D". + +If files have been marked with |netrw-mf|: (local marked file list) + + Marked files (and empty directories) will be deleted; again, you'll be + asked to confirm the deletion before it actually takes place. + +The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are +used to control the attempts to remove files and directories. The +g:netrw_rm_cmd is used with files, and its default value is: + + g:netrw_rm_cmd: ssh HOSTNAME rm + +The g:netrw_rmdir_cmd variable is used to support the removal of directories. +Its default value is: + + g:netrw_rmdir_cmd: ssh HOSTNAME rmdir + +If removing a directory fails with g:netrw_rmdir_cmd, netrw then will attempt +to remove it again using the g:netrw_rmf_cmd variable. Its default value is: + + g:netrw_rmf_cmd: ssh HOSTNAME rm -f + +Associated setting variable: |g:netrw_local_rmdir| |g:netrw_rm_cmd| + |g:netrw_rmdir_cmd| |g:netrw_ssh_cmd| + + +*netrw-explore* *netrw-hexplore* *netrw-nexplore* *netrw-pexplore* +*netrw-rexplore* *netrw-sexplore* *netrw-texplore* *netrw-vexplore* +DIRECTORY EXPLORATION COMMANDS {{{2 + + :Explore[!] [dir]... Explore directory of current file *:Explore* + :Hexplore[!] [dir]... Horizontal Split & Explore *:Hexplore* + :Rexplore ... Return to Explorer *:Rexplore* + :Sexplore[!] [dir]... Split&Explore directory of current file *:Sexplore* + :Texplore [dir]... Tab & Explore *:Texplore* + :Vexplore[!] [dir]... Vertical Split & Explore *:Vexplore* + + Used with :Explore **/pattern : (also see |netrw-starstar|) + :Nexplore............. go to next matching file *:Nexplore* :Pexplore............. go to previous matching file *:Pexplore* :Explore will open the local-directory browser on the current file's @@ -1021,32 +1227,51 @@ DIRECTORY EXPLORING COMMANDS By default, these commands use the current file's directory. However, one may explicitly provide a directory (path) to use. - *netrw-starstar* -When Explore, Sexplore, Hexplore, or Vexplore are used with a **/filepat, -such as: -> - :Explore **/filename_pattern -< -netrw will attempt to find a file in the current directory or any subdirectory -which matches the filename pattern. Internally, it produces a list of files -which match the pattern and their paths; to that extent it resembles the Unix -operation: -> - find $(pwd) -name "$1" -exec "echo" "{}" ";" 2> /dev/null +The |g:netrw_winsize| variable also is used, if specified by the user, to +size Hexplore and Vexplore windows. + +:Rexplore This command is a little different from the others. When one + edits a file, for example by pressing when atop a file in + a netrw browser window, :Rexplore will return the display to + that of the last netrw browser window. Its a command version + of <2-leftmouse> (which is only available under gvim and + cooperative terms). + + +*netrw-star* *netrw-starpat* *netrw-starstar* *netrw-starstarpat* +EXPLORING WITH STARS AND PATTERNS + +When Explore, Sexplore, Hexplore, or Vexplore are used with one of the +following four styles, Explore generates a list of files which satisfy +the request. > + + */filepat files in current directory which satisfy filepat + **/filepat files in current directory or below which satisfy the + file pattern + *//pattern files in the current directory which contain the + pattern (vimgrep is used) + **//pattern files in the current directory or below which contain + the pattern (vimgrep is used) < -The directory display is updated to show the subdirectory containing a -matching file. One may then proceed to the next (or previous) matching files' -directories by using Nexplore or Pexplore, respectively. If your console or -gui produces recognizable shift-up or shift-down sequences, then you'll likely -find using shift-downarrow and shift-uparrow convenient. They're mapped by -netrw: +The cursor will be placed on the first file in the list. One may then +continue to go to subsequent files on that list via |:Nexplore| or to +preceding files on that list with |:Pexplore|. Explore will update the +directory and place the cursor appropriately. + +A plain > + :Explore +will clear the explore list. + +If your console or gui produces recognizable shift-up or shift-down sequences, +then you'll likely find using shift-downarrow and shift-uparrow convenient. +They're mapped by netrw: == Nexplore, and == Pexplore. As an example, consider > - :Explore **/*.c + :Explore */*.c :Nexplore :Nexplore :Pexplore @@ -1054,38 +1279,51 @@ As an example, consider The status line will show, on the right hand side of the status line, a message like "Match 3 of 20". - *netrw-starpat* -When Explore, Sexplore, Hexplore, or Vexplore are used with a */pattern, -such as: -> - :Explore */pattern -< -netrw will use |:vimgrep| to find files which contain the given pattern. -Like what happens with |netrw-starstar|, a list of files which contain -matches to the given pattern is generated. The cursor will then jump -to the first file with the given pattern; |:Nexplore|, |:Pexplore|, and -the shifted-down and -up arrows work with the list to move to the next -or previous files in that list. - - *netrw-starstarpat* -When Explore, Sexplore, Hexplore, or Vexplore are used with a **//pattern, -such as: -> - :Explore **//pattern -< -then Explore will use |:vimgrep| to find files like |netrw-starpat|; -however, Explore will also search subdirectories as well as the current -directory. +Associated setting variables: |g:netrw_keepdir| |g:netrw_browse_split| + |g:netrw_fastbrowse| |g:netrw_ftp_browse_reject| + |g:netrw_ftp_list_cmd| |g:netrw_ftp_sizelist_cmd| + |g:netrw_ftp_timelist_cmd| |g:netrw_list_cmd| + |g:netrw_liststyle| -REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* +DISPLAYING INFORMATION ABOUT FILE *netrw-qf* {{{2 -To refresh either a local or remote directory listing, press ctrl-l () or -hit the when atop the ./ directory entry in the listing. One may also -refresh a local directory by using ":e .". +With the cursor atop a filename, pressing "qf" will reveal the file's size +and last modification timestamp. Currently this capability is only available +for local files. -GOING UP *netrw--* +EDIT FILE OR DIRECTORY HIDING LIST *netrw-ctrl-h* *netrw-edithide* {{{2 + +The "" map brings up a requestor allowing the user to change the +file/directory hiding list. The hiding list consists of one or more patterns +delimited by commas. Files and/or directories satisfying these patterns will +either be hidden (ie. not shown) or be the only ones displayed (see +|netrw-a|). + +Associated setting variable: |g:netrw_hide| + + +EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* {{{2 + +When "Sorted by" is name, one may specify priority via the sorting sequence +(g:netrw_sort_sequence). The sorting sequence typically prioritizes the +name-listing by suffix, although any pattern will do. Patterns are delimited +by commas. The default sorting sequence is (all one line): +> + '[\/]$,\.[a-np-z]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$, + \.swp$,\.bak$,\~$' +< +The lone * is where all filenames not covered by one of the other patterns +will end up. One may change the sorting sequence by modifying the +g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by +using the "S" map. + +Related topics: |g:netrw-s| |g:netrw-S| +Associated setting variable: |g:netrw_sort_sequence| + + +GOING UP *netrw--* {{{2 To go up a directory, press "-" or press the when atop the ../ directory entry in the listing. @@ -1098,78 +1336,110 @@ user-provided url. By default netrw provides the command as: where the HOSTNAME becomes the [user@]hostname as requested by the attempt to read. Naturally, the user may override this command with whatever is -preferred. The NetList function which implements remote directory browsing +preferred. The NetList function which implements remote browsing expects that directories will be flagged by a trailing slash. -BROWSING *netrw-cr* +HIDING FILES OR DIRECTORIES *netrw-a* *netrw-hiding* {{{2 -Browsing is simple: move the cursor onto a file or directory of interest. -Hitting the (the return key) will select the file or directory. -Directories will themselves be listed, and files will be opened using the -protocol given in the original read request. +Netrw's browsing facility allows one to use the hiding list in one of three +ways: ignore it, hide files which match, and show only those files which +match. - CAVEAT: There are four forms of listing (see |netrw-i|). Netrw assumes - that two or more spaces delimit filenames and directory names for the long - and wide listing formats. Thus, if your filename or directory name has two - or more spaces embedded in it, or any trailing spaces, then you'll need to - use the "thin" format to select it. +If no files have been marked via |netrw-mf|: -The |g:netrw_browse_split| option, which is zero by default, may be used to -cause the opening of files to be done in a new window or tab. When the option -is one or two, the splitting will be taken horizontally or vertically, -respectively. When the option is set to three, a will cause the file -to appear in a new tab. +The "a" map allows the user to cycle through the three hiding modes. +The |g:netrw_list_hide| variable holds a comma delimited list of patterns +based on regular expressions (ex. ^.*\.obj$,^\.) which specify the hiding list. +(also see |netrw-ctrl-h|) To set the hiding list, use the map. As an +example, to hide files which begin with a ".", one may use the map to +set the hiding list to '^\..*' (or one may put let g:netrw_list_hide= '^\..*' +in one's <.vimrc>). One may then use the "a" key to show all files, hide +matching files, or to show only the matching files. -OBTAINING A FILE *netrw-O* + Example: \.[ch]$ + This hiding list command will hide/show all *.c and *.h files. -When browsing a remote directory, one may obtain a file under the cursor (ie. -get a copy on your local machine, but not edit it) by pressing the O key. -Only ftp and scp are supported for this operation (but since these two are -available for browsing, that shouldn't be a problem). The status bar -will then show, on its right hand side, a message like "Obtaining filename". -The statusline will be restored after the transfer is complete. + Example: \.c$,\.h$ + This hiding list command will also hide/show all *.c and *.h + files. -Netrw can also "obtain" a file using the local browser. Netrw's display -of a directory is not necessarily the same as Vim's "current directory", -unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>. One may select -a file using the local browser (by putting the cursor on it) and pressing -"O" will then "obtain" the file; ie. copy it to Vim's current directory. +Don't forget to use the "a" map to select the mode (normal/hiding/show) you +want! -Related topics: - * To see what the current directory is, use |:pwd| - * To make the currently browsed directory the current directory, see |netrw-c| - * To automatically make the currently browsed directory the current - directory, see |g:netrw_keepdir|. +If files have been marked using |netrw-mf|, then this command will: + if showing all files or non-hidden files: + modify the g:netrw_list_hide list by appending the marked files to it + and showing only non-hidden files. -CHANGE LISTING STYLE *netrw-i* + else if showing hidden files only: + modify the g:netrw_list_hide list by removing the marked files from it + and showing only non-hidden files. + endif -The "i" map cycles between the thin, long, wide, and tree listing formats. + *netrw-gh* +As a quick shortcut, one may press > + gh +to toggle between hiding files which begin with a period (dot) or not. -The short listing format gives just the files' and directories' names. +Associated setting variable: |g:netrw_list_hide| -The long listing is either based on the "ls" command via ssh for remote -directories or displays the filename, file size (in bytes), and the time and -date of last modification for local directories. With the long listing -format, netrw is not able to recognize filenames which have trailing spaces. -Use the thin listing format for such files. + *netrw-ctrl_h* +IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2 -The wide listing format uses two or more contiguous spaces to delineate -filenames; when using that format, netrw won't be able to recognize or use -filenames which have two or more contiguous spaces embedded in the name or any -trailing spaces. The thin listing format will, however, work with such files. -This listing format is the most compact. +Especially with the remote directory browser, constantly entering the password +is tedious. -The tree listing format has a top directory followed by files and directories -preceded by a "|". One may open and close directories by pressing the -key while atop the directory name. There is only one tree listing buffer; -hence, using "v" or "o" on a subdirectory will only show the same buffer, -twice. +For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength +tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip +for setting up no-password ssh and scp and discusses associated security +issues. It used to be available at http://hacks.oreilly.com/pub/h/66 , +but apparently that address is now being redirected to some "hackzine". +I'll attempt a summary: + 1. Generate a public/private key pair on the ssh server: + ssh-keygen -t rsa + (saving the file in ~/.ssh/id_rsa is ok) + 2. Just hit the when asked for passphrase (twice). + 3. This creates two files: + ~/.ssh/id_rsa + ~/.ssh/id_rsa.pub + 4. On the client: + cd + mkdir .ssh + chmod 0700 .ssh + scp {serverhostname}:.ssh/id_rsa.pub . + cat id_rsa.pub >> .ssh/authorized_keys2 + +For Windows, folks on the vim mailing list have mentioned that Pageant helps +with avoiding the constant need to enter the password. + +Kingston Fung wrote about another way to avoid constantly needing to enter +passwords: + + In order to avoid the need to type in the password for scp each time, you + provide a hack in the docs to set up a non password ssh account. I found a + better way to do that: I can use a regular ssh account which uses a + password to access the material without the need to key-in the password + each time. It's good for security and convenience. I tried ssh public key + authorization + ssh-agent, implementing this, and it works! Here are two + links with instructions: + + http://www.ibm.com/developerworks/library/l-keyc2/ + http://sial.org/howto/openssh/publickey-auth/ + + +LISTING BOOKMARKS AND HISTORY *netrw-qb* *netrw-listbookmark* {{{2 -MAKING A NEW DIRECTORY *netrw-d* +Pressing "qb" (query bookmarks) will list the bookmarked directories and +directory traversal history (query). + +(see |netrw-mb|, |netrw-gb|, |netrw-u|, and |netrw-U|) + + +MAKING A NEW DIRECTORY *netrw-d* {{{2 With the "d" map one may make a new directory either remotely (which depends on the global variable g:netrw_mkdir_cmd) or locally (which depends on the @@ -1178,345 +1448,587 @@ directory's name. A bare at that point will abort the making of the directory. Attempts to make a local directory that already exists (as either a file or a directory) will be detected, reported on, and ignored. +Associated setting variable: |g:netrw_local_mkdir| |g:netrw_mkdir_cmd| -DELETING FILES OR DIRECTORIES *netrw-delete* *netrw-D* *netrw-del* -Deleting/removing files and directories involves moving the cursor to the -file/directory to be deleted and pressing "D". Directories must be empty -first before they can be successfully removed. If the directory is a softlink -to a directory, then netrw will make two requests to remove the directory -before succeeding. Netrw will ask for confirmation before doing the -removal(s). You may select a range of lines with the "V" command (visual -selection), and then pressing "D". +MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2 -The g:netrw_rm_cmd, g:netrw_rmf_cmd, and g:netrw_rmdir_cmd variables are used -to control the attempts to remove files and directories. The g:netrw_rm_cmd -is used with files, and its default value is: +By default, |g:netrw_keepdir| is 1. This setting means that the current +directory will not track the browsing directory. - g:netrw_rm_cmd: ssh HOSTNAME rm +Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory to +track netrw's browsing directory. -The g:netrw_rmdir_cmd variable is used to support the removal of directories. -Its default value is: +However, given the default setting for g:netrw_keepdir of 1 where netrw +maintains its own separate notion of the current directory, in order to make +the two directories the same, use the "c" map (just type c). That map will +set Vim's notion of the current directory to netrw's current browsing +directory. - g:netrw_rmdir_cmd: ssh HOSTNAME rmdir +Associated setting variable: |g:netrw_keepdir| -If removing a directory fails with g:netrw_rmdir_cmd, netrw then will attempt -to remove it again using the g:netrw_rmf_cmd variable. Its default value is: - g:netrw_rmf_cmd: ssh HOSTNAME rm -f +MARKED FILES: ARBITRARY COMMAND *netrw-mx* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked-file list) +Upon activation of the "mx" map, netrw will query the user for some command to +be applied to all marked files. All %s in the command will be substituted +with the name of a marked file. If no %s are in the command, then the command +will be followed by a space and a marked filename. -RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* -Renaming/moving files and directories involves moving the cursor to the -file/directory to be moved (renamed) and pressing "R". You will then be -queried for where you want the file/directory to be moved. You may select a -range of lines with the "V" command (visual selection), and then pressing "R". +MARKED FILES: COMPRESSION AND DECOMPRESSION *netrw-mz* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) -The g:netrw_rename_cmd variable is used to implement renaming. By default its -value is: +If any marked files are compressed, then "mz" will decompress them. +If any marked files are decompressed, then "mz" will compress them +using the command specified by |g:netrw_compress|; by default, +that's "gzip". - ssh HOSTNAME mv +For decompression, netrw provides a |Dictionary| of suffices and their +associated decompressing utilities; see |g:netrw_decompress|. -One may rename a block of files and directories by selecting them with -the V (|linewise-visual|). +Associated setting variables: |g:netrw_compress| |g:netrw_decompress| +MARKED FILES: COPYING *netrw-mc* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (Uses the global marked file list) -HIDING FILES OR DIRECTORIES *netrw-a* *netrw-hiding* +Select a target directory with mt (|netrw-mt|). Then change directory, +select file(s) (see |netrw-mf|), and press "mc". -Netrw's browsing facility allows one to use the hiding list in one of three -ways: ignore it, hide files which match, and show only those files which -match. The "a" map allows the user to cycle about these three ways. +Associated setting variable: |g:netrw_localcopycmd| |g:netrw_ssh_cmd| -The g:netrw_list_hide variable holds a comma delimited list of patterns (ex. -\.obj) which specify the hiding list. (also see |netrw-ctrl-h|) To set the -hiding list, use the map. As an example, to hide files which begin with -a ".", one may use the map to set the hiding list to '^\..*' (or one may -put let g:netrw_list_hide= '^\..*' in one's <.vimrc>). One may then use the -"a" key to show all files, hide matching files, or to show only the matching -files. +MARKED FILES: DIFF *netrw-md* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) - Example: ^.*\.[ch] - This hiding list command will hide/show all *.c and *.h files. +Use |vimdiff| to visualize difference between selected files (two or +three may be selected for this). Uses the global marked file list. - Example: ^.*\.c,^.*\.h - This hiding list command will also hide/show all *.c and *.h - files. +MARKED FILES: EDITING *netrw-me* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) -Don't forget to use the "a" map to select the normal/hiding/show mode you want! +This command will place the marked files on the |arglist| and commence +editing them. One may return the to explorer window with |:Rexplore|. - *netrw-ctrl_h* -EDIT FILE OR DIRECTORY HIDING LIST *netrw-ctrl-h* *netrw-edithide* +MARKED FILES: HIDING AND UNHIDING BY SUFFIX *netrw-mh* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) -The "" map brings up a requestor allowing the user to change the -file/directory hiding list. The hiding list consists of one or more patterns -delimited by commas. Files and/or directories satisfying these patterns will -either be hidden (ie. not shown) or be the only ones displayed (see -|netrw-a|). +This command extracts the suffices of the marked files and toggles their +presence on the hiding list. Please note that marking the same suffix +this way multiple times will result in the suffix's presence being toggled +for each file (so an even quantity of marked files having the same suffix +is the same as not having bothered to select them at all). +Related topics: |netrw-a| |g:netrw_list_hide| -BROWSING WITH A HORIZONTALLY SPLIT WINDOW *netrw-o* *netrw-horiz* +MARKED FILES: MOVING *netrw-mm* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) -Normally one enters a file or directory using the . However, the "o" map -allows one to open a new window to hold the new directory listing or file. A -horizontal split is used. (for vertical splitting, see |netrw-v|) +Select a target directory with mT (|netrw-mt|). Then change directory, +select file(s) (see |netrw-mf|), and press "mm". -Normally, the o key splits the window horizontally with the new window and -cursor at the top. To change to splitting the window horizontally with the -new window and cursor at the bottom, have +Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd| - let g:netrw_alto = 1 +MARKED FILES: PRINTING *netrw-mp* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) -in your <.vimrc>. (also see |netrw-t| |netrw-v| |g:netrw_alto|) +Netrw will apply the |:hardcopy| command to marked files. What it does +is open each file in a one-line window, execute hardcopy, then close the +one-line window. -There is only one tree listing buffer; using "o" on a displayed subdirectory -will split the screen, but the same buffer will be shown twice. +MARKED FILES: SOURCING *netrw-ms* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the local marked file list) -BROWSING WITH A VERTICALLY SPLIT WINDOW *netrw-v* +Netrw will source the marked files (using vim's |:source| command) -Normally one enters a file or directory using the . However, the "v" map -allows one to open a new window to hold the new directory listing or file. A -vertical split is used. (for horizontal splitting, see |netrw-o|) -Normally, the v key splits the window vertically with the new window and -cursor at the left. To change to splitting the window vertically with the new -window and cursor at the right, have +MARKED FILES: TAGGING *netrw-mT* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + (uses the global marked file list) - let g:netrw_altv = 1 +The "mt" mapping will apply the command in |g:netrw_ctags| (by default, its +"ctags") to marked files. For remote browsing, in order to create a tags file +netrw will use ssh (see |g:netrw_ssh_cmd|), and so ssh must be available for +this to work on remote systems. For your local system, see |ctags| on how to +get a version. I myself use hdrtags, currently available at +http://mysite.verizon.net/astronaut/src/index.html , and have > + + let g:netrw_ctags= "hdrtag" +< +in my <.vimrc>. + +When a remote set of files are tagged, the resulting tags file is "obtained"; +ie. a copy is transferred to the local system's directory. The local tags +file is then modified so that one may use it through the network. The +modification is concerns the names of the files in the tags; each filename is +preceded by the netrw-compatible url used to obtain it. When one subsequently +uses one of the go to tag actions (|tags|), the url will be used by netrw to +edit the desired file and go to the tag. + +Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd| + + +MARKED FILES: SETTING THE TARGET DIRECTORY *netrw-mt* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + +Set the marked file copy/move-to target (see |netrw-mc| and |netrw-mm|): + + * if the cursor is atop a file name, then the netrw window's currently + displayed directory is used for the copy/move-to target. + + * also, if the cursor is in the banner, then the netrw window's currently + displayed directory is used for the copy/move-to target. -in your <.vimrc>. (also see: |netrw-o| |netrw-t| |g:netrw_altv|) + * however, if the cursor is atop a directory name, then that directory is + used for the copy/move-to target + +There is only one copy/move-to target per vim session; ie. the target is a +script variable (see |s:var|) and is shared between all netrw windows (in an +instance of vim). + +MARKED FILES: UNMARKING *netrw-mu* {{{2 + (See |netrw-mf| and |netrw-mr| for how to mark files) + +The "mu" mapping will unmark all currently marked files. + + +MARKING FILES *netrw-mf* {{{2 + (also see |netrw-mr|) + +One may mark files with the cursor atop a filename and then pressing "mf". +With gvim, one may also mark files with . The following netrw +maps make use of marked files: + + |netrw-a| Hide marked files/directories + |netrw-D| Delete marked files/directories + |netrw-mc| Copy marked files to target + |netrw-md| Apply vimdiff to marked files + |netrw-me| Edit marked files + |netrw-mm| Move marked files + |netrw-mp| Print marked files + |netrw-mt| Set target for |netrw-mm| and |netrw-mc| + |netrw-mT| Generate tags using marked files + |netrw-mx| Apply shell command to marked files + |netrw-mz| Compress/Decompress marked files + |netrw-O| Obtain marked files + |netrw-R| Rename marked files + +One may unmark files one at a time the same way one marks them; ie. place +the cursor atop a marked file and press "mf". This process also works +with using gvim. One may unmark all files by pressing +"mu" (see |netrw-mu|). + +*markfilelist* *global_markfilelist* *local_markfilelist* +All marked files are entered onto the global marked file list; there is only +one such list. In addition, every netrw buffer also has its own local marked +file list; since netrw buffers are associated with specific directories, this +means that each directory has its own local marked file list. The various +commands which operate on marked files use one or the other of the marked file +lists. + + +MARKING FILES BY REGULAR EXPRESSION *netrw-mr* {{{2 + (also see |netrw-mf|) + +One may also mark files by pressing "mr"; netrw will then issue a prompt, +"Enter regexp: ". You may then enter a regular expression such as \.c$ . +All files in the current directory will then be marked. Note that the +regular expressions are vim-style |regexp| ones, not shell ones. So +entering *.c probably isn't what you want! + + +NETRW BROWSER VARIABLES *netrw-browser-options* *netrw-browser-var* {{{2 + +(if you're interestd in the netrw file transfer settings, see |netrw-options|) + +The browser provides settings in the form of variables which +you may modify; by placing these settings in your <.vimrc>, you may customize +your browsing preferences. (see also: |netrw-settings|) +> + --- ----------- + Var Explanation + --- ----------- +< *g:netrw_alto* change from above splitting to below splitting + by setting this variable (see |netrw-o|) + default: =&sb (see |'sb'|) + + *g:netrw_altv* change from left splitting to right splitting + by setting this variable (see |netrw-v|) + default: =&spr (see |'spr'|) + + *g:netrw_browse_split* when browsing, will open the file by: + =0: re-using the same window + =1: horizontally splitting the window first + =2: vertically splitting the window first + =3: open file in new tab + =4: act like "P" (ie. open previous window) + + *g:netrw_browsex_viewer* specify user's preference for a viewer: > + "kfmclient exec" + "gnome-open" +< If > + "-" +< is used, then netrwFileHandler() will look for + a script/function to handle the given + extension. (see |netrw_filehandler|). + + *g:netrw_cd_escape* ="[]#*$%'\" ?`!&();<>\\" + This option is used to escape directory names + before changing directory to them. + + *g:netrw_compress* ="gzip" + Will compress marked files with this + command + + *g:netrw_decompress* = { ".gz" : "gunzip" , + ".bz2" : "bunzip2" , + ".zip" : "unzip" , + ".tar" : "tar -xf"} + A dictionary mapping suffices to + decompression programs. + + *g:netrw_fastbrowse* =0: slow speed browsing, never re-use + directory listings; always obtain + directory listings. + =1: medium speed browsing, re-use directory + listings only when remote browsing. + (default value) + =2: fast browsing, only obtains directory + listings when the directory hasn't been + seen before (or |netrw-ctrl-l| is used). + Fast browsing retains old directory listing + buffers so that they don't need to be + re-acquired. This feature is especially + important for remote browsing. However, if + a file is introduced or deleted into or from + such directories, the old directory buffer + becomes out-of-date. One may always refresh + such a directory listing with |netrw-ctrl-l|. + This option gives the choice of the trade-off + between accuracy and speed to the user. + + *g:netrw_fname_escape* =' ?&;%' + Used on filenames before remote reading/writing + + *g:netrw_ftp_browse_reject* ftp can produce a number of errors and warnings + that can show up as "directories" and "files" + in the listing. This pattern is used to + remove such embedded messages. By default its + value is: + '^total\s\+\d\+$\| + ^Trying\s\+\d\+.*$\| + ^KERBEROS_V\d rejected\| + ^Security extensions not\| + No such file\| + : connect to address [0-9a-fA-F:]* + : No route to host$' + + *g:netrw_ftp_list_cmd* options for passing along to ftp for directory + listing. Defaults: + unix or g:netrw_cygwin set: : "ls -lF" + otherwise "dir" + + + *g:netrw_ftp_sizelist_cmd* options for passing along to ftp for directory + listing, sorted by size of file. + Defaults: + unix or g:netrw_cygwin set: : "ls -slF" + otherwise "dir" + + *g:netrw_ftp_timelist_cmd* options for passing along to ftp for directory + listing, sorted by time of last modification. + Defaults: + unix or g:netrw_cygwin set: : "ls -tlF" + otherwise "dir" + + *g:netrw_glob_escape* ='[]*?`{~$' + These characters in directory names are + escaped before applying glob() + + *g:netrw_hide* if true, the hiding list is used + default: =0 + + *g:netrw_keepdir* =1 (default) keep current directory immune from + the browsing directory. + =0 keep the current directory the same as the + browsing directory. + The current browsing directory is contained in + b:netrw_curdir (also see |netrw-c|) -There is only one tree listing buffer; using "v" on a displayed subdirectory -will split the screen, but the same buffer will be shown twice. + *g:netrw_list_cmd* command for listing remote directories + default: (if ssh is executable) + "ssh HOSTNAME ls -FLa" + *g:netrw_liststyle* Set the default listing style: + = 0: thin listing (one file per line) + = 1: long listing (one file per line with time + stamp information and file size) + = 2: wide listing (multiple files in columns) + = 3: tree style listing + *g:netrw_list_hide* comma separated pattern list for hiding files + Patterns are regular expressions (see |regexp|) + Example: let g:netrw_list_hide= '.*\.swp$' + default: "" -BROWSING WITH A NEW TAB *netrw-t* + *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin + ="copy" Windows + Copies marked files (|netrw-mf|) to target + directory (|netrw-mt|, |netrw-mc|) -Normally one enters a file or directory using the . The "t" map -allows one to open a new window hold the new directory listing or file in a -new tab. (also see: |netrw-o| |netrw-v|) + *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin + ="move" Windows + Moves marked files (|netrw-mf|) to target + directory (|netrw-mt|, |netrw-mm|) + *g:netrw_local_mkdir* command for making a local directory + default: "mkdir" -PREVIEW WINDOW *netrw-p* *netrw-preview* + *g:netrw_local_rmdir* remove directory command (rmdir) + default: "rmdir" -One may use a preview window by using the "p" key when the cursor is atop the -desired filename to be previewed. + *g:netrw_maxfilenamelen* =32 by default, selected so as to make long + listings fit on 80 column displays. + If your screen is wider, and you have file + or directory names longer than 32 bytes, + you may set this option to keep listings + columnar. + *g:netrw_mkdir_cmd* command for making a remote directory + default: "ssh USEPORT HOSTNAME mkdir" -PREVIOUS WINDOW *netrw-P* *netrw-prvwin* + *g:netrw_retmap* if it exists and is set to one, then + <2-leftmouse> will be mapped for easy + return to the netrw browser window. + (example: click once to select and open + a file, double-click to return) + default: =0 -To edit a file or directory in the previously used window (see :he |CTRL-W_P|), -press a "P". If there's only one window, then the one window will be -horizontally split (above/below splitting is controlled by |g:netrw_alto|, -and its initial size is controlled by |g:netrw_winsize|). + *g:netrw_rm_cmd* command for removing files + default: "ssh USEPORT HOSTNAME rm" -If there's more than one window, the previous window will be re-used on -the selected file/directory. If the previous window's associated buffer -has been modified, and there's only one window with that buffer, then -the user will be asked if s/he wishes to save the buffer first (yes, -no, or cancel). + *g:netrw_rmdir_cmd* command for removing directories + default: "ssh USEPORT HOSTNAME rmdir" + *g:netrw_rmf_cmd* command for removing softlinks + default: "ssh USEPORT HOSTNAME rm -f" -SELECTING SORTING STYLE *netrw-s* *netrw-sort* + *g:netrw_sort_by* sort by "name", "time", or "size" + default: "name" -One may select the sorting style by name, time, or (file) size. The "s" map -allows one to circulate amongst the three choices; the directory listing will -automatically be refreshed to reflect the selected style. + *g:netrw_sort_direction* sorting direction: "normal" or "reverse" + default: "normal" + *g:netrw_sort_sequence* when sorting by name, first sort by the + comma-separated pattern sequence + default: '[\/]$,*,\.bak$,\.o$,\.h$, + \.info$,\.swp$,\.obj$' -EDITING THE SORTING SEQUENCE *netrw-S* *netrw-sortsequence* + *g:netrw_special_syntax* If true, then certain files will be shown + in special syntax in the browser: + + netrwBak : *.bak + netrwCompress: *.gz *.bz2 *.Z *.zip + netrwData : *.dat + netrwHdr : *.h + netrwLib : *.a *.so *.lib *.dll + netrwMakefile: [mM]akefile *.mak + netrwObj : *.o *.obj + netrwTags : tags ANmenu ANtags + netrwTilde : *~ + netrwTmp : tmp* *tmp + + These syntax highlighting groups are linked + to Folded or DiffChange by default + (see |hl-Folded| and |hl-DiffChange|), but + one may put lines like > + hi link netrwCompress Visual +< into one's <.vimrc> to use one's own + preferences. -When "Sorted by" is name, one may specify priority via the sorting sequence -(g:netrw_sort_sequence). The sorting sequence typically prioritizes the -name-listing by suffix, although any pattern will do. Patterns are delimited -by commas. The default sorting sequence is: -> - [\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$ -< -The lone * is where all filenames not covered by one of the other patterns -will end up. One may change the sorting sequence by modifying the -g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by -using the "S" map. + *g:netrw_ssh_cmd* One may specify an executable command + to use instead of ssh for remote actions + such as listing, file removal, etc. + default: ssh + *g:netrw_ssh_browse_reject* ssh can sometimes produce unwanted lines, + messages, banners, and whatnot that one doesn't + want masquerading as "directories" and "files". + Use this pattern to remove such embedded + messages. By default its value is: + '^total\s\+\d\+$' -REVERSING SORTING ORDER *netrw-r* *netrw-reverse* -One may toggle between normal and reverse sorting order by pressing the -"r" key. + *g:netrw_tmpfile_escape* =' &;' + escape() is applied to all temporary files + to escape these characters. + *g:netrw_timefmt* specify format string to vim's strftime(). + The default, "%c", is "the preferred date + and time representation for the current + locale" according to my manpage entry for + strftime(); however, not all are satisfied + with it. Some alternatives: + "%a %d %b %Y %T", + " %a %Y-%m-%d %I-%M-%S %p" + default: "%c" -CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* + *g:netrw_use_noswf* netrw normally avoids writing swapfiles + for browser buffers. However, under some + systems this apparently is causing nasty + ml_get errors to appear; if you're getting + ml_get errors, try putting + let g:netrw_use_noswf= 0 + in your .vimrc. -Every time you change to a new directory (new for the current session), -netrw will save the directory in a recently-visited directory history -list (unless g:netrw_dirhistmax is zero; by default, its ten). With the -"u" map, one can change to an earlier directory (predecessor). To do -the opposite, see |netrw-U|. + *g:netrw_winsize* specify initial size of new windows made with + "o" (see |netrw-o|), "v" (see |netrw-v|), + |:Hexplore| or |:Vexplore|. + default: "" + *g:NetrwTopLvlMenu* This variable specifies the top level + menu name; by default, it's "Netrw.". If + you wish to change this, do so in your + .vimrc. -CHANGING TO A SUCCESSOR DIRECTORY *netrw-U* *netrw-downdir* +NETRW BROWSING AND OPTION INCOMPATIBILITIES *netrw-incompatible* {{{2 -With the "U" map, one can change to a later directory (successor). -This map is the opposite of the "u" map. (see |netrw-u|) Use the -q map to list both the bookmarks and history. (see |netrw-q|) +Netrw has been designed to handle user options by saving them, setting the +options to something that's compatible with netrw's needs, and then restoring +them. However, the autochdir option: > + :set acd +is problematical. Autochdir sets the current directory to that containing the +file you edit; this apparently also applies to directories. In other words, +autochdir sets the current directory to that containing the "file" (even if +that "file" is itself a directory). - *netrw-gx* -CUSTOMIZING BROWSING WITH A USER FUNCTION *netrw-x* *netrw-handler* - (also see |netrw_filehandler|) +NETRW SETTINGS *netrw-settings* {{{2 -Certain files, such as html, gif, jpeg, (word/office) doc, etc, files, are -best seen with a special handler (ie. a tool provided with your computer). -Netrw allows one to invoke such special handlers by: > +With the NetrwSettings.vim plugin, > + :NetrwSettings +will bring up a window with the many variables that netrw uses for its +settings. You may change any of their values; when you save the file, the +settings therein will be used. One may also press "?" on any of the lines for +help on what each of the variables do. - * when Exploring, hit the "x" key - * when editing, hit gx with the cursor atop the special filename -< (not available if the |g:netrw_nogx| variable exists) +(also see: |netrw-browser-var| |netrw-protocol| |netrw-var| |netrw-variables|) -Netrw determines which special handler by the following method: - * if |g:netrw_browsex_viewer| exists, then it will be used to attempt to - view files. Examples of useful settings (place into your <.vimrc>): > +============================================================================== +OBTAINING A FILE *netrw-O* {{{2 - :let g:netrw_browsex_viewer= "kfmclient exec" -< or > - :let g:netrw_browsex_viewer= "gnome-open" -< - If g:netrw_browsex_viewer == '-', then netrwFileHandler() will be - invoked first (see |netrw_filehandler|). +If there are no marked files: - * for Windows 32 or 64, the url and FileProtocolHandler dlls are used. - * for Gnome (with gnome-open): gnome-open is used. - * for KDE (with kfmclient): kfmclient is used. - * otherwise the netrwFileHandler plugin is used. + When browsing a remote directory, one may obtain a file under the cursor + (ie. get a copy on your local machine, but not edit it) by pressing the O + key. -The file's suffix is used by these various approaches to determine an -appropriate application to use to "handle" these files. Such things as -OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps, -*.eps) can be handled. +If there are marked files: - *netrw_filehandler* + The marked files will be obtained (ie. a copy will be transferred to your + local machine, but not set up for editing). -The "x" map applies a function to a file, based on its extension. Of course, -the handler function must exist for it to be called! -> - Ex. mypgm.html x -> - NFH_html("scp://user@host/some/path/mypgm.html") -< -Users may write their own netrw File Handler functions to support more -suffixes with special handling. See for -examples on how to make file handler functions. As an example: > +Only ftp and scp are supported for this operation (but since these two are +available for browsing, that shouldn't be a problem). The status bar will +then show, on its right hand side, a message like "Obtaining filename". The +statusline will be restored after the transfer is complete. - " NFH_suffix(filename) - fun! NFH_suffix(filename) - ..do something special with filename.. - endfun -< -These functions need to be defined in some file in your .vim/plugin -(vimfiles\plugin) directory. Vim's function names may not have punctuation -characters (except for the underscore) in them. To support suffices that -contain such characters, netrw will first convert the suffix using the -following table: > +Netrw can also "obtain" a file using the local browser. Netrw's display +of a directory is not necessarily the same as Vim's "current directory", +unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>. One may select +a file using the local browser (by putting the cursor on it) and pressing +"O" will then "obtain" the file; ie. copy it to Vim's current directory. - @ -> AT ! -> EXCLAMATION % -> PERCENT - : -> COLON = -> EQUAL ? -> QUESTION - , -> COMMA - -> MINUS ; -> SEMICOLON - $ -> DOLLAR + -> PLUS ~ -> TILDE -< -So, for example: > +Related topics: + * To see what the current directory is, use |:pwd| + * To make the currently browsed directory the current directory, see |netrw-c| + * To automatically make the currently browsed directory the current + directory, see |g:netrw_keepdir|. - file.rcs,v -> NFH_rcsCOMMAv() -< -If more such translations are necessary, please send me email: > - NdrOchip at ScampbellPfamily.AbizM - NOSPAM -with a request. +PREVIEW WINDOW *netrw-p* *netrw-preview* {{{2 -MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* *netrw-curdir* +One may use a preview window by using the "p" key when the cursor is atop the +desired filename to be previewed. The display will then split to show both +the browser (where the cursor will remain) and the file (see |:pedit|). +By default, the split will be taken horizontally; one may use vertical +splitting if one has set |g:netrw_preview| first. -By default, |g:netrw_keepdir| is 1. This setting means that the current -directory will not track the browsing directory. -Setting g:netrw_keepdir to 0 tells netrw to make vim's current directory to -track netrw's browsing directory. +PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2 -However, given the default setting for g:netrw_keepdir of 1 where netrw -maintains its own separate notion of the current directory, in order to make -the two directories the same, use the "c" map (just type c). That map will -set Vim's notion of the current directory to netrw's current browsing -directory. +To edit a file or directory in the previously used window (see :he |CTRL-W_P|), +press a "P". If there's only one window, then the one window will be +horizontally split (above/below splitting is controlled by |g:netrw_alto|, +and its initial size is controlled by |g:netrw_winsize|). +If there's more than one window, the previous window will be re-used on +the selected file/directory. If the previous window's associated buffer +has been modified, and there's only one window with that buffer, then +the user will be asked if s/he wishes to save the buffer first (yes, +no, or cancel). -BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* -One may easily "bookmark" a directory by using > - {cnt}mb -< -Any count may be used. One may use viminfo's "!" option to retain bookmarks -between vim sessions. See |netrw-gb| for how to return to a bookmark and -|netrw-q| for how to list them. +REFRESHING THE LISTING *netrw-ctrl-l* *netrw-ctrl_l* {{{2 +To refresh either a local or remote directory listing, press ctrl-l () or +hit the when atop the ./ directory entry in the listing. One may also +refresh a local directory by using ":e .". -CHANGING TO A BOOKMARKED DIRECTORY *netrw-gb* -To change directory back to a bookmarked directory, use +RENAMING FILES OR DIRECTORIES *netrw-move* *netrw-rename* *netrw-R* {{{2 - {cnt}gb +If there are no marked files: (see |netrw-mf|) -Any count may be used to reference any of the bookmarks. See |netrw-mb| on -how to bookmark a directory and |netrw-q| on how to list bookmarks. + Renaming/moving files and directories involves moving the cursor to the + file/directory to be moved (renamed) and pressing "R". You will then be + queried for where you want the file/directory to be moved. You may select + a range of lines with the "V" command (visual selection), and then + pressing "R". +If there are marked files: (see |netrw-mf|) -LISTING BOOKMARKS AND HISTORY *netrw-q* *netrw-listbookmark* + Marked files will be renamed (moved). You will be queried as above in + order to specify where you want the file/directory to be moved. -Pressing "q" will list the bookmarked directories and directory traversal -history (query). (see |netrw-mb|, |netrw-gb|, |netrw-u|, and |netrw-U|) +The g:netrw_rename_cmd variable is used to implement renaming. By default its +value is: + ssh HOSTNAME mv -IMPROVING DIRECTORY BROWSING *netrw-listhack* +One may rename a block of files and directories by selecting them with +the V (|linewise-visual|). -Especially with the remote directory browser, constantly entering the password -is tedious. -For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength -tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip -for setting up no-password ssh and scp and discusses associated security -issues. It used to be available at http://hacks.oreilly.com/pub/h/66 , -but apparently that address is now being redirected to some "hackzine". -I'll attempt a summary: +REVERSING SORTING ORDER *netrw-r* *netrw-reverse* {{{2 - 1. Generate a public/private key pair on the ssh server: - ssh-keygen -t rsa - (saving the file in ~/.ssh/id_rsa is ok) - 2. Just hit the when asked for passphrase (twice). - 3. This creates two files: - ~/.ssh/id_rsa - ~/.ssh/id_rsa.pub - 4. On the client: - cd - mkdir .ssh - chmod 0700 .ssh - scp {serverhostname}:.ssh/id_rsa.pub . - cat id_rsa.pub >> .ssh/authorized_keys2 +One may toggle between normal and reverse sorting order by pressing the +"r" key. -For Windows, folks on the vim mailing list have mentioned that Pageant helps -with avoiding the constant need to enter the password. +Related topics: |g:netrw-s| +Associated setting variable: |g:netrw_sort_direction| -NETRW SETTINGS *netrw-settings* +SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2 -With the NetrwSettings.vim plugin, > - :NetrwSettings -will bring up a window with the many variables that netrw uses for its -settings. You may change any of their values; when you save the file, the -settings therein will be used. One may also press "?" on any of the lines for -help on what each of the variables do. +One may select the sorting style by name, time, or (file) size. The "s" map +allows one to circulate amongst the three choices; the directory listing will +automatically be refreshed to reflect the selected style. -(also see: |netrw-browse-var| |netrw-protocol| |netrw-var| |netrw-variables|) +Related topics: |g:netrw-r| |g:netrw-S| +Associated setting variables: |g:netrw_sort_by| |g:netrw_sort_sequence| -============================================================================== -10. Problems and Fixes *netrw-problems* +10. Problems and Fixes *netrw-problems* {{{1 (This section is likely to grow as I get feedback) (also see |netrw-debug|) @@ -1568,9 +2080,11 @@ help on what each of the variables do. *netrw-p4* P4. I would like long listings to be the default. - let g:netrw_liststyle= 1 + Put the following statement into your |.vimrc|: > - Check out |netrw-browse-var| for more customizations that + let g:netrw_liststyle= 1 +< + Check out |netrw-browser-var| for more customizations that you can set. *netrw-p5* @@ -1579,15 +2093,18 @@ help on what each of the variables do. Does your system's strftime() accept the "%c" to yield dates such as "Sun Apr 27 11:49:23 1997"? If not, do a "man strftime" and find out what option should be used. Then put it into - your <.vimrc>: - let g:netrw_timefmt= "%X" (where X is the option) + your |.vimrc|: > + let g:netrw_timefmt= "%X" (where X is the option) +< *netrw-p6* P6. I want my current directory to track my browsing. How do I do that? + Put the following line in your |.vimrc|: +> let g:netrw_keepdir= 0 - +< *netrw-p7* P7. I use Chinese (or other non-ascii) characters in my filenames, and netrw (Explore, Sexplore, Hexplore, etc) doesn't display them! @@ -1652,9 +2169,9 @@ help on what each of the variables do. {asterisk}.{asterisk} (all files), or whatever types you want (cec: change {asterisk} to * ; I had to write it that way because otherwise the helptags - system thinks its a tag) - - Make sure its at the top of the listbox (click it, - then click "Up" if its not) + system thinks it's a tag) + - Make sure it's at the top of the listbox (click it, + then click "Up" if it's not) If using the Norton Commander style, you just have to hit to edit a file in a local copy of gvim. @@ -1663,16 +2180,24 @@ help on what each of the variables do. http://www.tartarus.org/~simon/puttydoc/Chapter8.html#pubkey-gettingready 8.3 Getting ready for public key authentication < - How to use private key with 'pscp': > + How to use a private key with 'pscp': > + http://www.tartarus.org/~simon/puttydoc/Chapter5.html 5.2.4 Using public key authentication with PSCP < + (Ben Schmidt) I find the ssh included with cwRsync is + brilliant, and install cwRsync or cwRsyncServer on most + Windows systems I come across these days. I guess COPSSH, + packed by the same person, is probably even better for use as + just ssh on Windows, and probably includes sftp, etc. which I + suspect the cwRsync doesn't, though it might + (cec) To make proper use of these suggestions above, you will need to modify the following user-settable variables in your .vimrc: - |g:netrw_ssh_cmd| |g:netrw_list_cmd| |g:netrw_mkdir_cmd| - |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd| + |g:netrw_ssh_cmd| |g:netrw_list_cmd| |g:netrw_mkdir_cmd| + |g:netrw_rm_cmd| |g:netrw_rmdir_cmd| |g:netrw_rmf_cmd| The first one (|g:netrw_ssh_cmd|) is the most important; most of the others will use the string in g:netrw_ssh_cmd by @@ -1688,52 +2213,77 @@ help on what each of the variables do. in your <.vimrc>: > let g:netrw_use_noswf= 0 < + *netrw-p10* + P10. I'm being pestered with "[something] is a directory" and + "Press ENTER or type command to continue" prompts... + + The "[something] is a directory" prompt is issued by Vim, + not by netrw, and there appears to be no way to work around + it. Coupled with the default cmdheight of 1, this message + causes the "Press ENTER..." prompt. So: read |hit-enter|; + I also suggest that you set your |'cmdheight'| to 2 (or more) in + your <.vimrc> file. + + *netrw-p11* + P11. I want to have two windows; a thin one on the left and my editing + window on the right. How can I do this? + + * Put the following line in your <.vimrc>: + let g:netrw_altv = 1 + * Edit the current directory: :e . + * Select some file, press v + * Resize the windows as you wish (see |ctrl-w_<| and + |ctrl-w_>|). If you're using gvim, you can drag + the separating bar with your mouse. + * When you want a new file, use ctrl-w h to go back to the + netrw browser, select a file, then press P (see |ctrl-w_h| + and |netrw-P|). If you're using gvim, you can press + in the browser window and then press the + to select the file. ============================================================================== -11. Debugging *netrw-debug* +11. Debugging Netrw Itself *netrw-debug* {{{1 The script is typically available as: > - /usr/local/share/vim/vim6x/plugin/netrw.vim + /usr/local/share/vim/vim6x/plugin/netrwPlugin.vim + /usr/local/share/vim/vim6x/autoload/netrw.vim < -or- > - /usr/local/share/vim/vim7x/plugin/netrw.vim + /usr/local/share/vim/vim7x/plugin/netrwPlugin.vim + /usr/local/share/vim/vim7x/autoload/netrw.vim < which is loaded automatically at startup (assuming :set nocp). 1. Get the script, available as: - http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_scripts - as "Decho, a vimL debugging aid" + http://mysite.verizon.net/astronaut/vim/index.html#DECHO or http://vim.sourceforge.net/scripts/script.php?script_id=120 - and put it into your local plugin directory. - - 2. itself needs the script, so you'll need - to put it into your .vim/plugin, too. You may obtain it from: + It now comes as a "vimball"; if you're using vim 7.0 or earlier, + you'll need to update vimball, too. See + http://mysite.verizon.net/astronaut/vim/index.html#VIMBALL - http://mysite.verizon.net/astronaut/vim/index.html#VimFuncs - as "DrC's Utilities" - - 3. Edit the file by typing: + 2. Edit the file by typing: > vim netrw.vim :DechoOn :wq - - To restore to normal non-debugging behavior, edit - by typing +< + To restore to normal non-debugging behavior, re-edit + and type > vim netrw.vim :DechoOff :wq - +< This command, provided by , will comment out all Decho-debugging statements (Dfunc(), Dret(), Decho(), Dredir()). - 4. Then bring up vim and attempt a transfer or do browsing. A set of - messages should appear concerning the steps that took - in attempting to read/write your file over the network. + 3. Then bring up vim and attempt to evoke the problem by doing a + transfer or doing some browsing. A set of messages should appear + concerning the steps that took in attempting to + read/write your file over the network in a separate tab. To save the file, use > :wincmd j @@ -1745,15 +2295,173 @@ which is loaded automatically at startup (assuming :set nocp). ============================================================================== 12. History *netrw-history* {{{1 + v123: Feb 27, 2008 * Marked files now keeps a "global" marked file + list. The global marked file list is used to + support tag processing and vimdiff'ing + (|netrw-md| |netrw-mt|) + * Been insuring that mm and mc works with various + combinations of local and remote directories + * (Stefan Bittner) http://.../ should always have + filetype "html" -- fixed. + * (Stefan Bittner) a "?" in a http://.../ request + wasn't being handled correctly. Fixed by + removing ? from default |g:netrw_tmpfile_escape|. + * (Nico Weber) % codes in http://.../ requests + weren't being handled correctly. Fixed by + including % in default |g:netrw_fname_escape|. + * (Stefan Bittner) attempts to update Buffers.Refresh + were failing because locale use changed the menu + names. I implemented a workaround. + v122: Feb 12, 2008 * bugfix - first sorting sequence match now has + priority + Feb 14, 2008 * bugfix - sorting sequence was effectively ignoring + sequencing priority of anything following '*' + * toggling a marked file was showing incorrect list + (list was correct, but displayed matches weren't) + * |g:netrw_special_syntax| implemented + v121: Feb 11, 2008 * Bram M reported that :e file ... :e . would not + retain the alternate file. Fixed -- I hope! + * bugfix -- apparently v120 broke an explicit + :Explore dirname + v120: Jan 21, 2008 * |netrw-mt| changed to allow for target selection + based on whether or not word under cursor is a + directory or file, or if cursor is in banner + area. + * |netrw-mh| included (hiding by marked-file suffix) + * functions moved about a bit (improved + categorization) + * executable files now displayed with trailing (*) + * symbolically linked files now displayed with + trailing (@) + * Somewhen, s:NetrwMarkFileMove() got damaged. Its + now restored (missing an endif, for example). + * |netrw-mu| implemented (unmarking marked files) + * many bugs have been removed from the marked file + system (tnx to Mark S. for feedback) + * |netrw-ms| implemented (sourcing marked files) + * fixed use of P with tree listing style + * multiple tree listing now supported + * ./ suppressed + * changed q -> qb (query bookmarks) + * implemented |netrw-qf| + * Explore now has four special list-generation + modes: */filepat **/filepat + *//pattern **//pattern + * gh (|netrw-gh|) is a shortcut for toggling the + hiding of files and directories beginning with a + dot + v119: Jan 10, 2008 * When g:netrw_keepdir is false, + NetrwOptionsRestore() had a problem + (Bill McCarthy) + Jan 11, 2008 * Netrw now shows symbolic links with a trailing + "@" and special highlighting. + Jan 15, 2008 * Changed g:netrw_noretmap -> |g:netrw_retmap|. + Changed: disabled by default at Bram's + preference. + v118: Jan 02, 2008 * Fixed a problem with Windows; + :Explore c:/path/ would not work, + but :Explore c:/path would. + * Fixed a bug in s:NetrwOptionRestore() - lcd's + argument wasn't being properly escaped so it + wouldn't handle spaces in directory names. + (Gary Johnson) + v117: Jan 02, 2008 * Fixed a problem with P; had to include + a b:netrw_curdir bypass (Bram Moolenaar) + v116: Nov 27, 2007 * netrw#LocalBrowseCheck() has &ft=="netrw" + check to prevent doing a directory listing + (was getting unexpected directory refreshes + in the middle of some function calls) + * NetrwOptionRestore moved after e! filename + in order to retain user options for editing + in s:NetrwBrowseChgDir() + Dec 12, 2007 * Bug fix -- netrw does a better job of retaining + user options when editing files under the aegis + of the browser + v115: Oct 04, 2007 * Erik Remmelzwaal pointed out that the use of + shellslash in s:GetTempfile() was incorrect + Oct 11, 2007 * Tracked down and eliminated a bug with editing + remote *.tar.gz and *.tar.bz2 files + Oct 11, 2007 * g:netrw_localmovecmd wasn't being initialized + properly, and g:netrw_localcopycmd was being + overwritten. + Oct 12, 2007 * Placed all :Rexplore and <2-leftmouse> setup + in a new support function (s:SetRexDir()). + Oct 15, 2007 * new: g:netrw_browse_split == 4; means + based selection will use previous window + Oct 20, 2007 * also checks on |'shellxquote'| to set g:netrw_shq + Oct 24, 2007 * Explore handles path/**/filename + Oct 27, 2007 * sourcing remote files often didn't work with ftp, + turns out that b:netrw_method was undefined, so + s:SaveBufVars and s:RestoreBufVars() fixed it. + v114: Sep 28, 2007 * mT, the map that invokes tags, has been improved + to support use of remote tags files. + Oct 02, 2007 * changed Netrw menu to use more submenus + v113: Sep 07, 2007 * worked out why the cursor position wasn't being + saved and restored as intended after doing such + things as deleting and renaming files. + Sep 11, 2007 * Fixed bug which effectively disabled and + maps + Sep 18, 2007 * there used to be one NetrwOptionRestore() call at + the end of the s:NetrwBrowseChgDir() function; + they're now at the end of every if..elseif..else + block. The edit-a-file one is not quite at the end + of its block; instead, its just before the edit. + Restores user options, then this new placement + allows ftplugins, autocmds, etc to change settings + (ex. ftplugin/cpp.vim sets cindent). + Sep 19, 2007 * changed all strlen() calls to use s:Strlen(), a + function which handles utf-8 wide characters + correctly. + Sep 20, 2007 * (Nico Weber) the "x" command has been extended + to Mac's OS/X (macunix); it now uses open to + handle |netrw-x| browsing with special files. + Sep 22, 2007 * Added |g:netrw_noretmap| to netrw at Tony M's + request. + * Included path to NetrwRemoteRmFile() + v112: Aug 18, 2007 * added mx (|netrw-mx|) for executing arbitrary + commands on marked files + Aug 22, 2007 * more option save/restore work for + s:NetrwBrowseChgDir(); s:NetrwOptionSave() + and s:NetrwOptionRestore() now take a parameter + specifying the type of variables to be used for + saving and restoring (either "w:" or "s:") + Sep 04, 2007 * added the :NetrwClean[!] command + v111: Jul 25, 2007 * using Windows but not using Cygwin, netrw does a + "file bufname" where the bufname uses /s + instead of \s; Vim "fixes" it by changing the + bufname to use \s anyway. This meant that + NetrwGetBuffer() didn't find the appropriately + named buffer, and so would generate a new + buffer listing; hence the cursor would appear + to have been moved when doing a preview. + * added <2-leftmouse> map to return to netrw's + browser display + Aug 16, 2007 * added the mark-file system, including + maps for mf mp mt mz and mu. Modifications + made to maps for a D O and R to support + marked files. + v110: May 10, 2007 * added [ and ] maps to NetrwTreeListing + May 25, 2007 * |g:netrw_preview| included + May 29, 2007 * modifed netrw#NetBrowseX to consistently use + |g:netrw_shq| instead of hardcoded quotes, + and modified the snippet that sets up redir + so Windows machines use "nul" instead of + "/dev/null". + Jun 01, 2007 * fixed bug -- NetGetBuffer() wasn't always + recognizing a buffer name match when it should, + thus resulting in [Scratch] buffers. + Jun 04, 2007 * Gary Johnson found a bugfix for the "c" mapping + when the directory is to be made current but + the name contains spaces. v109: Mar 26, 2007 * if a directory name includes a "$" character, Explore() will use expand() in an attempt to decipher the name. May 07, 2007 * g:netrw_use_errorwindow now allows one to - have error messages go to a reliable window + have error messages go to a reliable window or to use a less reliable but recallable echoerr method May 07, 2007 * g:netrw_scpport and g:netrw_sshport support - use of -P and -p, respectively, to set port + use of -P and -p, respectively, to set port for scp/ssh. v108: Jan 03, 2007 * included preview map (|netrw-p|), supporting remote browsing @@ -1879,257 +2587,319 @@ which is loaded automatically at startup (assuming :set nocp). v97: May 01, 2006 * exists("&acd") now used to determine if the 'acd' option exists * "obtain" now works again under Windows - v96: * bugfix - the |'acd'| option is not always defined but is - now bypassed only when it is - v95: * bugfix - Hiding mode worked correctly (don't show any file - matching any of the g:netrw_hide patterns), but - showing mode was showing only those files that didn't - match any of the g:netrw_hide patterns. Instead, it now - shows all files that match any of the g:netrw_hide patterns - (the difference between a logical and and logical or). - v94: * bugfix - a Decho() had a missing quote; only affects things - when debugging was enabled. - v93: * bugfix - removed FocusGained event from causing a slow-browser - refresh for Windows - v92: * :Explore **//pattern implemented (**/filepattern already taken) - v91: * :Explore */pattern implemented - * |'acd'| option bypassed - v90: * mark ', as suggested by Yegappan Lakshmanan, used to help - guarantee entry into the jump list when appropriate. - * and are no longer defined until a - :Explore **/pattern is used (if the user already has a map - for them). They will be defined for new browser windows - from that point forward. - v89: * A , , :Nexplore, or a :Pexplore without having - first done an :Explore **/pattern (see |netrw-starstar|) caused - a lot of unhelpful error messages to appear - v88: * moved DrChip.Netrw menu to Netrw. Now has priority 80 by - default. g:NetrwTopLvlMenu == "Netrw" and can be changed - by the user to suit. The priority is g:NetrwMenuPriority. - * Changed filetype for browser displays from netrwlist to netrw. - v87: * bug fix -- menus were partially disappearing - v85: * bug fix -- missing an endif - * bug fix -- handles spaces in names and directories when using - ftp-based browsing - v83: * disabled stop-acd handling; the change in directory handling - may allow acd to be used again. Awaiting feedback. - * D was refusing to delete remote files/directories in wide - listing mode. - v81: * FocusGained also used to refresh/wipe local browser directory - buffers - * (bugfix) netrw was leaving [Scratch] buffers behind when the - user had the "hidden" option set. The 'hidden' option is - now bypassed. - v80: * ShellCmdPost event used in conjunction with g:netrw_fastbrowse - to refresh/wipe local browser directory buffers. - v79: * directories are now displayed with nowrap - * (bugfix) if the column width was smaller than the largest - file's name, then netrw would hang when using wide-listing - mode - fixed - * g:netrw_fastbrowse introduced - v78: * progress has been made on allowing spaces inside directory - names for remote work (reading, writing, browsing). (scp) - v77: * Mikolaj Machowski fixed a bug in a substitute command - * g:netrw_browsex_viewer implemented - * Mikolaj Machowski pointed out that gnome-open is often - executable under KDE systems, although it is effectively - not functional. NetBrowseX now looks for "kicker" as - a running process to determine if KDE is actually the - really running. - * Explorer's O functionality was inadvertently left out. - Netrw now does the same thing, but with the "P" key. - * added g:netrw_browse_split option - * fixed a bug where the directory contained a "." but - the file didn't (was treating the dirname from "." - onwards as a suffix) - v76: * "directory is missing" error message now restores echo - highlighting - v75: * file://... now conforms to RFC2396 (thanks to S. Zacchiroli) - * if the binary option is set, then NetWrite() will only write - the whole file (line numbers don't make sense with this). - Supports writing of tar and zip files. - v74: * bugfix (vim, then :Explore) now works - * ctrl-L keeps cursor at same screen location (both local and - remote browsing) - * netrw now can read remote zip and tar files - * Obtain now uses WinXP ftp+.netrc successfully - v73: * bugfix -- scp://host/path/file was getting named incorrectly - * netrw detects use of earlier-than-7.0 version of vim and issues - a pertinent error message. - * netrwSettings.vim is now uses autoloading. Only - is needed as a pure plugin - (ie. always loaded). - v72: * bugfix -- formerly, one could prevent the loading of netrw - by "let g:loaded_netrw=1"; when autoloading became supported, - this feature was lost. It is now restored. - v71: * bugfix -- made some "set nomodifiable"s into setlocal variants - (allows :e somenewfile to be modifiable as usual) - * NetrwSettings calls a netrw function, thereby assuring that - netrw has loaded. However, if netrw does not load for whatever - reason, then NetrwSettings will now issue a warning message. - * For what reason I don't recall, when wget and fetch are both - not present, and an attempt to read a http://... url is made, - netrw exited. It now only returns. - * When ch=1, on the second and subsequent uses of browsing Netrw - would issue a blank line to clear the echo'd messages. This - caused an annoying "Hit-Enter" prompt; now a blank line message - is echo'd only if &ch>1. - v70: * when using |netrw-O|, the "Obtaining filename" message is now - shown using |hl-User9|. If User9 has not been defined, netrw - will define it. - v69: * Bugfix: win95/98 machines were experiencing a - "E121: Undefined variable: g:netrw_win95ftp" message - v68: * double-click-leftmouse selects word under mouse - v67: * Passwords which contain blanks will now be surrounded by - double-quotes automatically (Yongwei) - v66: * Netrw now seems to work with a few more Windows situations - * O now obtains a file: remote browsing file -> local copy, - locally browsing file -> current directory (see :pwd) - * i now cycles between thin, long, and wide listing styles - * NB and Nb are maps that are always available; corresponding - B and b maps are only available when not using wide listing - in order to allow them to be used for motions - v65: * Browser functions now use NetOptionSave/Restore; in particular, - netrw now works around the report setting - v64: * Bugfix - browsing a "/" directory (Unix) yielded buffers - named "[Scratch]" instead of "/" - * Bugfix - remote browsing with ftp was omitting the ./ and ../ - v63: * netrw now takes advantage of autoload (and requires 7.0) - * Bugfix - using r (to reverse sort) working again - v62: * Bugfix - spaces allowed again in directory names with - g:netrw_keepdir=0. In fact, I've tested netrw (again) - with most ANSI punctuation marks for directory names. - * Bugfix - NetrwSettings gave errors when g:netrw_silent - had not be set. - v61: * document upgrade -- netrw variable-based settings all should - have tags. Supports NetrwSettings command. - * several important variables are window-oriented. Netrw has - to transfer these across a window split. See s:BufWinVars() - and s:UseBufWinVars(). - v60: * when using the i map to switch between long and short listings, - netrw will now keep cursor on same line - * "Match # of #" now uses status line - * :Explore **/*.c will now work from a non-netrw-browser window - * :Explore **/patterns can now be run in separate browser windows - * active banner (hit will cause various things to happen) - v59: * bugfix -- another keepalt work-around installed (for vim6.3) - * "Match # of #" for Explore **/pattern matches - v58: * Explore and relatives can now handle **/somefilepattern (v7) - * Nexplore and Pexplore introduced (v7). shift-down and shift-up - cursor keys will invoke Nexplore and Pexplore, respectively. - * bug fixed with o and v - * autochdir only worked around for vim when it has been - compiled with either |+netbeans_intg| or |+sun_workshop| - * Under Windows, all directories and files were being preceded - with a "/" when local browsing. Fixed. - * When: syntax highlighting is off, laststatus=2, and remote - browsing is used, sometimes the laststatus highlighting - bleeds into the entire display. Work around - do an extra - redraw in that case. - * Bugfix: when g:netrw_keepdir=0, due to re-use of buffers, - netrw didn't change the directory when it should've - * Bugfix: D and R commands work again - v57: * Explore and relatives can now handle RO files - * reverse sort restored with vim7's sort command - * g:netrw_keepdir now being used to keep the current directory - unchanged as intended (sense change) - * vim 6.3 still supported - v56: * LocalBrowse now saves autochdir setting, unsets it, and - restores it before returning. - * using vim's rename() instead of system + local_rename variable - * avoids changing directory when g:netrw_keepdir is false - v55: * -bar used with :Explore :Sexplore etc to allow multiple - commands to be separated by |s - * browser listings now use the "nowrap" option - * browser: some unuseful error messages now suppressed - v54: * For backwards compatibility, Explore and Sexplore have been - implemented. In addition, Hexplore and Vexplore commands - are available, too. - * used instead of in the transparency - support (BufReadCmd, FileReadCmd, FileWriteCmd) - * ***netrw*** prepended to various error messages netrw may emit - * g:netrw_port used instead of b:netrw_port for scp - * any leading [:#] is removed from port numbers - v53: * backslashes as well as slashes placed in various patterns - (ex. g:netrw_sort_sequence) to better support Windows - v52: * nonumber'ing now set for browsing buffers - * when the hiding list hid all files, error messages ensued. Fixed - * when browsing, swf is set, but directory is not set, when netrw - was attempting to restore options, vim wanted to save a swapfile - to a local directory using an url-style path. Fixed - v51: * cygwin detection now automated (using windows and &shell is bash) - * customizable browser "file" rejection patterns - * directory history - * :[range]w url now supported (ie. netrw has a FileWriteCmd event) - * error messages have a "Press to continue" to allow them - to be seen - * directory browser displays no longer bother the swapfile - * u/U commands to go up and down the history stack - * history stack may be saved with viminfo with its "!" option - * bugfixes associated with unwanted [No Files] entries - v50: * directories now displayed using buftype=nofile; should keep the - directory names as-is - * attempts to remove empty "[No File]" buffers leftover - from :file ..name.. commands - * bugfix: a "caps-lock" editing difficulty left in v49 was fixed - * syntax highlighting for "Showing:" the hiding list included - * bookmarks can now be retained if "!" is in the viminfo option - v49: * will use ftp for http://.../ browsing v48: - * One may use ftp to do remote host file browsing - * (windows and !cygwin) remote browsing with ftp can now use - the "dir" command internally to provide listings - * g:netrw_keepdir now allows one to keep the initial current - directory as the current directory (normally the local file - browser makes the currently viewed directory the current - directory) - * g:netrw_alto and g:netrw_altv now support alternate placement - of windows started with o or v - * Nread ? and Nwrite ? now uses echomsg (instead of echo) so - :messages can repeat showing the help - * bugfix: avoids problems with partial matches of directory names - to prior buffers with longer names - * one can suppress error messages with g:netrw_quiet ctrl-h used - * instead of h for editing hiding list one may edit the - * sorting sequence with the S map now allows confirmation of - * deletion with [y(es) n(o) a(ll) q(uit)] the "x" map now handles - * special file viewing with: - (windows) rundll32 url.dll (gnome) gnome-open (kde) - kfmclient If none of these are on the executable path, then - netrwFileHandlers.vim is used. - * directory bookmarking during both local and remote browsing - implemented - * one may view all, use the hiding list to suppress, or use the - hiding list to show-only remote and local file/directory - listings - * improved unusual file and directory name handling preview - * window support - v47: * now handles local directory browsing. - v46: * now handles remote directory browsing - * g:netrw_silent (if 1) will cause all transfers to be silent - v45: * made the [user@]hostname:path form a bit more restrictive to - better handle errors in using protocols (e.g. scp:usr@host:file - was being recognized as an rcp request) v44: * changed from - "rsync -a" to just "rsync" - * somehow an editing error messed up the test to recognize - use of the fetch method for NetRead. - * more debugging statements included - v43: * moved "Explanation" comments to help file as - "Network Reference" (|netrw-ref|) - * now uses Dfunc() Decho() and Dret() for debugging - * removed superfluous NetRestorePosn() calls - v42: * now does BufReadPre and BufReadPost events on file:///* and - file://localhost/* v41: * installed file:///* and - file://localhost/* handling v40: * prevents redraw when a - protocol error occurs so that the user may see it v39: * sftp - support v38: * Now uses NetRestorePosn() calls with - Nread/Nwrite commands - * Temporary files now removed via bwipe! instead of bwipe - (thanks to Dave Roberts) v37: * Claar's modifications which - test if ftp is successful, otherwise give an error message - * After a read, the alternate file was pointing to the temp file. - The temp file buffer is now wiped out. - * removed silent from transfer methods so user can see what's - happening + v96: * bugfix - the |'acd'| option is not always defined + but is now bypassed only when it is + v95: * bugfix - Hiding mode worked correctly (don't show + any file matching any of the g:netrw_hide + patterns), but showing mode was showing only those + files that didn't match any of the g:netrw_hide + patterns. Instead, it now shows all files that + match any of the g:netrw_hide patterns (the + difference between a logical and and logical or). + v94: * bugfix - a Decho() had a missing quote; only + affects things when debugging was enabled. + v93: * bugfix - removed FocusGained event from causing a + slow-browser refresh for Windows + v92: * :Explore **//pattern implemented + (**/filepattern was already taken) + v91: * :Explore */pattern implemented + * |'acd'| option bypassed + v90: * mark ', as suggested by Yegappan Lakshmanan, used + to help guarantee entry into the jump list when + appropriate. + * and are no longer defined until a + :Explore **/pattern is used (if the user already + has a map for them). They will be defined for new + browser windows from that point forward. + v89: * A , , :Nexplore, or a :Pexplore + without having first done an :Explore **/pattern + (see |netrw-starstar|) caused + a lot of unhelpful error messages to appear + v88: * moved DrChip.Netrw menu to Netrw. Now has + priority 80 by default. + g:NetrwTopLvlMenu == "Netrw" and can be changed + by the user to suit. The priority is given by + g:NetrwMenuPriority. + * Changed filetype for browser displays from + netrwlist to netrw. + v87: * bug fix -- menus were partially disappearing + v85: * bug fix -- missing an endif + * bug fix -- handles spaces in names and directories + when using ftp-based browsing + v83: * disabled stop-acd handling; the change in directory + handling may allow acd to be used again. + * D was refusing to delete remote files/directories + in wide listing mode. + v81: * FocusGained also used to refresh/wipe local browser + directory buffers + * (bugfix) netrw was leaving [Scratch] buffers behind + when the user had the "hidden" option set. The + 'hidden' option is now bypassed. + v80: * ShellCmdPost event used in conjunction with + g:netrw_fastbrowse to refresh/wipe local browser + directory buffers. + v79: * directories are now displayed with nowrap + * (bugfix) if the column width was smaller than the + largest file's name, then netrw would hang when + using wide-listing mode - fixed + * g:netrw_fastbrowse introduced + v78: * progress has been made on allowing spaces inside + directory names for remote work (reading, writing, + browsing). (scp) + v77: * Mikolaj Machowski fixed a bug in a substitute cmd + * g:netrw_browsex_viewer implemented + * Mikolaj Machowski pointed out that gnome-open is + often executable under KDE systems, although it is + effectively not functional. NetBrowseX now looks + for "kicker" as a running process to determine if + KDE is actually running. + * Explorer's O functionality was inadvertently left + out. Netrw now does the same thing, but with the + "P" key. + * added g:netrw_browse_split option + * fixed a bug where the directory contained a "." but + the file didn't (was treating the dirname from "." + onwards as a suffix) + v76: * "directory is missing" error message now restores + echo highlighting + v75: * file://... now conforms to RFC2396 (thanks to + S. Zacchiroli) + * if the binary option is set, then NetWrite() will + only write the whole file (line numbers don't make + sense with this). Supports writing of tar and zip + files. + v74: * bugfix (vim, then :Explore) now works + * ctrl-L keeps cursor at same screen location (both + local and remote browsing) + * netrw now can read remote zip and tar files + * Obtain now uses WinXP ftp+.netrc successfully + v73: * bugfix -- scp://host/path/file was getting named + incorrectly + * netrw detects use of earlier-than-7.0 version of + vim and issues a pertinent error message. + * netrwSettings.vim is now uses autoloading. Only + is needed as a pure plugin + (ie. always loaded). + v72: * bugfix -- formerly, one could prevent the loading + of netrw by "let g:loaded_netrw=1"; when + autoloading became supported, this feature was + lost. It is now restored. + v71: * bugfix -- made some "set nomodifiable"s into + setlocal variants (allows :e somenewfile to be + modifiable as usual) + * NetrwSettings calls a netrw function, thereby + assuring that netrw has loaded. However, if netrw + does not load for whatever reason, then + NetrwSettings will now issue a warning message. + * For what reason I don't recall, when wget and fetch + are both not present, and an attempt to read a + http://... url is made, netrw exited. It now only + returns. + * When ch=1, on the second and subsequent uses of + browsing Netrw would issue a blank line to clear + the echo'd messages. This caused an annoying + "Hit-Enter" prompt; now a blank line message + is echo'd only if &ch>1. + v70: * when using |netrw-O|, the "Obtaining filename" + message is now shown using |hl-User9|. If User9 + has not been defined, netrw itself will define it. + v69: * Bugfix: win95/98 machines were experiencing a + "E121: Undefined variable: g:netrw_win95ftp" + message + v68: * double-click-leftmouse selects word under mouse + v67: * Passwords which contain blanks will now be + surrounded by double-quotes automatically (Yongwei) + v66: * Netrw now seems to work with a few more Windows + situations + * O now obtains a file: remote browsing + file -> local copy, locally browsing + file -> current directory (see :pwd) + * i now cycles between thin, long, and wide listing + styles + * NB and Nb are maps that are always available; + corresponding B and b maps are only available when + not using wide listing in order to allow them to + be used for motions + v65: * Browser functions now use NetOptionSave/Restore; in + particular, netrw now works around the report + setting + v64: * Bugfix - browsing a "/" directory (Unix) yielded + buffers named "[Scratch]" instead of "/" + * Bugfix - remote browsing with ftp was omitting + the ./ and ../ + v63: * netrw now takes advantage of autoload (needs 7.0) + * Bugfix - using r (to reverse sort) working again + v62: * Bugfix - spaces allowed again in directory names + with g:netrw_keepdir=0. In fact, I've tested netrw + with most ANSI punctuation marks for directory + names. + * Bugfix - NetrwSettings gave errors when + g:netrw_silent had not be set. + v61: * Document upgrade -- netrw variable-based settings + all should have tags. Supports NetrwSettings cmd. + * Several important variables are window-oriented. + Netrw has to transfer these across a window split. + See s:BufWinVars() and s:UseBufWinVars(). + v60: * When using the i map to switch between long and + short listings, netrw will now keep cursor on same + line + * "Match # of #" now uses status line + * :Explore **/*.c will now work from a + non-netrw-browser window + * :Explore **/patterns can now be run in separate + browser windows + * active banner (hit will cause various things + to happen) + v59: * bugfix -- another keepalt work-around installed + (for vim6.3) + * "Match # of #" for Explore **/pattern matches + v58: * Explore and relatives can now handle + **/somefilepattern (v7) + * Nexplore and Pexplore introduced (v7). shift-down + and shift-up cursor keys will invoke Nexplore and + Pexplore, respectively. + * bug fixed with o and v + * autochdir only worked around for vim when it has + been compiled with either + |+netbeans_intg| or |+sun_workshop| + * Under Windows, all directories and files were + being preceded with a "/" when local browsing. + Fixed. + * When: syntax highlighting is off, laststatus=2, and + remote browsing is used, sometimes the laststatus + highlighting bleeds into the entire display. Work + around - do an extra redraw in that case. + * Bugfix: when g:netrw_keepdir=0, due to re-use of + buffers, netrw didn't change the directory when it + should've + * Bugfix: D and R commands work again + v57: * Explore and relatives can now handle RO files + * reverse sort restored with vim7's sort command + * g:netrw_keepdir now being used to keep the current + directory unchanged as intended (sense change) + * vim 6.3 still supported + v56: * LocalBrowse now saves autochdir setting, unsets it, + and restores it before returning. + * using vim's rename() instead of system + + local_rename variable + * avoids changing directory when g:netrw_keepdir is + false + v55: * -bar used with :Explore :Sexplore etc to allow + multiple commands to be separated by |s + * browser listings now use the "nowrap" option + * browser: some unuseful error messages now + suppressed + v54: * For backwards compatibility, Explore and Sexplore + have been implemented. In addition, Hexplore and + Vexplore commands are available, too. + * used instead of in the + transparency support (BufReadCmd, FileReadCmd, + FileWriteCmd) + * ***netrw*** prepended to various error messages + netrw may emit + * g:netrw_port used instead of b:netrw_port for scp + * any leading [:#] is removed from port numbers + v53: * backslashes as well as slashes placed in various + patterns (ex. g:netrw_sort_sequence) to better + support Windows + v52: * nonumber'ing now set for browsing buffers + * when the hiding list hid all files, error messages + ensued. Fixed + * when browsing, swf is set, but directory is not + set, when netrw was attempting to restore options, + vim wanted to save a swapfile to a local directory + using an url-style path. Fixed + v51: * cygwin detection now automated + (using windows and &shell is bash) + * customizable browser "file" rejection patterns + * directory history + * :[range]w url now supported (ie. netrw uses a + FileWriteCmd event) + * error messages have a "Press to continue" to + allow them to be seen + * directory browser displays no longer bother the + swapfile + * u/U commands to go up and down the history stack + * history stack may be saved with viminfo with it's + "!" option + * bugfixes associated with unwanted [No Files] + entries + v50: * directories now displayed using buftype=nofile; + should keep the directory names as-is + * attempts to remove empty "[No File]" buffers + leftover from :file ..name.. commands + * bugfix: a "caps-lock" editing difficulty left in + v49 was fixed + * syntax highlighting for "Showing:" the hiding list + included + * bookmarks can now be retained if "!" is in the + viminfo option + v49: * will use ftp for http://.../ browsing + v48: * One may use ftp to do remote host file browsing + * (windows and !cygwin) remote browsing with ftp can + now use the "dir" command internally to provide + listings + * g:netrw_keepdir now allows one to keep the initial + current directory as the current directory + (normally the local file browser makes the + currently viewed directory the current directory) + * g:netrw_alto and g:netrw_altv now support + alternate placement of windows started with o or v + * Nread ? and Nwrite ? now uses echomsg (instead of + echo) so :messages can repeat showing the help + * bugfix: avoids problems with partial matches of + directory names to prior buffers with longer names + * one can suppress error messages with g:netrw_quiet + ctrl-h used + * instead of h for editing hiding list one + may edit the sorting sequence with the S map, which + now allows confirmation of deletion with + [y(es) n(o) a(ll) q(uit)] + * the "x" map now handles special file viewing with: + (windows) rundll32 url.dll (gnome) gnome-open (kde) + kfmclient If none of these are on the executable + path, then netrwFileHandlers.vim is used. + * directory bookmarking during both local and remote + browsing implemented + * one may view all, use the hiding list to suppress, + or use the hiding list to show-only remote and + local file/directory listings + * improved unusual file and directory name handling + preview window support + v47: * now handles local browsing. + v46: * now handles remote browsing + * g:netrw_silent (if 1) will cause all transfers to + be silent + v45: * made the [user@]hostname:path form a bit more + restrictive to better handle errors in using + protocols (e.g. scp:usr@host:file was being + recognized as an rcp request) + v44: * changed from "rsync -a" to just "rsync" + * somehow an editing error messed up the test to + recognize use of the fetch method for NetRead. + * more debugging statements included + v43: * moved "Explanation" comments to help + file as "Network Reference" (|netrw-ref|) + * now uses Dfunc() Decho() and Dret() for + debugging + * removed superfluous NetRestorePosn() calls + v42: * now does BufReadPre and BufReadPost events on + file:///* and file://localhost/* + v41: * installed file:///* and file://localhost/* handling + v40: * prevents redraw when a protocol error occurs so + that the user may see it + v39: * sftp support + v38: * Now uses NetRestorePosn() calls with Nread/Nwrite + commands + * Temporary files now removed via bwipe! instead of + bwipe (thanks to Dave Roberts) + v37: * Claar's modifications which test if ftp is + successful, otherwise give an error message + * After a read, the alternate file was pointing to + the temp file. The temp file buffer is now wiped + out. + * removed silent from transfer methods so user can + see what's happening ============================================================================== @@ -2157,4 +2927,5 @@ which is loaded automatically at startup (assuming :set nocp). operation ============================================================================== +Modelines: {{{1 vim:tw=78:ts=8:ft=help:norl:fdm=marker diff --git a/runtime/doc/pi_paren.txt b/runtime/doc/pi_paren.txt index 53239f74..32d96df8 100644 --- a/runtime/doc/pi_paren.txt +++ b/runtime/doc/pi_paren.txt @@ -1,4 +1,4 @@ -*pi_paren.txt* For Vim version 7.1. Last change: 2006 Jun 14 +*pi_paren.txt* For Vim version 7.1. Last change: 2008 Jan 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -15,6 +15,7 @@ You can avoid loading this plugin by setting the "loaded_matchparen" variable: > The plugin installs CursorMoved, CursorMovedI and WinEnter autocommands to redefine the match highlighting. + *:NoMatchParen* *:DoMatchParen* To disable the plugin after it was loaded use this command: > :NoMatchParen diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt index cf099d48..f0f9dd1f 100644 --- a/runtime/doc/pi_tar.txt +++ b/runtime/doc/pi_tar.txt @@ -1,4 +1,4 @@ -*pi_tar.txt* For Vim version 7.1. Last change: 2006 Sep 29 +*pi_tar.txt* For Vim version 7.1. Last change: 2008 Jan 07 +====================+ | Tar File Interface | @@ -6,8 +6,8 @@ Author: Charles E. Campbell, Jr. (remove NOSPAM from Campbell's email first) -Copyright: The GPL (gnu public license) applies to *tar-copyright* - tarPlugin.vim, and pi_tar.txt. +Copyright 2005-2008: The GPL (gnu public license) applies to *tar-copyright* + tar.vim, tarPlugin.vim, and pi_tar.txt. No warranty, express or implied. Use At-Your-Own-Risk. ============================================================================== @@ -36,12 +36,14 @@ Copyright: The GPL (gnu public license) applies to *tar-copyright* *g:tar_browseoptions* "Ptf" used to get a list of contents *g:tar_readoptions* "OPxf" used to extract a file from a tarball *g:tar_cmd* "tar" the name of the tar program + *g:tar_nomax* 0 if true, file window will not be maximized *g:tar_writeoptions* "uf" used to update/replace a file ============================================================================== 4. History *tar-history* + v12 Sep 07, 2007 * &shq now used if not the empty string for g:tar_shq v10 May 02, 2006 * now using "redraw then echo" to show messages, instead of "echo and prompt user" v9 May 02, 2006 * improved detection of masquerading as tar file @@ -50,7 +52,7 @@ Copyright: The GPL (gnu public license) applies to *tar-copyright* v7 Mar 22, 2006 * work on making tar plugin work across network Mar 27, 2006 * g:tar_cmd now available for users to change the name of the tar program to be used. By default, of course, - its "tar". + it's "tar". v6 Dec 21, 2005 * writing to files not in directories caused problems - fixed (pointed out by Christian Robinson) v5 Nov 22, 2005 * report option workaround installed diff --git a/runtime/doc/pi_vimball.txt b/runtime/doc/pi_vimball.txt index cfb448f3..7a2df7ed 100644 --- a/runtime/doc/pi_vimball.txt +++ b/runtime/doc/pi_vimball.txt @@ -1,4 +1,4 @@ -*pi_vimball.txt* For Vim version 7.1. Last change: 2007 May 11 +*pi_vimball.txt* For Vim version 7.1. Last change: 2008 Apr 01 ---------------- Vimball Archiver @@ -6,7 +6,7 @@ Author: Charles E. Campbell, Jr. (remove NOSPAM from Campbell's email first) -Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* +Copyright: (c) 2004-2007 by Charles E. Campbell, Jr. *Vimball-copyright* The VIM LICENSE applies to Vimball.vim, and Vimball.txt (see |copyright|) except use "Vimball" instead of "Vim". No warranty, express or implied. @@ -30,7 +30,8 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* :[range]MkVimball[!] filename [path] The range is composed of lines holding paths to files to be included - in your new vimball. As an example: > + in your new vimball, omitting the portion of the paths that is + normally specified by the runtimepath (|'rtp'|). As an example: > plugin/something.vim doc/something.txt < using > @@ -44,13 +45,20 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* directory. The vimball plugin normally uses the first |'runtimepath'| directory that exists as a prefix; don't use absolute paths, unless the user has specified such a path. - *g:vimball_home* - You may override the use of the |'runtimepath'| by specifying a - variable, g:vimball_home. If you use the exclamation point (!), then MkVimball will create the "filename.vba" file, overwriting it if it already exists. This behavior resembles that for |:w|. + *g:vimball_home* + You may override the use of the |'runtimepath'| by specifying a + variable, g:vimball_home. + + Path Preprocessing *g:vimball_path_escape* + + Paths used in vimball are preprocessed by s:Path(); in addition, + certain characters are escaped (by prepending a backslash). The + characters are in g:vimball_path_escape, and may be overridden by + the user in his/her .vimrc initialization script. *vimball-extract* vim filename.vba @@ -90,6 +98,10 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* ============================================================================== 3. Vimball History *vimball-history* {{{1 + 25 : Mar 24, 2008 * changed vimball#Vimball() to recognize doc/*.??x + files as help files, too. + 24 : Nov 15, 2007 * |g:vimball_path_escape| used by s:Path() to + prevent certain characters from causing trouble 22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter 21 : Nov 27, 2006 * (tnx to Bill McCarthy) vimball had a header handling problem and it now changes \s to /s @@ -101,7 +113,7 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* will extract plugin/somefile to the AsNeeded/ directory 17 : Jun 28, 2006 * changes all \s to /s internally for Windows - 16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify + 16 : Jun 15, 2006 * A. Mechylynck's idea to allow users to specify installation root paths implemented for UseVimball, MkVimball, and RmVimball. * RmVimball implemented @@ -115,7 +127,7 @@ Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. *Vimball-copyright* 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of functions. Included some more settings in them which frequently cause trouble. - 9 : Apr 26, 2006 * various changes to support Windows predilection + 9 : Apr 26, 2006 * various changes to support Windows' predilection for backslashes and spaces in file and directory names. 7 : Apr 25, 2006 * bypasses foldenable diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt index 944b8483..c52188d9 100644 --- a/runtime/doc/pi_zip.txt +++ b/runtime/doc/pi_zip.txt @@ -1,4 +1,4 @@ -*pi_zip.txt* For Vim version 7.1. Last change: 2007 May 11 +*pi_zip.txt* For Vim version 7.1. Last change: 2008 Jan 07 +====================+ | Zip File Interface | @@ -6,7 +6,7 @@ Author: Charles E. Campbell, Jr. (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright* +Copyright: Copyright (C) 2005-2008 Charles E Campbell, Jr *zip-copyright* Permission is hereby granted to use and distribute this code, with or without modifications, provided that this copyright notice is copied with it. Like anything else that's free, @@ -33,7 +33,13 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright* zip archives via the plugin. OPTIONS - *zip_shq* + + *g:zip_nomax* + + If this variable exists and is true, the file window will not be + automatically maximized when opened. + + *g:zip_shq* Different operating systems may use one or more shells to execute commands. Zip will try to guess the correct quoting mechanism to allow spaces and whatnot in filenames; however, if it is incorrectly @@ -64,11 +70,12 @@ Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr *zip-copyright* au BufReadCmd *.jar,*.xpi call zip#Browse(expand("")) < - One can simply extend this line to accommodate additional extensions that - are actually zip files. + One simply can extend this line to accomodate additional extensions that + should be treated as zip files. ============================================================================== 4. History *zip-history* {{{1 + v15 Sep 07, 2007 * &shq now used if not the empty string for g:zip_shq v14 May 07, 2007 * using b:zipfile instead of w:zipfile to avoid problem when editing alternate file to bring up a zipfile v10 May 02, 2006 * now using "redraw then echo" to show messages, instead diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt index 447151a2..9a83af7b 100644 --- a/runtime/doc/print.txt +++ b/runtime/doc/print.txt @@ -1,4 +1,4 @@ -*print.txt* For Vim version 7.1. Last change: 2007 Apr 22 +*print.txt* For Vim version 7.1. Last change: 2007 Sep 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -193,7 +193,8 @@ the font. When omitted, the point size is 10. This defines the format of the header produced in |:hardcopy| output. The option is defined in the same way as the 'statusline' option. If Vim has not been compiled with the |+statusline| feature, this option has no effect and a -simple default header is used, which shows the page number. +simple default header is used, which shows the page number. The same simple +header is used when this option is empty. *pmbcs-option* 'printmbcharset' 'pmbcs' string (default "") diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index a40cb9e4..feeb0917 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.1. Last change: 2007 May 10 +*quickfix.txt* For Vim version 7.1. Last change: 2008 Mar 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -141,8 +141,11 @@ command with 'l'. current window is used instead of the quickfix list. *:cq* *:cquit* -:cq[uit] Quit Vim with an error code, so that the compiler +:cq[uit][!] Quit Vim with an error code, so that the compiler will not compile the same file again. + WARNING: All changes in files are lost! Also when the + [!] is not used. It works like ":qall!" |:qall|, + except that Vim returns a non-zero exit code. *:cf* *:cfile* :cf[ile][!] [errorfile] Read the error file and jump to the first error. @@ -280,6 +283,21 @@ If vim is built with |+autocmd| support, two autocommands are available for running commands before and after a quickfix command (':make', ':grep' and so on) is executed. See |QuickFixCmdPre| and |QuickFixCmdPost| for details. + *QuickFixCmdPost-example* +When 'encoding' differs from the locale, the error messages may have a +different encoding from what Vim is using. To convert the messages you can +use this code: > + function QfMakeConv() + let qflist = getqflist() + for i in qflist + let i.text = iconv(i.text, "cp936", "utf-8") + endfor + call setqflist(qflist) + endfunction + + au QuickfixCmdPost make call QfMakeConv() + + ============================================================================= 2. The error window *quickfix-window* @@ -434,6 +452,7 @@ lists, use ":cnewer 99" first. 5. The errorfile is read using 'errorformat'. 6. If vim was built with |+autocmd|, all relevant |QuickFixCmdPost| autocommands are executed. + See example below. 7. If [!] is not given the first error is jumped to. 8. The errorfile is deleted. 9. You can now move through the errors with commands @@ -481,6 +500,25 @@ the screen and saved in a file the same time. Depending on the shell used If 'shellpipe' is empty, the {errorfile} part will be omitted. This is useful for compilers that write to an errorfile themselves (e.g., Manx's Amiga C). + +Using QuickFixCmdPost to fix the encoding ~ + +It may be that 'encoding' is set to an encoding that differs from the messages +your build program produces. This example shows how to fix this after Vim has +read the error messages: > + + function QfMakeConv() + let qflist = getqflist() + for i in qflist + let i.text = iconv(i.text, "cp936", "utf-8") + endfor + call setqflist(qflist) + endfunction + + au QuickfixCmdPost make call QfMakeConv() + +(Example by Faque Cheng) + ============================================================================== 5. Using :vimgrep and :grep *grep* *lid* @@ -751,6 +789,18 @@ work, because Vim is then running in the same process as the compiler and stdin (standard input) will not be interactive. +PERL *quickfix-perl* *compiler-perl* + +The Perl compiler plugin doesn't actually compile, but invokes Perl's internal +syntax checking feature and parses the output for possible errors so you can +correct them in quick-fix mode. + +Warnings are forced regardless of "no warnings" or "$^W = 0" within the file +being checked. To disable this set g:perl_compiler_force_warnings to a zero +value. For example: > + let g:perl_compiler_force_warnings = 0 + + PYUNIT COMPILER *compiler-pyunit* This is not actually a compiler, but a unit testing framework for the @@ -1379,7 +1429,8 @@ by Vim. *errorformat-Perl* In $VIMRUNTIME/tools you can find the efm_perl.pl script, which filters Perl error messages into a format that quickfix mode will understand. See the -start of the file about how to use it. +start of the file about how to use it. (This script is deprecated, see +|compiler-perl|.) diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index 0f05d8b0..20a787d1 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -1,4 +1,4 @@ -*quickref.txt* For Vim version 7.1. Last change: 2007 May 11 +*quickref.txt* For Vim version 7.1. Last change: 2008 Jan 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -458,18 +458,29 @@ In Insert or Command-line mode: ------------------------------------------------------------------------------ *Q_to* Text objects (only in Visual mode or after an operator) -|v_aw| N aw Select "a word" -|v_iw| N iw Select "inner word" -|v_aW| N aW Select "a |WORD|" -|v_iW| N iW Select "inner |WORD|" -|v_as| N as Select "a sentence" -|v_is| N is Select "inner sentence" -|v_ap| N ap Select "a paragraph" -|v_ip| N ip Select "inner paragraph" -|v_ab| N ab Select "a block" (from "[(" to "])") -|v_ib| N ib Select "inner block" (from "[(" to "])") -|v_aB| N aB Select "a Block" (from "[{" to "]}") -|v_iB| N iB Select "inner Block" (from "[{" to "]}") +|v_aw| N aw Select "a word" +|v_iw| N iw Select "inner word" +|v_aW| N aW Select "a |WORD|" +|v_iW| N iW Select "inner |WORD|" +|v_as| N as Select "a sentence" +|v_is| N is Select "inner sentence" +|v_ap| N ap Select "a paragraph" +|v_ip| N ip Select "inner paragraph" +|v_ab| N ab Select "a block" (from "[(" to "])") +|v_ib| N ib Select "inner block" (from "[(" to "])") +|v_aB| N aB Select "a Block" (from "[{" to "]}") +|v_iB| N iB Select "inner Block" (from "[{" to "]}") +|v_a>| N a> Select "a <> block" +|v_i>| N i> Select "inner <> block" +|v_at| N at Select "a tag block" (from to ) +|v_it| N it Select "inner tag block" (from to ) +|v_a'| N a' Select "a single quoted string" +|v_i'| N i' Select "inner single quoted string" +|v_aquote| N a" Select "a double quoted string" +|v_iquote| N i" Select "inner double quoted string" +|v_a`| N a` Select "a backward quoted string" +|v_i`| N i` Select "inner backward quoted string" + ------------------------------------------------------------------------------ *Q_re* Repeating commands @@ -806,6 +817,7 @@ Short explanation of each option: *option-list* 'pumheight' 'ph' maximum height of the popup menu 'quoteescape' 'qe' escape characters used in a string 'readonly' 'ro' disallow writing the buffer +'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting 'remap' allow mappings to work recursively 'report' threshold for reporting nr. of lines changed 'restorescreen' 'rs' Win32: restore screen when exiting @@ -857,7 +869,7 @@ Short explanation of each option: *option-list* 'spellsuggest' 'sps' method(s) used to suggest spelling corrections 'splitbelow' 'sb' new window from split is below the current one 'splitright' 'spr' new window is put right of the current one -'startofline' 'sol' commands move cursor to first blank in line +'startofline' 'sol' commands move cursor to first non-blank in line 'statusline' 'stl' custom format for the status line 'suffixes' 'su' suffixes that are ignored with multiple match 'suffixesadd' 'sua' suffixes added when searching for a file diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index 2361ddcb..7fe18891 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.1. Last change: 2007 Jan 07 +*repeat.txt* For Vim version 7.1. Last change: 2007 Aug 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -89,10 +89,11 @@ This replaces all occurrences of "pat" with "PAT". The same can be done with: :%s/pat/PAT/g Which is two characters shorter! -A special case is using ":visual" as a command. This will move to a matching -line, go to Normal mode to let you execute commands there until you use |Q| to -return to Ex mode. This will be repeated for each matching line. While doing -this you cannot use ":global". +When using "global" in Ex mode, a special case is using ":visual" as a +command. This will move to a matching line, go to Normal mode to let you +execute commands there until you use |Q| to return to Ex mode. This will be +repeated for each matching line. While doing this you cannot use ":global". +To abort this type CTRL-C twice. ============================================================================== 3. Complex repeats *complex-repeat* diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt index 832dee36..ef230b26 100644 --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.1. Last change: 2007 May 07 +*spell.txt* For Vim version 7.1. Last change: 2007 Dec 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -619,7 +619,8 @@ SPELL FILE MISSING *spell-SpellFileMissing* *spellfile.vim* If the spell file for the language you are using is not available, you will get an error message. But if the "spellfile.vim" plugin is active it will offer you to download the spell file. Just follow the instructions, it will -ask you where to write the file. +ask you where to write the file (there must be a writable directory in +'runtimepath' for this). The plugin has a default place where to look for spell files, on the Vim ftp server. If you want to use another location or another protocol, set the diff --git a/runtime/doc/sponsor.txt b/runtime/doc/sponsor.txt index fe99640b..4366e928 100644 --- a/runtime/doc/sponsor.txt +++ b/runtime/doc/sponsor.txt @@ -1,4 +1,4 @@ -*sponsor.txt* For Vim version 7.1. Last change: 2007 Jan 05 +*sponsor.txt* For Vim version 7.1. Last change: 2007 Oct 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -51,7 +51,7 @@ vote for the items Bram should work on. How does this voting work? 4. The voting results appear on the results page, which is visible for everybody: http://www.vim.org/sponsor/vote_results.php -Additionally, once you have send 100 euro or more in total, your name appears +Additionally, once you have sent 100 euro or more in total, your name appears in the "Vim hall of honour": http://www.vim.org/sponsor/hall_of_honour.php But only if you enable this on your account page. @@ -82,9 +82,9 @@ Cash Small amounts can be send with ordinary mail. Put something You can use this permanent address: Bram Moolenaar - Molenstraat 2 - 2161 HP Lisse - The Netherlands + Finsterruetihof 1 + 8134 Adliswil + Switzerland diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index acde5428..f66f8b5b 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.1. Last change: 2007 May 11 +*syntax.txt* For Vim version 7.1. Last change: 2008 Feb 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -531,12 +531,12 @@ one of the first five lines in the file. The syntax type can always be overruled for a specific buffer by setting the b:asmsyntax variable: > - :let b:asmsyntax=nasm + :let b:asmsyntax = "nasm" If b:asmsyntax is not set, either automatically or by hand, then the value of the global variable asmsyntax is used. This can be seen as a default assembly language: > - :let asmsyntax=nasm + :let asmsyntax = "nasm" As a last resort, if nothing is defined, the "asm" syntax is used. @@ -613,7 +613,7 @@ C *c.vim* *ft-c-syntax* A few things in C highlighting are optional. To enable them assign any value to the respective variable. Example: > - :let c_comment_strings=1 + :let c_comment_strings = 1 To disable them use ":unlet". Example: > :unlet c_comment_strings @@ -1475,11 +1475,10 @@ which are used for the statement itself, special characters used in debug strings, strings, boolean constants and types (this, super) respectively. I have opted to chose another background for those statements. -In order to help you to write code that can be easily ported between -Java and C++, all C++ keywords are marked as error in a Java program. -However, if you use them regularly, you may want to define the following -variable in your .vimrc file: > - :let java_allow_cpp_keywords=1 +In order to help you write code that can be easily ported between Java and +C++, all C++ keywords can be marked as an error in a Java program. To +have this add this line in your .vimrc file: > + :let java_allow_cpp_keywords = 0 Javadoc is a program that takes special comments out of Java program files and creates HTML pages. The standard configuration will highlight this HTML code @@ -2402,7 +2401,7 @@ vimrc file: > SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* -This covers the "normal" Unix (Borne) sh, bash and the Korn shell. +This covers the "normal" Unix (Bourne) sh, bash and the Korn shell. Vim attempts to determine which shell type is in use by specifying that various filenames are of specific types: > @@ -2425,23 +2424,30 @@ variables in your <.vimrc>: let g:is_posix = 1 < bash: > let g:is_bash = 1 -< sh: (default) Borne shell > +< sh: (default) Bourne shell > let g:is_sh = 1 If there's no "#! ..." line, and the user hasn't availed himself/herself of a default sh.vim syntax setting as just shown, then syntax/sh.vim will assume -the Borne shell syntax. No need to quote RFCs or market penetration -statistics in error reports, please -- just select the default version of -the sh your system uses in your <.vimrc>. +the Bourne shell syntax. No need to quote RFCs or market penetration +statistics in error reports, please -- just select the default version of the +sh your system uses in your <.vimrc>. -If, in your <.vimrc>, you set > - let g:sh_fold_enabled= 1 +The syntax/sh.vim file provides several levels of syntax-based folding: > + + let g:sh_fold_enabled= 0 (default, no syntax folding) + let g:sh_fold_enabled= 1 (enable function folding) + let g:sh_fold_enabled= 2 (enable heredoc folding) + let g:sh_fold_enabled= 4 (enable if/do/for folding) > then various syntax items (HereDocuments and function bodies) become -syntax-foldable (see |:syn-fold|). +syntax-foldable (see |:syn-fold|). You also may add these together +to get multiple types of folding: > -If you notice highlighting errors while scrolling backwards, which are fixed -when redrawing with CTRL-L, try setting the "sh_minlines" internal variable + let g:sh_fold_enabled= 3 (enables function and heredoc folding) + +If you notice highlighting errors while scrolling backwards which are fixed +when one redraws with CTRL-L, try setting the "sh_minlines" internal variable to a larger number. Example: > let sh_minlines = 500 @@ -2624,36 +2630,56 @@ set "tf_minlines" to the value you desire. Example: > :let tf_minlines = your choice -VIM *vim.vim* *ft-vim-syntax* - -There is a tradeoff between more accurate syntax highlighting versus -screen updating speed. To improve accuracy, you may wish to increase -the g:vim_minlines variable. The g:vim_maxlines variable may be used -to improve screen updating rates (see |:syn-sync| for more on this). - - g:vim_minlines : used to set synchronization minlines - g:vim_maxlines : used to set synchronization maxlines - -The g:vimembedscript option allows for somewhat faster loading of syntax -highlighting for vim scripts at the expense of supporting syntax highlighting -for external scripting languages (currently perl, python, ruby, and tcl). - - g:vimembedscript == 1 (default) will allow highlighting - g:vimembedscript doesn't exist of supported embedded scripting - languages: perl, python, ruby and - tcl. - - g:vimembedscript == 0 Syntax highlighting for embedded - scripting languages will not be - loaded. +VIM *vim.vim* *ft-vim-syntax* + *g:vimsyn_minlines* *g:vimsyn_maxlines* +There is a tradeoff between more accurate syntax highlighting versus screen +updating speed. To improve accuracy, you may wish to increase the +g:vimsyn_minlines variable. The g:vimsyn_maxlines variable may be used to +improve screen updating rates (see |:syn-sync| for more on this). > + g:vimsyn_minlines : used to set synchronization minlines + g:vimsyn_maxlines : used to set synchronization maxlines +< + (g:vim_minlines and g:vim_maxlines are deprecated variants of + these two options) + + *g:vimsyn_embed* +The g:vimsyn_embed option allows users to select what, if any, types of +embedded script highlighting they wish to have. > + + g:vimsyn_embed == 0 : don't embed any scripts + g:vimsyn_embed =~ 'm' : embed mzscheme (but only if vim supports it) + g:vimsyn_embed =~ 'p' : embed perl (but only if vim supports it) + g:vimsyn_embed =~ 'P' : embed python (but only if vim supports it) + g:vimsyn_embed =~ 'r' : embed ruby (but only if vim supports it) + g:vimsyn_embed =~ 't' : embed tcl (but only if vim supports it) +< +By default, g:vimsyn_embed is "mpPr"; ie. syntax/vim.vim will support +highlighting mzscheme, perl, python, and ruby by default. Vim's has("tcl") +test appears to hang vim when tcl is not truly available. Thus, by default, +tcl is not supported for embedding (but those of you who like tcl embedded in +their vim syntax highlighting can simply include it in the g:vimembedscript +option). + *g:vimsyn_folding* + +Some folding is now supported with syntax/vim.vim: > + + g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding + g:vimsyn_folding =~ 'a' : augroups + g:vimsyn_folding =~ 'f' : fold functions + g:vimsyn_folding =~ 'm' : fold mzscheme script + g:vimsyn_folding =~ 'p' : fold perl script + g:vimsyn_folding =~ 'P' : fold python script + g:vimsyn_folding =~ 'r' : fold ruby script + g:vimsyn_folding =~ 't' : fold tcl script + + *g:vimsyn_noerror* Not all error highlighting that syntax/vim.vim does may be correct; VimL is a difficult language to highlight correctly. A way to suppress error -highlighting is to put: > - - let g:vimsyntax_noerror = 1 +highlighting is to put the following line in your |vimrc|: > -in your |vimrc|. + let g:vimsyn_noerror = 1 +< XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* diff --git a/runtime/doc/tags b/runtime/doc/tags index 73930066..2b88cf8b 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -702,8 +702,10 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'qe' options.txt /*'qe'* 'quote motion.txt /*'quote* 'quoteescape' options.txt /*'quoteescape'* +'rdt' options.txt /*'rdt'* 'readonly' options.txt /*'readonly'* 'redraw' vi_diff.txt /*'redraw'* +'redrawtime' options.txt /*'redrawtime'* 'remap' options.txt /*'remap'* 'report' options.txt /*'report'* 'restorescreen' options.txt /*'restorescreen'* @@ -1227,6 +1229,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* --servername remote.txt /*--servername* --socketid starting.txt /*--socketid* --version starting.txt /*--version* +--windowid starting.txt /*--windowid* -A starting.txt /*-A* -C starting.txt /*-C* -D starting.txt /*-D* @@ -1742,6 +1745,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* :AdaTypes ada.txt /*:AdaTypes* :CompilerSet usr_41.txt /*:CompilerSet* :DiffOrig diff.txt /*:DiffOrig* +:DoMatchParen pi_paren.txt /*:DoMatchParen* :Explore pi_netrw.txt /*:Explore* :GLVS pi_getscript.txt /*:GLVS* :GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat* @@ -1752,11 +1756,14 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* :Man filetype.txt /*:Man* :MkVimball pi_vimball.txt /*:MkVimball* :N editing.txt /*:N* +:NetrwClean pi_netrw.txt /*:NetrwClean* :Nexplore pi_netrw.txt /*:Nexplore* :Next editing.txt /*:Next* +:NoMatchParen pi_paren.txt /*:NoMatchParen* :P various.txt /*:P* :Pexplore pi_netrw.txt /*:Pexplore* :Print various.txt /*:Print* +:Rexplore pi_netrw.txt /*:Rexplore* :RmVimball pi_vimball.txt /*:RmVimball* :Sexplore pi_netrw.txt /*:Sexplore* :TOhtml syntax.txt /*:TOhtml* @@ -2153,6 +2160,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* :highlight-link syntax.txt /*:highlight-link* :highlight-normal syntax.txt /*:highlight-normal* :highlight-verbose syntax.txt /*:highlight-verbose* +:his cmdline.txt /*:his* :history cmdline.txt /*:history* :history-indexing cmdline.txt /*:history-indexing* :i insert.txt /*:i* @@ -4079,8 +4087,13 @@ E794 eval.txt /*E794* E795 eval.txt /*E795* E796 editing.txt /*E796* E797 spell.txt /*E797* +E798 eval.txt /*E798* +E799 eval.txt /*E799* E80 message.txt /*E80* E800 arabic.txt /*E800* +E801 eval.txt /*E801* +E802 eval.txt /*E802* +E803 eval.txt /*E803* E81 map.txt /*E81* E82 message.txt /*E82* E83 message.txt /*E83* @@ -4161,6 +4174,7 @@ Japanese mbyte.txt /*Japanese* K various.txt /*K* KDE gui_x11.txt /*KDE* KVim gui_x11.txt /*KVim* +Kibaale uganda.txt /*Kibaale* Korean mbyte.txt /*Korean* L motion.txt /*L* Linux-backspace options.txt /*Linux-backspace* @@ -4266,6 +4280,7 @@ Q_vm quickref.txt /*Q_vm* Q_wi quickref.txt /*Q_wi* Q_wq quickref.txt /*Q_wq* QuickFixCmdPost autocmd.txt /*QuickFixCmdPost* +QuickFixCmdPost-example quickfix.txt /*QuickFixCmdPost-example* QuickFixCmdPre autocmd.txt /*QuickFixCmdPre* Quickfix quickfix.txt /*Quickfix* R change.txt /*R* @@ -4771,12 +4786,14 @@ characterwise-register change.txt /*characterwise-register* characterwise-visual visual.txt /*characterwise-visual* charconvert_from-variable eval.txt /*charconvert_from-variable* charconvert_to-variable eval.txt /*charconvert_to-variable* +charity uganda.txt /*charity* charset mbyte.txt /*charset* charset-conversion mbyte.txt /*charset-conversion* chill.vim syntax.txt /*chill.vim* cindent() eval.txt /*cindent()* cinkeys-format indent.txt /*cinkeys-format* cinoptions-values indent.txt /*cinoptions-values* +clearmatches() eval.txt /*clearmatches()* client-server remote.txt /*client-server* clientserver remote.txt /*clientserver* clipboard gui.txt /*clipboard* @@ -4815,6 +4832,7 @@ compiler-gcc quickfix.txt /*compiler-gcc* compiler-gnat ada.txt /*compiler-gnat* compiler-hpada ada.txt /*compiler-hpada* compiler-manx quickfix.txt /*compiler-manx* +compiler-perl quickfix.txt /*compiler-perl* compiler-pyunit quickfix.txt /*compiler-pyunit* compiler-select quickfix.txt /*compiler-select* compiler-tex quickfix.txt /*compiler-tex* @@ -5132,6 +5150,7 @@ errorformat-javac quickfix.txt /*errorformat-javac* errorformat-multi-line quickfix.txt /*errorformat-multi-line* errorformat-separate-filename quickfix.txt /*errorformat-separate-filename* errorformats quickfix.txt /*errorformats* +errors message.txt /*errors* escape intro.txt /*escape* escape() eval.txt /*escape()* escape-bar version4.txt /*escape-bar* @@ -5336,7 +5355,6 @@ format-comments change.txt /*format-comments* formatting change.txt /*formatting* formfeed intro.txt /*formfeed* fortran.vim syntax.txt /*fortran.vim* -french-maillist intro.txt /*french-maillist* frombook usr_01.txt /*frombook* ft-abel-syntax syntax.txt /*ft-abel-syntax* ft-ada-commands ada.txt /*ft-ada-commands* @@ -5384,6 +5402,7 @@ ft-fortran-indent indent.txt /*ft-fortran-indent* ft-fortran-plugin filetype.txt /*ft-fortran-plugin* ft-fortran-syntax syntax.txt /*ft-fortran-syntax* ft-fvwm-syntax syntax.txt /*ft-fvwm-syntax* +ft-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin* ft-groff-syntax syntax.txt /*ft-groff-syntax* ft-gsp-syntax syntax.txt /*ft-gsp-syntax* ft-haskell-syntax syntax.txt /*ft-haskell-syntax* @@ -5417,6 +5436,7 @@ ft-nroff-syntax syntax.txt /*ft-nroff-syntax* ft-ocaml-syntax syntax.txt /*ft-ocaml-syntax* ft-papp-syntax syntax.txt /*ft-papp-syntax* ft-pascal-syntax syntax.txt /*ft-pascal-syntax* +ft-pdf-plugin filetype.txt /*ft-pdf-plugin* ft-perl-syntax syntax.txt /*ft-perl-syntax* ft-php-omni insert.txt /*ft-php-omni* ft-php-syntax syntax.txt /*ft-php-syntax* @@ -5456,6 +5476,7 @@ ft-tex-syntax syntax.txt /*ft-tex-syntax* ft-tf-syntax syntax.txt /*ft-tf-syntax* ft-vb-syntax syntax.txt /*ft-vb-syntax* ft-verilog-indent indent.txt /*ft-verilog-indent* +ft-vhdl-indent indent.txt /*ft-vhdl-indent* ft-vim-indent indent.txt /*ft-vim-indent* ft-vim-syntax syntax.txt /*ft-vim-syntax* ft-xf86conf-syntax syntax.txt /*ft-xf86conf-syntax* @@ -5536,11 +5557,15 @@ g:netrw_alto pi_netrw.txt /*g:netrw_alto* g:netrw_altv pi_netrw.txt /*g:netrw_altv* g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split* g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer* +g:netrw_cd_escape pi_netrw.txt /*g:netrw_cd_escape* +g:netrw_compress pi_netrw.txt /*g:netrw_compress* g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin* g:netrw_dav_cmd pi_netrw.txt /*g:netrw_dav_cmd* +g:netrw_decompress pi_netrw.txt /*g:netrw_decompress* g:netrw_extracmd pi_netrw.txt /*g:netrw_extracmd* g:netrw_fastbrowse pi_netrw.txt /*g:netrw_fastbrowse* g:netrw_fetch_cmd pi_netrw.txt /*g:netrw_fetch_cmd* +g:netrw_fname_escape pi_netrw.txt /*g:netrw_fname_escape* g:netrw_ftp pi_netrw.txt /*g:netrw_ftp* g:netrw_ftp_browse_reject pi_netrw.txt /*g:netrw_ftp_browse_reject* g:netrw_ftp_cmd pi_netrw.txt /*g:netrw_ftp_cmd* @@ -5548,6 +5573,7 @@ g:netrw_ftp_list_cmd pi_netrw.txt /*g:netrw_ftp_list_cmd* g:netrw_ftp_sizelist_cmd pi_netrw.txt /*g:netrw_ftp_sizelist_cmd* g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd* g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode* +g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape* g:netrw_hide pi_netrw.txt /*g:netrw_hide* g:netrw_http_cmd pi_netrw.txt /*g:netrw_http_cmd* g:netrw_ignorenetrc pi_netrw.txt /*g:netrw_ignorenetrc* @@ -5557,12 +5583,15 @@ g:netrw_list_hide pi_netrw.txt /*g:netrw_list_hide* g:netrw_liststyle pi_netrw.txt /*g:netrw_liststyle* g:netrw_local_mkdir pi_netrw.txt /*g:netrw_local_mkdir* g:netrw_local_rmdir pi_netrw.txt /*g:netrw_local_rmdir* +g:netrw_localcopycmd pi_netrw.txt /*g:netrw_localcopycmd* +g:netrw_localmovecmd pi_netrw.txt /*g:netrw_localmovecmd* g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen* g:netrw_menu pi_netrw.txt /*g:netrw_menu* g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd* g:netrw_nogx pi_netrw.txt /*g:netrw_nogx* -g:netrw_passwd pi_netrw.txt /*g:netrw_passwd* +g:netrw_preview pi_netrw.txt /*g:netrw_preview* g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd* +g:netrw_retmap pi_netrw.txt /*g:netrw_retmap* g:netrw_rm_cmd pi_netrw.txt /*g:netrw_rm_cmd* g:netrw_rmdir_cmd pi_netrw.txt /*g:netrw_rmdir_cmd* g:netrw_rmf_cmd pi_netrw.txt /*g:netrw_rmf_cmd* @@ -5571,13 +5600,16 @@ g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd* g:netrw_scpport pi_netrw.txt /*g:netrw_scpport* g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd* g:netrw_shq pi_netrw.txt /*g:netrw_shq* +g:netrw_silent pi_netrw.txt /*g:netrw_silent* g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by* g:netrw_sort_direction pi_netrw.txt /*g:netrw_sort_direction* g:netrw_sort_sequence pi_netrw.txt /*g:netrw_sort_sequence* +g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax* g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject* g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd* g:netrw_sshport pi_netrw.txt /*g:netrw_sshport* g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt* +g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape* g:netrw_uid pi_netrw.txt /*g:netrw_uid* g:netrw_use_errorwindow pi_netrw.txt /*g:netrw_use_errorwindow* g:netrw_use_noswf pi_netrw.txt /*g:netrw_use_noswf* @@ -5586,10 +5618,19 @@ g:netrw_win95ftp pi_netrw.txt /*g:netrw_win95ftp* g:netrw_winsize pi_netrw.txt /*g:netrw_winsize* g:tar_browseoptions pi_tar.txt /*g:tar_browseoptions* g:tar_cmd pi_tar.txt /*g:tar_cmd* +g:tar_nomax pi_tar.txt /*g:tar_nomax* g:tar_readoptions pi_tar.txt /*g:tar_readoptions* g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions* g:var eval.txt /*g:var* g:vimball_home pi_vimball.txt /*g:vimball_home* +g:vimball_path_escape pi_vimball.txt /*g:vimball_path_escape* +g:vimsyn_embed syntax.txt /*g:vimsyn_embed* +g:vimsyn_folding syntax.txt /*g:vimsyn_folding* +g:vimsyn_maxlines syntax.txt /*g:vimsyn_maxlines* +g:vimsyn_minlines syntax.txt /*g:vimsyn_minlines* +g:vimsyn_noerror syntax.txt /*g:vimsyn_noerror* +g:zip_nomax pi_zip.txt /*g:zip_nomax* +g:zip_shq pi_zip.txt /*g:zip_shq* g:zip_unzipcmd pi_zip.txt /*g:zip_unzipcmd* g:zip_zipcmd pi_zip.txt /*g:zip_zipcmd* g; motion.txt /*g;* @@ -5649,6 +5690,8 @@ getftype() eval.txt /*getftype()* getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install* getline() eval.txt /*getline()* getloclist() eval.txt /*getloclist()* +getmatches() eval.txt /*getmatches()* +getpid() eval.txt /*getpid()* getpos() eval.txt /*getpos()* getqflist() eval.txt /*getqflist()* getreg() eval.txt /*getreg()* @@ -5674,6 +5717,7 @@ glob() eval.txt /*glob()* global-ime mbyte.txt /*global-ime* global-local options.txt /*global-local* global-variable eval.txt /*global-variable* +global_markfilelist pi_netrw.txt /*global_markfilelist* globpath() eval.txt /*globpath()* glvs pi_getscript.txt /*glvs* glvs-alg pi_getscript.txt /*glvs-alg* @@ -5752,6 +5796,7 @@ gui-w32-dialogs gui_w32.txt /*gui-w32-dialogs* gui-w32-printing gui_w32.txt /*gui-w32-printing* gui-w32-start gui_w32.txt /*gui-w32-start* gui-w32-various gui_w32.txt /*gui-w32-various* +gui-w32-windowid gui_w32.txt /*gui-w32-windowid* gui-w32s gui_w32.txt /*gui-w32s* gui-win32-maximized gui_w32.txt /*gui-win32-maximized* gui-x11 gui_x11.txt /*gui-x11* @@ -5828,7 +5873,6 @@ highlight-stop syntax.txt /*highlight-stop* highlight-term syntax.txt /*highlight-term* highlightID() eval.txt /*highlightID()* highlight_exists() eval.txt /*highlight_exists()* -his cmdline.txt /*his* hist-names eval.txt /*hist-names* histadd() eval.txt /*histadd()* histdel() eval.txt /*histdel()* @@ -6191,6 +6235,7 @@ local-function eval.txt /*local-function* local-options options.txt /*local-options* local-variable eval.txt /*local-variable* local-variables eval.txt /*local-variables* +local_markfilelist pi_netrw.txt /*local_markfilelist* locale mbyte.txt /*locale* locale-name mbyte.txt /*locale-name* localtime() eval.txt /*localtime()* @@ -6217,7 +6262,6 @@ macro map.txt /*macro* mail-list intro.txt /*mail-list* mail.vim syntax.txt /*mail.vim* maillist intro.txt /*maillist* -maillist-archive intro.txt /*maillist-archive* make.vim syntax.txt /*make.vim* manual-copyright usr_01.txt /*manual-copyright* map() eval.txt /*map()* @@ -6260,11 +6304,14 @@ mapmode-x map.txt /*mapmode-x* mapping map.txt /*mapping* mark motion.txt /*mark* mark-motions motion.txt /*mark-motions* +markfilelist pi_netrw.txt /*markfilelist* masm.vim syntax.txt /*masm.vim* match() eval.txt /*match()* match-highlight pattern.txt /*match-highlight* match-parens tips.txt /*match-parens* +matchadd() eval.txt /*matchadd()* matcharg() eval.txt /*matcharg()* +matchdelete() eval.txt /*matchdelete()* matchend() eval.txt /*matchend()* matchit-install usr_05.txt /*matchit-install* matchlist() eval.txt /*matchlist()* @@ -6409,10 +6456,15 @@ netrw-bookmarks pi_netrw.txt /*netrw-bookmarks* netrw-browse pi_netrw.txt /*netrw-browse* netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds* netrw-browse-intro pi_netrw.txt /*netrw-browse-intro* -netrw-browse-var pi_netrw.txt /*netrw-browse-var* +netrw-browse-maps pi_netrw.txt /*netrw-browse-maps* +netrw-browser pi_netrw.txt /*netrw-browser* +netrw-browser-options pi_netrw.txt /*netrw-browser-options* +netrw-browser-var pi_netrw.txt /*netrw-browser-var* +netrw-browsing pi_netrw.txt /*netrw-browsing* netrw-c pi_netrw.txt /*netrw-c* netrw-cadaver pi_netrw.txt /*netrw-cadaver* netrw-chgup pi_netrw.txt /*netrw-chgup* +netrw-clean pi_netrw.txt /*netrw-clean* netrw-contents pi_netrw.txt /*netrw-contents* netrw-cr pi_netrw.txt /*netrw-cr* netrw-credits pi_netrw.txt /*netrw-credits* @@ -6437,6 +6489,7 @@ netrw-file pi_netrw.txt /*netrw-file* netrw-fixup pi_netrw.txt /*netrw-fixup* netrw-ftp pi_netrw.txt /*netrw-ftp* netrw-gb pi_netrw.txt /*netrw-gb* +netrw-gh pi_netrw.txt /*netrw-gh* netrw-gx pi_netrw.txt /*netrw-gx* netrw-handler pi_netrw.txt /*netrw-handler* netrw-help pi_netrw.txt /*netrw-help* @@ -6450,10 +6503,23 @@ netrw-list pi_netrw.txt /*netrw-list* netrw-listbookmark pi_netrw.txt /*netrw-listbookmark* netrw-listhack pi_netrw.txt /*netrw-listhack* netrw-login pi_netrw.txt /*netrw-login* -netrw-maps pi_netrw.txt /*netrw-maps* +netrw-mT pi_netrw.txt /*netrw-mT* netrw-mb pi_netrw.txt /*netrw-mb* +netrw-mc pi_netrw.txt /*netrw-mc* +netrw-md pi_netrw.txt /*netrw-md* +netrw-me pi_netrw.txt /*netrw-me* +netrw-mf pi_netrw.txt /*netrw-mf* +netrw-mh pi_netrw.txt /*netrw-mh* netrw-ml_get pi_netrw.txt /*netrw-ml_get* +netrw-mm pi_netrw.txt /*netrw-mm* netrw-move pi_netrw.txt /*netrw-move* +netrw-mp pi_netrw.txt /*netrw-mp* +netrw-mr pi_netrw.txt /*netrw-mr* +netrw-ms pi_netrw.txt /*netrw-ms* +netrw-mt pi_netrw.txt /*netrw-mt* +netrw-mu pi_netrw.txt /*netrw-mu* +netrw-mx pi_netrw.txt /*netrw-mx* +netrw-mz pi_netrw.txt /*netrw-mz* netrw-netrc pi_netrw.txt /*netrw-netrc* netrw-nexplore pi_netrw.txt /*netrw-nexplore* netrw-nread pi_netrw.txt /*netrw-nread* @@ -6462,6 +6528,8 @@ netrw-o pi_netrw.txt /*netrw-o* netrw-options pi_netrw.txt /*netrw-options* netrw-p pi_netrw.txt /*netrw-p* netrw-p1 pi_netrw.txt /*netrw-p1* +netrw-p10 pi_netrw.txt /*netrw-p10* +netrw-p11 pi_netrw.txt /*netrw-p11* netrw-p2 pi_netrw.txt /*netrw-p2* netrw-p3 pi_netrw.txt /*netrw-p3* netrw-p4 pi_netrw.txt /*netrw-p4* @@ -6481,18 +6549,22 @@ netrw-prvwin pi_netrw.txt /*netrw-prvwin* netrw-pscp pi_netrw.txt /*netrw-pscp* netrw-psftp pi_netrw.txt /*netrw-psftp* netrw-putty pi_netrw.txt /*netrw-putty* -netrw-q pi_netrw.txt /*netrw-q* +netrw-qb pi_netrw.txt /*netrw-qb* +netrw-qf pi_netrw.txt /*netrw-qf* netrw-r pi_netrw.txt /*netrw-r* netrw-read pi_netrw.txt /*netrw-read* netrw-ref pi_netrw.txt /*netrw-ref* netrw-rename pi_netrw.txt /*netrw-rename* netrw-reverse pi_netrw.txt /*netrw-reverse* +netrw-rexplore pi_netrw.txt /*netrw-rexplore* netrw-s pi_netrw.txt /*netrw-s* netrw-settings pi_netrw.txt /*netrw-settings* netrw-sexplore pi_netrw.txt /*netrw-sexplore* netrw-sort pi_netrw.txt /*netrw-sort* netrw-sortsequence pi_netrw.txt /*netrw-sortsequence* netrw-source pi_netrw.txt /*netrw-source* +netrw-ssh-hack pi_netrw.txt /*netrw-ssh-hack* +netrw-star pi_netrw.txt /*netrw-star* netrw-starpat pi_netrw.txt /*netrw-starpat* netrw-starstar pi_netrw.txt /*netrw-starstar* netrw-starstarpat pi_netrw.txt /*netrw-starstarpat* @@ -6622,10 +6694,12 @@ ole-normal if_ole.txt /*ole-normal* ole-registration if_ole.txt /*ole-registration* ole-sendkeys if_ole.txt /*ole-sendkeys* ole-setforeground if_ole.txt /*ole-setforeground* +omap-info map.txt /*omap-info* omni-sql-completion sql.txt /*omni-sql-completion* online-help various.txt /*online-help* opening-window windows.txt /*opening-window* operator motion.txt /*operator* +operator-variable eval.txt /*operator-variable* option-backslash options.txt /*option-backslash* option-list quickref.txt /*option-list* option-summary options.txt /*option-summary* @@ -6790,6 +6864,7 @@ quickfix-directory-stack quickfix.txt /*quickfix-directory-stack* quickfix-error-lists quickfix.txt /*quickfix-error-lists* quickfix-gcc quickfix.txt /*quickfix-gcc* quickfix-manx quickfix.txt /*quickfix-manx* +quickfix-perl quickfix.txt /*quickfix-perl* quickfix-valid quickfix.txt /*quickfix-valid* quickfix-window quickfix.txt /*quickfix-window* quickfix.txt quickfix.txt /*quickfix.txt* @@ -6943,6 +7018,7 @@ s/\r change.txt /*s\/\\r* s/\t change.txt /*s\/\\t* s/\u change.txt /*s\/\\u* s/\~ change.txt /*s\/\\~* +s:netrw_passwd pi_netrw.txt /*s:netrw_passwd* s:var eval.txt /*s:var* s change.txt /*s* sandbox eval.txt /*sandbox* @@ -7000,6 +7076,7 @@ setbufvar() eval.txt /*setbufvar()* setcmdpos() eval.txt /*setcmdpos()* setline() eval.txt /*setline()* setloclist() eval.txt /*setloclist()* +setmatches() eval.txt /*setmatches()* setpos() eval.txt /*setpos()* setqflist() eval.txt /*setqflist()* setreg() eval.txt /*setreg()* @@ -7244,6 +7321,7 @@ synload-3 syntax.txt /*synload-3* synload-4 syntax.txt /*synload-4* synload-5 syntax.txt /*synload-5* synload-6 syntax.txt /*synload-6* +synstack() eval.txt /*synstack()* syntax syntax.txt /*syntax* syntax-highlighting syntax.txt /*syntax-highlighting* syntax-loading syntax.txt /*syntax-loading* @@ -7668,6 +7746,7 @@ v:lnum eval.txt /*v:lnum* v:mouse_col eval.txt /*v:mouse_col* v:mouse_lnum eval.txt /*v:mouse_lnum* v:mouse_win eval.txt /*v:mouse_win* +v:operator eval.txt /*v:operator* v:prevcount eval.txt /*v:prevcount* v:profiling eval.txt /*v:profiling* v:progname eval.txt /*v:progname* @@ -8074,7 +8153,6 @@ zip-extension pi_zip.txt /*zip-extension* zip-history pi_zip.txt /*zip-history* zip-manual pi_zip.txt /*zip-manual* zip-usage pi_zip.txt /*zip-usage* -zip_shq pi_zip.txt /*zip_shq* zj fold.txt /*zj* zk fold.txt /*zk* zl scroll.txt /*zl* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 996bc464..2848a7f3 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.1. Last change: 2007 May 12 +*todo.txt* For Vim version 7.1. Last change: 2008 Apr 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,50 +30,120 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. *known-bugs* -------------------- Known bugs and current work ----------------------- -Patch to make virtcol([123, '$']) do the right thing. (Michael Schaap) +Fix for matchparen HL doesn't work. beep. -Insert mode completion: CTRL-N and CTRL-P work differently and they both don't -work as expected. (Bernhard Walle, 2007 Feb 27) +dtrace runtime files. (Nico Weber) +check filetype detection with google code search. -When 'rightleft' is set the completion menu is positioned wrong. (Baha-Eddine -MOKADEM) +debian runtime files. (James Vega) -glob() doesn't work correctly with single quotes and 'shell' set to /bin/sh. -(Adri Verhoef, Charles Campbell 2007 Mar 26) +Patch to clean up shortpath_for_invalid_fname(). (Yegappan Lakshmanan, 2008 +Mar 31) -Splitting quickfix window messes up window layout. (Marius Gedminas, 2007 Apr -25) +When reallocating cmdline xp_pattern becomes invalid. Move expand_T xpc into +ccline? (Dominique Pelle) -Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 -(Martin Stubenschrott) - ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . +Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3 +laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1) +Works OK with Vim in an xterm. + +Patch to expand . Charles Campbell, 2008 Mar 19. + +After using for command line completion after ":ta blah" and getting E33 +(no tags file), further editing the command to e.g., ":echo 'blah'", the +command is not executed. + +Test this some more: +Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?') +Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', ''] +Backreference not cleared when retrying after \@<= fails? +(Brett Stahlman, 2008 March 8) + +Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23) + +Patch for netbeans.txt, Thoml, 2008 Mar 20 + +Problem with 'langmap' parsing. (James Vega, 2008 Jan 27) -Making the German sharp s uppercase doesn't work properly: one character less -is uppercased in "gUe". -Also: latin2 has the same character but it isn't uppercased there. +Problem with CTRL-F. (Charles Campbell, 2008 March 21) +Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c". +'lines' is 54. (2008 March 27) + +Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23) +Works OK when 'cmdheight' is 2. + +Win32: patch for if_python.c /tmp/vim-win64.diff.1 + +The utf class table is missing some entries: + 0x2212, minus sign + 0x2217, star + 0x2500, bar + 0x26ab, circle + +Mac: patch for mouse wheel scroll under Leopard. (Eckehard Berns, 2007 Dec 7) + +Mac: patch to make it build with GTK. (Ben Schmidt, 2008 Jan 5, update 2008 +Mar 29) Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is changed or the window is resized. -Mac: Patch for Mac GUI tabline. (Nicolas Weber, 2006 Jul 18, Update 2007 Feb) - New update v6 ~/tmp/guitab.v6.diff (Kyle Wheeler) +Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008 +Mar 5) Alternative: Kazuki Sakamoto, Mar 7. + +":emenu" works with the translated menu name. Should also work with the +untranslated name. Would need to store both the English and the translated +name. Patch by Bjorn Winckler, 2008 Mar 30. -When 'virtualedit' is set a "p" of a block just past the end of the line -inserts before the cursor. (Engelke) +C't: On utf-8 system, editing file with umlaut through Gnome results in URL +with %nn%nn, which is taken as two characters instead of one. +Try to reproduce at work. + +"echo 22,44" prints "22" on top of the command, the error messages causes +the rest not to be cleared. + +Patch for redo register. (Ben Schmidt, 2007 Oct 19) +Await response to question to make the register writable. + +Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct +1) + +Patch to make work in GTK with XIM. (Yukihiro Nakadaira, 2008 Feb +26) + +Find a way to include the regexp code: + http://vim-soc-regexp.googlecode.com/svn/ (sbboat one) +Await the two branches to be merged. +Await code to be put back into regexp.c to avoid duplication. +More testing needed to verify exactly the same matches are found. +Performance tests: +- ~/vim/test/veryslow.js (file from Daniel Fetchinson) +- ~/vim/test/slowsearch +- ~/vim/test/rgb.vim +- search for a.*e*exn in the vim executable. Go to last line to use + 'hlsearch'. +Use "\%#= to set the engine: 0 = automatic, 1 = backtracking, 2 = new. +Useful in tests. Using Aap to build Vim: add remarks about how to set personal preferences. Example on http://www.calmar.ws/tmp/aap.html -GTK: 'bsdir' doesn't work. Sometimes get a "gtk critical error". -Moved some code to append file name to further down in gui_gtk.c -gui_mch_browse(), but "last" value of 'bsdir' still doesn't work. +Patch for 'switchbuf' and tabs. (Yegappan Lakshmanan, 2008 Jan 27) -C syntax: "#define x {" The macro should terminate at the end of the line, -not continue in the next line. (Kelvin Lee, 2006 May 24) +Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26) +Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, 2007 +Jul 31) C syntax: {} inside () causes following {} to be highlighted as error. (Michalis Giannakidis, 2006 Jun 1) +Win32: use of get_short_pathname() is bad. Add comments for function +arguments. Check what happens for ":echo fnamemodify('c:\abc\abc', ':8')". +(Yegappan Lakshmanan, 2008 Mar 9) + +When 'diffopt' has "context:0" a single deleted line causes two folds to merge +and mess up syncing. (Austin Jennings, 2008 Jan 31) + Gnome improvements: Edward Catmur, 2007 Jan 7 Also use Save/Discard for other GUIs @@ -82,53 +152,67 @@ New PHP syntax file, use it? (Peter Hodge) 'foldcolumn' in modeline applied to wrong window when using a session. (Teemu Likonen, March 19) -Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26) +Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 +by Vissale Neang. (Martin Stubenschrott) +Asked Vissale to make the scripts more friendly for the Vim distribution. +New version received 2008 Jan 6. + +Cheng Fang made javacomplete. (2007 Aug 11) +Asked about latest version: 0.77.1 is on www.vim.org. More AmigaOS4 patches. (Peter Bengtsson, Nov 9) +Display problem when 'rightleft' is set, 'encoding' is "utf-8" and an illegal +byte is at the start of the line. (Dominique Pelle, 2008 Jan 12) + Add v:searchforward variable. Patch by Yakov Lerner, 2006 Nov 18. -Redraw problem in loop. (Yakov Lerner, 2006 Sep 7) +globpath() doesn't work as expected. The example shows using 'path', but the +"**8" form and upwards search are not supported. + +With Visual selection, "r" and then CTRL-C Visual mode is stopped but the +highlighting is not removed. + +Screen redrawing when continuously updating the buffer and resizing the +terminal. (Yakov Lerner, 2006 Sept 7) Add option settings to help ftplugin. (David Eggum, 2006 Dec 18) -Use new dutch wordlist for spelling? http://www.opentaal.org/ -See remarks from Adri, 2007 Feb 9. +Autoconf problem: when checking for iconv library we may add -L/usr/local/lib, +but when compiling further tests -liconv is added without the -L argument, +that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21) When opening quickfix window, disable spell checking? +When the current line is long (doesn't fit) the popup menu can't be seen. +Display it below the screen line instead of below the text line? +Patch by Francois Ingelrest, 2008 Mar 23. Another March 29, 30. + +Popup menu redraw: Instead of first redrawing the text and then drawing the +popup menu over it, first draw the new popup menu, remember its position and +size and then redraw the text, skipping the characters under the popup menu. +This should avoid flicker. Other solution by A.Politz, 2007 Aug 22. + +With a nasty spell file one can read past the end of the file and use lots of +memory. Patch by James Vega, 2007 June 20. + +Spell checking: Add a way to specify punctuation characters. Add the +superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079. + Windows 98: pasting from the clipboard with text from another application has a trailing NUL. (Joachim Hofmann) Perhaps the length specified for CF_TEXT isn't right? -Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for characters -with umlaut. (Joachim Hofmann) toupper_tab[] and tolower_tab[] are not filled -properly? - Completion: Scanning for tags doesn't check for typed key now and then? Hangs for about 5 seconds. Appears to be caused by finding include files with "foo/**" in 'path'. (Kalisiak, 2006 July 15) -Completion: When 'completeopt' has "longest" and there is one match the -message is "back at original" and typing a char doesn't leave completion mode. -(Igor Prischepoff, 2006 Oct 5) - -Completion: When using CTRL-X O and there is only "struct." before the cursor, -typing one char to reduce the matches, then BS completion stops. Should keep -completion if still no less than what we started with. - -Completion: don't stop completion when typing a space when completing full -lines? Also when completing file names? Only stop completion when there are -no matches? -After using BS completion only stops when typing a space. Many people want to -stop at non-word characters, e.g., '('. Add an option for this? Or check -vim_iswordc() before calling ins_compl_addleader()? - -searchpos() doesn't use match under cursor at start of line. (Viktor -Kojouharov, 2006 Nov 16) - -When FEAT_BYTEOFF is defined but FEAT_NETBEANS_INTG is not compiling fails. -Add FEAT_BYTEOFF to the check at line 1180 in feature.h +When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the +parenthesis escaped but not the space. That's inconsistent. Either escape +neither or both. No escaping might be best, because it doesn't depend on +particularities of the shell. (Zvi Har'El, 2007 Nov 10) +However, for backwards compatibility escaping might be necessary. Check if +the user put quotes around the expanded item? Color for cUserLabel should differ from case label, so that a mistake in a switch list is noticed: @@ -138,18 +222,27 @@ switch list is noticed: foobar: } -":s" command removes combining characters. (Ron Aaron, 2006 May 17, 2006 Dec 7) - Look at http://www.gtk-server.org/ . It has a Vim script implementation. +Netbeans problem. Use "nc -l 127.0.0.1 55555" for the server, then run gvim +with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then +go to Insert mode and add a few lines. Then backspacing every other time +moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25) + +Redraw problem when appending digraph causes line to wrap. (James Vega, 2007 +Sep 18) + Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov, 2007 Feb 8) Patch for Win32 clipboard under Cygwin. (Frodak Baksik, Feb 15) Sutcliffe says it works well. + Update 2007 May 22 for Vim 7.1 Win32: Patch for convert_filterW(). (Taro Muraoka, 2007 Mar 2) +Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7) + Win32: XPM support only works with path without spaces. Patch by Mathias Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31. New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other @@ -166,12 +259,14 @@ Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22) Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis, 2007 Feb 18) +Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems. Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages label. (Tsakiridis, 2007 Feb 18) -Win32: remote editing doesn't work when the current directory name contains -"[]". (Ivan Tishchenko, 2007 March 1) +Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen +with the more prompt. Caused by setting the guitablabel? (Thomas Michael +Engelke, 2007 Dec 20 - 2008 Jan 17) Win64: diff.exe crashes on Win64. (Julianne Bailey, 2006 Dec 12) Build another diff.exe somehow? @@ -179,15 +274,24 @@ Build another diff.exe somehow? Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing pointer in long and seek offset in 64 bit var. -When doing "gvim --remote-tab foo" while gvim is minimized the tab pages line -only shows the current label, not the others. +Pressing the 'pastetoggle' key doesn't update the statusline. (Jan Christoph +Ebersbach, 2008 Feb 1) -Problem finding swap file for recovery. (Gautam Iyer, 2006 May 16) +Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16. +Check for this and use iconv? (Edward L. Fox, 2007 Sep 12) +Does the conversion in the other direction work when 'filenecodings' is set +properly? -When setting 'keymap' twice the b:keymap_name variable isn't set. (Milan -Berta, 2007 Mar 9) Has something to do with 'iminsert'. +Cursor displayed in the wrong position when using 'numberwidth'. (James Vega, +2007 Jun 21) -Problem with CursorHoldI? (Max Dyckhoff, 2006 Nov 10) +If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work. + +F1 - F4 in an xterm produce a different escape sequence when used with a +modifier key. Need to catch three different sequences. Use K_ZF1, like +K_ZHOME? (Dickey, 2007 Dec 2) + +Problem finding swap file for recovery. (Gautam Iyer, 2006 May 16) UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear to work. (Tony Mechelynck, 2007 March 2) @@ -199,13 +303,8 @@ find_special_key() also has this problem. In debug mode, using CTRL-R = to evaluate a function causes stepping through the function. (Hari Krishna Dara, 2006 Jun 28) -":let &shiftwidth = 'asdf'" doesn't produce an error message. - C++ indenting wrong with "=". (James Kanze, 2007 Jan 26) -"zug" reports wrong file. problem with Namebuff? (Lawrence Kesteloot, 2006 Sep -10) - ":lockvar" should use copyID to avoid endless loop. Patch to use xterm mouse codes for screen. (Micah Cowan, 2007 May 8) @@ -213,14 +312,6 @@ Patch to use xterm mouse codes for screen. (Micah Cowan, 2007 May 8) Gvim: dialog for closing Vim should check if Vim is busy writing a file. Then use a different dialog: "busy saving, really quit? yes / no". -Win32: editing remote file d:\a[1]\aa.txt doesn't work. (Liu Yubao, 2006 May -29) - -"zw" doesn't appear to work. (Luis A Florit, 2006 Jun 23, 24) - -"dw" in a line with one character deletes the line. Vi and nvi don't do this. -Is it intentional or not? (Kjell Arne Rekaa) - Check other interfaces for changing curbuf in a wrong way. Patch like for if_ruby.c. @@ -232,38 +323,34 @@ character, don't offer "ignore" and "add to word list". The need_fileinfo flag is messy. Instead make the message right away and put it in keep_msg? -More-prompt is skipped when doing this; (Randall W. Morris, Jun 17) - :au - - b - - Editing a file remotely that matches 'wildignore' results in a "no match" error. Should only happen when there are wildards, not when giving the file name literally, and esp. if there is only one name. -When 'expandtab' is set then a Tab copied for 'copyindent' is expanded to -spaces, even when 'preserveindent' is set. (Alexei Alexandrov, Mar 7) - Test 61 fails sometimes. This is a timing problem: "sleep 2" sometimes takes longer than 2 seconds. +Changing 'guifont' in the console causes an uneccessary redraw. + +"vim -C" often has 'nocompatible', because it's set in some startup script. +Set 'compatible' after startup is done? Patch by James Vega, 2008 Feb 7. + VMS: while editing a file found in complex, Vim will save file into the first directory of the path and not to the original location of the file. (Zoltan Arpadffy) +VMS: VFC files are in some cases truncated during reading (Zoltan Arpadffy) + input() completion should not insert a backslash to escape a space in a file name? +IM turned of in preedit_end_cb. Patch by Takuhiro Nishioka, 2008 Feb 9. + getpos()/setpos() don't include curswant. getpos() could return a fifth element. setpos() could accept an optional fifth element. Ruby completion is insecure. Can this be fixed? -":confirm w" does give a prompt when 'readonly' is set, but not when the file -permissions are read-only. Both can be overruled by ":w!" thus it would be -logical to get a prompt for both. (Michael Schaap) - When 'backupskip' is set from $TEMP special characters need to be escaped. (patch by Grembowietz, 2007 Feb 26, not quite right) Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\(" @@ -278,9 +365,10 @@ Substituting an area with a line break with almost the same area does change the Visual area. Can this be fixed? (James Vega, 2006 Sept 15) Windows installer could add a "open in new tab of existing Vim" menu entry. - -:s/e/E/l not only lists but also shows line number. Is that right? -(Yakov Lerner, 2006 Jul 27) +Gvimext: patch to add "Edit with single Vim &tabbed" menu entry. +Just have two choices, always using one Vim and selecting between using an +argument list or opening each file in a separate tab. +(Erik Falor, 2008 Feb 6, patch is backwards) GUI: When combining fg en bg make sure they are not equal. @@ -289,22 +377,23 @@ Jun 5) Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21) -When 'bomb' is set or reset the file should be considered modified. (Tony -Mechelynck) Handle like 'endofline'. - Add an option to specify the character to use when a double-width character is moved to the next line. Default '>', set to a space to blank it out. Check that char is single width when it's set (compare with 'listchars'). -Update main.aap for installing on the Mac. - The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3) Session file creation: 'autochdir' causes trouble. Keep it off until after loading all files. -C completion: doesn't work after aa[0]->, where aa is an array of structures. -(W. de Hoog, 2006 Aug 12) +Add autocommand for when a tabpage is being closed. Also for when a tab page +has been created. + +Using ":make" blocks Vim. Allow running one make in the background (if the +shell supports it), catch errors in a file and update the error list on the +fly. A bit like "!make > file&" and repeating ":cf file". ":bgmake", +background make. ":bgcancel" interrupts it. +A.Politz may work on this. The spellfile plugin checks for a writable "spell" directory. A user may have a writable runtime directory without a "spell" directory, it could be created @@ -327,6 +416,9 @@ previous version. For Aap: include a config.arg.example file with hints how to use config.arg. +Command line completion when 'cmdheight' is maximum and 'wildmenu' is set, +only one buffer line displayed, causes display errors. + Linux distributions: - Suggest compiling xterm with --enable-tcap-query, so that nr of colors is known to Vim. 88 colors instead of 16 works better. See ":help @@ -348,9 +440,6 @@ Accessing file#var in a function should not need the g: prepended. When ":cn" moves to an error in the same line the message isn't shortened. Only skip shortening for ":cc"? -Win32: The matchparen plugin doesn't update the match when scrolling with the -mouse wheel. (Ilya Bobir, 2006 Jun 27) - Write "making vim work better" for the docs (mostly pointers): *nice* - sourcing $VIMRUNTIME/vimrc_example.vim - setting 'mouse' to "a" @@ -362,6 +451,15 @@ Campbell 2006 Jul 06. Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6) +":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim +Chase) + +A custom completion function in a ":command" cannot be a Funcref. (Andy +Wokula, 2007 Aug 25) + +Problem with using :redir in user command completion function? (Hari Krishna +Dara, 2006 June 21) + GTK: When maximizing Vim the result is slightly smaller, the filler border is not there, and the "maximize" button is still there. Clicking it again does give a maximized window. (Darren Hiebert) @@ -374,21 +472,20 @@ GDK_WINDOW_STATE_MAXIMIZED) and set it again? Another resizing problem when setting 'columns' and 'lines' to a very large number. (Tony Mechelynck, 2007 Feb 6) -Problem with using :redir in user command completion function? (Hari Krishna -Dara, 2006 June 21) +GTK: when using the -geom argument with an offset from the right edge and the +size is smaller than the default, the Vim window is not positioned properly. + +GTK: when editing a directory with the netrw plugin in a terminal and doing +":gui" Vim hangs in obtaining the selection. Workaround patch 7.1.209 is a +hack (timeout after 3 seconds). Why don't we get the selection here? After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center the cursor line. It works OK after some other commands. -Screen redrawing when continuously updating the buffer and resizing the -terminal. (Yakov Lerner, 2006 Sept 7) - Win32: Is it possible to have both postscript and Win32 printing? Does multi-byte printing with ":hardcopy" work? Add remark in documentation about this. -'thesaurus' doesn't work when 'infercase' is set. (Mohsin, 2006 May 30) - There should be something about spell checking in the user manual. Check: Running Vim in a console and still having connect to the X server for @@ -401,28 +498,18 @@ Jul 26, Gary Johnson) In the Netbeans interface add a "vimeval" function, so that the other side can check the result of has("patch13"). -":py" asks for an argument, ":py asd" then gives the error that ":py" isn't -implemented. Should already happen for ":py". - Add command modifier that skips wildcard expansion, so that you don't need to put backslashes before special chars, only for white space. -Win32 GUI: confirm() with zero default should not have a choice selected. - Win32: When the GUI tab pages line is displayed Vim jumps from the secondary to the primary monitor. (Afton Lewis, 2007 Mar 9) Old resizing problem? -GTK GUI: When the completion popup menu is used scrolling another window by -the scrollbar is OK, but using the scroll wheel it behaves line . - -"cit" used on deletes . Should not delete anything and start -insertion, like "ci'" does on "". (Michal Bozon) - -Allow more than 3 ":match" items. - The magic clipboard format "VimClipboard2" appears in several places. Should be only one. +"vim -C" often has 'nocompatible', because it's set somewhere in a startup +script. Do "set compatible" after startup? + It's difficult to debug numbered functions (function in a Dictionary). Print the function name before resolving it to a number? let d = {} @@ -433,13 +520,21 @@ the function name before resolving it to a number? Add a mark for the other end of the Visual area (VIsual pos). '< and '> are only set after Visual moded is ended. +Also add a variable for the Visual mode. So that this mode and '< '> can be +used to set what "gv" selects. (Ben Schmidt) + +Win32: When running ":make" and 'encoding' differs from the system locale, the +output should be converted. Esp. when 'encoding' is "utf-8". (Yongwei Wu) +Should we use 'termencoding' for this? + +Win32, NTFS: When editing an specific infostream directly and 'backupcopy' is +"auto" should detect this situation and work like 'backupcopy' is "yes". File +name is something like "c:\path\foo.txt:bar", includes a colon. (Alex +Jakushev, 2008 Feb 1) Small problem displaying diff filler line when opening windows with a script. (David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 ) -When pattern for ":sort" is empty, use last search pattern. Allows trying out -the pattern first. (Brian McKee) - Is it allowed that 'backupext' is empty? Problems when backup is in same dir as original file? If it's OK don't compare with 'patchmode'. (Thierry Closen) @@ -448,24 +543,42 @@ Jan 1) Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update Apr 28) -Patch for improving regexp speed by not freeing memory. (Alexei Alexandrov, -2007 Feb 6) +":mkview" isn't called with the right buffer argument. Happens when using +tabs and the autocommand "autocmd BufWinLeave * mkview". (James Vega, 2007 +Jun 18) xterm should be able to pass focus changes to Vim, so that Vim can check for buffers that changed. Perhaps in misc.c, function selectwindow(). Xterm 224 supports it! -Omni completion takes the wrong structure for variable arguments. (Bill -McCarthy, 2007 Feb 18) - When completing from another file that uses a different encoding completion text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is latin1. Example from Gombault Damien, 2007 Mar 24. -Completing ":echohl" argument should include "None". (Ori Avtalion) +Is it possible to use "foo#var" instead of "g:foo#var" inside a function? + +Spell menu: When using the Popup menu to select a replacement word, +":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use "z=" +somehow? Or use a new function. + +In gvim the backspace key produces a backspace character, but on Linux the +VERASE key is Delete. Set VERASE to Backspace? (patch by Stephane Chazelas, +2007 Oct 16) + +TermResponse autocommand isn't always triggered when using vimdiff. (Aron +Griffis, 2007 Sep 19) + +Patch for configure.in to support cross-compiling: Marc Haisenko, 2007 Sep 24. +Again 2007 Dec 12, 2008 Jan 9. Some more from Philip Prindeville, 2007 Dec 18. +Patch for /usr/local: Michael Haubenwallner, 2008 Jan 11 + +Patch for supporting #rrggbb in color terminals. Patch by Matt Wozniski. Vim 7.2: +- Change all use of mch_memmove(p, p + x, STRLEN(p + x) + 1) to a macro: + VIM_STRCPY(p, p + x) +- Rename doc/ada.txt to doc/ft_ada.txt? - Search offset doesn't work for multibyte character. Patch from Yukihiro Nakadaira, 2006 Jul 18. Changes the offset from counting bytes to counting characters. @@ -473,6 +586,7 @@ Vim 7.2: Make all tutor files available in utf-8. - Remove ! for ":cgetfile" and ":lgetfile". (patch from Yegappan Lakshmanan, 2007 Mar 9) +- Add patch for 'relativenumber' option? Markus Heidelberg, 2008 Feb 21 - Add blowfish encryption. Openssl has an implementation. Also by Paul Kocher (LGPL), close to original. Mohsin also has some ideas. Take four bytes and turn them into unsigned to avoid byte-order problems. @@ -503,7 +617,7 @@ Patches: - ml_append_string(): efficiently append to an existing line. (Brad Beveridge, 2006 Aug 26) Use in some situations, e.g., when pasting a character at a time? -- gettabvar() and settabvar() functions. (Yegappan Lakshmanan, 2006 Sep 8) +- gettabvar() and settabvar() functions. (Yegappan Lakshmanan, 2007 Sep 13) - recognize hex numbers better. (Mark Manning, 2006 Sep 13) @@ -520,7 +634,7 @@ Awaiting updated patches: - when 'macatsui' is off should we always convert to "macroman" and ignore 'termencoding'? 9 HTML indenting can be slow. Caused by using searchpair(). Can search() - be used instead? + be used instead? A.Politz is looking into a solution. 8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24) 8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible. Aric Blumer has a patch for this. He will update the patch for 6.3. @@ -528,8 +642,7 @@ Awaiting updated patches: Update 2004 Sep 6. How does this work? Missing comments. - Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav - Smilauer, 2004 Sep 13, fix Oct 31) - Asked for improvements 2004 Dec 20. + Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30) 8 Add a few more command names to the menus. Patch from Jiri Brezina (28 feb 2002). Will mess the translations... 7 ATTENTION dialog choices are more logical when "Delete it' appears @@ -566,7 +679,9 @@ Awaiting updated patches: Tcl implementation ~/vim/HierAssist/ ) taglist() add argument to specify maximum number of matches. useful for interactive things or completion. -7 Make globpath() also work with upwards search. (Brian Medley) + col('^') column of first non-white character. + Can use "len(substitute(getline('.'), '\S.*', '', '')) + + 1", but that's ugly. 7 Add patch from Benoit Cerrina to integrate Vim and Perl functions better. Now also works for Ruby (2001 Nov 10) - Patch from Herculano de Lima Einloft Neto for better formatting of the @@ -727,8 +842,6 @@ Win32 GUI known bugs: console, go back to Vim and click "reload" in the dialog for the changed file: Window moves with the cursor! Put focus event in input buffer and let generic Vim code handle it? -8 When activating the Vim window with mouse click, don't move cursor to - mouse position. Catch WM_MOUSEACTIVATE. (Luevelsmeyer) 8 Win32: When mouse is hidden and in the toolbar, moving it won't make it appear. (Sami Salonen) 8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that @@ -1069,10 +1182,10 @@ Macintosh: "Small" problems: +- Can't disable terminal flow control, to enable the use of CTRL-S and + CTRL-Q. Add an option for it? - When using e_secure in do_one_cmd() mention the command being executed, otherwise it's not clear where it comes from. -8 When disabling FEAT_CMDL_COMPL compilation fails. Would need to avoid - using parse_compl_arg() in eval.c and uc_scan_attr(). 9 For Turkish vim_tolower() and vim_toupper() also need to use utf_ functions for characters below 0x80. (Sertacyildiz) 9 When the last edited file is a help file, using '0 in a new Vim doesn't @@ -1133,7 +1246,6 @@ Macintosh: delay should not be interpreted as a keycode. (Hans Ginzel) 7 ":botright 1 new" twice causes all window heights to be changed. Make the bottom window only bigger as much as needed. -7 "[p" doesn't work in Visual mode. (David Brown) 7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. Remove? (Dan Sharp) 9 User commands use the context of the script they were defined in. This @@ -1144,9 +1256,6 @@ Macintosh: 8 The Japanese message translations for MS-Windows are called ja.sjis.po, but they use encoding cp932. Rename the file and check that it still works. -9 When a syntax region does not use "keepend" and a contained item does use - "extend", this makes the outer region stop at the end of the contained - region. (Lutz Eymers) Another example Nov 14 2002. 8 A very long message in confirm() can't be quit. Make this possible with CTRL-C. 7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X @@ -1176,8 +1285,6 @@ Macintosh: 9 When getting focus while writing a large file, could warn for this file being changed outside of Vim. Avoid checking this while the file is being written. -9 The "Error detected while processing modelines" message should have an - error number. 7 The message in bt_dontwrite_msg() could be clearer. 8 The script ID that is stored with an option and displayed with ":verbose set" isn't reset when the option is set internally. For example when @@ -1517,6 +1624,7 @@ Documentation: look at the help for 'winaltkeys'. 7 Add a help.vim plugin that maps to jump to the next tag in || and (and ) to the previous tag. + Patch by Balazs Kezes, 2007 Dec 30. Remark from A. Politz. - Check text editor compendium for vi and Vim remarks. @@ -1610,6 +1718,8 @@ Spell checking: - Considering Hunspell 1.1.4: What does MAXNGRAMSUGS do? Is COMPLEXPREFIXES necessary when we have flags for affixes? +- Support spelling words in CamelCase as if they were two separate words. + Requires some option to enable it. (Timothy Knox) - There is no Finnish spell checking file. For openoffic Voikko is now used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/ (Teemu Likonen) @@ -1675,6 +1785,8 @@ Spell checking: http://spellchecker.mozdev.org/source.html http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/ author: Kevin Hendricks +8 It is currently not possible to mark "can not" as rare, because "can" and + "not" are good words. Find a way to let "rare" overrule "good"? 8 Make "en-rare" spell file? Ask Charles Campbell. 8 The English dictionaries for different regions are not consistent in their use of words with a dash. @@ -1686,6 +1798,8 @@ Spell checking: Diff mode: +9 Instead invoking an external diff program, use builtin code. One can be + found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c 8 Use diff mode to show the changes made in a buffer (compared to the file). Use an unnamed buffer, like doing: new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis @@ -1767,6 +1881,9 @@ Multi-byte characters: More generic solution: support a filter (e.g., by calling a function). 8 When a file was converted from 'fileencoding' to 'encoding', a tag search should also do this on the search pattern. (Andrzej M. Ostruszka) +8 When filtering changes the encoding 'fileencoding' may not work. E.g., + when using xxd and 'fileencoding' is "utf-16". Add an option to set a + different fileencoding for filter output? 7 When converting a file fails, mention which byte could not be converted, so that the user can fix the problem. 8 Add configure option to be able to disable using the iconv library. (Udo @@ -1775,7 +1892,14 @@ Multi-byte characters: 8 Should add test for using various commands with multi-byte characters. 8 'infercase' doesn't work with multi-byte characters. 8 toupper() function doesn't handle byte count changes. -7 When searching, should order of composing characters be ignored? +7 Searching and composing characters: + When searching, should order of composing characters be ignored? + Add special item to match with a composing character, zero-width, so that + one can replace a base character and keep the composing characters. + Add a special item to match with a composing character, so that composing + characters can be manipulated. + Add a modifier to ignore composing characters, only compare base + characters. Useful for Hebrew (Ron Aaron) 8 Should implement 'delcombine' for command line editing. 8 Detect overlong UTF-8 sequences and handle them like illegal bytes. 8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte @@ -2003,6 +2127,8 @@ Syntax highlighting: Built-in script language: +8 Make the filename and line number available to script functions, so that + they can give useful debugging info. The whole call stack would be ideal. 7 Execute a function with standard option values. No need to save and restore option values. Especially useful for new options. Problem: how to avoid a performance penalty (esp. for string options)? @@ -2250,8 +2376,6 @@ Messages: When switching to another file and screen scrolls because of the long message and return must be typed, don't scroll the screen back before redrawing. -7 Add an option, which is a regexp, that disables warning messages which - match that regexp (Tsirkin). 8 When address range is wrong you only get "Invalid range". Be a bit more specific: Negative, beyond last line, reverse range? Include the text. 8 Make it possible to ignore errors for a moment ('errorignore'?). Another @@ -2661,6 +2785,8 @@ Insert mode completion/expansion: Requires remembering a number of insertions. 8 Add 'f' flag to 'complete': Expand file names. Also apply 'complete' to whole line completion. +- Add a flag to 'complete' to only scan local header files, not system + header files. (Andri Moell) - Make it possible to search include files in several places. Use the 'path' option? Can this be done with the dictionary completion (use wildcards in the file name)? @@ -2720,11 +2846,14 @@ Command line editing: Command line completion: +8 Completing ":r ~br" should find matching user names. 8 Change expand_interactively into a flag that is passed as an argument. 8 With command line completion after '%' and '#', expand current/alternate file name, so it can be edited. Also with modifiers, such as "%:h". 8 When completing command names, either sort them on the long name, or list them with the optional part inside []. +8 Add an option to ignore case when doing interactive completion. So that + ":e file" also lists "Filelist" (sorted after matching case matches). 7 Completion of ":map x ": fill in the current mapping, so that it can be edited. (Sven Guckes) - For 'wildmenu': Simplify "../bar" when possible. @@ -2769,6 +2898,9 @@ Insert mode: Perhaps it can be allowed a single time, to be able to do "10axyz". Nesting this further is confusing. ":map 5aabc" works only once from Insert mode. +8 When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with + the cursor in the same position and the text didn't change continue the + same change, so that "." repeats the whole insert. 7 Use CTRL-G to repeat what follows. Useful for inserting a character multiple times or repeating CTRL-Y. 7 Use 'matchpairs' for 'showmatch': When inserting a character check if it @@ -2790,7 +2922,14 @@ Insert mode: 'cindent', 'smartindent': +9 ") :" confuses continuation line: (Colin Bennett, 2007 Dec 14) + cout << "a" + << ") :" + << "y"; 8 Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17) +8 Why are continuation lines outside of a {} block not indented? E.g.: + long_type foo = + value; 8 Java: Inside an anonymous class, after an "else" or "try" the indent is too small. (Vincent Bergbauer) Problem of using {} inside (), 'cindent' doesn't work then. @@ -2903,7 +3042,8 @@ Text objects: 8 Add text object for any kind of parens, also multi-byte ones. 7 Add text object for current search pattern: "a/" and "i/". Makes it possible to turn text highlighted for 'hlsearch' into a Visual area. -8 Add a way to make an ":omap" for a user-defined text object. +8 Add a way to make an ":omap" for a user-defined text object. Requires + changing the starting position in oap->start. 8 Add "gp" and "gP" commands: insert text and make sure there is a single space before it, unless at the start of the line, and after it, unless at the end of the line or before a ".". @@ -2990,6 +3130,7 @@ More advanced repeating commands: - Add "." command for visual mode: redo last visual command (e.g. ":fmt"). 7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember the command line so that it can be repeated? +- Add "gn": repeat last movement command. Including count. - Add "." command after operator: repeat last command of same operator. E.g. "c." will repeat last change, also when "x" used since then (Webb). "y." will repeat last yank. @@ -3136,24 +3277,29 @@ Searching: "\d". 7 Add a way to specify characters in or form. Could be \%. -8 Flags that apply to the whole pattern. - This works for all places where a regexp is used. - Add "\q" to not store this pattern as the last search pattern? 8 Add an argument after ":s/pat/str/" for a range of matches. For example, ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. +8 When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji + Fisher) redraw if some options are set while 'hlsearch' is set? 8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" commands. (Kahn) It would work like ":noh" is used after that command. Also: An extra flag to do this once, and a flag to keep the existing search pattern. +- Make 'hlsearch' a local/global option, so that it can be disabled in some + of the windows. - Add \%h{group-name}; to search for a specific highlight group. Add \%s{syntax-group}; to search for a specific syntax group. - Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) Or translate the pattern to a Vim one. Don't switch on with an option for typed commands/mappings/functions, it's too confusing. Use "\@@" in the pattern, to avoid incompatibilities. -7 Add POSIX regexp, like Nvi, with 'extended' option? It's like very-magic. +8 Add a way to access the last substitute text, what is used for ":s//~/". + Can't use the ~ register, it's already used for drag & drop. - Remember flags for backreferenced items, so that "*" can be used after it. Check with "\(\S\)\1\{3}". (Hemmerling) +8 Flags that apply to the whole pattern. + This works for all places where a regexp is used. + Add "\q" to not store this pattern as the last search pattern? - Add flags to search command (also for ":s"?): i ignore case I use case @@ -3206,11 +3352,18 @@ Searching: Undo: +9 After undo/redo, in the message show whether the buffer is modified or + not. 8 Undo tree: visually show the tree somehow (Damian Conway) Show only the leaves, indicating how many changed from the branch and the timestamp? Put branch with most recent change on the left, older changes get more indent? +8 See ":e" as a change operation, find the changes and add them to the + undo info. Also be able to undo the "Reload file" choice for when a file + was changed outside of Vim. + Would require doing a diff between the buffer text and the file and + storing the differences. 8 Search for pattern in undo tree, showing when it happened and the text state, so that you can jump to it. - Persistent undo: store undo in a file. @@ -3218,8 +3371,6 @@ Undo: before some time/date can be flushed. 'undopersist' gives maximum time to keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and extension: ".filename.un~" (like swapfile but "un~" instead of "swp"). -8 See ":e" as a change operation, find the changes and add them to the - undo info. Needed for when an external tool changes the file. - Make it possible to undo all the commands from a mapping, including a trailing unfinished command, e.g. for ":map K iX^[r". - When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not @@ -3318,6 +3469,7 @@ Viminfo: name. (Schild) 8 Keep the last used directory of the file browser (File/Open menu). 8 Remember the last used register for "@@". +8 Remember the redo buffer, so that "." works after restarting. 8 Remember a list of last accessed files. To be used in the "File.Open Recent" menu. Default is to remember 10 files or so. Also remember which files have been read and written. How to display @@ -3336,6 +3488,11 @@ Modelines: 8 Before trying to execute a modeline, check that it looks like one (valid option names). If it's very wrong, silently ignore it. Ignore a line that starts with "Subject: ". +- Add an option to whitelist options that are allowed in a modeline. This + would allow careful users to use modelines, e.g., only allowing + 'shiftwidth'. +- Add an option to let modelines only set local options, not global ones + such as 'encoding'. - When an option value is coming from a modeline, do not carry it over to another edited file? Would need to remember the value from before the modeline setting. @@ -3417,6 +3574,7 @@ Multiple Windows: Marks: +8 Add ten marks for last changed files: ':0, ':1, etc. One mark per file. 8 When cursor is first moved because of scrolling, set a mark at this position. (Rimon Barr) Use '-. 8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? @@ -3575,6 +3733,8 @@ Debug mode: Various improvements: +8 ":sign unplace * file={filename}" should work. Also: ":sign unplace * + buffer={bufnr}". So one can remove all signs for one file/buffer. 7 Add plugins for formatting? Should be able to make a choice depending on the language of a file (English/Korean/Japanese/etc.). Setting the 'langformat' option to "chinese" would load the @@ -3582,6 +3742,7 @@ Various improvements: The plugin would set 'formatexpr' and define the function being called. Edward L. Fox explains how it should be done for most Asian languages. (2005 Nov 24) + Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23) 7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next ("vatv"). 7 [< to move to previous xml/html tag, e.g., previous
  • . ]< to move to @@ -3601,6 +3762,8 @@ Various improvements: 7 Support using ":vert" with User commands. Add expandable items . Do the same for ":browse" and ":confirm"? For ":silent" and ":debug" apply to the whole user command. + More general: need a way to access command modifiers in a user command. + Assign them to a v: variable? 7 Allow a window not to have a statusline. Makes it possible to use a window as a buffer-tab selection. 7 Add an invisible buffer which can be edited. For use in scripts that want diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt index 28a28dd4..b8e2c330 100644 --- a/runtime/doc/uganda.txt +++ b/runtime/doc/uganda.txt @@ -1,4 +1,4 @@ -*uganda.txt* For Vim version 7.1. Last change: 2007 May 05 +*uganda.txt* For Vim version 7.1. Last change: 2008 Jan 10 VIM REFERENCE MANUAL by Bram Moolenaar @@ -128,7 +128,7 @@ Note: MODIFIED_BY define. ============================================================================== -Kibaale Children's Centre *kcc* +Kibaale Children's Centre *kcc* *Kibaale* *charity* Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the south of Uganda, near Tanzania, in East Africa. The area is known as Rakai @@ -177,9 +177,9 @@ breaking out (measles and cholera have been a problem). Summer 1994 to summer 1995 I spent a whole year at the centre, working as a volunteer. I have helped to expand the centre and worked in the area of water and sanitation. I learned that the help that the KCC provides really helps. -Now that I'm back in Holland, I would like to continue supporting KCC. To do -this I'm raising funds and organizing the sponsorship program. Please -consider one of these possibilities: +When I came back to Holland, I wanted to continue supporting KCC. To do this +I'm raising funds and organizing the sponsorship program. Please consider one +of these possibilities: 1. Sponsor a child in primary school: 17 euro a month (or more). 2. Sponsor a child in secondary school: 25 euro a month (or more). @@ -278,11 +278,10 @@ Others: Transfer to one of these accounts if possible: Address to send checks to: stichting ICCF Holland Bram Moolenaar - Molenstraat 2 - 2161 HP Lisse - The Netherlands + Finsterruetihof 1 + 8134 Adliswil + Switzerland -This address is expected to be valid for a long time. The address in Venlo -will not be valid after June 2006. +This address is expected to be valid for a long time. vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/usr_22.txt b/runtime/doc/usr_22.txt index f872331e..d708cbc5 100644 --- a/runtime/doc/usr_22.txt +++ b/runtime/doc/usr_22.txt @@ -1,4 +1,4 @@ -*usr_22.txt* For Vim version 7.1. Last change: 2006 Apr 24 +*usr_22.txt* For Vim version 7.1. Last change: 2007 Aug 14 VIM USER MANUAL - by Bram Moolenaar @@ -10,7 +10,7 @@ ways to browse the directory tree. There are commands to jump to a file that is mentioned in another. And Vim remembers which files have been edited before. -|22.1| The file explorer +|22.1| The file browser |22.2| The current directory |22.3| Finding a file |22.4| The buffer list @@ -20,7 +20,7 @@ before. Table of contents: |usr_toc.txt| ============================================================================== -*22.1* The file explorer +*22.1* The file browser Vim has a plugin that makes it possible to edit a directory. Try this: > @@ -29,85 +29,121 @@ Vim has a plugin that makes it possible to edit a directory. Try this: > Through the magic of autocommands and Vim scripts, the window will be filled with the contents of the directory. It looks like this: - " Press ? for keyboard shortcuts ~ - " Sorted by name (.bak,~,.o,.h,.info,.swp,.obj,.orig,.rej at end of list) ~ - "= /home/mool/vim/vim6/runtime/doc/ ~ - ../ ~ - check/ ~ - Makefile ~ - autocmd.txt ~ - change.txt ~ - eval.txt~ ~ - filetype.txt~ ~ - help.txt.info ~ +" ============================================================================ ~ +" Netrw Directory Listing (netrw v109) ~ +" Sorted by name ~ +" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~ +" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec ~ +" ============================================================================ ~ +../ ~ +./ ~ +check/ ~ +Makefile ~ +autocmd.txt ~ +change.txt ~ +eval.txt~ ~ +filetype.txt~ ~ +help.txt.info ~ You can see these items: -1. A comment about using ? to get help for the functionality of the file - explorer. -2. The second line mentions how the items in the directory are listed. They - can be sorted in several ways. -3. The third line is the name of the current directory. -4. The "../" directory item. This is the parent directory. -5. The directory names. -6. The ordinary file names. As mentioned in the second line, some are not - here but "at the end of the list". -7. The less ordinary file names. You are expected to use these less often, - therefore they have been moved to the end. + +1. The name of the browsing tool and its version number +2. The name of the browsing directory +3. The method of sorting (may be by name, time, or size) +4. How names are to be sorted (directories first, then *.h files, + *.c files, etc) +5. How to get help (use the key), and an abbreviated listing + of available commands +6. A listing of files, including "../", which allows one to to list + the parent directory. If you have syntax highlighting enabled, the different parts are highlighted -to make it easier to spot them. +so as to make it easier to spot them. You can use Normal mode Vim commands to move around in the text. For example, -move to a file and press . Now you are editing that file. To go back -to the explorer use ":edit ." again. CTRL-O also works. - Try using while the cursor is on a directory name. The result is -that the explorer moves into that directory and displays the items found +move the cursor atop a file and press ; you will then be editing that +file. To go back to the browser use ":edit ." again, or use ":Explore". +CTRL-O also works. + +Try using while the cursor is atop a directory name. The result is +that the file browser moves into that directory and displays the items found there. Pressing on the first directory "../" moves you one level higher. Pressing "-" does the same thing, without the need to move to the "../" item first. -You can press ? to get short help on the things you can do in the explorer. -This is what you get: - - " : open file or directory ~ - " o : open new window for file/directory ~ - " O : open file in previously visited window ~ - " p : preview the file ~ - " i : toggle size/date listing ~ - " s : select sort field r : reverse sort ~ - " - : go up one level c : cd to this dir ~ - " R : rename file D : delete file ~ - " :help file-explorer for detailed help ~ - -The first few commands are for selecting a file to display. Depending on what -command you use, the file appears somewhere: - - Uses the current window. - o Opens a new window. - O Uses the previously visited window. - p Uses the preview window, and moves the cursor back - into the explorer window. |preview-window| - -The following commands are used to display other information: - - i Display the size and date for the file. Using i again - will hide the information. - s Use the field the cursor is in to sort on. First - display the size and date with i. Then Move the - cursor to the size of any file and press s. The files - will now be sorted on size. Press s while the cursor - is on a date and the items will be sorted on date. - r reverse the sorting order (either size or date) - -There are a few extra commands: - - c Change the current directory to the displayed - directory. You can then type an ":edit" command for - one of the files without prepending the path. - R Rename the file under the cursor. You will be - prompted for the new name. - D Delete the file under the cursor. You will get a - prompt to confirm this. +You can press to get help on the things you can do in the netrw file +browser. This is what you get: > + + 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help + + MAPS netrw-maps + .............Help.......................................|netrw-help| + .............Browsing...................................|netrw-cr| + ............Deleting Files or Directories..............|netrw-delete| + -................Going Up...................................|netrw--| + a................Hiding Files or Directories................|netrw-a| + mb...............Bookmarking a Directory....................|netrw-mb| + gb...............Changing to a Bookmarked Directory.........|netrw-gb| + c................Make Browsing Directory The Current Dir....|netrw-c| + d................Make A New Directory.......................|netrw-d| + D................Deleting Files or Directories..............|netrw-D| + ............Edit File/Directory Hiding List............|netrw-ctrl-h| + i................Change Listing Style.......................|netrw-i| + ............Refreshing the Listing.....................|netrw-ctrl-l| + o................Browsing with a Horizontal Split...........|netrw-o| + p................Use Preview Window.........................|netrw-p| + P................Edit in Previous Window....................|netrw-p| + q................Listing Bookmarks and History..............|netrw-q| + r................Reversing Sorting Order....................|netrw-r| +< (etc) + +The key thus brings you to a netrw directory browsing contents help page. +Its a regular help page; use the usual |CTRL-]| to jump to tagged help items +and |CTRL-O| to jump back. + +To select files for display and editing: (with the cursor is atop a filename) + + Open the file in the current window. |netrw-cr| + o Horizontally split window and display file |netrw-o| + v Vertically split window and display file |netrw-v| + p Use the |preview-window| |netrw-p| + P Edit in the previous window |netrw-P| + t Open file in a new tab |netrw-t| + +The following normal-mode commands may be used to control the browser display: + + i Controls listing style (thin, long, wide, and tree). + The long listing includes size and date information. + s Repeatedly pressing s will change the way the files + are sorted; one may sort on name, modification time, + or size. + r Reverse the sorting order. + +As a sampling of extra normal-mode commands: + + c Change Vim's notion of the current directory to be + the same as the browser directory. (see + |g:netrw_keepdir| to control this, too) + R Rename the file or directory under the cursor; a + prompt will be issued for the new name. + D Delete the file or directory under the cursor; a + confirmation request will be issued. + mb gb Make bookmark/goto bookmark + + +One may also use command mode; again, just a sampling: + + :Explore [directory] Browse specified/current directory + :NetrwSettings A comprehensive list of your current netrw + settings with help linkage. + +The netrw browser is not limited to just your local machine; one may use +urls such as: (that trailing / is important) + + :Explore ftp://somehost/path/to/dir/ + :e scp://somehost/path/to/dir/ + +See |netrw-browse| for more. ============================================================================== *22.2* The current directory @@ -255,8 +291,8 @@ solution for you: > The buffer "one.txt" disappears from the screen, but Vim still knows that you are editing this buffer, so it keeps the modified text. This is called a hidden buffer: The buffer contains text, but you can't see it. - The ":hide" command argument is another command. It makes that command -behave like the 'hidden' option was set. You could also set this option + The argument of ":hide" is another command. ":hide" makes that command +behave as if the 'hidden' option was set. You could also set this option yourself. The effect is that when any buffer is abandoned, it becomes hidden. Be careful! When you have hidden buffers with changes, don't exit Vim without making sure you have saved all the buffers. diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt index 713dd42f..6eb2b22f 100644 --- a/runtime/doc/usr_27.txt +++ b/runtime/doc/usr_27.txt @@ -1,4 +1,4 @@ -*usr_27.txt* For Vim version 7.1. Last change: 2006 Apr 24 +*usr_27.txt* For Vim version 7.1. Last change: 2007 Nov 10 VIM USER MANUAL - by Bram Moolenaar @@ -516,7 +516,7 @@ items mentioned above can be combined. FINDING A CALIFORNIA LICENSE PLATE -A sample license place number is "1MGU103". It has one digit, three uppercase +A sample license plate number is "1MGU103". It has one digit, three uppercase letters and three digits. Directly putting this into a search pattern: > /\d\u\u\u\d\d\d diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt index 40ea33c6..cd07d83b 100644 --- a/runtime/doc/usr_29.txt +++ b/runtime/doc/usr_29.txt @@ -1,4 +1,4 @@ -*usr_29.txt* For Vim version 7.1. Last change: 2006 Apr 24 +*usr_29.txt* For Vim version 7.1. Last change: 2007 Nov 10 VIM USER MANUAL - by Bram Moolenaar @@ -384,7 +384,7 @@ pairs of {} at the same level. "]}" jumps to the end. When writing C++ or Java, the outer {} block is for the class. The next level of {} is for a method. When somewhere inside a class use "[m" to find the -previous start of a method. "]m" finds the next end of a method. +previous start of a method. "]m" finds the next start of a method. Additionally, "[]" moves backward to the end of a function and "]]" moves forward to the start of the next function. The end of a function is defined @@ -497,7 +497,7 @@ use: > :set path+=/usr/local/X11 -When there are many subdirectories, you an use the "*" wildcard. Example: > +When there are many subdirectories, you can use the "*" wildcard. Example: > :set path+=/usr/*/include diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt index 5f4b5577..942a15a7 100644 --- a/runtime/doc/usr_30.txt +++ b/runtime/doc/usr_30.txt @@ -1,4 +1,4 @@ -*usr_30.txt* For Vim version 7.1. Last change: 2007 Apr 22 +*usr_30.txt* For Vim version 7.1. Last change: 2007 Nov 10 VIM USER MANUAL - by Bram Moolenaar @@ -451,7 +451,7 @@ in your text. The second time, Vim takes out the 4 spaces and puts in a (thus taking you to column 8). Thus Vim uses as many s as possible, and then fills up with spaces. When backspacing it works the other way around. A will always delete -the amount specified with 'softtabstop'. Then are used as many as +the amount specified with 'softtabstop'. Then s are used as many as possible and spaces to fill the gap. The following shows what happens pressing a few times, and then using . A "." stands for a space and "------->" for a . diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 64cf78d3..ab912538 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.1. Last change: 2007 Apr 26 +*usr_41.txt* For Vim version 7.1. Last change: 2008 Feb 20 VIM USER MANUAL - by Bram Moolenaar @@ -582,6 +582,7 @@ String manipulation: str2nr() convert a string to a number printf() format a string according to % items escape() escape characters in a string with a '\' + shellescape() escape a string for use with a shell command tr() translate characters from one set to another strtrans() translate a string to make it printable tolower() turn a string to lowercase @@ -797,6 +798,7 @@ Interactive: confirm() let the user make a choice getchar() get a character from the user getcharmod() get modifiers for the last typed character + feedkeys() put characters in the typeahead queue input() get a line from the user inputlist() let the user pick an entry from a list inputsecret() get a line from the user without showing it @@ -838,6 +840,7 @@ Various: cscope_connection() check if a cscope connection exists did_filetype() check if a FileType autocommand was used eventhandler() check if invoked by an event handler + getpid() get process ID of Vim libcall() call a function in an external library libcallnr() idem, returning a number @@ -2238,7 +2241,7 @@ that could be ~/.vim/after/compiler. *41.14* Writing a plugin that loads quickly *write-plugin-quickload* A plugin may grow and become quite long. The startup delay may become -noticeable, while you hardly every use the plugin. Then it's time for a +noticeable, while you hardly ever use the plugin. Then it's time for a quickload plugin. The basic idea is that the plugin is loaded twice. The first time user diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 8c564c61..acbe3fec 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -1,4 +1,4 @@ -*various.txt* For Vim version 7.1. Last change: 2008 Jan 11 +*various.txt* For Vim version 7.1. Last change: 2008 Jan 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -123,7 +123,7 @@ g8 Print the hex values of the bytes used in the *:#!* :#!{anything} Ignored, so that you can start a Vim script with: > - #!/usr/bin/env vim -S + #!vim -S echo "this is a Vim script" quit < @@ -226,7 +226,8 @@ g8 Print the hex values of the bytes used in the ":!echo ! \! \\!" executes "echo ls ! \!". After the command has been executed, the timestamp of the current file is checked |timestamp|. - There cannot be a '|' in {cmd}, see |:bar|. + A '|' in {cmd} is passed to the shell, you cannot use + it to append a Vim command. See |:bar|. A newline character ends {cmd}, what follows is interpreted as a following ":" command. However, if there is a backslash before the newline it is removed @@ -362,7 +363,8 @@ H *+profile* |:profile| command m *+python* Python interface |python| m *+python/dyn* Python interface |python-dynamic| |/dyn| N *+quickfix* |:make| and |quickfix| commands -N *+reltime* |reltime()| function +N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, + 'redrawtime' option B *+rightleft* Right to left typing |'rightleft'| m *+ruby* Ruby interface |ruby| m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| @@ -435,10 +437,11 @@ N *+X11* Unix only: can restore window title |X11| :redi[r] >> {file} Redirect messages to file {file}. Append if {file} already exists. {not in Vi} +:redi[r] @{a-zA-Z} :redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the contents of the register if its name is given - uppercase {A-Z}. For backward compatibility, the ">" - after the register name can be omitted. {not in Vi} + uppercase {A-Z}. The ">" after the register name is + optional. {not in Vi} :redi[r] @{a-z}>> Append messages to register {a-z}. {not in Vi} :redi[r] @*> @@ -674,7 +677,11 @@ g CTRL-A Only when Vim was compiled with MEM_PROFILING defined :helpgrep uganda\c < Example for searching in French help: > :helpgrep backspace@fr -< Cannot be followed by another command, everything is +< The pattern does not support line breaks, it must + match within one line. You can use |:grep| instead, + but then you need to get the list of help files in a + complicated way. + Cannot be followed by another command, everything is used as part of the pattern. But you can use |:execute| when needed. Compressed help files will not be searched (Debian diff --git a/runtime/doc/vim-fr.1 b/runtime/doc/vim-fr.1 index 3753a3b2..58434406 100644 --- a/runtime/doc/vim-fr.1 +++ b/runtime/doc/vim-fr.1 @@ -143,7 +143,7 @@ Place le curseur sur la ligne "num" dans le premier fichier. Si "num" est omis, le curseur sera placé sur la dernière ligne. .TP +/{motif} -Place le curseur sur la première occurence de {motif} dans le premier fichier. +Place le curseur sur la première occurrence de {motif} dans le premier fichier. Voir ":help search\-pattern" pour connaître les motifs de recherches disponibles. .TP @@ -258,7 +258,7 @@ est quitte. .TP \-h -Donne une aide succinte sur les arguments et les options de la ligne de +Donne une aide succincte sur les arguments et les options de la ligne de commande. Après cela, .B Vim quitte. @@ -269,7 +269,7 @@ Si a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de fichiers de droite à gauche et les claviers hébreu, cette option lance .B Vim -en mode Hebreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. +en mode Hébreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. Sinon, un message d'erreur est émis et .B Vim quitte. @@ -295,7 +295,7 @@ d' .TP \-M N'autorise aucune modification. les options 'modifiable' et 'write' sont -desactivées, de sorte que les changements ne sont pas autorisés et que les +désactivées, de sorte que les changements ne sont pas autorisés et que les fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées pour autoriser les modifications. .TP diff --git a/runtime/doc/vim-fr.UTF-8.1 b/runtime/doc/vim-fr.UTF-8.1 index 72009f29..aa2c3c95 100644 --- a/runtime/doc/vim-fr.UTF-8.1 +++ b/runtime/doc/vim-fr.UTF-8.1 @@ -143,7 +143,7 @@ Place le curseur sur la ligne "num" dans le premier fichier. Si "num" est omis, le curseur sera placé sur la dernière ligne. .TP +/{motif} -Place le curseur sur la première occurence de {motif} dans le premier fichier. +Place le curseur sur la première occurrence de {motif} dans le premier fichier. Voir ":help search\-pattern" pour connaître les motifs de recherches disponibles. .TP @@ -258,7 +258,7 @@ est émis et quitte. .TP \-h -Donne une aide succinte sur les arguments et les options de la ligne de +Donne une aide succincte sur les arguments et les options de la ligne de commande. Après cela, .B Vim quitte. @@ -269,7 +269,7 @@ Si a été compilé avec le support de la fonctionnalité RIGHTLEFT pour l'édition de fichiers de droite à gauche et les claviers hébreu, cette option lance .B Vim -en mode Hebreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. +en mode Hébreu, c.-à-d. avec les options 'hkmap' et 'rightleft' activées. Sinon, un message d'erreur est émis et .B Vim quitte. @@ -295,7 +295,7 @@ d'écrire le fichier. .TP \-M N'autorise aucune modification. les options 'modifiable' et 'write' sont -desactivées, de sorte que les changements ne sont pas autorisés et que les +désactivées, de sorte que les changements ne sont pas autorisés et que les fichiers ne peuvent pas être écrits. Note : ces options peuvent être activées pour autoriser les modifications. .TP diff --git a/runtime/doc/vim.man.info b/runtime/doc/vim.man.info deleted file mode 100755 index 133f9a0be01f5a39787995d2bea96380029c31a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 582 zcwTjoze_?<6vxj~DF?~6rXYesT3WM$99tv3@l5WA(o}(ecVaLEJ}_9tukf(s7TpT~3$flxP;TI7&*os2v5sa;G1>*qwS;DR zptzOP{AFwInwqJBVrrlmQD{b=RQu_h|G%={R+Mtem;u@kxFxzA0w`4dB)tHthp)w&=sufcj%UXT{zV{y3X;l+F)k z+OAL@VM{q1wKew=SQD@-otuzZxh(+`uz>W3hy$bMmF+MNVVbUBQZA_!L$j&rcqX+S I-`(4UZ(Upo%m4rY diff --git a/runtime/doc/vim2html.pl b/runtime/doc/vim2html.pl old mode 100644 new mode 100755 diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index f95b2da8..eb49c438 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 7.1. Last change: 2007 Mar 17 +*windows.txt* For Vim version 7.1. Last change: 2007 Oct 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -146,7 +146,7 @@ CTRL-W v *CTRL-W_v* 1. a width was not specified, 2. 'equalalways' is set, 3. 'eadirection' isn't "ver", and - 4. one of the other windows are wider than the current or new + 4. one of the other windows is wider than the current or new window. Note: In other places CTRL-Q does the same as CTRL-V, but here it doesn't! @@ -1033,8 +1033,8 @@ list of buffers. |unlisted-buffer| [!]. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. -:[N]b[uffer][!] {filename} - Edit buffer for {filename} from the buffer list. See +:[N]b[uffer][!] {bufname} + Edit buffer for {bufname} from the buffer list. See |:buffer-!| for [!]. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. @@ -1045,8 +1045,8 @@ list of buffers. |unlisted-buffer| also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. -:[N]sb[uffer] {filename} - Split window and edit buffer for {filename} from the buffer +:[N]sb[uffer] {bufname} + Split window and edit buffer for {bufname} from the buffer list. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. Note: If what you want to do is split the buffer, make a copy diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 20719aa2..5f1707dd 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2007 May 15 +" Last Change: 2008 Apr 01 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -317,6 +317,9 @@ au BufNewFile,BufRead *.cs setf cs " Cdrdao TOC au BufNewFile,BufRead *.toc setf cdrtoc +" Cdrdao config +au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao setf cdrdaoconf + " Cfengine au BufNewFile,BufRead cfengine.conf setf cfengine @@ -346,12 +349,22 @@ else au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.moc,*.tcc,*.inl setf cpp endif -" .h files can be C, Ch or C++, set c_syntax_for_h if you want C, -" ch_syntax_for_h if you want Ch. -au BufNewFile,BufRead *.h - \ if exists("c_syntax_for_h") | setf c | - \ elseif exists("ch_syntax_for_h") | setf ch | - \ else | setf cpp | endif +" .h files can be C, Ch C++, ObjC or ObjC++. +" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is +" detected automatically. +au BufNewFile,BufRead *.h call s:FTheader() + +func! s:FTheader() + if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1 + setf objc + elseif exists("c_syntax_for_h") + setf c + elseif exists("ch_syntax_for_h") + setf ch + else + setf cpp + endif +endfunc " Ch (CHscript) au BufNewFile,BufRead *.chf setf ch @@ -473,12 +486,18 @@ au BufNewFile,BufRead *.cpy \ setf cobol | \ endif +" Coco/R +au BufNewFile,BufRead *.atg setf coco + " Cold Fusion au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf " Configure scripts au BufNewFile,BufRead configure.in,configure.ac setf config +" CUDA Cumpute Unified Device Architecture +au BufNewFile,BufRead *.cu setf cuda + " WildPackets EtherPeek Decoder au BufNewFile,BufRead *.dcd setf dcd @@ -514,6 +533,9 @@ au BufNewFile,BufRead */debian/control setf debcontrol " Debian Sources.list au BufNewFile,BufRead /etc/apt/sources.list setf debsources +" Deny hosts +au BufNewFile,BufRead denyhosts.conf setf denyhosts + " ROCKLinux package description au BufNewFile,BufRead *.desc setf desc @@ -594,8 +616,8 @@ func! s:FTe() setf eiffel endfunc -" ERicsson LANGuage -au BufNewFile,BufRead *.erl setf erlang +" ERicsson LANGuage; Yaws is erlang too +au BufNewFile,BufRead *.erl,*.yaws setf erlang " Elm Filter Rules file au BufNewFile,BufRead filter-rules setf elmfilt @@ -640,11 +662,14 @@ au BufNewFile,BufRead *.mas,*.master setf master " Forth au BufNewFile,BufRead *.fs,*.ft setf forth +" Reva Forth +au BufNewFile,BufRead *.frt setf reva + " Fortran if has("fname_case") au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95 setf fortran endif -au BufNewFile,BufRead *.f,*.for,*.fpp,*.ftn,*.f77,*.f90,*.f95 setf fortran +au BufNewFile,BufRead *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95 setf fortran " FStab au BufNewFile,BufRead fstab,mtab setf fstab @@ -658,6 +683,14 @@ au BufNewFile,BufRead *.mo,*.gdmo setf gdmo " Gedcom au BufNewFile,BufRead *.ged setf gedcom +" GIT +autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit +autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig +autocmd BufNewFile,BufRead .msg.[0-9]* + \ if getline(1) =~ '^From.*# This line is ignored.$' | + \ setf gitsendemail | + \ endif + " Gkrellmrc au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc @@ -736,6 +769,9 @@ au BufNewFile,BufRead *.html.m4 setf htmlm4 " HTML Cheetah template au BufNewFile,BufRead *.tmpl setf htmlcheetah +" Host config +au BufNewFile,BufRead /etc/host.conf setf hostconf + " Hyper Builder au BufNewFile,BufRead *.hb setf hb @@ -919,6 +955,9 @@ au BufNewFile,BufRead *.lou,*.lout setf lout " Lua au BufNewFile,BufRead *.lua setf lua +" Linden Scripting Language (Second Life) +au BufNewFile,BufRead *.lsl setf lsl + " Lynx style file (or LotusScript!) au BufNewFile,BufRead *.lss setf lss @@ -930,7 +969,7 @@ au BufNewFile,BufRead *.m4 au BufNewFile,BufRead *.mgp setf mgp " Mail (for Elm, trn, mutt, muttng, rn, slrn) -au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]._-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail +au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail " Mail aliases au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases setf mailaliases @@ -984,6 +1023,9 @@ func! s:FTm() endif endfunc +" Mathematica notebook +au BufNewFile,BufRead *.nb setf mma + " Maya Extension Language au BufNewFile,BufRead *.mel setf mel @@ -1002,6 +1044,9 @@ au BufNewFile,BufRead *.mgl setf mgl " MMIX or VMS makefile au BufNewFile,BufRead *.mms call s:FTmms() +" Symbian meta-makefile definition (MMP) +au BufNewFile,BufRead *.mmp setf mmp + func! s:FTmms() let n = 1 while n < 10 @@ -1072,8 +1117,7 @@ au BufRead,BufNewFile *.mu setf mupad au BufNewFile,BufRead *.mush setf mush " Mutt setup file (also for Muttng) -au BufNewFile,BufRead Mutt{ng,}rc setf muttrc -au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc') +au BufNewFile,BufRead Mutt{ng,}rc setf muttrc " Nano au BufNewFile,BufRead /etc/nanorc,.nanorc setf nanorc @@ -1166,6 +1210,9 @@ au BufNewFile,BufRead *.pas setf pascal " Delphi project file au BufNewFile,BufRead *.dpr setf pascal +" PDF +au BufNewFile,BufRead *.pdf setf pdf + " Perl if has("fname_case") au BufNewFile,BufRead *.pl,*.PL call s:FTpl() @@ -1203,10 +1250,9 @@ au BufNewFile,BufRead *.pm au BufNewFile,BufRead *.pod setf pod " Php, php3, php4, etc. -au BufNewFile,BufRead *.php,*.php\d setf php - -" Phtml -au BufNewFile,BufRead *.phtml setf phtml +" Also Phtml (was used for PHP 2 in the past) +" Also .ctp for Cake template file +au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php " Pike au BufNewFile,BufRead *.pike,*.lpc,*.ulpc,*.pmod setf pike @@ -1374,6 +1420,9 @@ au BufNewFile,BufRead INDEX,INFO " Prolog au BufNewFile,BufRead *.pdb setf prolog +" Promela +au BufNewFile,BufRead *.pml setf promela + " Protocols au BufNewFile,BufRead /etc/protocols setf protocols @@ -1403,7 +1452,7 @@ au BufNewFile,BufRead *.reg au BufNewFile,BufRead *.rib setf rib " Rexx -au BufNewFile,BufRead *.rexx,*.rex setf rexx +au BufNewFile,BufRead *.rexx,*.rex,*.jrexx,*.rxj,*.orx setf rexx " R (Splus) if has("fname_case") @@ -1434,7 +1483,7 @@ func! s:FTr() for n in range(1, max) " Rebol is easy to recognize, check for that first - if getline(n) =~ '\' + if getline(n) =~? '\' setf rebol return endif @@ -1716,8 +1765,7 @@ func! s:FTRules() for line in config_lines if line =~ s:ft_rules_udev_rules_pattern let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "") - let amatch_dirname = substitute(expand(''), '^\(.*\)/[^/]\+$', '\1', "") - if amatch_dirname == udev_rules + if expand(':p:h') == udev_rules setf udevrules endif break @@ -1783,6 +1831,9 @@ au BufNewFile,BufRead *.stp setf stp " Standard ML au BufNewFile,BufRead *.sml setf sml +" Sratus VOS command macro +au BufNewFile,BufRead *.cm setf voscm + " Sysctl au BufNewFile,BufRead /etc/sysctl.conf setf sysctl @@ -1889,8 +1940,8 @@ func! s:FTtex() return endfunc -" Context -au BufNewFile,BufRead tex/context/*/*.tex setf context +" ConTeXt +au BufNewFile,BufRead tex/context/*/*.tex,*.mkii,*.mkiv setf context " Texinfo au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo @@ -2046,14 +2097,26 @@ au BufNewFile,BufRead *.msc,*.msf setf xmath au BufNewFile,BufRead *.ms \ if !s:FTnroff() | setf xmath | endif -" XML -au BufNewFile,BufRead *.xml - \ if getline(1) . getline(2) . getline(3) =~ ' " $Author: vimboss $ -" $Date: 2007/05/12 13:11:20 $ +" $Date: 2007/05/05 17:17:45 $ " Version: 4.2 -" $Revision: 1.6 $ +" $Revision: 1.3 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ " History: 24.05.2006 MK Unified Headers " 26.05.2006 MK ' should not be in iskeyword. diff --git a/runtime/ftplugin/bst.vim b/runtime/ftplugin/bst.vim index a5ef36c3..5e65aac3 100644 --- a/runtime/ftplugin/bst.vim +++ b/runtime/ftplugin/bst.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: bst " Author: Tim Pope -" $Id: bst.vim,v 1.4 2007/05/12 13:55:25 vimboss Exp $ +" $Id: bst.vim,v 1.1 2007/05/05 17:37:57 vimboss Exp $ if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim index 48055b0a..162205bc 100644 --- a/runtime/ftplugin/c.vim +++ b/runtime/ftplugin/c.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: C " Maintainer: Bram Moolenaar -" Last Change: 2005 Sep 01 +" Last Change: 2007 Sep 25 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -34,6 +34,11 @@ if has("vms") setlocal iskeyword+=$ endif +" When the matchit plugin is loaded, this makes the % command skip parens and +" braces in comments. +let b:match_words = &matchpairs +let b:match_skip = 's:comment\|string\|character' + " Win32 can filter files in the browse dialog if has("gui_win32") && !exists("b:browsefilter") if &ft == "cpp" diff --git a/runtime/ftplugin/cdrdaoconf.vim b/runtime/ftplugin/cdrdaoconf.vim new file mode 100644 index 00000000..86796eb8 --- /dev/null +++ b/runtime/ftplugin/cdrdaoconf.vim @@ -0,0 +1,18 @@ +" Vim filetype plugin file +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-09-18 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let s:cpo_save = &cpo +set cpo&vim diff --git a/runtime/ftplugin/changelog.vim b/runtime/ftplugin/changelog.vim index e9ec4d42..924d35da 100644 --- a/runtime/ftplugin/changelog.vim +++ b/runtime/ftplugin/changelog.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: generic Changelog file " Maintainer: Nikolai Weibull -" Latest Revision: 2007-05-06 +" Latest Revision: 2007-05-21 " Variables: " g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) - " description: the timeformat used in ChangeLog entries. @@ -131,7 +131,7 @@ if &filetype == 'changelog' " Regular expression used to find the end of a date entry if !exists('g:changelog_date_end_entry_search') - let g:changelog_date_entry_search = '^\s*$' + let g:changelog_date_end_entry_search = '^\s*$' endif diff --git a/runtime/ftplugin/cobol.vim b/runtime/ftplugin/cobol.vim index 681e15e9..203d7347 100644 --- a/runtime/ftplugin/cobol.vim +++ b/runtime/ftplugin/cobol.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: cobol " Author: Tim Pope -" $Id: cobol.vim,v 1.4 2007/05/12 13:28:48 vimboss Exp $ +" $Id: cobol.vim,v 1.1 2007/05/05 17:24:38 vimboss Exp $ " Insert mode mappings: " Normal mode mappings: < > << >> [[ ]] [] ][ diff --git a/runtime/ftplugin/denyhosts.vim b/runtime/ftplugin/denyhosts.vim new file mode 100644 index 00000000..86796eb8 --- /dev/null +++ b/runtime/ftplugin/denyhosts.vim @@ -0,0 +1,18 @@ +" Vim filetype plugin file +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-09-18 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let s:cpo_save = &cpo +set cpo&vim diff --git a/runtime/ftplugin/dosini.vim b/runtime/ftplugin/dosini.vim new file mode 100644 index 00000000..354b093e --- /dev/null +++ b/runtime/ftplugin/dosini.vim @@ -0,0 +1,13 @@ +" Vim filetype plugin file +" Language: Configuration File (ini file) for MSDOS/MS Windows +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-08-23 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:; commentstring=;\ %s formatoptions-=t formatoptions+=croql diff --git a/runtime/ftplugin/eruby.vim b/runtime/ftplugin/eruby.vim index 54046ef4..e437eea6 100644 --- a/runtime/ftplugin/eruby.vim +++ b/runtime/ftplugin/eruby.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: eRuby " Maintainer: Tim Pope -" Info: $Id: eruby.vim,v 1.6 2007/05/12 13:56:44 vimboss Exp $ +" Info: $Id: eruby.vim,v 1.10 2007/05/06 16:05:40 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns @@ -98,4 +98,4 @@ let b:undo_ftplugin = "setl cms< " let &cpo = s:save_cpo -" vim: nowrap sw=2 sts=2 ts=8 ff=unix: +" vim: nowrap sw=2 sts=2 ts=8: diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim new file mode 100644 index 00000000..9edb0556 --- /dev/null +++ b/runtime/ftplugin/gitcommit.vim @@ -0,0 +1,79 @@ +" Vim filetype plugin +" Language: git config file +" Maintainer: Tim Pope +" Last Change: 2007 Dec 16 + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +" allow gf to work even if in a subdirectory +let b:git_dir = expand("%:p:h") +let &l:path = fnamemodify(b:git_dir,':h').",".&l:path +let b:undo_ftplugin = "setl path<" + +if &textwidth == 0 + " make sure that log messages play nice with git-log on standard terminals + setlocal textwidth=72 + let b:undo_ftplugin = b:undo_ftplugin . " tw<" +endif + +if exists("g:no_gitcommit_commands") + finish +endif + +" Automatically diffing can be done with: +" autocmd FileType gitcommit DiffGitCached | wincmd p +command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(0,b:git_dir,) + +function! s:diffcomplete(A,L,P) + let args = "" + let g:L = a:L + let g:P = a:P + if a:P <= match(a:L." -- "," -- ")+3 + let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n" + end + if exists("b:git_dir") && a:A !~ '^-' + let tree = fnamemodify(b:git_dir,':h') + if strpart(getcwd(),0,strlen(tree)) == tree + let args = args."\n".system("git diff --cached --name-only") + endif + endif + return args +endfunction + +function! s:gitdiffcached(bang,gitdir,...) + let tree = fnamemodify(a:gitdir,':h') + let name = tempname() + let prefix = "" + if strpart(getcwd(),0,strlen(tree)) != tree + if has("win32") + let oldgit = $GIT_DIR + let $GIT_DIR = a:gitdir + else + " Can't unset an env var, so use shell syntax instead + let prefix = 'GIT_DIR='.shellescape(a:gitdir).' ' + endif + endif + if a:0 + let extra = join(map(copy(a:000),has("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'")) + else + let extra = "-p --stat=".&columns + endif + call system(prefix."git diff --cached --no-color ".extra." > ".name) + if exists("l:oldgit") + let $GIT_DIR = oldgit + endif + exe "pedit ".name + wincmd P + let b:git_dir = a:gitdir + command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(0,b:git_dir,) + nnoremap q :q + set buftype=nowrite nobuflisted noswapfile nomodifiable + set filetype=diff includeexpr=substitute(v:fname,'^[ab]/','','') + if strpart(&l:path,0,strlen(tree)) != tree + let &l:path = tree.','.&l:path + endif +endfunction diff --git a/runtime/ftplugin/gitconfig.vim b/runtime/ftplugin/gitconfig.vim new file mode 100644 index 00000000..ee33baff --- /dev/null +++ b/runtime/ftplugin/gitconfig.vim @@ -0,0 +1,15 @@ +" Vim filetype plugin +" Language: git config file +" Maintainer: Tim Pope +" Last Change: 2007 Dec 16 + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) + finish +endif +let b:did_ftplugin = 1 + +setlocal formatoptions-=t formatoptions+=croql +setlocal comments=:#,:; commentstring=;\ %s + +let b:undo_ftplugin = "setl fo< com< cms<" diff --git a/runtime/ftplugin/gitsendemail.vim b/runtime/ftplugin/gitsendemail.vim new file mode 100644 index 00000000..a83e48af --- /dev/null +++ b/runtime/ftplugin/gitsendemail.vim @@ -0,0 +1,6 @@ +" Vim filetype plugin +" Language: git send-email message +" Maintainer: Tim Pope +" Last Change: 2007 Dec 16 + +runtime! ftplugin/mail.vim diff --git a/runtime/ftplugin/hostconf.vim b/runtime/ftplugin/hostconf.vim new file mode 100644 index 00000000..86796eb8 --- /dev/null +++ b/runtime/ftplugin/hostconf.vim @@ -0,0 +1,18 @@ +" Vim filetype plugin file +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-09-18 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let s:cpo_save = &cpo +set cpo&vim diff --git a/runtime/ftplugin/html.vim b/runtime/ftplugin/html.vim index 3d723315..4797f4b4 100644 --- a/runtime/ftplugin/html.vim +++ b/runtime/ftplugin/html.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: html " Maintainer: Dan Sharp -" Last Changed: 2006 Apr 26 +" Last Changed: 2007 Nov 20 " URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin if exists("b:did_ftplugin") | finish | endif @@ -13,63 +13,55 @@ let s:save_cpo = &cpo set cpo-=C setlocal commentstring= +setlocal matchpairs+=<:> if exists('&omnifunc') -" Distinguish between HTML versions -" To use with other HTML versions add another -" elseif condition to match proper DOCTYPE -setlocal omnifunc=htmlcomplete#CompleteTags + " Distinguish between HTML versions + " To use with other HTML versions add another + " elseif condition to match proper DOCTYPE + setlocal omnifunc=htmlcomplete#CompleteTags -if &filetype == 'xhtml' - let b:html_omni_flavor = 'xhtml10s' -else - let b:html_omni_flavor = 'html401t' -endif -let i = 1 -while i < 10 && i < line("$") - let line = getline(i) - if line =~ '' + let b:html_omni_flavor = 'html40' + endif + if line =~ '\' + let b:html_omni_flavor .= 't' + elseif line =~ '\' + let b:html_omni_flavor .= 'f' + else + let b:html_omni_flavor .= 's' + endif + endif + endif endif " HTML: thanks to Johannes Zellner and Benji Fisher. if exists("loaded_matchit") let b:match_ignorecase = 1 - let b:match_skip = 's:Comment' let b:match_words = '<:>,' . \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' . \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' . @@ -85,7 +77,7 @@ if has("gui_win32") endif " Undo the stuff we changed. -let b:undo_ftplugin = "setlocal commentstring<" +let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc<" \ " | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter" " Restore the saved compatibility options. diff --git a/runtime/ftplugin/lua.vim b/runtime/ftplugin/lua.vim index 3bc640f3..297833f4 100644 --- a/runtime/ftplugin/lua.vim +++ b/runtime/ftplugin/lua.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file. " Language: Lua 4.0+ " Maintainer: Max Ischenko -" Last Change: 2001 Sep 17 +" Last Change: 2008 Mar 25 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -16,7 +16,7 @@ let b:did_ftplugin = 1 setlocal fo-=t fo+=croql setlocal com=:-- -setlocal cms="--%s" +setlocal cms=--%s setlocal suffixesadd=.lua diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim index 88d7bca2..a58d2977 100644 --- a/runtime/ftplugin/man.vim +++ b/runtime/ftplugin/man.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: man " Maintainer: Nam SungHyun -" Last Change: 2006 Dec 04 +" Last Change: 2007 Nov 30 " To make the ":Man" command available before editing a manual page, source " this script from your startup vimrc file. @@ -41,13 +41,16 @@ if !exists("s:man_tag_depth") let s:man_tag_depth = 0 -if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5" - let s:man_sect_arg = "-s" - let s:man_find_arg = "-l" -else - let s:man_sect_arg = "" - let s:man_find_arg = "-w" -endif +let s:man_sect_arg = "" +let s:man_find_arg = "-w" +try + if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5" + let s:man_sect_arg = "-s" + let s:man_find_arg = "-l" + endif +catch /E145:/ + " Ignore the error in restricted mode +endtry func PreGetPage(cnt) if a:cnt == 0 diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim index 10ead8a1..53431c9b 100644 --- a/runtime/ftplugin/ocaml.vim +++ b/runtime/ftplugin/ocaml.vim @@ -3,9 +3,12 @@ " Mike Leary " Markus Mottl " Stefano Zacchiroli +" Vincent Aravantinos " URL: http://www.ocaml.info/vim/ftplugin/ocaml.vim -" Last Change: 2006 May 01 - Added .annot support for file.whateverext (SZ) -" 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM) +" Last Change: 2007 Sep 09 - Added .annot support for ocamlbuild, python not +" needed anymore (VA) +" 2006 May 01 - Added .annot support for file.whateverext (SZ) +" 2006 Apr 11 - Fixed an initialization bug; fixed ASS abbrev (MM) " 2005 Oct 13 - removed GPL; better matchit support (MM, SZ) " if exists("b:did_ftplugin") @@ -175,208 +178,401 @@ function OMLetFoldLevel(l) return '=' endfunction -" Vim support for OCaml .annot files (requires Vim with python support) +" Vim support for OCaml .annot files " -" Executing OCamlPrintType() function will display in the Vim bottom +" Last Change: 2007 Jul 17 +" Maintainer: Vincent Aravantinos +" License: public domain +" +" Originally inspired by 'ocaml-dtypes.vim' by Stefano Zacchiroli. +" The source code is quite radically different for we not use python anymore. +" However this plugin should have the exact same behaviour, that's why the +" following lines are the quite exact copy of Stefano's original plugin : +" +" << +" Executing Ocaml_print_type() function will display in the Vim bottom " line(s) the type of an ocaml value getting it from the corresponding .annot " file (if any). If Vim is in visual mode, should be "visual" and the " selected ocaml value correspond to the highlighted text, otherwise ( " can be anything else) it corresponds to the literal found at the current " cursor position. " -" .annot files are parsed lazily the first time OCamlPrintType is invoked; is -" also possible to force the parsing using the OCamlParseAnnot() function. +" Typing 't' (LocalLeader defaults to '\', see :h LocalLeader) +" will cause " Ocaml_print_type function to be invoked with the right +" argument depending on the current mode (visual or not). +" >> " -" Typing ',3' will cause OCamlPrintType function to be invoked with -" the right argument depending on the current mode (visual or not). +" If you find something not matching this behaviour, please signal it. " -" Copyright (C) <2003-2004> Stefano Zacchiroli +" Differences are: +" - no need for python support +" + plus : more portable +" + minus: no more lazy parsing, it looks very fast however +" +" - ocamlbuild support, ie. +" + the plugin finds the _build directory and looks for the +" corresponding file inside; +" + if the user decides to change the name of the _build directory thanks +" to the '-build-dir' option of ocamlbuild, the plugin will manage in +" most cases to find it out (most cases = if the source file has a unique +" name among your whole project); +" + if ocamlbuild is not used, the usual behaviour holds; ie. the .annot +" file should be in the same directory as the source file; +" + for vim plugin programmers: +" the variable 'b:_build_dir' contains the inferred path to the build +" directory, even if this one is not named '_build'. " -" Created: Wed, 01 Oct 2003 18:16:22 +0200 zack -" LastModified: Wed, 25 Aug 2004 18:28:39 +0200 zack +" Bonus : +" - latin1 accents are handled +" - lists are handled, even on multiple lines, you don't need the visual mode +" (the cursor must be on the first bracket) +" - parenthesized expressions, arrays, and structures (ie. '(...)', '[|...|]', +" and '{...}') are handled the same way + + " Copied from Stefano's original plugin : + " << + " .annot ocaml file representation + " + " File format (copied verbatim from caml-types.el) + " + " file ::= block * + " block ::= position position annotation * + " position ::= filename num num num + " annotation ::= keyword open-paren data close-paren + " + " is a space character (ASCII 0x20) + " is a line-feed character (ASCII 0x0A) + " num is a sequence of decimal digits + " filename is a string with the lexical conventions of O'Caml + " open-paren is an open parenthesis (ASCII 0x28) + " close-paren is a closed parenthesis (ASCII 0x29) + " data is any sequence of characters where is always followed by + " at least two space characters. + " + " - in each block, the two positions are respectively the start and the + " end of the range described by the block. + " - in a position, the filename is the name of the file, the first num + " is the line number, the second num is the offset of the beginning + " of the line, the third num is the offset of the position itself. + " - the char number within the line is the difference between the third + " and second nums. + " + " For the moment, the only possible keyword is \"type\"." + " >> + +" 1. Finding the annotation file even if we use ocamlbuild + + " In: two strings representing paths + " Out: one string representing the common prefix between the two paths + function! s:Find_common_path (p1,p2) + let temp = a:p2 + while matchstr(a:p1,temp) == '' + let temp = substitute(temp,'/[^/]*$','','') + endwhile + return temp + endfun -if !has("python") - finish -endif + " After call: + " - b:annot_file_path : + " path to the .annot file corresponding to the + " source file (dealing with ocamlbuild stuff) + " - b:_build_path: + " path to the build directory even if this one is + " not named '_build' + " - b:source_file_relative_path : + " relative path of the source file *in* the build + " directory ; this is how it is reffered to in the + " .annot file + function! s:Locate_annotation() + if !b:annotation_file_located + + silent exe 'cd' expand('%:p:h') + + let annot_file_name = expand('%:r').'.annot' + + " 1st case : the annot file is in the same directory as the buffer (no ocamlbuild) + let b:annot_file_path = findfile(annot_file_name,'.') + if b:annot_file_path != '' + let b:annot_file_path = getcwd().'/'.b:annot_file_path + let b:_build_path = '' + let b:source_file_relative_path = expand('%') + else + " 2nd case : the buffer and the _build directory are in the same directory + " .. + " / \ + " / \ + " _build .ml + " + let b:_build_path = finddir('_build','.') + if b:_build_path != '' + let b:_build_path = getcwd().'/'.b:_build_path + let b:annot_file_path = findfile(annot_file_name,'_build') + if b:annot_file_path != '' + let b:annot_file_path = getcwd().'/'.b:annot_file_path + endif + let b:source_file_relative_path = expand('%') + else + " 3rd case : the _build directory is in a directory higher in the file hierarchy + " (it can't be deeper by ocamlbuild requirements) + " .. + " / \ + " / \ + " _build ... + " \ + " \ + " .ml + " + let b:_build_path = finddir('_build',';') + if b:_build_path != '' + let project_path = substitute(b:_build_path,'/_build$','','') + let path_relative_to_project = substitute(expand('%:p:h'),project_path.'/','','') + let b:annot_file_path = findfile(annot_file_name,project_path.'/_build/'.path_relative_to_project) + let b:source_file_relative_path = substitute(expand('%:p'),project_path.'/','','') + else + let b:annot_file_path = findfile(annot_file_name,'**') + "4th case : what if the user decided to change the name of the _build directory ? + " -> we relax the constraints, it should work in most cases + if b:annot_file_path != '' + " 4a. we suppose the renamed _build directory is in the current directory + let b:_build_path = matchstr(b:annot_file_path,'^[^/]*') + if b:annot_file_path != '' + let b:annot_file_path = getcwd().'/'.b:annot_file_path + let b:_build_path = getcwd().'/'.b:_build_path + endif + let b:source_file_relative_path = expand('%') + else + " 4b. anarchy : the renamed _build directory may be higher in the hierarchy + " this will work if the file for which we are looking annotations has a unique name in the whole project + " if this is not the case, it may still work, but no warranty here + let b:annot_file_path = findfile(annot_file_name,'**;') + let project_path = s:Find_common_path(b:annot_file_path,expand('%:p:h')) + let b:_build_path = matchstr(b:annot_file_path,project_path.'/[^/]*') + let b:source_file_relative_path = substitute(expand('%:p'),project_path.'/','','') + endif + endif + endif + endif -python << EOF - -import re -import os -import os.path -import string -import time -import vim - -debug = False - -class AnnExc(Exception): - def __init__(self, reason): - self.reason = reason - -no_annotations = AnnExc("No type annotations (.annot) file found") -annotation_not_found = AnnExc("No type annotation found for the given text") -def malformed_annotations(lineno): - return AnnExc("Malformed .annot file (line = %d)" % lineno) - -class Annotations: - """ - .annot ocaml file representation - - File format (copied verbatim from caml-types.el) - - file ::= block * - block ::= position position annotation * - position ::= filename num num num - annotation ::= keyword open-paren data close-paren - - is a space character (ASCII 0x20) - is a line-feed character (ASCII 0x0A) - num is a sequence of decimal digits - filename is a string with the lexical conventions of O'Caml - open-paren is an open parenthesis (ASCII 0x28) - close-paren is a closed parenthesis (ASCII 0x29) - data is any sequence of characters where is always followed by - at least two space characters. - - - in each block, the two positions are respectively the start and the - end of the range described by the block. - - in a position, the filename is the name of the file, the first num - is the line number, the second num is the offset of the beginning - of the line, the third num is the offset of the position itself. - - the char number within the line is the difference between the third - and second nums. - - For the moment, the only possible keyword is \"type\"." - """ - - def __init__(self): - self.__filename = None # last .annot parsed file - self.__ml_filename = None # as above but s/.annot/.ml/ - self.__timestamp = None # last parse action timestamp - self.__annot = {} - self.__re = re.compile( - '^"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)\s+"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)$') - - def __parse(self, fname): - try: - f = open(fname) - line = f.readline() # position line - lineno = 1 - while (line != ""): - m = self.__re.search(line) - if (not m): - raise malformed_annotations(lineno) - line1 = int(m.group(1)) - col1 = int(m.group(3)) - int(m.group(2)) - line2 = int(m.group(4)) - col2 = int(m.group(6)) - int(m.group(5)) - line = f.readline() # "type(" string - lineno += 1 - if (line == ""): raise malformed_annotations(lineno) - type = [] - line = f.readline() # type description - lineno += 1 - if (line == ""): raise malformed_annotations(lineno) - while line != ")\n": - type.append(string.strip(line)) - line = f.readline() - lineno += 1 - if (line == ""): raise malformed_annotations(lineno) - type = string.join(type, "\n") - key = ((line1, col1), (line2, col2)) - if not self.__annot.has_key(key): - self.__annot[key] = type - line = f.readline() # position line - f.close() - self.__filename = fname - self.__ml_filename = vim.current.buffer.name - self.__timestamp = int(time.time()) - except IOError: - raise no_annotations - - def parse(self): - annot_file = os.path.splitext(vim.current.buffer.name)[0] + ".annot" - self.__parse(annot_file) - - def get_type(self, (line1, col1), (line2, col2)): - if debug: - print line1, col1, line2, col2 - if vim.current.buffer.name == None: - raise no_annotations - if vim.current.buffer.name != self.__ml_filename or \ - os.stat(self.__filename).st_mtime > self.__timestamp: - self.parse() - try: - return self.__annot[(line1, col1), (line2, col2)] - except KeyError: - raise annotation_not_found - -word_char_RE = re.compile("^[\w.]$") - - # TODO this function should recognize ocaml literals, actually it's just an - # hack that recognize continuous sequences of word_char_RE above -def findBoundaries(line, col): - """ given a cursor position (as returned by vim.current.window.cursor) - return two integers identify the beggining and end column of the word at - cursor position, if any. If no word is at the cursor position return the - column cursor position twice """ - left, right = col, col - line = line - 1 # mismatch vim/python line indexes - (begin_col, end_col) = (0, len(vim.current.buffer[line]) - 1) - try: - while word_char_RE.search(vim.current.buffer[line][left - 1]): - left = left - 1 - except IndexError: - pass - try: - while word_char_RE.search(vim.current.buffer[line][right + 1]): - right = right + 1 - except IndexError: - pass - return (left, right) - -annot = Annotations() # global annotation object - -def printOCamlType(mode): - try: - if mode == "visual": # visual mode: lookup highlighted text - (line1, col1) = vim.current.buffer.mark("<") - (line2, col2) = vim.current.buffer.mark(">") - else: # any other mode: lookup word at cursor position - (line, col) = vim.current.window.cursor - (col1, col2) = findBoundaries(line, col) - (line1, line2) = (line, line) - begin_mark = (line1, col1) - end_mark = (line2, col2 + 1) - print annot.get_type(begin_mark, end_mark) - except AnnExc, exc: - print exc.reason - -def parseOCamlAnnot(): - try: - annot.parse() - except AnnExc, exc: - print exc.reason - -EOF - -fun! OCamlPrintType(current_mode) - if (a:current_mode == "visual") - python printOCamlType("visual") - else - python printOCamlType("normal") - endif -endfun + if b:annot_file_path == '' + throw 'E484: no annotation file found' + endif + + silent exe 'cd' '-' + + let b:annotation_file_located = 1 + endif + endfun -fun! OCamlParseAnnot() - python parseOCamlAnnot() -endfun + " This in order to locate the .annot file only once + let b:annotation_file_located = 0 + +" 2. Finding the type information in the annotation file + + " a. The annotation file is opened in vim as a buffer that + " should be (almost) invisible to the user. + + " After call: + " The current buffer is now the one containing the .annot file. + " We manage to keep all this hidden to the user's eye. + function! s:Enter_annotation_buffer() + let s:current_pos = getpos('.') + let s:current_hidden = &l:hidden + set hidden + let s:current_buf = bufname('%') + if bufloaded(b:annot_file_path) + silent exe 'keepj keepalt' 'buffer' b:annot_file_path + else + silent exe 'keepj keepalt' 'view' b:annot_file_path + endif + endfun + + " After call: + " The original buffer has been restored in the exact same state as before. + function! s:Exit_annotation_buffer() + silent exe 'keepj keepalt' 'buffer' s:current_buf + let &l:hidden = s:current_hidden + call setpos('.',s:current_pos) + endfun + + " After call: + " The annot file is loaded and assigned to a buffer. + " This also handles the modification date of the .annot file, eg. after a + " compilation. + function! s:Load_annotation() + if bufloaded(b:annot_file_path) && b:annot_file_last_mod < getftime(b:annot_file_path) + call s:Enter_annotation_buffer() + silent exe "bunload" + call s:Exit_annotation_buffer() + endif + if !bufloaded(b:annot_file_path) + call s:Enter_annotation_buffer() + setlocal nobuflisted + setlocal bufhidden=hide + setlocal noswapfile + setlocal buftype=nowrite + call s:Exit_annotation_buffer() + let b:annot_file_last_mod = getftime(b:annot_file_path) + endif + endfun + + "b. 'search' and 'match' work to find the type information + + "In: - lin1,col1: postion of expression first char + " - lin2,col2: postion of expression last char + "Out: - the pattern to be looked for to find the block + " Must be called in the source buffer (use of line2byte) + function! s:Block_pattern(lin1,lin2,col1,col2) + let start_num1 = a:lin1 + let start_num2 = line2byte(a:lin1) - 1 + let start_num3 = start_num2 + a:col1 + let start_pos = '"'.b:source_file_relative_path.'" '.start_num1.' '.start_num2.' '.start_num3 + let end_num1 = a:lin2 + let end_num2 = line2byte(a:lin2) - 1 + let end_num3 = end_num2 + a:col2 + let end_pos = '"'.b:source_file_relative_path.'" '.end_num1.' '.end_num2.' '.end_num3 + return '^'.start_pos.' '.end_pos."$" + " rq: the '^' here is not totally correct regarding the annot file "grammar" + " but currently the annotation file respects this, and it's a little bit faster with the '^'; + " can be removed safely. + endfun + + "In: (the cursor position should be at the start of an annotation) + "Out: the type information + " Must be called in the annotation buffer (use of search) + function! s:Match_data() + " rq: idem as previously, in the following, the '^' at start of patterns is not necessary + keepj while search('^type($','ce',line(".")) == 0 + keepj if search('^.\{-}($','e') == 0 + throw "no_annotation" + endif + keepj if searchpair('(','',')') == 0 + throw "malformed_annot_file" + endif + endwhile + let begin = line(".") + 1 + keepj if searchpair('(','',')') == 0 + throw "malformed_annot_file" + endif + let end = line(".") - 1 + return join(getline(begin,end),"\n") + endfun + + "In: the pattern to look for in order to match the block + "Out: the type information (calls s:Match_data) + " Should be called in the annotation buffer + function! s:Extract_type_data(block_pattern) + call s:Enter_annotation_buffer() + try + if search(a:block_pattern,'e') == 0 + throw "no_annotation" + endif + call cursor(line(".") + 1,1) + let annotation = s:Match_data() + finally + call s:Exit_annotation_buffer() + endtry + return annotation + endfun + + "c. link this stuff with what the user wants + " ie. get the expression selected/under the cursor + + let s:ocaml_word_char = '\w|[À-ÿ]|''' + + "In: the current mode (eg. "visual", "normal", etc.) + "Out: the borders of the expression we are looking for the type + function! s:Match_borders(mode) + if a:mode == "visual" + let cur = getpos(".") + normal `< + let col1 = col(".") + let lin1 = line(".") + normal `> + let col2 = col(".") + let lin2 = line(".") + call cursor(cur[1],cur[2]) + return [lin1,lin2,col1-1,col2] + else + let cursor_line = line(".") + let cursor_col = col(".") + let line = getline('.') + if line[cursor_col-1:cursor_col] == '[|' + let [lin2,col2] = searchpairpos('\[|','','|\]','n') + return [cursor_line,lin2,cursor_col-1,col2+1] + elseif line[cursor_col-1] == '[' + let [lin2,col2] = searchpairpos('\[','','\]','n') + return [cursor_line,lin2,cursor_col-1,col2] + elseif line[cursor_col-1] == '(' + let [lin2,col2] = searchpairpos('(','',')','n') + return [cursor_line,lin2,cursor_col-1,col2] + elseif line[cursor_col-1] == '{' + let [lin2,col2] = searchpairpos('{','','}','n') + return [cursor_line,lin2,cursor_col-1,col2] + else + let [lin1,col1] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','ncb') + let [lin2,col2] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','nce') + if col1 == 0 || col2 == 0 + throw "no_expression" + endif + return [cursor_line,cursor_line,col1-1,col2] + endif + endif + endfun + + "In: the current mode (eg. "visual", "normal", etc.) + "Out: the type information (calls s:Extract_type_data) + function! s:Get_type(mode) + let [lin1,lin2,col1,col2] = s:Match_borders(a:mode) + return s:Extract_type_data(s:Block_pattern(lin1,lin2,col1,col2)) + endfun + + "d. main + "In: the current mode (eg. "visual", "normal", etc.) + "After call: the type information is displayed + if !exists("*Ocaml_get_type") + function Ocaml_get_type(mode) + call s:Locate_annotation() + call s:Load_annotation() + return s:Get_type(a:mode) + endfun + endif + + if !exists("*Ocaml_get_type_or_not") + function Ocaml_get_type_or_not(mode) + let t=reltime() + try + return Ocaml_get_type(a:mode) + catch + return "" + endtry + endfun + endif + + if !exists("*Ocaml_print_type") + function Ocaml_print_type(mode) + if expand("%:e") == "mli" + echohl ErrorMsg | echo "No annotations for interface (.mli) files" | echohl None + return + endif + try + echo Ocaml_get_type(a:mode) + catch /E484:/ + echohl ErrorMsg | echo "No type annotations (.annot) file found" | echohl None + catch /no_expression/ + echohl ErrorMsg | echo "No expression found under the cursor" | echohl None + catch /no_annotation/ + echohl ErrorMsg | echo "No type annotation found for the given text" | echohl None + catch /malformed_annot_file/ + echohl ErrorMsg | echo "Malformed .annot file" | echohl None + endtry + endfun + endif -map t :call OCamlPrintType("normal") -vmap t :call OCamlPrintType("visual") +" Maps + map t :call Ocaml_print_type("normal") + vmap t :call Ocaml_print_type("visual")`< let &cpoptions=s:cposet unlet s:cposet -" vim:sw=2 +" vim:sw=2 fdm=indent diff --git a/runtime/ftplugin/pdf.vim b/runtime/ftplugin/pdf.vim new file mode 100644 index 00000000..1ed99117 --- /dev/null +++ b/runtime/ftplugin/pdf.vim @@ -0,0 +1,89 @@ +" Vim filetype plugin file +" Language: PDF +" Maintainer: Tim Pope +" Last Change: 2007 Dec 16 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal commentstring=%%s +setlocal comments=:% +let b:undo_ftplugin = "setlocal cms< com< | unlet! b:match_words" + +if exists("g:loaded_matchit") + let b:match_words = '\<\%(\d\+\s\+\d\+\s\+\)obj\>:\,\,\:\,<<:>>' +endif + +if exists("g:no_plugin_maps") || exists("g:no_pdf_maps") || v:version < 700 + finish +endif + +if !exists("b:pdf_tagstack") + let b:pdf_tagstack = [] +endif + +let b:undo_ftplugin .= " | silent! nunmap | silent! nunmap " +nnoremap :call Tag() +" Inline, so the error from an empty tag stack will be simple. +nnoremap :if len(b:pdf_tagstack) > 0 call setpos('.',remove(b:pdf_tagstack, -1)) else exe "norm! \C-T>" endif + +function! s:Tag() + call add(b:pdf_tagstack,getpos('.')) + if getline('.') =~ '^\d\+$' && getline(line('.')-1) == 'startxref' + return s:dodigits(getline('.')) + elseif getline('.') =~ '/Prev\s\+\d\+\>\%(\s\+\d\)\@!' && expand("") =~ '^\d\+$' + return s:dodigits(expand("")) + elseif getline('.') =~ '^\d\{10\} \d\{5\} ' + return s:dodigits(matchstr(getline('.'),'^\d\+')) + else + let line = getline(".") + let lastend = 0 + let pat = '\<\d\+\s\+\d\+\s\+R\>' + while lastend >= 0 + let beg = match(line,'\C'.pat,lastend) + let end = matchend(line,'\C'.pat,lastend) + if beg < col(".") && end >= col(".") + return s:doobject(matchstr(line,'\C'.pat,lastend)) + endif + let lastend = end + endwhile + return s:notag() + endif +endfunction + +function! s:doobject(string) + let first = matchstr(a:string,'^\s*\zs\d\+') + let second = matchstr(a:string,'^\s*\d\+\s\+\zs\d\+') + norm! m' + if first != '' && second != '' + let oldline = line('.') + let oldcol = col('.') + 1 + if !search('^\s*'.first.'\s\+'.second.'\s\+obj\>') + exe oldline + exe 'norm! '.oldcol.'|' + return s:notag() + endif + endif +endfunction + +function! s:dodigits(digits) + let digits = 0 + substitute(a:digits,'^0*','','') + norm! m' + if digits <= 0 + norm! 1go + else + " Go one character before the destination and advance. This method + " lands us after a newline rather than before, if that is our target. + exe "goto ".(digits)."|norm! 1 " + endif +endfunction + +function! s:notag() + silent! call remove(b:pdf_tagstack,-1) + echohl ErrorMsg + echo "E426: tag not found" + echohl NONE +endfunction diff --git a/runtime/ftplugin/perl.vim b/runtime/ftplugin/perl.vim index b3078005..3f3e570b 100644 --- a/runtime/ftplugin/perl.vim +++ b/runtime/ftplugin/perl.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Perl " Maintainer: Dan Sharp -" Last Change: 2005 Dec 16 +" Last Change: 2007 Nov 30 " URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin if exists("b:did_ftplugin") | finish | endif @@ -42,12 +42,16 @@ set isfname+=: " Set this once, globally. if !exists("perlpath") if executable("perl") + try if &shellxquote != '"' let perlpath = system('perl -e "print join(q/,/,@INC)"') else let perlpath = system("perl -e 'print join(q/,/,@INC)'") endif let perlpath = substitute(perlpath,',.$',',,','') + catch /E145:/ + let perlpath = ".,," + endtry else " If we can't call perl to get its path, just default to using the " current directory and the directory of the current file. diff --git a/runtime/ftplugin/php.vim b/runtime/ftplugin/php.vim index 86cf89c0..c9a0bc72 100644 --- a/runtime/ftplugin/php.vim +++ b/runtime/ftplugin/php.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: php " Maintainer: Dan Sharp -" Last Changed: 2006 Jul 15 +" Last Changed: 2007 Nov 10 " URL: http://mywebpage.netscape.com/sharppeople/vim/ftplugin if exists("b:did_ftplugin") | finish | endif @@ -42,7 +42,9 @@ endif " ### " Provided by Mikolaj Machowski setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\? -setlocal iskeyword+=$ +" Disabled changing 'iskeyword', it breaks a command such as "*" +" setlocal iskeyword+=$ + if exists("loaded_matchit") let b:match_words = ',\:\,' . \ '\:\:\:\,' . @@ -55,15 +57,24 @@ if exists("loaded_matchit") endif " ### -if exists('&ofu') - setlocal ofu=phpcomplete#CompletePHP +if exists('&omnifunc') + setlocal omnifunc=phpcomplete#CompletePHP endif +" Section jumping: [[ and ]] provided by Antony Scriven +let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function' +let s:class = '\(abstract\s\+\|final\s\+\)*class' +let s:interface = 'interface' +let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)' +exe 'nno [[ ?' . escape(s:section, '|') . '?:nohls' +exe 'nno ]] /' . escape(s:section, '|') . '/:nohls' +exe 'ono [[ ?' . escape(s:section, '|') . '?:nohls' +exe 'ono ]] /' . escape(s:section, '|') . '/:nohls' setlocal commentstring=/*%s*/ " Undo the stuff we changed. -let b:undo_ftplugin = "setlocal cms< inc< isk<" . +let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" . \ " | unlet! b:browsefilter b:match_words | " . \ s:undo_ftplugin diff --git a/runtime/ftplugin/reva.vim b/runtime/ftplugin/reva.vim new file mode 100644 index 00000000..05c8bc32 --- /dev/null +++ b/runtime/ftplugin/reva.vim @@ -0,0 +1,25 @@ +" Vim ftplugin file +" Language: Reva Forth +" Version: 7.1 +" Last Change: 2008/01/11 +" Maintainer: Ron Aaron +" URL: http://ronware.org/reva/ +" Filetypes: *.rf *.frt +" NOTE: Forth allows any non-whitespace in a name, so you need to do: +" setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 +" +" This goes with the syntax/reva.vim file. + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +setlocal sts=4 sw=4 +setlocal com=s1:/*,mb:*,ex:*/,:\|,:\\ +setlocal fo=tcrqol +setlocal matchpairs+=\::; +setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim index 11652582..71801320 100644 --- a/runtime/ftplugin/ruby.vim +++ b/runtime/ftplugin/ruby.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Ruby " Maintainer: Gavin Sinclair -" Info: $Id: ruby.vim,v 1.11 2007/05/12 14:37:30 vimboss Exp $ +" Info: $Id: ruby.vim,v 1.39 2007/05/06 16:38:40 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns @@ -227,4 +227,4 @@ endfunction " differs on Windows. Email gsinclair@soyabean.com.au if you need help. " -" vim: nowrap sw=2 sts=2 ts=8 ff=unix: +" vim: nowrap sw=2 sts=2 ts=8: diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index 78fb6ec3..ca66597d 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Vim " Maintainer: Bram Moolenaar -" Last Change: 2006 Sep 26 +" Last Change: 2008 Feb 27 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -33,14 +33,20 @@ endif setlocal commentstring=\"%s " Move around functions. -noremap [[ m':call search('^\s*fu\%[nction]\>', "bW") -noremap ]] m':call search('^\s*fu\%[nction]\>', "W") -noremap [] m':call search('^\s*endf*\%[unction]\>', "bW") -noremap ][ m':call search('^\s*endf*\%[unction]\>', "W") +nnoremap [[ m':call search('^\s*fu\%[nction]\>', "bW") +vnoremap [[ m':exe "normal! gv"call search('^\s*fu\%[nction]\>', "bW") +nnoremap ]] m':call search('^\s*fu\%[nction]\>', "W") +vnoremap ]] m':exe "normal! gv"call search('^\s*fu\%[nction]\>', "W") +nnoremap [] m':call search('^\s*endf*\%[unction]\>', "bW") +vnoremap [] m':exe "normal! gv"call search('^\s*endf*\%[unction]\>', "bW") +nnoremap ][ m':call search('^\s*endf*\%[unction]\>', "W") +vnoremap ][ m':exe "normal! gv"call search('^\s*endf*\%[unction]\>', "W") " Move around comments -noremap ]" :call search('^\(\s*".*\n\)\@ -noremap [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") +nnoremap ]" :call search('^\(\s*".*\n\)\@ +vnoremap ]" :exe "normal! gv"call search('^\(\s*".*\n\)\@ +nnoremap [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") +vnoremap [" :exe "normal! gv"call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW") " Let the matchit plugin know what items can be matched. if exists("loaded_matchit") diff --git a/runtime/getdos.aap b/runtime/getdos.aap new file mode 100644 index 00000000..36f87a19 --- /dev/null +++ b/runtime/getdos.aap @@ -0,0 +1,4245 @@ +# This recipe was generated with ":mkdownload". +:recipe {fetch = ftp://ftp.vim.org/pub/vim/runtime/getdos.aap} +all fetch: + file = bugreport.vim + fetcha = ftp://ftp.vim.org/pub/vim/runtime/dos/%file% + @if get_md5(file) != "360c52a132ffe38372ee860cb91ca828": + :fetch {fetch = $fetcha} $file + :mkdir {f} doc + file = doc/makehtml.awk + @if get_md5(file) != "d82a03662d83b1a1c361a71032179ca2": + :fetch {fetch = $fetcha} $file + file = doc/maketags.awk + @if get_md5(file) != "004050fb560a03e3b80a7d387121ad48": + :fetch {fetch = $fetcha} $file + file = doc/vim2html.pl + @if get_md5(file) != "a36d7a0eb30f77bdbc3f1048ac907938": + :fetch {fetch = $fetcha} $file + file = doc/ada.txt + @if get_md5(file) != "f07b2ca65ea6e0beaaf7f42d43efadfd": + :fetch {fetch = $fetcha} $file + file = doc/arabic.txt + @if get_md5(file) != "8a5b93bcc1d04c034239b7c1024202dd": + :fetch {fetch = $fetcha} $file + file = doc/autocmd.txt + @if get_md5(file) != "4baa001c633fb2d97463ed608e93192e": + :fetch {fetch = $fetcha} $file + file = doc/change.txt + @if get_md5(file) != "f9c19ad1fdd6e6988ef108aaeaaa2544": + :fetch {fetch = $fetcha} $file + file = doc/cmdline.txt + @if get_md5(file) != "11031e5a5d6b9bc3a3f7beed7272eabe": + :fetch {fetch = $fetcha} $file + file = doc/debug.txt + @if get_md5(file) != "62f5da81e22b7481be04702f4abee724": + :fetch {fetch = $fetcha} $file + file = doc/debugger.txt + @if get_md5(file) != "8ec52a832260381874035a8d276420d8": + :fetch {fetch = $fetcha} $file + file = doc/develop.txt + @if get_md5(file) != "fe9de85c7fa02ca9eac35cdb9db64ccc": + :fetch {fetch = $fetcha} $file + file = doc/diff.txt + @if get_md5(file) != "92b43cb13a2e0d83dec86f8ef169efd0": + :fetch {fetch = $fetcha} $file + file = doc/digraph.txt + @if get_md5(file) != "3d4ccaa100f86d56ee44f0430ebdee64": + :fetch {fetch = $fetcha} $file + file = doc/editing.txt + @if get_md5(file) != "e51a3c07f1b3e95bf3e95fa86f445282": + :fetch {fetch = $fetcha} $file + file = doc/eval.txt + @if get_md5(file) != "6a65540df11b944efcca1d9a6a45ea88": + :fetch {fetch = $fetcha} $file + file = doc/farsi.txt + @if get_md5(file) != "a03717a5a3d602b1ee31c97bfad0246e": + :fetch {fetch = $fetcha} $file + file = doc/filetype.txt + @if get_md5(file) != "f0896a08e0eab5a713ff21d117c82402": + :fetch {fetch = $fetcha} $file + file = doc/fold.txt + @if get_md5(file) != "0a01c9d9d7157e139f0c4fd02cf434ba": + :fetch {fetch = $fetcha} $file + file = doc/gui.txt + @if get_md5(file) != "4fe9fe5e950a8e675d112a94ea96f032": + :fetch {fetch = $fetcha} $file + file = doc/gui_w16.txt + @if get_md5(file) != "d07ba6a366621c3959872200c8a7c294": + :fetch {fetch = $fetcha} $file + file = doc/gui_w32.txt + @if get_md5(file) != "dbfef96c06363f8924d08b0a1c3e0515": + :fetch {fetch = $fetcha} $file + file = doc/gui_x11.txt + @if get_md5(file) != "1e3d5a0bc02479e0ce5f9daa112caef3": + :fetch {fetch = $fetcha} $file + file = doc/hangulin.txt + @if get_md5(file) != "e49e6d726fa7bbf46283c4d12971d88f": + :fetch {fetch = $fetcha} $file + file = doc/map.txt + @if get_md5(file) != "087354fc1d6edbb17ccb2eb06a5e2c23": + :fetch {fetch = $fetcha} $file + file = doc/hebrew.txt + @if get_md5(file) != "ecce71c02e9bea0f92342afd2e2de346": + :fetch {fetch = $fetcha} $file + file = doc/help.txt + @if get_md5(file) != "de27eec0777872059333411c0d9817a9": + :fetch {fetch = $fetcha} $file + file = doc/howto.txt + @if get_md5(file) != "295b87eb4820a66eec8daaddac3c5f16": + :fetch {fetch = $fetcha} $file + file = doc/if_cscop.txt + @if get_md5(file) != "549a491448d6a7e83aeb476f58209c4f": + :fetch {fetch = $fetcha} $file + file = doc/if_mzsch.txt + @if get_md5(file) != "bec5a973af4a61dc10c2331b4ab29166": + :fetch {fetch = $fetcha} $file + file = doc/if_ole.txt + @if get_md5(file) != "201973ca11fa8ed563f3856a8701b9d7": + :fetch {fetch = $fetcha} $file + file = doc/if_perl.txt + @if get_md5(file) != "27b07c3226a3dc2bb75f2af10cc9fdc7": + :fetch {fetch = $fetcha} $file + file = doc/if_pyth.txt + @if get_md5(file) != "96b17056dcda096016c84239901c9aed": + :fetch {fetch = $fetcha} $file + file = doc/if_ruby.txt + @if get_md5(file) != "e30a1af79718180a7d881b5e605a3dbe": + :fetch {fetch = $fetcha} $file + file = doc/if_sniff.txt + @if get_md5(file) != "204f9dd3156a6ed6d25541d7270bc0e4": + :fetch {fetch = $fetcha} $file + file = doc/if_tcl.txt + @if get_md5(file) != "8135b6a875438a2b8bf95a5a92a9fa91": + :fetch {fetch = $fetcha} $file + file = doc/indent.txt + @if get_md5(file) != "cc1a84b8e964d77c735b262f9e2762e1": + :fetch {fetch = $fetcha} $file + file = doc/index.txt + @if get_md5(file) != "7474969590997adcea030144f3dacb17": + :fetch {fetch = $fetcha} $file + file = doc/insert.txt + @if get_md5(file) != "9154ca0a0284fb572cc25c7c7d6c28b7": + :fetch {fetch = $fetcha} $file + file = doc/intro.txt + @if get_md5(file) != "456b9dad1ad60f9b4d128a3ba5dfcca6": + :fetch {fetch = $fetcha} $file + file = doc/mbyte.txt + @if get_md5(file) != "d764cbd45305731dd9797e4b4902ae9c": + :fetch {fetch = $fetcha} $file + file = doc/message.txt + @if get_md5(file) != "7c5a348aff8c1496154f02226667a434": + :fetch {fetch = $fetcha} $file + file = doc/mlang.txt + @if get_md5(file) != "0ef3874cbaee3586c86d1dbb569b0e68": + :fetch {fetch = $fetcha} $file + file = doc/motion.txt + @if get_md5(file) != "1f2386c33f80a161431e98a5262e36d6": + :fetch {fetch = $fetcha} $file + file = doc/netbeans.txt + @if get_md5(file) != "41644e56be8eba17fd7f84bd9d256f11": + :fetch {fetch = $fetcha} $file + file = doc/options.txt + @if get_md5(file) != "7262e051563c7b18277301000350e544": + :fetch {fetch = $fetcha} $file + file = doc/os_390.txt + @if get_md5(file) != "7d700761ce1b8191d36dc430184eee27": + :fetch {fetch = $fetcha} $file + file = doc/os_amiga.txt + @if get_md5(file) != "4725ba2f74306d607696c804f757af71": + :fetch {fetch = $fetcha} $file + file = doc/os_beos.txt + @if get_md5(file) != "4cc4f288bc65c0294f8b968f2cb2e762": + :fetch {fetch = $fetcha} $file + file = doc/os_dos.txt + @if get_md5(file) != "a27be3bd52176967c41c22105aeaaf5e": + :fetch {fetch = $fetcha} $file + file = doc/os_mac.txt + @if get_md5(file) != "90d9e9777546c838e0a7a289cfbce337": + :fetch {fetch = $fetcha} $file + file = doc/os_mint.txt + @if get_md5(file) != "10ec3242759585b2aa654838d8ddf267": + :fetch {fetch = $fetcha} $file + file = doc/os_msdos.txt + @if get_md5(file) != "5bb91231b52749098f33e491edb8110c": + :fetch {fetch = $fetcha} $file + file = doc/os_os2.txt + @if get_md5(file) != "f987f38e7a5a8b4212e902af4e128dff": + :fetch {fetch = $fetcha} $file + file = doc/os_qnx.txt + @if get_md5(file) != "cef7a453b428c4ae705d943f74a9044b": + :fetch {fetch = $fetcha} $file + file = doc/os_risc.txt + @if get_md5(file) != "d7c3ffa43552e741067f6ff2e086987a": + :fetch {fetch = $fetcha} $file + file = doc/os_unix.txt + @if get_md5(file) != "d18d205d42cdb31e015ea1cb5011ae7c": + :fetch {fetch = $fetcha} $file + file = doc/os_vms.txt + @if get_md5(file) != "bce4cf844cd1642905c67019aa3c2ad3": + :fetch {fetch = $fetcha} $file + file = doc/os_win32.txt + @if get_md5(file) != "d98b5cc9d94c9789d58df61d8b11615b": + :fetch {fetch = $fetcha} $file + file = doc/pattern.txt + @if get_md5(file) != "8c05ef07f4dec107e20797e48a907c3d": + :fetch {fetch = $fetcha} $file + file = doc/pi_getscript.txt + @if get_md5(file) != "78442be199284a272eecb04c0fc118f0": + :fetch {fetch = $fetcha} $file + file = doc/pi_gzip.txt + @if get_md5(file) != "457c78b890a01c38eb43e8a9ef1db652": + :fetch {fetch = $fetcha} $file + file = doc/pi_netrw.txt + @if get_md5(file) != "3e14dce6dbf81fc48827da952f86e4de": + :fetch {fetch = $fetcha} $file + file = doc/pi_paren.txt + @if get_md5(file) != "a2b75fd9de0af918e6dd426b61eac0a7": + :fetch {fetch = $fetcha} $file + file = doc/pi_spec.txt + @if get_md5(file) != "e9cffe18156bf2fbf5335b7ebb036a0a": + :fetch {fetch = $fetcha} $file + file = doc/pi_tar.txt + @if get_md5(file) != "a82543702614be70da746d2f4c6b5d8d": + :fetch {fetch = $fetcha} $file + file = doc/pi_vimball.txt + @if get_md5(file) != "e67f73bea2db99429caaef6b992272cb": + :fetch {fetch = $fetcha} $file + file = doc/pi_zip.txt + @if get_md5(file) != "c45c1499cefbb9586017bc8ae68aab8f": + :fetch {fetch = $fetcha} $file + file = doc/print.txt + @if get_md5(file) != "14823f2bb5274d960cba85d25b92a1f2": + :fetch {fetch = $fetcha} $file + file = doc/quickfix.txt + @if get_md5(file) != "8a7541de556f1b5a5484b0470457327b": + :fetch {fetch = $fetcha} $file + file = doc/quickref.txt + @if get_md5(file) != "50755c836c0737af0ce253698ed2fa31": + :fetch {fetch = $fetcha} $file + file = doc/quotes.txt + @if get_md5(file) != "98d1e0fecfedf177b0cbfb3a992e2582": + :fetch {fetch = $fetcha} $file + file = doc/sql.txt + @if get_md5(file) != "68a829b05ae8d7673afc5b63adeff335": + :fetch {fetch = $fetcha} $file + file = doc/recover.txt + @if get_md5(file) != "091fb5b61bc3758ea16c82303ed8f7f9": + :fetch {fetch = $fetcha} $file + file = doc/remote.txt + @if get_md5(file) != "7f2f9fc1976c6872eb7dce63563b8136": + :fetch {fetch = $fetcha} $file + file = doc/repeat.txt + @if get_md5(file) != "2eaa40fde2870acd3855b7f749b7ed77": + :fetch {fetch = $fetcha} $file + file = doc/rileft.txt + @if get_md5(file) != "d70ef21c36228d4d5197b2988ee8b3ba": + :fetch {fetch = $fetcha} $file + file = doc/russian.txt + @if get_md5(file) != "a21c1cead7c7741e9255663d0eb19b04": + :fetch {fetch = $fetcha} $file + file = doc/scroll.txt + @if get_md5(file) != "0067f61d8e72626dd585e3f089ebd169": + :fetch {fetch = $fetcha} $file + file = doc/sign.txt + @if get_md5(file) != "5e600305b003d53e53f53f8ec68e8e64": + :fetch {fetch = $fetcha} $file + file = doc/spell.txt + @if get_md5(file) != "2a45f17e53afa02ae40244881334ccba": + :fetch {fetch = $fetcha} $file + file = doc/sponsor.txt + @if get_md5(file) != "4104d1c338e2dc5b2227698832cae3ed": + :fetch {fetch = $fetcha} $file + file = doc/starting.txt + @if get_md5(file) != "837bad117e515c7f34c6b1e0405cde0d": + :fetch {fetch = $fetcha} $file + file = doc/syntax.txt + @if get_md5(file) != "5c70a6bcd24e2dd4d71c28e4fbf12021": + :fetch {fetch = $fetcha} $file + file = doc/tabpage.txt + @if get_md5(file) != "41ab372c309517455f66feb20300f150": + :fetch {fetch = $fetcha} $file + file = doc/tagsrch.txt + @if get_md5(file) != "dda075f61d303ea03955c42abe19ae01": + :fetch {fetch = $fetcha} $file + file = doc/term.txt + @if get_md5(file) != "1ac5fd66afa688ed474869a3fffb926d": + :fetch {fetch = $fetcha} $file + file = doc/tips.txt + @if get_md5(file) != "8dea209a381e7fb5a9dcf53c683ca256": + :fetch {fetch = $fetcha} $file + file = doc/todo.txt + @if get_md5(file) != "79487a2fb50bf5d5a01b635a05578163": + :fetch {fetch = $fetcha} $file + file = doc/uganda.txt + @if get_md5(file) != "95036d8022007f88d08c3a9358a04d74": + :fetch {fetch = $fetcha} $file + file = doc/undo.txt + @if get_md5(file) != "6afe93dc1f5d60336320774d2f76b978": + :fetch {fetch = $fetcha} $file + file = doc/usr_01.txt + @if get_md5(file) != "77dd400f1fbe643a1ac82670fe517eee": + :fetch {fetch = $fetcha} $file + file = doc/usr_02.txt + @if get_md5(file) != "4e4c7bc10bf7308b0e318079bd01031b": + :fetch {fetch = $fetcha} $file + file = doc/usr_03.txt + @if get_md5(file) != "a1e65b508662e3575f695483fef3da5e": + :fetch {fetch = $fetcha} $file + file = doc/usr_04.txt + @if get_md5(file) != "0fe41d78d48f616dba68dd9cd8f50cd7": + :fetch {fetch = $fetcha} $file + file = doc/usr_05.txt + @if get_md5(file) != "79e4ec676012f385e933b8c7116dfb2a": + :fetch {fetch = $fetcha} $file + file = doc/usr_06.txt + @if get_md5(file) != "1d74457b63648596ba29a95f30c62a53": + :fetch {fetch = $fetcha} $file + file = doc/usr_07.txt + @if get_md5(file) != "e23490b6bbddd9188ce3edd8a148a2f5": + :fetch {fetch = $fetcha} $file + file = doc/usr_08.txt + @if get_md5(file) != "78bfb5b421027b8678ca3889f5d408eb": + :fetch {fetch = $fetcha} $file + file = doc/usr_09.txt + @if get_md5(file) != "2f5ead9699f0a8cb18f81cbf59810830": + :fetch {fetch = $fetcha} $file + file = doc/usr_10.txt + @if get_md5(file) != "73a268d2fb9f28b0451d5f808fef93d0": + :fetch {fetch = $fetcha} $file + file = doc/usr_11.txt + @if get_md5(file) != "767293e344fc87abbcc7db055c402acc": + :fetch {fetch = $fetcha} $file + file = doc/usr_12.txt + @if get_md5(file) != "772af796bedfa09855e704779f00bfa6": + :fetch {fetch = $fetcha} $file + file = doc/usr_20.txt + @if get_md5(file) != "a72e7438d25409871e42b01a0b336693": + :fetch {fetch = $fetcha} $file + file = doc/usr_21.txt + @if get_md5(file) != "3a008f3efcde11beb377f611b2a49412": + :fetch {fetch = $fetcha} $file + file = doc/usr_22.txt + @if get_md5(file) != "f39d53c705e2b38282b7d5b5405a5112": + :fetch {fetch = $fetcha} $file + file = doc/usr_23.txt + @if get_md5(file) != "145620abe26a0cf73e50df47fac499c2": + :fetch {fetch = $fetcha} $file + file = doc/usr_24.txt + @if get_md5(file) != "0a1ccf0eca801de6a86b79526f3b894d": + :fetch {fetch = $fetcha} $file + file = doc/usr_25.txt + @if get_md5(file) != "8ccb286f8b5e79d5fd6828b82dc71984": + :fetch {fetch = $fetcha} $file + file = doc/usr_26.txt + @if get_md5(file) != "aa10d913027fc417631d190bb9e0fb6f": + :fetch {fetch = $fetcha} $file + file = doc/usr_27.txt + @if get_md5(file) != "64a0311bc3558d046c2c18ddb12d2a04": + :fetch {fetch = $fetcha} $file + file = doc/usr_28.txt + @if get_md5(file) != "9d10fee802303cb8a4359024598aa5c6": + :fetch {fetch = $fetcha} $file + file = doc/usr_29.txt + @if get_md5(file) != "ef46dedbe1818d033193c93cb4bbc16b": + :fetch {fetch = $fetcha} $file + file = doc/usr_30.txt + @if get_md5(file) != "374cb474f910f1784d87c5b996893efe": + :fetch {fetch = $fetcha} $file + file = doc/usr_31.txt + @if get_md5(file) != "e4ba0a1d8c91473fb6cd01c373d791c1": + :fetch {fetch = $fetcha} $file + file = doc/usr_32.txt + @if get_md5(file) != "ff961059955265809c9dd7dc8086c1a0": + :fetch {fetch = $fetcha} $file + file = doc/usr_40.txt + @if get_md5(file) != "1d7c817fa0127fffeda9ace837d80591": + :fetch {fetch = $fetcha} $file + file = doc/usr_41.txt + @if get_md5(file) != "84cab627bde91a936ed587e116504c8b": + :fetch {fetch = $fetcha} $file + file = doc/usr_42.txt + @if get_md5(file) != "8d41cde9b90e306d0739bdbdabdcb469": + :fetch {fetch = $fetcha} $file + file = doc/usr_43.txt + @if get_md5(file) != "343c2e59955604e58bff5c981e3a1c15": + :fetch {fetch = $fetcha} $file + file = doc/usr_44.txt + @if get_md5(file) != "612285d83a5fa7e0a4d5e1c1d14d9878": + :fetch {fetch = $fetcha} $file + file = doc/usr_45.txt + @if get_md5(file) != "03aee0c71fbeaaef6bb5352a5f85a7c6": + :fetch {fetch = $fetcha} $file + file = doc/usr_90.txt + @if get_md5(file) != "76baf8984ed348df0f510640d13c79bf": + :fetch {fetch = $fetcha} $file + file = doc/usr_toc.txt + @if get_md5(file) != "644136cd322e60281a6f88633910e985": + :fetch {fetch = $fetcha} $file + file = doc/various.txt + @if get_md5(file) != "e68b37b2937444360bda1030916e2c67": + :fetch {fetch = $fetcha} $file + file = doc/version4.txt + @if get_md5(file) != "799e8ede6d83a605493901b95b1c197d": + :fetch {fetch = $fetcha} $file + file = doc/version5.txt + @if get_md5(file) != "75fe1ebe60322511c5592a3a78aaf6f1": + :fetch {fetch = $fetcha} $file + file = doc/version6.txt + @if get_md5(file) != "e8c44597ed1fb9e84635b75972a39aee": + :fetch {fetch = $fetcha} $file + file = doc/version7.txt + @if get_md5(file) != "c5e911b4094450280d8394db20550296": + :fetch {fetch = $fetcha} $file + file = doc/vi_diff.txt + @if get_md5(file) != "df7f3dc9238b4bc987992429ef5600df": + :fetch {fetch = $fetcha} $file + file = doc/visual.txt + @if get_md5(file) != "1ccff531842b61a564ba4761cdb07973": + :fetch {fetch = $fetcha} $file + file = doc/windows.txt + @if get_md5(file) != "3623394587af42a3910868fd08be4a43": + :fetch {fetch = $fetcha} $file + file = doc/workshop.txt + @if get_md5(file) != "242186ba95403641d6b230a72598eebe": + :fetch {fetch = $fetcha} $file + file = doc/Makefile + @if get_md5(file) != "7892a21653dbc5a05ceeb10cec9adbe5": + :fetch {fetch = $fetcha} $file + file = doc/doctags.c + @if get_md5(file) != "160ebf04c9e837e4dcec5b050e63b4cf": + :fetch {fetch = $fetcha} $file + file = doc/vim.1 + @if get_md5(file) != "f62781c53077f433a44d160a8924c2e5": + :fetch {fetch = $fetcha} $file + file = doc/evim.1 + @if get_md5(file) != "a6d3d55271eecb1a4d5027353bd1675d": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff.1 + @if get_md5(file) != "61c3fc2c1d3597483e1240731fd52979": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor.1 + @if get_md5(file) != "2d837b6131025752cbbd15ef9992552b": + :fetch {fetch = $fetcha} $file + file = doc/xxd.1 + @if get_md5(file) != "5ded3fb543e4d8f29e8ab6855e814efd": + :fetch {fetch = $fetcha} $file + file = ftoff.vim + @if get_md5(file) != "56ba569420d6b011af147d3b29ac69b4": + :fetch {fetch = $fetcha} $file + file = gvimrc_example.vim + @if get_md5(file) != "600cc0c7807577d00188d51845a15f7f": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros + file = macros/README.txt + @if get_md5(file) != "c15fa91f1bdec4e3d3ca9de2710ab0a0": + :fetch {fetch = $fetcha} $file + file = macros/dvorak + @if get_md5(file) != "ea76c9cd25984e17d11c25047880ceb9": + :fetch {fetch = $fetcha} $file + file = macros/editexisting.vim + @if get_md5(file) != "9e331590a201a2f410cf3edea5cd2b6b": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/hanoi + file = macros/hanoi/click.me + @if get_md5(file) != "c1b52dbc8a794b826d64198f553a8980": + :fetch {fetch = $fetcha} $file + file = macros/hanoi/hanoi.vim + @if get_md5(file) != "7a7ee3b12954f124743626d97ec0043f": + :fetch {fetch = $fetcha} $file + file = macros/hanoi/poster + @if get_md5(file) != "8b45511fef6bf4790d3f0c5a93eaabf2": + :fetch {fetch = $fetcha} $file + file = macros/justify.vim + @if get_md5(file) != "bf75aa9b8c539ae9b48e0f57529d905c": + :fetch {fetch = $fetcha} $file + file = macros/less.sh + @if get_md5(file) != "8094d68ef0fbbe4e993dd685f8983427": + :fetch {fetch = $fetcha} $file + file = macros/less.vim + @if get_md5(file) != "66b4491fa780db1cf8a96ae652bb839e": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/life + file = macros/life/click.me + @if get_md5(file) != "5f6aba1020970b3bfd887fd8ae2ba529": + :fetch {fetch = $fetcha} $file + file = macros/life/life.vim + @if get_md5(file) != "abae02dd617a476d57776106705dcaf0": + :fetch {fetch = $fetcha} $file + file = macros/matchit.vim + @if get_md5(file) != "d1ad35da800a16df0240a86ba5152e21": + :fetch {fetch = $fetcha} $file + file = macros/matchit.txt + @if get_md5(file) != "4640912233bb48705aff4a1af9389c37": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/maze + file = macros/maze/README.txt + @if get_md5(file) != "d470746fc259a62e9e0a937150200f0b": + :fetch {fetch = $fetcha} $file + file = macros/maze/Makefile + @if get_md5(file) != "da15257458490fea1fbc60c756ae6ce7": + :fetch {fetch = $fetcha} $file + file = macros/maze/main.aap + @if get_md5(file) != "7857e3907bb9cc8863e6f55776fe1a84": + :fetch {fetch = $fetcha} $file + file = macros/maze/maze.c + @if get_md5(file) != "8ad9f580ae3735d818d3a386b6597830": + :fetch {fetch = $fetcha} $file + file = macros/maze/maze_5.78 + @if get_md5(file) != "fa6bd1ec8a59bb27531051ac3bfe74db": + :fetch {fetch = $fetcha} $file + file = macros/maze/maze_mac + @if get_md5(file) != "db0869cbdf7777e12cceab1ef104fdea": + :fetch {fetch = $fetcha} $file + file = macros/maze/mazeansi.c + @if get_md5(file) != "5fbac013feba40f6285a366b6d8fc373": + :fetch {fetch = $fetcha} $file + file = macros/maze/mazeclean.c + @if get_md5(file) != "a96ce37f81019fe772763159e6e8ac7e": + :fetch {fetch = $fetcha} $file + file = macros/maze/poster + @if get_md5(file) != "1a4c07e940c8614ff705cbaa60a1c02a": + :fetch {fetch = $fetcha} $file + file = macros/shellmenu.vim + @if get_md5(file) != "1bfc95df66617971764cafe821f93f25": + :fetch {fetch = $fetcha} $file + file = macros/swapmous.vim + @if get_md5(file) != "a49681337dd2166e742f4d1d38ea976f": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/urm + file = macros/urm/README.txt + @if get_md5(file) != "c08d66776e0429d062e71a0295d8e6d1": + :fetch {fetch = $fetcha} $file + file = macros/urm/examples + @if get_md5(file) != "368ee658fc134b0da61b36e9fb07ea4a": + :fetch {fetch = $fetcha} $file + file = macros/urm/urm + @if get_md5(file) != "867e3ee8bc99ca581968d6007716ce2f": + :fetch {fetch = $fetcha} $file + file = macros/urm/urm.vim + @if get_md5(file) != "d9d51b113f16a6afe74d8a0d9671c3c5": + :fetch {fetch = $fetcha} $file + file = mswin.vim + @if get_md5(file) != "65c1772eb5fe4f909fa12872029c408e": + :fetch {fetch = $fetcha} $file + file = evim.vim + @if get_md5(file) != "8302f7de1988d2a2fb1ab9025fc1420a": + :fetch {fetch = $fetcha} $file + file = optwin.vim + @if get_md5(file) != "6323856f9856e0a33688270792660537": + :fetch {fetch = $fetcha} $file + file = ftplugin.vim + @if get_md5(file) != "7b4eec0415f447140c174a741f4ff503": + :fetch {fetch = $fetcha} $file + file = ftplugof.vim + @if get_md5(file) != "0b208913f2de9797ef7ccaa589a451f7": + :fetch {fetch = $fetcha} $file + file = indent.vim + @if get_md5(file) != "c54bf2f407354e067e8b1af8ade4c85d": + :fetch {fetch = $fetcha} $file + file = indoff.vim + @if get_md5(file) != "04ed3130c7e41093fea8b8cbd7dbb7fd": + :fetch {fetch = $fetcha} $file + file = termcap + @if get_md5(file) != "d40d521594e4fe9082ff8e50648254a7": + :fetch {fetch = $fetcha} $file + :mkdir {f} tools + file = tools/README.txt + @if get_md5(file) != "8ed9e3ab8578b57bc9f4ed02bd3a6547": + :fetch {fetch = $fetcha} $file + file = tools/blink.c + @if get_md5(file) != "7a665ed439bbe40a7a7f9d52f804b547": + :fetch {fetch = $fetcha} $file + file = tools/ccfilter.1 + @if get_md5(file) != "2d30a8c73cf3c5d6a6fdf4c5954eb461": + :fetch {fetch = $fetcha} $file + file = tools/ccfilter.c + @if get_md5(file) != "d6cbdfaa30919b91fd6467f12a29d5cb": + :fetch {fetch = $fetcha} $file + file = tools/ccfilter_README.txt + @if get_md5(file) != "b0f1267c1c0ebdf8760f53978df138d5": + :fetch {fetch = $fetcha} $file + file = tools/efm_filter.pl + @if get_md5(file) != "bc6221b3c5810740ce8485e10048c3fd": + :fetch {fetch = $fetcha} $file + file = tools/efm_filter.txt + @if get_md5(file) != "b6b72559774b34f134fbb9c18ab1b485": + :fetch {fetch = $fetcha} $file + file = tools/efm_perl.pl + @if get_md5(file) != "490027683ca5200d7565b6c0fef79db1": + :fetch {fetch = $fetcha} $file + file = tools/mve.awk + @if get_md5(file) != "0900df49a16b64d8d6597e9ad5292538": + :fetch {fetch = $fetcha} $file + file = tools/mve.txt + @if get_md5(file) != "d4dff50e9116daf4837f8e5a5920b51a": + :fetch {fetch = $fetcha} $file + file = tools/pltags.pl + @if get_md5(file) != "70edc86a012468df5b3da0cb5097fb26": + :fetch {fetch = $fetcha} $file + file = tools/ref + @if get_md5(file) != "e8a93fd8b72d2b552fb44eeb9bb57a9a": + :fetch {fetch = $fetcha} $file + file = tools/shtags.1 + @if get_md5(file) != "b933d34d9b6942d8375ad16980dd0841": + :fetch {fetch = $fetcha} $file + file = tools/shtags.pl + @if get_md5(file) != "2cc24063d5a9914c4990c1bfb3aaae3a": + :fetch {fetch = $fetcha} $file + file = tools/vim132 + @if get_md5(file) != "86c6cca337287ee1de7afcaf18ce6de5": + :fetch {fetch = $fetcha} $file + file = tools/vim_vs_net.cmd + @if get_md5(file) != "f8aab9e47fecc748d83adece47fe7409": + :fetch {fetch = $fetcha} $file + file = tools/vimm + @if get_md5(file) != "35b8319037bfa4a60a6ef1d2e5714948": + :fetch {fetch = $fetcha} $file + file = tools/vimspell.sh + @if get_md5(file) != "3be8cfaa53653a7ac3db8059aba07c0c": + :fetch {fetch = $fetcha} $file + file = tools/vimspell.txt + @if get_md5(file) != "cd06b37cc90c041147c4cec9d727ffe1": + :fetch {fetch = $fetcha} $file + file = tools/xcmdsrv_client.c + @if get_md5(file) != "2c241645eed6fc8be50f00baf7530784": + :fetch {fetch = $fetcha} $file + :mkdir {f} tutor + file = tutor/README.txt + @if get_md5(file) != "39e91c28c9212c776c25be69847eee58": + :fetch {fetch = $fetcha} $file + file = tutor/tutor + @if get_md5(file) != "68ad947b92ba50ec27cbf0b428152ea0": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.vim + @if get_md5(file) != "1950435d77e9a4da5c6f710873392066": + :fetch {fetch = $fetcha} $file + file = vimrc_example.vim + @if get_md5(file) != "c242c2e543f2b7b85cd0a86ada3ad528": + :fetch {fetch = $fetcha} $file + file = filetype.vim + @if get_md5(file) != "bee18fe9a9063ff77370ba8e31c53fed": + :fetch {fetch = $fetcha} $file + file = scripts.vim + @if get_md5(file) != "f2274b076f974386b4b43e3dfd750f55": + :fetch {fetch = $fetcha} $file + file = menu.vim + @if get_md5(file) != "d85147ade87c2f352bbb09ca2574ec27": + :fetch {fetch = $fetcha} $file + file = macmap.vim + @if get_md5(file) != "74777953bb8d0667d691d779ea135c8e": + :fetch {fetch = $fetcha} $file + file = delmenu.vim + @if get_md5(file) != "abe4578905fc9c077fbd8d0e0de55897": + :fetch {fetch = $fetcha} $file + file = synmenu.vim + @if get_md5(file) != "01d1ae856533c8f5c79d77ca0fd800b9": + :fetch {fetch = $fetcha} $file + file = makemenu.vim + @if get_md5(file) != "2a6773a4152c3c40941c54bab5dd0195": + :fetch {fetch = $fetcha} $file + :mkdir {f} autoload + file = autoload/ada.vim + @if get_md5(file) != "d64801cfb5b1bd0a709d15d655d6a79f": + :fetch {fetch = $fetcha} $file + file = autoload/adacomplete.vim + @if get_md5(file) != "fa7a005d48d689e3673643f9c0842cda": + :fetch {fetch = $fetcha} $file + file = autoload/ccomplete.vim + @if get_md5(file) != "a174ed9d8e302a866a328853f3428afd": + :fetch {fetch = $fetcha} $file + file = autoload/csscomplete.vim + @if get_md5(file) != "10c3648d2b5cc5d28fe9b84aaffcd916": + :fetch {fetch = $fetcha} $file + file = autoload/decada.vim + @if get_md5(file) != "3b8cffd8e9dafdae5d96a56daee0cae4": + :fetch {fetch = $fetcha} $file + file = autoload/getscript.vim + @if get_md5(file) != "f5ebc661c5266a26f31878b050b07450": + :fetch {fetch = $fetcha} $file + file = autoload/gnat.vim + @if get_md5(file) != "a4edca34180ac960f356646f5f8b542c": + :fetch {fetch = $fetcha} $file + file = autoload/gzip.vim + @if get_md5(file) != "d116d6843ac85e4b03f109ce1b662110": + :fetch {fetch = $fetcha} $file + file = autoload/htmlcomplete.vim + @if get_md5(file) != "320e6b2f287f35433d1b1a4ed33f5863": + :fetch {fetch = $fetcha} $file + file = autoload/javascriptcomplete.vim + @if get_md5(file) != "14433d057f181ccc72a21cbf85347690": + :fetch {fetch = $fetcha} $file + file = autoload/netrw.vim + @if get_md5(file) != "bffddc6b0b239428c277bdb860e85ede": + :fetch {fetch = $fetcha} $file + file = autoload/netrwFileHandlers.vim + @if get_md5(file) != "3bda9a928d5d5ea2507c9c221ba7902e": + :fetch {fetch = $fetcha} $file + file = autoload/netrwSettings.vim + @if get_md5(file) != "be205f4819d6fcaf95631ccdeb2c5330": + :fetch {fetch = $fetcha} $file + file = autoload/paste.vim + @if get_md5(file) != "ea89e81910ef039f52659f72e069cb79": + :fetch {fetch = $fetcha} $file + file = autoload/phpcomplete.vim + @if get_md5(file) != "8709ea94420dfb37ba33f7d8e0780fdd": + :fetch {fetch = $fetcha} $file + file = autoload/pythoncomplete.vim + @if get_md5(file) != "596171ad6a5ad77cd799af17f2bb69b0": + :fetch {fetch = $fetcha} $file + file = autoload/rubycomplete.vim + @if get_md5(file) != "a3531058b12c52d27fe77bfa53a78be6": + :fetch {fetch = $fetcha} $file + file = autoload/spellfile.vim + @if get_md5(file) != "f5855aa7722fe8e503ea5463ff325617": + :fetch {fetch = $fetcha} $file + file = autoload/sqlcomplete.vim + @if get_md5(file) != "b98354d00da75ced24225a99ede26153": + :fetch {fetch = $fetcha} $file + file = autoload/syntaxcomplete.vim + @if get_md5(file) != "f9720c367264ffa0a4dc71d245ed8593": + :fetch {fetch = $fetcha} $file + file = autoload/tar.vim + @if get_md5(file) != "93583b7a5a2a5a01d025f2d90e19e46c": + :fetch {fetch = $fetcha} $file + file = autoload/vimball.vim + @if get_md5(file) != "632f873a8e53685c71aa85aeb7d4bb06": + :fetch {fetch = $fetcha} $file + file = autoload/xmlcomplete.vim + @if get_md5(file) != "162431c8ad7e4bd183d460bc9736aef1": + :fetch {fetch = $fetcha} $file + file = autoload/zip.vim + @if get_md5(file) != "213d5f92e0a68d0ad007e5f5fc8f87df": + :fetch {fetch = $fetcha} $file + file = autoload/README.txt + @if get_md5(file) != "05d0473d5a9d9093421cc9532a1187e6": + :fetch {fetch = $fetcha} $file + :mkdir {f} autoload/xml + file = autoload/xml/html32.vim + @if get_md5(file) != "62e2736ef46918b8fa97aab0ede022f2": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html401f.vim + @if get_md5(file) != "6cb1fad4bc843f2d52a86d981bea29fc": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html401s.vim + @if get_md5(file) != "7b6023958a613586fc5b535187a98536": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html401t.vim + @if get_md5(file) != "20f04ea0704b93c87f47384667a42e2e": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html40f.vim + @if get_md5(file) != "b99d03107f0a19fcc134b78940ee0b60": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html40s.vim + @if get_md5(file) != "af93e02e9b04c9afe66b6c6c3686739e": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html40t.vim + @if get_md5(file) != "7a6f29fb9a160cd3eaaed72e2bfbb53a": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml10f.vim + @if get_md5(file) != "d6d6315a6deb232998e0e2a9d305eb18": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml10s.vim + @if get_md5(file) != "64dab4f3d30d2b2443bee055131b45f0": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml10t.vim + @if get_md5(file) != "49f87cb41a0154ab949e021027a97807": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml11.vim + @if get_md5(file) != "3b3916ee6d5d389329997b22cb00a77b": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xsd.vim + @if get_md5(file) != "5fb27787620346eab7db44ce0322b969": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xsl.vim + @if get_md5(file) != "4827c2f4372737bb6dc1f6ffc06de662": + :fetch {fetch = $fetcha} $file + :mkdir {f} colors + file = colors/blue.vim + @if get_md5(file) != "8b50188960f595c8291505f567b74b48": + :fetch {fetch = $fetcha} $file + file = colors/darkblue.vim + @if get_md5(file) != "1acb580b96d623c991f1d32be41808be": + :fetch {fetch = $fetcha} $file + file = colors/default.vim + @if get_md5(file) != "53120f6b19105e4a8dd3da00512f0ace": + :fetch {fetch = $fetcha} $file + file = colors/delek.vim + @if get_md5(file) != "4eca4639bbda19ce71c2148ad4163c26": + :fetch {fetch = $fetcha} $file + file = colors/desert.vim + @if get_md5(file) != "1251bf5fba327b8d6bb9c4abf2338b0c": + :fetch {fetch = $fetcha} $file + file = colors/elflord.vim + @if get_md5(file) != "33cd834e0bab7554bbea585a84cbe295": + :fetch {fetch = $fetcha} $file + file = colors/evening.vim + @if get_md5(file) != "690de476edf00a20e8854ac507dc2325": + :fetch {fetch = $fetcha} $file + file = colors/koehler.vim + @if get_md5(file) != "0b38b7f5072f4098370923be44d6ff74": + :fetch {fetch = $fetcha} $file + file = colors/morning.vim + @if get_md5(file) != "e5b5ea221b7bfe639d806572b1476428": + :fetch {fetch = $fetcha} $file + file = colors/murphy.vim + @if get_md5(file) != "17e7568de27cd26c48e8d53512cd6867": + :fetch {fetch = $fetcha} $file + file = colors/pablo.vim + @if get_md5(file) != "9bf8024d93c876734a3a8f6c18f5920b": + :fetch {fetch = $fetcha} $file + file = colors/peachpuff.vim + @if get_md5(file) != "5baa8eec1fa52406402db59edfe1b314": + :fetch {fetch = $fetcha} $file + file = colors/ron.vim + @if get_md5(file) != "00257826b7101ebb51deb33de3ae41c5": + :fetch {fetch = $fetcha} $file + file = colors/shine.vim + @if get_md5(file) != "892e957735ca31b24e3cbf5cdbd1dce9": + :fetch {fetch = $fetcha} $file + file = colors/slate.vim + @if get_md5(file) != "12ae5ff3bbdb9fc1221eaaeb6a13e3a5": + :fetch {fetch = $fetcha} $file + file = colors/torte.vim + @if get_md5(file) != "b937c1394af4fa631f480a42f9cfb8d0": + :fetch {fetch = $fetcha} $file + file = colors/zellner.vim + @if get_md5(file) != "65826e552fe6f873c9b97004d74e1895": + :fetch {fetch = $fetcha} $file + file = colors/README.txt + @if get_md5(file) != "626bba1c8056f288f175d0849c17507e": + :fetch {fetch = $fetcha} $file + :mkdir {f} compiler + file = compiler/ant.vim + @if get_md5(file) != "78ff492bab743f15a18599f02340c7ab": + :fetch {fetch = $fetcha} $file + file = compiler/bcc.vim + @if get_md5(file) != "5e62520b9d35ef8297bfbaa782ea669b": + :fetch {fetch = $fetcha} $file + file = compiler/bdf.vim + @if get_md5(file) != "7f60a9e176b5fa67d86d987cd18cd916": + :fetch {fetch = $fetcha} $file + file = compiler/checkstyle.vim + @if get_md5(file) != "475ecbab8d7f81ad77a38c36b5ce3435": + :fetch {fetch = $fetcha} $file + file = compiler/cs.vim + @if get_md5(file) != "62489e5fa97b3b61a41e2ada92b29fec": + :fetch {fetch = $fetcha} $file + file = compiler/decada.vim + @if get_md5(file) != "5b51bdfe22913d504948e93227d6a868": + :fetch {fetch = $fetcha} $file + file = compiler/dot.vim + @if get_md5(file) != "54dc41abf1ebefb8694ba5c900f4f63d": + :fetch {fetch = $fetcha} $file + file = compiler/eruby.vim + @if get_md5(file) != "570062e6437d4ee5e5882e32091c2424": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_F.vim + @if get_md5(file) != "2fedc236474cd57b4ecf6df3c64474cb": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_cv.vim + @if get_md5(file) != "b53e49740617b4b897497e04565e5c64": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_elf90.vim + @if get_md5(file) != "5eeeb5b54b573f6e8e514c190effcb91": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_g77.vim + @if get_md5(file) != "79f79ea2c7dbddd85b16a4a489dadaf5": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_lf95.vim + @if get_md5(file) != "3c760dc704932e5fd630e22d05dba01f": + :fetch {fetch = $fetcha} $file + file = compiler/fpc.vim + @if get_md5(file) != "bd6353a8527305e396fff3d8e40c0bd2": + :fetch {fetch = $fetcha} $file + file = compiler/gcc.vim + @if get_md5(file) != "fbc793e8e0f380032b91cc06c0fb8ce9": + :fetch {fetch = $fetcha} $file + file = compiler/gnat.vim + @if get_md5(file) != "47efb982cbfc9ae7fd934cdd555bc7a2": + :fetch {fetch = $fetcha} $file + file = compiler/hp_acc.vim + @if get_md5(file) != "cb2c60954dbad0b0e86efa5afdb3ebf3": + :fetch {fetch = $fetcha} $file + file = compiler/icc.vim + @if get_md5(file) != "c3425b8cfeb4d6f96d1c5aaf5ea8ada9": + :fetch {fetch = $fetcha} $file + file = compiler/intel.vim + @if get_md5(file) != "66190d4f2f4297f1da1f96f4fceb74ac": + :fetch {fetch = $fetcha} $file + file = compiler/irix5_c.vim + @if get_md5(file) != "46dab88e23b360fce4e6f2e7914ef84a": + :fetch {fetch = $fetcha} $file + file = compiler/irix5_cpp.vim + @if get_md5(file) != "fc30f866c7f4f397eea4947b2e734f6f": + :fetch {fetch = $fetcha} $file + file = compiler/javac.vim + @if get_md5(file) != "252220394f669972f1e886636a41c2cb": + :fetch {fetch = $fetcha} $file + file = compiler/jikes.vim + @if get_md5(file) != "3fe613d17b1bcdc8f89e4b2287a5fc37": + :fetch {fetch = $fetcha} $file + file = compiler/mcs.vim + @if get_md5(file) != "80cd1155db823f14669d495d71ff1a5d": + :fetch {fetch = $fetcha} $file + file = compiler/mips_c.vim + @if get_md5(file) != "ff7bf3695d22463dcec0b5ce078f5797": + :fetch {fetch = $fetcha} $file + file = compiler/mipspro_c89.vim + @if get_md5(file) != "a88129a97b41ace23129ccf048bbada9": + :fetch {fetch = $fetcha} $file + file = compiler/mipspro_cpp.vim + @if get_md5(file) != "69432250dea5b91a1764383d35c74d20": + :fetch {fetch = $fetcha} $file + file = compiler/modelsim_vcom.vim + @if get_md5(file) != "24d7db8c631bc647cf80b25cf813ee3a": + :fetch {fetch = $fetcha} $file + file = compiler/msvc.vim + @if get_md5(file) != "3e2dfe1de01f7c8ca3df41d1f2679ba0": + :fetch {fetch = $fetcha} $file + file = compiler/neato.vim + @if get_md5(file) != "bb388c8969ad34431fb6a4a706428be4": + :fetch {fetch = $fetcha} $file + file = compiler/onsgmls.vim + @if get_md5(file) != "2e9481b07afaee061db8115d9ca1263b": + :fetch {fetch = $fetcha} $file + file = compiler/pbx.vim + @if get_md5(file) != "022ed392fea09689f87a673b5f9704e9": + :fetch {fetch = $fetcha} $file + file = compiler/perl.vim + @if get_md5(file) != "81153eb636a7191ac79f43456c7ef724": + :fetch {fetch = $fetcha} $file + file = compiler/php.vim + @if get_md5(file) != "ed793f2a51e4ec940d0eebfddead8f0c": + :fetch {fetch = $fetcha} $file + file = compiler/pyunit.vim + @if get_md5(file) != "d900d34678df82d93afa7d3b3a232758": + :fetch {fetch = $fetcha} $file + file = compiler/rst.vim + @if get_md5(file) != "a7cb49ee71ffa8c3c96a7182cefea885": + :fetch {fetch = $fetcha} $file + file = compiler/ruby.vim + @if get_md5(file) != "50147232ebf2539d8a4578ecd0ff7225": + :fetch {fetch = $fetcha} $file + file = compiler/rubyunit.vim + @if get_md5(file) != "a06f8a484d64eaeeefbf3211217b3e5d": + :fetch {fetch = $fetcha} $file + file = compiler/se.vim + @if get_md5(file) != "cfaf8c803e2ab7d0aa34ec3abbb243e6": + :fetch {fetch = $fetcha} $file + file = compiler/splint.vim + @if get_md5(file) != "1eaccd20839b8de5730bbfb8ac2cf79d": + :fetch {fetch = $fetcha} $file + file = compiler/tcl.vim + @if get_md5(file) != "cafa82d743dc846b77021bc19e009d5f": + :fetch {fetch = $fetcha} $file + file = compiler/tex.vim + @if get_md5(file) != "05a6af5c85b44bc009c3513c73794a05": + :fetch {fetch = $fetcha} $file + file = compiler/tidy.vim + @if get_md5(file) != "1e058b645115f87aad075445f6d54448": + :fetch {fetch = $fetcha} $file + file = compiler/xmllint.vim + @if get_md5(file) != "0d39b2acf6a4b0b45509c0effa6f3b74": + :fetch {fetch = $fetcha} $file + file = compiler/xmlwf.vim + @if get_md5(file) != "65c392a48f97e9502d9074458ef17156": + :fetch {fetch = $fetcha} $file + file = compiler/README.txt + @if get_md5(file) != "ff19576f2af264a13b6f0db630553740": + :fetch {fetch = $fetcha} $file + :mkdir {f} indent + file = indent/GenericIndent.vim + @if get_md5(file) != "39d5d55b71fda9d0f0db1d4f75547cf1": + :fetch {fetch = $fetcha} $file + file = indent/aap.vim + @if get_md5(file) != "fa3dab9a988884bbfca79ab441228101": + :fetch {fetch = $fetcha} $file + file = indent/ada.vim + @if get_md5(file) != "90ecb87edcf639645ae01fcc8cf9f0d3": + :fetch {fetch = $fetcha} $file + file = indent/ant.vim + @if get_md5(file) != "1334b8a13d17740a82d364eab95dcdc2": + :fetch {fetch = $fetcha} $file + file = indent/automake.vim + @if get_md5(file) != "636518c3035ce3b3c11a99fe01b88412": + :fetch {fetch = $fetcha} $file + file = indent/awk.vim + @if get_md5(file) != "7e83fa299679adc1befb1e0fae4e61b2": + :fetch {fetch = $fetcha} $file + file = indent/bib.vim + @if get_md5(file) != "1e6964e9ac200f5b0fe1a74215c38e0c": + :fetch {fetch = $fetcha} $file + file = indent/bst.vim + @if get_md5(file) != "b03942bde3e6893dc2d2119d6bb5a386": + :fetch {fetch = $fetcha} $file + file = indent/c.vim + @if get_md5(file) != "ed563ef84d949961df61493f9cd70517": + :fetch {fetch = $fetcha} $file + file = indent/cdl.vim + @if get_md5(file) != "47568209fe471ea899d9142c1190b74f": + :fetch {fetch = $fetcha} $file + file = indent/ch.vim + @if get_md5(file) != "7183e0adda72155a46e792fc05887588": + :fetch {fetch = $fetcha} $file + file = indent/changelog.vim + @if get_md5(file) != "6fe0733fb8e0a81d11f34110e59e44aa": + :fetch {fetch = $fetcha} $file + file = indent/cmake.vim + @if get_md5(file) != "fc2fc653094208ccc0b08f3d0ebc3524": + :fetch {fetch = $fetcha} $file + file = indent/cobol.vim + @if get_md5(file) != "5b6a3deaed9c53665f26f97aac95cf1d": + :fetch {fetch = $fetcha} $file + file = indent/config.vim + @if get_md5(file) != "e34fb377299dd99f9c1a4dd40fe2bc3d": + :fetch {fetch = $fetcha} $file + file = indent/cpp.vim + @if get_md5(file) != "44b8313ea69d4a0149869989cd883181": + :fetch {fetch = $fetcha} $file + file = indent/cs.vim + @if get_md5(file) != "0893eb7c3819e4700249cece825f42e2": + :fetch {fetch = $fetcha} $file + file = indent/css.vim + @if get_md5(file) != "599549af4b640ccf36b8cb8d3365a26d": + :fetch {fetch = $fetcha} $file + file = indent/d.vim + @if get_md5(file) != "cda859755b4a7e506a74a62ac7e71d34": + :fetch {fetch = $fetcha} $file + file = indent/dictconf.vim + @if get_md5(file) != "3c4986c7e9ca6c85fd1a81cea801cc97": + :fetch {fetch = $fetcha} $file + file = indent/dictdconf.vim + @if get_md5(file) != "efc8d557848cb667715b1f548a6f9bc6": + :fetch {fetch = $fetcha} $file + file = indent/docbk.vim + @if get_md5(file) != "80d0444d2a2d20c955cc85b3065d19ce": + :fetch {fetch = $fetcha} $file + file = indent/dylan.vim + @if get_md5(file) != "5b242ec9d622ded1ab13d232784ce49b": + :fetch {fetch = $fetcha} $file + file = indent/eiffel.vim + @if get_md5(file) != "2711fe30156ac1886482b5c144213aad": + :fetch {fetch = $fetcha} $file + file = indent/erlang.vim + @if get_md5(file) != "d9230abb198b261f89efdc3dc8290578": + :fetch {fetch = $fetcha} $file + file = indent/jsp.vim + @if get_md5(file) != "0ab5e1664b75012671018354d67e312c": + :fetch {fetch = $fetcha} $file + file = indent/eruby.vim + @if get_md5(file) != "cde0cb4e8b0acf0eed5f130362ddf989": + :fetch {fetch = $fetcha} $file + file = indent/eterm.vim + @if get_md5(file) != "b6af5eb0ebff120443d7b86588bc467f": + :fetch {fetch = $fetcha} $file + file = indent/fortran.vim + @if get_md5(file) != "bed670801967d4c692132d8e7240d2f9": + :fetch {fetch = $fetcha} $file + file = indent/gitconfig.vim + @if get_md5(file) != "e6795eccca05ad6bd8efb3b7f286d3cf": + :fetch {fetch = $fetcha} $file + file = indent/hamster.vim + @if get_md5(file) != "fb88a47bd3ff137fb1f93be774f5a5d2": + :fetch {fetch = $fetcha} $file + file = indent/html.vim + @if get_md5(file) != "2e0da1e50c79736efa91d644d03f8c5b": + :fetch {fetch = $fetcha} $file + file = indent/htmldjango.vim + @if get_md5(file) != "3fc391c3239d5ec552f69f6b1ebaa496": + :fetch {fetch = $fetcha} $file + file = indent/idlang.vim + @if get_md5(file) != "74abc3010656b07d959a5f9405f467f8": + :fetch {fetch = $fetcha} $file + file = indent/ishd.vim + @if get_md5(file) != "65834b4cf4fe2927730e02dfd0a8c7a6": + :fetch {fetch = $fetcha} $file + file = indent/java.vim + @if get_md5(file) != "ea450b5fce45dbf061fba811e33c0d81": + :fetch {fetch = $fetcha} $file + file = indent/javascript.vim + @if get_md5(file) != "3de8d18bff8d4f1606ca8e5e86cc9cc1": + :fetch {fetch = $fetcha} $file + file = indent/ld.vim + @if get_md5(file) != "ab8935de8ec5644b5020a58f8f571501": + :fetch {fetch = $fetcha} $file + file = indent/lisp.vim + @if get_md5(file) != "0580e9153e886a439e4b5cff7338ef40": + :fetch {fetch = $fetcha} $file + file = indent/lua.vim + @if get_md5(file) != "f01925fd58caaa5983d770aa191b12e4": + :fetch {fetch = $fetcha} $file + file = indent/make.vim + @if get_md5(file) != "fc7aef753dbbaf48ff69dfe35c26a6ca": + :fetch {fetch = $fetcha} $file + file = indent/matlab.vim + @if get_md5(file) != "269c277e98ba51d756ef222c0c75b713": + :fetch {fetch = $fetcha} $file + file = indent/mma.vim + @if get_md5(file) != "cd3ef6c40704408ae78acd61d3d62663": + :fetch {fetch = $fetcha} $file + file = indent/mp.vim + @if get_md5(file) != "e7ad304802bf5b3a6bce5e3e9f6715f6": + :fetch {fetch = $fetcha} $file + file = indent/mupad.vim + @if get_md5(file) != "ffef97a6ac60fcda89db09cf273371c6": + :fetch {fetch = $fetcha} $file + file = indent/objc.vim + @if get_md5(file) != "7fa4005a2ddf2c34615ed0bb9091fe07": + :fetch {fetch = $fetcha} $file + file = indent/ocaml.vim + @if get_md5(file) != "1e08b490d393a828579c606691f9e51c": + :fetch {fetch = $fetcha} $file + file = indent/occam.vim + @if get_md5(file) != "800cba28ebd8b258b3f6f8b90a240a2e": + :fetch {fetch = $fetcha} $file + file = indent/pascal.vim + @if get_md5(file) != "10198c84992dc6bb4f0a54f3d70476c7": + :fetch {fetch = $fetcha} $file + file = indent/perl.vim + @if get_md5(file) != "c21b9bc1ee5bdc052769667d5ed6b8dd": + :fetch {fetch = $fetcha} $file + file = indent/php.vim + @if get_md5(file) != "b0d11d88d53cce22e5bff39d2559adac": + :fetch {fetch = $fetcha} $file + file = indent/postscr.vim + @if get_md5(file) != "e0855649b0644da832eacc8ddebba415": + :fetch {fetch = $fetcha} $file + file = indent/pov.vim + @if get_md5(file) != "187754bd1394e42b474c27b72788c375": + :fetch {fetch = $fetcha} $file + file = indent/prolog.vim + @if get_md5(file) != "44e80dcc76ad04fdc8dce501e0936100": + :fetch {fetch = $fetcha} $file + file = indent/pyrex.vim + @if get_md5(file) != "63ffdc4d7498f7f6a6a2380da0c7d872": + :fetch {fetch = $fetcha} $file + file = indent/python.vim + @if get_md5(file) != "515613c49354c9a85814ff58fd47ec22": + :fetch {fetch = $fetcha} $file + file = indent/readline.vim + @if get_md5(file) != "2ea477a8932f5e44e5106c6e9d239ca2": + :fetch {fetch = $fetcha} $file + file = indent/rpl.vim + @if get_md5(file) != "843792a322a48137d4445803ee23ac25": + :fetch {fetch = $fetcha} $file + file = indent/rst.vim + @if get_md5(file) != "26c84088956ef6efd3cdda5836aeef50": + :fetch {fetch = $fetcha} $file + file = indent/ruby.vim + @if get_md5(file) != "b25cd9e2fb41fc65f4acdf033b04499b": + :fetch {fetch = $fetcha} $file + file = indent/scheme.vim + @if get_md5(file) != "2e6982d51d248eaa5cb124ca8b3bf814": + :fetch {fetch = $fetcha} $file + file = indent/sdl.vim + @if get_md5(file) != "0b3d6e63fd61f1d0aed297a74fcca4a9": + :fetch {fetch = $fetcha} $file + file = indent/sh.vim + @if get_md5(file) != "2e536ae73738fcab171c08d73c16f6ff": + :fetch {fetch = $fetcha} $file + file = indent/sml.vim + @if get_md5(file) != "22239366ec3db868a02b5f4633c84702": + :fetch {fetch = $fetcha} $file + file = indent/sql.vim + @if get_md5(file) != "371ec2fd8fce3427b92075863723ea57": + :fetch {fetch = $fetcha} $file + file = indent/sqlanywhere.vim + @if get_md5(file) != "e0ef50d7f89b5c9caef9757f2a9da5a1": + :fetch {fetch = $fetcha} $file + file = indent/tcl.vim + @if get_md5(file) != "8053305da350e4162d0ea84fedf75624": + :fetch {fetch = $fetcha} $file + file = indent/tcsh.vim + @if get_md5(file) != "c8ed9aa157f8c29b2de8ee6e2a240dcb": + :fetch {fetch = $fetcha} $file + file = indent/tf.vim + @if get_md5(file) != "baa0ba61479058774021523faeb43da8": + :fetch {fetch = $fetcha} $file + file = indent/tilde.vim + @if get_md5(file) != "c7893c8fc3b9c055f719f62fa317a563": + :fetch {fetch = $fetcha} $file + file = indent/vb.vim + @if get_md5(file) != "f04597ead536e7f76bd776fe48286013": + :fetch {fetch = $fetcha} $file + file = indent/verilog.vim + @if get_md5(file) != "e9a7d319cbc83b92debec10275850efd": + :fetch {fetch = $fetcha} $file + file = indent/vhdl.vim + @if get_md5(file) != "8eafc64bbe06d2c8f61b7a4c87a0c7c3": + :fetch {fetch = $fetcha} $file + file = indent/vim.vim + @if get_md5(file) != "6796074be55c55ac1ee5a2d4c33d7c06": + :fetch {fetch = $fetcha} $file + file = indent/xf86conf.vim + @if get_md5(file) != "72483e3d787eff942a3b42679d76edd9": + :fetch {fetch = $fetcha} $file + file = indent/xhtml.vim + @if get_md5(file) != "67470caab3d9398c8589f504e6cc3e2d": + :fetch {fetch = $fetcha} $file + file = indent/xinetd.vim + @if get_md5(file) != "529d499edc70ff77148df4c68d76a06b": + :fetch {fetch = $fetcha} $file + file = indent/xml.vim + @if get_md5(file) != "216bc73837327c4b628439cf887df199": + :fetch {fetch = $fetcha} $file + file = indent/xsd.vim + @if get_md5(file) != "06886693139c53d80799a4a06b564acc": + :fetch {fetch = $fetcha} $file + file = indent/xslt.vim + @if get_md5(file) != "5af8b7055ed7052b3c0f148bfd87b4b5": + :fetch {fetch = $fetcha} $file + file = indent/yacc.vim + @if get_md5(file) != "8ac912a83f5dc0f5845e58319631c61d": + :fetch {fetch = $fetcha} $file + file = indent/zsh.vim + @if get_md5(file) != "cc41c06939178e432d35a011f19c26b6": + :fetch {fetch = $fetcha} $file + file = indent/README.txt + @if get_md5(file) != "1d496e251a4351d92ac5a5fc1e1e8279": + :fetch {fetch = $fetcha} $file + :mkdir {f} ftplugin + file = ftplugin/AppendMatchGroup.vim + @if get_md5(file) != "dabc72b6dd3f72caa5db3acac0c94747": + :fetch {fetch = $fetcha} $file + file = ftplugin/a2ps.vim + @if get_md5(file) != "d995f9857fa8d3e936a9fbd3bae928db": + :fetch {fetch = $fetcha} $file + file = ftplugin/aap.vim + @if get_md5(file) != "bed56cf9c5e783dc09226c954e6fbbe8": + :fetch {fetch = $fetcha} $file + file = ftplugin/abaqus.vim + @if get_md5(file) != "b65c65794dea84dca70c0dc6fcae22b7": + :fetch {fetch = $fetcha} $file + file = ftplugin/ada.vim + @if get_md5(file) != "f81c17dbeb1d86e9991ac333abcc6cfa": + :fetch {fetch = $fetcha} $file + file = ftplugin/alsaconf.vim + @if get_md5(file) != "1b09f1008dfcc45a812c172bd3e66685": + :fetch {fetch = $fetcha} $file + file = ftplugin/ant.vim + @if get_md5(file) != "b5da446650e6cb31ebb8c70c2c324b44": + :fetch {fetch = $fetcha} $file + file = ftplugin/arch.vim + @if get_md5(file) != "ed3db1d056028bf984ab3bf543fe15ff": + :fetch {fetch = $fetcha} $file + file = ftplugin/art.vim + @if get_md5(file) != "ff837692222191a301b352ebe0b85068": + :fetch {fetch = $fetcha} $file + file = ftplugin/aspvbs.vim + @if get_md5(file) != "d7ac047ec9ea130a4b88c1bee9a78ffd": + :fetch {fetch = $fetcha} $file + file = ftplugin/automake.vim + @if get_md5(file) != "602434c0344e2912001ffff556744be4": + :fetch {fetch = $fetcha} $file + file = ftplugin/bdf.vim + @if get_md5(file) != "973c38fd38e20188cd2b66aee3b0a66d": + :fetch {fetch = $fetcha} $file + file = ftplugin/bst.vim + @if get_md5(file) != "128339d16d57c618ccb3f2a6bf36612e": + :fetch {fetch = $fetcha} $file + file = ftplugin/btm.vim + @if get_md5(file) != "4fe5684a17ea5af30f172699272ba57c": + :fetch {fetch = $fetcha} $file + file = ftplugin/c.vim + @if get_md5(file) != "a98ee6928755b3cb0dcc26025dae17f1": + :fetch {fetch = $fetcha} $file + file = ftplugin/calendar.vim + @if get_md5(file) != "0981eac4ff97530a4d52474cfb217a9e": + :fetch {fetch = $fetcha} $file + file = ftplugin/cdrdaoconf.vim + @if get_md5(file) != "39fc1463231036e74b05f718fce7da40": + :fetch {fetch = $fetcha} $file + file = ftplugin/ch.vim + @if get_md5(file) != "e88175c08feed8ec028dd6a337a73dce": + :fetch {fetch = $fetcha} $file + file = ftplugin/changelog.vim + @if get_md5(file) != "fe8a51572f091a0c2def7bbcb8d3d599": + :fetch {fetch = $fetcha} $file + file = ftplugin/cobol.vim + @if get_md5(file) != "edac624c9eb25d1611dd0950d80583cb": + :fetch {fetch = $fetcha} $file + file = ftplugin/conf.vim + @if get_md5(file) != "76d7f242fb33bc46789d6578a5afcf8f": + :fetch {fetch = $fetcha} $file + file = ftplugin/config.vim + @if get_md5(file) != "8524298830146e1c1153990f4e0df162": + :fetch {fetch = $fetcha} $file + file = ftplugin/context.vim + @if get_md5(file) != "2396f26891e538f61113dac4c7fbb62b": + :fetch {fetch = $fetcha} $file + file = ftplugin/cpp.vim + @if get_md5(file) != "0e467a699fd4090b0716cbcd7a00705c": + :fetch {fetch = $fetcha} $file + file = ftplugin/crm.vim + @if get_md5(file) != "18feceaa73537276d3e61f48de9b08a3": + :fetch {fetch = $fetcha} $file + file = ftplugin/cs.vim + @if get_md5(file) != "d1c8d36deb49720af9d02cce7bd47b40": + :fetch {fetch = $fetcha} $file + file = ftplugin/csc.vim + @if get_md5(file) != "6b15b058f689be11d937f4e8fbd63ed2": + :fetch {fetch = $fetcha} $file + file = ftplugin/csh.vim + @if get_md5(file) != "11813a5fcf2a3e4bcb9641d6f0073c7f": + :fetch {fetch = $fetcha} $file + file = ftplugin/css.vim + @if get_md5(file) != "a36ef298a208d68619a3e6c96fde87cd": + :fetch {fetch = $fetcha} $file + file = ftplugin/cvsrc.vim + @if get_md5(file) != "778c451ff7e3036fcdca2c31e40e0d76": + :fetch {fetch = $fetcha} $file + file = ftplugin/debchangelog.vim + @if get_md5(file) != "b7c17cc29e37555077decffb43cdec8e": + :fetch {fetch = $fetcha} $file + file = ftplugin/denyhosts.vim + @if get_md5(file) != "39fc1463231036e74b05f718fce7da40": + :fetch {fetch = $fetcha} $file + file = ftplugin/dictconf.vim + @if get_md5(file) != "56d08904d376ba18b4ab93ddcbd49dc9": + :fetch {fetch = $fetcha} $file + file = ftplugin/dictdconf.vim + @if get_md5(file) != "35f2dd6ced7d4287d1bd4126be88b65f": + :fetch {fetch = $fetcha} $file + file = ftplugin/diff.vim + @if get_md5(file) != "3fcdc11bc20077f7370f01c3ed3a513e": + :fetch {fetch = $fetcha} $file + file = ftplugin/dircolors.vim + @if get_md5(file) != "c74006aec0fe1e25df6ecfc720405fa9": + :fetch {fetch = $fetcha} $file + file = ftplugin/dosbatch.vim + @if get_md5(file) != "72d83afef531ceca4c708f8aecea395d": + :fetch {fetch = $fetcha} $file + file = ftplugin/dosini.vim + @if get_md5(file) != "619827c93f0250e454d85e4a5516d4de": + :fetch {fetch = $fetcha} $file + file = ftplugin/dtd.vim + @if get_md5(file) != "0155459fe89b9ee719fff7d4acc0750d": + :fetch {fetch = $fetcha} $file + file = ftplugin/elinks.vim + @if get_md5(file) != "89698e3a1650a48e8a8aa4dd7dd50a3c": + :fetch {fetch = $fetcha} $file + file = ftplugin/eruby.vim + @if get_md5(file) != "3f0a332cd5e772095a518cc4ad011d48": + :fetch {fetch = $fetcha} $file + file = ftplugin/eterm.vim + @if get_md5(file) != "7a4115cb15c3c7b0614b54ac9fbf4749": + :fetch {fetch = $fetcha} $file + file = ftplugin/fetchmail.vim + @if get_md5(file) != "33134e5c84ffe315f9e701b4c5b274ee": + :fetch {fetch = $fetcha} $file + file = ftplugin/flexwiki.vim + @if get_md5(file) != "7e79721c027e56718affdecdf9d62b58": + :fetch {fetch = $fetcha} $file + file = ftplugin/fortran.vim + @if get_md5(file) != "34af104e2afe4316b0d0cd14b1aed7cf": + :fetch {fetch = $fetcha} $file + file = ftplugin/fvwm.vim + @if get_md5(file) != "7e54ab3fbd01f530539e5cc55866c65d": + :fetch {fetch = $fetcha} $file + file = ftplugin/gitcommit.vim + @if get_md5(file) != "c9ed278c06e47b9432fca68edd97c59e": + :fetch {fetch = $fetcha} $file + file = ftplugin/gitconfig.vim + @if get_md5(file) != "3b487d55e02ffa57e89aea417964baff": + :fetch {fetch = $fetcha} $file + file = ftplugin/gitsendemail.vim + @if get_md5(file) != "d3cd51bed43bc986cdf805c93d1867b6": + :fetch {fetch = $fetcha} $file + file = ftplugin/gpg.vim + @if get_md5(file) != "9147dd06409a4d250105be098854e226": + :fetch {fetch = $fetcha} $file + file = ftplugin/group.vim + @if get_md5(file) != "5f2e9b34e32be8d97b97d0b4c2574bff": + :fetch {fetch = $fetcha} $file + file = ftplugin/grub.vim + @if get_md5(file) != "5f13af6f845910eb598bcc42ac6d8478": + :fetch {fetch = $fetcha} $file + file = ftplugin/hamster.vim + @if get_md5(file) != "1e64cacd5d1d524310291f25ad5e013e": + :fetch {fetch = $fetcha} $file + file = ftplugin/haskell.vim + @if get_md5(file) != "dc05c1afa26d7afb0832aa0f091480bd": + :fetch {fetch = $fetcha} $file + file = ftplugin/help.vim + @if get_md5(file) != "75ed667a0417f4b79788acb067d6850f": + :fetch {fetch = $fetcha} $file + file = ftplugin/hostconf.vim + @if get_md5(file) != "39fc1463231036e74b05f718fce7da40": + :fetch {fetch = $fetcha} $file + file = ftplugin/html.vim + @if get_md5(file) != "6f765b8d407264eec820fad79aef1833": + :fetch {fetch = $fetcha} $file + file = ftplugin/htmldjango.vim + @if get_md5(file) != "28d32a20dc02d61834d154d53baa1286": + :fetch {fetch = $fetcha} $file + file = ftplugin/indent.vim + @if get_md5(file) != "25e95786a44dfe672a5590a33e1434d4": + :fetch {fetch = $fetcha} $file + file = ftplugin/initex.vim + @if get_md5(file) != "381a0c0a22769f0eb7906bb54d4ff521": + :fetch {fetch = $fetcha} $file + file = ftplugin/ishd.vim + @if get_md5(file) != "0ccf4243f17150c4bb96e244f4ba4afd": + :fetch {fetch = $fetcha} $file + file = ftplugin/java.vim + @if get_md5(file) != "5c179b28b34ab626e19eeb2b9ba6b2a8": + :fetch {fetch = $fetcha} $file + file = ftplugin/javascript.vim + @if get_md5(file) != "e8756b7a2e3c41b6008fcc6f424a462a": + :fetch {fetch = $fetcha} $file + file = ftplugin/jsp.vim + @if get_md5(file) != "9308873f18f59da0e92db29bc681bebc": + :fetch {fetch = $fetcha} $file + file = ftplugin/kconfig.vim + @if get_md5(file) != "1d630bdbe7eca21169689a7e46ed57da": + :fetch {fetch = $fetcha} $file + file = ftplugin/kwt.vim + @if get_md5(file) != "2dc4c9c2d767e071748723de93fd0bd6": + :fetch {fetch = $fetcha} $file + file = ftplugin/ld.vim + @if get_md5(file) != "b2280ae9292d3407ea782bb9a4cc2519": + :fetch {fetch = $fetcha} $file + file = ftplugin/lftp.vim + @if get_md5(file) != "01452d333f579f2aab9da9606bf34832": + :fetch {fetch = $fetcha} $file + file = ftplugin/libao.vim + @if get_md5(file) != "fade3f1e38456e873b1644480f07354d": + :fetch {fetch = $fetcha} $file + file = ftplugin/limits.vim + @if get_md5(file) != "13557ca278442befade0ceb45bf60238": + :fetch {fetch = $fetcha} $file + file = ftplugin/lisp.vim + @if get_md5(file) != "1d79694ec87386f8a4b2650a8c78da39": + :fetch {fetch = $fetcha} $file + file = ftplugin/loginaccess.vim + @if get_md5(file) != "c6522ff76275ccaf55c0c97cedab3b51": + :fetch {fetch = $fetcha} $file + file = ftplugin/logindefs.vim + @if get_md5(file) != "0be08e34021a1880e03d0c16962412aa": + :fetch {fetch = $fetcha} $file + file = ftplugin/lprolog.vim + @if get_md5(file) != "93cf90212db1cbbb44ab5b042119d1f2": + :fetch {fetch = $fetcha} $file + file = ftplugin/lua.vim + @if get_md5(file) != "8bed2a23a456dbbe052cd8fd714cd823": + :fetch {fetch = $fetcha} $file + file = ftplugin/m4.vim + @if get_md5(file) != "434ff2cfd6e48a2182d0a1a875ed745b": + :fetch {fetch = $fetcha} $file + file = ftplugin/mail.vim + @if get_md5(file) != "066d6b92884f1ad1e42137f27eafc1c4": + :fetch {fetch = $fetcha} $file + file = ftplugin/mailaliases.vim + @if get_md5(file) != "fecf11b3c9c7df71fde161dfc80b5981": + :fetch {fetch = $fetcha} $file + file = ftplugin/mailcap.vim + @if get_md5(file) != "6a20143e8f3ba2a3699964b176c1eb7c": + :fetch {fetch = $fetcha} $file + file = ftplugin/make.vim + @if get_md5(file) != "8e71a922ef7683d8b69b2b57235368b6": + :fetch {fetch = $fetcha} $file + file = ftplugin/man.vim + @if get_md5(file) != "cbd7743caf225a204ce8315f447744be": + :fetch {fetch = $fetcha} $file + file = ftplugin/manconf.vim + @if get_md5(file) != "71a1461fe44947a2d12e488660164152": + :fetch {fetch = $fetcha} $file + file = ftplugin/matlab.vim + @if get_md5(file) != "be9e0ff4e2901fab73f93d7ab519becd": + :fetch {fetch = $fetcha} $file + file = ftplugin/mf.vim + @if get_md5(file) != "6dfb12f1cc22c75dd0afe2f6dc46d660": + :fetch {fetch = $fetcha} $file + file = ftplugin/modconf.vim + @if get_md5(file) != "75081e03c2ae31b36fb69ea1c79e38f0": + :fetch {fetch = $fetcha} $file + file = ftplugin/mp.vim + @if get_md5(file) != "2a90545aae4cfea835c01d4096bc2511": + :fetch {fetch = $fetcha} $file + file = ftplugin/mplayerconf.vim + @if get_md5(file) != "66881cb9309bf7de0f39adc5e0deeece": + :fetch {fetch = $fetcha} $file + file = ftplugin/mrxvtrc.vim + @if get_md5(file) != "7f32c76f334ccdbbe3a45cda1f00685e": + :fetch {fetch = $fetcha} $file + file = ftplugin/mupad.vim + @if get_md5(file) != "3cf70abf934e2460c7853161c8bb6be0": + :fetch {fetch = $fetcha} $file + file = ftplugin/muttrc.vim + @if get_md5(file) != "db7e0176a9d6ae6f463e6dff9388007d": + :fetch {fetch = $fetcha} $file + file = ftplugin/nanorc.vim + @if get_md5(file) != "6d8bdea55e902b7446130ddcf12588cc": + :fetch {fetch = $fetcha} $file + file = ftplugin/netrc.vim + @if get_md5(file) != "d405b8a061e9ea432481175c538e857d": + :fetch {fetch = $fetcha} $file + file = ftplugin/objc.vim + @if get_md5(file) != "e46355059eaf9af28f4101a9002aabe3": + :fetch {fetch = $fetcha} $file + file = ftplugin/ocaml.vim + @if get_md5(file) != "37078b32faad9042afd4ece490fbe83f": + :fetch {fetch = $fetcha} $file + file = ftplugin/occam.vim + @if get_md5(file) != "818ba8701e844c58c587d302f80b6b06": + :fetch {fetch = $fetcha} $file + file = ftplugin/pamconf.vim + @if get_md5(file) != "ad91b625edd634fd566373294821b569": + :fetch {fetch = $fetcha} $file + file = ftplugin/pascal.vim + @if get_md5(file) != "23fc0b89117d66c99c699a0f46b709e3": + :fetch {fetch = $fetcha} $file + file = ftplugin/passwd.vim + @if get_md5(file) != "7aa8be58108a461b9f90ad119eb1d735": + :fetch {fetch = $fetcha} $file + file = ftplugin/pdf.vim + @if get_md5(file) != "0f426f394dd7d6cade89db99f6478254": + :fetch {fetch = $fetcha} $file + file = ftplugin/perl.vim + @if get_md5(file) != "bba3fec57430da97dd54d3940e58715e": + :fetch {fetch = $fetcha} $file + file = ftplugin/php.vim + @if get_md5(file) != "3de1b92d97a10f595994158b1fb993cb": + :fetch {fetch = $fetcha} $file + file = ftplugin/pinfo.vim + @if get_md5(file) != "3deae8adc5082bd18fd1b2847dcfaf2e": + :fetch {fetch = $fetcha} $file + file = ftplugin/plaintex.vim + @if get_md5(file) != "dc5583a213753b31b5834b19bd3acd63": + :fetch {fetch = $fetcha} $file + file = ftplugin/postscr.vim + @if get_md5(file) != "81bdaedc1548795f64a46ffe4f1d02d6": + :fetch {fetch = $fetcha} $file + file = ftplugin/procmail.vim + @if get_md5(file) != "e824ca696f1c0b8cdb900d6ab4392db6": + :fetch {fetch = $fetcha} $file + file = ftplugin/prolog.vim + @if get_md5(file) != "47ff7ce9b3d53e4489c1128609569ab6": + :fetch {fetch = $fetcha} $file + file = ftplugin/protocols.vim + @if get_md5(file) != "8d154aed5f727e64ab0d00ffd47fab7d": + :fetch {fetch = $fetcha} $file + file = ftplugin/pyrex.vim + @if get_md5(file) != "9bda0ca1c0ff5fc4762742fe35739d1c": + :fetch {fetch = $fetcha} $file + file = ftplugin/python.vim + @if get_md5(file) != "917e191bd818a76b137224b9355369aa": + :fetch {fetch = $fetcha} $file + file = ftplugin/quake.vim + @if get_md5(file) != "2c4b052e95aebe617d5ed38e586d7516": + :fetch {fetch = $fetcha} $file + file = ftplugin/racc.vim + @if get_md5(file) != "3bc47c99a0021d2c3a9336f9cf5de089": + :fetch {fetch = $fetcha} $file + file = ftplugin/readline.vim + @if get_md5(file) != "030578eecd7218b8065ba57139f03c0f": + :fetch {fetch = $fetcha} $file + file = ftplugin/reva.vim + @if get_md5(file) != "662a951e593e31ad11bfbb98cce50387": + :fetch {fetch = $fetcha} $file + file = ftplugin/rnc.vim + @if get_md5(file) != "02cee74995cfd8ede4be61b7eeb89b1c": + :fetch {fetch = $fetcha} $file + file = ftplugin/rpl.vim + @if get_md5(file) != "6426e5b5743b3ee44f4d514d62fbe2e7": + :fetch {fetch = $fetcha} $file + file = ftplugin/rst.vim + @if get_md5(file) != "feccfcccb23d50247411df57b5fd4736": + :fetch {fetch = $fetcha} $file + file = ftplugin/ruby.vim + @if get_md5(file) != "26558923cf336b7b340e99dfb50f8e7e": + :fetch {fetch = $fetcha} $file + file = ftplugin/scheme.vim + @if get_md5(file) != "6f37679ca7a1a313fc3b1ea12eae4b0b": + :fetch {fetch = $fetcha} $file + file = ftplugin/screen.vim + @if get_md5(file) != "c2f3c233a1dfba0eeed39579e822cd29": + :fetch {fetch = $fetcha} $file + file = ftplugin/sensors.vim + @if get_md5(file) != "ad70e088c5db6136e13dcb560756b7a4": + :fetch {fetch = $fetcha} $file + file = ftplugin/services.vim + @if get_md5(file) != "48ecaede9d0876273bbc9267b8cf1cd8": + :fetch {fetch = $fetcha} $file + file = ftplugin/setserial.vim + @if get_md5(file) != "235a652c734d8602630013db2f7d59eb": + :fetch {fetch = $fetcha} $file + file = ftplugin/sgml.vim + @if get_md5(file) != "b81ffc0ba0f135b813f1ca8d3bed9567": + :fetch {fetch = $fetcha} $file + file = ftplugin/sh.vim + @if get_md5(file) != "b5d54eaf716b3309c656f8b93dda9f0a": + :fetch {fetch = $fetcha} $file + file = ftplugin/sieve.vim + @if get_md5(file) != "ed111db6a062c537c4b6f9b884a75777": + :fetch {fetch = $fetcha} $file + file = ftplugin/slpconf.vim + @if get_md5(file) != "37794ce8e991f30e0777fbb1393e5e18": + :fetch {fetch = $fetcha} $file + file = ftplugin/slpreg.vim + @if get_md5(file) != "b188a9fe0bfe3da5c383e10a248ea325": + :fetch {fetch = $fetcha} $file + file = ftplugin/slpspi.vim + @if get_md5(file) != "4819909f0edd753c522784da5b100807": + :fetch {fetch = $fetcha} $file + file = ftplugin/spec.vim + @if get_md5(file) != "9616a034f121f43a60408b52164ae3cb": + :fetch {fetch = $fetcha} $file + file = ftplugin/sql.vim + @if get_md5(file) != "b833ce0e91705c1ef4e68f111255fbae": + :fetch {fetch = $fetcha} $file + file = ftplugin/sshconfig.vim + @if get_md5(file) != "9cdca6d0dc2c221d7b6a4fdf52b23ee3": + :fetch {fetch = $fetcha} $file + file = ftplugin/sudoers.vim + @if get_md5(file) != "a6038109c4e07465666883048f1936c4": + :fetch {fetch = $fetcha} $file + file = ftplugin/svg.vim + @if get_md5(file) != "e262fe50063121998f8e6c299bd58bac": + :fetch {fetch = $fetcha} $file + file = ftplugin/sysctl.vim + @if get_md5(file) != "55cb0f32fcbf524241a1b06386d76d43": + :fetch {fetch = $fetcha} $file + file = ftplugin/tcsh.vim + @if get_md5(file) != "b4252a3a92f597f50fdb3028bed192c5": + :fetch {fetch = $fetcha} $file + file = ftplugin/terminfo.vim + @if get_md5(file) != "00b3569c3f0015728ff7d253ccaa47ff": + :fetch {fetch = $fetcha} $file + file = ftplugin/tex.vim + @if get_md5(file) != "8faed6eb27f9549bbf3aa4d6e3b0dead": + :fetch {fetch = $fetcha} $file + file = ftplugin/udevconf.vim + @if get_md5(file) != "9c8e8e9fd07384a07ea5675227048c08": + :fetch {fetch = $fetcha} $file + file = ftplugin/udevperm.vim + @if get_md5(file) != "9ddbeee18408874f51741210a9a1aa0d": + :fetch {fetch = $fetcha} $file + file = ftplugin/udevrules.vim + @if get_md5(file) != "b01229bc0d208a6fc70f4229e3c3ed8c": + :fetch {fetch = $fetcha} $file + file = ftplugin/updatedb.vim + @if get_md5(file) != "bef37996385993bb59bfb309c88b2de6": + :fetch {fetch = $fetcha} $file + file = ftplugin/vb.vim + @if get_md5(file) != "d68a3fc96e325c177d57a82ccc0a9deb": + :fetch {fetch = $fetcha} $file + file = ftplugin/verilog.vim + @if get_md5(file) != "31145bd48789f30613e4769eb84cd046": + :fetch {fetch = $fetcha} $file + file = ftplugin/vhdl.vim + @if get_md5(file) != "8a20327f2ed12ed9377a715c1bdddad1": + :fetch {fetch = $fetcha} $file + file = ftplugin/vim.vim + @if get_md5(file) != "844cdf5bd78f24802e5931d1b738a951": + :fetch {fetch = $fetcha} $file + file = ftplugin/xdefaults.vim + @if get_md5(file) != "c157d45887c074b7a890ef7d95d022a1": + :fetch {fetch = $fetcha} $file + file = ftplugin/xf86conf.vim + @if get_md5(file) != "4b8bf475493983810fdfb77f0984a1ce": + :fetch {fetch = $fetcha} $file + file = ftplugin/xhtml.vim + @if get_md5(file) != "d9a8b65b28e8fcf259adaa1af993b87d": + :fetch {fetch = $fetcha} $file + file = ftplugin/xinetd.vim + @if get_md5(file) != "f98bbce725e27967aa18fde9c7518fe2": + :fetch {fetch = $fetcha} $file + file = ftplugin/xml.vim + @if get_md5(file) != "bbd3e0fc1acbff99e32cc6402d2b8c5f": + :fetch {fetch = $fetcha} $file + file = ftplugin/xmodmap.vim + @if get_md5(file) != "8472e82fe7e379182f5ee551b4659ce6": + :fetch {fetch = $fetcha} $file + file = ftplugin/xs.vim + @if get_md5(file) != "7ad1657aaae0431261dbefb66e9b9602": + :fetch {fetch = $fetcha} $file + file = ftplugin/xsd.vim + @if get_md5(file) != "d323f6499d68a80a746e5d63f580688e": + :fetch {fetch = $fetcha} $file + file = ftplugin/xslt.vim + @if get_md5(file) != "43182e4569bcfc045f3dac4c29e6d748": + :fetch {fetch = $fetcha} $file + file = ftplugin/yaml.vim + @if get_md5(file) != "9c9e352e9fe70c987870f0166881650a": + :fetch {fetch = $fetcha} $file + file = ftplugin/zsh.vim + @if get_md5(file) != "6fdc2133be179a7a7fb3305fe69472d7": + :fetch {fetch = $fetcha} $file + file = ftplugin/README.txt + @if get_md5(file) != "64e97c5d64e8afe5421e1446c7430fa6": + :fetch {fetch = $fetcha} $file + :mkdir {f} plugin + file = plugin/getscriptPlugin.vim + @if get_md5(file) != "1055741892bab2a6e1b3c6ef2d451315": + :fetch {fetch = $fetcha} $file + file = plugin/gzip.vim + @if get_md5(file) != "b06e4f43926d782d1196290892f9f678": + :fetch {fetch = $fetcha} $file + file = plugin/matchparen.vim + @if get_md5(file) != "f4498a3d49212757d42e03a7855c60b8": + :fetch {fetch = $fetcha} $file + file = plugin/netrwPlugin.vim + @if get_md5(file) != "e2828d73d629a3fda0037c491e986486": + :fetch {fetch = $fetcha} $file + file = plugin/rrhelper.vim + @if get_md5(file) != "38ca7f4948f45790c4843f945aa11b04": + :fetch {fetch = $fetcha} $file + file = plugin/spellfile.vim + @if get_md5(file) != "78a26299e645b91f831e66c34c2b61cb": + :fetch {fetch = $fetcha} $file + file = plugin/tarPlugin.vim + @if get_md5(file) != "5052fa6f98c1f8dbc54f99f311ed04a1": + :fetch {fetch = $fetcha} $file + file = plugin/tohtml.vim + @if get_md5(file) != "2b3dc0d481bf35fbcd9c3d29f9fc04f8": + :fetch {fetch = $fetcha} $file + file = plugin/vimballPlugin.vim + @if get_md5(file) != "edf248d325f9d7d9c2d9bdeca3348c8d": + :fetch {fetch = $fetcha} $file + file = plugin/zipPlugin.vim + @if get_md5(file) != "c636fe725bc148eec8617c9b1fede2a1": + :fetch {fetch = $fetcha} $file + file = plugin/README.txt + @if get_md5(file) != "e52c32d264ac26b4996b44d3b58b3629": + :fetch {fetch = $fetcha} $file + :mkdir {f} syntax + file = syntax/2html.vim + @if get_md5(file) != "947bbbb3bcde4a514eae6a6f6708babd": + :fetch {fetch = $fetcha} $file + file = syntax/a2ps.vim + @if get_md5(file) != "59e27acdbb1c3966942ecd4afc07f117": + :fetch {fetch = $fetcha} $file + file = syntax/a65.vim + @if get_md5(file) != "4784cf23785cac5084d6bf1eabb64e93": + :fetch {fetch = $fetcha} $file + file = syntax/aap.vim + @if get_md5(file) != "56277dab32e0ac1f6d8015774eb908b3": + :fetch {fetch = $fetcha} $file + file = syntax/abap.vim + @if get_md5(file) != "ba3f207896a8af8aaaa70d0cd5ed0d7d": + :fetch {fetch = $fetcha} $file + file = syntax/abaqus.vim + @if get_md5(file) != "1afc8a200bbaee596922940dbc14d392": + :fetch {fetch = $fetcha} $file + file = syntax/abc.vim + @if get_md5(file) != "8ddc65a4e9f9e31f2a757cd4775b74b8": + :fetch {fetch = $fetcha} $file + file = syntax/abel.vim + @if get_md5(file) != "ff26cca000b00c664b745068eebb419d": + :fetch {fetch = $fetcha} $file + file = syntax/acedb.vim + @if get_md5(file) != "7364d2fc4365acaebb9a900bc2d57d9c": + :fetch {fetch = $fetcha} $file + file = syntax/ada.vim + @if get_md5(file) != "ad56749e6f15b8d12af7e5505cb61e70": + :fetch {fetch = $fetcha} $file + file = syntax/aflex.vim + @if get_md5(file) != "7829436137a8b126bb2f7041f84d0b1f": + :fetch {fetch = $fetcha} $file + file = syntax/ahdl.vim + @if get_md5(file) != "7febc5b661325a6f44728c57e0845827": + :fetch {fetch = $fetcha} $file + file = syntax/alsaconf.vim + @if get_md5(file) != "0211f3a196c7c02a12eadf3e5ffdac45": + :fetch {fetch = $fetcha} $file + file = syntax/amiga.vim + @if get_md5(file) != "a4829a7ddcd60ac24367233f2755392c": + :fetch {fetch = $fetcha} $file + file = syntax/aml.vim + @if get_md5(file) != "774fcd09ce38a9ad3bbd9c169c951741": + :fetch {fetch = $fetcha} $file + file = syntax/ampl.vim + @if get_md5(file) != "111a55e1a7adea4dce43c648d51ddaba": + :fetch {fetch = $fetcha} $file + file = syntax/ant.vim + @if get_md5(file) != "0d95a55cfb3f6f4bf154166dabbb7932": + :fetch {fetch = $fetcha} $file + file = syntax/antlr.vim + @if get_md5(file) != "a2d1ed6b0e5309f30f498b804fc52585": + :fetch {fetch = $fetcha} $file + file = syntax/apache.vim + @if get_md5(file) != "356bef5cf5c8cb19f4204050ec43ae6f": + :fetch {fetch = $fetcha} $file + file = syntax/apachestyle.vim + @if get_md5(file) != "b2a722d6f8aefe9722b1d30ae034a7aa": + :fetch {fetch = $fetcha} $file + file = syntax/arch.vim + @if get_md5(file) != "ac111fa673d6e3fff165fb9da3280962": + :fetch {fetch = $fetcha} $file + file = syntax/art.vim + @if get_md5(file) != "68e2742d51158d3ae396ce78613f03c7": + :fetch {fetch = $fetcha} $file + file = syntax/asm.vim + @if get_md5(file) != "3298deec550e755f600a741bdceb08e7": + :fetch {fetch = $fetcha} $file + file = syntax/asm68k.vim + @if get_md5(file) != "9856791a4345431be40e2e41a487b6d7": + :fetch {fetch = $fetcha} $file + file = syntax/asmh8300.vim + @if get_md5(file) != "24949ad0fa40a2b34148e10286976d02": + :fetch {fetch = $fetcha} $file + file = syntax/asn.vim + @if get_md5(file) != "7bacefa06f152bdef29cbbf9fd0bac2a": + :fetch {fetch = $fetcha} $file + file = syntax/aspvbs.vim + @if get_md5(file) != "45a1dc3018df466f457b461810342998": + :fetch {fetch = $fetcha} $file + file = syntax/asterisk.vim + @if get_md5(file) != "d7b86ced326b67b511fea0629129718b": + :fetch {fetch = $fetcha} $file + file = syntax/asteriskvm.vim + @if get_md5(file) != "7a7f9671556b9ec0c33133cf6f8fff5a": + :fetch {fetch = $fetcha} $file + file = syntax/atlas.vim + @if get_md5(file) != "bd980334a81251b6006f327f491bd42c": + :fetch {fetch = $fetcha} $file + file = syntax/autohotkey.vim + @if get_md5(file) != "9aa81a00aa33b5eebf5a9fb286f99092": + :fetch {fetch = $fetcha} $file + file = syntax/autoit.vim + @if get_md5(file) != "604da3bc4d8516ffbad2687e6385efc8": + :fetch {fetch = $fetcha} $file + file = syntax/automake.vim + @if get_md5(file) != "d096883080e01824cf90922d50d06f80": + :fetch {fetch = $fetcha} $file + file = syntax/ave.vim + @if get_md5(file) != "a6cf8b1b2097201c00d32170ffad1593": + :fetch {fetch = $fetcha} $file + file = syntax/awk.vim + @if get_md5(file) != "aadc2e01032005d4265b0d2b5b41a1a8": + :fetch {fetch = $fetcha} $file + file = syntax/ayacc.vim + @if get_md5(file) != "228ea7fc26335fc5665f20fc99b44312": + :fetch {fetch = $fetcha} $file + file = syntax/b.vim + @if get_md5(file) != "7ff633765bda218ae96707af1996a933": + :fetch {fetch = $fetcha} $file + file = syntax/baan.vim + @if get_md5(file) != "6e785996f30da57522a0bcca2b6ee16c": + :fetch {fetch = $fetcha} $file + file = syntax/basic.vim + @if get_md5(file) != "fa2b0e5a68b9fdc1fa3102b53f0516a6": + :fetch {fetch = $fetcha} $file + file = syntax/bc.vim + @if get_md5(file) != "09452bd06e9189895f351d807e2165a7": + :fetch {fetch = $fetcha} $file + file = syntax/bdf.vim + @if get_md5(file) != "936545d4a79021e5d3cde4b5902382b9": + :fetch {fetch = $fetcha} $file + file = syntax/bib.vim + @if get_md5(file) != "f57c907fa44d7395d3dbe486487676db": + :fetch {fetch = $fetcha} $file + file = syntax/bindzone.vim + @if get_md5(file) != "37940b8a625c48a39317526b0eca38b6": + :fetch {fetch = $fetcha} $file + file = syntax/blank.vim + @if get_md5(file) != "68c90fc3fd7c3ead7df9e65f8b2acabc": + :fetch {fetch = $fetcha} $file + file = syntax/bst.vim + @if get_md5(file) != "3273939498b72b5997dca3a5e2bdc42d": + :fetch {fetch = $fetcha} $file + file = syntax/btm.vim + @if get_md5(file) != "41822d5dd4ebb3e50906868eef6af4e1": + :fetch {fetch = $fetcha} $file + file = syntax/bzr.vim + @if get_md5(file) != "c1e3be30aad47102fdd704713a30b25d": + :fetch {fetch = $fetcha} $file + file = syntax/c.vim + @if get_md5(file) != "be8d6b6cbc728677fe11a044c97a93f8": + :fetch {fetch = $fetcha} $file + file = syntax/calendar.vim + @if get_md5(file) != "5c67b9a7965e0b411f87abe6a287933d": + :fetch {fetch = $fetcha} $file + file = syntax/catalog.vim + @if get_md5(file) != "d0641a8662014828e9e6e92917daa3c0": + :fetch {fetch = $fetcha} $file + file = syntax/cfg.vim + @if get_md5(file) != "7d403a4b3d0a99304213fc1e6258bae7": + :fetch {fetch = $fetcha} $file + file = syntax/cf.vim + @if get_md5(file) != "e8ee49cdfa965558200930e9c6169492": + :fetch {fetch = $fetcha} $file + file = syntax/cdl.vim + @if get_md5(file) != "236e3c705704d511cbad18a36e73151c": + :fetch {fetch = $fetcha} $file + file = syntax/cdrdaoconf.vim + @if get_md5(file) != "03708132bffada48675e220c0c4a0c18": + :fetch {fetch = $fetcha} $file + file = syntax/cdrtoc.vim + @if get_md5(file) != "fed731f666a0e4f8bfc385d397e16424": + :fetch {fetch = $fetcha} $file + file = syntax/ch.vim + @if get_md5(file) != "14fece8dc0cb9129d29bae63a7faec50": + :fetch {fetch = $fetcha} $file + file = syntax/change.vim + @if get_md5(file) != "241da26502f934febcfcc777b6c59838": + :fetch {fetch = $fetcha} $file + file = syntax/changelog.vim + @if get_md5(file) != "4d4892de88c7c304a741810c7c2ea1f2": + :fetch {fetch = $fetcha} $file + file = syntax/chaskell.vim + @if get_md5(file) != "15205448690593d69c797fe40fd03a8c": + :fetch {fetch = $fetcha} $file + file = syntax/cheetah.vim + @if get_md5(file) != "f7f47455894536369dce01cddb974a9d": + :fetch {fetch = $fetcha} $file + file = syntax/chill.vim + @if get_md5(file) != "a5ea28cc85d2d33ed433fe152b5ddc9a": + :fetch {fetch = $fetcha} $file + file = syntax/chordpro.vim + @if get_md5(file) != "77cb37a1f79c4ae253e046337ce60c68": + :fetch {fetch = $fetcha} $file + file = syntax/cl.vim + @if get_md5(file) != "aa3ec553a6a59910d2af32c3f5a6ca0f": + :fetch {fetch = $fetcha} $file + file = syntax/clean.vim + @if get_md5(file) != "3af316933c788bfb20c61f96650add51": + :fetch {fetch = $fetcha} $file + file = syntax/clipper.vim + @if get_md5(file) != "5800bc9e0e2468ae7c8cccf795fb58e3": + :fetch {fetch = $fetcha} $file + file = syntax/cmake.vim + @if get_md5(file) != "efe1c5fc0289034c7aeadce86fc6e533": + :fetch {fetch = $fetcha} $file + file = syntax/cmusrc.vim + @if get_md5(file) != "21a1f4acc3c4215cb66fab17912fc671": + :fetch {fetch = $fetcha} $file + file = syntax/cobol.vim + @if get_md5(file) != "ae371f21f83af36b31e81b15f2a7335b": + :fetch {fetch = $fetcha} $file + file = syntax/coco.vim + @if get_md5(file) != "f52424296ada7a26aedf0af8abc0841f": + :fetch {fetch = $fetcha} $file + file = syntax/colortest.vim + @if get_md5(file) != "913ff219467b135ee1bdf7c23cf961dd": + :fetch {fetch = $fetcha} $file + file = syntax/conaryrecipe.vim + @if get_md5(file) != "dcfa5e70bfbfaaf1df911ee551171ae2": + :fetch {fetch = $fetcha} $file + file = syntax/conf.vim + @if get_md5(file) != "23abccf483e0756cce09636eb57cb0ab": + :fetch {fetch = $fetcha} $file + file = syntax/config.vim + @if get_md5(file) != "db0fb5b75ae25132e95065642360396d": + :fetch {fetch = $fetcha} $file + file = syntax/context.vim + @if get_md5(file) != "1610205ab614aead8d877eafafe37b2b": + :fetch {fetch = $fetcha} $file + file = syntax/cpp.vim + @if get_md5(file) != "fb30dfa285650de11a5257af4fb4a979": + :fetch {fetch = $fetcha} $file + file = syntax/cuplsim.vim + @if get_md5(file) != "3589903349df0a2b43702e2cf2f6af4f": + :fetch {fetch = $fetcha} $file + file = syntax/cterm.vim + @if get_md5(file) != "1929f443bc569ac32c6f6a0bd0efcb4c": + :fetch {fetch = $fetcha} $file + file = syntax/crm.vim + @if get_md5(file) != "d91b8e61e0983fb0f1dca5ed103d81ac": + :fetch {fetch = $fetcha} $file + file = syntax/crontab.vim + @if get_md5(file) != "e2e9601d54a3b080fae2b3c9ce02e1be": + :fetch {fetch = $fetcha} $file + file = syntax/cs.vim + @if get_md5(file) != "4d9cdc0a0bb1ccda3c77374af4c3939a": + :fetch {fetch = $fetcha} $file + file = syntax/csc.vim + @if get_md5(file) != "1eacfccd1585155be4cf5aa85b160d3a": + :fetch {fetch = $fetcha} $file + file = syntax/csh.vim + @if get_md5(file) != "bfc05118363801bd30e05136411c8ef2": + :fetch {fetch = $fetcha} $file + file = syntax/csp.vim + @if get_md5(file) != "b6dc2f9de9f49c5f438fd0463f7e9ef0": + :fetch {fetch = $fetcha} $file + file = syntax/css.vim + @if get_md5(file) != "0a2c7001ff86a3623d418120e8904546": + :fetch {fetch = $fetcha} $file + file = syntax/ctrlh.vim + @if get_md5(file) != "83afb895529083d7ad6d492e357f5075": + :fetch {fetch = $fetcha} $file + file = syntax/cuda.vim + @if get_md5(file) != "b06f27a56a1b5914d0dd270422054c3a": + :fetch {fetch = $fetcha} $file + file = syntax/cupl.vim + @if get_md5(file) != "b973305a6a715d4a94bfc65fd510fcdf": + :fetch {fetch = $fetcha} $file + file = syntax/cvs.vim + @if get_md5(file) != "1a00f210b544df0de94b9624c814b732": + :fetch {fetch = $fetcha} $file + file = syntax/cvsrc.vim + @if get_md5(file) != "4d2a547b3c5cf472c1817269f844875b": + :fetch {fetch = $fetcha} $file + file = syntax/cweb.vim + @if get_md5(file) != "13d10b52d2b519176b6c0faeab8d44dd": + :fetch {fetch = $fetcha} $file + file = syntax/cynlib.vim + @if get_md5(file) != "f3a969f44bbd8e33f0af6f4018586822": + :fetch {fetch = $fetcha} $file + file = syntax/cynpp.vim + @if get_md5(file) != "c86ffe4866fcb0851bfb520363b9600d": + :fetch {fetch = $fetcha} $file + file = syntax/d.vim + @if get_md5(file) != "a3e8832a7c86d5b5952aced55cb11c43": + :fetch {fetch = $fetcha} $file + file = syntax/dcd.vim + @if get_md5(file) != "0e2a03f586b540c49d9013f2a5bde99c": + :fetch {fetch = $fetcha} $file + file = syntax/dcl.vim + @if get_md5(file) != "e71752a058ba2786962f3ea97e39e3bc": + :fetch {fetch = $fetcha} $file + file = syntax/debchangelog.vim + @if get_md5(file) != "4ff4d283fe7f57093293cf74c0803261": + :fetch {fetch = $fetcha} $file + file = syntax/debcontrol.vim + @if get_md5(file) != "92b2cd3df5f605f77f4af43a7c2f3e03": + :fetch {fetch = $fetcha} $file + file = syntax/debsources.vim + @if get_md5(file) != "73efe38672a1d048644a203ba52fc566": + :fetch {fetch = $fetcha} $file + file = syntax/def.vim + @if get_md5(file) != "e24947232e9a0cd0e2565e4617d1a25b": + :fetch {fetch = $fetcha} $file + file = syntax/denyhosts.vim + @if get_md5(file) != "7297202226a31322a4f3c10140769717": + :fetch {fetch = $fetcha} $file + file = syntax/desc.vim + @if get_md5(file) != "6fa3aaa1520fdbc33b445175e2703b7d": + :fetch {fetch = $fetcha} $file + file = syntax/dns.vim + @if get_md5(file) != "0d05b9b5d09131d5ebc2633e06f9f140": + :fetch {fetch = $fetcha} $file + file = syntax/doxygen.vim + @if get_md5(file) != "94ee553a5bf082837f32e3ae570c3f43": + :fetch {fetch = $fetcha} $file + file = syntax/diff.vim + @if get_md5(file) != "3064478cdf8550512a7ed790c1bdc211": + :fetch {fetch = $fetcha} $file + file = syntax/desktop.vim + @if get_md5(file) != "f5b5d6a2cea8be4d32d6895adecdc58b": + :fetch {fetch = $fetcha} $file + file = syntax/dictconf.vim + @if get_md5(file) != "87397f109224a19b47cb3b454597b2fd": + :fetch {fetch = $fetcha} $file + file = syntax/dictdconf.vim + @if get_md5(file) != "98d3c2e350d374535027dbc0c66d9951": + :fetch {fetch = $fetcha} $file + file = syntax/dircolors.vim + @if get_md5(file) != "d42a85abb0184a32a3d3688521bae14d": + :fetch {fetch = $fetcha} $file + file = syntax/diva.vim + @if get_md5(file) != "0460dc6d9cde13203b0c0fcb66dfccfa": + :fetch {fetch = $fetcha} $file + file = syntax/django.vim + @if get_md5(file) != "890704fe09d386f22ba47499aebd9548": + :fetch {fetch = $fetcha} $file + file = syntax/docbk.vim + @if get_md5(file) != "0791284f403af73941ec1047de562d57": + :fetch {fetch = $fetcha} $file + file = syntax/docbksgml.vim + @if get_md5(file) != "8b799f8a9d79f28651d95c2c3e6a537e": + :fetch {fetch = $fetcha} $file + file = syntax/docbkxml.vim + @if get_md5(file) != "30fec07dd6cd50e45f375e3fa3e456cf": + :fetch {fetch = $fetcha} $file + file = syntax/dosbatch.vim + @if get_md5(file) != "434d684e70577c40cbceddadd330468b": + :fetch {fetch = $fetcha} $file + file = syntax/dosini.vim + @if get_md5(file) != "baddbf17427e6a7e34d89678f4f0853b": + :fetch {fetch = $fetcha} $file + file = syntax/dot.vim + @if get_md5(file) != "99aa150621d9a5906f42a782b048dc0c": + :fetch {fetch = $fetcha} $file + file = syntax/dracula.vim + @if get_md5(file) != "bf11cd5de3797897cd7e52d288e802be": + :fetch {fetch = $fetcha} $file + file = syntax/dsl.vim + @if get_md5(file) != "8c7583b2ab5de667ce089894263c991a": + :fetch {fetch = $fetcha} $file + file = syntax/dtd.vim + @if get_md5(file) != "e67f65ae954eb6f105a032a60f68a7f0": + :fetch {fetch = $fetcha} $file + file = syntax/dtml.vim + @if get_md5(file) != "5a762c5210331c82b471e3b3779da4f0": + :fetch {fetch = $fetcha} $file + file = syntax/dylan.vim + @if get_md5(file) != "2c78cbe324b48fe932cbe1d54dd3ed19": + :fetch {fetch = $fetcha} $file + file = syntax/dylanintr.vim + @if get_md5(file) != "530022757677e74ef60cd1c76247546b": + :fetch {fetch = $fetcha} $file + file = syntax/dylanlid.vim + @if get_md5(file) != "67d6d500b14e0591e85733f08010b3a0": + :fetch {fetch = $fetcha} $file + file = syntax/ecd.vim + @if get_md5(file) != "d5c1aa30f94d49b23d77ec91abdf2126": + :fetch {fetch = $fetcha} $file + file = syntax/edif.vim + @if get_md5(file) != "babff87b1a34ab1207d503d3f42fc612": + :fetch {fetch = $fetcha} $file + file = syntax/eiffel.vim + @if get_md5(file) != "d06894690a0eb56b4d8b80d9213a037d": + :fetch {fetch = $fetcha} $file + file = syntax/elf.vim + @if get_md5(file) != "7cd1d6087a7aa278f5eed9389ba39b80": + :fetch {fetch = $fetcha} $file + file = syntax/elmfilt.vim + @if get_md5(file) != "ba3aaa3c006f9122554924c24c2428b8": + :fetch {fetch = $fetcha} $file + file = syntax/elinks.vim + @if get_md5(file) != "52d14a23baf1096b0369bd0b5b9c9ce3": + :fetch {fetch = $fetcha} $file + file = syntax/erlang.vim + @if get_md5(file) != "74f4f0f784b882b484e7f530e0b8c70f": + :fetch {fetch = $fetcha} $file + file = syntax/eruby.vim + @if get_md5(file) != "73ae49d2500a9f377cc0ede34c6404a2": + :fetch {fetch = $fetcha} $file + file = syntax/esmtprc.vim + @if get_md5(file) != "937614e1209a24341138931e3c609862": + :fetch {fetch = $fetcha} $file + file = syntax/esqlc.vim + @if get_md5(file) != "15c00c544b88c8057950a325a296a066": + :fetch {fetch = $fetcha} $file + file = syntax/esterel.vim + @if get_md5(file) != "32a6052fcfc0f034452f5b884480a493": + :fetch {fetch = $fetcha} $file + file = syntax/eterm.vim + @if get_md5(file) != "0ed74b35ab11f84f2871bd1c2ce29a81": + :fetch {fetch = $fetcha} $file + file = syntax/eviews.vim + @if get_md5(file) != "ecb7c0a356b622cd2efef631a58acc96": + :fetch {fetch = $fetcha} $file + file = syntax/exim.vim + @if get_md5(file) != "f7c217c317975a52a036d1a34edc0c46": + :fetch {fetch = $fetcha} $file + file = syntax/expect.vim + @if get_md5(file) != "2215078c100f3a363a7d72b0749cd062": + :fetch {fetch = $fetcha} $file + file = syntax/exports.vim + @if get_md5(file) != "eb991828c9fafed2e36b63869d4b4e26": + :fetch {fetch = $fetcha} $file + file = syntax/fasm.vim + @if get_md5(file) != "5699197901cde8c179b4a640fb60d790": + :fetch {fetch = $fetcha} $file + file = syntax/fdcc.vim + @if get_md5(file) != "0f01f0d370bf0e4559ac4306d508fd52": + :fetch {fetch = $fetcha} $file + file = syntax/fetchmail.vim + @if get_md5(file) != "af5090073e09f3771df346ef3b6903c2": + :fetch {fetch = $fetcha} $file + file = syntax/fgl.vim + @if get_md5(file) != "b57aee845c1e763562dacd33984d0932": + :fetch {fetch = $fetcha} $file + file = syntax/flexwiki.vim + @if get_md5(file) != "72a88c76485f7220772e366f087053e3": + :fetch {fetch = $fetcha} $file + file = syntax/focexec.vim + @if get_md5(file) != "d961dedcfeede20a9db3c9eddf68880f": + :fetch {fetch = $fetcha} $file + file = syntax/form.vim + @if get_md5(file) != "feb7f3e4fc8ad485e6f036a785421820": + :fetch {fetch = $fetcha} $file + file = syntax/forth.vim + @if get_md5(file) != "dee34538c145bd9b0e85a72997176695": + :fetch {fetch = $fetcha} $file + file = syntax/fortran.vim + @if get_md5(file) != "8f3f81bfec453a3539a837c70eff659f": + :fetch {fetch = $fetcha} $file + file = syntax/foxpro.vim + @if get_md5(file) != "bc2b1cb5dba744ff6bc2c7efee1cfab4": + :fetch {fetch = $fetcha} $file + file = syntax/framescript.vim + @if get_md5(file) != "50cdf43b1954c85f58170a91b7564faf": + :fetch {fetch = $fetcha} $file + file = syntax/freebasic.vim + @if get_md5(file) != "a5df4e63632e481da584b47460ff2f2d": + :fetch {fetch = $fetcha} $file + file = syntax/fstab.vim + @if get_md5(file) != "b0f601ea4a8c0b5102b7bcc1b4e98102": + :fetch {fetch = $fetcha} $file + file = syntax/fvwm2m4.vim + @if get_md5(file) != "e28d0979830ae2c9cf3ecb42966b5b54": + :fetch {fetch = $fetcha} $file + file = syntax/fvwm.vim + @if get_md5(file) != "ac7e47d5d71948ac7aab7375fad0330a": + :fetch {fetch = $fetcha} $file + file = syntax/gdb.vim + @if get_md5(file) != "6fe12a9472deb232051490d80ff8db0e": + :fetch {fetch = $fetcha} $file + file = syntax/gdmo.vim + @if get_md5(file) != "80f1226b7bbc54282b68d5168b621c95": + :fetch {fetch = $fetcha} $file + file = syntax/gedcom.vim + @if get_md5(file) != "df0ce2011c96f312356ffa5626147e54": + :fetch {fetch = $fetcha} $file + file = syntax/gitcommit.vim + @if get_md5(file) != "1716b98e5aa4c23b77185c1cf608fbb6": + :fetch {fetch = $fetcha} $file + file = syntax/gitconfig.vim + @if get_md5(file) != "593e33dd8022d879f19e92513cfe9e1a": + :fetch {fetch = $fetcha} $file + file = syntax/gitsendemail.vim + @if get_md5(file) != "c9ec0dda825877b7f0db2eaaa193fd79": + :fetch {fetch = $fetcha} $file + file = syntax/gkrellmrc.vim + @if get_md5(file) != "e92980d2bb15d960be24c8db30c9ddad": + :fetch {fetch = $fetcha} $file + file = syntax/gnuplot.vim + @if get_md5(file) != "5977534f7abce95f3b6d1866fc4de213": + :fetch {fetch = $fetcha} $file + file = syntax/gp.vim + @if get_md5(file) != "15655881656f58be6eba78219cfca5b0": + :fetch {fetch = $fetcha} $file + file = syntax/gpg.vim + @if get_md5(file) != "05c290183fb0015a8c2cfd312a78eed5": + :fetch {fetch = $fetcha} $file + file = syntax/grads.vim + @if get_md5(file) != "823d0293728e02b0ae19978638da5b0b": + :fetch {fetch = $fetcha} $file + file = syntax/gretl.vim + @if get_md5(file) != "cc142d065dab544aff9fced651049c86": + :fetch {fetch = $fetcha} $file + file = syntax/groff.vim + @if get_md5(file) != "a4e227c2931d502d6a1434c6146a7075": + :fetch {fetch = $fetcha} $file + file = syntax/groovy.vim + @if get_md5(file) != "a7f402677e42a88e39547f7173a95f5f": + :fetch {fetch = $fetcha} $file + file = syntax/group.vim + @if get_md5(file) != "39dd672b67254ba14261ab2e6d15918f": + :fetch {fetch = $fetcha} $file + file = syntax/grub.vim + @if get_md5(file) != "9ff1c945b8d7fca4e0012dd8b1c9b2f3": + :fetch {fetch = $fetcha} $file + file = syntax/gsp.vim + @if get_md5(file) != "755458a468e8236dad63eb14c7ccf764": + :fetch {fetch = $fetcha} $file + file = syntax/gtkrc.vim + @if get_md5(file) != "acaa8d2dd3f3e646de15bc10bf4d2d1e": + :fetch {fetch = $fetcha} $file + file = syntax/hamster.vim + @if get_md5(file) != "5df7b5f202573917ff3f919847e149ac": + :fetch {fetch = $fetcha} $file + file = syntax/haskell.vim + @if get_md5(file) != "503ad33bfa43aba69b686199cc3086d4": + :fetch {fetch = $fetcha} $file + file = syntax/hb.vim + @if get_md5(file) != "03894f70998cc0acfae1427dfac5d189": + :fetch {fetch = $fetcha} $file + file = syntax/help.vim + @if get_md5(file) != "a3854aae879d242f06b07a62fa1f4e35": + :fetch {fetch = $fetcha} $file + file = syntax/hercules.vim + @if get_md5(file) != "c25b527eafe750faae956ca8b0e24d8a": + :fetch {fetch = $fetcha} $file + file = syntax/htmlcheetah.vim + @if get_md5(file) != "de6ba21ef2170df683f344b2d3fc6bc2": + :fetch {fetch = $fetcha} $file + file = syntax/hostconf.vim + @if get_md5(file) != "843db1fc18412872f3dfb0bf5101e01c": + :fetch {fetch = $fetcha} $file + file = syntax/hex.vim + @if get_md5(file) != "56c49a0d9d8db09971c74db9cc3b1582": + :fetch {fetch = $fetcha} $file + file = syntax/hitest.vim + @if get_md5(file) != "586d3e03961eb93ffd80f9e8d2ecabb0": + :fetch {fetch = $fetcha} $file + file = syntax/hog.vim + @if get_md5(file) != "3a427ce1d23deb0b74e7b66da663fcfd": + :fetch {fetch = $fetcha} $file + file = syntax/html.vim + @if get_md5(file) != "4b96fe0bec800facfa9a21d7ffe8605d": + :fetch {fetch = $fetcha} $file + file = syntax/htmldjango.vim + @if get_md5(file) != "36da1c96c3d18b5df77e2f00f926008f": + :fetch {fetch = $fetcha} $file + file = syntax/htmlm4.vim + @if get_md5(file) != "f54358afe00854e71496e34e837ff7ae": + :fetch {fetch = $fetcha} $file + file = syntax/htmlos.vim + @if get_md5(file) != "326ad7ab3974ce932933ed7db14ce182": + :fetch {fetch = $fetcha} $file + file = syntax/ia64.vim + @if get_md5(file) != "60ce77ea37165ee1d4396ec0f5cd0147": + :fetch {fetch = $fetcha} $file + file = syntax/ibasic.vim + @if get_md5(file) != "d9c6186b3fa1b9081b37e2e8604120a3": + :fetch {fetch = $fetcha} $file + file = syntax/icemenu.vim + @if get_md5(file) != "99f74692b969ee47e2ca7f14a4fa4bcc": + :fetch {fetch = $fetcha} $file + file = syntax/icon.vim + @if get_md5(file) != "4c87f3f23f2b421333ded6bf55793936": + :fetch {fetch = $fetcha} $file + file = syntax/idl.vim + @if get_md5(file) != "03f2f3be194efdd041a4ed7802071458": + :fetch {fetch = $fetcha} $file + file = syntax/idlang.vim + @if get_md5(file) != "a1ef457940a13d585c03663837b92555": + :fetch {fetch = $fetcha} $file + file = syntax/indent.vim + @if get_md5(file) != "d1d1245ef9eec97a9aaa7add7257bf57": + :fetch {fetch = $fetcha} $file + file = syntax/inform.vim + @if get_md5(file) != "28305c1d6813b9ebf4be0224108942a6": + :fetch {fetch = $fetcha} $file + file = syntax/initex.vim + @if get_md5(file) != "44a67734c2a5a0a4c78a50dc98881277": + :fetch {fetch = $fetcha} $file + file = syntax/initng.vim + @if get_md5(file) != "1924ee3d01dd71eccfcc535076421354": + :fetch {fetch = $fetcha} $file + file = syntax/inittab.vim + @if get_md5(file) != "f8ec7214f5648d10c82cee518a87a035": + :fetch {fetch = $fetcha} $file + file = syntax/ipfilter.vim + @if get_md5(file) != "2479f320d6a1558900973f04d072af03": + :fetch {fetch = $fetcha} $file + file = syntax/ishd.vim + @if get_md5(file) != "9da549befb9e2f2d99d46f97debceaed": + :fetch {fetch = $fetcha} $file + file = syntax/iss.vim + @if get_md5(file) != "b5feb9269821eac8dd15d89be8a45794": + :fetch {fetch = $fetcha} $file + file = syntax/ist.vim + @if get_md5(file) != "339b00e0cb6331495cdce9001c581718": + :fetch {fetch = $fetcha} $file + file = syntax/jal.vim + @if get_md5(file) != "a1727c9e9dca69a025ea042987bba0ef": + :fetch {fetch = $fetcha} $file + file = syntax/jam.vim + @if get_md5(file) != "c62b03f9eb9d489bebbd076be51a3637": + :fetch {fetch = $fetcha} $file + file = syntax/jargon.vim + @if get_md5(file) != "2d14e793055e36e8f04f2aa234a97f5f": + :fetch {fetch = $fetcha} $file + file = syntax/lex.vim + @if get_md5(file) != "f7d639e347a9bf82d19cc978facfbe82": + :fetch {fetch = $fetcha} $file + file = syntax/ld.vim + @if get_md5(file) != "faa38deeeec5a0b5c4669e5b292f3747": + :fetch {fetch = $fetcha} $file + file = syntax/java.vim + @if get_md5(file) != "bbcc6faa3f228c18f916ecbdb808a053": + :fetch {fetch = $fetcha} $file + file = syntax/javacc.vim + @if get_md5(file) != "ef7e9e58ed0c491b89062d1423ed034a": + :fetch {fetch = $fetcha} $file + file = syntax/javascript.vim + @if get_md5(file) != "f71ac691567c4c565318bfb2fd4f4e95": + :fetch {fetch = $fetcha} $file + file = syntax/jess.vim + @if get_md5(file) != "8b1f00e58ae3d6a39a2e3cd08be0b6c3": + :fetch {fetch = $fetcha} $file + file = syntax/jgraph.vim + @if get_md5(file) != "4eae35934148e4f6296c38aef5b5ef5d": + :fetch {fetch = $fetcha} $file + file = syntax/jproperties.vim + @if get_md5(file) != "e4ff5c18ce1e8a2350f8e78e982326a0": + :fetch {fetch = $fetcha} $file + file = syntax/jsp.vim + @if get_md5(file) != "0a2090a9f06008fc467a92fc31fa5e73": + :fetch {fetch = $fetcha} $file + file = syntax/kconfig.vim + @if get_md5(file) != "a46d33097e1e7941900fb61bdce7d828": + :fetch {fetch = $fetcha} $file + file = syntax/kix.vim + @if get_md5(file) != "9d8036de4fdf34be4834219ea488a2eb": + :fetch {fetch = $fetcha} $file + file = syntax/kscript.vim + @if get_md5(file) != "79bdf6b8f6c5427a76cdcd5ba5e16f8b": + :fetch {fetch = $fetcha} $file + file = syntax/kwt.vim + @if get_md5(file) != "9871c99b1eca0b0a57f32a1fb89fca21": + :fetch {fetch = $fetcha} $file + file = syntax/lace.vim + @if get_md5(file) != "e3e8369f6d51153b78fc3d2e79bfaaf5": + :fetch {fetch = $fetcha} $file + file = syntax/latte.vim + @if get_md5(file) != "41576458c96726081ae473e55568033f": + :fetch {fetch = $fetcha} $file + file = syntax/ldapconf.vim + @if get_md5(file) != "ff9e1d362efcc7728885468d6bd4be9b": + :fetch {fetch = $fetcha} $file + file = syntax/ldif.vim + @if get_md5(file) != "7fac5034e431020b5b997f66ef54a7b8": + :fetch {fetch = $fetcha} $file + file = syntax/lftp.vim + @if get_md5(file) != "2ae260c3c6414cab1faf5391b18d11e0": + :fetch {fetch = $fetcha} $file + file = syntax/lhaskell.vim + @if get_md5(file) != "ec7c025f6bb0cce78d618b3f9954fd48": + :fetch {fetch = $fetcha} $file + file = syntax/libao.vim + @if get_md5(file) != "a9b9968c04559b8bea72349095159fc5": + :fetch {fetch = $fetcha} $file + file = syntax/lifelines.vim + @if get_md5(file) != "923e61c8b0ad7c42b3c9c2ee6fe8fd42": + :fetch {fetch = $fetcha} $file + file = syntax/lilo.vim + @if get_md5(file) != "ad06ba6f12abd9aa4a06af2e7df734ad": + :fetch {fetch = $fetcha} $file + file = syntax/limits.vim + @if get_md5(file) != "bf9a395adb9fe314658bf42072f113c2": + :fetch {fetch = $fetcha} $file + file = syntax/lisp.vim + @if get_md5(file) != "46dc1091fb2a0b1550b736d6651d5216": + :fetch {fetch = $fetcha} $file + file = syntax/lite.vim + @if get_md5(file) != "6085fbc2d7609a7098f78960951d236d": + :fetch {fetch = $fetcha} $file + file = syntax/litestep.vim + @if get_md5(file) != "c88fbfb53a0805639e2ccb3ad23b9c1e": + :fetch {fetch = $fetcha} $file + file = syntax/logtalk.vim + @if get_md5(file) != "f7782430e7b9d9e2bc4186e62271f649": + :fetch {fetch = $fetcha} $file + file = syntax/loginaccess.vim + @if get_md5(file) != "f160480f8f72a0a089351124f0bcafe4": + :fetch {fetch = $fetcha} $file + file = syntax/logindefs.vim + @if get_md5(file) != "d29c54c1933e43be8d636db58eaa0404": + :fetch {fetch = $fetcha} $file + file = syntax/lotos.vim + @if get_md5(file) != "c0cfefb794bf9846d12166e2359a8e16": + :fetch {fetch = $fetcha} $file + file = syntax/lout.vim + @if get_md5(file) != "b60bcd2b7f0c5c362320be5d04770aa4": + :fetch {fetch = $fetcha} $file + file = syntax/lpc.vim + @if get_md5(file) != "8d91aa20ebf11257602fc609c800942f": + :fetch {fetch = $fetcha} $file + file = syntax/lprolog.vim + @if get_md5(file) != "0b7106e6a1980ac5928443213cc2dd5a": + :fetch {fetch = $fetcha} $file + file = syntax/lscript.vim + @if get_md5(file) != "444a545c524ce0c49c2f504fa1d1278f": + :fetch {fetch = $fetcha} $file + file = syntax/lsl.vim + @if get_md5(file) != "3eb14ae69517c3234b5bbd87253b98d4": + :fetch {fetch = $fetcha} $file + file = syntax/lss.vim + @if get_md5(file) != "f693018d32802fbc4647e11fcdd8ed83": + :fetch {fetch = $fetcha} $file + file = syntax/lua.vim + @if get_md5(file) != "9173d9485f37968103af6ce67c2d1a60": + :fetch {fetch = $fetcha} $file + file = syntax/lynx.vim + @if get_md5(file) != "810ce0af8b49fea2ef34c9645c9391db": + :fetch {fetch = $fetcha} $file + file = syntax/m4.vim + @if get_md5(file) != "e2aee541a85ac52c3e77d7d5f08ab9cf": + :fetch {fetch = $fetcha} $file + file = syntax/mail.vim + @if get_md5(file) != "53683626455b42399e77d0cdd42a860d": + :fetch {fetch = $fetcha} $file + file = syntax/mailaliases.vim + @if get_md5(file) != "2f5135e2eb23acf680a26d70ac8e5412": + :fetch {fetch = $fetcha} $file + file = syntax/mailcap.vim + @if get_md5(file) != "0d458347c8d122c7bc9d74a1f14a9841": + :fetch {fetch = $fetcha} $file + file = syntax/make.vim + @if get_md5(file) != "8395494376540c22173f1b7386b00e6f": + :fetch {fetch = $fetcha} $file + file = syntax/man.vim + @if get_md5(file) != "2a1970a3e16971b58e2db8ac6bc3e1df": + :fetch {fetch = $fetcha} $file + file = syntax/manconf.vim + @if get_md5(file) != "720dd0deb4641557b53ccd899764d134": + :fetch {fetch = $fetcha} $file + file = syntax/manual.vim + @if get_md5(file) != "8ecc9fabc2934189cd62e1c72acbace4": + :fetch {fetch = $fetcha} $file + file = syntax/maple.vim + @if get_md5(file) != "c87d3f296a2e50a150d9c64e63f931c5": + :fetch {fetch = $fetcha} $file + file = syntax/masm.vim + @if get_md5(file) != "0bb06ab19f3176fc28a0f31c2572e47c": + :fetch {fetch = $fetcha} $file + file = syntax/mason.vim + @if get_md5(file) != "57f0004fef7b90e4bb8827400e7cb763": + :fetch {fetch = $fetcha} $file + file = syntax/master.vim + @if get_md5(file) != "814221489df1ae7ac8c3c147bd5787a2": + :fetch {fetch = $fetcha} $file + file = syntax/matlab.vim + @if get_md5(file) != "d005c6406afe4fb3e960960f1718e4f5": + :fetch {fetch = $fetcha} $file + file = syntax/maxima.vim + @if get_md5(file) != "ec7d20c9c9f5a3e61355e867807f366c": + :fetch {fetch = $fetcha} $file + file = syntax/mel.vim + @if get_md5(file) != "6d2328b2bf69567d7e2bd8e57021729a": + :fetch {fetch = $fetcha} $file + file = syntax/messages.vim + @if get_md5(file) != "2b69b8b92bf04bfbb8fbea4370ee9cb9": + :fetch {fetch = $fetcha} $file + file = syntax/mf.vim + @if get_md5(file) != "9ceb2e6227cc7351890475a8843f116b": + :fetch {fetch = $fetcha} $file + file = syntax/mgl.vim + @if get_md5(file) != "d94f837efc7a4b484096903d8e199da7": + :fetch {fetch = $fetcha} $file + file = syntax/mgp.vim + @if get_md5(file) != "c921573ece68b7752e64631437053d11": + :fetch {fetch = $fetcha} $file + file = syntax/mib.vim + @if get_md5(file) != "0fc1eb2203960ef77c083d5b59a5c66b": + :fetch {fetch = $fetcha} $file + file = syntax/mma.vim + @if get_md5(file) != "f2e6281c413eb2dc5012b9989d365c16": + :fetch {fetch = $fetcha} $file + file = syntax/mmix.vim + @if get_md5(file) != "552e9b899c506669479eadbe8b1361d2": + :fetch {fetch = $fetcha} $file + file = syntax/mmp.vim + @if get_md5(file) != "2bb1441d94ac53ac8291328671ad6335": + :fetch {fetch = $fetcha} $file + file = syntax/modconf.vim + @if get_md5(file) != "da521cce30a01ce2d9147bc6e5fea78e": + :fetch {fetch = $fetcha} $file + file = syntax/model.vim + @if get_md5(file) != "12300103e0bf216741711b66b31f14e7": + :fetch {fetch = $fetcha} $file + file = syntax/modsim3.vim + @if get_md5(file) != "5056a5b72c9089cf15af8a37e5bf5f81": + :fetch {fetch = $fetcha} $file + file = syntax/modula2.vim + @if get_md5(file) != "d2ef1e878d3dad071434e3adac16ed07": + :fetch {fetch = $fetcha} $file + file = syntax/modula3.vim + @if get_md5(file) != "340b41f7a3fe502f8dce13ca07564f6c": + :fetch {fetch = $fetcha} $file + file = syntax/monk.vim + @if get_md5(file) != "afba783805a26a642c783262138037b7": + :fetch {fetch = $fetcha} $file + file = syntax/moo.vim + @if get_md5(file) != "7938f4570db5f7f286309b51745583df": + :fetch {fetch = $fetcha} $file + file = syntax/mp.vim + @if get_md5(file) != "61d8cd68fec4aed9004bc3fbbc17d897": + :fetch {fetch = $fetcha} $file + file = syntax/mplayerconf.vim + @if get_md5(file) != "c2384e1c8ec4649bc7c76dbe895be3b2": + :fetch {fetch = $fetcha} $file + file = syntax/mrxvtrc.vim + @if get_md5(file) != "a7e604920038c4020c53649401a3bdca": + :fetch {fetch = $fetcha} $file + file = syntax/msidl.vim + @if get_md5(file) != "835f2f1c100a434ba8eac461781849b7": + :fetch {fetch = $fetcha} $file + file = syntax/msql.vim + @if get_md5(file) != "2484ca59e54c962f569baf45c8b59355": + :fetch {fetch = $fetcha} $file + file = syntax/mupad.vim + @if get_md5(file) != "b4ba7ce3bc9ad99c17ae25de6c79c86d": + :fetch {fetch = $fetcha} $file + file = syntax/mush.vim + @if get_md5(file) != "b3ba4f7c6d0cabf7e679785db14ca6a2": + :fetch {fetch = $fetcha} $file + file = syntax/muttrc.vim + @if get_md5(file) != "9eca157445c3e5fa51b9ed5368627153": + :fetch {fetch = $fetcha} $file + file = syntax/mysql.vim + @if get_md5(file) != "d67f0b5a76ae55c70468d032a80b923f": + :fetch {fetch = $fetcha} $file + file = syntax/named.vim + @if get_md5(file) != "fbafd05e41f408e7911734cbbdf742c1": + :fetch {fetch = $fetcha} $file + file = syntax/nanorc.vim + @if get_md5(file) != "0c7fd430157787ec50f6677f7dde5a41": + :fetch {fetch = $fetcha} $file + file = syntax/ncf.vim + @if get_md5(file) != "f8f4a06bde14fc24a235cad0106cf996": + :fetch {fetch = $fetcha} $file + file = syntax/nasm.vim + @if get_md5(file) != "864c228946915c241875110324a4bee3": + :fetch {fetch = $fetcha} $file + file = syntax/nastran.vim + @if get_md5(file) != "56f17f3eade63f17c669ba4ff8179570": + :fetch {fetch = $fetcha} $file + file = syntax/natural.vim + @if get_md5(file) != "cd00ee9d00172ef9413df9f49fbca760": + :fetch {fetch = $fetcha} $file + file = syntax/netrc.vim + @if get_md5(file) != "6ff38bd5114faa25cc02f513d6e0802b": + :fetch {fetch = $fetcha} $file + file = syntax/netrw.vim + @if get_md5(file) != "a6e87425cd64621992fb0f661cce5415": + :fetch {fetch = $fetcha} $file + file = syntax/nosyntax.vim + @if get_md5(file) != "c8674cb9e6f1a1d371710e1d07fe93bc": + :fetch {fetch = $fetcha} $file + file = syntax/nqc.vim + @if get_md5(file) != "4354a360bf31891b9fd324388da7ec62": + :fetch {fetch = $fetcha} $file + file = syntax/nroff.vim + @if get_md5(file) != "c9ed03d6958bc1a7a2aad3f82d485372": + :fetch {fetch = $fetcha} $file + file = syntax/nsis.vim + @if get_md5(file) != "03d3ebc28c623a264d55e568538403f9": + :fetch {fetch = $fetcha} $file + file = syntax/objc.vim + @if get_md5(file) != "25e848fbf1f5031b4aa24cc2b8b04d69": + :fetch {fetch = $fetcha} $file + file = syntax/objcpp.vim + @if get_md5(file) != "f168750f3ffa6790591a3cfdf52db4fe": + :fetch {fetch = $fetcha} $file + file = syntax/ocaml.vim + @if get_md5(file) != "32c89446bc250dee570e036251ba265f": + :fetch {fetch = $fetcha} $file + file = syntax/occam.vim + @if get_md5(file) != "7004b9f29ab9c4420fb46b4c928a5315": + :fetch {fetch = $fetcha} $file + file = syntax/omnimark.vim + @if get_md5(file) != "7f0a936aa60fe5e5c1cfe5d0ebc5a709": + :fetch {fetch = $fetcha} $file + file = syntax/openroad.vim + @if get_md5(file) != "cc60088627257ccbc75f91e13ed42b61": + :fetch {fetch = $fetcha} $file + file = syntax/opl.vim + @if get_md5(file) != "cc8983edc9f548610d96cf21ca11375b": + :fetch {fetch = $fetcha} $file + file = syntax/ora.vim + @if get_md5(file) != "cf019fbe0fb82540857239b056675e57": + :fetch {fetch = $fetcha} $file + file = syntax/pamconf.vim + @if get_md5(file) != "62bfa7f8d09286b24189e1b5bdf1f29d": + :fetch {fetch = $fetcha} $file + file = syntax/papp.vim + @if get_md5(file) != "36122463c58d5c612bbc2e0ad441fb76": + :fetch {fetch = $fetcha} $file + file = syntax/pascal.vim + @if get_md5(file) != "9a6b32c51d3f3e95562ebc38076e40d5": + :fetch {fetch = $fetcha} $file + file = syntax/passwd.vim + @if get_md5(file) != "1b942fefcdafe245caf7126fd6698a8c": + :fetch {fetch = $fetcha} $file + file = syntax/pcap.vim + @if get_md5(file) != "5452ee87485a80cbce0a935261894da2": + :fetch {fetch = $fetcha} $file + file = syntax/pdf.vim + @if get_md5(file) != "8b430cf697b10a791c8c33dae06af5f4": + :fetch {fetch = $fetcha} $file + file = syntax/pccts.vim + @if get_md5(file) != "99207a06a3a6f1dfd4b0c0ef89edad00": + :fetch {fetch = $fetcha} $file + file = syntax/perl.vim + @if get_md5(file) != "6d4ca725f5685c5735d294fbc415632d": + :fetch {fetch = $fetcha} $file + file = syntax/pf.vim + @if get_md5(file) != "4d68b0265313d58f326017d99ba20ae5": + :fetch {fetch = $fetcha} $file + file = syntax/pfmain.vim + @if get_md5(file) != "14417e31e8a223296ca6adbaebca708d": + :fetch {fetch = $fetcha} $file + file = syntax/php.vim + @if get_md5(file) != "93f6c68af4e0f3bae63c51c1f1e6d3e9": + :fetch {fetch = $fetcha} $file + file = syntax/phtml.vim + @if get_md5(file) != "a8b81c1a32f714840bea81587bfac6cc": + :fetch {fetch = $fetcha} $file + file = syntax/pic.vim + @if get_md5(file) != "aa2a1b92ccf03fc108c8000753b533df": + :fetch {fetch = $fetcha} $file + file = syntax/pike.vim + @if get_md5(file) != "b974147ee722d3383f66520acc41d9b5": + :fetch {fetch = $fetcha} $file + file = syntax/pilrc.vim + @if get_md5(file) != "bb7ff82319c71ac4f605cde5d0cf5ea7": + :fetch {fetch = $fetcha} $file + file = syntax/pine.vim + @if get_md5(file) != "c01e79d9539d1e35f7813b7157a1404d": + :fetch {fetch = $fetcha} $file + file = syntax/pinfo.vim + @if get_md5(file) != "13e05ed83a6df613c265ab374f3e7160": + :fetch {fetch = $fetcha} $file + file = syntax/plaintex.vim + @if get_md5(file) != "be91918fddfca6a383fb0561bd5c8fe7": + :fetch {fetch = $fetcha} $file + file = syntax/plm.vim + @if get_md5(file) != "e28501e64e56b612deaeba0a6c876b6a": + :fetch {fetch = $fetcha} $file + file = syntax/plp.vim + @if get_md5(file) != "f1a224db4dbabdf4a8fcb8d0f0e7e2fc": + :fetch {fetch = $fetcha} $file + file = syntax/plsql.vim + @if get_md5(file) != "e9447c3d4bcded039a32f15357d74dca": + :fetch {fetch = $fetcha} $file + file = syntax/po.vim + @if get_md5(file) != "36f2598e075459ef8d75e2c3ed8a90ce": + :fetch {fetch = $fetcha} $file + file = syntax/pod.vim + @if get_md5(file) != "00cd74ee8bc6d02b6a2370b7e3bd8709": + :fetch {fetch = $fetcha} $file + file = syntax/postscr.vim + @if get_md5(file) != "215f9d8dd175ff2ff04b803357f1cd8c": + :fetch {fetch = $fetcha} $file + file = syntax/pov.vim + @if get_md5(file) != "fcc6d8dc84a245f8b46ea092193fc6fc": + :fetch {fetch = $fetcha} $file + file = syntax/povini.vim + @if get_md5(file) != "ff236d3dd8a68893de17dbe0c52563ed": + :fetch {fetch = $fetcha} $file + file = syntax/ppd.vim + @if get_md5(file) != "a8635c1247b87ddef06d7065f959399d": + :fetch {fetch = $fetcha} $file + file = syntax/ppwiz.vim + @if get_md5(file) != "60ab63ab7af1e2287a989b87f3fbfe08": + :fetch {fetch = $fetcha} $file + file = syntax/prescribe.vim + @if get_md5(file) != "112c6e9db40606f3c38de0db0572374a": + :fetch {fetch = $fetcha} $file + file = syntax/privoxy.vim + @if get_md5(file) != "193fac7c36d0e98d58f45bae7fa84334": + :fetch {fetch = $fetcha} $file + file = syntax/procmail.vim + @if get_md5(file) != "e1c6c2e3a655b19b2f56c0dc2dfedc49": + :fetch {fetch = $fetcha} $file + file = syntax/progress.vim + @if get_md5(file) != "df72b547d27ff690cb4ed3218ae5a088": + :fetch {fetch = $fetcha} $file + file = syntax/prolog.vim + @if get_md5(file) != "0bb599e8c7dcc5d2f9042cf6d7c445b0": + :fetch {fetch = $fetcha} $file + file = syntax/promela.vim + @if get_md5(file) != "c1df3931d2ed9400bbdeeb031cae3e61": + :fetch {fetch = $fetcha} $file + file = syntax/protocols.vim + @if get_md5(file) != "7431014867a01d136cdd8f3888ca2a89": + :fetch {fetch = $fetcha} $file + file = syntax/psf.vim + @if get_md5(file) != "b316881eaa035300ae958302b7c1752b": + :fetch {fetch = $fetcha} $file + file = syntax/ptcap.vim + @if get_md5(file) != "ac88ab774484f39b828bc1c2f26a567e": + :fetch {fetch = $fetcha} $file + file = syntax/purifylog.vim + @if get_md5(file) != "5ecaf8f810b72da2a7102144c9b2c3f2": + :fetch {fetch = $fetcha} $file + file = syntax/pyrex.vim + @if get_md5(file) != "eb9dfac46c82fad2159ce71bb9997bae": + :fetch {fetch = $fetcha} $file + file = syntax/python.vim + @if get_md5(file) != "9110243c86eaf972f70c8c3f74d5b1e5": + :fetch {fetch = $fetcha} $file + file = syntax/qf.vim + @if get_md5(file) != "24ceabea40da9386f4d81d80cbddd49a": + :fetch {fetch = $fetcha} $file + file = syntax/quake.vim + @if get_md5(file) != "11f648663680f1bb8832d5769f46567e": + :fetch {fetch = $fetcha} $file + file = syntax/r.vim + @if get_md5(file) != "19c853f93a95a3e03956f2647173dba9": + :fetch {fetch = $fetcha} $file + file = syntax/racc.vim + @if get_md5(file) != "83b6ae135f324600b7b7a7d63f75e7d2": + :fetch {fetch = $fetcha} $file + file = syntax/radiance.vim + @if get_md5(file) != "35494dc095bd155b97bebdfa0eb45a7c": + :fetch {fetch = $fetcha} $file + file = syntax/ratpoison.vim + @if get_md5(file) != "0e839d230e31012f2ae6b230ea28dc38": + :fetch {fetch = $fetcha} $file + file = syntax/rc.vim + @if get_md5(file) != "ef86fa6a9574666f1391ac2a70a38edb": + :fetch {fetch = $fetcha} $file + file = syntax/rcs.vim + @if get_md5(file) != "69bcbe682a2c76f91b5fc737e99eb7a9": + :fetch {fetch = $fetcha} $file + file = syntax/rcslog.vim + @if get_md5(file) != "a8c4af8ea1a18837af6b97baf3a7476c": + :fetch {fetch = $fetcha} $file + file = syntax/readline.vim + @if get_md5(file) != "50269d5d968a4765864421ea376ef132": + :fetch {fetch = $fetcha} $file + file = syntax/rebol.vim + @if get_md5(file) != "46c8feb1c88165d674859628b4c9add6": + :fetch {fetch = $fetcha} $file + file = syntax/registry.vim + @if get_md5(file) != "535db8a67588b5cffaf5f4191aeb0c94": + :fetch {fetch = $fetcha} $file + file = syntax/remind.vim + @if get_md5(file) != "4ab65bbfd0c7737eea0e7d1511d0e006": + :fetch {fetch = $fetcha} $file + file = syntax/resolv.vim + @if get_md5(file) != "251a5afb45c90df50c6d3a72cde1e75c": + :fetch {fetch = $fetcha} $file + file = syntax/reva.vim + @if get_md5(file) != "707c04f649b30cce234b3a91a1c0dd1d": + :fetch {fetch = $fetcha} $file + file = syntax/rexx.vim + @if get_md5(file) != "c8f1de0136e5e58c25204d8aa5d50b40": + :fetch {fetch = $fetcha} $file + file = syntax/rhelp.vim + @if get_md5(file) != "e1af767b45591512daf1cd38a6d8dc87": + :fetch {fetch = $fetcha} $file + file = syntax/rib.vim + @if get_md5(file) != "ea09dc17b5b792b2aeeed401ec92b027": + :fetch {fetch = $fetcha} $file + file = syntax/rnc.vim + @if get_md5(file) != "11df701d2e329463c676f4f485673d9a": + :fetch {fetch = $fetcha} $file + file = syntax/rnoweb.vim + @if get_md5(file) != "d49436f970805cf2a5e137616a281b9b": + :fetch {fetch = $fetcha} $file + file = syntax/robots.vim + @if get_md5(file) != "5028a2820d4d161450950d7d0af81a9d": + :fetch {fetch = $fetcha} $file + file = syntax/rpcgen.vim + @if get_md5(file) != "0db375dd7ce310cfa284f30887b7a932": + :fetch {fetch = $fetcha} $file + file = syntax/rpl.vim + @if get_md5(file) != "4f9a3221df6b9c5cc591dd2c2093ba29": + :fetch {fetch = $fetcha} $file + file = syntax/rst.vim + @if get_md5(file) != "0fdfc8289c38850457f49874ce1f93ac": + :fetch {fetch = $fetcha} $file + file = syntax/rtf.vim + @if get_md5(file) != "327efd59d376df918438d87dff537d10": + :fetch {fetch = $fetcha} $file + file = syntax/ruby.vim + @if get_md5(file) != "6408706dcb979e48e82a8e1eabfbebeb": + :fetch {fetch = $fetcha} $file + file = syntax/samba.vim + @if get_md5(file) != "bac8f326a4eaeb7e92876abb6f27a093": + :fetch {fetch = $fetcha} $file + file = syntax/sas.vim + @if get_md5(file) != "2869b6f8a813274e0168478710d794c5": + :fetch {fetch = $fetcha} $file + file = syntax/sather.vim + @if get_md5(file) != "6f291d62117ebe54b741db73ddf84df4": + :fetch {fetch = $fetcha} $file + file = syntax/scheme.vim + @if get_md5(file) != "876f300891e2226fc6338fdc31a5de0b": + :fetch {fetch = $fetcha} $file + file = syntax/scilab.vim + @if get_md5(file) != "b6d95d0abeaec458cae963c68c66e6df": + :fetch {fetch = $fetcha} $file + file = syntax/screen.vim + @if get_md5(file) != "2a29f9a4a2e6ec37da4bd43ca05729b4": + :fetch {fetch = $fetcha} $file + file = syntax/sd.vim + @if get_md5(file) != "9f77a4eb201e5488ac967d9090ec0d94": + :fetch {fetch = $fetcha} $file + file = syntax/sdl.vim + @if get_md5(file) != "fd2604323ef01051539f6f7f3e544af6": + :fetch {fetch = $fetcha} $file + file = syntax/sed.vim + @if get_md5(file) != "86a1df1069d3802fa1e59ca50f3696d8": + :fetch {fetch = $fetcha} $file + file = syntax/sendpr.vim + @if get_md5(file) != "ca7735feb8c85e552ae5d350adfc1823": + :fetch {fetch = $fetcha} $file + file = syntax/sensors.vim + @if get_md5(file) != "028c432afcc7d036138a135e40378d88": + :fetch {fetch = $fetcha} $file + file = syntax/services.vim + @if get_md5(file) != "a17575f0ba54e8fb1148ddfc2361d776": + :fetch {fetch = $fetcha} $file + file = syntax/setserial.vim + @if get_md5(file) != "a357be9e6fa9645a859603e369fe2bee": + :fetch {fetch = $fetcha} $file + file = syntax/sgml.vim + @if get_md5(file) != "302a181b53f010cfa913bcbc30c43838": + :fetch {fetch = $fetcha} $file + file = syntax/sgmldecl.vim + @if get_md5(file) != "ffa2933c8a1d13fbe598ed6f8890569b": + :fetch {fetch = $fetcha} $file + file = syntax/sgmllnx.vim + @if get_md5(file) != "404e12a006c2ed62b52a3aa78ffac628": + :fetch {fetch = $fetcha} $file + file = syntax/sh.vim + @if get_md5(file) != "fa1341259a70a5ea498059e35f0619d8": + :fetch {fetch = $fetcha} $file + file = syntax/sicad.vim + @if get_md5(file) != "a6d1915486833764fcd64622f260d52b": + :fetch {fetch = $fetcha} $file + file = syntax/sieve.vim + @if get_md5(file) != "33090c7135526d168b351ccc1edc52a2": + :fetch {fetch = $fetcha} $file + file = syntax/simula.vim + @if get_md5(file) != "9538c2e373a9fbdc08d8aaadbb275f62": + :fetch {fetch = $fetcha} $file + file = syntax/sinda.vim + @if get_md5(file) != "b6c141a3966f9a12000c01f2e7bb845c": + :fetch {fetch = $fetcha} $file + file = syntax/sindacmp.vim + @if get_md5(file) != "f3c33e158aead9c96a6bfb64e9292850": + :fetch {fetch = $fetcha} $file + file = syntax/sindaout.vim + @if get_md5(file) != "ecef6e9fa1df58b5d050057bceeede93": + :fetch {fetch = $fetcha} $file + file = syntax/sisu.vim + @if get_md5(file) != "9736f6dac2d33f3298c9de294ea9102a": + :fetch {fetch = $fetcha} $file + file = syntax/skill.vim + @if get_md5(file) != "3f17400206b7bb6f05e2873b36b02367": + :fetch {fetch = $fetcha} $file + file = syntax/sl.vim + @if get_md5(file) != "70a7cfab7df739fda3c2796c4ac0f373": + :fetch {fetch = $fetcha} $file + file = syntax/slang.vim + @if get_md5(file) != "1925113a3361b88be8b7dd0383917a66": + :fetch {fetch = $fetcha} $file + file = syntax/slice.vim + @if get_md5(file) != "82c8d1c88e7eaf3b74554190e99478d4": + :fetch {fetch = $fetcha} $file + file = syntax/slpconf.vim + @if get_md5(file) != "018f8b587a745ff7856b2eaffa2332be": + :fetch {fetch = $fetcha} $file + file = syntax/slpreg.vim + @if get_md5(file) != "44bca0b28c9a0ae529ff555cff0630d9": + :fetch {fetch = $fetcha} $file + file = syntax/slpspi.vim + @if get_md5(file) != "e19f03ba840831c627b553f60c93fc91": + :fetch {fetch = $fetcha} $file + file = syntax/slrnrc.vim + @if get_md5(file) != "6f726f41220b88ed5211302a95dcb681": + :fetch {fetch = $fetcha} $file + file = syntax/slrnsc.vim + @if get_md5(file) != "a309b108c119067949ffee66de2b9c2b": + :fetch {fetch = $fetcha} $file + file = syntax/sm.vim + @if get_md5(file) != "6c8b3210898e6bca3d243d319e44e232": + :fetch {fetch = $fetcha} $file + file = syntax/smarty.vim + @if get_md5(file) != "05bdf99b76bfcaccaf15830379da5667": + :fetch {fetch = $fetcha} $file + file = syntax/smcl.vim + @if get_md5(file) != "ecdbe260c040300ee109e6d5a7a6a799": + :fetch {fetch = $fetcha} $file + file = syntax/smil.vim + @if get_md5(file) != "0e2fb71f4c943fc5727e9e3af86da71a": + :fetch {fetch = $fetcha} $file + file = syntax/smith.vim + @if get_md5(file) != "7e8815bc38c22a8fd3d98c4cca85f9e5": + :fetch {fetch = $fetcha} $file + file = syntax/sml.vim + @if get_md5(file) != "b9d1fc20f1498252b4dafc4914815254": + :fetch {fetch = $fetcha} $file + file = syntax/snnsnet.vim + @if get_md5(file) != "f699b25df8f927842d9e36e3c0d839f5": + :fetch {fetch = $fetcha} $file + file = syntax/snnspat.vim + @if get_md5(file) != "2e74495cade74c4be67c3d2e6c9f0bf4": + :fetch {fetch = $fetcha} $file + file = syntax/snnsres.vim + @if get_md5(file) != "8a2abb36991f8449fc0ee6dd5ef5bab6": + :fetch {fetch = $fetcha} $file + file = syntax/snobol4.vim + @if get_md5(file) != "c5c8b658706af2683682105ad60c8558": + :fetch {fetch = $fetcha} $file + file = syntax/sql.vim + @if get_md5(file) != "ac7f2711423f503474a217d5cf941fbc": + :fetch {fetch = $fetcha} $file + file = syntax/spec.vim + @if get_md5(file) != "dd5bd250b294bafe170c8a916696c26e": + :fetch {fetch = $fetcha} $file + file = syntax/specman.vim + @if get_md5(file) != "403704b71ffe18e794a2d58088a18889": + :fetch {fetch = $fetcha} $file + file = syntax/spice.vim + @if get_md5(file) != "384e0712ad074cb06d0910897722f820": + :fetch {fetch = $fetcha} $file + file = syntax/splint.vim + @if get_md5(file) != "a39ddd778d3782ffd93577bc533dcd8a": + :fetch {fetch = $fetcha} $file + file = syntax/spup.vim + @if get_md5(file) != "2f2e0356d37a93acb684bdc03ad637ab": + :fetch {fetch = $fetcha} $file + file = syntax/spyce.vim + @if get_md5(file) != "30fb6d94d46966ccb6a1dcae6308ea68": + :fetch {fetch = $fetcha} $file + file = syntax/sqlanywhere.vim + @if get_md5(file) != "741cb6028203f9b51c52a0769dd42583": + :fetch {fetch = $fetcha} $file + file = syntax/sqlforms.vim + @if get_md5(file) != "31324a2954c17bd8fc7881c40f36ba0c": + :fetch {fetch = $fetcha} $file + file = syntax/sqlinformix.vim + @if get_md5(file) != "18c244d3d7284804ef156e724e03bb1f": + :fetch {fetch = $fetcha} $file + file = syntax/sqlj.vim + @if get_md5(file) != "e7bf4736373c29943e90d390fd5ae024": + :fetch {fetch = $fetcha} $file + file = syntax/sqloracle.vim + @if get_md5(file) != "f193e7d9587bf2d5dea476ae5c464fe9": + :fetch {fetch = $fetcha} $file + file = syntax/sqr.vim + @if get_md5(file) != "bcfe0b991b4f3169b0b6f3e3721e6bd8": + :fetch {fetch = $fetcha} $file + file = syntax/squid.vim + @if get_md5(file) != "0ac4ce31943020625ec252e180cd7e90": + :fetch {fetch = $fetcha} $file + file = syntax/sshconfig.vim + @if get_md5(file) != "3e4377dbfb11568ba6f14a654d0c724d": + :fetch {fetch = $fetcha} $file + file = syntax/sshdconfig.vim + @if get_md5(file) != "d66e50f72809bbf601172fa35d86d733": + :fetch {fetch = $fetcha} $file + file = syntax/st.vim + @if get_md5(file) != "9047b21584369ff9aa9d4b006eb1c720": + :fetch {fetch = $fetcha} $file + file = syntax/stata.vim + @if get_md5(file) != "cba70f193bb24ee1ee293e8b0ca15eff": + :fetch {fetch = $fetcha} $file + file = syntax/stp.vim + @if get_md5(file) != "e44dae70fc8f213288be8a8485cbd61c": + :fetch {fetch = $fetcha} $file + file = syntax/strace.vim + @if get_md5(file) != "6a51f8d235846ea54361688cd482fa46": + :fetch {fetch = $fetcha} $file + file = syntax/sudoers.vim + @if get_md5(file) != "04bad7c8836a970974c5bd6b992d234b": + :fetch {fetch = $fetcha} $file + file = syntax/svn.vim + @if get_md5(file) != "92933c5120e2d00505b54b977f8a98ee": + :fetch {fetch = $fetcha} $file + file = syntax/syncolor.vim + @if get_md5(file) != "43b79012ef98e98d279c7b1695bbee73": + :fetch {fetch = $fetcha} $file + file = syntax/synload.vim + @if get_md5(file) != "36466cacc48f3cd6a0291b3341be4cb3": + :fetch {fetch = $fetcha} $file + file = syntax/syntax.vim + @if get_md5(file) != "869c5d4910d39d4c18503e330de43700": + :fetch {fetch = $fetcha} $file + file = syntax/sysctl.vim + @if get_md5(file) != "eca3b69875151e7309b1c360f162471c": + :fetch {fetch = $fetcha} $file + file = syntax/tads.vim + @if get_md5(file) != "f55f8988eed1ce5407cd2b21c03f583c": + :fetch {fetch = $fetcha} $file + file = syntax/tags.vim + @if get_md5(file) != "2ed568866c553faee03389cd3aa3ba42": + :fetch {fetch = $fetcha} $file + file = syntax/tak.vim + @if get_md5(file) != "8f3b3f6a52bf4178cb00afe68c0d613d": + :fetch {fetch = $fetcha} $file + file = syntax/takcmp.vim + @if get_md5(file) != "8a125be12a9335ab23dfb0a29eae96a2": + :fetch {fetch = $fetcha} $file + file = syntax/takout.vim + @if get_md5(file) != "8b9f4158c60ba8f9c4389e5c3ba36475": + :fetch {fetch = $fetcha} $file + file = syntax/tar.vim + @if get_md5(file) != "9e4efc952a1cb45bdb7f1310a33da27e": + :fetch {fetch = $fetcha} $file + file = syntax/tasm.vim + @if get_md5(file) != "98af1ed27db49db4f83f49191fe124d8": + :fetch {fetch = $fetcha} $file + file = syntax/tcl.vim + @if get_md5(file) != "3b975c2bec6e326727da147591077574": + :fetch {fetch = $fetcha} $file + file = syntax/tcsh.vim + @if get_md5(file) != "5c9a22f19408ed71261b3aa6afd292ca": + :fetch {fetch = $fetcha} $file + file = syntax/terminfo.vim + @if get_md5(file) != "9a8f9e123e0c1dabd1f884f56c2c05a8": + :fetch {fetch = $fetcha} $file + file = syntax/tex.vim + @if get_md5(file) != "bd8d72f877161c344b91221897c0d8b5": + :fetch {fetch = $fetcha} $file + file = syntax/texinfo.vim + @if get_md5(file) != "7e6043d43c41dd2b27f6e3a5abe82773": + :fetch {fetch = $fetcha} $file + file = syntax/texmf.vim + @if get_md5(file) != "33f883056b2b193f9367cf33493ad4a3": + :fetch {fetch = $fetcha} $file + file = syntax/tf.vim + @if get_md5(file) != "1723d40c5c3251f800d81728d03da86d": + :fetch {fetch = $fetcha} $file + file = syntax/tidy.vim + @if get_md5(file) != "620ab491599f021f700d5c8c78da6ffd": + :fetch {fetch = $fetcha} $file + file = syntax/tilde.vim + @if get_md5(file) != "f708773bf17cfeb06079c1362d028add": + :fetch {fetch = $fetcha} $file + file = syntax/tli.vim + @if get_md5(file) != "e4e220d82ced65a5fafcc289668da7e9": + :fetch {fetch = $fetcha} $file + file = syntax/tpp.vim + @if get_md5(file) != "2672069ba6a34304386a9def6d759018": + :fetch {fetch = $fetcha} $file + file = syntax/trasys.vim + @if get_md5(file) != "40bbb16cbbab3a509c45e883dc1ae9e4": + :fetch {fetch = $fetcha} $file + file = syntax/trustees.vim + @if get_md5(file) != "8c2a98c59796e3456a28da9a78cbb4b4": + :fetch {fetch = $fetcha} $file + file = syntax/tsalt.vim + @if get_md5(file) != "5abb25548874aae871d14aea51c646b2": + :fetch {fetch = $fetcha} $file + file = syntax/tsscl.vim + @if get_md5(file) != "4777ea8bd5b1e714f3e7ce423a81ce88": + :fetch {fetch = $fetcha} $file + file = syntax/tssgm.vim + @if get_md5(file) != "4e4ed8f9b000afa93f0f8daf32b3ac8c": + :fetch {fetch = $fetcha} $file + file = syntax/tssop.vim + @if get_md5(file) != "aaf4a106f6edbceee50803de54d3f2d2": + :fetch {fetch = $fetcha} $file + file = syntax/uc.vim + @if get_md5(file) != "edc7945baad47e44cf912a908e52c292": + :fetch {fetch = $fetcha} $file + file = syntax/udevconf.vim + @if get_md5(file) != "68abf5901af654e49e5aafe919fd17d9": + :fetch {fetch = $fetcha} $file + file = syntax/udevperm.vim + @if get_md5(file) != "7db275b178f18a852b066f5fdb366152": + :fetch {fetch = $fetcha} $file + file = syntax/udevrules.vim + @if get_md5(file) != "1ffc62a35805a3a454281467048ce10b": + :fetch {fetch = $fetcha} $file + file = syntax/uil.vim + @if get_md5(file) != "fdc07b254b69e84a666073236d3ea1b7": + :fetch {fetch = $fetcha} $file + file = syntax/updatedb.vim + @if get_md5(file) != "8e6d9c698dc017ec0deab87b88b3d6f6": + :fetch {fetch = $fetcha} $file + file = syntax/valgrind.vim + @if get_md5(file) != "4d2e293bae1d8bd6ee71de22e2ef546d": + :fetch {fetch = $fetcha} $file + file = syntax/vb.vim + @if get_md5(file) != "bb6ea1baf117bc87b1ae429de6099de7": + :fetch {fetch = $fetcha} $file + file = syntax/vera.vim + @if get_md5(file) != "1f828718fe31efc5b6bad9508eeb4a72": + :fetch {fetch = $fetcha} $file + file = syntax/verilog.vim + @if get_md5(file) != "1042596b937def0a4090099d872f8e3b": + :fetch {fetch = $fetcha} $file + file = syntax/verilogams.vim + @if get_md5(file) != "e167478e8866e6632588c6f8f96cb0f8": + :fetch {fetch = $fetcha} $file + file = syntax/vgrindefs.vim + @if get_md5(file) != "b9afad62b64aa7818371f86df410a64a": + :fetch {fetch = $fetcha} $file + file = syntax/vhdl.vim + @if get_md5(file) != "980cca3fd79c328273b2fe256930086b": + :fetch {fetch = $fetcha} $file + file = syntax/vim.vim + @if get_md5(file) != "ed185f76b5d0fa9ec9cdac2f20d74c06": + :fetch {fetch = $fetcha} $file + file = syntax/viminfo.vim + @if get_md5(file) != "1eb965924108db94fe8d97bece4609be": + :fetch {fetch = $fetcha} $file + file = syntax/virata.vim + @if get_md5(file) != "104f14de437b4c7d0e4ee782e9575e3f": + :fetch {fetch = $fetcha} $file + file = syntax/vmasm.vim + @if get_md5(file) != "2a90b570b158a6a30821b341a0a9066c": + :fetch {fetch = $fetcha} $file + file = syntax/voscm.vim + @if get_md5(file) != "101d48961638b5a8eda9c0900e6c3f31": + :fetch {fetch = $fetcha} $file + file = syntax/vrml.vim + @if get_md5(file) != "4503b09154dea5f77de812ee9f2e0ddc": + :fetch {fetch = $fetcha} $file + file = syntax/vsejcl.vim + @if get_md5(file) != "75aae328ca486dc35877c41b52e01148": + :fetch {fetch = $fetcha} $file + file = syntax/wdiff.vim + @if get_md5(file) != "768a0398261d53cc6269f3402178a4cf": + :fetch {fetch = $fetcha} $file + file = syntax/web.vim + @if get_md5(file) != "5d76759fe03e2346b147284fc2c34570": + :fetch {fetch = $fetcha} $file + file = syntax/webmacro.vim + @if get_md5(file) != "aaf9123a61e61dd3a2ee080ef41bba6f": + :fetch {fetch = $fetcha} $file + file = syntax/wget.vim + @if get_md5(file) != "304eb376e3f184955efae0076acbbd14": + :fetch {fetch = $fetcha} $file + file = syntax/whitespace.vim + @if get_md5(file) != "b9af1583ff157cfee6fc61fd33127a82": + :fetch {fetch = $fetcha} $file + file = syntax/winbatch.vim + @if get_md5(file) != "dbca4966548645fc52eb220dde2bea5b": + :fetch {fetch = $fetcha} $file + file = syntax/wml.vim + @if get_md5(file) != "16ab0961619160fc11d3816037dafeae": + :fetch {fetch = $fetcha} $file + file = syntax/wsh.vim + @if get_md5(file) != "12af638dd45566a85d9fa40ae5d2489a": + :fetch {fetch = $fetcha} $file + file = syntax/wsml.vim + @if get_md5(file) != "1dbd2b86c22df37c995f7f86c2725fd5": + :fetch {fetch = $fetcha} $file + file = syntax/wvdial.vim + @if get_md5(file) != "3ea311d6e01736a536f0947e05fe491e": + :fetch {fetch = $fetcha} $file + file = syntax/xbl.vim + @if get_md5(file) != "9ad533619ff1c0b7cf13c60edfe70b0d": + :fetch {fetch = $fetcha} $file + file = syntax/xdefaults.vim + @if get_md5(file) != "25ade76709e5ebe09ca5ee01f8b4f506": + :fetch {fetch = $fetcha} $file + file = syntax/xf86conf.vim + @if get_md5(file) != "6bc692c99a3e60b123f1f2cd877b58a2": + :fetch {fetch = $fetcha} $file + file = syntax/xhtml.vim + @if get_md5(file) != "eb1baa8b1c1b477ea88d0e4d912a463a": + :fetch {fetch = $fetcha} $file + file = syntax/xinetd.vim + @if get_md5(file) != "3a1767a2248ce04e0daab19a5258437f": + :fetch {fetch = $fetcha} $file + file = syntax/xkb.vim + @if get_md5(file) != "97a7a167033caaf7a7db021967f2bfd2": + :fetch {fetch = $fetcha} $file + file = syntax/xmath.vim + @if get_md5(file) != "9d5314a2341ca48635703e526fe27b4e": + :fetch {fetch = $fetcha} $file + file = syntax/xml.vim + @if get_md5(file) != "b313ae58ab68bbba10f2ede99e095d06": + :fetch {fetch = $fetcha} $file + file = syntax/xmodmap.vim + @if get_md5(file) != "9428f6bce6588ea26917049e7d12b310": + :fetch {fetch = $fetcha} $file + file = syntax/xpm.vim + @if get_md5(file) != "6b8a7f43478f4ac84fc0a4625def0c1f": + :fetch {fetch = $fetcha} $file + file = syntax/xpm2.vim + @if get_md5(file) != "5eb1086e921135e881425a3c3763c4ee": + :fetch {fetch = $fetcha} $file + file = syntax/xquery.vim + @if get_md5(file) != "d6be0141d1a91c8641de0a143688039b": + :fetch {fetch = $fetcha} $file + file = syntax/xs.vim + @if get_md5(file) != "aba458d02273f89d3fbb71a40311c2bf": + :fetch {fetch = $fetcha} $file + file = syntax/xsd.vim + @if get_md5(file) != "791ab858b61e49a3fc257e4e467f30d1": + :fetch {fetch = $fetcha} $file + file = syntax/xslt.vim + @if get_md5(file) != "b37e8f9bb8eac1445c6931c9b2fbeb9b": + :fetch {fetch = $fetcha} $file + file = syntax/xxd.vim + @if get_md5(file) != "b3646c9e2dcc95101acfec38069ece0d": + :fetch {fetch = $fetcha} $file + file = syntax/yacc.vim + @if get_md5(file) != "f108b496f8d85c866f82bb34063601cd": + :fetch {fetch = $fetcha} $file + file = syntax/yaml.vim + @if get_md5(file) != "08b2c4e2d1fd11a18f120aa59c4c4aaf": + :fetch {fetch = $fetcha} $file + file = syntax/z8a.vim + @if get_md5(file) != "5becbc40361c55087d45d023d9781ac4": + :fetch {fetch = $fetcha} $file + file = syntax/zsh.vim + @if get_md5(file) != "22cfe961220eed30cce7fbf5b2371ce0": + :fetch {fetch = $fetcha} $file + file = syntax/aspperl.vim + @if get_md5(file) != "9f7186a75ff61c975f04b1a359937ba7": + :fetch {fetch = $fetcha} $file + file = syntax/README.txt + @if get_md5(file) != "e107c31ae7d353a71d5a6ddccad819e7": + :fetch {fetch = $fetcha} $file + file = doc/evim-fr.1 + @if get_md5(file) != "f4556feb594d81ab67236f56d1233fdf": + :fetch {fetch = $fetcha} $file + file = doc/vim-fr.1 + @if get_md5(file) != "942a22fa241e22377718da1dc1275306": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-fr.1 + @if get_md5(file) != "6e458cbcf1bbe3461e94d976b9e07831": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-fr.1 + @if get_md5(file) != "7ec7f0ba3e96f71c2f97e759269a1091": + :fetch {fetch = $fetcha} $file + file = doc/xxd-fr.1 + @if get_md5(file) != "f0da388291d728e9f08cd5faae9fccde": + :fetch {fetch = $fetcha} $file + file = doc/evim-fr.UTF-8.1 + @if get_md5(file) != "e8d2926a170b09ea907f549b8ff60395": + :fetch {fetch = $fetcha} $file + file = doc/vim-fr.UTF-8.1 + @if get_md5(file) != "15cfffff9ee0128468fc85c62e21828e": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-fr.UTF-8.1 + @if get_md5(file) != "93d96855a2a8f3d75ab1ba64c222608d": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-fr.UTF-8.1 + @if get_md5(file) != "3262b0cab83b5f4ce63596fe8b7b5b7a": + :fetch {fetch = $fetcha} $file + file = doc/xxd-fr.UTF-8.1 + @if get_md5(file) != "ee1cf81242762a1ae599b746049e47db": + :fetch {fetch = $fetcha} $file + file = doc/evim-it.1 + @if get_md5(file) != "daed0a35d51e9f393613d96c3d5f0c83": + :fetch {fetch = $fetcha} $file + file = doc/vim-it.1 + @if get_md5(file) != "101b59387610e0150b3cc633539d3ba5": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-it.1 + @if get_md5(file) != "8130d51ebc40072e0d679132b7ef62e0": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-it.1 + @if get_md5(file) != "c977ae9a0faad19758095e74e9e678b3": + :fetch {fetch = $fetcha} $file + file = doc/xxd-it.1 + @if get_md5(file) != "85acfb5bbec824b8fb5a581ed5526538": + :fetch {fetch = $fetcha} $file + file = doc/evim-it.UTF-8.1 + @if get_md5(file) != "9c833558c9d37d33e2a527e4ffd0ca71": + :fetch {fetch = $fetcha} $file + file = doc/vim-it.UTF-8.1 + @if get_md5(file) != "80d6781d1ae4a95d068289933cd32d8f": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-it.UTF-8.1 + @if get_md5(file) != "10cc52a4fb25c9739445df3494fa5217": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-it.UTF-8.1 + @if get_md5(file) != "b682ec54a4283c13bd1f7a5c7a9e5692": + :fetch {fetch = $fetcha} $file + file = doc/xxd-it.UTF-8.1 + @if get_md5(file) != "681b7b45823b59666c9f56feae3a8623": + :fetch {fetch = $fetcha} $file + file = doc/evim-pl.1 + @if get_md5(file) != "df086cb1bb7ab83806d74e8229d337e9": + :fetch {fetch = $fetcha} $file + file = doc/vim-pl.1 + @if get_md5(file) != "fadb494a3552982b91e340a0f164d0d5": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-pl.1 + @if get_md5(file) != "886c1805cf40a6ee081a7f6fbabea01f": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-pl.1 + @if get_md5(file) != "8165e9d57c7f2a9b39d3194143454dd1": + :fetch {fetch = $fetcha} $file + file = doc/xxd-pl.1 + @if get_md5(file) != "692e321088f42719a31195b45d4c0e78": + :fetch {fetch = $fetcha} $file + file = doc/evim-pl.UTF-8.1 + @if get_md5(file) != "7c050e5d78f6b71c7f082c979a95e884": + :fetch {fetch = $fetcha} $file + file = doc/vim-pl.UTF-8.1 + @if get_md5(file) != "a0ca9d4aadebf2c48e98b1e3d3d625e0": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-pl.UTF-8.1 + @if get_md5(file) != "8e0ceda2765e4ea388c358b7cb24a3cd": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-pl.UTF-8.1 + @if get_md5(file) != "4b36d6906c78f2b28b98824694424ff1": + :fetch {fetch = $fetcha} $file + file = doc/xxd-pl.UTF-8.1 + @if get_md5(file) != "c127e78bfa2decc0b677606e9b904706": + :fetch {fetch = $fetcha} $file + file = doc/evim-ru.1 + @if get_md5(file) != "a48586303147b52609cae9ee2af228cd": + :fetch {fetch = $fetcha} $file + file = doc/vim-ru.1 + @if get_md5(file) != "a162de37211386fe549a86e49eb0d0ca": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-ru.1 + @if get_md5(file) != "13e09ad36678b1baf4b568a07b2a7f35": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-ru.1 + @if get_md5(file) != "34d45e6a8888b16253f7806aac180293": + :fetch {fetch = $fetcha} $file + file = doc/xxd-ru.1 + @if get_md5(file) != "f1c33d709a672dc4ab65e6ce305a138b": + :fetch {fetch = $fetcha} $file + file = doc/evim-ru.UTF-8.1 + @if get_md5(file) != "6a56afef874f58d4b9307299913b6a7c": + :fetch {fetch = $fetcha} $file + file = doc/vim-ru.UTF-8.1 + @if get_md5(file) != "82ece6bae3340df511bab58cbdc7a190": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-ru.UTF-8.1 + @if get_md5(file) != "cc70801d300ec32bcbcf06ec351f1d06": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-ru.UTF-8.1 + @if get_md5(file) != "fc973ef95a4db65b63c75c488579ac94": + :fetch {fetch = $fetcha} $file + file = doc/xxd-ru.UTF-8.1 + @if get_md5(file) != "0f3c551fa4ec9bac7a0b2a0683d5976c": + :fetch {fetch = $fetcha} $file + :mkdir {f} lang + file = lang/README.txt + @if get_md5(file) != "bb8b2fb340ee795c70c7b16d2af27240": + :fetch {fetch = $fetcha} $file + file = lang/menu_af.latin1.vim + @if get_md5(file) != "e0dc03bea7108d850bf8b28e973a26af": + :fetch {fetch = $fetcha} $file + file = lang/menu_af.utf-8.vim + @if get_md5(file) != "34c08e50bd2f34a62c83073441e44b3e": + :fetch {fetch = $fetcha} $file + file = lang/menu_af_af.latin1.vim + @if get_md5(file) != "1008174aad5dcc7f7b58b6a25cf53143": + :fetch {fetch = $fetcha} $file + file = lang/menu_af_af.utf-8.vim + @if get_md5(file) != "34c08e50bd2f34a62c83073441e44b3e": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca.latin1.vim + @if get_md5(file) != "3002af86967b8548a636ca9e6d38b421": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca.utf-8.vim + @if get_md5(file) != "b4cc58bc30631ff955a2573353f42e65": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca_es.latin1.vim + @if get_md5(file) != "846efc0dafec5be7abbe9d166c82beb5": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca_es.utf-8.vim + @if get_md5(file) != "b4cc58bc30631ff955a2573353f42e65": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese(gb)_gb.936.vim + @if get_md5(file) != "1b782cc62aea95de6596de1969ed5f39": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese(taiwan)_taiwan.950.vim + @if get_md5(file) != "e662ec333e1c6dc03724184d9fe1e7b8": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese_gb.936.vim + @if get_md5(file) != "5af39caa7dff7188b511be52c2ace65b": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese_taiwan.950.vim + @if get_md5(file) != "5d4aebb79f76bae39535d66cd5f45f94": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs.cp1250.vim + @if get_md5(file) != "4387e8e04b032c9eb18acb0da74ddf5a": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs.latin1.vim + @if get_md5(file) != "06b003f226176ba17b2d15819e422c17": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko_kr.vim + @if get_md5(file) != "40e25e65a91fd586423fe33ef1cb52ab": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs_cz.cp1250.vim + @if get_md5(file) != "4387e8e04b032c9eb18acb0da74ddf5a": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs_cz.iso_8859-2.vim + @if get_md5(file) != "f14e9d24281cdb0910ce455c28d60314": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs_cz.latin1.vim + @if get_md5(file) != "06b003f226176ba17b2d15819e422c17": + :fetch {fetch = $fetcha} $file + file = lang/menu_czech_czech_republic.1250.vim + @if get_md5(file) != "269dadda9060cbc781f109721b70d6bd": + :fetch {fetch = $fetcha} $file + file = lang/menu_czech_czech_republic.1252.vim + @if get_md5(file) != "3b0bb7c0c334e638025f5601e5c873d0": + :fetch {fetch = $fetcha} $file + file = lang/menu_czech_czech_republic.ascii.vim + @if get_md5(file) != "e8e0b46bd9543aebc0e5141c0b7ff2cb": + :fetch {fetch = $fetcha} $file + file = lang/menu_de.latin1.vim + @if get_md5(file) != "e52d381c367200ba7c391c7f5a8aeede": + :fetch {fetch = $fetcha} $file + file = lang/menu_de.utf-8.vim + @if get_md5(file) != "23ef799317b658e6fe20ac4b6ffa115b": + :fetch {fetch = $fetcha} $file + file = lang/menu_de_de.latin1.vim + @if get_md5(file) != "29cdd84c9320b9dcdf6db249d8e07f76": + :fetch {fetch = $fetcha} $file + file = lang/menu_de_de.utf-8.vim + @if get_md5(file) != "23ef799317b658e6fe20ac4b6ffa115b": + :fetch {fetch = $fetcha} $file + file = lang/menu_en_gb.latin1.vim + @if get_md5(file) != "955ad52d065b645034ab9d38ce9caa3f": + :fetch {fetch = $fetcha} $file + file = lang/menu_en_gb.utf-8.vim + @if get_md5(file) != "bba3427cc1e8c52b35667f21c93f01d7": + :fetch {fetch = $fetcha} $file + file = lang/menu_english_united_kingdom.1252.vim + @if get_md5(file) != "9c105334e964ed8e94562f051a6484d1": + :fetch {fetch = $fetcha} $file + file = lang/menu_english_united_kingdom.ascii.vim + @if get_md5(file) != "9c105334e964ed8e94562f051a6484d1": + :fetch {fetch = $fetcha} $file + file = lang/menu_eo.utf-8.vim + @if get_md5(file) != "e5ca2b8d5c40da462753597217672a71": + :fetch {fetch = $fetcha} $file + file = lang/menu_eo_eo.utf-8.vim + @if get_md5(file) != "e5ca2b8d5c40da462753597217672a71": + :fetch {fetch = $fetcha} $file + file = lang/menu_eo_xx.utf-8.vim + @if get_md5(file) != "0919dbf987dc6f91aac8d60b892bae6f": + :fetch {fetch = $fetcha} $file + file = lang/menu_es.latin1.vim + @if get_md5(file) != "be5eb1cfac6b00022896ac43f7ad45e3": + :fetch {fetch = $fetcha} $file + file = lang/menu_es.utf-8.vim + @if get_md5(file) != "0980a7e383e3cf461434296f5273ef87": + :fetch {fetch = $fetcha} $file + file = lang/menu_es_es.latin1.vim + @if get_md5(file) != "80875b3b647f5d32922281a7877ddf1d": + :fetch {fetch = $fetcha} $file + file = lang/menu_es_es.utf-8.vim + @if get_md5(file) != "0980a7e383e3cf461434296f5273ef87": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi.latin1.vim + @if get_md5(file) != "c7de54fca5774a57326b15bf0e6f412b": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi.utf-8.vim + @if get_md5(file) != "a0f9e6b68818fc834a1e486dacfe1b5f": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi_fi.latin1.vim + @if get_md5(file) != "749a748e684cb4d3d860e57fc17f77d0": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi_fi.utf-8.vim + @if get_md5(file) != "a0f9e6b68818fc834a1e486dacfe1b5f": + :fetch {fetch = $fetcha} $file + file = lang/menu_finnish_finland.1252.vim + @if get_md5(file) != "b2ff33140bd58a52a379d46504f5154a": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr.latin1.vim + @if get_md5(file) != "a2b7e264fc9c2f60c48a0f04a88edb13": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr.utf-8.vim + @if get_md5(file) != "044c0ab0b32523021c00983cb6f281ae": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr_fr.latin1.vim + @if get_md5(file) != "6b2601767b2daac40573080e554feed3": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr_fr.utf-8.vim + @if get_md5(file) != "044c0ab0b32523021c00983cb6f281ae": + :fetch {fetch = $fetcha} $file + file = lang/menu_french_france.1252.vim + @if get_md5(file) != "381af0027e3854f6931b5635d6e0cfb5": + :fetch {fetch = $fetcha} $file + file = lang/menu_german_germany.1252.vim + @if get_md5(file) != "d17e3d0ce5a9a94c94bf1c9cb8c49b69": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu.iso_8859-2.vim + @if get_md5(file) != "591cb4a0f6270f5b3c478dce8e59b282": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu.utf-8.vim + @if get_md5(file) != "cb0b660a0fc6bee7ce8353727954ea23": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu_hu.iso_8859-2.vim + @if get_md5(file) != "f704adf555b221cd10b5df06b82d9709": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu_hu.utf-8.vim + @if get_md5(file) != "a0fc8ecff1e3869a32730cbd6245e9e2": + :fetch {fetch = $fetcha} $file + file = lang/menu_it.latin1.vim + @if get_md5(file) != "b93f65d5991301c73a73df470cea3d21": + :fetch {fetch = $fetcha} $file + file = lang/menu_it.utf-8.vim + @if get_md5(file) != "79bb1e665ff7ab11c384999a68984296": + :fetch {fetch = $fetcha} $file + file = lang/menu_it_it.latin1.vim + @if get_md5(file) != "8d97b5c4ae62ed844ec1753f71cb7429": + :fetch {fetch = $fetcha} $file + file = lang/menu_it_it.utf-8.vim + @if get_md5(file) != "79bb1e665ff7ab11c384999a68984296": + :fetch {fetch = $fetcha} $file + file = lang/menu_italian_italy.1252.vim + @if get_md5(file) != "ae0d3f8ad097ccb60ef500c6a6db06a4": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.cp932.vim + @if get_md5(file) != "8811b6464e4868f6bace7de8b8ce8664": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.euc-jp.vim + @if get_md5(file) != "1ae0d4fddd7ef80544a25e4bc1cfd3e7": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.eucjp.vim + @if get_md5(file) != "1ae0d4fddd7ef80544a25e4bc1cfd3e7": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.ujis.vim + @if get_md5(file) != "892a891019b18e0c7240d027c5c2f528": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_br.vim + @if get_md5(file) != "f44718bd32daa4854371d947d3adab4f": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.utf-8.vim + @if get_md5(file) != "d85e35034a01cd5e08746a0c68cf7afa": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.cp932.vim + @if get_md5(file) != "8811b6464e4868f6bace7de8b8ce8664": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.euc-jp.vim + @if get_md5(file) != "914e9778cc66f14673d875e7b5bf9b82": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.eucjp.vim + @if get_md5(file) != "1ae0d4fddd7ef80544a25e4bc1cfd3e7": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.ujis.vim + @if get_md5(file) != "892a891019b18e0c7240d027c5c2f528": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.utf-8.vim + @if get_md5(file) != "8a70d58af14ebcfa587c68dff41e55fb": + :fetch {fetch = $fetcha} $file + file = lang/menu_japanese_japan.932.vim + @if get_md5(file) != "40212a0f6a4a1ae96a78c511d6b4df14": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko.utf-8.vim + @if get_md5(file) != "012728582f4ee127dc01b34f802efab7": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko_kr.euckr.vim + @if get_md5(file) != "df7e875855e1707c443f61666193ed45": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko_kr.utf-8.vim + @if get_md5(file) != "aa0a49a1232a81594c8b8852d4ae4cc2": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl.latin1.vim + @if get_md5(file) != "4746e51156e44859b528cb46eebfeebc": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl.utf-8.vim + @if get_md5(file) != "00834663a12cbc5c88f03fb9547927ad": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl_nl.latin1.vim + @if get_md5(file) != "167165f5bde93af798bd2e34787590ee": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl_nl.utf-8.vim + @if get_md5(file) != "00834663a12cbc5c88f03fb9547927ad": + :fetch {fetch = $fetcha} $file + file = lang/menu_no.latin1.vim + @if get_md5(file) != "3fa79f79993a38b7b10b92115c5179a0": + :fetch {fetch = $fetcha} $file + file = lang/menu_no.utf-8.vim + @if get_md5(file) != "8f56ef0f6d7d8ef21e02768772f5fa46": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_pt.vim + @if get_md5(file) != "5c99308d582fea102fb93f1dbbe5a0c3": + :fetch {fetch = $fetcha} $file + file = lang/menu_no_no.latin1.vim + @if get_md5(file) != "e4646b08a7cff2b7159db930de34c07b": + :fetch {fetch = $fetcha} $file + file = lang/menu_no_no.utf-8.vim + @if get_md5(file) != "108efd9c74b4a2607716e14de32565be": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl.cp1250.vim + @if get_md5(file) != "2898a4d00f31a08a1504579934f05c23": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl_pl.cp1250.vim + @if get_md5(file) != "2898a4d00f31a08a1504579934f05c23": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl_pl.iso_8859-2.vim + @if get_md5(file) != "7d8f811361402fb7bd80810ff64726e2": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl_pl.utf-8.vim + @if get_md5(file) != "735c21ddf02e6f7c26f1030cccf5af9d": + :fetch {fetch = $fetcha} $file + file = lang/menu_polish_poland.1250.vim + @if get_md5(file) != "90e5f75ef12aa3fe65d7108477330deb": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_br.latin1.vim + @if get_md5(file) != "33a4cb69c710d63c547cdc58d41d373d": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_br.utf-8.vim + @if get_md5(file) != "c47ae3544f70f5b0d501d4af7483adbb": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_pt.latin1.vim + @if get_md5(file) != "7d332ac06b8361d34db6fa8b2a5a5d9a": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_pt.utf-8.vim + @if get_md5(file) != "7d332ac06b8361d34db6fa8b2a5a5d9a": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru.utf-8.vim + @if get_md5(file) != "7157ff1b14527e20862f1fbd8058b8fb": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru_ru.koi8-r.vim + @if get_md5(file) != "63f3398879f7d7263d2117dfc89cacda": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru_ru.utf-8.vim + @if get_md5(file) != "7157ff1b14527e20862f1fbd8058b8fb": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru_ru.vim + @if get_md5(file) != "4792116f1e4891c152866dccb9ae81a5": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.vim + @if get_md5(file) != "2107c02fa0809d291099b2aed78ec0de": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk.cp1250.vim + @if get_md5(file) != "63d1a10843bc47cba323f68ca38b4aee": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.1250.vim + @if get_md5(file) != "35ee073d67c46c8c8725a53a650bd673": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.cp1250.vim + @if get_md5(file) != "63d1a10843bc47cba323f68ca38b4aee": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.iso_8859-2.vim + @if get_md5(file) != "acc903747440da3a7b77c0424fc9b804": + :fetch {fetch = $fetcha} $file + file = lang/menu_sl_si.cp1250.vim + @if get_md5(file) != "10fe7acafad8a17d14b8342fb0814a2a": + :fetch {fetch = $fetcha} $file + file = lang/menu_sl_si.latin2.vim + @if get_md5(file) != "cf789c50f5663d747c526d55dee90a6e": + :fetch {fetch = $fetcha} $file + file = lang/menu_sl_si.utf-8.vim + @if get_md5(file) != "027dd2ec1d33bd90d696289cf70c6b88": + :fetch {fetch = $fetcha} $file + file = lang/menu_slovak_slovak_republic.1250.vim + @if get_md5(file) != "a716e1a4ca6da425f48919d2804f0e97": + :fetch {fetch = $fetcha} $file + file = lang/menu_spanish_spain.850.vim + @if get_md5(file) != "87be96015967d74409dc51f75265ca87": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr.utf-8.vim + @if get_md5(file) != "59c1ca7b197ae069d61564cacc822d0a": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.ascii.vim + @if get_md5(file) != "2cf2e62ca4ea494f885364b0b1cb7989": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.iso_8859-2.vim + @if get_md5(file) != "1d7b7721c22fa08cef1e1498054c97c7": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.iso_8859-5.vim + @if get_md5(file) != "dc8308a1851296f58eb5e74823f8869d": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.utf-8.vim + @if get_md5(file) != "fda977e21c199ea182f6f7e5854e286e": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv.latin1.vim + @if get_md5(file) != "767ba4b363d9858c3ba9fc3e280a7d4f": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv.utf-8.vim + @if get_md5(file) != "84005e7e07a80ca7ee1cb736842e1189": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv_se.latin1.vim + @if get_md5(file) != "e52076caeb8c63385e37b3aba5f227d2": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv_se.utf-8.vim + @if get_md5(file) != "84005e7e07a80ca7ee1cb736842e1189": + :fetch {fetch = $fetcha} $file + file = lang/menu_uk_ua.cp1251.vim + @if get_md5(file) != "46bce797bb60d24aeabc11033ff2eb10": + :fetch {fetch = $fetcha} $file + file = lang/menu_uk_ua.koi8-u.vim + @if get_md5(file) != "d5efeab12c02eeee154e37de693985f2": + :fetch {fetch = $fetcha} $file + file = lang/menu_vi_vn.vim + @if get_md5(file) != "97932aca2ba864be941faeb5f256a876": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.big5.vim + @if get_md5(file) != "d72a69f2145cfc245363fc56c0c6e52b": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.cp936.vim + @if get_md5(file) != "e9050df8f6e22897d3fb6801fd11fb26": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.cp950.vim + @if get_md5(file) != "d72a69f2145cfc245363fc56c0c6e52b": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.gb2312.vim + @if get_md5(file) != "12f9e3fc5de3d3bacd6d588950873fc1": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.18030.vim + @if get_md5(file) != "2a9ad60cec2137b6dd69877407301dd6": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.cp936.vim + @if get_md5(file) != "e9050df8f6e22897d3fb6801fd11fb26": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.gb2312.vim + @if get_md5(file) != "0e6d4d507549e897e7a7d230369caf7d": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.gbk.vim + @if get_md5(file) != "2a9ad60cec2137b6dd69877407301dd6": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.utf-8.vim + @if get_md5(file) != "44a21cb1b3816c20fa1d7a2d7c029f01": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_tw.big5.vim + @if get_md5(file) != "d72a69f2145cfc245363fc56c0c6e52b": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_tw.cp950.vim + @if get_md5(file) != "d72a69f2145cfc245363fc56c0c6e52b": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_tw.utf-8.vim + @if get_md5(file) != "df3f4b3807b28a21d5310d79e4cda647": + :fetch {fetch = $fetcha} $file + :mkdir {f} keymap + file = keymap/README.txt + @if get_md5(file) != "d99177a2fadd6bb7bb5160144cdc1b20": + :fetch {fetch = $fetcha} $file + file = keymap/accents.vim + @if get_md5(file) != "144314f73c1aeeef403f83caab310e08": + :fetch {fetch = $fetcha} $file + file = keymap/arabic.vim + @if get_md5(file) != "e2b64a57909567234d8d3beaeef489e7": + :fetch {fetch = $fetcha} $file + file = keymap/arabic_utf-8.vim + @if get_md5(file) != "cf3952f7d1ab716268fda2ceca6d4e12": + :fetch {fetch = $fetcha} $file + file = keymap/bulgarian-bds.vim + @if get_md5(file) != "35e53c5dea081ab0a1f09b733109a5cd": + :fetch {fetch = $fetcha} $file + file = keymap/bulgarian-phonetic.vim + @if get_md5(file) != "cec0760cd5b59523e361c24dfd2ceead": + :fetch {fetch = $fetcha} $file + file = keymap/bulgarian.vim + @if get_md5(file) != "bd15b97cd08a632bb12e87fdf727e644": + :fetch {fetch = $fetcha} $file + file = keymap/canfr-win.vim + @if get_md5(file) != "2e194db49d3c36a09fdf327453f51461": + :fetch {fetch = $fetcha} $file + file = keymap/croatian.vim + @if get_md5(file) != "9bc5110aae40e764c19580af2b3a8553": + :fetch {fetch = $fetcha} $file + file = keymap/croatian_cp1250.vim + @if get_md5(file) != "51b8daaead08539a21f47c196519499e": + :fetch {fetch = $fetcha} $file + file = keymap/croatian_iso-8859-2.vim + @if get_md5(file) != "d67f3982d9ca91b98d647443d776aab4": + :fetch {fetch = $fetcha} $file + file = keymap/croatian_utf-8.vim + @if get_md5(file) != "70820b6262787b12a3d38e9132f8bfd1": + :fetch {fetch = $fetcha} $file + file = keymap/czech.vim + @if get_md5(file) != "424e4ad3c134737dc9066b892aee7132": + :fetch {fetch = $fetcha} $file + file = keymap/czech_utf-8.vim + @if get_md5(file) != "743899fc22244eeceb6cd7f62ba0a59e": + :fetch {fetch = $fetcha} $file + file = keymap/esperanto.vim + @if get_md5(file) != "9958b4eeb36a9d8360488d3f29ef6df5": + :fetch {fetch = $fetcha} $file + file = keymap/esperanto_utf-8.vim + @if get_md5(file) != "336406f255aa47e7ab7dcf8f1c591a9a": + :fetch {fetch = $fetcha} $file + file = keymap/greek.vim + @if get_md5(file) != "e8a9132a01eb530c68b620a3f6c50363": + :fetch {fetch = $fetcha} $file + file = keymap/greek_cp1253.vim + @if get_md5(file) != "0e149792c6fe621ab9bf641d7eca099d": + :fetch {fetch = $fetcha} $file + file = keymap/greek_cp737.vim + @if get_md5(file) != "08cdd4fe26aaa5df105753af23106751": + :fetch {fetch = $fetcha} $file + file = keymap/greek_iso-8859-7.vim + @if get_md5(file) != "ae3553478be6305ffe7e2f108ae4baa8": + :fetch {fetch = $fetcha} $file + file = keymap/greek_utf-8.vim + @if get_md5(file) != "8770d6f37bad5ccbc021fb9d098277c0": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew.vim + @if get_md5(file) != "1cd21673f00d8cf628e454f5c5f151fd": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew_cp1255.vim + @if get_md5(file) != "cd4b3fdb8f96601526780dbadbb39241": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew_iso-8859-8.vim + @if get_md5(file) != "70e81ed90bac7e15b2a715084529a5ef": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew_utf-8.vim + @if get_md5(file) != "7a0add80de0e5fcfe8cf9cdb37af021b": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp.vim + @if get_md5(file) != "247e0387835fdb7315c6deac8a0d97c1": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp_cp1255.vim + @if get_md5(file) != "a0ab08dae5aeaab4ea297167a2bb7948": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp_iso-8859-8.vim + @if get_md5(file) != "1befaabbb7ce20aaaf62cd3e55bc866b": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp_utf-8.vim + @if get_md5(file) != "6a9b76e6266e5d64af93746eadc57c30": + :fetch {fetch = $fetcha} $file + file = keymap/kana.vim + @if get_md5(file) != "f7f6a3c44b1a50056bf4e317b9c28914": + :fetch {fetch = $fetcha} $file + file = keymap/lithuanian-baltic.vim + @if get_md5(file) != "17774174a9eaff17aba6130429d99c59": + :fetch {fetch = $fetcha} $file + file = keymap/magyar_utf-8.vim + @if get_md5(file) != "a4a89ffb5b85803d158d4a725ed1b1c6": + :fetch {fetch = $fetcha} $file + file = keymap/mongolian_utf-8.vim + @if get_md5(file) != "2124cb86d13c6dcbf70059ac29402495": + :fetch {fetch = $fetcha} $file + file = keymap/persian-iranian_utf-8.vim + @if get_md5(file) != "b2007564c1d98c91ad4989f0a093492b": + :fetch {fetch = $fetcha} $file + file = keymap/persian.vim + @if get_md5(file) != "1702e3f44cf066bfdebb2592ca3e389a": + :fetch {fetch = $fetcha} $file + file = keymap/pinyin.vim + @if get_md5(file) != "c2df0438cca61aa19db8f2535d3c3d18": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash.vim + @if get_md5(file) != "9cf5fb82202523e64fcd1cd95dde07f9": + :fetch {fetch = $fetcha} $file + file = keymap/russian-dvorak.vim + @if get_md5(file) != "35df61da021793c80c59657593ffcb9d": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_cp1250.vim + @if get_md5(file) != "821ed74c0bf4c28dac382b36a0cc4406": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_cp852.vim + @if get_md5(file) != "c0c19931bc67f1d488a75f1967f6f366": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_iso-8859-2.vim + @if get_md5(file) != "e09d8429f754816f7dd98872bc0ec7e5": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_utf-8.vim + @if get_md5(file) != "08f28627753c1dd6e873a75afb90d586": + :fetch {fetch = $fetcha} $file + file = keymap/russian-jcuken.vim + @if get_md5(file) != "58723ea7976136fd9d117a5f925794b7": + :fetch {fetch = $fetcha} $file + file = keymap/russian-jcukenwin.vim + @if get_md5(file) != "c14e3623ac735aa43daec473768dc192": + :fetch {fetch = $fetcha} $file + file = keymap/russian-yawerty.vim + @if get_md5(file) != "b0e6f5ca37cc739a12bc4577d4bb3a37": + :fetch {fetch = $fetcha} $file + file = keymap/serbian-latin.vim + @if get_md5(file) != "263ebb5dfbe394f1668344698378848e": + :fetch {fetch = $fetcha} $file + file = keymap/serbian-latin_utf-8.vim + @if get_md5(file) != "745b39dd3d2a24f0e8ec8aded645b165": + :fetch {fetch = $fetcha} $file + file = keymap/serbian.vim + @if get_md5(file) != "206a68bdba3a4035d66a6db5f36bfa34": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_cp1250.vim + @if get_md5(file) != "5af7de4f79953eb3cb32a27567b068a4": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_cp1251.vim + @if get_md5(file) != "40fdf5227c3cbcf03986fed2ce157cc0": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_iso-8859-2.vim + @if get_md5(file) != "f716573dd97de3b77c2de34b3f6a510d": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_iso-8859-5.vim + @if get_md5(file) != "ead71d000bfbe44a27529e556ee9ec2a": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_utf-8.vim + @if get_md5(file) != "503616d5b633b5f90a83da4c9c996770": + :fetch {fetch = $fetcha} $file + file = keymap/sinhala-phonetic_utf-8.vim + @if get_md5(file) != "ee45f7b0e4bd7f3ffba8861919d6b772": + :fetch {fetch = $fetcha} $file + file = keymap/sinhala.vim + @if get_md5(file) != "9d267ceb20328d2c290d026b91a0e356": + :fetch {fetch = $fetcha} $file + file = keymap/slovak.vim + @if get_md5(file) != "fbe64902db4ce1a25d8bd8a29bc3c88d": + :fetch {fetch = $fetcha} $file + file = keymap/slovak_cp1250.vim + @if get_md5(file) != "2d8eae3139d0977364d32e8b7f63688a": + :fetch {fetch = $fetcha} $file + file = keymap/slovak_iso-8859-2.vim + @if get_md5(file) != "5d465fb1e246bee960693ed118fc8e36": + :fetch {fetch = $fetcha} $file + file = keymap/slovak_utf-8.vim + @if get_md5(file) != "29e33c3da812ee9872fe772af886bd85": + :fetch {fetch = $fetcha} $file + file = keymap/tamil_tscii.vim + @if get_md5(file) != "d8175390ef17dd15956a08858bfafe70": + :fetch {fetch = $fetcha} $file + file = keymap/thaana-phonetic_utf-8.vim + @if get_md5(file) != "cd1431d8613e11ad870f688654689b06": + :fetch {fetch = $fetcha} $file + file = keymap/thaana.vim + @if get_md5(file) != "a1965898b2813fb009f9790bc9fedd9d": + :fetch {fetch = $fetcha} $file + file = keymap/ukrainian-dvorak.vim + @if get_md5(file) != "498bd329f74c86739485c8f97fbab35e": + :fetch {fetch = $fetcha} $file + file = keymap/ukrainian-jcuken.vim + @if get_md5(file) != "5a9ec294b727f679d0be44258a1cd3f5": + :fetch {fetch = $fetcha} $file + file = keymap/vietnamese-viqr_utf-8.vim + @if get_md5(file) != "c6848d2f9d8a5bbde24b5fdc0d365ba0": + :fetch {fetch = $fetcha} $file + file = tutor/README.gr.cp737.txt + @if get_md5(file) != "61ce87755161169f4e822840133ea31c": + :fetch {fetch = $fetcha} $file + file = tutor/README.gr.txt + @if get_md5(file) != "c8ab63ed24fc3ba2d2270414f6eec262": + :fetch {fetch = $fetcha} $file + file = tutor/Makefile + @if get_md5(file) != "e3feb02d3273d3d44bf0ab5653ab3424": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ca + @if get_md5(file) != "e7d040069588b16d430f0abb273d110f": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.cs + @if get_md5(file) != "185b043ca11714f442ba1adc9ac013c0": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.de + @if get_md5(file) != "2d94dee7313b58f28c9ae08822e4e368": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.es + @if get_md5(file) != "11534e6bb0cd3ca918b747441163cd66": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.fr + @if get_md5(file) != "e51ecd270479140c362be4eb4bf6dc22": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.gr + @if get_md5(file) != "afca74b7f39f3c2f848cbca5d5857546": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hr + @if get_md5(file) != "7183b651034dd958fb27603e0e333e85": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hu + @if get_md5(file) != "af021db8eb4b8d53632800323403d796": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.it + @if get_md5(file) != "992995099eb1d4b66e988a656d3c5895": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.no + @if get_md5(file) != "b3240446b0a4fb6f92a8b4c296f0e7e9": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.pl + @if get_md5(file) != "c79e575c32c07fcdbf2859eeb8003ce9": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ru + @if get_md5(file) != "39036b9374dc31940f2b95f41ee69375": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sk + @if get_md5(file) != "c57024a581b3c1856b73e555d5cf241a": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sv + @if get_md5(file) != "7350529ef0807eb01eeb3bd0c02eefbe": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.cs.cp1250 + @if get_md5(file) != "7b7ca39bf52fd337c7b66ff98189f57b": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.cs.utf-8 + @if get_md5(file) != "446bd5742b6a5acd7c18f1fca4742e49": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.gr.cp737 + @if get_md5(file) != "e56a4e61d4fdb214eef091a5679dc12c": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.gr.utf-8 + @if get_md5(file) != "1137516f087b4d1243ffd0c611217d1f": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hr.cp1250 + @if get_md5(file) != "853f187d467397227abae4ea9e11c728": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hr.utf-8 + @if get_md5(file) != "bbee200bf9a0f3ec5e689982cf2f6549": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hu.cp1250 + @if get_md5(file) != "af021db8eb4b8d53632800323403d796": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hu.utf-8 + @if get_md5(file) != "f29860f90736e07dbeab96c4ea108f9f": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ja.euc + @if get_md5(file) != "5cc22708ee2a3674057573a706f78f03": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ja.sjis + @if get_md5(file) != "12ab1edd7ad86e97e2eac4fd9b8cd537": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ja.utf-8 + @if get_md5(file) != "05a6ccf911b3a0dc2203d4e2aa10a517": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ko.euc + @if get_md5(file) != "c097fee72d220a6e1881b4e83194fd91": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ko.utf-8 + @if get_md5(file) != "c7f7e88823fc5e37403f7c477ed221a1": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.pl.cp1250 + @if get_md5(file) != "bac27dbf5c94340defdaed06d8472721": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.pl.utf-8 + @if get_md5(file) != "86edafd9aeecfc1815f8e9633e452ea0": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ru.cp1251 + @if get_md5(file) != "eff344c7a57af288e0942376f64a3859": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ru.utf-8 + @if get_md5(file) != "2a63298d811a168cbe8d1d7bdc932ff5": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sk.cp1250 + @if get_md5(file) != "8dd674ea45e9507c42fba58e2c25c6ae": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sk.utf-8 + @if get_md5(file) != "bf50c7b18f53aa25dcc4f8384abb520d": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.tr.iso9 + @if get_md5(file) != "b108013ecb6dc5838dce0b448acbbfc5": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.tr.utf-8 + @if get_md5(file) != "228f2c6f8673d7facd530082c9a01eb3": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.zh.big5 + @if get_md5(file) != "93443d856b462a4628c4f38a5bd988a8": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.zh.euc + @if get_md5(file) != "401fc959ac89bcebfaf8ef6aa4809f00": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell + file = spell/README.txt + @if get_md5(file) != "588e6729ca7414499b64854ea1a72e87": + :fetch {fetch = $fetcha} $file + file = spell/main.aap + @if get_md5(file) != "573e878e2b6bdcda80a316ab876fd5db": + :fetch {fetch = $fetcha} $file + file = spell/cleanadd.vim + @if get_md5(file) != "c7589f18a56bd905e73fcc9dbe098ede": + :fetch {fetch = $fetcha} $file + file = spell/cleanadd.vim + @if get_md5(file) != "c7589f18a56bd905e73fcc9dbe098ede": + :fetch {fetch = $fetcha} $file + file = spell/he.vim + @if get_md5(file) != "2ed8c67c392ba82189dadea349bfd20c": + :fetch {fetch = $fetcha} $file + file = spell/yi.vim + @if get_md5(file) != "20d64a6aaed0ca4a40116bf5d1422a89": + :fetch {fetch = $fetcha} $file + file = spell/fixdup + @if get_md5(file) != "e61acad9b3de083eef5e06ab710fc4a1": + :fetch {fetch = $fetcha} $file + file = spell/README_en.txt + @if get_md5(file) != "d6e763fec92306ee6027b839e5a77e17": + :fetch {fetch = $fetcha} $file + file = spell/en.ascii.spl + @if get_md5(file) != "e674b6543f8da47cfe379e16007bcd83": + :fetch {fetch = $fetcha} $file + file = spell/en.latin1.spl + @if get_md5(file) != "d8f37830c5f70ee4e16dea65bacf7626": + :fetch {fetch = $fetcha} $file + file = spell/en.utf-8.spl + @if get_md5(file) != "ad5521c3f6d6a6c4b2c4bc70611cf0ed": + :fetch {fetch = $fetcha} $file + file = spell/en.ascii.sug + @if get_md5(file) != "c65365f093b81417bfb8dcf00deb424c": + :fetch {fetch = $fetcha} $file + file = spell/en.latin1.sug + @if get_md5(file) != "acacb2876cdec0c0bdfd180ed6d78c4f": + :fetch {fetch = $fetcha} $file + file = spell/en.utf-8.sug + @if get_md5(file) != "af0da03b5c998a8f8ed94a66763febd9": + :fetch {fetch = $fetcha} $file + file = doc/tags + @if get_md5(file) != "42610e6416abd56b9dc11a5aa372b1f1": + :fetch {fetch = $fetcha} $file + :mkdir {f} print + file = print/ascii.ps + @if get_md5(file) != "8b2021e3414c5aba3764ebedd99f9264": + :fetch {fetch = $fetcha} $file + file = print/cidfont.ps + @if get_md5(file) != "2befb01b3ce122821fcc8a5618d3cdd2": + :fetch {fetch = $fetcha} $file + file = print/cns_roman.ps + @if get_md5(file) != "47d7830b6c1ca39161533d95f40f4d1b": + :fetch {fetch = $fetcha} $file + file = print/cp1250.ps + @if get_md5(file) != "d4b39d0551b6ab3dac30227859698659": + :fetch {fetch = $fetcha} $file + file = print/cp1251.ps + @if get_md5(file) != "bd42590eaf1686201dea18293de3d3f5": + :fetch {fetch = $fetcha} $file + file = print/cp1252.ps + @if get_md5(file) != "0e90852367db3ec1ca22c4bc3b8d2026": + :fetch {fetch = $fetcha} $file + file = print/cp1253.ps + @if get_md5(file) != "da8e09b02fc1472951e9cbcf2b69f9eb": + :fetch {fetch = $fetcha} $file + file = print/cp1254.ps + @if get_md5(file) != "8b96bb351f251d89bc3394670081bfa9": + :fetch {fetch = $fetcha} $file + file = print/cp1255.ps + @if get_md5(file) != "33c3cdf5984284e3c87eb6ab0b22df75": + :fetch {fetch = $fetcha} $file + file = print/cp1257.ps + @if get_md5(file) != "22487f34dd9a78003ac296ce3efa19b0": + :fetch {fetch = $fetcha} $file + file = print/dec-mcs.ps + @if get_md5(file) != "7017e861b365ff8d41b6f00d17c88899": + :fetch {fetch = $fetcha} $file + file = print/ebcdic-uk.ps + @if get_md5(file) != "7d367dd06eac2a2b9562f1665d252c83": + :fetch {fetch = $fetcha} $file + file = print/gb_roman.ps + @if get_md5(file) != "b24c4954f69f724fe2ef25674340fd64": + :fetch {fetch = $fetcha} $file + file = print/hp-roman8.ps + @if get_md5(file) != "84c504bcdbf4b31a8e4431dff692f94f": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-10.ps + @if get_md5(file) != "cd7c34b9307bc1a90e0aaf723d233f75": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-11.ps + @if get_md5(file) != "f73611895f0092767ee3bf9c3cac0092": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-13.ps + @if get_md5(file) != "e5f08db1cff18cdb60a547b65a197156": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-14.ps + @if get_md5(file) != "122d3b1f06be392c3467800890a6384e": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-15.ps + @if get_md5(file) != "9f4093d544d6e00393263717d84f9d69": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-2.ps + @if get_md5(file) != "c6f7bae1e82087fb174c1b189d123bee": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-3.ps + @if get_md5(file) != "ed8a3c9a169641ae213d35d801b2577e": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-4.ps + @if get_md5(file) != "41e39273d8f847bf536ea5baed213c77": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-5.ps + @if get_md5(file) != "759e64123ce8f359069d4a1289f0ccfa": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-7.ps + @if get_md5(file) != "ed95eb358813c388a4bcf6ad2fddee67": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-8.ps + @if get_md5(file) != "e0a5f7a6313593329ea2d821acde66ab": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-9.ps + @if get_md5(file) != "315e33a3342d475d72ae5cf51b002ee0": + :fetch {fetch = $fetcha} $file + file = print/jis_roman.ps + @if get_md5(file) != "cfaa694e54ea6f1cfc85854139a9de54": + :fetch {fetch = $fetcha} $file + file = print/koi8-r.ps + @if get_md5(file) != "8e596759a9882cd0fa43481cb7f550e9": + :fetch {fetch = $fetcha} $file + file = print/koi8-u.ps + @if get_md5(file) != "6f5cdf992ea69c8ce82a3ab76f44fe64": + :fetch {fetch = $fetcha} $file + file = print/ks_roman.ps + @if get_md5(file) != "0dbf52c5d2064517a4a56a0c702c5e57": + :fetch {fetch = $fetcha} $file + file = print/latin1.ps + @if get_md5(file) != "8eed7dedb465b6e0456537bcecd8b29e": + :fetch {fetch = $fetcha} $file + file = print/mac-roman.ps + @if get_md5(file) != "01ff7f454336ee635701631b547de91e": + :fetch {fetch = $fetcha} $file + file = print/prolog.ps + @if get_md5(file) != "6892f86e91b6baf8e93f23d817e87680": + :fetch {fetch = $fetcha} $file + file = doc/vim.man + @if get_md5(file) != "13d3f7cabada58df508527f2071026cf": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff.man + @if get_md5(file) != "20e6b7ad112cdf7de9dcae6558d2e5d7": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor.man + @if get_md5(file) != "d20d60e12344bd1695d833638e04bde0": + :fetch {fetch = $fetcha} $file + file = doc/xxd.man + @if get_md5(file) != "7410d29dfcc09932366ce95a3db4cfce": + :fetch {fetch = $fetcha} $file + file = rgb.txt + @if get_md5(file) != "517f6b8883a1a2ae93cc1ac666db1663": + :fetch {fetch = $fetcha} $file + file = vim16x16.gif + @if get_md5(file) != "a8c818ca001534ada1a0a99f987897ac": + :fetch {fetch = $fetcha} $file + file = vim32x32.gif + @if get_md5(file) != "80dd1866d53c8dd6c0ee8e03470661d4": + :fetch {fetch = $fetcha} $file + file = vim48x48.gif + @if get_md5(file) != "7682cbd56c887744c348444049683210": + :fetch {fetch = $fetcha} $file + file = vimlogo.cdr + @if get_md5(file) != "f4626656cf843ab08f8c14171300f346": + :fetch {fetch = $fetcha} $file + file = vimlogo.eps + @if get_md5(file) != "d3502ae1631f32c09ca7e577c8348461": + :fetch {fetch = $fetcha} $file + file = vimlogo.gif + @if get_md5(file) != "bc3dcf9297aa84138d15984cb337fe15": + :fetch {fetch = $fetcha} $file + file = vimlogo.pdf + @if get_md5(file) != "1de7e866d69c2f56b4a3f59ed1c98b74": + :fetch {fetch = $fetcha} $file diff --git a/runtime/getunix.aap b/runtime/getunix.aap new file mode 100644 index 00000000..96a845f3 --- /dev/null +++ b/runtime/getunix.aap @@ -0,0 +1,4647 @@ +# This recipe was generated with ":mkdownload". +:recipe {fetch = ftp://ftp.vim.org/pub/vim/runtime/getunix.aap} +all fetch: + file = bugreport.vim + fetcha = ftp://ftp.vim.org/pub/vim/runtime/%file% + @if get_md5(file) != "1d0c1e34bb5ba239597c75b900bd7756": + :fetch {fetch = $fetcha} $file + :mkdir {f} doc + file = doc/maketags.awk + @if get_md5(file) != "a1d51257645b6bef160f6884fa5789f6": + :fetch {fetch = $fetcha} $file + file = doc/makehtml.awk + @if get_md5(file) != "3c27ef75f82575431b423a284886635d": + :fetch {fetch = $fetcha} $file + file = doc/vim2html.pl + @if get_md5(file) != "a3dd3ad2d242c0cb8b81ee7d4c56ccc3": + :fetch {fetch = $fetcha} $file + file = doc/develop.txt + @if get_md5(file) != "6116c61aed57405dac581ea35f168585": + :fetch {fetch = $fetcha} $file + file = doc/digraph.txt + @if get_md5(file) != "605931bb556cdd8d5df0e3cfccd3c9e0": + :fetch {fetch = $fetcha} $file + file = doc/farsi.txt + @if get_md5(file) != "4405e2eca5034b25b9b013148ed68abf": + :fetch {fetch = $fetcha} $file + file = doc/gui_w32.txt + @if get_md5(file) != "bf04829b45a5c61c939fe5e2ac67b4a7": + :fetch {fetch = $fetcha} $file + file = doc/gui_x11.txt + @if get_md5(file) != "4653918cfc0198ec22e49bea3abf19f2": + :fetch {fetch = $fetcha} $file + file = doc/hangulin.txt + @if get_md5(file) != "6185e96e3f083eae97b2161fe3c26a59": + :fetch {fetch = $fetcha} $file + file = doc/howto.txt + @if get_md5(file) != "33b2fa97ae16444d7684168d792dd453": + :fetch {fetch = $fetcha} $file + file = doc/if_ole.txt + @if get_md5(file) != "195a9bc477df671b56d3240fd6cc2149": + :fetch {fetch = $fetcha} $file + file = doc/if_perl.txt + @if get_md5(file) != "95c2a8ed6195cdccc052600b21301662": + :fetch {fetch = $fetcha} $file + file = doc/if_cscop.txt + @if get_md5(file) != "d0b17748eb635b1d083ce84e7f75f589": + :fetch {fetch = $fetcha} $file + file = doc/sponsor.txt + @if get_md5(file) != "26e707f832a308ebf2566b448f8d3de0": + :fetch {fetch = $fetcha} $file + file = doc/if_sniff.txt + @if get_md5(file) != "b1935d0877d1ab2b57fff708ae74366c": + :fetch {fetch = $fetcha} $file + file = doc/quickfix.txt + @if get_md5(file) != "00f290e00b60b1483f4d7a03d9f5ee20": + :fetch {fetch = $fetcha} $file + file = doc/autocmd.txt + @if get_md5(file) != "3408bcf0d0fde8c8454199057edc4e18": + :fetch {fetch = $fetcha} $file + file = doc/os_mac.txt + @if get_md5(file) != "467068b46f4cefbcfd7fff6370e62102": + :fetch {fetch = $fetcha} $file + file = doc/netbeans.txt + @if get_md5(file) != "7697cb3a93ba7c0d0374e4de27278afa": + :fetch {fetch = $fetcha} $file + file = doc/version7.txt + @if get_md5(file) != "27e2c2301861c247d35d36c54d85fb7a": + :fetch {fetch = $fetcha} $file + file = doc/starting.txt + @if get_md5(file) != "aefb564fd4bb080c43e3fff99ba4c1e0": + :fetch {fetch = $fetcha} $file + file = doc/if_tcl.txt + @if get_md5(file) != "50890e9879c563578691f0f25d0531e9": + :fetch {fetch = $fetcha} $file + file = doc/mlang.txt + @if get_md5(file) != "4428d0de81e84479b0012c5dc2ede13a": + :fetch {fetch = $fetcha} $file + file = doc/mbyte.txt + @if get_md5(file) != "89d1b6f32e357d22ac760ea408039f4b": + :fetch {fetch = $fetcha} $file + file = doc/os_amiga.txt + @if get_md5(file) != "3ced65af672d5c5c2804f9841716a817": + :fetch {fetch = $fetcha} $file + file = doc/os_beos.txt + @if get_md5(file) != "d625f0f2968f207b69de1c6868b411ad": + :fetch {fetch = $fetcha} $file + file = doc/os_msdos.txt + @if get_md5(file) != "e916689b4a962eb330d2a18a7186c04a": + :fetch {fetch = $fetcha} $file + file = doc/os_os2.txt + @if get_md5(file) != "8ffaf5c86089da304331db7c6270d745": + :fetch {fetch = $fetcha} $file + file = doc/os_unix.txt + @if get_md5(file) != "e60fb197db97dbb8f4c8300b3166db5e": + :fetch {fetch = $fetcha} $file + file = doc/os_vms.txt + @if get_md5(file) != "093f9c3ed7c2e3cce92ff032600cbf34": + :fetch {fetch = $fetcha} $file + file = doc/os_win32.txt + @if get_md5(file) != "4750db3f24beb4c5af46cbc0b4bb6632": + :fetch {fetch = $fetcha} $file + file = doc/vi_diff.txt + @if get_md5(file) != "8deade6d10e1610dc2f921b80318807e": + :fetch {fetch = $fetcha} $file + file = doc/pi_zip.txt + @if get_md5(file) != "ea66bdd47b13daa5e7cd263263dd2cd8": + :fetch {fetch = $fetcha} $file + file = doc/os_dos.txt + @if get_md5(file) != "228a0959a5f3bc656307d108ba7235a6": + :fetch {fetch = $fetcha} $file + file = doc/message.txt + @if get_md5(file) != "9869ce2bf8170d03d4ae41edaab69aec": + :fetch {fetch = $fetcha} $file + file = doc/insert.txt + @if get_md5(file) != "cb1bd56824c38c0a7572a3fbd5f0d029": + :fetch {fetch = $fetcha} $file + file = doc/pi_getscript.txt + @if get_md5(file) != "7c42b19d1b8503c48d3336ea96038873": + :fetch {fetch = $fetcha} $file + file = doc/pi_vimball.txt + @if get_md5(file) != "3d4d1cf5512ddd4e4958e269e92ba7e0": + :fetch {fetch = $fetcha} $file + file = doc/cmdline.txt + @if get_md5(file) != "1858d914b13519c29208d9616251324b": + :fetch {fetch = $fetcha} $file + file = doc/pi_netrw.txt + @if get_md5(file) != "392956a16c2edc8dacdb425ffd4f4c28": + :fetch {fetch = $fetcha} $file + file = doc/quotes.txt + @if get_md5(file) != "15b84662e71c269dfdde642227cbb388": + :fetch {fetch = $fetcha} $file + file = doc/recover.txt + @if get_md5(file) != "c050047c0e3abec4dcb186bc77d325b8": + :fetch {fetch = $fetcha} $file + file = doc/repeat.txt + @if get_md5(file) != "12f7b4d69c6734e3e47937bf186c5a51": + :fetch {fetch = $fetcha} $file + file = doc/scroll.txt + @if get_md5(file) != "3554f1ba05bc08685f93e0b79ae9759e": + :fetch {fetch = $fetcha} $file + file = doc/os_risc.txt + @if get_md5(file) != "c2c6c8a91ff09b250f4d85f3fa6366c5": + :fetch {fetch = $fetcha} $file + file = doc/eval.txt + @if get_md5(file) != "ebe5dafc3023cbf3154b0f0a1a95bba5": + :fetch {fetch = $fetcha} $file + file = doc/rileft.txt + @if get_md5(file) != "28cd046695a832a78d7511d3b1f39d25": + :fetch {fetch = $fetcha} $file + file = doc/term.txt + @if get_md5(file) != "9393260b380e05cad7d79c0c8b73140a": + :fetch {fetch = $fetcha} $file + file = doc/tips.txt + @if get_md5(file) != "105aeccde5595deb65474d08667703d0": + :fetch {fetch = $fetcha} $file + file = doc/uganda.txt + @if get_md5(file) != "a99cf3ec17d54cc8753fbac81b16e5ab": + :fetch {fetch = $fetcha} $file + file = doc/undo.txt + @if get_md5(file) != "6b7fc7d62bf3f758534dfa13dbe15d3f": + :fetch {fetch = $fetcha} $file + file = doc/pattern.txt + @if get_md5(file) != "3e077702c81be58c579499f5e5680b83": + :fetch {fetch = $fetcha} $file + file = doc/various.txt + @if get_md5(file) != "b0fd10fb2ea33911157e93020e46e279": + :fetch {fetch = $fetcha} $file + file = doc/version4.txt + @if get_md5(file) != "923c050e307ba78440df9b3294881f60": + :fetch {fetch = $fetcha} $file + file = doc/version5.txt + @if get_md5(file) != "85b9f3228cfc54b63c4a5a3ea9bf9b75": + :fetch {fetch = $fetcha} $file + file = doc/visual.txt + @if get_md5(file) != "af327352f129f067dcebfb8005e5f99d": + :fetch {fetch = $fetcha} $file + file = doc/windows.txt + @if get_md5(file) != "dbdfdb4a0b6d7f9d060f199e69231ea8": + :fetch {fetch = $fetcha} $file + file = doc/usr_toc.txt + @if get_md5(file) != "4dcf12f8efcd403e16a61309e2453ab0": + :fetch {fetch = $fetcha} $file + file = doc/os_mint.txt + @if get_md5(file) != "f586669ec2d77ba0997e0d0af1482726": + :fetch {fetch = $fetcha} $file + file = doc/gui_w16.txt + @if get_md5(file) != "3df5f912a6c76638bcde15e47ccf288c": + :fetch {fetch = $fetcha} $file + file = doc/usr_90.txt + @if get_md5(file) != "8dfc871f94b31e1fb3e33cae7fedf777": + :fetch {fetch = $fetcha} $file + file = doc/usr_20.txt + @if get_md5(file) != "f79226dbc76323b43d2e6ff11cf355d2": + :fetch {fetch = $fetcha} $file + file = doc/usr_04.txt + @if get_md5(file) != "9d7da5449872e4954f75e3a6eee6885a": + :fetch {fetch = $fetcha} $file + file = doc/os_390.txt + @if get_md5(file) != "caeb85b0c26eae6fd47a82962a933440": + :fetch {fetch = $fetcha} $file + file = doc/tagsrch.txt + @if get_md5(file) != "1e771e8f13068ccf1fa6a02a57bed690": + :fetch {fetch = $fetcha} $file + file = doc/if_mzsch.txt + @if get_md5(file) != "19ba6f33aeb94565bff093ecf5834f61": + :fetch {fetch = $fetcha} $file + file = doc/usr_22.txt + @if get_md5(file) != "efaeccbdffe7c53c4d64dc0d40ce9aac": + :fetch {fetch = $fetcha} $file + file = doc/editing.txt + @if get_md5(file) != "216489162bc6072564b00fdde226b2f5": + :fetch {fetch = $fetcha} $file + file = doc/gui.txt + @if get_md5(file) != "33f5dc98d58d345c5445488066a60947": + :fetch {fetch = $fetcha} $file + file = doc/pi_spec.txt + @if get_md5(file) != "287915217e5b2c2aef75da73c78da91f": + :fetch {fetch = $fetcha} $file + file = doc/if_pyth.txt + @if get_md5(file) != "094aeee56af8456b4d9c6d86c6a78f00": + :fetch {fetch = $fetcha} $file + file = doc/usr_41.txt + @if get_md5(file) != "603d1276fc3177c071b951fe7538557f": + :fetch {fetch = $fetcha} $file + file = doc/syntax.txt + @if get_md5(file) != "2ec4b7fa055e9793d944a9e64f843727": + :fetch {fetch = $fetcha} $file + file = doc/map.txt + @if get_md5(file) != "cf0b7a45045e8f6013a1b00f3137a8d6": + :fetch {fetch = $fetcha} $file + file = doc/workshop.txt + @if get_md5(file) != "0a14acac2d5b0c148abde13dc162dffc": + :fetch {fetch = $fetcha} $file + file = doc/sign.txt + @if get_md5(file) != "d98382ea62b8461d6059472baf5986a6": + :fetch {fetch = $fetcha} $file + file = doc/quickref.txt + @if get_md5(file) != "6092113e9e256591db41f1246cdd4a97": + :fetch {fetch = $fetcha} $file + file = doc/version6.txt + @if get_md5(file) != "5ac5d62e27cbb9019e4c585e732bdbe5": + :fetch {fetch = $fetcha} $file + file = doc/todo.txt + @if get_md5(file) != "538c05e6c9c5c6e602bb9a3bf580075d": + :fetch {fetch = $fetcha} $file + file = doc/spell.txt + @if get_md5(file) != "50522e1c859efcc928d5d133a0818355": + :fetch {fetch = $fetcha} $file + file = doc/options.txt + @if get_md5(file) != "faef8f45204351d2cf2f81f8c237bcdf": + :fetch {fetch = $fetcha} $file + file = doc/change.txt + @if get_md5(file) != "bbb8508048a0e72731ab92c1294462b4": + :fetch {fetch = $fetcha} $file + file = doc/filetype.txt + @if get_md5(file) != "5a78ef9f50325f8e588e5baf4edb4d81": + :fetch {fetch = $fetcha} $file + file = doc/pi_gzip.txt + @if get_md5(file) != "6ba092e3c51af03dfd73322085489e44": + :fetch {fetch = $fetcha} $file + file = doc/usr_40.txt + @if get_md5(file) != "6c123310d0c6739451088e7a576cdca7": + :fetch {fetch = $fetcha} $file + file = doc/arabic.txt + @if get_md5(file) != "09a66e6469118e977fb07446d80b5317": + :fetch {fetch = $fetcha} $file + file = doc/usr_43.txt + @if get_md5(file) != "5ba99c6a2c8712171f4fbffbc6efc35d": + :fetch {fetch = $fetcha} $file + file = doc/usr_28.txt + @if get_md5(file) != "ed03e79e18bc8f83a203cea7584a8176": + :fetch {fetch = $fetcha} $file + file = doc/indent.txt + @if get_md5(file) != "e1f96ddb45ee7fe7b932ef3317a84ae7": + :fetch {fetch = $fetcha} $file + file = doc/usr_07.txt + @if get_md5(file) != "d46f1307d30706e7a3dc4ec6e8228555": + :fetch {fetch = $fetcha} $file + file = doc/usr_01.txt + @if get_md5(file) != "06e5f44fca3171c5268e5a59a261f6c5": + :fetch {fetch = $fetcha} $file + file = doc/usr_02.txt + @if get_md5(file) != "c55ecd9fb3b2dca4081f16ff0856bce6": + :fetch {fetch = $fetcha} $file + file = doc/os_qnx.txt + @if get_md5(file) != "bd26f2a8b36fe52dbf5a6b12b5f0963d": + :fetch {fetch = $fetcha} $file + file = doc/remote.txt + @if get_md5(file) != "ebb9de306419d089699ab77c1ce60fe6": + :fetch {fetch = $fetcha} $file + file = doc/usr_05.txt + @if get_md5(file) != "7c9130b23f494cd37f7a8bbc753b6dcf": + :fetch {fetch = $fetcha} $file + file = doc/usr_06.txt + @if get_md5(file) != "6d0a252f26696fd37859561b76bff2e6": + :fetch {fetch = $fetcha} $file + file = doc/usr_08.txt + @if get_md5(file) != "def281f4186812da6306fe0adbbf9702": + :fetch {fetch = $fetcha} $file + file = doc/diff.txt + @if get_md5(file) != "96d807e0a0743110fbf8dbdfaa2159d3": + :fetch {fetch = $fetcha} $file + file = doc/if_ruby.txt + @if get_md5(file) != "0a05afd4f0d3e15d8640e9a2f5b22c21": + :fetch {fetch = $fetcha} $file + file = doc/usr_31.txt + @if get_md5(file) != "ba15367bc667e49e57e4b3411fb742a8": + :fetch {fetch = $fetcha} $file + file = doc/sql.txt + @if get_md5(file) != "28b456d7df8669bfa39144935b209f4c": + :fetch {fetch = $fetcha} $file + file = doc/usr_09.txt + @if get_md5(file) != "9e284c58fd62e8f75c5a527a97f48ba6": + :fetch {fetch = $fetcha} $file + file = doc/usr_10.txt + @if get_md5(file) != "e361b5032e1114825a57a5e2f8cf9d0d": + :fetch {fetch = $fetcha} $file + file = doc/usr_45.txt + @if get_md5(file) != "72612e855c86c2f4bed3832eafd3f02b": + :fetch {fetch = $fetcha} $file + file = doc/usr_29.txt + @if get_md5(file) != "781bad32a53fd9c4058a421097e127cf": + :fetch {fetch = $fetcha} $file + file = doc/usr_11.txt + @if get_md5(file) != "db84004b2c71a1db8389e8f725591c11": + :fetch {fetch = $fetcha} $file + file = doc/usr_27.txt + @if get_md5(file) != "48bea716c6edc500e50a122b7d2f1328": + :fetch {fetch = $fetcha} $file + file = doc/usr_42.txt + @if get_md5(file) != "2c631aa1b95ddb131536707536648597": + :fetch {fetch = $fetcha} $file + file = doc/usr_24.txt + @if get_md5(file) != "0105d41720aac01825cb0fe320cdaca1": + :fetch {fetch = $fetcha} $file + file = doc/usr_12.txt + @if get_md5(file) != "d6c988b8e5b4f104ee8ceef268bf8a33": + :fetch {fetch = $fetcha} $file + file = doc/usr_21.txt + @if get_md5(file) != "798f82085fc687015a663defcaac59f4": + :fetch {fetch = $fetcha} $file + file = doc/usr_23.txt + @if get_md5(file) != "2b0366fc0112f0b0a9f203b2cac0868d": + :fetch {fetch = $fetcha} $file + file = doc/usr_25.txt + @if get_md5(file) != "aa48918f5173502176c37b4714a06cae": + :fetch {fetch = $fetcha} $file + file = doc/usr_26.txt + @if get_md5(file) != "015360ff73bafaa85de526d18dc42f28": + :fetch {fetch = $fetcha} $file + file = doc/tabpage.txt + @if get_md5(file) != "8c0d825036644dfc46759620364de9f7": + :fetch {fetch = $fetcha} $file + file = doc/debugger.txt + @if get_md5(file) != "d78294dc93f88b889a97c96ac8aeaedb": + :fetch {fetch = $fetcha} $file + file = doc/index.txt + @if get_md5(file) != "0f3d7a18effeb56b00deb37f247f860f": + :fetch {fetch = $fetcha} $file + file = doc/usr_30.txt + @if get_md5(file) != "cd29ad8e82902185e6e95e70deeee98c": + :fetch {fetch = $fetcha} $file + file = doc/usr_44.txt + @if get_md5(file) != "a5b2ebb3e928a61a1227f22d7d9b7ad4": + :fetch {fetch = $fetcha} $file + file = doc/russian.txt + @if get_md5(file) != "09be643934ea69613ee2cfc06be5ac8f": + :fetch {fetch = $fetcha} $file + file = doc/print.txt + @if get_md5(file) != "23af78d63e3139657229c6aa2a4dcaa5": + :fetch {fetch = $fetcha} $file + file = doc/hebrew.txt + @if get_md5(file) != "ac1ffad847ac701c94776cbbd4cfc630": + :fetch {fetch = $fetcha} $file + file = doc/debug.txt + @if get_md5(file) != "ba7e69822ab30a1839827a9e778e52dc": + :fetch {fetch = $fetcha} $file + file = doc/pi_tar.txt + @if get_md5(file) != "d166d3c82055ce91e2049cac5793365c": + :fetch {fetch = $fetcha} $file + file = doc/usr_03.txt + @if get_md5(file) != "1c6d65dc815e38d097ec1bece77e6bd5": + :fetch {fetch = $fetcha} $file + file = doc/usr_32.txt + @if get_md5(file) != "004294e726237dadf9083f15b047238d": + :fetch {fetch = $fetcha} $file + file = doc/help.txt + @if get_md5(file) != "e49bc75fd05fe541f4abc9f10e5c7794": + :fetch {fetch = $fetcha} $file + file = doc/fold.txt + @if get_md5(file) != "1e9b16a664847d17b8cfc021e4426d72": + :fetch {fetch = $fetcha} $file + file = doc/intro.txt + @if get_md5(file) != "c3a2354ad9a86745ee0fe9cbad17f8e2": + :fetch {fetch = $fetcha} $file + file = doc/ada.txt + @if get_md5(file) != "d2b2a82bad6263196a327a12977d7b31": + :fetch {fetch = $fetcha} $file + file = doc/motion.txt + @if get_md5(file) != "d96a6fa71adcc1c70e5c4b1f3ca7031b": + :fetch {fetch = $fetcha} $file + file = doc/pi_paren.txt + @if get_md5(file) != "caaf9368fa7357888cbb927d83ed69a8": + :fetch {fetch = $fetcha} $file + file = doc/Makefile + @if get_md5(file) != "6dfcb8d5f163c12e4b8e25a7e8a9d094": + :fetch {fetch = $fetcha} $file + file = doc/doctags.c + @if get_md5(file) != "8dfd98f1cf5e8a5c7ac222cc671d619c": + :fetch {fetch = $fetcha} $file + file = doc/vim.1 + @if get_md5(file) != "be8dc7200dcf66abfdc3a6357cd90b32": + :fetch {fetch = $fetcha} $file + file = doc/evim.1 + @if get_md5(file) != "e06dba1283ea4b03e72b3a106db41b92": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff.1 + @if get_md5(file) != "cd949666cb2b62789fdebcfabc935985": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor.1 + @if get_md5(file) != "fcfa999dccc3a76175dba70be5dbbcfb": + :fetch {fetch = $fetcha} $file + file = doc/xxd.1 + @if get_md5(file) != "cc8400bac3d2f944f06b236f8c56d173": + :fetch {fetch = $fetcha} $file + file = ftoff.vim + @if get_md5(file) != "b2aa3d9712c9dced6c8eb2e84891ee65": + :fetch {fetch = $fetcha} $file + file = gvimrc_example.vim + @if get_md5(file) != "548e3c61636ff0ab398f5e2073cb1db6": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros + file = macros/README.txt + @if get_md5(file) != "09dff2f01f1dcf65a21b009256f39f5b": + :fetch {fetch = $fetcha} $file + file = macros/dvorak + @if get_md5(file) != "72fd5f0e2baf02a8515a340c4f6cd46e": + :fetch {fetch = $fetcha} $file + file = macros/editexisting.vim + @if get_md5(file) != "1c3019b11f457070ea54e63890dd0a70": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/hanoi + file = macros/hanoi/click.me + @if get_md5(file) != "f5ee345cbea8e97bd733e6312f9ed317": + :fetch {fetch = $fetcha} $file + file = macros/hanoi/hanoi.vim + @if get_md5(file) != "58625709496107a3724c8904cfd1c23b": + :fetch {fetch = $fetcha} $file + file = macros/hanoi/poster + @if get_md5(file) != "8b7e7df53c9f572af19e44c0bdcd5cc8": + :fetch {fetch = $fetcha} $file + file = macros/justify.vim + @if get_md5(file) != "45a8f8caf8f51719fa11b62e30ce4130": + :fetch {fetch = $fetcha} $file + file = macros/less.sh + @if get_md5(file) != "8789e4d64787718e61b9eac99d336f70": + :fetch {fetch = $fetcha} $file + file = macros/less.vim + @if get_md5(file) != "1621e9e4c01f7f6b5b1844b6674863c7": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/life + file = macros/life/click.me + @if get_md5(file) != "4580e5268ddf10175cdd86f87f481d71": + :fetch {fetch = $fetcha} $file + file = macros/life/life.vim + @if get_md5(file) != "9fa2b3c1e7284a99223ea09e8037190a": + :fetch {fetch = $fetcha} $file + file = macros/matchit.vim + @if get_md5(file) != "c98bce0ab0930460dd7249b39707489a": + :fetch {fetch = $fetcha} $file + file = macros/matchit.txt + @if get_md5(file) != "1d2f0a5cba607a28427a0f70781ae5ff": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/maze + file = macros/maze/README.txt + @if get_md5(file) != "dbe46843befacbc5be9512acb2305089": + :fetch {fetch = $fetcha} $file + file = macros/maze/Makefile + @if get_md5(file) != "f392910e4d9c17d7da6cb58d57189d8d": + :fetch {fetch = $fetcha} $file + file = macros/maze/main.aap + @if get_md5(file) != "41fb1a67324c7a03ffa666d9a7a12f1d": + :fetch {fetch = $fetcha} $file + file = macros/maze/maze.c + @if get_md5(file) != "c0a7bc9b665124a464c3dc013f17078c": + :fetch {fetch = $fetcha} $file + file = macros/maze/maze_5.78 + @if get_md5(file) != "8bd8ef771049d3cbf779c7b72f4dbb44": + :fetch {fetch = $fetcha} $file + file = macros/maze/maze_mac + @if get_md5(file) != "6889b6fe110414616ed293100ed4cd9d": + :fetch {fetch = $fetcha} $file + file = macros/maze/mazeansi.c + @if get_md5(file) != "ef0d15a8bb8033023558b360515c4d3f": + :fetch {fetch = $fetcha} $file + file = macros/maze/mazeclean.c + @if get_md5(file) != "ae07a931eb5fc0ddbc863af3e7b89185": + :fetch {fetch = $fetcha} $file + file = macros/maze/poster + @if get_md5(file) != "414eb5c28a5b3e48218d66b19d7daf9e": + :fetch {fetch = $fetcha} $file + file = macros/shellmenu.vim + @if get_md5(file) != "7d26c7dabdd373155198024d490a4857": + :fetch {fetch = $fetcha} $file + file = macros/swapmous.vim + @if get_md5(file) != "f8e32ee65ecb31e4e446ba06dfce9ac3": + :fetch {fetch = $fetcha} $file + :mkdir {f} macros/urm + file = macros/urm/README.txt + @if get_md5(file) != "6e209d9b3a38ba38ae681e0e9bea3ce6": + :fetch {fetch = $fetcha} $file + file = macros/urm/examples + @if get_md5(file) != "5f4c2d42d944c21086e831a0ac52b21f": + :fetch {fetch = $fetcha} $file + file = macros/urm/urm + @if get_md5(file) != "156d11392174a988c62e4ff88f949fc9": + :fetch {fetch = $fetcha} $file + file = macros/urm/urm.vim + @if get_md5(file) != "c85f9b90b23870531a6ea800b7b2d995": + :fetch {fetch = $fetcha} $file + file = mswin.vim + @if get_md5(file) != "ccb45bb5ab9dad1c03080f7d2194535d": + :fetch {fetch = $fetcha} $file + file = evim.vim + @if get_md5(file) != "da8b58faa7e64157956fc803698c3956": + :fetch {fetch = $fetcha} $file + file = optwin.vim + @if get_md5(file) != "3b3ba08b6792100400adcad3d686051a": + :fetch {fetch = $fetcha} $file + file = ftplugin.vim + @if get_md5(file) != "99747385736fe10dc64c314503337e4e": + :fetch {fetch = $fetcha} $file + file = ftplugof.vim + @if get_md5(file) != "6aa5f3e82f2a8e9f8fd895518a6f3b1d": + :fetch {fetch = $fetcha} $file + file = indent.vim + @if get_md5(file) != "43702bcd91f0c5047ce01828719a4228": + :fetch {fetch = $fetcha} $file + file = indoff.vim + @if get_md5(file) != "f5cf5cdd869f13913750d028aef66c37": + :fetch {fetch = $fetcha} $file + file = termcap + @if get_md5(file) != "ddabbae7a5f90a8cbf244ed1e05c27ba": + :fetch {fetch = $fetcha} $file + :mkdir {f} tools + file = tools/README.txt + @if get_md5(file) != "46b5996890be341dc40c5e8d1474a8dd": + :fetch {fetch = $fetcha} $file + file = tools/blink.c + @if get_md5(file) != "ccee74163816ec74f1af50ce84b9605d": + :fetch {fetch = $fetcha} $file + file = tools/ccfilter.1 + @if get_md5(file) != "de522466f040a7c335b73d43f5cd88ed": + :fetch {fetch = $fetcha} $file + file = tools/ccfilter.c + @if get_md5(file) != "5f9e0b56ae8b50fa8b7c2ae287c36fc2": + :fetch {fetch = $fetcha} $file + file = tools/ccfilter_README.txt + @if get_md5(file) != "c387e146a2eef8140c45897a299e7fd2": + :fetch {fetch = $fetcha} $file + file = tools/efm_filter.pl + @if get_md5(file) != "cccdec5091b75c8857ebde4b275b1651": + :fetch {fetch = $fetcha} $file + file = tools/efm_filter.txt + @if get_md5(file) != "18c3e6a2ceeb082f0b373f9c5df36cf3": + :fetch {fetch = $fetcha} $file + file = tools/pltags.pl + @if get_md5(file) != "572a8bc4305da16b37f6466e56462a31": + :fetch {fetch = $fetcha} $file + file = tools/mve.awk + @if get_md5(file) != "2f2e818b400e0d30e061afb96155300d": + :fetch {fetch = $fetcha} $file + file = tools/mve.txt + @if get_md5(file) != "b2bd3cfa9cae3ab698562a2f285ad1ef": + :fetch {fetch = $fetcha} $file + file = tools/ref + @if get_md5(file) != "ffc87f42853543de3adfca96cfcb0165": + :fetch {fetch = $fetcha} $file + file = tools/shtags.1 + @if get_md5(file) != "04c9b0617195dbd38cba83401398adb9": + :fetch {fetch = $fetcha} $file + file = tools/shtags.pl + @if get_md5(file) != "4487e272ec86d58ccd453b7f96a4b440": + :fetch {fetch = $fetcha} $file + file = tools/vim132 + @if get_md5(file) != "490ab769eaf91fc1306dfc724794e901": + :fetch {fetch = $fetcha} $file + file = tools/vimm + @if get_md5(file) != "803707049b8c84bda990e92e003d1a2a": + :fetch {fetch = $fetcha} $file + file = tools/vimspell.sh + @if get_md5(file) != "731c78006ade22d9c5f4c59839cb1cfc": + :fetch {fetch = $fetcha} $file + file = tools/vimspell.txt + @if get_md5(file) != "de927b7bc390f47063d23d0d9d4e144f": + :fetch {fetch = $fetcha} $file + file = tools/efm_perl.pl + @if get_md5(file) != "371b6e6cf6c691b3f46ad99e65955e62": + :fetch {fetch = $fetcha} $file + file = tools/xcmdsrv_client.c + @if get_md5(file) != "b6ff03651223fcc66654f344d93d136b": + :fetch {fetch = $fetcha} $file + file = tools/vim_vs_net.cmd + @if get_md5(file) != "3d3aad41aff7ef5a5b38f906b25d2792": + :fetch {fetch = $fetcha} $file + :mkdir {f} tutor + file = tutor/README.txt + @if get_md5(file) != "654a17f2e16d6543da1b79bdb93e2b2e": + :fetch {fetch = $fetcha} $file + file = tutor/tutor + @if get_md5(file) != "3e459a5ba713b68508846043ddbdeb8f": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.vim + @if get_md5(file) != "8e25f2fe3e864e6b6dcc095aa79dc481": + :fetch {fetch = $fetcha} $file + file = vimrc_example.vim + @if get_md5(file) != "a4a06b78cf32020ef9a9463dec40f1b8": + :fetch {fetch = $fetcha} $file + file = filetype.vim + @if get_md5(file) != "89263299c5155360f373820ecedb5a92": + :fetch {fetch = $fetcha} $file + file = scripts.vim + @if get_md5(file) != "fe04467fd99a37c14c43d453f57afccc": + :fetch {fetch = $fetcha} $file + file = menu.vim + @if get_md5(file) != "8b751a8cd8ba20af60ff429d68c45450": + :fetch {fetch = $fetcha} $file + file = macmap.vim + @if get_md5(file) != "ed5a8c76cb5d4f1a41388190a2710bd8": + :fetch {fetch = $fetcha} $file + file = delmenu.vim + @if get_md5(file) != "f7453358491e878cb558e74a9e6c6939": + :fetch {fetch = $fetcha} $file + file = synmenu.vim + @if get_md5(file) != "36f60016ee1f4867a5ba8b12e72b2633": + :fetch {fetch = $fetcha} $file + file = makemenu.vim + @if get_md5(file) != "45af752b6a0493ccb66f148d49324852": + :fetch {fetch = $fetcha} $file + :mkdir {f} autoload + file = autoload/gzip.vim + @if get_md5(file) != "234cc328ba2893649158406afb9f622f": + :fetch {fetch = $fetcha} $file + file = autoload/tar.vim + @if get_md5(file) != "eb72a3c75e1bd37ba468d8ef0cb09f81": + :fetch {fetch = $fetcha} $file + file = autoload/zip.vim + @if get_md5(file) != "53a30c5c9f61b1e19ea86db3025a5379": + :fetch {fetch = $fetcha} $file + file = autoload/netrw.vim + @if get_md5(file) != "8d8f7596b600226a9fc658a13eca9d34": + :fetch {fetch = $fetcha} $file + file = autoload/htmlcomplete.vim + @if get_md5(file) != "d9d1276818e532f0a6257e6e9ad8d2d6": + :fetch {fetch = $fetcha} $file + file = autoload/csscomplete.vim + @if get_md5(file) != "519e0d48d327daef6e470e5305aa62f2": + :fetch {fetch = $fetcha} $file + file = autoload/ccomplete.vim + @if get_md5(file) != "065b9a62b67c4797d3e5cb56c187e5ab": + :fetch {fetch = $fetcha} $file + file = autoload/netrwFileHandlers.vim + @if get_md5(file) != "5dc2a38655e51891dfb53ab6071d202e": + :fetch {fetch = $fetcha} $file + file = autoload/xmlcomplete.vim + @if get_md5(file) != "beca52b0d638c14d259a4c68417d6470": + :fetch {fetch = $fetcha} $file + file = autoload/phpcomplete.vim + @if get_md5(file) != "3038d5b696be03eec87ec9bf51fdd452": + :fetch {fetch = $fetcha} $file + file = autoload/syntaxcomplete.vim + @if get_md5(file) != "79f1c5c3f4254debd8ea64f1d4f8515e": + :fetch {fetch = $fetcha} $file + file = autoload/sqlcomplete.vim + @if get_md5(file) != "ace026c191e80d6c9f45485d7811e302": + :fetch {fetch = $fetcha} $file + file = autoload/paste.vim + @if get_md5(file) != "1f1968eab49f4a4639b319c82479506b": + :fetch {fetch = $fetcha} $file + file = autoload/vimball.vim + @if get_md5(file) != "aaf8d517f01e7dcfb9abd93d61bbe069": + :fetch {fetch = $fetcha} $file + file = autoload/netrwSettings.vim + @if get_md5(file) != "ca1b361013dcd7af76d7a7244341c47a": + :fetch {fetch = $fetcha} $file + file = autoload/javascriptcomplete.vim + @if get_md5(file) != "2b939814050b10dab16f7d2c9af2c130": + :fetch {fetch = $fetcha} $file + file = autoload/spellfile.vim + @if get_md5(file) != "7c002c999f14280708999c093c9d402f": + :fetch {fetch = $fetcha} $file + file = autoload/ada.vim + @if get_md5(file) != "fa0b605b88451ef0f273fa07e4910708": + :fetch {fetch = $fetcha} $file + file = autoload/rubycomplete.vim + @if get_md5(file) != "728e7be76eecf7e684afb16185182374": + :fetch {fetch = $fetcha} $file + file = autoload/pythoncomplete.vim + @if get_md5(file) != "9edb84845c5f6b2c8bf9cb4814091b4b": + :fetch {fetch = $fetcha} $file + file = autoload/adacomplete.vim + @if get_md5(file) != "2d70928c5fc17470cb8a9f67ee59b84b": + :fetch {fetch = $fetcha} $file + file = autoload/gnat.vim + @if get_md5(file) != "3998b18e33dff0071c5260860b38e369": + :fetch {fetch = $fetcha} $file + file = autoload/decada.vim + @if get_md5(file) != "b61372778a1ef38da56d6a43ac73f1d6": + :fetch {fetch = $fetcha} $file + file = autoload/getscript.vim + @if get_md5(file) != "3c8128b972a94672cd3c4a5b959ae88a": + :fetch {fetch = $fetcha} $file + file = autoload/README.txt + @if get_md5(file) != "2d99f4ef102e29e6cd36a19975d4968e": + :fetch {fetch = $fetcha} $file + :mkdir {f} autoload/xml + file = autoload/xml/html32.vim + @if get_md5(file) != "e31e8146e8d7bd5e0245676c1516f45e": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xsl.vim + @if get_md5(file) != "11ee9faa6d69635986b0e320447e2f30": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html401f.vim + @if get_md5(file) != "94a90af0e66e242af5a0742b07f3ecd9": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html401s.vim + @if get_md5(file) != "a9366d9aade0471a6fc8e35fc8049c78": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html401t.vim + @if get_md5(file) != "3152e62866a11edbeebd38b2b92ea947": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html40f.vim + @if get_md5(file) != "29a98f426d44e6c577036e8fa3d062ef": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html40s.vim + @if get_md5(file) != "5313d009d711142cc0ba0666f3ae1f5d": + :fetch {fetch = $fetcha} $file + file = autoload/xml/html40t.vim + @if get_md5(file) != "682b28a4d6381e150727aa9a342afc17": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml10f.vim + @if get_md5(file) != "182c3d69746f67afcd36cc7fd6ae9ef0": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml10s.vim + @if get_md5(file) != "d0bdac7d1719a6fbeaab79de51be0d7b": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml10t.vim + @if get_md5(file) != "0d85c774b9096f1ec19df4ac1b99563c": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xhtml11.vim + @if get_md5(file) != "27845aee34f67b7eb35fe424a71e8eef": + :fetch {fetch = $fetcha} $file + file = autoload/xml/xsd.vim + @if get_md5(file) != "98beb90a349771cc18363d6964e4aff3": + :fetch {fetch = $fetcha} $file + :mkdir {f} colors + file = colors/morning.vim + @if get_md5(file) != "a7df46649af7956811b4a092839e9a58": + :fetch {fetch = $fetcha} $file + file = colors/default.vim + @if get_md5(file) != "0fa61e5a87822fb3a516cfe9d5208f28": + :fetch {fetch = $fetcha} $file + file = colors/evening.vim + @if get_md5(file) != "980d4838b5b27cb08b128120a1437d90": + :fetch {fetch = $fetcha} $file + file = colors/shine.vim + @if get_md5(file) != "80f095e0e6d8fb18f7157818465065fc": + :fetch {fetch = $fetcha} $file + file = colors/elflord.vim + @if get_md5(file) != "ba5a9ea6aaf7c9ba29af00c81c53f6ef": + :fetch {fetch = $fetcha} $file + file = colors/koehler.vim + @if get_md5(file) != "5f3ac3fe67d81b06a9c948c2e26071b1": + :fetch {fetch = $fetcha} $file + file = colors/murphy.vim + @if get_md5(file) != "e86678597d808f39a622423c384958ac": + :fetch {fetch = $fetcha} $file + file = colors/pablo.vim + @if get_md5(file) != "5604e9b96fa423b24c836739d76d4b53": + :fetch {fetch = $fetcha} $file + file = colors/ron.vim + @if get_md5(file) != "b9cab3440053d35c4237c393ff21e5fb": + :fetch {fetch = $fetcha} $file + file = colors/zellner.vim + @if get_md5(file) != "0323e102fffc67a3cd0a84d82e6267ac": + :fetch {fetch = $fetcha} $file + file = colors/blue.vim + @if get_md5(file) != "07ec7dc8f16f7582efa8914a5c5f5ee9": + :fetch {fetch = $fetcha} $file + file = colors/torte.vim + @if get_md5(file) != "eae9165de98058a3bf9eabae662681f2": + :fetch {fetch = $fetcha} $file + file = colors/darkblue.vim + @if get_md5(file) != "201df6afa076c9ba6276683bf77211c8": + :fetch {fetch = $fetcha} $file + file = colors/desert.vim + @if get_md5(file) != "269e7ad67496f082a8d5fb36ba833d08": + :fetch {fetch = $fetcha} $file + file = colors/peachpuff.vim + @if get_md5(file) != "f72b6d6f5956e6025013d1e4621bd851": + :fetch {fetch = $fetcha} $file + file = colors/delek.vim + @if get_md5(file) != "3edf6d4f824e5d388981a391a58778a8": + :fetch {fetch = $fetcha} $file + file = colors/slate.vim + @if get_md5(file) != "dbad2c1a19dd219982c4cee5a6dc9034": + :fetch {fetch = $fetcha} $file + file = colors/README.txt + @if get_md5(file) != "586ab55fc613f3ede3e03f3dc5622c0a": + :fetch {fetch = $fetcha} $file + :mkdir {f} compiler + file = compiler/msvc.vim + @if get_md5(file) != "d88c08a14bc9dfcc02924a3eb4f15b16": + :fetch {fetch = $fetcha} $file + file = compiler/jikes.vim + @if get_md5(file) != "e949d0f59812e554da79ff44908aa9fb": + :fetch {fetch = $fetcha} $file + file = compiler/ant.vim + @if get_md5(file) != "5cc1e7ee30041a9e717418003e702482": + :fetch {fetch = $fetcha} $file + file = compiler/tex.vim + @if get_md5(file) != "7647ca931a19e83598657e6b89b49ea8": + :fetch {fetch = $fetcha} $file + file = compiler/bcc.vim + @if get_md5(file) != "2ef1d76541de283f5c245ff6be5e5129": + :fetch {fetch = $fetcha} $file + file = compiler/splint.vim + @if get_md5(file) != "b348ac86a93a7ac484f8a9591dee1a69": + :fetch {fetch = $fetcha} $file + file = compiler/irix5_c.vim + @if get_md5(file) != "f4c343c7fe0dc9787e1383808b15a28d": + :fetch {fetch = $fetcha} $file + file = compiler/irix5_cpp.vim + @if get_md5(file) != "deb21b638c92ae9af73d495ba8ebdb24": + :fetch {fetch = $fetcha} $file + file = compiler/mips_c.vim + @if get_md5(file) != "9c52de7e056f58627d3a767c5a144ef0": + :fetch {fetch = $fetcha} $file + file = compiler/checkstyle.vim + @if get_md5(file) != "33d67e15bd015e86a9280a71a2ba3c37": + :fetch {fetch = $fetcha} $file + file = compiler/mipspro_c89.vim + @if get_md5(file) != "edf42ad2a7c3f6419fe94569cac8009f": + :fetch {fetch = $fetcha} $file + file = compiler/mipspro_cpp.vim + @if get_md5(file) != "218682466d609bac2df2b5c482bbf81a": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_elf90.vim + @if get_md5(file) != "6eaccce95c588a828377e6220717a1f9": + :fetch {fetch = $fetcha} $file + file = compiler/xmllint.vim + @if get_md5(file) != "9486d9c7a8ff8be49dcadee2fbac3db7": + :fetch {fetch = $fetcha} $file + file = compiler/ruby.vim + @if get_md5(file) != "aefbddc7c7820bd61a560f2054ed0687": + :fetch {fetch = $fetcha} $file + file = compiler/pyunit.vim + @if get_md5(file) != "473c0a9272c724de81e6023133fd55a1": + :fetch {fetch = $fetcha} $file + file = compiler/cs.vim + @if get_md5(file) != "e8859cb6a4ecaa008b53270a2d5f9606": + :fetch {fetch = $fetcha} $file + file = compiler/dot.vim + @if get_md5(file) != "685dcf5c740c5beec49ef976d9d15d17": + :fetch {fetch = $fetcha} $file + file = compiler/modelsim_vcom.vim + @if get_md5(file) != "8bb85fc62069d2ee0ab634b6ce0ec78a": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_lf95.vim + @if get_md5(file) != "d46d7accf6570f7e5ac2a5709b6f79cf": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_F.vim + @if get_md5(file) != "d0e1424abb2e3f17707618a499c29998": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_cv.vim + @if get_md5(file) != "03802b2c99db9eeca07e25c1c89b7e44": + :fetch {fetch = $fetcha} $file + file = compiler/fortran_g77.vim + @if get_md5(file) != "d44126af80c1fa6c40d01ba929007752": + :fetch {fetch = $fetcha} $file + file = compiler/hp_acc.vim + @if get_md5(file) != "6c33375c9e46e197c62b92429f6e3ef6": + :fetch {fetch = $fetcha} $file + file = compiler/neato.vim + @if get_md5(file) != "57e0cb2068d4eccfe359ea31f9f30590": + :fetch {fetch = $fetcha} $file + file = compiler/pbx.vim + @if get_md5(file) != "f8be2b4192779b26d54ff0334f14bda5": + :fetch {fetch = $fetcha} $file + file = compiler/icc.vim + @if get_md5(file) != "139cbe90bc1b3e4fae9e01837d8d77b9": + :fetch {fetch = $fetcha} $file + file = compiler/tcl.vim + @if get_md5(file) != "5ad5ac8060372e4771dba1ad79e48334": + :fetch {fetch = $fetcha} $file + file = compiler/intel.vim + @if get_md5(file) != "33abfd99d9103cb743f263030f7bce2d": + :fetch {fetch = $fetcha} $file + file = compiler/se.vim + @if get_md5(file) != "775824633b66df3a89ce8ee02138e73d": + :fetch {fetch = $fetcha} $file + file = compiler/xmlwf.vim + @if get_md5(file) != "0ad0dcb95e79af87d03d732a9f87624b": + :fetch {fetch = $fetcha} $file + file = compiler/onsgmls.vim + @if get_md5(file) != "ef18f7642b06e150331599770558c8e4": + :fetch {fetch = $fetcha} $file + file = compiler/perl.vim + @if get_md5(file) != "630400b638b525122532b07eb340094f": + :fetch {fetch = $fetcha} $file + file = compiler/bdf.vim + @if get_md5(file) != "72501d7cb955a7ea8f1fab7e64153183": + :fetch {fetch = $fetcha} $file + file = compiler/rst.vim + @if get_md5(file) != "f6f335bcfbc968d98d02a5d469c3f42c": + :fetch {fetch = $fetcha} $file + file = compiler/tidy.vim + @if get_md5(file) != "a467ac1a426a2583710f26ef4f37a453": + :fetch {fetch = $fetcha} $file + file = compiler/javac.vim + @if get_md5(file) != "da76304165b23eb1b8a13954e9fa1258": + :fetch {fetch = $fetcha} $file + file = compiler/php.vim + @if get_md5(file) != "cb4075cb768b50d694a770c4ee9ef8ec": + :fetch {fetch = $fetcha} $file + file = compiler/gcc.vim + @if get_md5(file) != "6050b756008fef46fcff5a61e93e47cd": + :fetch {fetch = $fetcha} $file + file = compiler/eruby.vim + @if get_md5(file) != "bb05e5c36aab5d144de01399db55e8eb": + :fetch {fetch = $fetcha} $file + file = compiler/rubyunit.vim + @if get_md5(file) != "78a3ebf2655358f38f5bcbb8984cbe76": + :fetch {fetch = $fetcha} $file + file = compiler/fpc.vim + @if get_md5(file) != "09280649431a3f84b4669c7a1a3b3ced": + :fetch {fetch = $fetcha} $file + file = compiler/mcs.vim + @if get_md5(file) != "1dfdbc2d1982cd00535baa57abd7f24c": + :fetch {fetch = $fetcha} $file + file = compiler/decada.vim + @if get_md5(file) != "faebff9591f9f259c3cee447aa544449": + :fetch {fetch = $fetcha} $file + file = compiler/gnat.vim + @if get_md5(file) != "da725027d6d4e9be585a2760b97207db": + :fetch {fetch = $fetcha} $file + file = compiler/README.txt + @if get_md5(file) != "961f189a6fb803ea0e47a29fd908961c": + :fetch {fetch = $fetcha} $file + :mkdir {f} indent + file = indent/make.vim + @if get_md5(file) != "7e11c61721a88f52c9d3fecd810a95cf": + :fetch {fetch = $fetcha} $file + file = indent/fortran.vim + @if get_md5(file) != "51ff5a7e27527c145c64edd2a8597318": + :fetch {fetch = $fetcha} $file + file = indent/verilog.vim + @if get_md5(file) != "95ff0928a6435052d18025656fab5410": + :fetch {fetch = $fetcha} $file + file = indent/sh.vim + @if get_md5(file) != "0dd8ea3af2a5804c84e6873c497052dc": + :fetch {fetch = $fetcha} $file + file = indent/perl.vim + @if get_md5(file) != "af01950d66346280164fdb52d6e7f880": + :fetch {fetch = $fetcha} $file + file = indent/python.vim + @if get_md5(file) != "aa07bd063db9f18c20acdb26fe3bd08a": + :fetch {fetch = $fetcha} $file + file = indent/config.vim + @if get_md5(file) != "25b8f510f403a065b382730c6669fafd": + :fetch {fetch = $fetcha} $file + file = indent/html.vim + @if get_md5(file) != "0298938797abe6d71d3007a42d1c9afb": + :fetch {fetch = $fetcha} $file + file = indent/tcl.vim + @if get_md5(file) != "1cb9dd7c137aaf5766afc49d62563f8b": + :fetch {fetch = $fetcha} $file + file = indent/matlab.vim + @if get_md5(file) != "ed824e38664a83a51c50689135d29cc5": + :fetch {fetch = $fetcha} $file + file = indent/sdl.vim + @if get_md5(file) != "252117765066afed36f06daee33ba00f": + :fetch {fetch = $fetcha} $file + file = indent/xml.vim + @if get_md5(file) != "389255c9892a567f24a6ebc3cb1195bb": + :fetch {fetch = $fetcha} $file + file = indent/ruby.vim + @if get_md5(file) != "cb9c03b09fc88403b1fb07879fdc62d3": + :fetch {fetch = $fetcha} $file + file = indent/ada.vim + @if get_md5(file) != "841b3c46478a21022d1f9fbe6b262afd": + :fetch {fetch = $fetcha} $file + file = indent/cpp.vim + @if get_md5(file) != "36f2a505026404066db0add161226cf9": + :fetch {fetch = $fetcha} $file + file = indent/c.vim + @if get_md5(file) != "4e7cba98b7f71cdb34f18c5d8a897bca": + :fetch {fetch = $fetcha} $file + file = indent/css.vim + @if get_md5(file) != "3f17a44200c5ca2401ac07814062797a": + :fetch {fetch = $fetcha} $file + file = indent/java.vim + @if get_md5(file) != "83e90a6401cac58cb2f9014da5dbe9b5": + :fetch {fetch = $fetcha} $file + file = indent/ocaml.vim + @if get_md5(file) != "d6a672ddc0418737a6938735584d9037": + :fetch {fetch = $fetcha} $file + file = indent/postscr.vim + @if get_md5(file) != "17ac639742aabfc278cda9b552c51bbe": + :fetch {fetch = $fetcha} $file + file = indent/eterm.vim + @if get_md5(file) != "40cc22acfbb466cd8f15015ba0fef2f2": + :fetch {fetch = $fetcha} $file + file = indent/ishd.vim + @if get_md5(file) != "2f33e4596b75aaa34a6d029c6cb5b169": + :fetch {fetch = $fetcha} $file + file = indent/vb.vim + @if get_md5(file) != "80f384315b87ea33e524e8f38dc01b99": + :fetch {fetch = $fetcha} $file + file = indent/automake.vim + @if get_md5(file) != "415223e0d04aa18f84cf59213e94dbfb": + :fetch {fetch = $fetcha} $file + file = indent/readline.vim + @if get_md5(file) != "33252b32cac7cc6af67e2f4c9c5ac29e": + :fetch {fetch = $fetcha} $file + file = indent/lua.vim + @if get_md5(file) != "0bee4a9531b00f3aa8f9bf8b835c1a34": + :fetch {fetch = $fetcha} $file + file = indent/yacc.vim + @if get_md5(file) != "9dc77bb558be45812a4ee7aeb6f1f559": + :fetch {fetch = $fetcha} $file + file = indent/occam.vim + @if get_md5(file) != "2b4f3d1a0d8442c3c14258edb4416d4e": + :fetch {fetch = $fetcha} $file + file = indent/prolog.vim + @if get_md5(file) != "f67500a24650720ad494da775fba5efd": + :fetch {fetch = $fetcha} $file + file = indent/cs.vim + @if get_md5(file) != "0a630511bfa56ae3bda77848b0227e03": + :fetch {fetch = $fetcha} $file + file = indent/cdl.vim + @if get_md5(file) != "1aa2f23eeba6c73036d0d1f1674d66e4": + :fetch {fetch = $fetcha} $file + file = indent/awk.vim + @if get_md5(file) != "4ceb8f284ef201852381ba24896b6ac0": + :fetch {fetch = $fetcha} $file + file = indent/pov.vim + @if get_md5(file) != "8090249d6f037c004f5f8d217d0c2a6a": + :fetch {fetch = $fetcha} $file + file = indent/idlang.vim + @if get_md5(file) != "1b641a8d556cb363c0ea69efa70d7333": + :fetch {fetch = $fetcha} $file + file = indent/eiffel.vim + @if get_md5(file) != "aed267aae45b369bd7397e024f98773c": + :fetch {fetch = $fetcha} $file + file = indent/rpl.vim + @if get_md5(file) != "fdec0b0a6c1e83b095202abd23574cea": + :fetch {fetch = $fetcha} $file + file = indent/php.vim + @if get_md5(file) != "c4309fecddc585b578aed44396ac5e76": + :fetch {fetch = $fetcha} $file + file = indent/tilde.vim + @if get_md5(file) != "6279a75d00466ce6914be192dc558038": + :fetch {fetch = $fetcha} $file + file = indent/xslt.vim + @if get_md5(file) != "39dc925c7e63bc9a42807babb691a4f0": + :fetch {fetch = $fetcha} $file + file = indent/ant.vim + @if get_md5(file) != "d4f91c49d83691375b0161f71caccef7": + :fetch {fetch = $fetcha} $file + file = indent/dylan.vim + @if get_md5(file) != "8e9a0e5b2aeda976e3cca642291d7db2": + :fetch {fetch = $fetcha} $file + file = indent/xf86conf.vim + @if get_md5(file) != "207c0d2828be9496a55f97ad589176c2": + :fetch {fetch = $fetcha} $file + file = indent/docbk.vim + @if get_md5(file) != "9a5a3170278206dd62dc5cea9ef75087": + :fetch {fetch = $fetcha} $file + file = indent/xhtml.vim + @if get_md5(file) != "04aa82d0f6506c4f79177b5086e9b2dd": + :fetch {fetch = $fetcha} $file + file = indent/pyrex.vim + @if get_md5(file) != "dd3df4e8d77d3c40e770c2c06c85f9e5": + :fetch {fetch = $fetcha} $file + file = indent/tcsh.vim + @if get_md5(file) != "d9a7e53bc65e45d3f2d12c0197f0d549": + :fetch {fetch = $fetcha} $file + file = indent/zsh.vim + @if get_md5(file) != "e40acad38f19a73ed082015d33dd2623": + :fetch {fetch = $fetcha} $file + file = indent/objc.vim + @if get_md5(file) != "f269e4c0e2469a407f83a1c12d2ba5a9": + :fetch {fetch = $fetcha} $file + file = indent/mp.vim + @if get_md5(file) != "1af303ebc473504ddb0d58fc7f12fd04": + :fetch {fetch = $fetcha} $file + file = indent/ch.vim + @if get_md5(file) != "14636a5e982b5edcd943c6e7ee469f11": + :fetch {fetch = $fetcha} $file + file = indent/aap.vim + @if get_md5(file) != "e683e72b1a3e56c1277ad6481e3cd70b": + :fetch {fetch = $fetcha} $file + file = indent/vim.vim + @if get_md5(file) != "3470bbe892d6100b8662f8085d92a73c": + :fetch {fetch = $fetcha} $file + file = indent/rst.vim + @if get_md5(file) != "b771bc90048c6ce2d265ff9a93ab2eab": + :fetch {fetch = $fetcha} $file + file = indent/mupad.vim + @if get_md5(file) != "188cbf805dc1baaa0b92fe895493084d": + :fetch {fetch = $fetcha} $file + file = indent/GenericIndent.vim + @if get_md5(file) != "776e1fe6c66c99105a353bc6cd532226": + :fetch {fetch = $fetcha} $file + file = indent/bib.vim + @if get_md5(file) != "5d858b5c22c0ccf9a8fddd4252b89ae1": + :fetch {fetch = $fetcha} $file + file = indent/mma.vim + @if get_md5(file) != "3fae08154e17b52c0821d66418780568": + :fetch {fetch = $fetcha} $file + file = indent/pascal.vim + @if get_md5(file) != "0fb5cd57c5cdaebc83fd377ad582a7bb": + :fetch {fetch = $fetcha} $file + file = indent/xsd.vim + @if get_md5(file) != "e67a32fc868f85dd1e8a52f937bc6db1": + :fetch {fetch = $fetcha} $file + file = indent/changelog.vim + @if get_md5(file) != "9d3952c2ca0ada35e90ec68b52ddb7f1": + :fetch {fetch = $fetcha} $file + file = indent/scheme.vim + @if get_md5(file) != "91fed31081160e4557fdb1e347f12e63": + :fetch {fetch = $fetcha} $file + file = indent/ld.vim + @if get_md5(file) != "855c8eee0f664a015f3693fbae49f88a": + :fetch {fetch = $fetcha} $file + file = indent/xinetd.vim + @if get_md5(file) != "0daee744b4e585932a33bd324b2e53c7": + :fetch {fetch = $fetcha} $file + file = indent/lisp.vim + @if get_md5(file) != "751e1aefaf19248ff84d3da6e5d501b9": + :fetch {fetch = $fetcha} $file + file = indent/dictconf.vim + @if get_md5(file) != "9473daf470813e05e378b6f9c557da94": + :fetch {fetch = $fetcha} $file + file = indent/dictdconf.vim + @if get_md5(file) != "4887a3be5c6dfb7e4a50b5a5474bee67": + :fetch {fetch = $fetcha} $file + file = indent/sml.vim + @if get_md5(file) != "91bda5c39b753d11056d1cf1cacc6961": + :fetch {fetch = $fetcha} $file + file = indent/d.vim + @if get_md5(file) != "af0e4bca887c362aed435a9dad582739": + :fetch {fetch = $fetcha} $file + file = indent/eruby.vim + @if get_md5(file) != "08875b3385cd878f53b0dbfc7462267a": + :fetch {fetch = $fetcha} $file + file = indent/vhdl.vim + @if get_md5(file) != "c6dc48c84c1f2145ae2869a619bb1804": + :fetch {fetch = $fetcha} $file + file = indent/sql.vim + @if get_md5(file) != "8498fe2a48dc376a1c47d36dd1dc59d0": + :fetch {fetch = $fetcha} $file + file = indent/sqlanywhere.vim + @if get_md5(file) != "6b0b652b4c7edf55b883a90fa9d01585": + :fetch {fetch = $fetcha} $file + file = indent/cmake.vim + @if get_md5(file) != "80ce1a054f4502650a4400c1b44e38c2": + :fetch {fetch = $fetcha} $file + file = indent/hamster.vim + @if get_md5(file) != "486564d27ac6a0b64fb5ff884769b6ad": + :fetch {fetch = $fetcha} $file + file = indent/jsp.vim + @if get_md5(file) != "972a463263b464755dd25a0673921a32": + :fetch {fetch = $fetcha} $file + file = indent/bst.vim + @if get_md5(file) != "799b75f55e762d602021d470d344e8f2": + :fetch {fetch = $fetcha} $file + file = indent/javascript.vim + @if get_md5(file) != "64ebb919bffeb54141e7471eafcdb672": + :fetch {fetch = $fetcha} $file + file = indent/cobol.vim + @if get_md5(file) != "a10e3e3e69a1db993ff16f269b27de8f": + :fetch {fetch = $fetcha} $file + file = indent/htmldjango.vim + @if get_md5(file) != "a4be45ddc347cd0a840a0052cfb776be": + :fetch {fetch = $fetcha} $file + file = indent/tf.vim + @if get_md5(file) != "f5cbe5f76e71678efa840a2266bf6eb1": + :fetch {fetch = $fetcha} $file + file = indent/erlang.vim + @if get_md5(file) != "962491efdb2cb28c6f5fb23c675b1694": + :fetch {fetch = $fetcha} $file + file = indent/gitconfig.vim + @if get_md5(file) != "0ca0f58494e334143c79d6a7d81670d8": + :fetch {fetch = $fetcha} $file + file = indent/README.txt + @if get_md5(file) != "76756a54a88543e7d9385911086c33c3": + :fetch {fetch = $fetcha} $file + :mkdir {f} ftplugin + file = ftplugin/kwt.vim + @if get_md5(file) != "7fb3c56fcb32f78fe830e7f7f39429e2": + :fetch {fetch = $fetcha} $file + file = ftplugin/vim.vim + @if get_md5(file) != "397abdd1d238811ebd6b814665b2ed8e": + :fetch {fetch = $fetcha} $file + file = ftplugin/make.vim + @if get_md5(file) != "78add1852816749171226c91672dde69": + :fetch {fetch = $fetcha} $file + file = ftplugin/xs.vim + @if get_md5(file) != "bd3225fbcc9b6efe4732abf635f15d54": + :fetch {fetch = $fetcha} $file + file = ftplugin/fortran.vim + @if get_md5(file) != "b1060c6a0aaa6713af4a7c50821230c2": + :fetch {fetch = $fetcha} $file + file = ftplugin/changelog.vim + @if get_md5(file) != "34ebc800b4cfbc973ee3fd367e536333": + :fetch {fetch = $fetcha} $file + file = ftplugin/cpp.vim + @if get_md5(file) != "e267628aee072967ed75138edadfedfd": + :fetch {fetch = $fetcha} $file + file = ftplugin/ruby.vim + @if get_md5(file) != "8a707994453b13d92c6069982087c111": + :fetch {fetch = $fetcha} $file + file = ftplugin/c.vim + @if get_md5(file) != "9238a1c3494870dc77a6a425642d7cfc": + :fetch {fetch = $fetcha} $file + file = ftplugin/spec.vim + @if get_md5(file) != "bd0c4cfee73563c98b72c2b60a3cc2b0": + :fetch {fetch = $fetcha} $file + file = ftplugin/mail.vim + @if get_md5(file) != "357939c1f37fe42a751064c9644fe642": + :fetch {fetch = $fetcha} $file + file = ftplugin/python.vim + @if get_md5(file) != "e10ec208f1fedcd1e399d833ce24b9e7": + :fetch {fetch = $fetcha} $file + file = ftplugin/debchangelog.vim + @if get_md5(file) != "1a26b842d33732b6e4ec85a40b136566": + :fetch {fetch = $fetcha} $file + file = ftplugin/java.vim + @if get_md5(file) != "0e32895f6071e299ff5ac44ff0eb5b1c": + :fetch {fetch = $fetcha} $file + file = ftplugin/postscr.vim + @if get_md5(file) != "edf06b678a2bc0e5c6861770bc04556b": + :fetch {fetch = $fetcha} $file + file = ftplugin/perl.vim + @if get_md5(file) != "19e2eed8a8d7e0bb0cc442e29a85ffcd": + :fetch {fetch = $fetcha} $file + file = ftplugin/ishd.vim + @if get_md5(file) != "298055057466f2e9ab0baefb27f3a83c": + :fetch {fetch = $fetcha} $file + file = ftplugin/verilog.vim + @if get_md5(file) != "8e84cf8ac582102df57c44a6b68150b2": + :fetch {fetch = $fetcha} $file + file = ftplugin/dosbatch.vim + @if get_md5(file) != "2d0b5207d3fa3d81982261ee631ddcd9": + :fetch {fetch = $fetcha} $file + file = ftplugin/vb.vim + @if get_md5(file) != "ff32d8af502aabc00c6b8ddb62f642fb": + :fetch {fetch = $fetcha} $file + file = ftplugin/lua.vim + @if get_md5(file) != "06269664c7b3bb4ea9961733367afbe8": + :fetch {fetch = $fetcha} $file + file = ftplugin/ada.vim + @if get_md5(file) != "f669e02efa982cc5d979bf0cf91d0bbe": + :fetch {fetch = $fetcha} $file + file = ftplugin/lprolog.vim + @if get_md5(file) != "5bbb2e39c88fcd3b8970bbd801f03cc4": + :fetch {fetch = $fetcha} $file + file = ftplugin/ocaml.vim + @if get_md5(file) != "984148c95813f330b2fbdfd2753223dd": + :fetch {fetch = $fetcha} $file + file = ftplugin/xslt.vim + @if get_md5(file) != "0a822f3fbea1ada96816299877cdcf7c": + :fetch {fetch = $fetcha} $file + file = ftplugin/abaqus.vim + @if get_md5(file) != "f2ab23ab5d0a8ed516d38613b3993c36": + :fetch {fetch = $fetcha} $file + file = ftplugin/rpl.vim + @if get_md5(file) != "5f290c7f9828e7e2e1677d41474096ab": + :fetch {fetch = $fetcha} $file + file = ftplugin/tex.vim + @if get_md5(file) != "c64005251ae0004b0239f4a4fc29afc6": + :fetch {fetch = $fetcha} $file + file = ftplugin/cs.vim + @if get_md5(file) != "3dc252439ae6d2f21716b663cc36a7b0": + :fetch {fetch = $fetcha} $file + file = ftplugin/occam.vim + @if get_md5(file) != "829315fbbeb90141ab100d2b12960597": + :fetch {fetch = $fetcha} $file + file = ftplugin/csh.vim + @if get_md5(file) != "8115b74b4dcdcbac5feb2383f3a12566": + :fetch {fetch = $fetcha} $file + file = ftplugin/ant.vim + @if get_md5(file) != "2c9189d817a128da3a91943062aae3dc": + :fetch {fetch = $fetcha} $file + file = ftplugin/sql.vim + @if get_md5(file) != "64842f4f736aa0877936ba4e17222b53": + :fetch {fetch = $fetcha} $file + file = ftplugin/art.vim + @if get_md5(file) != "23ed5dffd093f8db2f1e85c6928b49f4": + :fetch {fetch = $fetcha} $file + file = ftplugin/sgml.vim + @if get_md5(file) != "743ab06915088648aaaa6538f67a89b7": + :fetch {fetch = $fetcha} $file + file = ftplugin/automake.vim + @if get_md5(file) != "b6acf64f5fda57ea87d1057e0ef64c4a": + :fetch {fetch = $fetcha} $file + file = ftplugin/lisp.vim + @if get_md5(file) != "a8aee9ce5d8fc371fcac7574b6a07c7b": + :fetch {fetch = $fetcha} $file + file = ftplugin/objc.vim + @if get_md5(file) != "fa7bb815601437d206a225e82af3ff36": + :fetch {fetch = $fetcha} $file + file = ftplugin/aspvbs.vim + @if get_md5(file) != "91a191a815c5828756c61f3db58422b5": + :fetch {fetch = $fetcha} $file + file = ftplugin/config.vim + @if get_md5(file) != "1b0413f790b4d57334be1f39d1c48d3f": + :fetch {fetch = $fetcha} $file + file = ftplugin/csc.vim + @if get_md5(file) != "6a6ed7b70b254d7e285d9d3e7056fb52": + :fetch {fetch = $fetcha} $file + file = ftplugin/bdf.vim + @if get_md5(file) != "d1b711bf909160ca6da5dd373211b57a": + :fetch {fetch = $fetcha} $file + file = ftplugin/dtd.vim + @if get_md5(file) != "f70fa3bd35e6af17f0766ffb9f43ac85": + :fetch {fetch = $fetcha} $file + file = ftplugin/html.vim + @if get_md5(file) != "7823d72d34d4d5dd646d658f569b3fc1": + :fetch {fetch = $fetcha} $file + file = ftplugin/jsp.vim + @if get_md5(file) != "22d4f4b59da7aaa1b2ff19b99aa8b3d1": + :fetch {fetch = $fetcha} $file + file = ftplugin/pascal.vim + @if get_md5(file) != "cfae7674e146d5c5eebbb3cb8fc05dda": + :fetch {fetch = $fetcha} $file + file = ftplugin/sh.vim + @if get_md5(file) != "e3ac3e31292657ab85187eb24015f7f6": + :fetch {fetch = $fetcha} $file + file = ftplugin/svg.vim + @if get_md5(file) != "8caa74c9549259ebeea50989d4a3e368": + :fetch {fetch = $fetcha} $file + file = ftplugin/tcsh.vim + @if get_md5(file) != "a6878c911ee415f04c8d3427d2eed54c": + :fetch {fetch = $fetcha} $file + file = ftplugin/xhtml.vim + @if get_md5(file) != "5ea7681f66d7d9dadebe06c1fc73b45f": + :fetch {fetch = $fetcha} $file + file = ftplugin/dosini.vim + @if get_md5(file) != "f5de316d8df6f96b1ed34e71e6330e42": + :fetch {fetch = $fetcha} $file + file = ftplugin/xml.vim + @if get_md5(file) != "078f6d44a8b7ebcb8aa6fd51ea22a28a": + :fetch {fetch = $fetcha} $file + file = ftplugin/xsd.vim + @if get_md5(file) != "18dc90d38eabf755006701d6901ad948": + :fetch {fetch = $fetcha} $file + file = ftplugin/scheme.vim + @if get_md5(file) != "e5530070d000d79cc22ab913b131bdf8": + :fetch {fetch = $fetcha} $file + file = ftplugin/aap.vim + @if get_md5(file) != "8561a1072aaad48cc04448b5afa203de": + :fetch {fetch = $fetcha} $file + file = ftplugin/mf.vim + @if get_md5(file) != "43d46230427237c8adaa294b0ff7c020": + :fetch {fetch = $fetcha} $file + file = ftplugin/mp.vim + @if get_md5(file) != "88d868e3ff22548b2fb2fa38444b1088": + :fetch {fetch = $fetcha} $file + file = ftplugin/pyrex.vim + @if get_md5(file) != "1a9b8404f609a7f7d910337602e6254a": + :fetch {fetch = $fetcha} $file + file = ftplugin/rst.vim + @if get_md5(file) != "10c1ce7ad7b0ef237559baa1d8618acb": + :fetch {fetch = $fetcha} $file + file = ftplugin/css.vim + @if get_md5(file) != "d2b6ba684c68f8d968e8aee2f1dce90c": + :fetch {fetch = $fetcha} $file + file = ftplugin/man.vim + @if get_md5(file) != "771dded13c234d0e604644731ab510dc": + :fetch {fetch = $fetcha} $file + file = ftplugin/ch.vim + @if get_md5(file) != "4fc410fe9595530b17e335d532d347cc": + :fetch {fetch = $fetcha} $file + file = ftplugin/AppendMatchGroup.vim + @if get_md5(file) != "7ecda037afc5a72ccf9bef877469607a": + :fetch {fetch = $fetcha} $file + file = ftplugin/mupad.vim + @if get_md5(file) != "dfa40e4a42a0d8c84ee1b30ae937808f": + :fetch {fetch = $fetcha} $file + file = ftplugin/vhdl.vim + @if get_md5(file) != "c1aa0914b75c41bad32fae37443f5f42": + :fetch {fetch = $fetcha} $file + file = ftplugin/btm.vim + @if get_md5(file) != "a11a20506c3e24769caecbdddad99803": + :fetch {fetch = $fetcha} $file + file = ftplugin/alsaconf.vim + @if get_md5(file) != "ad7658103fdbef5a4e781ca5dbb17df7": + :fetch {fetch = $fetcha} $file + file = ftplugin/arch.vim + @if get_md5(file) != "c53cb75e6280c0c0cdf5a92fad74e825": + :fetch {fetch = $fetcha} $file + file = ftplugin/calendar.vim + @if get_md5(file) != "fe2a276e49e1a6cebce18fd26453ac18": + :fetch {fetch = $fetcha} $file + file = ftplugin/conf.vim + @if get_md5(file) != "f7447c931d47802e80b46e116ef3ed4d": + :fetch {fetch = $fetcha} $file + file = ftplugin/context.vim + @if get_md5(file) != "f293b45c6b2da44f6325c87935fb3533": + :fetch {fetch = $fetcha} $file + file = ftplugin/crm.vim + @if get_md5(file) != "849956e5f46a52287d1353adbbe701e4": + :fetch {fetch = $fetcha} $file + file = ftplugin/cvsrc.vim + @if get_md5(file) != "699cc258ddf5e8e85e6d12c095ab4c78": + :fetch {fetch = $fetcha} $file + file = ftplugin/dircolors.vim + @if get_md5(file) != "a7cdf90e24d5b64a4cafdeb44f094fc8": + :fetch {fetch = $fetcha} $file + file = ftplugin/elinks.vim + @if get_md5(file) != "11ad7acc8af802e784c27f48e21d8aa5": + :fetch {fetch = $fetcha} $file + file = ftplugin/eterm.vim + @if get_md5(file) != "6cd3ae95eb0810873676a61c3e279056": + :fetch {fetch = $fetcha} $file + file = ftplugin/gpg.vim + @if get_md5(file) != "59791428bf1e62c82ae51157663b58ab": + :fetch {fetch = $fetcha} $file + file = ftplugin/fetchmail.vim + @if get_md5(file) != "e674b3a7a122fd4a986aa8cec97de877": + :fetch {fetch = $fetcha} $file + file = ftplugin/grub.vim + @if get_md5(file) != "98523119a8ac5cd61d4c019f4c5edb76": + :fetch {fetch = $fetcha} $file + file = ftplugin/haskell.vim + @if get_md5(file) != "182a437cf44acdfd3769aac8198c6938": + :fetch {fetch = $fetcha} $file + file = ftplugin/help.vim + @if get_md5(file) != "8240dda04df4a219314544bb48c4f665": + :fetch {fetch = $fetcha} $file + file = ftplugin/indent.vim + @if get_md5(file) != "0206d7f7a76d76a33880fd6eda744bf3": + :fetch {fetch = $fetcha} $file + file = ftplugin/ld.vim + @if get_md5(file) != "2ae0e677ef7df42ae7276a12e4a0b295": + :fetch {fetch = $fetcha} $file + file = ftplugin/lftp.vim + @if get_md5(file) != "e9e22e9e6acad314ae6cdea5eef01dac": + :fetch {fetch = $fetcha} $file + file = ftplugin/libao.vim + @if get_md5(file) != "8e4d8749b047b6128ff53daa25de6ed2": + :fetch {fetch = $fetcha} $file + file = ftplugin/limits.vim + @if get_md5(file) != "12ae046a887fdc8a4248cc5894bad646": + :fetch {fetch = $fetcha} $file + file = ftplugin/loginaccess.vim + @if get_md5(file) != "0468a8ddacd5fc95c27cb8e0f579837b": + :fetch {fetch = $fetcha} $file + file = ftplugin/logindefs.vim + @if get_md5(file) != "326e764e6cb74aa5d94ef43f3e72cd63": + :fetch {fetch = $fetcha} $file + file = ftplugin/m4.vim + @if get_md5(file) != "8f8350d1708eff3408594c71dbe52755": + :fetch {fetch = $fetcha} $file + file = ftplugin/mailcap.vim + @if get_md5(file) != "7ae35291eadf3ec154e12f5f578097e4": + :fetch {fetch = $fetcha} $file + file = ftplugin/modconf.vim + @if get_md5(file) != "bc91334cd7a2f9a5dbbe2eb58a9258b0": + :fetch {fetch = $fetcha} $file + file = ftplugin/mplayerconf.vim + @if get_md5(file) != "11d49c7501bcd2e33139959a3c3f8e68": + :fetch {fetch = $fetcha} $file + file = ftplugin/muttrc.vim + @if get_md5(file) != "d03b2db970a37968a147bd0aa7a2f87a": + :fetch {fetch = $fetcha} $file + file = ftplugin/netrc.vim + @if get_md5(file) != "2c1a311c0bfb3b85632341fc3f2d6efb": + :fetch {fetch = $fetcha} $file + file = ftplugin/pamconf.vim + @if get_md5(file) != "f5939e19f958dc022637eb0ecc0dbf2d": + :fetch {fetch = $fetcha} $file + file = ftplugin/pinfo.vim + @if get_md5(file) != "3d1d83cd634698bf1cd306c158a01581": + :fetch {fetch = $fetcha} $file + file = ftplugin/procmail.vim + @if get_md5(file) != "56f45728b85c6f2ed334f6d5297bb54d": + :fetch {fetch = $fetcha} $file + file = ftplugin/prolog.vim + @if get_md5(file) != "d10114b46fca46feb04dfcdbbb302580": + :fetch {fetch = $fetcha} $file + file = ftplugin/quake.vim + @if get_md5(file) != "41e4daee701fa1c9a9aa9aa115ce18e5": + :fetch {fetch = $fetcha} $file + file = ftplugin/racc.vim + @if get_md5(file) != "e8e8d70c2d17876f513661dbfde365f7": + :fetch {fetch = $fetcha} $file + file = ftplugin/readline.vim + @if get_md5(file) != "26655922314a3510d8f874bf3a958515": + :fetch {fetch = $fetcha} $file + file = ftplugin/rnc.vim + @if get_md5(file) != "716573d10c23c4c105bbc51d247c6451": + :fetch {fetch = $fetcha} $file + file = ftplugin/screen.vim + @if get_md5(file) != "5afe041b22a9cd2c93abeb9dc9fedb27": + :fetch {fetch = $fetcha} $file + file = ftplugin/sieve.vim + @if get_md5(file) != "958a058bda2160372d57e422dc15834e": + :fetch {fetch = $fetcha} $file + file = ftplugin/sshconfig.vim + @if get_md5(file) != "00df138111f6679a3df84c939d251499": + :fetch {fetch = $fetcha} $file + file = ftplugin/sudoers.vim + @if get_md5(file) != "bdd2e2e2a24894ef6d48b5a63d870e53": + :fetch {fetch = $fetcha} $file + file = ftplugin/sysctl.vim + @if get_md5(file) != "60822b1c40780d1e6123410089d28ab7": + :fetch {fetch = $fetcha} $file + file = ftplugin/terminfo.vim + @if get_md5(file) != "4a49390881372804b4f48565b6572199": + :fetch {fetch = $fetcha} $file + file = ftplugin/updatedb.vim + @if get_md5(file) != "5b900a6f872286e4471312a033ed246b": + :fetch {fetch = $fetcha} $file + file = ftplugin/xdefaults.vim + @if get_md5(file) != "93c5d5704d63f21af971d60d6bd9c4e0": + :fetch {fetch = $fetcha} $file + file = ftplugin/xf86conf.vim + @if get_md5(file) != "5d3ebc68f92ce880355b1352005d76da": + :fetch {fetch = $fetcha} $file + file = ftplugin/xinetd.vim + @if get_md5(file) != "ab69198d61320d7da3b8860d33210e31": + :fetch {fetch = $fetcha} $file + file = ftplugin/xmodmap.vim + @if get_md5(file) != "cc87515fd22785bbed6e731838bcd65a": + :fetch {fetch = $fetcha} $file + file = ftplugin/yaml.vim + @if get_md5(file) != "78d844d71df333dee1623a4b63e63e82": + :fetch {fetch = $fetcha} $file + file = ftplugin/zsh.vim + @if get_md5(file) != "e0e6ccd0244a2cfcbce2537c97f1bf9e": + :fetch {fetch = $fetcha} $file + file = ftplugin/a2ps.vim + @if get_md5(file) != "559369d6d8925dd645f904e1383a5e26": + :fetch {fetch = $fetcha} $file + file = ftplugin/dictconf.vim + @if get_md5(file) != "895c9205b720ae6a2241d6101533fb1a": + :fetch {fetch = $fetcha} $file + file = ftplugin/dictdconf.vim + @if get_md5(file) != "a481a343fe177bb5a00207c0cb4e7b4f": + :fetch {fetch = $fetcha} $file + file = ftplugin/group.vim + @if get_md5(file) != "92d9206b4d2f626eb0539a0b4b892b34": + :fetch {fetch = $fetcha} $file + file = ftplugin/manconf.vim + @if get_md5(file) != "a27f7331c937964ec05ec7ee6180207b": + :fetch {fetch = $fetcha} $file + file = ftplugin/nanorc.vim + @if get_md5(file) != "81acdd4d873533e906dcd6821552a70d": + :fetch {fetch = $fetcha} $file + file = ftplugin/passwd.vim + @if get_md5(file) != "c809417cef6237e9d2bb7aba9cba33d0": + :fetch {fetch = $fetcha} $file + file = ftplugin/protocols.vim + @if get_md5(file) != "f4f618cad5bb4c9a728b2c652935c520": + :fetch {fetch = $fetcha} $file + file = ftplugin/sensors.vim + @if get_md5(file) != "24665f0eb8cee3cbcf54642edff2ebe9": + :fetch {fetch = $fetcha} $file + file = ftplugin/services.vim + @if get_md5(file) != "1eedcc429a8724b3ac7822d9d20770e2": + :fetch {fetch = $fetcha} $file + file = ftplugin/slpconf.vim + @if get_md5(file) != "e86043c9f2a64db39e0f1ba78b36d4c4": + :fetch {fetch = $fetcha} $file + file = ftplugin/setserial.vim + @if get_md5(file) != "22517f068fc13ec2b270fcda41f10d06": + :fetch {fetch = $fetcha} $file + file = ftplugin/slpreg.vim + @if get_md5(file) != "3ecfff9a9f3427d3030d1500a8aacd4d": + :fetch {fetch = $fetcha} $file + file = ftplugin/slpspi.vim + @if get_md5(file) != "aa2d30fd47fed48d565960e561206108": + :fetch {fetch = $fetcha} $file + file = ftplugin/udevconf.vim + @if get_md5(file) != "5e11ae215cabb175bd49ea51bf382fcf": + :fetch {fetch = $fetcha} $file + file = ftplugin/udevperm.vim + @if get_md5(file) != "689ba8daa8f86790ec88a92d43104049": + :fetch {fetch = $fetcha} $file + file = ftplugin/udevrules.vim + @if get_md5(file) != "4f0041796ff92f546e24a3763a25aa8f": + :fetch {fetch = $fetcha} $file + file = ftplugin/diff.vim + @if get_md5(file) != "07422deff3a7cf6e538648e75e1bae02": + :fetch {fetch = $fetcha} $file + file = ftplugin/eruby.vim + @if get_md5(file) != "997f501a51b810a28c3bfa4c35e88aed": + :fetch {fetch = $fetcha} $file + file = ftplugin/matlab.vim + @if get_md5(file) != "ae8597af5718b84da333762765e56665": + :fetch {fetch = $fetcha} $file + file = ftplugin/javascript.vim + @if get_md5(file) != "2e895163703bf84317fec28a567c1503": + :fetch {fetch = $fetcha} $file + file = ftplugin/plaintex.vim + @if get_md5(file) != "c035f3c412751170669435450708b225": + :fetch {fetch = $fetcha} $file + file = ftplugin/kconfig.vim + @if get_md5(file) != "f42bc21c3bcd575f9237a180d3b89668": + :fetch {fetch = $fetcha} $file + file = ftplugin/initex.vim + @if get_md5(file) != "3c9467ea73302a4960a25d60ace76457": + :fetch {fetch = $fetcha} $file + file = ftplugin/mailaliases.vim + @if get_md5(file) != "d895d5ecaee6c1e1d49cfd145de2b7f5": + :fetch {fetch = $fetcha} $file + file = ftplugin/flexwiki.vim + @if get_md5(file) != "f5232b03bbda26aaf1fce7d1d4f1ab78": + :fetch {fetch = $fetcha} $file + file = ftplugin/mrxvtrc.vim + @if get_md5(file) != "b41ca318890f70d33af953b61f73d3bf": + :fetch {fetch = $fetcha} $file + file = ftplugin/fvwm.vim + @if get_md5(file) != "a794b08f8360f6261a907cebc918d17f": + :fetch {fetch = $fetcha} $file + file = ftplugin/hamster.vim + @if get_md5(file) != "a639d019a68d30428d33a263f9e27be3": + :fetch {fetch = $fetcha} $file + file = ftplugin/bst.vim + @if get_md5(file) != "4175e39c75e706e769b38c9ee6fae2ae": + :fetch {fetch = $fetcha} $file + file = ftplugin/cobol.vim + @if get_md5(file) != "c5b4c99aea64fea83dc92d79a98a1901": + :fetch {fetch = $fetcha} $file + file = ftplugin/htmldjango.vim + @if get_md5(file) != "938fc0f4679d6cd929b6c49b44de3aa6": + :fetch {fetch = $fetcha} $file + file = ftplugin/hostconf.vim + @if get_md5(file) != "f39746a4d4bd370b97700cdf394db145": + :fetch {fetch = $fetcha} $file + file = ftplugin/php.vim + @if get_md5(file) != "b0cf4866214506f94fcb389e2a7be0be": + :fetch {fetch = $fetcha} $file + file = ftplugin/pdf.vim + @if get_md5(file) != "f0e92b87799aa330809c2bd2cbb23d29": + :fetch {fetch = $fetcha} $file + file = ftplugin/denyhosts.vim + @if get_md5(file) != "f39746a4d4bd370b97700cdf394db145": + :fetch {fetch = $fetcha} $file + file = ftplugin/cdrdaoconf.vim + @if get_md5(file) != "f39746a4d4bd370b97700cdf394db145": + :fetch {fetch = $fetcha} $file + file = ftplugin/gitcommit.vim + @if get_md5(file) != "f447ab8369bda46b28d2bb6bad3c307a": + :fetch {fetch = $fetcha} $file + file = ftplugin/gitconfig.vim + @if get_md5(file) != "3c138b787077ede2b91db570efc5a586": + :fetch {fetch = $fetcha} $file + file = ftplugin/gitsendemail.vim + @if get_md5(file) != "c0ee583f7935f23c3cc671d2ad00d8dc": + :fetch {fetch = $fetcha} $file + file = ftplugin/reva.vim + @if get_md5(file) != "92ef122f7661a8d7137bbe98465c1b3c": + :fetch {fetch = $fetcha} $file + file = ftplugin/README.txt + @if get_md5(file) != "6fc526040d33514956850e8f314427d1": + :fetch {fetch = $fetcha} $file + :mkdir {f} plugin + file = plugin/netrwPlugin.vim + @if get_md5(file) != "5c0a590691301b3f8e4aa70f0354f702": + :fetch {fetch = $fetcha} $file + file = plugin/gzip.vim + @if get_md5(file) != "88a9ecef58f00ddc5775c242c3be525a": + :fetch {fetch = $fetcha} $file + file = plugin/tohtml.vim + @if get_md5(file) != "3a0229858bdf46cbe700e99259c72908": + :fetch {fetch = $fetcha} $file + file = plugin/rrhelper.vim + @if get_md5(file) != "b1300f6a3d34589b3e5e0f11801d3fa5": + :fetch {fetch = $fetcha} $file + file = plugin/matchparen.vim + @if get_md5(file) != "6240025a6335fd51ee25ce626465830f": + :fetch {fetch = $fetcha} $file + file = plugin/vimballPlugin.vim + @if get_md5(file) != "2d7fe10e43bd80a22452103810717d20": + :fetch {fetch = $fetcha} $file + file = plugin/spellfile.vim + @if get_md5(file) != "561f55a478fee8efcce9313fc26c5f90": + :fetch {fetch = $fetcha} $file + file = plugin/tarPlugin.vim + @if get_md5(file) != "991bbf8cbaf7e7e340a50d2cfe476c24": + :fetch {fetch = $fetcha} $file + file = plugin/zipPlugin.vim + @if get_md5(file) != "1793f4475e46c6de0df89dac27031c1a": + :fetch {fetch = $fetcha} $file + file = plugin/getscriptPlugin.vim + @if get_md5(file) != "445ac97e6763f099e62d7dcda1f6fd80": + :fetch {fetch = $fetcha} $file + file = plugin/README.txt + @if get_md5(file) != "e7ac2e87035de9eef781833b24404684": + :fetch {fetch = $fetcha} $file + :mkdir {f} syntax + file = syntax/2html.vim + @if get_md5(file) != "7a48aa0b2989cd59b36c4ca554302c49": + :fetch {fetch = $fetcha} $file + file = syntax/a2ps.vim + @if get_md5(file) != "ddff87c6321e123385bd2ea5f1b62218": + :fetch {fetch = $fetcha} $file + file = syntax/a65.vim + @if get_md5(file) != "c43016510db28b5b7ba647965984c0e9": + :fetch {fetch = $fetcha} $file + file = syntax/aap.vim + @if get_md5(file) != "cbfe4137f536f56f191a41596c2d1d8d": + :fetch {fetch = $fetcha} $file + file = syntax/abap.vim + @if get_md5(file) != "75f2f6a91f87d68c5f38dddec20607ad": + :fetch {fetch = $fetcha} $file + file = syntax/abaqus.vim + @if get_md5(file) != "5a79c37a6e59fb822dfa413172308487": + :fetch {fetch = $fetcha} $file + file = syntax/abc.vim + @if get_md5(file) != "46997f0c6785c6046ace8df370e89386": + :fetch {fetch = $fetcha} $file + file = syntax/abel.vim + @if get_md5(file) != "56cf46a8c357b67c78b9805ab30a06ab": + :fetch {fetch = $fetcha} $file + file = syntax/acedb.vim + @if get_md5(file) != "44aaca85ff91288292d89a758167bfc4": + :fetch {fetch = $fetcha} $file + file = syntax/ada.vim + @if get_md5(file) != "0ed53ae86ee1c93e2c61a566676f8562": + :fetch {fetch = $fetcha} $file + file = syntax/aflex.vim + @if get_md5(file) != "457afed391d230f08d878e79038ca40a": + :fetch {fetch = $fetcha} $file + file = syntax/ahdl.vim + @if get_md5(file) != "439de573ebc2130d97c5f8f8478b58fe": + :fetch {fetch = $fetcha} $file + file = syntax/alsaconf.vim + @if get_md5(file) != "a26b45a89d4089abf9fc05318e7e8bcc": + :fetch {fetch = $fetcha} $file + file = syntax/amiga.vim + @if get_md5(file) != "2f3f2ac34b12def42ee6d117e7d6796c": + :fetch {fetch = $fetcha} $file + file = syntax/aml.vim + @if get_md5(file) != "c90983909f7b6045c7897c49cc4366ab": + :fetch {fetch = $fetcha} $file + file = syntax/ampl.vim + @if get_md5(file) != "abd3db2c9e943c0930b35235484b58fd": + :fetch {fetch = $fetcha} $file + file = syntax/ant.vim + @if get_md5(file) != "9a6dc5f512822901a775b767017d8afa": + :fetch {fetch = $fetcha} $file + file = syntax/antlr.vim + @if get_md5(file) != "7e20587386e8d6079951de0235c7d8b5": + :fetch {fetch = $fetcha} $file + file = syntax/apache.vim + @if get_md5(file) != "1d37288929be8bfc044976a51316d15d": + :fetch {fetch = $fetcha} $file + file = syntax/apachestyle.vim + @if get_md5(file) != "9ac590a5ea107a0d84874920b60d0add": + :fetch {fetch = $fetcha} $file + file = syntax/arch.vim + @if get_md5(file) != "54c591d0da2a51974ed0b8788e609ccb": + :fetch {fetch = $fetcha} $file + file = syntax/art.vim + @if get_md5(file) != "78dd6dccf0b150ffbff39aa6af80e698": + :fetch {fetch = $fetcha} $file + file = syntax/asm.vim + @if get_md5(file) != "dda6c624d218ceb94483ea9ea8f3706f": + :fetch {fetch = $fetcha} $file + file = syntax/asm68k.vim + @if get_md5(file) != "adee2ed801362279f455c89b73f4d817": + :fetch {fetch = $fetcha} $file + file = syntax/asmh8300.vim + @if get_md5(file) != "ec995d67f2a66b46a185d347f86217a4": + :fetch {fetch = $fetcha} $file + file = syntax/asn.vim + @if get_md5(file) != "f84bbd006636184e01e260c6e718c6ca": + :fetch {fetch = $fetcha} $file + file = syntax/aspperl.vim + @if get_md5(file) != "9b91f325f0b8d570b3f0609259bca13d": + :fetch {fetch = $fetcha} $file + file = syntax/aspvbs.vim + @if get_md5(file) != "53503e748c3205308dcd7a5acc3fe2e7": + :fetch {fetch = $fetcha} $file + file = syntax/asterisk.vim + @if get_md5(file) != "bffaefd79f2852e2f45c6381e6c0fb5d": + :fetch {fetch = $fetcha} $file + file = syntax/asteriskvm.vim + @if get_md5(file) != "459b542300f09399b258007bfccaa3ce": + :fetch {fetch = $fetcha} $file + file = syntax/atlas.vim + @if get_md5(file) != "6646a216735b5e139b2162790b3652aa": + :fetch {fetch = $fetcha} $file + file = syntax/autohotkey.vim + @if get_md5(file) != "35b011de4b7911db51bb46a9ec8adf96": + :fetch {fetch = $fetcha} $file + file = syntax/autoit.vim + @if get_md5(file) != "84dd0907f02514ebbdf05ac5f5f75c69": + :fetch {fetch = $fetcha} $file + file = syntax/automake.vim + @if get_md5(file) != "c9669865be9faf156079c3f16dbd171c": + :fetch {fetch = $fetcha} $file + file = syntax/ave.vim + @if get_md5(file) != "0830bf2d8b330b562bd0356e3abeb4c8": + :fetch {fetch = $fetcha} $file + file = syntax/awk.vim + @if get_md5(file) != "a11c766edc203363198253be2fa700a2": + :fetch {fetch = $fetcha} $file + file = syntax/ayacc.vim + @if get_md5(file) != "8757277982f25c082914082f61e56b75": + :fetch {fetch = $fetcha} $file + file = syntax/b.vim + @if get_md5(file) != "23f420ebac2adbe387ec455c969ae155": + :fetch {fetch = $fetcha} $file + file = syntax/baan.vim + @if get_md5(file) != "cb427f5a91589c62ff79a8822136af9a": + :fetch {fetch = $fetcha} $file + file = syntax/basic.vim + @if get_md5(file) != "ecdf771d4f4aa0e9d4e872f15bc50a8b": + :fetch {fetch = $fetcha} $file + file = syntax/bc.vim + @if get_md5(file) != "204d504611c49b2d418d96256aaaf2ee": + :fetch {fetch = $fetcha} $file + file = syntax/bdf.vim + @if get_md5(file) != "1d52d84fd8620809690c84baa3147624": + :fetch {fetch = $fetcha} $file + file = syntax/bib.vim + @if get_md5(file) != "1a5ad682eda561ed8155cbde12af5889": + :fetch {fetch = $fetcha} $file + file = syntax/bindzone.vim + @if get_md5(file) != "8315c9f5da54779f28f1f1351905e702": + :fetch {fetch = $fetcha} $file + file = syntax/blank.vim + @if get_md5(file) != "63003eae380c3cdae2ee18667621201e": + :fetch {fetch = $fetcha} $file + file = syntax/bst.vim + @if get_md5(file) != "f88b48a41652043f487941d14a0bdcfa": + :fetch {fetch = $fetcha} $file + file = syntax/btm.vim + @if get_md5(file) != "834f11b88bfee189abc67a4e7c5a51a0": + :fetch {fetch = $fetcha} $file + file = syntax/bzr.vim + @if get_md5(file) != "a42bba3a9ec94b9ee431fb98ad065470": + :fetch {fetch = $fetcha} $file + file = syntax/calendar.vim + @if get_md5(file) != "d09448ab630be01cc1956bf7d18ce42b": + :fetch {fetch = $fetcha} $file + file = syntax/catalog.vim + @if get_md5(file) != "8694c9cf3960a49023d65b5009cf0c16": + :fetch {fetch = $fetcha} $file + file = syntax/cdl.vim + @if get_md5(file) != "996e479baef608ef4dc5910097f3dab7": + :fetch {fetch = $fetcha} $file + file = syntax/cdrdaoconf.vim + @if get_md5(file) != "673f0c82c9622403d79fcfca7ecd4c57": + :fetch {fetch = $fetcha} $file + file = syntax/cdrtoc.vim + @if get_md5(file) != "4933e1ecebf525cb19abfadd538c0c8b": + :fetch {fetch = $fetcha} $file + file = syntax/cfg.vim + @if get_md5(file) != "90c83aa82ff8f39a3b3725aa8911c808": + :fetch {fetch = $fetcha} $file + file = syntax/ch.vim + @if get_md5(file) != "31cadc1f292f1f9265730089ec300a84": + :fetch {fetch = $fetcha} $file + file = syntax/change.vim + @if get_md5(file) != "07e8f1b13528898401cf52f0bfc8ee87": + :fetch {fetch = $fetcha} $file + file = syntax/changelog.vim + @if get_md5(file) != "40e7e9714d7b7ff0b3b266c9379ec164": + :fetch {fetch = $fetcha} $file + file = syntax/chaskell.vim + @if get_md5(file) != "032dcba4e18461211590239d91a4d79f": + :fetch {fetch = $fetcha} $file + file = syntax/cheetah.vim + @if get_md5(file) != "d485c8a329666d19b1d471ec85adf100": + :fetch {fetch = $fetcha} $file + file = syntax/chill.vim + @if get_md5(file) != "7971cb62b33371d9f32deca3e464499f": + :fetch {fetch = $fetcha} $file + file = syntax/chordpro.vim + @if get_md5(file) != "581e00e16927dedb79f8015c4ea164a4": + :fetch {fetch = $fetcha} $file + file = syntax/cl.vim + @if get_md5(file) != "904725ff7e573e8489900ea904a1ab14": + :fetch {fetch = $fetcha} $file + file = syntax/clean.vim + @if get_md5(file) != "c5bd9db2ac81da4f6d4dfe544b6d8024": + :fetch {fetch = $fetcha} $file + file = syntax/clipper.vim + @if get_md5(file) != "4ebdadd972478cf7df9a50c95cfdfb69": + :fetch {fetch = $fetcha} $file + file = syntax/cmusrc.vim + @if get_md5(file) != "189e64bd26c355dab44a97982b7692fa": + :fetch {fetch = $fetcha} $file + file = syntax/c.vim + @if get_md5(file) != "92a13e2ae89d8b2a8afa0a7a338d1cf3": + :fetch {fetch = $fetcha} $file + file = syntax/cobol.vim + @if get_md5(file) != "a7ab5838d16152bb8f11348bdc85aa47": + :fetch {fetch = $fetcha} $file + file = syntax/coco.vim + @if get_md5(file) != "2173c44ef6b1044da95c78c0c2040495": + :fetch {fetch = $fetcha} $file + file = syntax/colortest.vim + @if get_md5(file) != "3f1e987b5b3ce3a47533356ef650edee": + :fetch {fetch = $fetcha} $file + file = syntax/conf.vim + @if get_md5(file) != "a9881c410f91621ac8dfb9e710fb4c43": + :fetch {fetch = $fetcha} $file + file = syntax/config.vim + @if get_md5(file) != "1dd01d01acbdb911b97a6ea2cc7dd094": + :fetch {fetch = $fetcha} $file + file = syntax/context.vim + @if get_md5(file) != "f4f342af28d62252202c87116339d21a": + :fetch {fetch = $fetcha} $file + file = syntax/cpp.vim + @if get_md5(file) != "2c69584fe40347fe30ed7123eb90a8d7": + :fetch {fetch = $fetcha} $file + file = syntax/crm.vim + @if get_md5(file) != "a11726da54e7d3eec419e3a6942a70a0": + :fetch {fetch = $fetcha} $file + file = syntax/crontab.vim + @if get_md5(file) != "275a2ca1d7a957be456b1fbd45895aca": + :fetch {fetch = $fetcha} $file + file = syntax/cs.vim + @if get_md5(file) != "30cf2ccbc40b8c99080550ef753cd7c4": + :fetch {fetch = $fetcha} $file + file = syntax/csc.vim + @if get_md5(file) != "da0e4096f9a980e8c62057005242be2e": + :fetch {fetch = $fetcha} $file + file = syntax/csh.vim + @if get_md5(file) != "ed19dcdb08c3842e85a8794d8d901b9e": + :fetch {fetch = $fetcha} $file + file = syntax/csp.vim + @if get_md5(file) != "8b4a98f41af72db0bfdae58b079d318b": + :fetch {fetch = $fetcha} $file + file = syntax/css.vim + @if get_md5(file) != "8ecdbb73d70e67b7fb4a2b8a75423516": + :fetch {fetch = $fetcha} $file + file = syntax/cterm.vim + @if get_md5(file) != "8a9cef54249e0c9b5ae0429221480efe": + :fetch {fetch = $fetcha} $file + file = syntax/ctrlh.vim + @if get_md5(file) != "e8f42c20c14c68031670c73b18fa4ddb": + :fetch {fetch = $fetcha} $file + file = syntax/cuda.vim + @if get_md5(file) != "a12e9a9dc7ff69c73de076ea495b70fb": + :fetch {fetch = $fetcha} $file + file = syntax/cupl.vim + @if get_md5(file) != "c0e3940cee2aa20689c847495720ae9d": + :fetch {fetch = $fetcha} $file + file = syntax/cuplsim.vim + @if get_md5(file) != "2e4c658952568556d07224f44e337306": + :fetch {fetch = $fetcha} $file + file = syntax/cvs.vim + @if get_md5(file) != "4147414b91cc873d3baba75903252e33": + :fetch {fetch = $fetcha} $file + file = syntax/cvsrc.vim + @if get_md5(file) != "c952cd8787e55d934f71f313380bc49f": + :fetch {fetch = $fetcha} $file + file = syntax/cweb.vim + @if get_md5(file) != "1e3a582c931fe0030dd4b6915583c36e": + :fetch {fetch = $fetcha} $file + file = syntax/cynlib.vim + @if get_md5(file) != "46acb23371947e50eefd226ad0ec5f1e": + :fetch {fetch = $fetcha} $file + file = syntax/cynpp.vim + @if get_md5(file) != "ce56e58f2689cfffe8b8df320a4a07e2": + :fetch {fetch = $fetcha} $file + file = syntax/cf.vim + @if get_md5(file) != "34023f9a619e96ccdc910b1350d9d1e0": + :fetch {fetch = $fetcha} $file + file = syntax/gitcommit.vim + @if get_md5(file) != "0e5169dee4a2ca56aeabd917e84ae71b": + :fetch {fetch = $fetcha} $file + file = syntax/mysql.vim + @if get_md5(file) != "3244ad5e54970db42e9e2f6894a1e01d": + :fetch {fetch = $fetcha} $file + file = syntax/d.vim + @if get_md5(file) != "d091534a1ec2d555ecbdcf9cc21259a8": + :fetch {fetch = $fetcha} $file + file = syntax/dcd.vim + @if get_md5(file) != "1b98e98785c1f5a195e95a9b689a78d2": + :fetch {fetch = $fetcha} $file + file = syntax/dcl.vim + @if get_md5(file) != "49a63d556b2324eb94d295dc70c8f720": + :fetch {fetch = $fetcha} $file + file = syntax/debchangelog.vim + @if get_md5(file) != "bb5932a4aac73162a419499ec9129d5b": + :fetch {fetch = $fetcha} $file + file = syntax/debcontrol.vim + @if get_md5(file) != "19221347527b3695a6fd8a9fce6c9853": + :fetch {fetch = $fetcha} $file + file = syntax/debsources.vim + @if get_md5(file) != "1f07afc3fe3543f9e4f9f725c9f98e97": + :fetch {fetch = $fetcha} $file + file = syntax/def.vim + @if get_md5(file) != "38753f18f28033731fbc7f33bc149c47": + :fetch {fetch = $fetcha} $file + file = syntax/denyhosts.vim + @if get_md5(file) != "a4a7837d972af83d2105113517044286": + :fetch {fetch = $fetcha} $file + file = syntax/desc.vim + @if get_md5(file) != "a99ce892e1e9d4d9d9e10539c0d7ccc1": + :fetch {fetch = $fetcha} $file + file = syntax/desktop.vim + @if get_md5(file) != "3f38dcfb5897bd6c082b269062fce268": + :fetch {fetch = $fetcha} $file + file = syntax/dictconf.vim + @if get_md5(file) != "1dbeef69a58ce2d15a68da11d1ebd205": + :fetch {fetch = $fetcha} $file + file = syntax/dictdconf.vim + @if get_md5(file) != "5217e733e681d0e4e25b4e3b897931bf": + :fetch {fetch = $fetcha} $file + file = syntax/diff.vim + @if get_md5(file) != "d7526c4ccba7fdaebdf134cc7c9c4011": + :fetch {fetch = $fetcha} $file + file = syntax/dircolors.vim + @if get_md5(file) != "808f2072b69650aed64345acd1fea69b": + :fetch {fetch = $fetcha} $file + file = syntax/diva.vim + @if get_md5(file) != "4a354179acf5c12454b89662e4ee0aea": + :fetch {fetch = $fetcha} $file + file = syntax/django.vim + @if get_md5(file) != "5dfe568dd9b2e5a377dc6af820c7780e": + :fetch {fetch = $fetcha} $file + file = syntax/dns.vim + @if get_md5(file) != "dfa090589fc6cf30cbfa679ce1e57b2a": + :fetch {fetch = $fetcha} $file + file = syntax/docbk.vim + @if get_md5(file) != "b3b55f3f0dfddb9253881078245834cc": + :fetch {fetch = $fetcha} $file + file = syntax/docbksgml.vim + @if get_md5(file) != "cc349b914d0346a1778e6ec2ab0a6b9e": + :fetch {fetch = $fetcha} $file + file = syntax/docbkxml.vim + @if get_md5(file) != "53af9fe8f4ea5a02a02527530e2decf8": + :fetch {fetch = $fetcha} $file + file = syntax/dosbatch.vim + @if get_md5(file) != "8b7bb933208f2a0f25233217e94c11d8": + :fetch {fetch = $fetcha} $file + file = syntax/dosini.vim + @if get_md5(file) != "e45f679e1f473e8f31e054dc3ee12963": + :fetch {fetch = $fetcha} $file + file = syntax/dot.vim + @if get_md5(file) != "b3f3436cde32b9e0d7523da59876a70e": + :fetch {fetch = $fetcha} $file + file = syntax/doxygen.vim + @if get_md5(file) != "b70ac073e48f63401fe63639defba76c": + :fetch {fetch = $fetcha} $file + file = syntax/dracula.vim + @if get_md5(file) != "0b1b567ee97ec2c49bd9b29218c8f954": + :fetch {fetch = $fetcha} $file + file = syntax/dsl.vim + @if get_md5(file) != "53d0ddfa95909458cf09cceba9424626": + :fetch {fetch = $fetcha} $file + file = syntax/dtd.vim + @if get_md5(file) != "87c38d86efe6fc66b9f9030348310a77": + :fetch {fetch = $fetcha} $file + file = syntax/dtml.vim + @if get_md5(file) != "38900f865ffa5a36d3eca82c47ffd858": + :fetch {fetch = $fetcha} $file + file = syntax/dylan.vim + @if get_md5(file) != "c206f514005486421008d76d32066524": + :fetch {fetch = $fetcha} $file + file = syntax/dylanintr.vim + @if get_md5(file) != "39e3e6ec55de86780f4ba45cb32a449b": + :fetch {fetch = $fetcha} $file + file = syntax/dylanlid.vim + @if get_md5(file) != "a62936ff94fb40df468e96a34761332f": + :fetch {fetch = $fetcha} $file + file = syntax/ecd.vim + @if get_md5(file) != "aa5c3f0680f371ed1c92be3b12a1048f": + :fetch {fetch = $fetcha} $file + file = syntax/edif.vim + @if get_md5(file) != "6e204b4578bf56ef489f1c7da1d78de3": + :fetch {fetch = $fetcha} $file + file = syntax/eiffel.vim + @if get_md5(file) != "99e9fc790246d97cdd366fa54bb2232d": + :fetch {fetch = $fetcha} $file + file = syntax/elf.vim + @if get_md5(file) != "b90c646c806713c197306c6bb47477f8": + :fetch {fetch = $fetcha} $file + file = syntax/elinks.vim + @if get_md5(file) != "2076915d8eff13740ebc27d2698bd6b6": + :fetch {fetch = $fetcha} $file + file = syntax/elmfilt.vim + @if get_md5(file) != "2e2964b5d2205182ac76f52811416c5b": + :fetch {fetch = $fetcha} $file + file = syntax/erlang.vim + @if get_md5(file) != "fc3d5a8396db95884cc6b7580cba2dff": + :fetch {fetch = $fetcha} $file + file = syntax/esmtprc.vim + @if get_md5(file) != "1cd10abc892edb9cd2c63c393a12b52f": + :fetch {fetch = $fetcha} $file + file = syntax/esqlc.vim + @if get_md5(file) != "aa5a1152da5ddd2cef565f7d9b3729fa": + :fetch {fetch = $fetcha} $file + file = syntax/esterel.vim + @if get_md5(file) != "17c8f211c9605cd150b80545c43529e2": + :fetch {fetch = $fetcha} $file + file = syntax/eterm.vim + @if get_md5(file) != "003ee2b0d11cccf6629d9f94ddfe7d63": + :fetch {fetch = $fetcha} $file + file = syntax/eviews.vim + @if get_md5(file) != "2ced39136305c8611ae56488a9cf798e": + :fetch {fetch = $fetcha} $file + file = syntax/exim.vim + @if get_md5(file) != "9b258d1e536b70ae4b1271267cc7853a": + :fetch {fetch = $fetcha} $file + file = syntax/expect.vim + @if get_md5(file) != "4df80d7ba58af8bc765d296ad4032a93": + :fetch {fetch = $fetcha} $file + file = syntax/exports.vim + @if get_md5(file) != "feefe65b62e868b8bb62c3a3c3f1c8c9": + :fetch {fetch = $fetcha} $file + file = syntax/fasm.vim + @if get_md5(file) != "6057f930e89c76469da5e83a4659418e": + :fetch {fetch = $fetcha} $file + file = syntax/fdcc.vim + @if get_md5(file) != "52b319aff2705bb9e35f655507c42d77": + :fetch {fetch = $fetcha} $file + file = syntax/fgl.vim + @if get_md5(file) != "7d7a6c6aa565ea78ae40eded9b7b4f0b": + :fetch {fetch = $fetcha} $file + file = syntax/sqlanywhere.vim + @if get_md5(file) != "a16bc8c206914047bb9f098cbe53ceea": + :fetch {fetch = $fetcha} $file + file = syntax/fetchmail.vim + @if get_md5(file) != "17bdf691ccb01350fdc45a74c5d308a6": + :fetch {fetch = $fetcha} $file + file = syntax/flexwiki.vim + @if get_md5(file) != "376f8dff19e484feb6ca0856b64cfa0b": + :fetch {fetch = $fetcha} $file + file = syntax/focexec.vim + @if get_md5(file) != "1706f854d4a0804d999819c536639167": + :fetch {fetch = $fetcha} $file + file = syntax/form.vim + @if get_md5(file) != "546041788d1f041ec585cbb5480f881a": + :fetch {fetch = $fetcha} $file + file = syntax/forth.vim + @if get_md5(file) != "71d364f13fc61c41d1e5bcead9d43c1a": + :fetch {fetch = $fetcha} $file + file = syntax/fortran.vim + @if get_md5(file) != "4062b8d1074e61bda108ab1f15c6f8f1": + :fetch {fetch = $fetcha} $file + file = syntax/foxpro.vim + @if get_md5(file) != "617f48747c6b959d4e44240940b47d70": + :fetch {fetch = $fetcha} $file + file = syntax/framescript.vim + @if get_md5(file) != "6d432bd28dac90e86278a20c19aefa26": + :fetch {fetch = $fetcha} $file + file = syntax/freebasic.vim + @if get_md5(file) != "0f553ea6c8c2b5438662ca471a2c58b3": + :fetch {fetch = $fetcha} $file + file = syntax/fstab.vim + @if get_md5(file) != "556f3c645bd64662b53489c3f7c132b7": + :fetch {fetch = $fetcha} $file + file = syntax/fvwm.vim + @if get_md5(file) != "3840046e7b0d9308f978eb8e530c33c2": + :fetch {fetch = $fetcha} $file + file = syntax/fvwm2m4.vim + @if get_md5(file) != "70007906caf8695fc54cfb002c96f3f1": + :fetch {fetch = $fetcha} $file + file = syntax/gdb.vim + @if get_md5(file) != "548a874aef72820441a68de1fd1f12e5": + :fetch {fetch = $fetcha} $file + file = syntax/gdmo.vim + @if get_md5(file) != "1aad2b7df324da6e305c906d31fdf1e7": + :fetch {fetch = $fetcha} $file + file = syntax/gedcom.vim + @if get_md5(file) != "f7933fea6405f507794d8ee7d9d2ab0a": + :fetch {fetch = $fetcha} $file + file = syntax/gitconfig.vim + @if get_md5(file) != "9aefaefcd01680f34f40ebfb44da54d0": + :fetch {fetch = $fetcha} $file + file = syntax/gitsendemail.vim + @if get_md5(file) != "f695a723e43d2af45b222c34c822e0d6": + :fetch {fetch = $fetcha} $file + file = syntax/gkrellmrc.vim + @if get_md5(file) != "87c8d974457dd278d94f700c61984cd8": + :fetch {fetch = $fetcha} $file + file = syntax/gnuplot.vim + @if get_md5(file) != "43abd932e8a6e4fd78bf1e851999a9ce": + :fetch {fetch = $fetcha} $file + file = syntax/gp.vim + @if get_md5(file) != "337c5e46fead7a47726ed48ce8392dd2": + :fetch {fetch = $fetcha} $file + file = syntax/gpg.vim + @if get_md5(file) != "25728f9cba73d3700d86a8a2e8b50b83": + :fetch {fetch = $fetcha} $file + file = syntax/grads.vim + @if get_md5(file) != "1ca71fe9fa778670cd400bf228859e4e": + :fetch {fetch = $fetcha} $file + file = syntax/gretl.vim + @if get_md5(file) != "39e76d6a4065f39dbb6e7169cdaf130d": + :fetch {fetch = $fetcha} $file + file = syntax/groff.vim + @if get_md5(file) != "93042d949c61b10a8ea1f1453a048e43": + :fetch {fetch = $fetcha} $file + file = syntax/groovy.vim + @if get_md5(file) != "16a19bbd0fd80c4f817cb9e041cdee55": + :fetch {fetch = $fetcha} $file + file = syntax/group.vim + @if get_md5(file) != "395774a1fc5dca047653e944ae356dbb": + :fetch {fetch = $fetcha} $file + file = syntax/grub.vim + @if get_md5(file) != "328dddc9dac84c3a9c4ca72169d3f5fa": + :fetch {fetch = $fetcha} $file + file = syntax/gsp.vim + @if get_md5(file) != "ea0839ea5594865391a927cae3ab9db4": + :fetch {fetch = $fetcha} $file + file = syntax/gtkrc.vim + @if get_md5(file) != "ee01d5416ad1505e97ca8d20fed45250": + :fetch {fetch = $fetcha} $file + file = syntax/hamster.vim + @if get_md5(file) != "1434ba9fe463a668312a49b59e6cbfc3": + :fetch {fetch = $fetcha} $file + file = syntax/haskell.vim + @if get_md5(file) != "e2743f0ad36142b584054885cff3b118": + :fetch {fetch = $fetcha} $file + file = syntax/hb.vim + @if get_md5(file) != "e7c3bd4a883de569567f95441e51e7e9": + :fetch {fetch = $fetcha} $file + file = syntax/help.vim + @if get_md5(file) != "f4541f8d2a4f85855649334fa56ea197": + :fetch {fetch = $fetcha} $file + file = syntax/hercules.vim + @if get_md5(file) != "587d0db0654459b061df0506a613cdc8": + :fetch {fetch = $fetcha} $file + file = syntax/hex.vim + @if get_md5(file) != "29d6192a63502c403db3a426f543172e": + :fetch {fetch = $fetcha} $file + file = syntax/hitest.vim + @if get_md5(file) != "c383b9e738c95ac96972a3517f723df2": + :fetch {fetch = $fetcha} $file + file = syntax/hog.vim + @if get_md5(file) != "ff46831509a1f827a27ee4ef43db66ae": + :fetch {fetch = $fetcha} $file + file = syntax/hostconf.vim + @if get_md5(file) != "7f41f93332259cf1d95f74a37b1818fa": + :fetch {fetch = $fetcha} $file + file = syntax/html.vim + @if get_md5(file) != "d0edaa2f92df84778a7ab6f45a8b4092": + :fetch {fetch = $fetcha} $file + file = syntax/htmlcheetah.vim + @if get_md5(file) != "45b2dffd5f12f7a2e8bf5c1b37971fa5": + :fetch {fetch = $fetcha} $file + file = syntax/htmldjango.vim + @if get_md5(file) != "c182cc9b02d6c0249192e18d2ffd5aba": + :fetch {fetch = $fetcha} $file + file = syntax/htmlm4.vim + @if get_md5(file) != "50b9cdfbb3923c2c22bd645ad45c9467": + :fetch {fetch = $fetcha} $file + file = syntax/htmlos.vim + @if get_md5(file) != "e36c76dbc5a8318e64b20fccb920de1c": + :fetch {fetch = $fetcha} $file + file = syntax/ia64.vim + @if get_md5(file) != "e4b93b437d3b8a41a9966b06a0027647": + :fetch {fetch = $fetcha} $file + file = syntax/ibasic.vim + @if get_md5(file) != "822663a6c1155124c043b571cf8bbee9": + :fetch {fetch = $fetcha} $file + file = syntax/icemenu.vim + @if get_md5(file) != "cbe0893eeaa9fc4621d2505e2dbb5778": + :fetch {fetch = $fetcha} $file + file = syntax/icon.vim + @if get_md5(file) != "587b816037f336f31de4a9c0af722bc9": + :fetch {fetch = $fetcha} $file + file = syntax/idl.vim + @if get_md5(file) != "28a928cc9168606a6f5c8b1e3bfe90ac": + :fetch {fetch = $fetcha} $file + file = syntax/idlang.vim + @if get_md5(file) != "768f95d55e0401928e93f039f1f82699": + :fetch {fetch = $fetcha} $file + file = syntax/iss.vim + @if get_md5(file) != "034c0a3548940f761917beede9244bca": + :fetch {fetch = $fetcha} $file + file = syntax/indent.vim + @if get_md5(file) != "29fa8a6e310578a62860e3c63f1ffa01": + :fetch {fetch = $fetcha} $file + file = syntax/inform.vim + @if get_md5(file) != "c250b6032cc748d28343939d22ecbaf9": + :fetch {fetch = $fetcha} $file + file = syntax/initex.vim + @if get_md5(file) != "e1c992fe643c86bad544a955727f62d3": + :fetch {fetch = $fetcha} $file + file = syntax/initng.vim + @if get_md5(file) != "5f673a8bdc13faad7e5bffc03e1232fc": + :fetch {fetch = $fetcha} $file + file = syntax/inittab.vim + @if get_md5(file) != "eb1b098d4ba71101bf73c91bc7fa5049": + :fetch {fetch = $fetcha} $file + file = syntax/ipfilter.vim + @if get_md5(file) != "113df98e9385e1f5ec94a1fd25e5a159": + :fetch {fetch = $fetcha} $file + file = syntax/ishd.vim + @if get_md5(file) != "74cf4b00f128968a36d1a9694a151717": + :fetch {fetch = $fetcha} $file + file = syntax/ist.vim + @if get_md5(file) != "d3426f7b29042a8605b713f067b1ee07": + :fetch {fetch = $fetcha} $file + file = syntax/jal.vim + @if get_md5(file) != "13991780b9c7684c2e97115cf43bce93": + :fetch {fetch = $fetcha} $file + file = syntax/jam.vim + @if get_md5(file) != "68208e15e906a4f95a9120a5ee82f2e4": + :fetch {fetch = $fetcha} $file + file = syntax/jargon.vim + @if get_md5(file) != "8b83fc29a7e282fa165895b1131bb1ed": + :fetch {fetch = $fetcha} $file + file = syntax/java.vim + @if get_md5(file) != "5b885f4c1b8d755b0c3b6c95c2fe6b61": + :fetch {fetch = $fetcha} $file + file = syntax/javacc.vim + @if get_md5(file) != "7b156ea71037e54fe736b0ae11c00a82": + :fetch {fetch = $fetcha} $file + file = syntax/javascript.vim + @if get_md5(file) != "6a7275ef2849a6aa8dfe32fbd7273afe": + :fetch {fetch = $fetcha} $file + file = syntax/jess.vim + @if get_md5(file) != "e6fc62a61901f6575fd64133cc4f9fb7": + :fetch {fetch = $fetcha} $file + file = syntax/jgraph.vim + @if get_md5(file) != "fa9550e17050dee1e696b4b8da2bfea0": + :fetch {fetch = $fetcha} $file + file = syntax/jproperties.vim + @if get_md5(file) != "c5c69d1bbdeb1211fb7babc95b51f658": + :fetch {fetch = $fetcha} $file + file = syntax/jsp.vim + @if get_md5(file) != "edd8f1f310a3165e99d7ead186b4abf6": + :fetch {fetch = $fetcha} $file + file = syntax/kconfig.vim + @if get_md5(file) != "3e55ec3d6df5537f7943f50baaa8a4ad": + :fetch {fetch = $fetcha} $file + file = syntax/kix.vim + @if get_md5(file) != "85b28bfae6de4cb720fcb1bd46a20579": + :fetch {fetch = $fetcha} $file + file = syntax/kscript.vim + @if get_md5(file) != "2a4c21800b02ec60c0fabcd230039edd": + :fetch {fetch = $fetcha} $file + file = syntax/kwt.vim + @if get_md5(file) != "f31122ebae839b94184d5e4c8b5eea08": + :fetch {fetch = $fetcha} $file + file = syntax/lace.vim + @if get_md5(file) != "eb12bf79f2889be4dbc67b991c549a54": + :fetch {fetch = $fetcha} $file + file = syntax/latte.vim + @if get_md5(file) != "0c4424d49f7c78b4bd7540db5db29e6f": + :fetch {fetch = $fetcha} $file + file = syntax/ld.vim + @if get_md5(file) != "a34646c6962175dc6be1ec0eb809c15d": + :fetch {fetch = $fetcha} $file + file = syntax/ldapconf.vim + @if get_md5(file) != "2155ca9fe7d71bf3a9d46c7ab954b338": + :fetch {fetch = $fetcha} $file + file = syntax/ldif.vim + @if get_md5(file) != "41110873f8ce3e191eae952532e71de2": + :fetch {fetch = $fetcha} $file + file = syntax/lex.vim + @if get_md5(file) != "2730dd11e1e2e86b478ba557802ffdca": + :fetch {fetch = $fetcha} $file + file = syntax/lftp.vim + @if get_md5(file) != "0a5a3f9c80e610f8daf693b635e6a0a7": + :fetch {fetch = $fetcha} $file + file = syntax/lhaskell.vim + @if get_md5(file) != "16075355e92dc01b039ff7086f3e0774": + :fetch {fetch = $fetcha} $file + file = syntax/libao.vim + @if get_md5(file) != "c1fd234daba593be89bf44b489a5fe32": + :fetch {fetch = $fetcha} $file + file = syntax/lifelines.vim + @if get_md5(file) != "f0b9ce6e721a1024cf03590ccc57f5c4": + :fetch {fetch = $fetcha} $file + file = syntax/lilo.vim + @if get_md5(file) != "3f5832956246cb4d88e6b50c8d7514cc": + :fetch {fetch = $fetcha} $file + file = syntax/limits.vim + @if get_md5(file) != "965adf5c5a603bdbb95f0c436a73fbdd": + :fetch {fetch = $fetcha} $file + file = syntax/lisp.vim + @if get_md5(file) != "5a623132b729431d380d270efe8d32ab": + :fetch {fetch = $fetcha} $file + file = syntax/lite.vim + @if get_md5(file) != "78d7d2a1310a259bfeb24b3659eb5c36": + :fetch {fetch = $fetcha} $file + file = syntax/litestep.vim + @if get_md5(file) != "5f7e5d823d499ab02c04b600dfa6d7b6": + :fetch {fetch = $fetcha} $file + file = syntax/loginaccess.vim + @if get_md5(file) != "43f58a0c04eb6860f044fbee0294651e": + :fetch {fetch = $fetcha} $file + file = syntax/logindefs.vim + @if get_md5(file) != "522ce7d6bedff23ce1522c162fe5b5f4": + :fetch {fetch = $fetcha} $file + file = syntax/logtalk.vim + @if get_md5(file) != "9760beeff99aafa2610de8b6c03cb461": + :fetch {fetch = $fetcha} $file + file = syntax/lotos.vim + @if get_md5(file) != "c9f697f6c57b337d70510ae8d7b66920": + :fetch {fetch = $fetcha} $file + file = syntax/lout.vim + @if get_md5(file) != "d5c043a8f9e9af6881dc9666129a8c35": + :fetch {fetch = $fetcha} $file + file = syntax/lpc.vim + @if get_md5(file) != "d9f94289406cd082fd3ed00e02df16fc": + :fetch {fetch = $fetcha} $file + file = syntax/lprolog.vim + @if get_md5(file) != "4d4a3816178066451167360799475daf": + :fetch {fetch = $fetcha} $file + file = syntax/lscript.vim + @if get_md5(file) != "e1267fe550d41c27e475da0f5701521e": + :fetch {fetch = $fetcha} $file + file = syntax/lss.vim + @if get_md5(file) != "fa6979584f20906c68857e834d2f1bc7": + :fetch {fetch = $fetcha} $file + file = syntax/lua.vim + @if get_md5(file) != "3582e98c4324b13e88e8adfa88895aab": + :fetch {fetch = $fetcha} $file + file = syntax/lynx.vim + @if get_md5(file) != "31a01995474c0bc7b3d6d89cf31fc38e": + :fetch {fetch = $fetcha} $file + file = syntax/m4.vim + @if get_md5(file) != "6a76c5afa8d3cc092866b13ff63b4df5": + :fetch {fetch = $fetcha} $file + file = syntax/mailaliases.vim + @if get_md5(file) != "7e0d05c2308a88ae8e5e9bbe2a52102b": + :fetch {fetch = $fetcha} $file + file = syntax/mailcap.vim + @if get_md5(file) != "1447398a60d9a9e11558f7a82a97c3c0": + :fetch {fetch = $fetcha} $file + file = syntax/make.vim + @if get_md5(file) != "3699c2697f838f32f542156521f41e1a": + :fetch {fetch = $fetcha} $file + file = syntax/man.vim + @if get_md5(file) != "138a44fdb698b702deac5c916d5f9683": + :fetch {fetch = $fetcha} $file + file = syntax/manconf.vim + @if get_md5(file) != "7d825384ed7d447142fac632588ae12a": + :fetch {fetch = $fetcha} $file + file = syntax/manual.vim + @if get_md5(file) != "d7c53684cbb81f5fec3a9165ae0ec68c": + :fetch {fetch = $fetcha} $file + file = syntax/maple.vim + @if get_md5(file) != "eb202a39ed862e88f444f5d8ef00f7af": + :fetch {fetch = $fetcha} $file + file = syntax/masm.vim + @if get_md5(file) != "ab6af740288ff4fc96dd62e675eb7b65": + :fetch {fetch = $fetcha} $file + file = syntax/mason.vim + @if get_md5(file) != "10b64ad986e5241ef5a628cfa38b3f1a": + :fetch {fetch = $fetcha} $file + file = syntax/master.vim + @if get_md5(file) != "16a0efb9f55a5e669afd8774ccbdf329": + :fetch {fetch = $fetcha} $file + file = syntax/matlab.vim + @if get_md5(file) != "262f278688382d737cbfdff4d7a146b9": + :fetch {fetch = $fetcha} $file + file = syntax/maxima.vim + @if get_md5(file) != "36f61768c9b588f782f5f1f7e193e1e8": + :fetch {fetch = $fetcha} $file + file = syntax/mel.vim + @if get_md5(file) != "02eb8f9c1e7090871c6c4ce5db285a31": + :fetch {fetch = $fetcha} $file + file = syntax/messages.vim + @if get_md5(file) != "a643dd6f3ce81c82a5a4322a6df363cb": + :fetch {fetch = $fetcha} $file + file = syntax/mf.vim + @if get_md5(file) != "8fa39a7d77d5cee375a6b1c4613ba707": + :fetch {fetch = $fetcha} $file + file = syntax/mgl.vim + @if get_md5(file) != "496e018001a39094d9c6a46ba25d8fa5": + :fetch {fetch = $fetcha} $file + file = syntax/mgp.vim + @if get_md5(file) != "50a38839232eb7cedd067be0b0b9034d": + :fetch {fetch = $fetcha} $file + file = syntax/mib.vim + @if get_md5(file) != "d52d81d2fc8ac52a9b859cc013f5273f": + :fetch {fetch = $fetcha} $file + file = syntax/mma.vim + @if get_md5(file) != "c6aa1577f5cc6099ee831b9a39c65e89": + :fetch {fetch = $fetcha} $file + file = syntax/mmix.vim + @if get_md5(file) != "bb599f7ab82024d426f7a6839b0b314a": + :fetch {fetch = $fetcha} $file + file = syntax/modconf.vim + @if get_md5(file) != "c7b3359a36ce32dcf30205dcc563424a": + :fetch {fetch = $fetcha} $file + file = syntax/model.vim + @if get_md5(file) != "078b77c605874d9d820c84313411f815": + :fetch {fetch = $fetcha} $file + file = syntax/ruby.vim + @if get_md5(file) != "2f396d4d3d1d5f2616a2fe6443dda8ae": + :fetch {fetch = $fetcha} $file + file = syntax/sh.vim + @if get_md5(file) != "119d2a59888e40e883d2869cc1c917fa": + :fetch {fetch = $fetcha} $file + file = syntax/netrw.vim + @if get_md5(file) != "4360df8913f086dcdde1b70dec852e9e": + :fetch {fetch = $fetcha} $file + file = syntax/modsim3.vim + @if get_md5(file) != "4b7f75d6422fdbc22a385e901d70f3b2": + :fetch {fetch = $fetcha} $file + file = syntax/modula2.vim + @if get_md5(file) != "2155d9c980e8b680d71648ff36550d1f": + :fetch {fetch = $fetcha} $file + file = syntax/modula3.vim + @if get_md5(file) != "9885cdccf3f6c56b429c7bb85a8c2f90": + :fetch {fetch = $fetcha} $file + file = syntax/monk.vim + @if get_md5(file) != "88441abbdfb73be8796a2f79ba3e4fa4": + :fetch {fetch = $fetcha} $file + file = syntax/moo.vim + @if get_md5(file) != "a728c3929e46db0bebd485de6c0c2bae": + :fetch {fetch = $fetcha} $file + file = syntax/mp.vim + @if get_md5(file) != "6556fc94535022a82293ccad8e33d958": + :fetch {fetch = $fetcha} $file + file = syntax/mplayerconf.vim + @if get_md5(file) != "1ce867c9fea16de28ad50ebc87ed8744": + :fetch {fetch = $fetcha} $file + file = syntax/mrxvtrc.vim + @if get_md5(file) != "ce3d7be94314a38f2cdbc027b88479df": + :fetch {fetch = $fetcha} $file + file = syntax/msidl.vim + @if get_md5(file) != "eb037e35662ac8ccabcd078af3af66ec": + :fetch {fetch = $fetcha} $file + file = syntax/msql.vim + @if get_md5(file) != "b59808c0ffe85ceede71926e261e13a4": + :fetch {fetch = $fetcha} $file + file = syntax/mupad.vim + @if get_md5(file) != "4f1033045dd1c4a77da9fc92e50e6d81": + :fetch {fetch = $fetcha} $file + file = syntax/mush.vim + @if get_md5(file) != "856f3ef70678390fbba1f270ac31b1f6": + :fetch {fetch = $fetcha} $file + file = syntax/vim.vim + @if get_md5(file) != "d796325dfe65b45401a8598a6f8b5d45": + :fetch {fetch = $fetcha} $file + file = syntax/reva.vim + @if get_md5(file) != "54affd1b520c92c15db10abeeadfde13": + :fetch {fetch = $fetcha} $file + file = syntax/named.vim + @if get_md5(file) != "db537b1dc419c15ab27ae826b088d572": + :fetch {fetch = $fetcha} $file + file = syntax/nanorc.vim + @if get_md5(file) != "f5cdae7b9ef486bb3ce788ee518bf7c2": + :fetch {fetch = $fetcha} $file + file = syntax/nasm.vim + @if get_md5(file) != "903c63b48398972fc5eac72bcd8a09a9": + :fetch {fetch = $fetcha} $file + file = syntax/nastran.vim + @if get_md5(file) != "2cf138330cd480f27e13f62fa8dd5677": + :fetch {fetch = $fetcha} $file + file = syntax/natural.vim + @if get_md5(file) != "9ee5ca73ea6a5cedd8d7b723978dee2c": + :fetch {fetch = $fetcha} $file + file = syntax/ncf.vim + @if get_md5(file) != "6d29c18b9bf8a76f7a9173afef13fd14": + :fetch {fetch = $fetcha} $file + file = syntax/netrc.vim + @if get_md5(file) != "e282ece4a77bfae75ea14babe801e226": + :fetch {fetch = $fetcha} $file + file = syntax/mail.vim + @if get_md5(file) != "2ba9892f61ae0b92ff4ba0bfc658f021": + :fetch {fetch = $fetcha} $file + file = syntax/nosyntax.vim + @if get_md5(file) != "fc6be3f145a3bc91e1edff782c5ca67a": + :fetch {fetch = $fetcha} $file + file = syntax/nqc.vim + @if get_md5(file) != "d9e40c1ade320524f6aefc8cd08ebc67": + :fetch {fetch = $fetcha} $file + file = syntax/nroff.vim + @if get_md5(file) != "31ae2c55bd44599fab4fd7c192a7bb1c": + :fetch {fetch = $fetcha} $file + file = syntax/nsis.vim + @if get_md5(file) != "225ea65438625f2126c8c6d70cbc7284": + :fetch {fetch = $fetcha} $file + file = syntax/objc.vim + @if get_md5(file) != "3317ff943127918e400cd2925e570844": + :fetch {fetch = $fetcha} $file + file = syntax/objcpp.vim + @if get_md5(file) != "cc19bbb424fc41676013743c4d8068c9": + :fetch {fetch = $fetcha} $file + file = syntax/ocaml.vim + @if get_md5(file) != "315386eab102afae245a3e2aa5801b0b": + :fetch {fetch = $fetcha} $file + file = syntax/occam.vim + @if get_md5(file) != "48dcc61d82237f02a7ffe33d7f672403": + :fetch {fetch = $fetcha} $file + file = syntax/omnimark.vim + @if get_md5(file) != "a8cbe7d43b3c6202db004861bc70e7bb": + :fetch {fetch = $fetcha} $file + file = syntax/openroad.vim + @if get_md5(file) != "9c628a9dcfc8f0746e9c1178f70e8216": + :fetch {fetch = $fetcha} $file + file = syntax/opl.vim + @if get_md5(file) != "7a2c9b3c804c7b1dda95b6a9be3b0526": + :fetch {fetch = $fetcha} $file + file = syntax/ora.vim + @if get_md5(file) != "0933ac4c4e47d25579169ab785c1b5a7": + :fetch {fetch = $fetcha} $file + file = syntax/pamconf.vim + @if get_md5(file) != "dbc71d50bb45e95611502d8110aa5df6": + :fetch {fetch = $fetcha} $file + file = syntax/papp.vim + @if get_md5(file) != "89352ee4cca50fba8e41a8c8cd0a5658": + :fetch {fetch = $fetcha} $file + file = syntax/pascal.vim + @if get_md5(file) != "955c96165c689e00c209fb5d50adb3e2": + :fetch {fetch = $fetcha} $file + file = syntax/passwd.vim + @if get_md5(file) != "6a7a4e02af24a9b8a2a9b1bed8bad2e4": + :fetch {fetch = $fetcha} $file + file = syntax/pcap.vim + @if get_md5(file) != "ac964eac321ca2406305552b363a93b6": + :fetch {fetch = $fetcha} $file + file = syntax/pccts.vim + @if get_md5(file) != "8d632a440a0da259f6159f074b162ac8": + :fetch {fetch = $fetcha} $file + file = syntax/perl.vim + @if get_md5(file) != "3b3db8ce28d0479890756753826a936b": + :fetch {fetch = $fetcha} $file + file = syntax/pf.vim + @if get_md5(file) != "585d8ebafd048391977e0a0f0c0c1faf": + :fetch {fetch = $fetcha} $file + file = syntax/pfmain.vim + @if get_md5(file) != "d49e7df26449e12ae3a7bda8a6a9e2f1": + :fetch {fetch = $fetcha} $file + file = syntax/php.vim + @if get_md5(file) != "2e72fba8df709d7ff4723c261ae93fa0": + :fetch {fetch = $fetcha} $file + file = syntax/phtml.vim + @if get_md5(file) != "a829cd077eab3afec7c5462a1c940fdd": + :fetch {fetch = $fetcha} $file + file = syntax/pic.vim + @if get_md5(file) != "fea4bca0269578cc42e7b8f7af60e39d": + :fetch {fetch = $fetcha} $file + file = syntax/pike.vim + @if get_md5(file) != "2105a4de3b971eca2de440af9adbb3c9": + :fetch {fetch = $fetcha} $file + file = syntax/pilrc.vim + @if get_md5(file) != "b9a86729bd23f24dd6ef8649f9e36674": + :fetch {fetch = $fetcha} $file + file = syntax/pine.vim + @if get_md5(file) != "565fac1a20a986fbedbb617aada8ed22": + :fetch {fetch = $fetcha} $file + file = syntax/pinfo.vim + @if get_md5(file) != "f863d703e1ea8f33eed9ca505b33188f": + :fetch {fetch = $fetcha} $file + file = syntax/plaintex.vim + @if get_md5(file) != "8198585e3e4942a6705fabb1e8b887d6": + :fetch {fetch = $fetcha} $file + file = syntax/plm.vim + @if get_md5(file) != "562408d27defcb7eda27525313c3777c": + :fetch {fetch = $fetcha} $file + file = syntax/plp.vim + @if get_md5(file) != "100c166951a4e68c93801203e3135f1a": + :fetch {fetch = $fetcha} $file + file = syntax/plsql.vim + @if get_md5(file) != "4cf923deae5675d13839756bdfdbacfd": + :fetch {fetch = $fetcha} $file + file = syntax/po.vim + @if get_md5(file) != "d459dbfc7064a38d1d0d81f66bdc1d53": + :fetch {fetch = $fetcha} $file + file = syntax/pod.vim + @if get_md5(file) != "f733d74963addab4277964e20dc9d3ec": + :fetch {fetch = $fetcha} $file + file = syntax/postscr.vim + @if get_md5(file) != "c682ac5b2ae8587e61395f5c819ca2b4": + :fetch {fetch = $fetcha} $file + file = syntax/pov.vim + @if get_md5(file) != "ab326987d9dbdca695e6cf18d13de382": + :fetch {fetch = $fetcha} $file + file = syntax/povini.vim + @if get_md5(file) != "74ed321c85242022c392adef22a37a58": + :fetch {fetch = $fetcha} $file + file = syntax/ppd.vim + @if get_md5(file) != "a22337344a1d8721dcd2f8e2dbfb0381": + :fetch {fetch = $fetcha} $file + file = syntax/ppwiz.vim + @if get_md5(file) != "b958066ada4b37afcba2ce2a2c1e05be": + :fetch {fetch = $fetcha} $file + file = syntax/prescribe.vim + @if get_md5(file) != "851fa40d0a2f8cde6eaa526e0607e8ab": + :fetch {fetch = $fetcha} $file + file = syntax/privoxy.vim + @if get_md5(file) != "80f93807dae85bfe75530e415784d2c5": + :fetch {fetch = $fetcha} $file + file = syntax/procmail.vim + @if get_md5(file) != "a7b494437b5edd3bf39cf6ce88f7a2ef": + :fetch {fetch = $fetcha} $file + file = syntax/progress.vim + @if get_md5(file) != "cc393659f8a2d8ffb123de903c1338f8": + :fetch {fetch = $fetcha} $file + file = syntax/prolog.vim + @if get_md5(file) != "12e3d16bf4da47c1e95613662e703fd7": + :fetch {fetch = $fetcha} $file + file = syntax/promela.vim + @if get_md5(file) != "3297f66f0c8c83f50967699a7dce27d2": + :fetch {fetch = $fetcha} $file + file = syntax/protocols.vim + @if get_md5(file) != "d2738a692d797d9d687e1f7a87ef609e": + :fetch {fetch = $fetcha} $file + file = syntax/psf.vim + @if get_md5(file) != "61d4f2e1bb4cc7af83c8eb04db2d8c42": + :fetch {fetch = $fetcha} $file + file = syntax/ptcap.vim + @if get_md5(file) != "5d9f0c0666a1ccb5e40c9ddfcf21f71e": + :fetch {fetch = $fetcha} $file + file = syntax/purifylog.vim + @if get_md5(file) != "f124f36728d781d9a3662d66456d8f56": + :fetch {fetch = $fetcha} $file + file = syntax/pyrex.vim + @if get_md5(file) != "e596e3877b4e91330c02c5c508652646": + :fetch {fetch = $fetcha} $file + file = syntax/python.vim + @if get_md5(file) != "5ab59e28200b2cc53a29b96fccb77efe": + :fetch {fetch = $fetcha} $file + file = syntax/qf.vim + @if get_md5(file) != "63f360888de043bbef9c81b876e11ff6": + :fetch {fetch = $fetcha} $file + file = syntax/quake.vim + @if get_md5(file) != "f1e728f33a94333fe73551b164985bef": + :fetch {fetch = $fetcha} $file + file = syntax/r.vim + @if get_md5(file) != "784563315f94c05082067f7b7d9badb6": + :fetch {fetch = $fetcha} $file + file = syntax/racc.vim + @if get_md5(file) != "1972068060b62b315cd107f560515edf": + :fetch {fetch = $fetcha} $file + file = syntax/radiance.vim + @if get_md5(file) != "22748970139f2f252afa406ca88a40fb": + :fetch {fetch = $fetcha} $file + file = syntax/ratpoison.vim + @if get_md5(file) != "b2bfd18132319b680416bd06244f197d": + :fetch {fetch = $fetcha} $file + file = syntax/rc.vim + @if get_md5(file) != "f2aa5129ba5043432a74764c7e29bd00": + :fetch {fetch = $fetcha} $file + file = syntax/rcs.vim + @if get_md5(file) != "253e8531ec4026e8c06db0351e79d7d1": + :fetch {fetch = $fetcha} $file + file = syntax/rcslog.vim + @if get_md5(file) != "293eefadb6c84dda708e2b95593b7b96": + :fetch {fetch = $fetcha} $file + file = syntax/readline.vim + @if get_md5(file) != "b696ea3971bd8d78ae6538ef98b8d4ab": + :fetch {fetch = $fetcha} $file + file = syntax/rebol.vim + @if get_md5(file) != "0208e88b45a03efc03efa99716d17bb4": + :fetch {fetch = $fetcha} $file + file = syntax/registry.vim + @if get_md5(file) != "7482e7df9ebcdb9534e635eab20f1a1f": + :fetch {fetch = $fetcha} $file + file = syntax/remind.vim + @if get_md5(file) != "4bcb339ffe788300571468a4af7fdc93": + :fetch {fetch = $fetcha} $file + file = syntax/resolv.vim + @if get_md5(file) != "a6ef85dd1c051a79c37a099c161d17cc": + :fetch {fetch = $fetcha} $file + file = syntax/rhelp.vim + @if get_md5(file) != "b404c50174d2ee8c14d594646773882d": + :fetch {fetch = $fetcha} $file + file = syntax/rib.vim + @if get_md5(file) != "1232278f1ae2257ff3d8753e3f2db574": + :fetch {fetch = $fetcha} $file + file = syntax/rnc.vim + @if get_md5(file) != "214da384b3652bc10121506da3ca2bc0": + :fetch {fetch = $fetcha} $file + file = syntax/rnoweb.vim + @if get_md5(file) != "d60e9a29e186b4173eb87ade5622df59": + :fetch {fetch = $fetcha} $file + file = syntax/robots.vim + @if get_md5(file) != "77b9f652605d3de6b09173fc0fe5dd45": + :fetch {fetch = $fetcha} $file + file = syntax/rpcgen.vim + @if get_md5(file) != "86e87f1f842d84a35658b64b985324fd": + :fetch {fetch = $fetcha} $file + file = syntax/rpl.vim + @if get_md5(file) != "28ec817128176dbe3c5d3b157499224c": + :fetch {fetch = $fetcha} $file + file = syntax/rst.vim + @if get_md5(file) != "4132b2c295bdb042e0b27365c9f254d0": + :fetch {fetch = $fetcha} $file + file = syntax/rtf.vim + @if get_md5(file) != "df1969891699e4dcb9f36402f981acd9": + :fetch {fetch = $fetcha} $file + file = syntax/samba.vim + @if get_md5(file) != "d2841433fde5a1b85b51db1275090d74": + :fetch {fetch = $fetcha} $file + file = syntax/sas.vim + @if get_md5(file) != "6a8048a15ab921a0f1a5f087a82663d6": + :fetch {fetch = $fetcha} $file + file = syntax/sather.vim + @if get_md5(file) != "5d90a4daa42efa99eeec7770924a9a3a": + :fetch {fetch = $fetcha} $file + file = syntax/scheme.vim + @if get_md5(file) != "12b9d23a00d28efca342fd0dc4476392": + :fetch {fetch = $fetcha} $file + file = syntax/scilab.vim + @if get_md5(file) != "9a639daa9d3de8d78349af09115d94e5": + :fetch {fetch = $fetcha} $file + file = syntax/screen.vim + @if get_md5(file) != "73b380e73882dc4b8bbfc527b8c4c9a1": + :fetch {fetch = $fetcha} $file + file = syntax/sd.vim + @if get_md5(file) != "00ce7c368ac23444dd29c066c2f9499e": + :fetch {fetch = $fetcha} $file + file = syntax/sdl.vim + @if get_md5(file) != "8aad0ca70c97200a77732ed90c6c5281": + :fetch {fetch = $fetcha} $file + file = syntax/sed.vim + @if get_md5(file) != "ea092330610b916eec1907c93544f5ca": + :fetch {fetch = $fetcha} $file + file = syntax/sendpr.vim + @if get_md5(file) != "158f320755a0a9a2316ee8d6c6469719": + :fetch {fetch = $fetcha} $file + file = syntax/sensors.vim + @if get_md5(file) != "5f49c1f3aac93221d43c7457b358e91c": + :fetch {fetch = $fetcha} $file + file = syntax/services.vim + @if get_md5(file) != "0216c0cad51fafa0506231d63150a78e": + :fetch {fetch = $fetcha} $file + file = syntax/setserial.vim + @if get_md5(file) != "256f87a156713ff3e549b067123f5c9d": + :fetch {fetch = $fetcha} $file + file = syntax/sgml.vim + @if get_md5(file) != "2a6238931020e041ecc66ce0652d4272": + :fetch {fetch = $fetcha} $file + file = syntax/sgmldecl.vim + @if get_md5(file) != "a7d9083dd546ea136b96f1004e266e2c": + :fetch {fetch = $fetcha} $file + file = syntax/sgmllnx.vim + @if get_md5(file) != "5030e3918d2f008c11e92df47b8695de": + :fetch {fetch = $fetcha} $file + file = syntax/sicad.vim + @if get_md5(file) != "b019fe9a009c1279c9580dfa5990aa73": + :fetch {fetch = $fetcha} $file + file = syntax/sieve.vim + @if get_md5(file) != "8e2fbd044808aeb361273c424ef2788d": + :fetch {fetch = $fetcha} $file + file = syntax/simula.vim + @if get_md5(file) != "0249c4ab253ac2f63ee500c74669da2d": + :fetch {fetch = $fetcha} $file + file = syntax/sinda.vim + @if get_md5(file) != "7a6bcf9d5830d4d2d0ca292f5b3ce102": + :fetch {fetch = $fetcha} $file + file = syntax/sindacmp.vim + @if get_md5(file) != "82cb5787104d4c6d85aaacf8a9d30b23": + :fetch {fetch = $fetcha} $file + file = syntax/sindaout.vim + @if get_md5(file) != "598e5e80da9583ba7e87371fce165c49": + :fetch {fetch = $fetcha} $file + file = syntax/sisu.vim + @if get_md5(file) != "cb6f6d54ccd9d8272de812741776d696": + :fetch {fetch = $fetcha} $file + file = syntax/skill.vim + @if get_md5(file) != "3a1cd22477ccb516459f85e65ba5634d": + :fetch {fetch = $fetcha} $file + file = syntax/sl.vim + @if get_md5(file) != "833e3f39a4b97f08d1ef642a6aa689c7": + :fetch {fetch = $fetcha} $file + file = syntax/slang.vim + @if get_md5(file) != "8350fc30e85c24d39c6c33e4889e41dd": + :fetch {fetch = $fetcha} $file + file = syntax/slice.vim + @if get_md5(file) != "4921a8c37151a48bb8a21eb58ee52e92": + :fetch {fetch = $fetcha} $file + file = syntax/slpconf.vim + @if get_md5(file) != "433ffa3e22f5ab253086692f1dc02720": + :fetch {fetch = $fetcha} $file + file = syntax/conaryrecipe.vim + @if get_md5(file) != "a1af6baaa5eb95ccbe0e5be60747ae06": + :fetch {fetch = $fetcha} $file + file = syntax/muttrc.vim + @if get_md5(file) != "ae093f28416e786b199b191c6c2e1e64": + :fetch {fetch = $fetcha} $file + file = syntax/slpreg.vim + @if get_md5(file) != "ebb41f3e9db3d9b52116f0d87a8b49cf": + :fetch {fetch = $fetcha} $file + file = syntax/slpspi.vim + @if get_md5(file) != "a0cc4496eaa1ec2ffa31eeaf3e1b1f92": + :fetch {fetch = $fetcha} $file + file = syntax/slrnrc.vim + @if get_md5(file) != "46c52921e8b81cb500658375e5701c3e": + :fetch {fetch = $fetcha} $file + file = syntax/slrnsc.vim + @if get_md5(file) != "8706ee6f94c78b1584a01de6d97f8d54": + :fetch {fetch = $fetcha} $file + file = syntax/sm.vim + @if get_md5(file) != "22c081936dfce8de5f49e5c6d3edfead": + :fetch {fetch = $fetcha} $file + file = syntax/smarty.vim + @if get_md5(file) != "e09a8192ea2ac07d210272f374123535": + :fetch {fetch = $fetcha} $file + file = syntax/smcl.vim + @if get_md5(file) != "ec5dde257dced3dd37b8ab8e28ae7511": + :fetch {fetch = $fetcha} $file + file = syntax/smil.vim + @if get_md5(file) != "d6fdd09c208564303744bc5eb6bd597f": + :fetch {fetch = $fetcha} $file + file = syntax/smith.vim + @if get_md5(file) != "883b3cc46ae9c3fe841b2602d478ad9d": + :fetch {fetch = $fetcha} $file + file = syntax/sml.vim + @if get_md5(file) != "35960c59cc24012e63600cd628d76911": + :fetch {fetch = $fetcha} $file + file = syntax/snnsnet.vim + @if get_md5(file) != "3f3a9a2b237949d249421c1eb00d1570": + :fetch {fetch = $fetcha} $file + file = syntax/snnspat.vim + @if get_md5(file) != "d55257950170189349135e29ec68c1e1": + :fetch {fetch = $fetcha} $file + file = syntax/snnsres.vim + @if get_md5(file) != "5a980a36850bad480de07f027a44cc3e": + :fetch {fetch = $fetcha} $file + file = syntax/snobol4.vim + @if get_md5(file) != "ed49dae48c02dfcb1c336d5d6700c298": + :fetch {fetch = $fetcha} $file + file = syntax/spec.vim + @if get_md5(file) != "0a9593354d68f3f37ef6122b082fa8b0": + :fetch {fetch = $fetcha} $file + file = syntax/specman.vim + @if get_md5(file) != "135fc4a11f0159b17f2240c20a696c29": + :fetch {fetch = $fetcha} $file + file = syntax/spice.vim + @if get_md5(file) != "2dddfc3be1c9b3624c3bba21f30dc950": + :fetch {fetch = $fetcha} $file + file = syntax/splint.vim + @if get_md5(file) != "7d87eb4d6e6b6df95a19da6a7f72afed": + :fetch {fetch = $fetcha} $file + file = syntax/spup.vim + @if get_md5(file) != "9f70a9b530403d9d407957e698c92eb0": + :fetch {fetch = $fetcha} $file + file = syntax/spyce.vim + @if get_md5(file) != "95ae2e0fb4ae5dc70da99ea8603ba23a": + :fetch {fetch = $fetcha} $file + file = syntax/sql.vim + @if get_md5(file) != "e9b6268a4588757a4414a427717b3e6c": + :fetch {fetch = $fetcha} $file + file = syntax/sqlforms.vim + @if get_md5(file) != "26f140105af1454d67aaa13839dac8a7": + :fetch {fetch = $fetcha} $file + file = syntax/sqlinformix.vim + @if get_md5(file) != "8304e0e156f52ebbc4981b1a3f989f5e": + :fetch {fetch = $fetcha} $file + file = syntax/cmake.vim + @if get_md5(file) != "cebc6f7e58c7b2b3fa407de26ed4039a": + :fetch {fetch = $fetcha} $file + file = syntax/yacc.vim + @if get_md5(file) != "49926ae1ac02a71066f82131466ecd15": + :fetch {fetch = $fetcha} $file + file = syntax/lsl.vim + @if get_md5(file) != "430c9f2b07f42730599f19c9cb441a26": + :fetch {fetch = $fetcha} $file + file = syntax/sqlj.vim + @if get_md5(file) != "b573879b8c6fb5bf59391100d5fbd63d": + :fetch {fetch = $fetcha} $file + file = syntax/sqloracle.vim + @if get_md5(file) != "dfeaafcf70b129c0771001d46c58b424": + :fetch {fetch = $fetcha} $file + file = syntax/sqr.vim + @if get_md5(file) != "a61996611d5b89ec4fab0f640dd70e8e": + :fetch {fetch = $fetcha} $file + file = syntax/squid.vim + @if get_md5(file) != "83f860f8d58f682453726898f3b4aa17": + :fetch {fetch = $fetcha} $file + file = syntax/sshconfig.vim + @if get_md5(file) != "175b387c3096b48c5758e458fb3800e5": + :fetch {fetch = $fetcha} $file + file = syntax/sshdconfig.vim + @if get_md5(file) != "e2166ca460b58e55120ed37608da620c": + :fetch {fetch = $fetcha} $file + file = syntax/st.vim + @if get_md5(file) != "63e4806added1dec286a361bf044006e": + :fetch {fetch = $fetcha} $file + file = syntax/stata.vim + @if get_md5(file) != "82360bc963ee74302ee1316facc0634c": + :fetch {fetch = $fetcha} $file + file = syntax/stp.vim + @if get_md5(file) != "1f5d0cbd3d83c4c523be283c0d3e888a": + :fetch {fetch = $fetcha} $file + file = syntax/strace.vim + @if get_md5(file) != "65dd53bd2a99abfc594c033aad21d536": + :fetch {fetch = $fetcha} $file + file = syntax/sudoers.vim + @if get_md5(file) != "2a4ba56731f12636c98e729678b49aae": + :fetch {fetch = $fetcha} $file + file = syntax/svn.vim + @if get_md5(file) != "0800c1f63989f4eb0076d730223ad9db": + :fetch {fetch = $fetcha} $file + file = syntax/syncolor.vim + @if get_md5(file) != "41f85bcdea0bc2b92d668c13ac887f04": + :fetch {fetch = $fetcha} $file + file = syntax/synload.vim + @if get_md5(file) != "f7703d6a07b474137cfe145997f3a04c": + :fetch {fetch = $fetcha} $file + file = syntax/syntax.vim + @if get_md5(file) != "1ae49a37e6768a55f260beb1fc6e73ab": + :fetch {fetch = $fetcha} $file + file = syntax/sysctl.vim + @if get_md5(file) != "1bef138bae4a06f7f61f1287632014fa": + :fetch {fetch = $fetcha} $file + file = syntax/tads.vim + @if get_md5(file) != "6bcc148f4a44e05695d25c114a0fa095": + :fetch {fetch = $fetcha} $file + file = syntax/tags.vim + @if get_md5(file) != "724b2d52a4ca4d953cbbc3eac343efe9": + :fetch {fetch = $fetcha} $file + file = syntax/tak.vim + @if get_md5(file) != "1eb395cb0e07b3204a00ea798bb417e4": + :fetch {fetch = $fetcha} $file + file = syntax/takcmp.vim + @if get_md5(file) != "e1f647e5568ec422075ba49c972ff6db": + :fetch {fetch = $fetcha} $file + file = syntax/takout.vim + @if get_md5(file) != "5a10e2f86f0d576f95edbfbb2770bcca": + :fetch {fetch = $fetcha} $file + file = syntax/tar.vim + @if get_md5(file) != "ebf97dfa6cfcf843861c5210d9cf8ae2": + :fetch {fetch = $fetcha} $file + file = syntax/tasm.vim + @if get_md5(file) != "c1b85bb3cf68acfd1bddf910718d6ed9": + :fetch {fetch = $fetcha} $file + file = syntax/tcl.vim + @if get_md5(file) != "5619eaf217eae961f2eb99af43e6a69c": + :fetch {fetch = $fetcha} $file + file = syntax/tcsh.vim + @if get_md5(file) != "c5102a15d58d6ab45ee5fa93acf5e4bd": + :fetch {fetch = $fetcha} $file + file = syntax/terminfo.vim + @if get_md5(file) != "62e0d9824d9bf5d7bb389059552754f9": + :fetch {fetch = $fetcha} $file + file = syntax/tex.vim + @if get_md5(file) != "7d80637bd778c9737bcf2d6fae0c4fc9": + :fetch {fetch = $fetcha} $file + file = syntax/texinfo.vim + @if get_md5(file) != "32778e16b58546ea481a9f06da7b897c": + :fetch {fetch = $fetcha} $file + file = syntax/texmf.vim + @if get_md5(file) != "ced07df283f9c4be6c28710bb0507e37": + :fetch {fetch = $fetcha} $file + file = syntax/tf.vim + @if get_md5(file) != "b9cc79a85919b55be881263344578cfb": + :fetch {fetch = $fetcha} $file + file = syntax/tidy.vim + @if get_md5(file) != "aca68f785d80b60310d48741df04eb03": + :fetch {fetch = $fetcha} $file + file = syntax/tilde.vim + @if get_md5(file) != "9166afb69e5711076750c9fad5f41db0": + :fetch {fetch = $fetcha} $file + file = syntax/tli.vim + @if get_md5(file) != "e90590b9a82d5e8275191e33aa08804c": + :fetch {fetch = $fetcha} $file + file = syntax/pdf.vim + @if get_md5(file) != "135fc19d6523fd01b9d8b322f531307f": + :fetch {fetch = $fetcha} $file + file = syntax/eruby.vim + @if get_md5(file) != "6f071a4fbd1c58140e54d31b201a2983": + :fetch {fetch = $fetcha} $file + file = syntax/tpp.vim + @if get_md5(file) != "9dfa4d9b56d142b14aea26a376ac197c": + :fetch {fetch = $fetcha} $file + file = syntax/trasys.vim + @if get_md5(file) != "60f2870c5a0c6ba5bf305eb607a8cf90": + :fetch {fetch = $fetcha} $file + file = syntax/trustees.vim + @if get_md5(file) != "2ed0081f5de26f23ee669685ad61fa3f": + :fetch {fetch = $fetcha} $file + file = syntax/tsalt.vim + @if get_md5(file) != "64ba4410ea64531106485a42a64af855": + :fetch {fetch = $fetcha} $file + file = syntax/tsscl.vim + @if get_md5(file) != "c63cf7695e0fc4f06a405c127b81af24": + :fetch {fetch = $fetcha} $file + file = syntax/tssgm.vim + @if get_md5(file) != "4410fb91cc5528386f1d940f1c2914ec": + :fetch {fetch = $fetcha} $file + file = syntax/tssop.vim + @if get_md5(file) != "e7b51f7e7b9e33f041dfc2e9e1e0ecb9": + :fetch {fetch = $fetcha} $file + file = syntax/uc.vim + @if get_md5(file) != "28edeed64bb7ea02eb1890a806d1e96a": + :fetch {fetch = $fetcha} $file + file = syntax/udevconf.vim + @if get_md5(file) != "c9ab7bed1db0bf616d8b1a8420323753": + :fetch {fetch = $fetcha} $file + file = syntax/udevperm.vim + @if get_md5(file) != "3b2209066a2e6f6577b5368cb02926f5": + :fetch {fetch = $fetcha} $file + file = syntax/udevrules.vim + @if get_md5(file) != "74798c4608b80318bc7db2d581b1e9c8": + :fetch {fetch = $fetcha} $file + file = syntax/uil.vim + @if get_md5(file) != "7e791985f17c4a1f0be66c903834057e": + :fetch {fetch = $fetcha} $file + file = syntax/updatedb.vim + @if get_md5(file) != "88e472eab94b422fcb8a22df70bdb2ef": + :fetch {fetch = $fetcha} $file + file = syntax/valgrind.vim + @if get_md5(file) != "80aab61919ca529753a994c12bf866db": + :fetch {fetch = $fetcha} $file + file = syntax/vb.vim + @if get_md5(file) != "143b2997124409bf60ed12e3147fd01d": + :fetch {fetch = $fetcha} $file + file = syntax/vera.vim + @if get_md5(file) != "9420a1ea558d35f1e32f9443a15b5c45": + :fetch {fetch = $fetcha} $file + file = syntax/verilog.vim + @if get_md5(file) != "24c890b06458a510b42272523537f5af": + :fetch {fetch = $fetcha} $file + file = syntax/verilogams.vim + @if get_md5(file) != "ebfac7710836f7dc9c0e425ce843a174": + :fetch {fetch = $fetcha} $file + file = syntax/vgrindefs.vim + @if get_md5(file) != "6214c8fab74680bd9655eb8ba209ec34": + :fetch {fetch = $fetcha} $file + file = syntax/vhdl.vim + @if get_md5(file) != "bfeeb5fe89a7b1ba6c9963e33cdf2bac": + :fetch {fetch = $fetcha} $file + file = syntax/viminfo.vim + @if get_md5(file) != "8fb1103998576aee2c54ad8d0bb5b08d": + :fetch {fetch = $fetcha} $file + file = syntax/virata.vim + @if get_md5(file) != "13287b3553343f02e8b811b1b98c92f0": + :fetch {fetch = $fetcha} $file + file = syntax/vmasm.vim + @if get_md5(file) != "a0facddb3b9cbf7695053e059f55f203": + :fetch {fetch = $fetcha} $file + file = syntax/voscm.vim + @if get_md5(file) != "b74c6935a994ce7bc3c453a61352e146": + :fetch {fetch = $fetcha} $file + file = syntax/vrml.vim + @if get_md5(file) != "98d1b75ec3373e2c4f359bbebbe526c3": + :fetch {fetch = $fetcha} $file + file = syntax/vsejcl.vim + @if get_md5(file) != "a6d9606066f3f3f46f96ee8ca121e312": + :fetch {fetch = $fetcha} $file + file = syntax/wdiff.vim + @if get_md5(file) != "74fddb20b4ea37954b362bfbd9e1574a": + :fetch {fetch = $fetcha} $file + file = syntax/web.vim + @if get_md5(file) != "9edc5328604f9bb5c61d51a4e44bc737": + :fetch {fetch = $fetcha} $file + file = syntax/webmacro.vim + @if get_md5(file) != "e4995b6b9fe0ddc39cd05661d4c58723": + :fetch {fetch = $fetcha} $file + file = syntax/wget.vim + @if get_md5(file) != "688ebed10720c1218f37dd029747a19c": + :fetch {fetch = $fetcha} $file + file = syntax/rexx.vim + @if get_md5(file) != "36269682bf755443ebbbc2b9e2519c1a": + :fetch {fetch = $fetcha} $file + file = syntax/mmp.vim + @if get_md5(file) != "5f5423f4b23d92a926f3be487a2b3920": + :fetch {fetch = $fetcha} $file + file = syntax/whitespace.vim + @if get_md5(file) != "d4fb228f0e7b287e5ca1f0db3a4b6c5c": + :fetch {fetch = $fetcha} $file + file = syntax/winbatch.vim + @if get_md5(file) != "f1e821294f2e8f595775fb42903cf4a2": + :fetch {fetch = $fetcha} $file + file = syntax/wml.vim + @if get_md5(file) != "4ec33d1410cfb04b91172e651643fdc8": + :fetch {fetch = $fetcha} $file + file = syntax/wsh.vim + @if get_md5(file) != "736060ab5864bb48776534ccf369525d": + :fetch {fetch = $fetcha} $file + file = syntax/wsml.vim + @if get_md5(file) != "46c8dbd9161fea1e800657af759880d4": + :fetch {fetch = $fetcha} $file + file = syntax/wvdial.vim + @if get_md5(file) != "286a8d506249db22ec19af60def946b8": + :fetch {fetch = $fetcha} $file + file = syntax/xbl.vim + @if get_md5(file) != "b93905caea81270835027d4f01bcb9a3": + :fetch {fetch = $fetcha} $file + file = syntax/xdefaults.vim + @if get_md5(file) != "679ef2ba65068082b5dc8e644bd4af4c": + :fetch {fetch = $fetcha} $file + file = syntax/xf86conf.vim + @if get_md5(file) != "2b78a6ce3b324e8602c6dcd6d47203df": + :fetch {fetch = $fetcha} $file + file = syntax/xhtml.vim + @if get_md5(file) != "7a8592f7e469adede308c53dcbe2f416": + :fetch {fetch = $fetcha} $file + file = syntax/xinetd.vim + @if get_md5(file) != "396f28268989258d276babdf4c52f4a7": + :fetch {fetch = $fetcha} $file + file = syntax/xkb.vim + @if get_md5(file) != "927ec6962519627df9296be76d19f426": + :fetch {fetch = $fetcha} $file + file = syntax/xmath.vim + @if get_md5(file) != "d933c4a3af726261b67d88bfd20cf12c": + :fetch {fetch = $fetcha} $file + file = syntax/xml.vim + @if get_md5(file) != "abc10ccaf9978eeaf269dbf3b2a1c453": + :fetch {fetch = $fetcha} $file + file = syntax/xmodmap.vim + @if get_md5(file) != "396d77008cc7e48ffacfd9605ab2e532": + :fetch {fetch = $fetcha} $file + file = syntax/xpm.vim + @if get_md5(file) != "ac6f401d794f86162829e08e33d10248": + :fetch {fetch = $fetcha} $file + file = syntax/xpm2.vim + @if get_md5(file) != "eeb010e218f16f20dd1d63f413c9797d": + :fetch {fetch = $fetcha} $file + file = syntax/xquery.vim + @if get_md5(file) != "a28cfff76bcf545cc9af9183fc60d030": + :fetch {fetch = $fetcha} $file + file = syntax/xs.vim + @if get_md5(file) != "f793575c7a7875d01d0d4162f39b8f87": + :fetch {fetch = $fetcha} $file + file = syntax/xsd.vim + @if get_md5(file) != "d6d5e53c320fea19832a70b2d1dacc0c": + :fetch {fetch = $fetcha} $file + file = syntax/xslt.vim + @if get_md5(file) != "0829caa473cef563ade2f22066ef036e": + :fetch {fetch = $fetcha} $file + file = syntax/xxd.vim + @if get_md5(file) != "db1a6c3cc63f95de267937e0acb2883f": + :fetch {fetch = $fetcha} $file + file = syntax/yaml.vim + @if get_md5(file) != "3b6b31275d1491f7fc62a754c3d2d095": + :fetch {fetch = $fetcha} $file + file = syntax/z8a.vim + @if get_md5(file) != "1029db9305b69b832ebc25e1f137ebf5": + :fetch {fetch = $fetcha} $file + file = syntax/zsh.vim + @if get_md5(file) != "3255ac8383137a6ed51e2dd5c921055e": + :fetch {fetch = $fetcha} $file + file = syntax/README.txt + @if get_md5(file) != "4299d25a1f615ca9f3f269916dd0e911": + :fetch {fetch = $fetcha} $file + file = doc/evim-fr.1 + @if get_md5(file) != "c04efbc158d2702b73d6b9fa341d7a26": + :fetch {fetch = $fetcha} $file + file = doc/vim-fr.1 + @if get_md5(file) != "fe0b6a28b953d4095adf3c49a614f85f": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-fr.1 + @if get_md5(file) != "447a900a7eecebe13f0c3d78a233e945": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-fr.1 + @if get_md5(file) != "98292fe4fad1adcd1a6f19d4d0887b82": + :fetch {fetch = $fetcha} $file + file = doc/xxd-fr.1 + @if get_md5(file) != "805a52815ecb149fec60aaa4199119bd": + :fetch {fetch = $fetcha} $file + file = doc/vim-fr.UTF-8.1 + @if get_md5(file) != "2111f5c758881cd66863a93466722488": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-fr.UTF-8.1 + @if get_md5(file) != "1a107e73cf8a3c42a6884b41291e068e": + :fetch {fetch = $fetcha} $file + file = doc/evim-fr.UTF-8.1 + @if get_md5(file) != "811801dbbab0b9863514c18a3ae21b44": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-fr.UTF-8.1 + @if get_md5(file) != "33cd6f2a19c5c8d8db9d54a162f60dd3": + :fetch {fetch = $fetcha} $file + file = doc/xxd-fr.UTF-8.1 + @if get_md5(file) != "a58002d6959360d338c72c83acb9be92": + :fetch {fetch = $fetcha} $file + file = doc/evim-it.1 + @if get_md5(file) != "3b2d69edb0f86809775f81cbf12f39ff": + :fetch {fetch = $fetcha} $file + file = doc/xxd-it.1 + @if get_md5(file) != "f2d8dc31aa9f0c13f4cfe6b8f1a7a9be": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-it.1 + @if get_md5(file) != "1f046c0f8f5df14d91df936da047c95b": + :fetch {fetch = $fetcha} $file + file = doc/vim-it.1 + @if get_md5(file) != "0754d8bf06a468d90092d58d15fc86b6": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-it.1 + @if get_md5(file) != "19171d2d86534837176f0c69cd3f7c2c": + :fetch {fetch = $fetcha} $file + file = doc/vim-it.UTF-8.1 + @if get_md5(file) != "f0b087c8a23afb0e2cab5a86ca17fc1d": + :fetch {fetch = $fetcha} $file + file = doc/evim-it.UTF-8.1 + @if get_md5(file) != "7c0bd85b27d54c6588eb65b499e34f8a": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-it.UTF-8.1 + @if get_md5(file) != "960c33895e5d9304ec3c74750c17466c": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-it.UTF-8.1 + @if get_md5(file) != "a28b44e7a5f6d0f496859b83b9be4979": + :fetch {fetch = $fetcha} $file + file = doc/xxd-it.UTF-8.1 + @if get_md5(file) != "8fec407ef9e46e622d2a39545f023151": + :fetch {fetch = $fetcha} $file + file = doc/evim-pl.1 + @if get_md5(file) != "ce010ad362f9a876cc8b2a294edcb276": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-pl.1 + @if get_md5(file) != "e4d20052798f7c960c1744d3cfdc1e7d": + :fetch {fetch = $fetcha} $file + file = doc/vim-pl.1 + @if get_md5(file) != "2989e466e73cd313f514d745ddfe047d": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-pl.1 + @if get_md5(file) != "df155df24b44287d20b42499c8d4b88c": + :fetch {fetch = $fetcha} $file + file = doc/xxd-pl.1 + @if get_md5(file) != "a1d814a24d031525c35609f6ffdd8b71": + :fetch {fetch = $fetcha} $file + file = doc/evim-pl.UTF-8.1 + @if get_md5(file) != "abcbf3353b0396135975ab62ba74a0af": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-pl.UTF-8.1 + @if get_md5(file) != "76817d258800a791b59034b4d55cccff": + :fetch {fetch = $fetcha} $file + file = doc/vim-pl.UTF-8.1 + @if get_md5(file) != "66442f60f05ca229b5c995cd8e884d87": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-pl.UTF-8.1 + @if get_md5(file) != "c3896cfb02a1831cbda2d66d03d9b96a": + :fetch {fetch = $fetcha} $file + file = doc/xxd-pl.UTF-8.1 + @if get_md5(file) != "039a283ca48247d8ca3727bbbebffd09": + :fetch {fetch = $fetcha} $file + file = doc/evim-ru.1 + @if get_md5(file) != "09281c2efe77b1ffce8332559160c7e8": + :fetch {fetch = $fetcha} $file + file = doc/xxd-ru.1 + @if get_md5(file) != "92408c9623fcfa72e7780a4b0d365eb5": + :fetch {fetch = $fetcha} $file + file = doc/vim-ru.1 + @if get_md5(file) != "38d7b8b8f2ef8dc14e23638a474b19ad": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-ru.1 + @if get_md5(file) != "2d6e60290ac67c03db64f038a44e8b06": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-ru.1 + @if get_md5(file) != "3c7eed91e0a47c531c1d7bef3cb316f0": + :fetch {fetch = $fetcha} $file + file = doc/vim-ru.UTF-8.1 + @if get_md5(file) != "2a3a9465e94368328bd7c76c37c72815": + :fetch {fetch = $fetcha} $file + file = doc/evim-ru.UTF-8.1 + @if get_md5(file) != "3a0b8470aec9b06dc941ee4e6a00b5ad": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff-ru.UTF-8.1 + @if get_md5(file) != "dda6f22783a25cadbef13d696d31793b": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor-ru.UTF-8.1 + @if get_md5(file) != "d6e7b81a4041d2afe4c1bfd6389a65bb": + :fetch {fetch = $fetcha} $file + file = doc/xxd-ru.UTF-8.1 + @if get_md5(file) != "3ec378d11a435980ac03c1f66c1717f0": + :fetch {fetch = $fetcha} $file + :mkdir {f} lang + file = lang/README.txt + @if get_md5(file) != "063e4750f128957d810f2b81d6ebe090": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.iso_8859-2.vim + @if get_md5(file) != "42e7b33016dc783e0b5607b7ea19232c": + :fetch {fetch = $fetcha} $file + file = lang/menu_czech_czech_republic.1250.vim + @if get_md5(file) != "bde23bf87e450438877ec70165fc57ba": + :fetch {fetch = $fetcha} $file + file = lang/menu_german_germany.1252.vim + @if get_md5(file) != "edaed04bffe9f05eeebb29879a2a9575": + :fetch {fetch = $fetcha} $file + file = lang/menu_french_france.1252.vim + @if get_md5(file) != "4806fd3ed27b7be024ddd7b9b839e111": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_br.latin1.vim + @if get_md5(file) != "a870ac27399688ffa2d4b809d9a42327": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.gbk.vim + @if get_md5(file) != "23e46ad3413e870ed5df6d910d42bb0c": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.big5.vim + @if get_md5(file) != "22f0b13b13fada6da47bd9ba2dd46bc9": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru_ru.vim + @if get_md5(file) != "c37f764a59d9e276a759fa3271b78fff": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.gb2312.vim + @if get_md5(file) != "a85a984f4fce7c5abbf9c1064d676578": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese(gb)_gb.936.vim + @if get_md5(file) != "8f6a6417f694b1b862777320e8be79e8": + :fetch {fetch = $fetcha} $file + file = lang/menu_polish_poland.1250.vim + @if get_md5(file) != "f464196d232f63f041dc38f305c31af6": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese_gb.936.vim + @if get_md5(file) != "df2d266f879f6bc79f1e95612689807f": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.utf-8.vim + @if get_md5(file) != "c0171251057b52af7dcd5f0678435ab3": + :fetch {fetch = $fetcha} $file + file = lang/menu_uk_ua.koi8-u.vim + @if get_md5(file) != "25e912f01455c42701d6c8c262b112a4": + :fetch {fetch = $fetcha} $file + file = lang/menu_czech_czech_republic.ascii.vim + @if get_md5(file) != "1bb3a5ea6d5d3ac11daa80309be7c6b9": + :fetch {fetch = $fetcha} $file + file = lang/menu_czech_czech_republic.1252.vim + @if get_md5(file) != "b2920ec043908acd7416b788887b6d23": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr_fr.latin1.vim + @if get_md5(file) != "d25f041657dfc61596bb2afb0a5c0e60": + :fetch {fetch = $fetcha} $file + file = lang/menu_no_no.utf-8.vim + @if get_md5(file) != "b4d9ffdf7b98cc389f70ec5cf7dc94af": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.1250.vim + @if get_md5(file) != "b752e5ed86bd1e9fecbb6ca440a85e67": + :fetch {fetch = $fetcha} $file + file = lang/menu_af_af.latin1.vim + @if get_md5(file) != "cb09895d2ff3f1574b0b1ffdfa913bd3": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_br.vim + @if get_md5(file) != "50332d46d623eb6d4e116a5306b4b7b5": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl.latin1.vim + @if get_md5(file) != "8ec59661738d2680c4a958ff0d992c3b": + :fetch {fetch = $fetcha} $file + file = lang/menu_no.latin1.vim + @if get_md5(file) != "694bae469379a6fe19834057fa1bf905": + :fetch {fetch = $fetcha} $file + file = lang/menu_es_es.utf-8.vim + @if get_md5(file) != "c4cd8a29b90ab623d0d84d0a27fc964d": + :fetch {fetch = $fetcha} $file + file = lang/menu_de_de.utf-8.vim + @if get_md5(file) != "1d0de58df9c1f57858c67ec843b28e28": + :fetch {fetch = $fetcha} $file + file = lang/menu_de_de.latin1.vim + @if get_md5(file) != "9d9fa9eef1eaeba5821e94f91aaffe65": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.vim + @if get_md5(file) != "26203e3410c578c1a2b8cc88df24ac5b": + :fetch {fetch = $fetcha} $file + file = lang/menu_af_af.utf-8.vim + @if get_md5(file) != "5d6249ef9718f1eaa1205cbe1a91fe13": + :fetch {fetch = $fetcha} $file + file = lang/menu_it_it.latin1.vim + @if get_md5(file) != "d27cba13fc8ca33c7284bc613502dddd": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr.utf-8.vim + @if get_md5(file) != "8d553fbde2b845f15f3bd2fd82c2af19": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv.utf-8.vim + @if get_md5(file) != "2601ac7ec78dfefec257ef021950f0e1": + :fetch {fetch = $fetcha} $file + file = lang/menu_no.utf-8.vim + @if get_md5(file) != "9554bf55c5dd552c494ee532f0cace3e": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl.utf-8.vim + @if get_md5(file) != "426f72b9b045d1bcd646bbfb2191dd12": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko.utf-8.vim + @if get_md5(file) != "31c455cb11d7e54b23956a1c6c131469": + :fetch {fetch = $fetcha} $file + file = lang/menu_it.utf-8.vim + @if get_md5(file) != "a47633a625858339b3b5cd7036f52322": + :fetch {fetch = $fetcha} $file + file = lang/menu_en_gb.utf-8.vim + @if get_md5(file) != "97ccf880a0367a8e1385b5ec677894eb": + :fetch {fetch = $fetcha} $file + file = lang/menu_no_no.latin1.vim + @if get_md5(file) != "7ca251dbe20b636da00d8f18ed4ecd6e": + :fetch {fetch = $fetcha} $file + file = lang/menu_it_it.utf-8.vim + @if get_md5(file) != "a47633a625858339b3b5cd7036f52322": + :fetch {fetch = $fetcha} $file + file = lang/menu_en_gb.latin1.vim + @if get_md5(file) != "0d2412be29e49758216074617fc3eb17": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl_nl.utf-8.vim + @if get_md5(file) != "426f72b9b045d1bcd646bbfb2191dd12": + :fetch {fetch = $fetcha} $file + file = lang/menu_slovak_slovak_republic.1250.vim + @if get_md5(file) != "cb7e5e72c9c97749c499c9b03e909ef3": + :fetch {fetch = $fetcha} $file + file = lang/menu_english_united_kingdom.ascii.vim + @if get_md5(file) != "f52dfbce700455e48d1618bd5f8ef5dc": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_tw.utf-8.vim + @if get_md5(file) != "8c95d790a966e96f740d46ba09d38e11": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko_kr.vim + @if get_md5(file) != "6f09efc6adee102cf4f21b7392d5fae0": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko_kr.utf-8.vim + @if get_md5(file) != "a809001b92b1d27a424ff7ac2d1104f4": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_br.utf-8.vim + @if get_md5(file) != "ee681c6db4f9a27147bbb5d75bbcd1b1": + :fetch {fetch = $fetcha} $file + file = lang/menu_es.latin1.vim + @if get_md5(file) != "c36a27acfff14f1c9f67378c7d90b83a": + :fetch {fetch = $fetcha} $file + file = lang/menu_af.utf-8.vim + @if get_md5(file) != "5d6249ef9718f1eaa1205cbe1a91fe13": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.18030.vim + @if get_md5(file) != "23e46ad3413e870ed5df6d910d42bb0c": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.ascii.vim + @if get_md5(file) != "1197b6f7787f314c4a8b4bb498be7f98": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.iso_8859-2.vim + @if get_md5(file) != "03a2ff1474e495a1629711ebc52fe225": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.iso_8859-5.vim + @if get_md5(file) != "317b89d177257f8cc9beccdce683404d": + :fetch {fetch = $fetcha} $file + file = lang/menu_sr_yu.utf-8.vim + @if get_md5(file) != "b94a70ce0e012ee817c5f9cb8f2b5e18": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_pt.vim + @if get_md5(file) != "08f02462ae9993a11d010c8a79668f09": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.gb2312.vim + @if get_md5(file) != "652ab0930dce9d24f672e9332b9f7e3b": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv_se.latin1.vim + @if get_md5(file) != "b43d7e6521f73bc70ef7fb48bf027a0c": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv_se.utf-8.vim + @if get_md5(file) != "2601ac7ec78dfefec257ef021950f0e1": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru_ru.koi8-r.vim + @if get_md5(file) != "dacda02e780a8a80d1feabf5844bd2f2": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca_es.latin1.vim + @if get_md5(file) != "728dd224f0684b1d13e38c7809f6d583": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca_es.utf-8.vim + @if get_md5(file) != "06f557c713f6a110bd76fbd5d414cb5e": + :fetch {fetch = $fetcha} $file + file = lang/menu_italian_italy.1252.vim + @if get_md5(file) != "82a8ae643d8ce7e5bd49a2be7cf21293": + :fetch {fetch = $fetcha} $file + file = lang/menu_de.utf-8.vim + @if get_md5(file) != "1d0de58df9c1f57858c67ec843b28e28": + :fetch {fetch = $fetcha} $file + file = lang/menu_es.utf-8.vim + @if get_md5(file) != "c4cd8a29b90ab623d0d84d0a27fc964d": + :fetch {fetch = $fetcha} $file + file = lang/menu_nl_nl.latin1.vim + @if get_md5(file) != "98176e7d47d928c09f29dd23d5acf814": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl_pl.iso_8859-2.vim + @if get_md5(file) != "841318427550d86af263cc836ad01afc": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.cp932.vim + @if get_md5(file) != "4f16f1f59a2115b60fefa3a74be9303e": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.cp936.vim + @if get_md5(file) != "2c61ee490f337cdb9f6b6ec0dd266825": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_cn.cp936.vim + @if get_md5(file) != "2c61ee490f337cdb9f6b6ec0dd266825": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh.cp950.vim + @if get_md5(file) != "22f0b13b13fada6da47bd9ba2dd46bc9": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_tw.cp950.vim + @if get_md5(file) != "22f0b13b13fada6da47bd9ba2dd46bc9": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.cp932.vim + @if get_md5(file) != "4f16f1f59a2115b60fefa3a74be9303e": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs.latin1.vim + @if get_md5(file) != "bed3c35462cef795dd6152faebb867a0": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr.latin1.vim + @if get_md5(file) != "e9837fb2b57368029b38540ebbe67e7b": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs.cp1250.vim + @if get_md5(file) != "d0a3323f6949420d8bd15d3ef2a82f82": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs_cz.latin1.vim + @if get_md5(file) != "bed3c35462cef795dd6152faebb867a0": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs_cz.cp1250.vim + @if get_md5(file) != "d0a3323f6949420d8bd15d3ef2a82f82": + :fetch {fetch = $fetcha} $file + file = lang/menu_de.latin1.vim + @if get_md5(file) != "bfc43b758f8530c779eb3d53e2d6af8a": + :fetch {fetch = $fetcha} $file + file = lang/menu_af.latin1.vim + @if get_md5(file) != "1759724126dc718def467319081e280b": + :fetch {fetch = $fetcha} $file + file = lang/menu_it.latin1.vim + @if get_md5(file) != "ba32ff89ec86a2b06484997ef476ff92": + :fetch {fetch = $fetcha} $file + file = lang/menu_sv.latin1.vim + @if get_md5(file) != "c0ff1ca4caf803a3425320820972181d": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_pt.utf-8.vim + @if get_md5(file) != "1e81abc1f01d5520869a7000ce0e0873": + :fetch {fetch = $fetcha} $file + file = lang/menu_es_es.latin1.vim + @if get_md5(file) != "b1c6be53e000d00de2b74300f2da7435": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.utf-8.vim + @if get_md5(file) != "1b55d7b48ce4383e378bca7a1b179272": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr.utf-8.vim + @if get_md5(file) != "46aa175a38980bf81becc64ae4c9f9f6": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl.cp1250.vim + @if get_md5(file) != "8831a8beff4f9e030774c83ec4fad64f": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl_pl.cp1250.vim + @if get_md5(file) != "8831a8beff4f9e030774c83ec4fad64f": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru_ru.utf-8.vim + @if get_md5(file) != "b2ad330f26c99d593cbfad2e0dbecaf2": + :fetch {fetch = $fetcha} $file + file = lang/menu_ru.utf-8.vim + @if get_md5(file) != "b2ad330f26c99d593cbfad2e0dbecaf2": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk.cp1250.vim + @if get_md5(file) != "efc010a78a7af215a42ed08c8da596a0": + :fetch {fetch = $fetcha} $file + file = lang/menu_sk_sk.cp1250.vim + @if get_md5(file) != "efc010a78a7af215a42ed08c8da596a0": + :fetch {fetch = $fetcha} $file + file = lang/menu_pt_pt.latin1.vim + @if get_md5(file) != "1e81abc1f01d5520869a7000ce0e0873": + :fetch {fetch = $fetcha} $file + file = lang/menu_english_united_kingdom.1252.vim + @if get_md5(file) != "f52dfbce700455e48d1618bd5f8ef5dc": + :fetch {fetch = $fetcha} $file + file = lang/menu_zh_tw.big5.vim + @if get_md5(file) != "22f0b13b13fada6da47bd9ba2dd46bc9": + :fetch {fetch = $fetcha} $file + file = lang/menu_fr_fr.utf-8.vim + @if get_md5(file) != "46aa175a38980bf81becc64ae4c9f9f6": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.ujis.vim + @if get_md5(file) != "c2af376657f9e44eb08dbaf9e92234e9": + :fetch {fetch = $fetcha} $file + file = lang/menu_japanese_japan.932.vim + @if get_md5(file) != "95996a614db92d34a81d6ab0af89157b": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese(taiwan)_taiwan.950.vim + @if get_md5(file) != "7508374d20dace876b5ff5a8009316e0": + :fetch {fetch = $fetcha} $file + file = lang/menu_ko_kr.euckr.vim + @if get_md5(file) != "6990b1ee2ceaae85c155683ffd0a28ff": + :fetch {fetch = $fetcha} $file + file = lang/menu_cs_cz.iso_8859-2.vim + @if get_md5(file) != "b75372436ca6c283ecd580f9d8e035f6": + :fetch {fetch = $fetcha} $file + file = lang/menu_chinese_taiwan.950.vim + @if get_md5(file) != "9bba9f47a92dba917a797e2b2b79b5fd": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca.latin1.vim + @if get_md5(file) != "a96a82526e73714fe6102c62332bf134": + :fetch {fetch = $fetcha} $file + file = lang/menu_ca.utf-8.vim + @if get_md5(file) != "06f557c713f6a110bd76fbd5d414cb5e": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu_hu.iso_8859-2.vim + @if get_md5(file) != "ce47b1d0f59b86692475bba03ab3784b": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.eucjp.vim + @if get_md5(file) != "beb1d0e3e659a981222a3148afd8bc18": + :fetch {fetch = $fetcha} $file + file = lang/menu_spanish_spain.850.vim + @if get_md5(file) != "5b5fa1c8d13132a9a2dac49ba43223b1": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.utf-8.vim + @if get_md5(file) != "b713c8bc4f34637904a47a6dc599535e": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja_jp.euc-jp.vim + @if get_md5(file) != "216a351f7a8d05f8dbfa64bde0cf8d36": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu.iso_8859-2.vim + @if get_md5(file) != "a04622b3a72646b48b238bbdfc888b22": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu.utf-8.vim + @if get_md5(file) != "6990fe2dd9356ddc3a2e226d1dea1dca": + :fetch {fetch = $fetcha} $file + file = lang/menu_hu_hu.utf-8.vim + @if get_md5(file) != "3c7b1e4241799b69f0356bb293dc95d3": + :fetch {fetch = $fetcha} $file + file = lang/menu_uk_ua.cp1251.vim + @if get_md5(file) != "99081d455a92c4ca78782be3b55babdf": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.eucjp.vim + @if get_md5(file) != "beb1d0e3e659a981222a3148afd8bc18": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.euc-jp.vim + @if get_md5(file) != "beb1d0e3e659a981222a3148afd8bc18": + :fetch {fetch = $fetcha} $file + file = lang/menu_ja.ujis.vim + @if get_md5(file) != "c2af376657f9e44eb08dbaf9e92234e9": + :fetch {fetch = $fetcha} $file + file = lang/menu_pl_pl.utf-8.vim + @if get_md5(file) != "565f0b1f768b869aa9af8191f424f7a2": + :fetch {fetch = $fetcha} $file + file = lang/menu_vi_vn.vim + @if get_md5(file) != "4468c3bdade5239394fd771998548430": + :fetch {fetch = $fetcha} $file + file = lang/menu_sl_si.cp1250.vim + @if get_md5(file) != "5f35f5f62d4ddb574e6aa35e2afbe1f2": + :fetch {fetch = $fetcha} $file + file = lang/menu_sl_si.latin2.vim + @if get_md5(file) != "e09801297810779f22dbe44d38795ad4": + :fetch {fetch = $fetcha} $file + file = lang/menu_sl_si.utf-8.vim + @if get_md5(file) != "9a976f3cf176d020b09d2b77e724d9a8": + :fetch {fetch = $fetcha} $file + file = lang/menu_finnish_finland.1252.vim + @if get_md5(file) != "5bc5751fb6f96e4139d56ce07ff51b00": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi.latin1.vim + @if get_md5(file) != "0a23c54dbc3ece30f482f8bcb72fc122": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi_fi.latin1.vim + @if get_md5(file) != "79002e7f74b852372e0581e6876f9465": + :fetch {fetch = $fetcha} $file + file = lang/menu_eo_xx.utf-8.vim + @if get_md5(file) != "63973f88df888d0de849530a92a496c3": + :fetch {fetch = $fetcha} $file + file = lang/menu_eo.utf-8.vim + @if get_md5(file) != "ad3ee42bd1c586b2e432e4b8a66ab8ef": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi_fi.utf-8.vim + @if get_md5(file) != "7b5381a29cf7b93d1a88d41ada78f66d": + :fetch {fetch = $fetcha} $file + file = lang/menu_fi.utf-8.vim + @if get_md5(file) != "7b5381a29cf7b93d1a88d41ada78f66d": + :fetch {fetch = $fetcha} $file + file = lang/menu_eo_eo.utf-8.vim + @if get_md5(file) != "ad3ee42bd1c586b2e432e4b8a66ab8ef": + :fetch {fetch = $fetcha} $file + :mkdir {f} keymap + file = keymap/README.txt + @if get_md5(file) != "df5bcae444e527eace9eeb308ef83de1": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew_cp1255.vim + @if get_md5(file) != "e41a4cc7c9d9e9b4b76ca975f62fc056": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew_iso-8859-8.vim + @if get_md5(file) != "b3e0904a731ba4225b29ad1e0d8d76f8": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew.vim + @if get_md5(file) != "d7bed5b3b606064b5c3c9b39f2145510": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp_iso-8859-8.vim + @if get_md5(file) != "e6a84c86acebf6bda90efd85690c1090": + :fetch {fetch = $fetcha} $file + file = keymap/russian-jcuken.vim + @if get_md5(file) != "760c587f7e9b798b5e5cb31787bf485c": + :fetch {fetch = $fetcha} $file + file = keymap/greek.vim + @if get_md5(file) != "b41d4a993aaf5b336011f09d9729c832": + :fetch {fetch = $fetcha} $file + file = keymap/accents.vim + @if get_md5(file) != "42ff480f4a7a22b5f97c86a5320808b2": + :fetch {fetch = $fetcha} $file + file = keymap/russian-jcukenwin.vim + @if get_md5(file) != "faae03e536ec94bc1186285a90db6fc5": + :fetch {fetch = $fetcha} $file + file = keymap/greek_iso-8859-7.vim + @if get_md5(file) != "30ac9bab49f0691697461017d81039c7": + :fetch {fetch = $fetcha} $file + file = keymap/greek_utf-8.vim + @if get_md5(file) != "b8b5dcd5c3ee82295e3a285b6048f921": + :fetch {fetch = $fetcha} $file + file = keymap/czech_utf-8.vim + @if get_md5(file) != "8e033b4376b83c7123c9c61b7ded4bee": + :fetch {fetch = $fetcha} $file + file = keymap/russian-yawerty.vim + @if get_md5(file) != "d4febed3f8d1b6d360106244a0992250": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp.vim + @if get_md5(file) != "be8964fee426d3658510ae96643c065b": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp_cp1255.vim + @if get_md5(file) != "07ab2ef4cdeb12058cfc581af8b537e4": + :fetch {fetch = $fetcha} $file + file = keymap/hebrewp_utf-8.vim + @if get_md5(file) != "2fbaf13bfc2b30c21f7cb8673086628d": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_cp1250.vim + @if get_md5(file) != "46a4e051670c1c65312e7dc09d0adbcb": + :fetch {fetch = $fetcha} $file + file = keymap/slovak_cp1250.vim + @if get_md5(file) != "e7b710f66f1d82a05a3fd39da3a87ddc": + :fetch {fetch = $fetcha} $file + file = keymap/serbian-latin_utf-8.vim + @if get_md5(file) != "1fd5f16be56ef2e620e9c7b47029e2d6": + :fetch {fetch = $fetcha} $file + file = keymap/lithuanian-baltic.vim + @if get_md5(file) != "4f97124ba95a80ae0e8e9055ff8f156f": + :fetch {fetch = $fetcha} $file + file = keymap/pinyin.vim + @if get_md5(file) != "b47559b6c47c565ee49a294a6743e416": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_cp1251.vim + @if get_md5(file) != "55cdf6305e268b4a9fb515f7bab4ea30": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_iso-8859-5.vim + @if get_md5(file) != "3fb67ab4d73499b26d6b044e9f15ef53": + :fetch {fetch = $fetcha} $file + file = keymap/slovak_iso-8859-2.vim + @if get_md5(file) != "0ea6b3181e3276815be3eda24aa6fed6": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_utf-8.vim + @if get_md5(file) != "ad1286432054706a11c94a2658de4477": + :fetch {fetch = $fetcha} $file + file = keymap/slovak_utf-8.vim + @if get_md5(file) != "cc4e214f40732bc3e14516bae809d2fc": + :fetch {fetch = $fetcha} $file + file = keymap/esperanto_utf-8.vim + @if get_md5(file) != "159d77b8478a142eecdb57e4f3637c92": + :fetch {fetch = $fetcha} $file + file = keymap/serbian_iso-8859-2.vim + @if get_md5(file) != "603b546af0e0e78474f96ea599d4b0b7": + :fetch {fetch = $fetcha} $file + file = keymap/arabic_utf-8.vim + @if get_md5(file) != "5433209d11ae24ae095497ad8ade3540": + :fetch {fetch = $fetcha} $file + file = keymap/arabic.vim + @if get_md5(file) != "9e64fd4e2c8db3317ba683eb19709eeb": + :fetch {fetch = $fetcha} $file + file = keymap/magyar_utf-8.vim + @if get_md5(file) != "6d46b55ebbed5909ebf9173342d47ba1": + :fetch {fetch = $fetcha} $file + file = keymap/serbian-latin.vim + @if get_md5(file) != "ef1d21585cc0253130db2027d47e63b6": + :fetch {fetch = $fetcha} $file + file = keymap/persian.vim + @if get_md5(file) != "46191edacd356a67555729416cd58552": + :fetch {fetch = $fetcha} $file + file = keymap/persian-iranian_utf-8.vim + @if get_md5(file) != "f8bbaf53fe60d73eb0a184f8aa405930": + :fetch {fetch = $fetcha} $file + file = keymap/esperanto.vim + @if get_md5(file) != "f529e2dbb75d2a72c972ae2e3503b064": + :fetch {fetch = $fetcha} $file + file = keymap/czech.vim + @if get_md5(file) != "5c849c8f7f29a9691c8e0babefb929bf": + :fetch {fetch = $fetcha} $file + file = keymap/serbian.vim + @if get_md5(file) != "4f7bfdb31a898274f303be8a9f6142c3": + :fetch {fetch = $fetcha} $file + file = keymap/slovak.vim + @if get_md5(file) != "dd1f8c6a8178db9a492369446f84f20e": + :fetch {fetch = $fetcha} $file + file = keymap/hebrew_utf-8.vim + @if get_md5(file) != "09a04fd74386cf904fe39c2ef070675c": + :fetch {fetch = $fetcha} $file + file = keymap/greek_cp1253.vim + @if get_md5(file) != "0f8816a5488cb27ce78b181f569fff62": + :fetch {fetch = $fetcha} $file + file = keymap/sinhala-phonetic_utf-8.vim + @if get_md5(file) != "9c9c8cd72f57159fc59d8abd94c2b772": + :fetch {fetch = $fetcha} $file + file = keymap/bulgarian.vim + @if get_md5(file) != "959e5cabf6a76438450d860833efd54f": + :fetch {fetch = $fetcha} $file + file = keymap/sinhala.vim + @if get_md5(file) != "0c6fa6d29fa8f4b2c27754f4ebe81eff": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash.vim + @if get_md5(file) != "0c07b1217d6db9b22a90455506c6862c": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_cp1250.vim + @if get_md5(file) != "cf5bdf5c7cb0dd0b534ca26d2067188e": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_cp852.vim + @if get_md5(file) != "8f8f2c1c8d84544d52bebc29e3fa912d": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_iso-8859-2.vim + @if get_md5(file) != "31896ccbcc9f4895ff804022ee8b5f80": + :fetch {fetch = $fetcha} $file + file = keymap/polish-slash_utf-8.vim + @if get_md5(file) != "538efe275c854db0925f2ea54b84bddd": + :fetch {fetch = $fetcha} $file + file = keymap/canfr-win.vim + @if get_md5(file) != "8f21f52e6536dcf399c22f9dc6040f75": + :fetch {fetch = $fetcha} $file + file = keymap/tamil_tscii.vim + @if get_md5(file) != "1aefa71fa47a516a8c6aa778c2cb5a99": + :fetch {fetch = $fetcha} $file + file = keymap/ukrainian-jcuken.vim + @if get_md5(file) != "2aad801baf98d2c0dfd3e0cbe43cfcb7": + :fetch {fetch = $fetcha} $file + file = keymap/greek_cp737.vim + @if get_md5(file) != "094482617b641d6888edd5c7aee51fe8": + :fetch {fetch = $fetcha} $file + file = keymap/kana.vim + @if get_md5(file) != "7a0c158a52e383d12fdeeebf07ebb7c3": + :fetch {fetch = $fetcha} $file + file = keymap/vietnamese-viqr_utf-8.vim + @if get_md5(file) != "56fa2a3aabd673dc8fb6c44ce58f819b": + :fetch {fetch = $fetcha} $file + file = keymap/thaana-phonetic_utf-8.vim + @if get_md5(file) != "1a11bf36ed5c4e921ebe03d1fbe83430": + :fetch {fetch = $fetcha} $file + file = keymap/bulgarian-phonetic.vim + @if get_md5(file) != "b1d913391c3ff1508a36564edb3f3530": + :fetch {fetch = $fetcha} $file + file = keymap/thaana.vim + @if get_md5(file) != "1cabf2d2c3401e2fe40bd1c0e39263b3": + :fetch {fetch = $fetcha} $file + file = keymap/bulgarian-bds.vim + @if get_md5(file) != "ca13eb58820ca3ccf277395ddd70aa71": + :fetch {fetch = $fetcha} $file + file = keymap/mongolian_utf-8.vim + @if get_md5(file) != "ad6f65d42ced2f6b4979ef343709de09": + :fetch {fetch = $fetcha} $file + file = keymap/croatian.vim + @if get_md5(file) != "2a0273f3c7b9596a7696b314d6e59e2b": + :fetch {fetch = $fetcha} $file + file = keymap/croatian_cp1250.vim + @if get_md5(file) != "72f78fa8aa09fbcb57b8c830f7018d2f": + :fetch {fetch = $fetcha} $file + file = keymap/croatian_iso-8859-2.vim + @if get_md5(file) != "f341b0827566bc5a4266fbeda2dd01ec": + :fetch {fetch = $fetcha} $file + file = keymap/croatian_utf-8.vim + @if get_md5(file) != "c1a365bf0f9e47a85221eb633e7532d8": + :fetch {fetch = $fetcha} $file + file = keymap/russian-dvorak.vim + @if get_md5(file) != "3ce3c8637fcd0d679a61e2a1cdfa99c4": + :fetch {fetch = $fetcha} $file + file = keymap/ukrainian-dvorak.vim + @if get_md5(file) != "6d4b3892df551349fc316d89f5128ff1": + :fetch {fetch = $fetcha} $file + file = tutor/README.gr.txt + @if get_md5(file) != "5320db3545b0ef8917b954815b729751": + :fetch {fetch = $fetcha} $file + file = tutor/README.gr.cp737.txt + @if get_md5(file) != "e6bd05e1d5a88261f33509dc6ac0f547": + :fetch {fetch = $fetcha} $file + file = tutor/Makefile + @if get_md5(file) != "46ff9530cb2d6ced8a3e3b09fa9c827c": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.es + @if get_md5(file) != "04428f77c5eb23e411a0517f2e32b15a": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.it + @if get_md5(file) != "afe229bec2dc9f470137a8bf5da516de": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.fr + @if get_md5(file) != "1303d73745df8642e62f66aaa21933c6": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ru + @if get_md5(file) != "e89d2ba2499b4f32e14f05fb451da152": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sv + @if get_md5(file) != "7466175b6115ba170d884b227e018fce": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.pl + @if get_md5(file) != "751aba9568e3fe60b3ddbcf78b4f22d7": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sk + @if get_md5(file) != "43ee40950f02fa202d0dfb1f8c841944": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.gr + @if get_md5(file) != "106e54cb4b35c18b94e7239c218cd5b2": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.no + @if get_md5(file) != "8196492c7c0620172db23d2e99ac4e89": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.de + @if get_md5(file) != "b7077a2eed6f98571977b89c6e48c083": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ca + @if get_md5(file) != "e01f12117ac53cb73e716f2e9b32ffd6": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hu + @if get_md5(file) != "88a9d6b817543670dab5cd381c3b7109": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.cs + @if get_md5(file) != "706b35f5b4d93af836012361888c4a66": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hr + @if get_md5(file) != "87fd40000ce1f99ac094b16d098e000f": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.cs.utf-8 + @if get_md5(file) != "a3f279aff5a7480f46025f852904230a": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.cs.cp1250 + @if get_md5(file) != "3e58bf28a9f73963b839d7eca7d5dafd": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.gr.cp737 + @if get_md5(file) != "dddeed50201970c7649930df4d20efef": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.gr.utf-8 + @if get_md5(file) != "90708d8d6dc9d31579851d43eced1881": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hr.utf-8 + @if get_md5(file) != "635aef990d290b19e15e6ad6f9292def": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hr.cp1250 + @if get_md5(file) != "8ae7ab89dac108187562a7e723d3413a": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hu.utf-8 + @if get_md5(file) != "58beb10ecfd9aa926c58a361803f74c6": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.hu.cp1250 + @if get_md5(file) != "88a9d6b817543670dab5cd381c3b7109": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ja.sjis + @if get_md5(file) != "b347181a60ae4fdac84aa478db2c3c2a": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ja.utf-8 + @if get_md5(file) != "94b6313d144e2c1ba821be3d488dc7c9": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ja.euc + @if get_md5(file) != "37ab7f48c8f2382bcf64d3ef671b8109": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ko.utf-8 + @if get_md5(file) != "29752868535f35328536e5af720477fe": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ko.euc + @if get_md5(file) != "1d92a0c5183e7f3059cb2eedd3edc0e2": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.pl.cp1250 + @if get_md5(file) != "1e9eb4ea221fef0dbb821b9ee37be21c": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.pl.utf-8 + @if get_md5(file) != "c0d78b5e8edfffd61af96a7c5885d993": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ru.cp1251 + @if get_md5(file) != "0f5c6f076fe5735131b61da9b5b8afb7": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.ru.utf-8 + @if get_md5(file) != "fe2a7e06c8138485496d51fd07b6c157": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sk.cp1250 + @if get_md5(file) != "7dbf750bae0aadedade7369fc0de07e1": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.sk.utf-8 + @if get_md5(file) != "158c685cd1e5c9458573401b2f65d79f": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.tr.utf-8 + @if get_md5(file) != "4583cce282c7fce825aa9ec7f71a0076": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.tr.iso9 + @if get_md5(file) != "f7028e624deaaa55127d724dd3907330": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.zh.big5 + @if get_md5(file) != "7aac3c5526c22ca2eabe667220d09159": + :fetch {fetch = $fetcha} $file + file = tutor/tutor.zh.euc + @if get_md5(file) != "69f7b1ed4e170438f9daf3f9f84649e0": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell + file = spell/README.txt + @if get_md5(file) != "00dd211ae65e021b87a16e8f9ba153a1": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/en + file = spell/en/en_AU.diff + @if get_md5(file) != "9603c525778502452992711cb5cf6fc6": + :fetch {fetch = $fetcha} $file + file = spell/en/en_CA.diff + @if get_md5(file) != "d05e0c88c5fc3bea7fd2a923ebfb4aa4": + :fetch {fetch = $fetcha} $file + file = spell/en/en_GB.diff + @if get_md5(file) != "3860ec8f854298fe86f16106022345bc": + :fetch {fetch = $fetcha} $file + file = spell/en/en_NZ.diff + @if get_md5(file) != "64a2cb2b0df63a02c2f982f10dd8c41b": + :fetch {fetch = $fetcha} $file + file = spell/en/en_US.diff + @if get_md5(file) != "761e8553948b98986aa6c0bb589bda42": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/nl + file = spell/nl/nl_NL.diff + @if get_md5(file) != "ad3448fd6a766fcbb2a05f197452b225": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/pl + file = spell/pl/pl_PL.diff + @if get_md5(file) != "55e24352703819457661b23a109fa58a": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/de + file = spell/de/de_19.diff + @if get_md5(file) != "5cc9f850c632187356f223fb68262896": + :fetch {fetch = $fetcha} $file + file = spell/de/de_DE.diff + @if get_md5(file) != "e2e7b6d5a0d400435adb38c3b0a42200": + :fetch {fetch = $fetcha} $file + file = spell/de/de_20.diff + @if get_md5(file) != "6ed009cc61f949c6acb7885771f475ba": + :fetch {fetch = $fetcha} $file + file = spell/de/de_AT.diff + @if get_md5(file) != "35236fcbb4953c1a8f7b743464f32995": + :fetch {fetch = $fetcha} $file + file = spell/de/de_CH.diff + @if get_md5(file) != "d40b43020c4bb5b52df29f720035ea86": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/fr + file = spell/fr/fr_FR.diff + @if get_md5(file) != "fc15bf819a487beef0a8d6bbccdd5481": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/he + file = spell/he/he_IL.diff + @if get_md5(file) != "44084d77a16f573fbccea1fd6392c714": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/it + file = spell/it/it_IT.diff + @if get_md5(file) != "1e3bbdc588aa31cf4ee3ead366f531b6": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/yi + file = spell/yi/yi.diff + @if get_md5(file) != "67ba71d1d3fcb9fb53680553f3a44f1c": + :fetch {fetch = $fetcha} $file + file = spell/yi/yi_tr.diff + @if get_md5(file) != "f8529152a0a0c6336453c1e46e9c9545": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ca + file = spell/ca/ca_ES.diff + @if get_md5(file) != "eadb90ca9243474fc0e7a4440eb5dddf": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/cs + file = spell/cs/cs_CZ.diff + @if get_md5(file) != "6007278294543033b9f3d75749424f5d": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/sk + file = spell/sk/sk_SK.diff + @if get_md5(file) != "dd68b46bdcb2e80bedf57e745d5317cf": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/id + file = spell/id/id_ID.diff + @if get_md5(file) != "92a7f2917a16811a28fb0f8cdf527d75": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/hu + file = spell/hu/hu_HU.diff + @if get_md5(file) != "ab0ad012ef24042de138afc6c2a66bd3": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/am + file = spell/am/am_ET.diff + @if get_md5(file) != "9d0abae85ad8babff7d8ba63fca371a7": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/af + file = spell/af/af_ZA.diff + @if get_md5(file) != "4f2ed045a99fbc7b796ff31d8abe1f15": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/bg + file = spell/bg/bg_BG.diff + @if get_md5(file) != "d593908987e5ddae9df0cbf1aa1b7a54": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ny + file = spell/ny/ny_MW.diff + @if get_md5(file) != "d41d8cd98f00b204e9800998ecf8427e": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/hr + file = spell/hr/hr_HR.diff + @if get_md5(file) != "e3c18630c15c07c6bb105bef4ea73f51": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/gl + file = spell/gl/gl_ES.diff + @if get_md5(file) != "d7593c80c5f6d671b18f1ffd9b7216f2": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/el + file = spell/el/el_GR.diff + @if get_md5(file) != "9e02469cf7e86de56ec3893e311bad75": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/da + file = spell/da/da_DK.diff + @if get_md5(file) != "209c6065f80ec572f8c90ea69d2722b5": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/eo + file = spell/eo/eo_l3.diff + @if get_md5(file) != "d41d8cd98f00b204e9800998ecf8427e": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/fo + file = spell/fo/fo_FO.diff + @if get_md5(file) != "cb85b694799af4744858071c3c1dc04f": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/th + file = spell/th/th.diff + @if get_md5(file) != "9e3dafb7ee18e5b2b168088d43d5744c": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/es + file = spell/es/es_ES.diff + @if get_md5(file) != "c0f554f26dbf3cebd549921c54b19d85": + :fetch {fetch = $fetcha} $file + file = spell/es/es_MX.diff + @if get_md5(file) != "a51e9067093cb0db12f45f363908315e": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ru + file = spell/ru/ru_RU.diff + @if get_md5(file) != "93929c03b82322e185ce4ec0e9b578ca": + :fetch {fetch = $fetcha} $file + file = spell/ru/ru_YO.diff + @if get_md5(file) != "b758a9f744e32527e5aeaa3318a59a8c": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ga + file = spell/ga/ga_IE.diff + @if get_md5(file) != "e10d1733abcd0e7fab918ddb498cc55d": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/rw + file = spell/rw/rw_RW.diff + @if get_md5(file) != "b0c6d03455744bea03f94015ed1a1ee2": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/sw + file = spell/sw/sw_KE.diff + @if get_md5(file) != "de0d8c9d5f33161eb478f77b66e96a33": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ku + file = spell/ku/ku_TR.diff + @if get_md5(file) != "db91f50b4a60a44eb795464411057d30": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/la + file = spell/la/la.diff + @if get_md5(file) != "9a14fe3181dcbb22269c9a4f82e91168": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/lv + file = spell/lv/lv_LV.diff + @if get_md5(file) != "d41d8cd98f00b204e9800998ecf8427e": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/lt + file = spell/lt/lt_LT.diff + @if get_md5(file) != "d41d8cd98f00b204e9800998ecf8427e": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/mg + file = spell/mg/mg_MG.diff + @if get_md5(file) != "a37f0c14199470d0acb5c29611ad134e": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ms + file = spell/ms/ms_MY.diff + @if get_md5(file) != "e92641242d93bd17f4d9dc2f0db34f43": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/mi + file = spell/mi/mi_NZ.diff + @if get_md5(file) != "8254c7e60c8aa73bc83008d8f23c7a4c": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/nb + file = spell/nb/nb_NO.diff + @if get_md5(file) != "573bfce3b60003fb42bbad393e56c95c": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/nn + file = spell/nn/nn_NO.diff + @if get_md5(file) != "e158cb3f9dc45ca40aab447a92f474ea": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/pt + file = spell/pt/pt_PT.diff + @if get_md5(file) != "7aa392cd384cd42871a8bb320c9e718a": + :fetch {fetch = $fetcha} $file + file = spell/pt/pt_BR.diff + @if get_md5(file) != "88ea562c18c3ae0b9bb900dc82a44fa6": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/ro + file = spell/ro/ro_RO.diff + @if get_md5(file) != "e30fa712b9e49a4e70c151a1f2712ce9": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/tn + file = spell/tn/tn_ZA.diff + @if get_md5(file) != "44b53fd494c3191f5008c13d3ed7b857": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/gd + file = spell/gd/gd_GB.diff + @if get_md5(file) != "7c93f1950e0ef9ccf33f898ec1509d6c": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/sl + file = spell/sl/sl_SI.diff + @if get_md5(file) != "ea4a806c7cc3e84fe79b675554d883ab": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/sv + file = spell/sv/sv_SE.diff + @if get_md5(file) != "de3398fad95606b7f249769138a40e16": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/tl + file = spell/tl/tl_PH.diff + @if get_md5(file) != "81dfd4abb3e65ca5c4690932f4cbd3b6": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/uk + file = spell/uk/uk_UA.diff + @if get_md5(file) != "ba4ae4107492d86e467b9b073a08f102": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/cy + file = spell/cy/cy_GB.diff + @if get_md5(file) != "579c54e2087680b1f0517e154478a0a9": + :fetch {fetch = $fetcha} $file + :mkdir {f} spell/zu + file = spell/zu/zu_ZA.diff + @if get_md5(file) != "7eb28c52dfd7bf7bbe48d846088f778a": + :fetch {fetch = $fetcha} $file + file = spell/en/main.aap + @if get_md5(file) != "997020f160244dd96f50d16ecaa21b42": + :fetch {fetch = $fetcha} $file + file = spell/nl/main.aap + @if get_md5(file) != "90d2fd3e4838c4b07c7ea4f68efd37e7": + :fetch {fetch = $fetcha} $file + file = spell/pl/main.aap + @if get_md5(file) != "913d63eea51e26e63a39a0266ac1c59c": + :fetch {fetch = $fetcha} $file + file = spell/de/main.aap + @if get_md5(file) != "7eeaf88eb750d4d8b10f56620d01428d": + :fetch {fetch = $fetcha} $file + file = spell/fr/main.aap + @if get_md5(file) != "61288b554d74bb841b28b9374db47e5e": + :fetch {fetch = $fetcha} $file + file = spell/he/main.aap + @if get_md5(file) != "d07893913d105149f68b135efeb5f28f": + :fetch {fetch = $fetcha} $file + file = spell/it/main.aap + @if get_md5(file) != "07b83ae63f63b3316b3ae7500fe643cf": + :fetch {fetch = $fetcha} $file + file = spell/yi/main.aap + @if get_md5(file) != "f8d07d2bde91314cde5e0765cd05d694": + :fetch {fetch = $fetcha} $file + file = spell/ca/main.aap + @if get_md5(file) != "82fb578d3d3f3f151c6963cd0b43fe28": + :fetch {fetch = $fetcha} $file + file = spell/cs/main.aap + @if get_md5(file) != "e3f383c12b897606e15b11f4e3fcd137": + :fetch {fetch = $fetcha} $file + file = spell/sk/main.aap + @if get_md5(file) != "b50ced6b781ea3d60948a09080cfcf08": + :fetch {fetch = $fetcha} $file + file = spell/id/main.aap + @if get_md5(file) != "6351a770fb2803d18cde9365c291e84b": + :fetch {fetch = $fetcha} $file + file = spell/hu/main.aap + @if get_md5(file) != "42cbfa47eed01b8849c8f745ede2d328": + :fetch {fetch = $fetcha} $file + file = spell/am/main.aap + @if get_md5(file) != "d5ff6a194566cfb4bfec60ef5a7b6432": + :fetch {fetch = $fetcha} $file + file = spell/af/main.aap + @if get_md5(file) != "b8b54131513f23979483151d6e4e7b71": + :fetch {fetch = $fetcha} $file + file = spell/bg/main.aap + @if get_md5(file) != "18a7f6fcbeb30ff6d7d5e1756c4d24ac": + :fetch {fetch = $fetcha} $file + file = spell/ny/main.aap + @if get_md5(file) != "65b4e3e96c1cb512a0df83a6eb74a73e": + :fetch {fetch = $fetcha} $file + file = spell/hr/main.aap + @if get_md5(file) != "f6473bff9ab35536678e4d7a2cdd19a6": + :fetch {fetch = $fetcha} $file + file = spell/gl/main.aap + @if get_md5(file) != "6a14320cab3ad0765e1dff60d64d9ebe": + :fetch {fetch = $fetcha} $file + file = spell/el/main.aap + @if get_md5(file) != "09c98ca2a533f0bf1f60dbffeb281aca": + :fetch {fetch = $fetcha} $file + file = spell/da/main.aap + @if get_md5(file) != "91b9a55ca2293567dd43af1a3f732621": + :fetch {fetch = $fetcha} $file + file = spell/eo/main.aap + @if get_md5(file) != "46608861e2ee6d6aeda52ac4af591c22": + :fetch {fetch = $fetcha} $file + file = spell/fo/main.aap + @if get_md5(file) != "dbf7a25005d457963746e009799e1bf4": + :fetch {fetch = $fetcha} $file + file = spell/th/main.aap + @if get_md5(file) != "78b6902ae86457dd7c4b90ea5120ac7a": + :fetch {fetch = $fetcha} $file + file = spell/es/main.aap + @if get_md5(file) != "55ff86b49d9a29330065dbe4bd4c4c6c": + :fetch {fetch = $fetcha} $file + file = spell/ru/main.aap + @if get_md5(file) != "44ff29ba3118d9986eade94133b45427": + :fetch {fetch = $fetcha} $file + file = spell/ga/main.aap + @if get_md5(file) != "dfce6e31d88b7dda8e47bb39c470abe1": + :fetch {fetch = $fetcha} $file + file = spell/rw/main.aap + @if get_md5(file) != "73a6dd8d86ab61620fa72781c17836b5": + :fetch {fetch = $fetcha} $file + file = spell/sw/main.aap + @if get_md5(file) != "1ead1b8250ca20c0aa68073db98c904c": + :fetch {fetch = $fetcha} $file + file = spell/ku/main.aap + @if get_md5(file) != "3817ff491ab10172664e8b753ecbd93e": + :fetch {fetch = $fetcha} $file + file = spell/la/main.aap + @if get_md5(file) != "4886e7daec8d7a1d31ed4b5cac514e60": + :fetch {fetch = $fetcha} $file + file = spell/lv/main.aap + @if get_md5(file) != "254870ac70da1ffaf4cd4e8b5c8b31d7": + :fetch {fetch = $fetcha} $file + file = spell/lt/main.aap + @if get_md5(file) != "af8e458d54a179e3c7005a20b2b5147b": + :fetch {fetch = $fetcha} $file + file = spell/mg/main.aap + @if get_md5(file) != "a92b6bdae03fb1cbb554a29b2d87b826": + :fetch {fetch = $fetcha} $file + file = spell/ms/main.aap + @if get_md5(file) != "182007983e61dcd442c0e7aa43a0f674": + :fetch {fetch = $fetcha} $file + file = spell/mi/main.aap + @if get_md5(file) != "e16ce186c3eab795862d3cfbc57a3e56": + :fetch {fetch = $fetcha} $file + file = spell/nb/main.aap + @if get_md5(file) != "851644acd05f03ce50317279a0c903e2": + :fetch {fetch = $fetcha} $file + file = spell/nn/main.aap + @if get_md5(file) != "2b135a5c2ed2ffb33d5783ab4bf85df2": + :fetch {fetch = $fetcha} $file + file = spell/pt/main.aap + @if get_md5(file) != "f6ce0c8c8862a152644b2093e30a2f20": + :fetch {fetch = $fetcha} $file + file = spell/ro/main.aap + @if get_md5(file) != "874e0a46ceec5553f0e968233d40924a": + :fetch {fetch = $fetcha} $file + file = spell/tn/main.aap + @if get_md5(file) != "f3bc4feb4ca9c7b93c19ea23d93832dd": + :fetch {fetch = $fetcha} $file + file = spell/gd/main.aap + @if get_md5(file) != "ab48fa466fbb41505ca0de14fdc10b0f": + :fetch {fetch = $fetcha} $file + file = spell/sl/main.aap + @if get_md5(file) != "f636cab454d6dbf5d9edd6a9358d3cf3": + :fetch {fetch = $fetcha} $file + file = spell/sv/main.aap + @if get_md5(file) != "3355f08cb2447dc565ad2f775626b528": + :fetch {fetch = $fetcha} $file + file = spell/tl/main.aap + @if get_md5(file) != "63ef6241aa4a2774f9b5e11180b65d39": + :fetch {fetch = $fetcha} $file + file = spell/uk/main.aap + @if get_md5(file) != "319c834d93f002126aa15da395576ac9": + :fetch {fetch = $fetcha} $file + file = spell/cy/main.aap + @if get_md5(file) != "6e656e90b8503372c845221e07f3f369": + :fetch {fetch = $fetcha} $file + file = spell/zu/main.aap + @if get_md5(file) != "7d46702dd578dccfebb873c8eb9921c5": + :fetch {fetch = $fetcha} $file + file = spell/yi/README.txt + @if get_md5(file) != "aa2a984bff90f842b1106ff7157e2380": + :fetch {fetch = $fetcha} $file + file = spell/main.aap + @if get_md5(file) != "2e454cde5b8895278e044360f2abd63c": + :fetch {fetch = $fetcha} $file + file = spell/cleanadd.vim + @if get_md5(file) != "79f4168e03e726c18825ea4419741f47": + :fetch {fetch = $fetcha} $file + file = spell/yi.vim + @if get_md5(file) != "8f922928be4b5e4493c7c5e985c02d77": + :fetch {fetch = $fetcha} $file + file = spell/he.vim + @if get_md5(file) != "75feaee80c55b0733734050fe6928260": + :fetch {fetch = $fetcha} $file + file = spell/cleanadd.vim + @if get_md5(file) != "79f4168e03e726c18825ea4419741f47": + :fetch {fetch = $fetcha} $file + file = spell/fixdup + @if get_md5(file) != "bc2d05429eedcaa2ee6654c288d893a3": + :fetch {fetch = $fetcha} $file + file = spell/README_en.txt + @if get_md5(file) != "d6e763fec92306ee6027b839e5a77e17": + :fetch {fetch = $fetcha} $file + file = spell/en.ascii.spl + @if get_md5(file) != "e674b6543f8da47cfe379e16007bcd83": + :fetch {fetch = $fetcha} $file + file = spell/en.latin1.spl + @if get_md5(file) != "d8f37830c5f70ee4e16dea65bacf7626": + :fetch {fetch = $fetcha} $file + file = spell/en.utf-8.spl + @if get_md5(file) != "ad5521c3f6d6a6c4b2c4bc70611cf0ed": + :fetch {fetch = $fetcha} $file + file = spell/en.ascii.sug + @if get_md5(file) != "c65365f093b81417bfb8dcf00deb424c": + :fetch {fetch = $fetcha} $file + file = spell/en.latin1.sug + @if get_md5(file) != "acacb2876cdec0c0bdfd180ed6d78c4f": + :fetch {fetch = $fetcha} $file + file = spell/en.utf-8.sug + @if get_md5(file) != "af0da03b5c998a8f8ed94a66763febd9": + :fetch {fetch = $fetcha} $file + file = doc/tags + @if get_md5(file) != "42610e6416abd56b9dc11a5aa372b1f1": + :fetch {fetch = $fetcha} $file + :mkdir {f} print + file = print/cp1253.ps + @if get_md5(file) != "da8e09b02fc1472951e9cbcf2b69f9eb": + :fetch {fetch = $fetcha} $file + file = print/cp1254.ps + @if get_md5(file) != "8b96bb351f251d89bc3394670081bfa9": + :fetch {fetch = $fetcha} $file + file = print/cp1255.ps + @if get_md5(file) != "33c3cdf5984284e3c87eb6ab0b22df75": + :fetch {fetch = $fetcha} $file + file = print/dec-mcs.ps + @if get_md5(file) != "7017e861b365ff8d41b6f00d17c88899": + :fetch {fetch = $fetcha} $file + file = print/ebcdic-uk.ps + @if get_md5(file) != "7d367dd06eac2a2b9562f1665d252c83": + :fetch {fetch = $fetcha} $file + file = print/hp-roman8.ps + @if get_md5(file) != "84c504bcdbf4b31a8e4431dff692f94f": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-11.ps + @if get_md5(file) != "f73611895f0092767ee3bf9c3cac0092": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-13.ps + @if get_md5(file) != "e5f08db1cff18cdb60a547b65a197156": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-14.ps + @if get_md5(file) != "122d3b1f06be392c3467800890a6384e": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-15.ps + @if get_md5(file) != "9f4093d544d6e00393263717d84f9d69": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-2.ps + @if get_md5(file) != "c6f7bae1e82087fb174c1b189d123bee": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-4.ps + @if get_md5(file) != "41e39273d8f847bf536ea5baed213c77": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-5.ps + @if get_md5(file) != "759e64123ce8f359069d4a1289f0ccfa": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-7.ps + @if get_md5(file) != "ed95eb358813c388a4bcf6ad2fddee67": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-8.ps + @if get_md5(file) != "e0a5f7a6313593329ea2d821acde66ab": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-9.ps + @if get_md5(file) != "315e33a3342d475d72ae5cf51b002ee0": + :fetch {fetch = $fetcha} $file + file = print/koi8-r.ps + @if get_md5(file) != "8e596759a9882cd0fa43481cb7f550e9": + :fetch {fetch = $fetcha} $file + file = print/latin1.ps + @if get_md5(file) != "8eed7dedb465b6e0456537bcecd8b29e": + :fetch {fetch = $fetcha} $file + file = print/mac-roman.ps + @if get_md5(file) != "01ff7f454336ee635701631b547de91e": + :fetch {fetch = $fetcha} $file + file = print/prolog.ps + @if get_md5(file) != "6892f86e91b6baf8e93f23d817e87680": + :fetch {fetch = $fetcha} $file + file = print/cp1250.ps + @if get_md5(file) != "d4b39d0551b6ab3dac30227859698659": + :fetch {fetch = $fetcha} $file + file = print/cp1251.ps + @if get_md5(file) != "bd42590eaf1686201dea18293de3d3f5": + :fetch {fetch = $fetcha} $file + file = print/cp1257.ps + @if get_md5(file) != "22487f34dd9a78003ac296ce3efa19b0": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-10.ps + @if get_md5(file) != "cd7c34b9307bc1a90e0aaf723d233f75": + :fetch {fetch = $fetcha} $file + file = print/iso-8859-3.ps + @if get_md5(file) != "ed8a3c9a169641ae213d35d801b2577e": + :fetch {fetch = $fetcha} $file + file = print/cp1252.ps + @if get_md5(file) != "0e90852367db3ec1ca22c4bc3b8d2026": + :fetch {fetch = $fetcha} $file + file = print/koi8-u.ps + @if get_md5(file) != "6f5cdf992ea69c8ce82a3ab76f44fe64": + :fetch {fetch = $fetcha} $file + file = print/ascii.ps + @if get_md5(file) != "8b2021e3414c5aba3764ebedd99f9264": + :fetch {fetch = $fetcha} $file + file = print/cidfont.ps + @if get_md5(file) != "2befb01b3ce122821fcc8a5618d3cdd2": + :fetch {fetch = $fetcha} $file + file = print/cns_roman.ps + @if get_md5(file) != "47d7830b6c1ca39161533d95f40f4d1b": + :fetch {fetch = $fetcha} $file + file = print/gb_roman.ps + @if get_md5(file) != "b24c4954f69f724fe2ef25674340fd64": + :fetch {fetch = $fetcha} $file + file = print/jis_roman.ps + @if get_md5(file) != "cfaa694e54ea6f1cfc85854139a9de54": + :fetch {fetch = $fetcha} $file + file = print/ks_roman.ps + @if get_md5(file) != "0dbf52c5d2064517a4a56a0c702c5e57": + :fetch {fetch = $fetcha} $file + file = doc/vim.man + @if get_md5(file) != "9ca72b1f8a8c422a3a02e8a6f875cf7f": + :fetch {fetch = $fetcha} $file + file = doc/vimdiff.man + @if get_md5(file) != "dd9cd36a701786308d61521b8f2aa3c5": + :fetch {fetch = $fetcha} $file + file = doc/vimtutor.man + @if get_md5(file) != "6658e2bb443cd5a6cf7933d63e12f63a": + :fetch {fetch = $fetcha} $file + file = doc/xxd.man + @if get_md5(file) != "5a27037868e3934edb781404851047e4": + :fetch {fetch = $fetcha} $file + file = rgb.txt + @if get_md5(file) != "521f1e09162e21cb9666f9cafca425e6": + :fetch {fetch = $fetcha} $file + file = vim16x16.gif + @if get_md5(file) != "a8c818ca001534ada1a0a99f987897ac": + :fetch {fetch = $fetcha} $file + file = vim32x32.gif + @if get_md5(file) != "80dd1866d53c8dd6c0ee8e03470661d4": + :fetch {fetch = $fetcha} $file + file = vim48x48.gif + @if get_md5(file) != "7682cbd56c887744c348444049683210": + :fetch {fetch = $fetcha} $file + file = vimlogo.cdr + @if get_md5(file) != "f4626656cf843ab08f8c14171300f346": + :fetch {fetch = $fetcha} $file + file = vimlogo.eps + @if get_md5(file) != "d3502ae1631f32c09ca7e577c8348461": + :fetch {fetch = $fetcha} $file + file = vimlogo.gif + @if get_md5(file) != "bc3dcf9297aa84138d15984cb337fe15": + :fetch {fetch = $fetcha} $file + file = vimlogo.pdf + @if get_md5(file) != "1de7e866d69c2f56b4a3f59ed1c98b74": + :fetch {fetch = $fetcha} $file + file = hi16-action-make.png + @if get_md5(file) != "9b8b00fa14d2f99009a215593c0c7985": + :fetch {fetch = $fetcha} $file + file = hi22-action-make.png + @if get_md5(file) != "9c71b3ad9b005f58977618262b6330b7": + :fetch {fetch = $fetcha} $file + file = vim16x16.png + @if get_md5(file) != "0101441754b003fb7fbbe90dfe734f52": + :fetch {fetch = $fetcha} $file + file = vim16x16.xpm + @if get_md5(file) != "ffefe0503e83e101d76438f14f13ef43": + :fetch {fetch = $fetcha} $file + file = vim32x32.png + @if get_md5(file) != "c6979e4a62e273bcdc3fd0d3f297477c": + :fetch {fetch = $fetcha} $file + file = vim32x32.xpm + @if get_md5(file) != "3b631e474870bd47b8576d34e154bfe0": + :fetch {fetch = $fetcha} $file + file = vim48x48.png + @if get_md5(file) != "15a993017f77435643cd32291e7bd436": + :fetch {fetch = $fetcha} $file + file = vim48x48.xpm + @if get_md5(file) != "36b839c5a1cdde4e504ec4ae57b449b6": + :fetch {fetch = $fetcha} $file + file = vimlogo.xpm + @if get_md5(file) != "da399e9e7043c4c7b58af7cbc8e6ca07": + :fetch {fetch = $fetcha} $file diff --git a/runtime/icons.info b/runtime/icons.info deleted file mode 100644 index 566bc5663d947e782e1239b1c0e1d639441ec7fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 624 zcwT!fz`)1=1dQ_-j2N64co^7#d`1Sf&jk$X#vKgEAO)n13Bp#;oB-s^0Pzz(r4rT^q-~dq! z1P2&wAVTs$7D9|jmMxrR4`c0)&HLlVf|rX(1)=8Ukwe1 zvY_hzL0rnufMi|+ioam~ZJmMJzxEKJ`U6lo#{CBv_#u)ARy|%ZpegcjRy~{rWuW>O yVhPaA`@tgr;H*FWAlB#qfBygR2eBS7FxErF{;gWI{|`bPkhK8fQgr{aKqvrbZyi Vim.WB - Protect Vim.WB +s - -2. Rename the Vim icon to Vim.WB. - -3. By default, the Vim icon is a program icon. - Change the icon type from "program" to "project" using IconEdit from the - "Tools" directory. - -4. Change the icon settings using "information" from the WorkBench's "icon" - menu: - - The default program, of course, is "IconX". - - A stack size of 4096 should be sufficient. - - Create a WINDOW tooltype of the desired size. - The appropriate values depend on your WB font. - - Example: - On a standard non-interlaced WB screen with full overscan resolution - (724 x 283 ), the WINDOW tooltype "CON:30/10/664/273" results in a - horizontally centered window with 80 columns and 32 lines. - -Now Vim comes up with the new window size. diff --git a/runtime/icons/README.txt.info b/runtime/icons/README.txt.info deleted file mode 100644 index 489ef148eb34538e3052bfb5884af466c65d39d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 1191 zcwViNy-EW?6ot=V{ObaOHVUGJFAx?>3)?`74JpzHK?uSk1cY?Eb~fTGScYs7E3xwD zEyOedUm#B~X?uVNTpZh(GBT-Pq!up;vBflLZv-^#1w*q~}HQygnD5ab( z% z@B4k<@7y*40k)c9F<9}V!#y!v+S`lIAUv_+0ElL-VO3YD;mp{ejEwxmd-LQE%fcD1 z+_=TVf0vq)>_ITn4GPOSN@T>%m}?4bLDT_7$R?opVLlM*gdE_hA5o7u8$>EYB1jZZsmOs>Mc>DmAG*~ldw)dao12l>t7x>_ z0eE3*7Rnr_7!Q0%)%?^jo?0FiS&W{3fPHCTp~{@aE(pKnBSbEyV;GsjF!&t9flP+I zH4NK+2heim=KvD8PA|YLemm-)#U~&pa5GSe7W9~zz)MjTLkxW~BH8#Jt769(qFZf4 zOjxr9afXVv?rtV<;0n`Y`j^_L)+66~eE)Obh|2S50|-hrWiuHhes~srb3zLG=0xT! zaY8Ek=ET{@bbfRuk{}}nQ<*;lSS6L~t(74Qee**V`sRTW^vw)!p>M5-35X@=n;ELm zHxFc?Z+=Kc-_TF=4RfMzPSB!ni0B(4`i4CEhPBW)88qk{&Nj}3UGvduoDAruz(3vL z&b@lW`jzY-qs{H@?PkW9E8aK1x?x?#+ED#^^WyUQx~lc&Lx&ErxS1>5OI*^5MS0Sa zg|^Jh3_CvA*^Z1C9oZRBAT2Gy+q=V!Zwqqs@>zxSbi~>2lH5WZ-VxCAgz)53n6@?b z_GrL3qI6s>9W&P+A7}s)l=WeG-;j8IFsdz<3NbC0fLfvK(ud-gL;4LBTqcG6+*iM}ysKBYo#bx6w z8XXshL1?3H%qwW|vK9(mG!+VPCig;4IU9<_0MT|qdwJ?I`e&7nd zy($;RR4Ub@QZ1}rlUfgtDxNtTV~t_OX}2(qiyatQTTsb3UB1gUsk diff --git a/runtime/icons/Vim_4ColorsLace.info b/runtime/icons/Vim_4ColorsLace.info deleted file mode 100644 index 49eb7d609537ef5ec02a1e9fccd206462ea9b5c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 358 zcwTMJF-yZh6bJB^+#`K@Nv=bOfW@R8bj?t-lL2QxL&ujD&BUtC3jjA_wq#kj?INA|_tqlx`}t*Hl$VN;gTBT~gB%Qn`-Qx$Y`q`eCgq zd}VJbW|=MM%=W=nT_-aUBVi4B?KM)VORL8lw6(uSr_7AUf!TSeJy`>43Q)_xdk^P5 z;@O+7!wa`A5rYpO<$HwkHAPwUP~PMycZaxq-)k&glpPu9LAYWD{-){Bk#0a-BE(ac VquT~V0Q6bJI_!`=F24E``~(0tP{{xQ diff --git a/runtime/icons/Vim_8Colors.info b/runtime/icons/Vim_8Colors.info deleted file mode 100644 index 4a0d45120d0da705ceaca6f1ba0f9ffa22c487b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 4228 zcwX(6F=`z#5QgV5!K4t36G(4YZWmId5y&`c(j;xpkmIBZIgMbO6ox%SE+E(@g<$gk zqkT5d#t>X4tH=72G@8-;vX-4+=W-CXbGeagxs)@E4{~+$U9LX-mWS=2U*+=kPq}<^ zfzc~G@9vEk1J~%hl*700el%DcES&@QUff#}NhXp()zLSplC?>fjHgPIszGH4FiEN8 zBwiJ)x>l>Qiq!^7mm;~-ufqW=5lcy|QOv_EhIKGY<{b8J8dS!&b#*eQlrreZDKUp4 zhOyn|lqabr)22>G z^26of%t<@WAMbrN5(%zbVR5&BD69h^kDHG^Eh)2^Vk8D z!LdUcC-At1^WDij7QVGz{}YDO`Cb1u-t~{R>mTi()xXsQKmN8RaCc?SAad@=vr~gC z_+~DHYSC}0KnpnWTMEvOnqcwO95unhxTpy*@2m+HpPen0eva9;BHpejCIIlC!gd zDv>2>6z6|F1!b_ym=}q4y-E1>7T0RK7zM|$uC%unx_qwQIM#Wc!LIX6HbdhLwZ+CY zebzgHw0a5s&8gK~p@bI&zaH%L09p8vl?p)ZiA*pE?g%PIoDJxFClIIeod`eNFZ|c4 z$6fMxCtzFSMv$>ji+93&4*iG|`VFNO^;>%z`mL^^-*gH6Np}6a{*booKhgQH?fM7* QH~nWH-+%t}g}oPl05p)glmGw# diff --git a/runtime/icons/Vim_8ColorsLace.info b/runtime/icons/Vim_8ColorsLace.info deleted file mode 100644 index d333f419bad994886fbeb4c22622daf7e63ffb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 2170 zcwX&PF>4e-6n?XB*m<&(+l3S!MCmH-I0-p_ZGkVDL8^)dM&E!fYKp@_|Du+Jy0aONUw`vkE^%D_!DU#o) z`8CqiARVV z$7PNyW#-S7iJmBvMo=Euz%{3WGW7!2oejP&c7oHTPQX1O{7X-WU1&q6tg>j8sYaM9 z6KBe_`^v0tDpN-4+>yGlQkBM2WzNXh22u_pM#2DPFJTZ=E~_UF=&I8G=}$uU*@pJa z;K_N8MUi1~*vDdf4T}xHVlu(gd)@K8XJ+yfyL@u!mWypSbGBi}%h;fcb4G@?3Hakn V5pYWauCqO8cO(80|9{0VzXL)UJShMG diff --git a/runtime/indent/ada.vim b/runtime/indent/ada.vim index 3ce98a38..95dabf91 100644 --- a/runtime/indent/ada.vim +++ b/runtime/indent/ada.vim @@ -1,14 +1,14 @@ "------------------------------------------------------------------------------ " Description: Vim Ada indent file " Language: Ada (2005) -" $Id: ada.vim,v 1.7 2007/05/12 13:30:28 vimboss Exp $ +" $Id: ada.vim,v 1.4 2007/05/05 17:25:37 vimboss Exp $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " Neil Bird " $Author: vimboss $ -" $Date: 2007/05/12 13:30:28 $ +" $Date: 2007/05/05 17:25:37 $ " Version: 4.2 -" $Revision: 1.7 $ +" $Revision: 1.4 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/indent/ada.vim $ " History: 24.05.2006 MK Unified Headers " 16.07.2006 MK Ada-Mode as vim-ball diff --git a/runtime/indent/bst.vim b/runtime/indent/bst.vim index b07ec867..be1f63e8 100644 --- a/runtime/indent/bst.vim +++ b/runtime/indent/bst.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: bst " Author: Tim Pope -" $Id: bst.vim,v 1.4 2007/05/12 15:03:23 vimboss Exp $ +" $Id: bst.vim,v 1.1 2007/05/05 18:11:12 vimboss Exp $ if exists("b:did_indent") finish diff --git a/runtime/indent/cmake.vim b/runtime/indent/cmake.vim index 40881dbb..4315ad23 100644 --- a/runtime/indent/cmake.vim +++ b/runtime/indent/cmake.vim @@ -1,19 +1,19 @@ " ============================================================================= -" +" " Program: CMake - Cross-Platform Makefile Generator -" Module: $RCSfile: cmake.vim,v $ +" Module: $RCSfile: cmake-indent.vim,v $ " Language: VIM -" Date: $Date: 2006/04/30 18:41:59 $ -" Version: $Revision: 1.3 $ -" +" Date: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.7 $ +" " ============================================================================= " Vim indent file " Language: CMake (ft=cmake) " Author: Andy Cedilnik " Maintainer: Andy Cedilnik -" Last Change: $Date: 2006/04/30 18:41:59 $ -" Version: $Revision: 1.3 $ +" Last Change: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.7 $ " " Licence: The CMake license applies to this file. See " http://www.cmake.org/HTML/Copyright.html @@ -65,8 +65,8 @@ fun! CMakeGetIndent(lnum) \ ')\s*' . \ '\(' . cmake_regex_comment . '\)\?$' - let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|WHILE\)\s*(' - let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ENDWHILE\)\s*(' + let cmake_indent_begin_regex = '^\s*\(IF\|MACRO\|FOREACH\|ELSE\|ELSEIF\|WHILE\)\s*(' + let cmake_indent_end_regex = '^\s*\(ENDIF\|ENDFOREACH\|ENDMACRO\|ELSE\|ELSEIF\|ENDWHILE\)\s*(' " Add if previous_line =~? cmake_indent_comment_line " Handle comments diff --git a/runtime/indent/cobol.vim b/runtime/indent/cobol.vim index 671d15b6..8dce3cd0 100644 --- a/runtime/indent/cobol.vim +++ b/runtime/indent/cobol.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: cobol " Author: Tim Pope -" $Id: cobol.vim,v 1.4 2007/05/12 14:59:12 vimboss Exp $ +" $Id: cobol.vim,v 1.1 2007/05/05 18:08:19 vimboss Exp $ if exists("b:did_indent") finish diff --git a/runtime/indent/erlang.vim b/runtime/indent/erlang.vim new file mode 100644 index 00000000..5ce3f82e --- /dev/null +++ b/runtime/indent/erlang.vim @@ -0,0 +1,206 @@ +" Vim indent file +" Language: Erlang +" Maintainer: Csaba Hoch +" Contributor: Edwin Fine +" Last Change: 2008 Mar 12 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=ErlangIndent() +setlocal indentkeys+==after,=end,=catch,=),=],=} + +" Only define the functions once. +if exists("*ErlangIndent") + finish +endif + +" The function go through the whole line, analyses it and sets the indentation +" (ind variable). +" l: the number of the line to be examined. +function s:ErlangIndentAtferLine(l) + let i = 0 " the index of the current character in the line + let length = strlen(a:l) " the length of the line + let ind = 0 " how much should be the difference between the indentation of + " the current line and the indentation of the next line? + " e.g. +1: the indentation of the next line should be equal to + " the indentation of the current line plus one shiftwidth + let lastFun = 0 " the last token was a 'fun' + let lastReceive = 0 " the last token was a 'receive'; needed for 'after' + let lastHashMark = 0 " the last token was a 'hashmark' + + while 0<= i && i < length + + " m: the next value of the i + if a:l[i] == '%' + break + elseif a:l[i] == '"' + let m = matchend(a:l,'"\%([^"\\]\|\\.\)*"',i) + let lastReceive = 0 + elseif a:l[i] == "'" + let m = matchend(a:l,"'[^']*'",i) + let lastReceive = 0 + elseif a:l[i] =~# "[a-z]" + let m = matchend(a:l,".[[:alnum:]_]*",i) + if lastFun + let ind = ind - 1 + let lastFun = 0 + let lastReceive = 0 + elseif a:l[(i):(m-1)] =~# '^\%(case\|if\|try\)$' + let ind = ind + 1 + elseif a:l[(i):(m-1)] =~# '^receive$' + let ind = ind + 1 + let lastReceive = 1 + elseif a:l[(i):(m-1)] =~# '^begin$' + let ind = ind + 2 + let lastReceive = 0 + elseif a:l[(i):(m-1)] =~# '^end$' + let ind = ind - 2 + let lastReceive = 0 + elseif a:l[(i):(m-1)] =~# '^after$' + if lastReceive == 0 + let ind = ind - 1 + else + let ind = ind + 0 + end + let lastReceive = 0 + elseif a:l[(i):(m-1)] =~# '^fun$' + let ind = ind + 1 + let lastFun = 1 + let lastReceive = 0 + endif + elseif a:l[i] =~# "[A-Z_]" + let m = matchend(a:l,".[[:alnum:]_]*",i) + let lastReceive = 0 + elseif a:l[i] == '$' + let m = i+2 + let lastReceive = 0 + elseif a:l[i] == "." && (i+1>=length || a:l[i+1]!~ "[0-9]") + let m = i+1 + if lastHashMark + let lastHashMark = 0 + else + let ind = ind - 1 + end + let lastReceive = 0 + elseif a:l[i] == '-' && (i+1') + let m = i+2 + let ind = ind + 1 + let lastReceive = 0 + elseif a:l[i] == ';' + let m = i+1 + let ind = ind - 1 + let lastReceive = 0 + elseif a:l[i] == '#' + let m = i+1 + let lastHashMark = 1 + elseif a:l[i] =~# '[({[]' + let m = i+1 + let ind = ind + 1 + let lastFun = 0 + let lastReceive = 0 + let lastHashMark = 0 + elseif a:l[i] =~# '[)}\]]' + let m = i+1 + let ind = ind - 1 + let lastReceive = 0 + else + let m = i+1 + endif + + let i = m + + endwhile + + return ind + +endfunction + +function s:FindPrevNonBlankNonComment(lnum) + let lnum = prevnonblank(a:lnum) + let line = getline(lnum) + " continue to search above if the current line begins with a '%' + while line =~# '^\s*%.*$' + let lnum = prevnonblank(lnum - 1) + if 0 == lnum + return 0 + endif + let line = getline(lnum) + endwhile + return lnum +endfunction + +function ErlangIndent() + + " Find a non-blank line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " Hit the start of the file, use zero indent. + if lnum == 0 + return 0 + endif + + let prevline = getline(lnum) + let currline = getline(v:lnum) + + let ind = indent(lnum) + &sw * s:ErlangIndentAtferLine(prevline) + + " special cases: + if prevline =~# '^\s*\%(after\|end\)\>' + let ind = ind + 2*&sw + endif + if currline =~# '^\s*end\>' + let ind = ind - 2*&sw + endif + if currline =~# '^\s*after\>' + let plnum = s:FindPrevNonBlankNonComment(v:lnum-1) + if getline(plnum) =~# '^[^%]*\\s*\%(%.*\)\=$' + let ind = ind - 1*&sw + " If the 'receive' is not in the same line as the 'after' + else + let ind = ind - 2*&sw + endif + endif + if prevline =~# '^\s*[)}\]]' + let ind = ind + 1*&sw + endif + if currline =~# '^\s*[)}\]]' + let ind = ind - 1*&sw + endif + if prevline =~# '^\s*\%(catch\)\s*\%(%\|$\)' + let ind = ind + 1*&sw + endif + if currline =~# '^\s*\%(catch\)\s*\%(%\|$\)' + let ind = ind - 1*&sw + endif + + if ind<0 + let ind = 0 + endif + return ind + +endfunction + +" TODO: +" +" f() -> +" x("foo +" bar") +" , +" bad_indent. +" +" fun +" init/0, +" bad_indent +" +" #rec +" .field, +" bad_indent +" +" case X of +" 1 when A; B -> +" bad_indent + diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim index 870fb96c..58f0cdd3 100644 --- a/runtime/indent/eruby.vim +++ b/runtime/indent/eruby.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: eRuby " Maintainer: Tim Pope -" Info: $Id: eruby.vim,v 1.8 2007/05/12 13:38:20 vimboss Exp $ +" Info: $Id: eruby.vim,v 1.9 2007/04/16 17:03:36 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns @@ -43,7 +43,7 @@ endif function! GetErubyIndent() let vcol = col('.') call cursor(v:lnum,1) - let inruby = searchpair('<%','','%>') + let inruby = searchpair('<%','','%>','W') call cursor(v:lnum,vcol) if inruby && getline(v:lnum) !~ '^<%' let ind = GetRubyIndent() @@ -70,4 +70,4 @@ function! GetErubyIndent() return ind endfunction -" vim:set sw=2 sts=2 ts=8 noet ff=unix: +" vim:set sw=2 sts=2 ts=8 noet: diff --git a/runtime/indent/gitconfig.vim b/runtime/indent/gitconfig.vim new file mode 100644 index 00000000..24cdc820 --- /dev/null +++ b/runtime/indent/gitconfig.vim @@ -0,0 +1,37 @@ +" Vim indent file +" Language: git config file +" Maintainer: Tim Pope +" Last Change: 2007 Dec 20 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal autoindent +setlocal indentexpr=GetGitconfigIndent() +setlocal indentkeys=o,O,*,0[,],0;,0#,=,!^F + +" Only define the function once. +if exists("*GetGitconfigIndent") + finish +endif + +function! GetGitconfigIndent() + let line = getline(v:lnum-1) + let cline = getline(v:lnum) + if line =~ '[^\\]\@<=\%(\\\\\)*\\$' + " odd number of slashes, in a line continuation + return -1 + elseif cline =~ '^\s*\[' + return 0 + elseif cline =~ '^\s*\a' + return &sw + elseif cline == '' && line =~ '^\[' + return &sw + else + return -1 + endif +endfunction + +" vim:set sw=4 sts=4 noet: diff --git a/runtime/indent/lua.vim b/runtime/indent/lua.vim index ffe03be4..21b02f15 100644 --- a/runtime/indent/lua.vim +++ b/runtime/indent/lua.vim @@ -2,7 +2,7 @@ " Language: Lua script " Maintainer: Marcus Aurelius Farias " First Author: Max Ischenko -" Last Change: 2005 Jun 23 +" Last Change: 2007 Jul 23 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -25,33 +25,37 @@ endif function! GetLuaIndent() " Find a non-blank line above the current line. - let lnum = prevnonblank(v:lnum - 1) + let prevlnum = prevnonblank(v:lnum - 1) " Hit the start of the file, use zero indent. - if lnum == 0 + if prevlnum == 0 return 0 endif " Add a 'shiftwidth' after lines that start a block: " 'function', 'if', 'for', 'while', 'repeat', 'else', 'elseif', '{' - let ind = indent(lnum) - let flag = 0 - let prevline = getline(lnum) - if prevline =~ '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)' - \ || prevline =~ '{\s*$' || prevline =~ '\\s*\%(\k\|[.:]\)\{-}\s*(' - let ind = ind + &shiftwidth - let flag = 1 + let ind = indent(prevlnum) + let prevline = getline(prevlnum) + let midx = match(prevline, '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)') + if midx == -1 + let midx = match(prevline, '{\s*$') + if midx == -1 + let midx = match(prevline, '\\s*\%(\k\|[.:]\)\{-}\s*(') + endif endif - " Subtract a 'shiftwidth' after lines ending with - " 'end' when they begin with 'while', 'if', 'for', etc. too. - if flag == 1 && prevline =~ '\\|\' - let ind = ind - &shiftwidth + if midx != -1 + " Add 'shiftwidth' if what we found previously is not in a comment and + " an "end" or "until" is not present on the same line. + if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\\|\' + let ind = ind + &shiftwidth + endif endif " Subtract a 'shiftwidth' on end, else (and elseif), until and '}' " This is the part that requires 'indentkeys'. - if getline(v:lnum) =~ '^\s*\%(end\|else\|until\|}\)' + let midx = match(getline(v:lnum), '^\s*\%(end\|else\|until\|}\)') + if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment" let ind = ind - &shiftwidth endif diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim index 8ba3b2ea..d73460d0 100644 --- a/runtime/indent/php.vim +++ b/runtime/indent/php.vim @@ -2,7 +2,7 @@ " Language: PHP " Author: John Wellesz " URL: http://www.2072productions.com/vim/indent/php.vim -" Last Change: 2007 February 25th +" Last Change: 2007 Jun 24 " Newsletter: http://www.2072productions.com/?to=php-indent-for-vim-newsletter.php " Version: 1.24 " @@ -310,11 +310,11 @@ function! ResetOptions() setlocal comments=s1:/*,mb:*,ex:*/,://,:# - setlocal formatoptions-=t + " setlocal formatoptions-=t setlocal formatoptions+=q setlocal formatoptions+=r setlocal formatoptions+=o - setlocal formatoptions+=w + " setlocal formatoptions+=w setlocal formatoptions+=c setlocal formatoptions+=b endif diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim index 49651076..b3f43a2b 100644 --- a/runtime/indent/ruby.vim +++ b/runtime/indent/ruby.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Ruby " Maintainer: Nikolai Weibull -" Info: $Id: ruby.vim,v 1.9 2007/05/12 14:17:21 vimboss Exp $ +" Info: $Id: ruby.vim,v 1.40 2007/03/20 13:54:25 dkearns Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns @@ -370,4 +370,4 @@ endfunction let &cpo = s:cpo_save unlet s:cpo_save -" vim:set sw=2 sts=2 ts=8 noet ff=unix: +" vim:set sw=2 sts=2 ts=8 noet: diff --git a/runtime/indent/sql.vim b/runtime/indent/sql.vim index f7cf8347..4f82b96a 100644 --- a/runtime/indent/sql.vim +++ b/runtime/indent/sql.vim @@ -36,4 +36,4 @@ endif exec 'runtime indent/'.filename.'.vim' -" vim:sw=4:ff=unix: +" vim:sw=4: diff --git a/runtime/indent/sqlanywhere.vim b/runtime/indent/sqlanywhere.vim index c2f527eb..a649bd9f 100644 --- a/runtime/indent/sqlanywhere.vim +++ b/runtime/indent/sqlanywhere.vim @@ -381,4 +381,4 @@ function GetSQLIndent() return ModuloIndent(ind) endfunction -" vim:sw=4:ff=unix: +" vim:sw=4: diff --git a/runtime/indent/tcsh.vim b/runtime/indent/tcsh.vim index a33bdb71..cd18f061 100644 --- a/runtime/indent/tcsh.vim +++ b/runtime/indent/tcsh.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: C-shell (tcsh) " Maintainer: Gautam Iyer -" Last Modified: Wed 04 Feb 2004 04:36:07 PM CST +" Last Modified: Sat 16 Jun 2007 04:27:45 PM PDT " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -11,7 +11,7 @@ endif let b:did_indent = 1 setlocal indentexpr=TcshGetIndent() -setlocal indentkeys+=e,0=end,0=endsw,* indentkeys-=0{,0},0),:,0# +setlocal indentkeys+=e,0=end,0=endsw indentkeys-=0{,0},0),:,0# " Only define the function once. if exists("*TcshGetIndent") diff --git a/runtime/indent/tf.vim b/runtime/indent/tf.vim new file mode 100644 index 00000000..61cebc3a --- /dev/null +++ b/runtime/indent/tf.vim @@ -0,0 +1,72 @@ +" Vim indent file +" Language: tf (TinyFugue) +" Maintainer: Christian J. Robinson +" URL: http://www.infynity.spodzone.com/vim/indent/tf.vim +" Last Change: 2002 May 29 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetTFIndent() +setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=: +setlocal indentkeys+==/endif,=/then,=/else,=/done,0; + +" Only define the function once: +if exists("*GetTFIndent") + finish +endif + +function GetTFIndent() + " Find a non-blank line above the current line: + let lnum = prevnonblank(v:lnum - 1) + + " No indent for the start of the file: + if lnum == 0 + return 0 + endif + + let ind = indent(lnum) + let line = getline(lnum) + + " No indentation if the previous line didn't end with "\": + " (Could be annoying, but it lets you know if you made a mistake.) + if line !~ '\\$' + return 0 + endif + + if line =~ '\(/def.*\\\|/for.*\(%;\s*\)\@\ -" Version: 1.50 -" Last Change: 2007 Jan 29 +" Version: 1.54 +" Last Change: 2007 Aug 17 " URL: http://www.vim.org/scripts/script.php?script_id=1450 " only load this indent file when no other was loaded @@ -28,13 +28,13 @@ let s:ES = '\s*\%(--.*\)\=$' let s:NE = '\%(\ 0 ? indent(prevn) : 0 @@ -77,8 +78,8 @@ function GetVHDLindent() if curs =~ '^\s*--' let pn = curn - 1 let ps = getline(pn) - if ps =~ '--' - return stridx(ps, '--') + if curs =~ '^\s*--\s' && ps =~ '--' + return indent(pn) + stridx(substitute(ps, '^\s*', '', ''), '--') else " find nextnonblank line that is not a comment let nn = nextnonblank(curn + 1) @@ -106,14 +107,14 @@ function GetVHDLindent() if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(generic\|map\|port\)\>.*\)\@\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)\)') && (prevs =~? s:NC.'\<\%(generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(generic\|map\|port\)'.s:ES && prevs =~ '^\s*(')) " align closing ")" with opening "(" if curs =~ '^\s*)' - return stridx(prevs, '(') + return ind2 + stridx(prevs_noi, '(') endif - let m = matchend(prevs, '(\s*\ze\w') + let m = matchend(prevs_noi, '(\s*\ze\w') if m != -1 - return m + return ind2 + m else - if g:vhdl_align_genportmap - return stridx(prevs, '(') + &sw + if g:vhdl_indent_genportmap + return ind2 + stridx(prevs_noi, '(') + &sw else return ind2 + &sw endif @@ -124,8 +125,8 @@ function GetVHDLindent() " keywords: variable + "<=" without ";" ending " where: start of previous line if prevs =~? '^\s*\S\+\s*<=[^;]*'.s:ES - if g:vhdl_align_rhsassign - return matchend(prevs, '<=\s*\ze.') + if g:vhdl_indent_rhsassign + return ind2 + matchend(prevs_noi, '<=\s*\ze.') else return ind2 + &sw endif diff --git a/runtime/keymap/croatian.vim b/runtime/keymap/croatian.vim new file mode 100644 index 00000000..b52eba03 --- /dev/null +++ b/runtime/keymap/croatian.vim @@ -0,0 +1,16 @@ +let s:encoding = &enc +if s:encoding == 'latin1' + if has("unix") + let s:encoding = 'iso-8859-2' + else + let s:encoding = 'cp1250' + endif +endif + +if s:encoding == 'utf-8' + source :p:h/croatian_utf-8.vim +elseif s:encoding == 'cp1250' + source :p:h/croatian_cp1250.vim +else + source :p:h/croatian_iso-8859-2.vim +endif diff --git a/runtime/keymap/croatian_cp1250.vim b/runtime/keymap/croatian_cp1250.vim new file mode 100644 index 00000000..a5a92e38 --- /dev/null +++ b/runtime/keymap/croatian_cp1250.vim @@ -0,0 +1,65 @@ +" Vim Keymap file for Croatian characters, classical variant, cp1250 encoding +" +" Maintainer: Paul B. Mahol +" Last Changed: 2007 Oct 15 + +scriptencoding cp1250 + +let b:keymap_name = "croatian-cp1250" +" Uncomment line below if you prefer short name +"let b:keymap_name = "hr-cp1250" + +loadkeymap +z y +Z Y +y z +Y Z +[ š +{ Š +] ð +} Ð +; è +: È +' æ +" Æ +\ ž +| Ž +/ - +? _ +> : +< ; +¬ < +® > +â { +î } +æ [ +ç ] +ñ \ +÷ | += + ++ * +- ' +_ ? +@ " +^ & +& / +* ( +( ) +) = +± ~ +ö @ +³ ^ +å € +í § +Û ÷ +Ý × +Ü ¤ +§ ß +µ ° +½ ¸ +· ` +¹ ´ +² ¡ +ë ³ +ì £ +´ ¢ diff --git a/runtime/keymap/croatian_iso-8859-2.vim b/runtime/keymap/croatian_iso-8859-2.vim new file mode 100644 index 00000000..4afb0a1e --- /dev/null +++ b/runtime/keymap/croatian_iso-8859-2.vim @@ -0,0 +1,84 @@ +" Vim Keymap file for Croatian characters, classical variant, iso-8859-2 encoding +" +" Maintainer: Paul B. Mahol +" Last Changed: 2007 Oct 14 + +scriptencoding iso-8859-2 + +let b:keymap_name = "croatian-iso-8859-2" +" Uncomment line below if you prefer short name +"let b:keymap_name = "hr-iso-8859-2" + +loadkeymap +" swap y and z, not important +z y +Z Y +y z +Y Z + +" s< +[ ¹ +" S< +{ © +" D/ +} Ð +" d/ +] ð +" c< +; è +" c' +' æ +" C< +: È +" C' +" Æ +" z< +\ ¾ +" Z< +| ® +÷ | +ö @ +ñ \ +Û ÷ +Ý × +ý × +§ ß +í § +Ü ¤ +ü ¤ +â { +î } +æ [ +ç ] +@ " +^ & +& / +* ( +( ) +) = +_ ? +- ' += + ++ * +/ - +< ; +> : +? _ +± ~ +² · +´ ¢ +µ ° +³ ^ +ì ³ +Ì £ +· ` +¹ ´ +° ½ +­ ¨ + +" you still want to be able to type <, > +¬ < +® > + +` ¸ +½ ¸ diff --git a/runtime/keymap/croatian_utf-8.vim b/runtime/keymap/croatian_utf-8.vim new file mode 100644 index 00000000..11c005f0 --- /dev/null +++ b/runtime/keymap/croatian_utf-8.vim @@ -0,0 +1,68 @@ +" Vim Keymap file for Croatian characters, classical variant, UTF-8 encoding +" +" Maintainer: Paul B. Mahol +" Last Changed: 2007 Oct 14 + +scriptencoding UTF-8 + +let b:keymap_name = "croatian-UTF-8" +" Uncomment line below if you prefer short name +"let b:keymap_name = "hr-UTF-8" + +loadkeymap +z y +Z Y +y z +Y Z +[ š +{ Š +] đ +} Đ +; č +: Č +' ć +" Ć +\ ž +| Ž +@ " +^ & +& / +* ( +( ) +) = +_ ? ++ * += + +- ' +æ [ +ç ] +â { +î } +< ; +> : +/ - +? _ +ö @ +ñ \ +÷ | +å € +¬ < +® > +± ~ +² ˇ +³ ^ +´ ˘ +µ ° +· ` +¹ ´ +í § +Û ÷ +Ü ¤ +Ý × +§ ß +ì ł +Ì Ł +° ˝ +` ¸ +½ ¸ +­ ¨ diff --git a/runtime/keymap/russian-dvorak.vim b/runtime/keymap/russian-dvorak.vim new file mode 100644 index 00000000..498ffa1b --- /dev/null +++ b/runtime/keymap/russian-dvorak.vim @@ -0,0 +1,89 @@ +" Vim Keymap file for russian characters, layout 'dvorak', MS Windows variant +" Derived from russian-jcuken.vim by Artem Chuprina +" Useful mainly with utf-8 but may work with other encodings + +" Maintainer: Serhiy Boiko +" Last Changed: 2007 Jun 29 + +" All characters are given literally, conversion to another encoding (e.g., +" UTF-8) should work. +scriptencoding utf-8 + +let b:keymap_name = "ru" + +loadkeymap +~ Ё CYRILLIC CAPITAL LETTER IO +` ё CYRILLIC SMALL LETTER IO +U А CYRILLIC CAPITAL LETTER A +W Б CYRILLIC CAPITAL LETTER BE +E В CYRILLIC CAPITAL LETTER VE +G Г CYRILLIC CAPITAL LETTER GHE +N Д CYRILLIC CAPITAL LETTER DE +Y Е CYRILLIC CAPITAL LETTER IE +S Ж CYRILLIC CAPITAL LETTER ZHE +L З CYRILLIC CAPITAL LETTER ZE +X И CYRILLIC CAPITAL LETTER I +\" Й CYRILLIC CAPITAL LETTER SHORT I +P К CYRILLIC CAPITAL LETTER KA +T Л CYRILLIC CAPITAL LETTER EL +K М CYRILLIC CAPITAL LETTER EM +F Н CYRILLIC CAPITAL LETTER EN +H О CYRILLIC CAPITAL LETTER O +I П CYRILLIC CAPITAL LETTER PE +D Р CYRILLIC CAPITAL LETTER ER +J С CYRILLIC CAPITAL LETTER ES +B Т CYRILLIC CAPITAL LETTER TE +> У CYRILLIC CAPITAL LETTER U +A Ф CYRILLIC CAPITAL LETTER EF +? Х CYRILLIC CAPITAL LETTER HA +< Ц CYRILLIC CAPITAL LETTER TSE +Q Ч CYRILLIC CAPITAL LETTER CHE +C Ш CYRILLIC CAPITAL LETTER SHA +R Щ CYRILLIC CAPITAL LETTER SHCHA ++ Ъ CYRILLIC CAPITAL LETTER HARD SIGN +O Ы CYRILLIC CAPITAL LETTER YERU +M Ь CYRILLIC CAPITAL LETTER SOFT SIGN +_ Э CYRILLIC CAPITAL LETTER E +V Ю CYRILLIC CAPITAL LETTER YU +: Я CYRILLIC CAPITAL LETTER YA +u а CYRILLIC SMALL LETTER A +w б CYRILLIC SMALL LETTER BE +e в CYRILLIC SMALL LETTER VE +g г CYRILLIC SMALL LETTER GHE +n д CYRILLIC SMALL LETTER DE +y е CYRILLIC SMALL LETTER IE +s ж CYRILLIC SMALL LETTER ZHE +l з CYRILLIC SMALL LETTER ZE +x и CYRILLIC SMALL LETTER I +' й CYRILLIC SMALL LETTER SHORT I +p к CYRILLIC SMALL LETTER KA +t л CYRILLIC SMALL LETTER EL +k м CYRILLIC SMALL LETTER EM +f н CYRILLIC SMALL LETTER EN +h о CYRILLIC SMALL LETTER O +i п CYRILLIC SMALL LETTER PE +d р CYRILLIC SMALL LETTER ER +j с CYRILLIC SMALL LETTER ES +b т CYRILLIC SMALL LETTER TE +. у CYRILLIC SMALL LETTER U +a ф CYRILLIC SMALL LETTER EF +/ х CYRILLIC SMALL LETTER HA +, ц CYRILLIC SMALL LETTER TSE +q ч CYRILLIC SMALL LETTER CHE +c ш CYRILLIC SMALL LETTER SHA +r щ CYRILLIC SMALL LETTER SHCHA += ъ CYRILLIC SMALL LETTER HARD SIGN +o ы CYRILLIC SMALL LETTER YERU +m ь CYRILLIC SMALL LETTER SOFT SIGN +- э CYRILLIC SMALL LETTER E +v ю CYRILLIC SMALL LETTER YU +; я CYRILLIC SMALL LETTER YA +@ " +# № NUMERO SIGN +$ ; +^ : +& ? +z . +Z , +[ - +] = diff --git a/runtime/keymap/russian-yawerty.vim b/runtime/keymap/russian-yawerty.vim index 165d7ec9..64949ffa 100644 --- a/runtime/keymap/russian-yawerty.vim +++ b/runtime/keymap/russian-yawerty.vim @@ -1,8 +1,8 @@ " Vim Keymap file for russian characters, phonetic layout 'yawerty' " Useful mainly with utf-8 but may work with other encodings -" Maintainer: Igor Goldenberg -" Last Changed: 2002 Jan 14 +" Maintainer: Igor Goldenberg +" Last Changed: 2007 Aug 15 " All characters are given literally, conversion to another encoding (e.g., " UTF-8) should work. @@ -17,7 +17,7 @@ W В CYRILLIC CAPITAL LETTER VE G Г CYRILLIC CAPITAL LETTER GHE D Д CYRILLIC CAPITAL LETTER DE E Е CYRILLIC CAPITAL LETTER IE -& Ё CYRILLIC CAPITAL LETTER IO +$ Ё CYRILLIC CAPITAL LETTER IO V Ж CYRILLIC CAPITAL LETTER ZHE Z З CYRILLIC CAPITAL LETTER ZE I И CYRILLIC CAPITAL LETTER I @@ -38,7 +38,7 @@ C Ц CYRILLIC CAPITAL LETTER TSE + Ч CYRILLIC CAPITAL LETTER CHE { Ш CYRILLIC CAPITAL LETTER SHA } Щ CYRILLIC CAPITAL LETTER SHCHA -$ Ъ CYRILLIC CAPITAL LETTER HARD SIGN +^ Ъ CYRILLIC CAPITAL LETTER HARD SIGN Y Ы CYRILLIC CAPITAL LETTER YERU X Ь CYRILLIC CAPITAL LETTER SOFT SIGN | Э CYRILLIC CAPITAL LETTER E @@ -50,7 +50,7 @@ w в CYRILLIC SMALL LETTER VE g г CYRILLIC SMALL LETTER GHE d д CYRILLIC SMALL LETTER DE e е CYRILLIC SMALL LETTER IE -^ ё CYRILLIC SMALL LETTER IO +# ё CYRILLIC SMALL LETTER IO v ж CYRILLIC SMALL LETTER ZHE z з CYRILLIC SMALL LETTER ZE i и CYRILLIC SMALL LETTER I @@ -71,7 +71,7 @@ c ц CYRILLIC SMALL LETTER TSE = ч CYRILLIC SMALL LETTER CHE [ ш CYRILLIC SMALL LETTER SHA ] щ CYRILLIC SMALL LETTER SHCHA -# ъ CYRILLIC SMALL LETTER HARD SIGN +% ъ CYRILLIC SMALL LETTER HARD SIGN y ы CYRILLIC SMALL LETTER YERU x ь CYRILLIC SMALL LETTER SOFT SIGN \\ э CYRILLIC SMALL LETTER E diff --git a/runtime/keymap/sinhala-phonetic_utf-8.vim b/runtime/keymap/sinhala-phonetic_utf-8.vim index cd8b2e8e..adedc3f7 100644 --- a/runtime/keymap/sinhala-phonetic_utf-8.vim +++ b/runtime/keymap/sinhala-phonetic_utf-8.vim @@ -1,7 +1,7 @@ " Vim Keymap file for Sinhala (Sri Lanka) (2003-11-02) " Maintainer : Harshula Jayasuriya -" Last Updated: 2006-06-08 -" This is a static phonetic mapping for a standard US-English keyboard +" Last Updated: 2007-06-30 +" This is a phonetic static mapping for a standard US-English keyboard " (qwerty) " http://www.nongnu.org/sinhala/doc/keymaps/sinhala-keyboard_3.html @@ -48,18 +48,18 @@ J " ඣ - mahaapraana jayanna (jha) z " ඤ - taaluja naasikyaya (nya) Z " ඥ - taaluja sanyooga naasikyaya (jnya) " ඦ - sanyaka jayanna (nyja) -t " ට - alpapraana ttayanna (tta) -T " ඨ - mahaapraana ttayanna (ttha) -d " ඩ - alpapraana ddayanna (dda) -D " ඪ - mahaapraana ddayanna (ddha) + " ට - alpapraana ttayanna (tta) + " ඨ - mahaapraana ttayanna (ttha) + " ඩ - alpapraana ddayanna (dda) + " ඪ - mahaapraana ddayanna (ddha) N " ණ - muurdhaja nayanna (nna) -x " ඬ - sanyaka ddayanna (nndda) - " ත - alpapraana tayanna (ta) - " ථ - mahaapraana tayanna (tha) - " ද - alpapraana dayanna (da) - " ධ - mahaapraana dayanna (dha) +X " ඬ - sanyaka ddayanna (nndda) +t " ත - alpapraana tayanna (ta) +T " ථ - mahaapraana tayanna (tha) +d " ද - alpapraana dayanna (da) +D " ධ - mahaapraana dayanna (dha) n " න - dantaja nayanna (na) -X " ඳ - sanyaka dayanna (nda) +x " ඳ - sanyaka dayanna (nda) p " ප - alpapraana payanna (pa) P " ඵ - mahaapraana payanna (pha) b " බ - alpapraana bayanna (ba) @@ -70,13 +70,13 @@ y " ය - yayanna (ya) r " ර - rayanna (ra) l " ල - dantaja layanna (la) v " ව - vayanna (va) - " ශ - taaluja sayanna (sha) -S " ෂ - muurdhaja sayanna (ssa) +S " ශ - taaluja sayanna (sha) + " ෂ - muurdhaja sayanna (ssa) s " ස - dantaja sayanna (sa) h " හ - hayanna (ha) L " ළ - muurdhaja layanna (lla) f " ෆ - fayanna (fa) - " ් - al-lakuna + " ් - al-lakuna " ා - aela-pilla (aa) " ැ - ketti aeda-pilla (ae) " ෑ - diga aeda-pilla (aae) @@ -96,12 +96,12 @@ f " ෆ - fayanna (fa) " ෳ - diga gayanukitta (ll) " ෴ - kunddaliya (punctuation) -R " ්‍ර - rakaransaya +R " ්‍ර - rakaaranshaya Y " ්‍ය - yansaya - " ර්‍ - repaya + " ර්‍ - repaya - " join - conjunct letters cons 0DCA ZWJ cons - " touch - cons ZWJ 0DCA cons + " join - conjunct letters cons 0DCA ZWJ cons + " touch - cons ZWJ 0DCA cons - " - no-break space. didn't work. - " - ZWNJ. doesn't work! + " - no-break space. didn't work. + " - ZWNJ. doesn't work! diff --git a/runtime/keymap/ukrainian-dvorak.vim b/runtime/keymap/ukrainian-dvorak.vim new file mode 100644 index 00000000..589dae1e --- /dev/null +++ b/runtime/keymap/ukrainian-dvorak.vim @@ -0,0 +1,92 @@ +" Vim Keymap file for ukrainian characters, layout 'dvorak', +" MS Windows variant +" Derived from ukrainian-jcuken.vim by Anatoli Sakhnik +" Useful mainly with utf-8 but may work with other encodings + +" Maintainer: Serhiy Boiko +" Last Changed: 2007 Jun 29 + +" All characters are given literally, conversion to another encoding (e.g., +" UTF-8) should work. +scriptencoding utf-8 + +let b:keymap_name = "uk" + +loadkeymap +~ ~ CYRILLIC CAPITAL LETTER IO +` ' CYRILLIC SMALL LETTER IO +U А CYRILLIC CAPITAL LETTER A +W Б CYRILLIC CAPITAL LETTER BE +E В CYRILLIC CAPITAL LETTER VE +G Г CYRILLIC CAPITAL LETTER GHE +N Д CYRILLIC CAPITAL LETTER DE +Y Е CYRILLIC CAPITAL LETTER IE +S Ж CYRILLIC CAPITAL LETTER ZHE +L З CYRILLIC CAPITAL LETTER ZE +X И CYRILLIC CAPITAL LETTER I +\" Й CYRILLIC CAPITAL LETTER SHORT I +P К CYRILLIC CAPITAL LETTER KA +T Л CYRILLIC CAPITAL LETTER EL +K М CYRILLIC CAPITAL LETTER EM +F Н CYRILLIC CAPITAL LETTER EN +H О CYRILLIC CAPITAL LETTER O +I П CYRILLIC CAPITAL LETTER PE +D Р CYRILLIC CAPITAL LETTER ER +J С CYRILLIC CAPITAL LETTER ES +B Т CYRILLIC CAPITAL LETTER TE +> У CYRILLIC CAPITAL LETTER U +A Ф CYRILLIC CAPITAL LETTER EF +? Х CYRILLIC CAPITAL LETTER HA +< Ц CYRILLIC CAPITAL LETTER TSE +Q Ч CYRILLIC CAPITAL LETTER CHE +C Ш CYRILLIC CAPITAL LETTER SHA +R Щ CYRILLIC CAPITAL LETTER SHCHA ++ Ї CYRILLIC CAPITAL LETTER YI +O І CYRILLIC CAPITAL LETTER BYELORUSSION-UKRAINIAN I +M Ь CYRILLIC CAPITAL LETTER SOFT SIGN +_ Є CYRILLIC CAPITAL LETTER UKRAINIAN IE +V Ю CYRILLIC CAPITAL LETTER YU +: Я CYRILLIC CAPITAL LETTER YA +| Ґ CYRILLIC CAPITAL LETTER GHE WITH UPTURN +u а CYRILLIC SMALL LETTER A +w б CYRILLIC SMALL LETTER BE +e в CYRILLIC SMALL LETTER VE +g г CYRILLIC SMALL LETTER GHE +n д CYRILLIC SMALL LETTER DE +y е CYRILLIC SMALL LETTER IE +s ж CYRILLIC SMALL LETTER ZHE +l з CYRILLIC SMALL LETTER ZE +x и CYRILLIC SMALL LETTER I +' й CYRILLIC SMALL LETTER SHORT I +p к CYRILLIC SMALL LETTER KA +t л CYRILLIC SMALL LETTER EL +k м CYRILLIC SMALL LETTER EM +f н CYRILLIC SMALL LETTER EN +h о CYRILLIC SMALL LETTER O +i п CYRILLIC SMALL LETTER PE +d р CYRILLIC SMALL LETTER ER +j с CYRILLIC SMALL LETTER ES +b т CYRILLIC SMALL LETTER TE +. у CYRILLIC SMALL LETTER U +a ф CYRILLIC SMALL LETTER EF +/ х CYRILLIC SMALL LETTER HA +, ц CYRILLIC SMALL LETTER TSE +q ч CYRILLIC SMALL LETTER CHE +c ш CYRILLIC SMALL LETTER SHA +r щ CYRILLIC SMALL LETTER SHCHA += ї CYRILLIC SMALL LETTER YI +o і CYRILLIC SMALL LETTER BYELORUSSION-UKRAINIAN I +m ь CYRILLIC SMALL LETTER SOFT SIGN +- є CYRILLIC SMALL LETTER UKRAINIAN IE +v ю CYRILLIC SMALL LETTER YU +; я CYRILLIC SMALL LETTER YA +\\ ґ CYRILLIC SMALL LETTER GHE WITH UPTURN +@ " +# № NUMERO SIGN +$ ; +^ : +& ? +z . +Z , +[ - +] = diff --git a/runtime/keymap/ukrainian-jcuken.vim b/runtime/keymap/ukrainian-jcuken.vim index 09e56dff..fcc1c34f 100644 --- a/runtime/keymap/ukrainian-jcuken.vim +++ b/runtime/keymap/ukrainian-jcuken.vim @@ -4,7 +4,7 @@ " Useful mainly with utf-8 but may work with other encodings " Maintainer: Anatoli Sakhnik -" Last Changed: 2006 Mar 15 +" Last Changed: 2007 Nov 11 " All characters are given literally, conversion to another encoding (e.g., " UTF-8) should work. @@ -88,3 +88,5 @@ $ * ^ , & . * ; +~ ~ +~~ Stress diff --git a/runtime/lang/menu_eo.utf-8.vim b/runtime/lang/menu_eo.utf-8.vim new file mode 100644 index 00000000..d38d63de --- /dev/null +++ b/runtime/lang/menu_eo.utf-8.vim @@ -0,0 +1,3 @@ +" Menu Translations: Esperanto for UTF-8 encoding + +source :p:h/menu_eo_xx.utf-8.vim diff --git a/runtime/lang/menu_eo_eo.utf-8.vim b/runtime/lang/menu_eo_eo.utf-8.vim new file mode 100644 index 00000000..d38d63de --- /dev/null +++ b/runtime/lang/menu_eo_eo.utf-8.vim @@ -0,0 +1,3 @@ +" Menu Translations: Esperanto for UTF-8 encoding + +source :p:h/menu_eo_xx.utf-8.vim diff --git a/runtime/lang/menu_eo_xx.utf-8.vim b/runtime/lang/menu_eo_xx.utf-8.vim new file mode 100644 index 00000000..df8632ea --- /dev/null +++ b/runtime/lang/menu_eo_xx.utf-8.vim @@ -0,0 +1,457 @@ +" Menu Translations: Esperanto +" Maintainer: Dominique PELLÉ +" Last Change: 2008 Jan 15 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 + +scriptencoding utf-8 + +menutrans &Help &Helpo + +menutrans &Overview &Enhavtabelo +menutrans &User\ Manual &Uzula\ manlibro +menutrans &How-to\ links &Kiel\ fari +menutrans &Find\.\.\. T&rovi\.\.\. +" -sep1- +menutrans &Credits &Dankoj +menutrans Co&pying &Permisilo +menutrans &Sponsor/Register &Subteni/Registriĝi +menutrans O&rphans &Orfoj +" -sep2- +menutrans &Version &Versio +menutrans &About Pri\ &Vim + +let g:menutrans_help_dialog = "Tajpu komandon aŭ serĉendan vorton en la helparo.\n\nAldonu i_ por la komandoj de la enmeta reĝimo (ekz: i_CTRL-X)\nAldonu c_ por redakto de la komanda linio (ekz: c_)\nĈirkaŭi la opciojn per apostrofoj (ekz: 'shiftwidth')" + +menutrans &File &Dosiero + +menutrans &Open\.\.\.:e &Malfermi\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Malfermi\ ÷\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Malfermi\ &langeton\.\.\.:tabnew +menutrans &New:enew &Nova:enew +menutrans &Close:close &Fermi:close +" -SEP1- +menutrans &Save:w &Konservi:w +menutrans Save\ &As\.\.\.:sav Konservi\ ki&el\.\.\.:sav +" -SEP2- +menutrans Split\ &Diff\ with\.\.\. Kom&pari\ divide\.\.\. +menutrans Split\ Patched\ &By\.\.\. &Testi\ flikaĵon\.\.\. +" -SEP3- +menutrans &Print &Presi +" -SEP4- +menutrans Sa&ve-Exit:wqa Konservi\ kaj\ eli&ri:wqa +menutrans E&xit:qa &Eliri:qa + + +menutrans &Edit &Redakti + +menutrans &Undou &Malfariu +menutrans &Redo^R Re&fari^R +menutrans Rep&eat\. R&ipeti\. +" -SEP1- +menutrans Cu&t"+x &Tondi"+x +menutrans &Copy"+y &Kopii"+y +menutrans &Paste"+gP Al&glui"+gP +menutrans Put\ &Before[p Enmeti\ &antaŭ[p +menutrans Put\ &After]p Enmeti\ ma&lantaŭ]p +menutrans &Deletex &Forviŝix +menutrans &Select\ AllggVG A&partigi\ ĉionggVG +" -SEP2- +menutrans &Find\.\.\. &Trovi\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Trovi\ kaj\ a&nstataŭigi\.\.\. +menutrans &Find/ &Trovi/ +menutrans Find\ and\ Rep&lace:%s Trovi\ kaj\ ansta&taŭigi:%s +menutrans Find\ and\ Rep&lace:s Trovi\ kaj\ ansta&taŭigi:s +" -SEP3- +menutrans Settings\ &Window Fenestro\ de\ a&gordoj +menutrans Startup\ &Settings Agordoj\ de\ prav&aloroj +menutrans &Global\ Settings Mallo&kaj\ agordoj + +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Baskuli\ emfazon\ de\ ŝa&blono:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! Baskuli\ kongruon\ de\ uskle&co:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! Baskuli\ kongruon\ de\ kram&poj:set\ sm! + +menutrans &Context\ lines Linioj\ de\ &kunteksto + +menutrans &Virtual\ Edit &Virtuala\ redakto +menutrans Never &Neniam +menutrans Block\ Selection &Bloka\ apartigo +menutrans Insert\ mode &Enmeta\ reĝimo +menutrans Block\ and\ Insert Blo&ko\ kaj\ enmeto +menutrans Always Ĉia&m + +menutrans Toggle\ Insert\ &Mode:set\ im! Baskuli\ &enmetan\ reĝimon:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! Baskuli\ kongruon\ kun\ &Vi:set\ cp! +menutrans Search\ &Path\.\.\. &Serĉvojo\ de\ dosieroj\.\.\. +menutrans Ta&g\ Files\.\.\. Dosiero\ de\ etike&doj\.\.\. +" -SEP1- +menutrans Toggle\ &Toolbar Baskuli\ &ilobreton +menutrans Toggle\ &Bottom\ Scrollbar Baskuli\ su&ban\ rulumskalon +menutrans Toggle\ &Left\ Scrollbar Baskuli\ &maldekstran\ rulumskalon +menutrans Toggle\ &Right\ Scrollbar Baskuli\ &dekstran\ rulumskalon + +let g:menutrans_path_dialog = "Tajpu la vojon de serĉo de dosieroj.\nDisigu la dosierujojn per komoj." +let g:menutrans_tags_dialog = "Tajpu la nomojn de dosieroj de etikedoj.\nDisigu la nomojn per komoj." + +menutrans F&ile\ Settings A&gordoj\ de\ dosiero + +menutrans Toggle\ Line\ &Numbering:set\ nu! Baskuli\ &numerojn\ de\ linioj:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! Baskuli\ &listan\ reĝimon:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! Baskuli\ linifal&don:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! Baskuli\ &vortofaldon:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Baskuli\ ekspansio\ de\ &taboj:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! Baskuli\ &aŭtokrommarĝenon:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! Baskuli\ &C-krommarĝenon:set\ cin! +" -SEP2- +menutrans &Shiftwidth &Larĝo\ de\ krommarĝeno +menutrans Soft\ &Tabstop &Malm&olaj\ taboj +menutrans Te&xt\ Width\.\.\. Larĝo\ de\ te&ksto\.\.\. +menutrans &File\ Format\.\.\. &Formato\ de\ &dosiero\.\.\. + +let g:menutrans_textwidth_dialog = "Tajpu la novan larĝon de teksto\n(0 por malŝalti formatigon)." +let g:menutrans_fileformat_dialog = "Elektu la formaton de la skribonta dosiero." +let g:menutrans_fileformat_choices = " &Unikso \n &Dos \n &Mak \n &Rezigni " + +menutrans C&olor\ Scheme &Koloraro +menutrans &Keymap Klavo&mapo +menutrans None (nenio) +menutrans Select\ Fo&nt\.\.\. Elekti\ &tiparon\.\.\. + + +menutrans &Tools &Iloj + +menutrans &Jump\ to\ this\ tagg^] &Aliri\ al\ tiu\ etikedog^] +menutrans Jump\ &back^T &Retroiri^T +menutrans Build\ &Tags\ File Krei\ &etikedan\ dosieron + +" -SEP1- +menutrans &Spelling &Literumilo +menutrans &Spell\ Check\ On Ŝal&ti\ literumilon +menutrans Spell\ Check\ &Off &Malŝalti\ literumilon +menutrans To\ &Next\ error]s Al\ sek&vonta\ eraro]s +menutrans To\ &Previous\ error[s Al\ an&taŭa\ eraro[s +menutrans Suggest\ &Correctionsz= &Sugesti\ korektojnz= +menutrans &Repeat\ correction:spellrepall R&ipeti\ korekton:spellrepall + +menutrans Set\ language\ to\ "en" Angla +menutrans Set\ language\ to\ "en_au" Angla\ (en_au) +menutrans Set\ language\ to\ "en_ca" Angla\ (en_ca) +menutrans Set\ language\ to\ "en_gb" Angla\ (en_gb) +menutrans Set\ language\ to\ "en_nz" Angla\ (en_nz) +menutrans Set\ language\ to\ "en_us" Angla\ (en_us) + +menutrans &Find\ More\ Languages &Trovi\ pli\ da\ lingvoj + + +menutrans &Folding &Faldo + +menutrans &Enable/Disable\ foldszi &Baskuli\ faldojnzi +menutrans &View\ Cursor\ Linezv &Vidi\ linion\ de\ kursorozv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Vidi\ nur\ &kursoran\ linionzMzx +menutrans C&lose\ more\ foldszm F&ermi\ pli\ da\ faldojzm +menutrans &Close\ all\ foldszM Fermi\ ĉiu&jn\ faldojnzM +menutrans O&pen\ more\ foldszr &Malfermi\ pli\ da\ faldojzr +menutrans &Open\ all\ foldszR Malfermi\ ĉiuj&n\ faldojnzR +" -SEP1- +menutrans Fold\ Met&hod &Metodo\ de\ faldo + +menutrans M&anual &Permana\ metodo +menutrans I&ndent &Krommarĝeno +menutrans E&xpression &Esprimo +menutrans S&yntax &Sintakso +menutrans &Diff &Komparo +menutrans Ma&rker Ma&rko + +menutrans Create\ &Foldzf &Krei\ faldonzf +menutrans &Delete\ Foldzd Forv&iŝi\ faldonzd +menutrans Delete\ &All\ FoldszD Forviŝi\ ĉiu&jn\ faldojnzD +" -SEP2- +menutrans Fold\ col&umn\ width &Larĝo\ de\ falda\ kolumno + +menutrans &Diff Kom&pari + +menutrans &Update Ĝis&datigi +menutrans &Get\ Block &Akiri\ blokon +menutrans &Put\ Block Enme&ti\ blokon + +" -SEP2- +menutrans &Make:make Lanĉi\ ma&ke:make +menutrans &List\ Errors:cl Listigi\ &erarojn:cl +menutrans L&ist\ Messages:cl! Listigi\ &mesaĝojn:cl! +menutrans &Next\ Error:cn Sek&vanta\ eraro:cn +menutrans &Previous\ Error:cp An&taŭa\ eraro:cp +menutrans &Older\ List:cold Pli\ ma&lnova\ listo:cold +menutrans N&ewer\ List:cnew Pli\ nova\ listo:cnew + +menutrans Error\ &Window &Fenestro\ de\ eraroj + +menutrans &Update:cwin Ĝis&datigi:cwin +menutrans &Open:copen &Malfermi:copen +menutrans &Close:cclose &Fermi:cclose + +" -SEP3- +menutrans &Convert\ to\ HEX:%!xxd Konverti\ al\ deksesuma:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Retrokonverti:%!xxd\ -r + +menutrans Se&T\ Compiler &Elekti\ kompililon + + +menutrans &Buffers &Bufroj + +menutrans Dummy Fikcia +menutrans &Refresh\ menu Ĝis&datigi\ menuon +menutrans &Delete &Forviŝi +menutrans &Alternate &Alterni +menutrans &Next &Sekvanta +menutrans &Previous An&taŭa +" -SEP- + +menutrans &others a&liaj +menutrans &u-z &u-z +let g:menutrans_no_file = "[Neniu dosiero]" + + +menutrans &Window Fene&stro + +menutrans &New^Wn &Nova^Wn +menutrans S&plit^Ws Di&vidi^Ws +menutrans Sp&lit\ To\ #^W^^ Dividi\ &al\ #^W^^ +menutrans Split\ &Vertically^Wv Dividi\ &vertikale^Wv +menutrans Split\ File\ E&xplorer Dividi\ &dosierfoliumilo +" -SEP1- +menutrans &Close^Wc &Fermi^Wc +menutrans Close\ &Other(s)^Wo Fermi\ &aliajn^Wo +" -SEP2- +menutrans Move\ &To &Movu\ al + +menutrans &Top^WK Su&pro^WK +menutrans &Bottom^WJ Su&bo^WJ +menutrans &Left\ side^WH Maldekstra\ &flanko^WH +menutrans &Right\ side^WL Dekstra\ f&lanko^WL + +menutrans Rotate\ &Up^WR Rota&cii\ supre^WR +menutrans Rotate\ &Down^Wr Rotac&ii\ sube^Wr +" -SEP3- +menutrans &Equal\ Size^W= &Egala\ grando^W= +menutrans &Max\ Height^W_ Ma&ksimuma\ alto^W_ +menutrans M&in\ Height^W1_ Mi&nimuma\ alto^W1_ +menutrans Max\ &Width^W\| Maksimuma\ &larĝo^W\| +menutrans Min\ Widt&h^W1\| Minimuma\ lar&ĝo^W1\| + + +" PopUp + +menutrans &Undo &Malfari +" -SEP1- +menutrans Cu&t &Tondi +menutrans &Copy &Kopii +menutrans &Paste &Al&glui +" &Buffers.&Delete overwrites this one +menutrans &Delete &Forviŝi +" -SEP2- +menutrans Select\ Blockwise Apartigi\ &bloke +menutrans Select\ &Word Apartigi\ &vorton +menutrans Select\ &Line Apartigi\ &linion +menutrans Select\ &Block Apartigi\ blo&kon +menutrans Select\ &All Apartigi\ ĉi&on + + +" ToolBar + +menutrans Open Malfermi +menutrans Save Konservi +menutrans SaveAll Konservi\ ĉion +menutrans Print Presi +" -sep1- +menutrans Undo Rezigni +menutrans Redo Refari +" -sep2- +menutrans Cut Tondi +menutrans Copy Kopii +menutrans Paste Alglui +" -sep3- +menutrans Find Trovi +menutrans FindNext Trovi\ sekvanten +menutrans FindPrev Trovi\ antaŭen +menutrans Replace Anstataŭigi +" -sep4- +menutrans New Nova +menutrans WinSplit DividFen +menutrans WinMax MaksFen +menutrans WinMin MinFen +menutrans WinVSplit VDividFen +menutrans WinMaxWidth MaksLarĝFen +menutrans WinMinWidth MinLarĝFen +menutrans WinClose FermFen +" -sep5- +menutrans LoadSesn ŜargSeanc +menutrans SaveSesn KonsSeanc +menutrans RunScript LanĉSkript +" -sep6- +menutrans Make Make +menutrans RunCtags KreiEtik +menutrans TagJump IriAlEtik +" -sep7- +menutrans Help Helpo +menutrans FindHelp SerĉHelp + +fun! Do_toolbar_tmenu() + let did_toolbar_tmenu = 1 + tmenu ToolBar.Open Malfermi dosieron + tmenu ToolBar.Save Konservi aktualan dosieron + tmenu ToolBar.SaveAll Konservi ĉiujn dosierojn + tmenu ToolBar.Print Presi + tmenu ToolBar.Undo Rezigni + tmenu ToolBar.Redo Refari + tmenu ToolBar.Cut Tondi + tmenu ToolBar.Copy Kopii + tmenu ToolBar.Paste Alglui + if !has("gui_athena") + tmenu ToolBar.Find Trovi + tmenu ToolBar.FindNext Trovi sekvanten + tmenu ToolBar.FindPrev Trovi antaŭen + tmenu ToolBar.Replace Anstataŭigi + endif + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Nova fenestro + tmenu ToolBar.WinSplit Dividi fenestron + tmenu ToolBar.WinMax Maksimumi fenestron + tmenu ToolBar.WinMin Minimumi fenestron + tmenu ToolBar.WinVSplit Dividi vertikale + tmenu ToolBar.WinMaxWidth Maksimumi larĝon de fenestro + tmenu ToolBar.WinMinWidth Minimumi larĝon de fenestro + tmenu ToolBar.WinClose Fermi fenestron + endif + tmenu ToolBar.LoadSesn Malfermi seancon + tmenu ToolBar.SaveSesn Konservi aktualan seancon + tmenu ToolBar.RunScript Ruli skripton Vim + tmenu ToolBar.Make Lanĉi make + tmenu ToolBar.RunCtags Krei etikedojn + tmenu ToolBar.TagJump Atingi tiun etikedon + tmenu ToolBar.Help Helpo de Vim + tmenu ToolBar.FindHelp Serĉo en helparo +endfun + + +menutrans &Syntax &Sintakso + +menutrans &Off &Malŝalti +menutrans &Manual &Permana +menutrans A&utomatic &Aŭtomata +menutrans on/off\ for\ &This\ file Ŝalti/Malŝalti\ por\ &tiu\ dosiero + +" The Start Of The Syntax Menu +menutrans ABC\ music\ notation ABC\ (muzika\ notacio) +menutrans AceDB\ model Modelo\ AceDB +menutrans Apache\ config Konfiguro\ de\ Apache +menutrans Apache-style\ config Konfiguro\ de\ stilo\ Apache +menutrans ASP\ with\ VBScript ASP\ kun\ VBScript +menutrans ASP\ with\ Perl ASP\ kun\ Perl +menutrans Assembly Asemblilo +menutrans BC\ calculator Kalkulilo\ BC +menutrans BDF\ font Tiparo\ BDF +menutrans BIND\ config Konfiguro\ de\ BIND +menutrans BIND\ zone Zone\ BIND +menutrans Cascading\ Style\ Sheets CSS +menutrans Cfg\ Config\ file Konfigura\ dosiero\ \.cfg +menutrans Cheetah\ template Ŝablono\ Cheetah +menutrans commit\ file Dosiero\ commit +menutrans Generic\ Config\ file Dosiero\ de\ ĝenerala\ konfiguro +menutrans Digital\ Command\ Lang DCL +menutrans DNS/BIND\ zone Regiono\ BIND/DNS +menutrans Dylan\ interface Interfaco\ Dylan +menutrans Dylan\ lid Dylan\ lid +menutrans Elm\ filter\ rules Reguloj\ de\ filtrado\ Elm +menutrans ERicsson\ LANGuage Erlang\ (Lingvo\ de\ Ericsson) +menutrans Essbase\ script Skripto\ Essbase +menutrans Eterm\ config Konfiguro\ de\ Eterm +menutrans Exim\ conf Konfiguro\ de\ Exim +menutrans Fvwm\ configuration Konfiguro\ de\ Fvwm +menutrans Fvwm2\ configuration Konfiguro\ de\ Fvwm2 +menutrans Fvwm2\ configuration\ with\ M4 Konfiguro\ de\ Fvwm2\ kun\ M4 +menutrans GDB\ command\ file Komanda\ dosiero\ de\ GDB +menutrans HTML\ with\ M4 HTML\ kun\ M4 +menutrans Cheetah\ HTML\ template Ŝablono\ Cheetah\ HTML +menutrans IDL\Generic\ IDL Ĝenerala\ IDL\IDL +menutrans IDL\Microsoft\ IDL IDL\IDL\ Mikrosofto +menutrans Indent\ profile Profilo\ Indent +menutrans Inno\ setup Konfiguro\ de\ Inno +menutrans InstallShield\ script Skripto\ InstallShield +menutrans KDE\ script Skripto\ KDE +menutrans LFTP\ config Konfiguro\ de\ LFTP +menutrans LifeLines\ script Skripto\ LifeLines +menutrans Lynx\ Style Stilo\ de\ Lynx +menutrans Lynx\ config Konfiguro\ de\ Lynx +menutrans Man\ page Manlibra\ paĝo +menutrans MEL\ (for\ Maya) MEL\ (por\ Maya) +menutrans 4DOS\ \.bat\ file Dosiero\ \.bat\ 4DOS +menutrans \.bat\/\.cmd\ file Dosiero\ \.bat\/\.cmd +menutrans \.ini\ file Dosiero\ \.ini +menutrans Module\ Definition Difino\ de\ modulo +menutrans Registry Registraro +menutrans Resource\ file Dosiero\ de\ rimedoj +menutrans Novell\ NCF\ batch Staplo\ Novell\ NCF +menutrans NSIS\ script Skripto\ NSIS +menutrans Oracle\ config Konfiguro\ de\ Oracle +menutrans Palm\ resource\ compiler Tradukilo\ de\ rimedoj\ Palm +menutrans PHP\ 3-4 PHP\ 3\ et\ 4 +menutrans Postfix\ main\ config Ĉefa\ konfiguro\ de\ Postfix +menutrans Povray\ scene\ descr Scenejo\ Povray +menutrans Povray\ configuration Konfiguro\ de\ Povray +menutrans Purify\ log Protokolo\ de\ Purify +menutrans Readline\ config Konfiguro\ de\ Readline +menutrans RCS\ log\ output Protokola\ eligo\ de\ RCS +menutrans RCS\ file Dosiero\ RCS +menutrans RockLinux\ package\ desc\. Priskribo\ de\ pakaĵoj\ RockLinux +menutrans Samba\ config Konfiguro\ de\ Samba +menutrans SGML\ catalog Katalogo\ SGML +menutrans SGML\ DTD DTD\ SGML +menutrans SGML\ Declaration Deklaracio\ SGML +menutrans Shell\ script Skripto-ŝelo +menutrans sh\ and\ ksh sh\ kaj\ ksh +menutrans Sinda\ compare Komparo\ Sinda +menutrans Sinda\ input Enigo\ Sinda +menutrans Sinda\ output Eligo\ Sinda +menutrans SKILL\ for\ Diva SKILL\ por\ Diva +menutrans Smarty\ Templates Ŝablono\ Smarty +menutrans SNNS\ network Reto\ SNNS +menutrans SNNS\ pattern Ŝablono\ SNNS +menutrans SNNS\ result Rezulto\ SNNS +menutrans Snort\ Configuration Konfiguro\ de\ Snort +menutrans Squid\ config Konfiguro\ de\ Squid +menutrans Subversion\ commit Commit\ Subversion +menutrans TAK\ compare Komparo\ TAK +menutrans TAK\ input Enigo\ TAK +menutrans TAK\ output Eligo\ TAK +menutrans TeX\ configuration Konfiguro\ de\ TeX +menutrans TF\ mud\ client TF\ (client\ MUD) +menutrans Tidy\ configuration Konfiguro\ de\ Tidy +menutrans Trasys\ input Enigo\ Trasys +menutrans Command\ Line Komanda\ linio +menutrans Geometry Geometrio +menutrans Optics Optiques +menutrans Vim\ help\ file Helpa\ dosiero\ de\ Vim +menutrans Vim\ script Skripto\ Vim +menutrans Viminfo\ file Dosiero\ Viminfo +menutrans Virata\ config Konfiguro\ de\ Virata +menutrans Wget\ config Konfiguro\ de\ wget +menutrans Whitespace\ (add) Spacetoj +menutrans WildPackets\ EtherPeek\ Decoder Malkodilo\ WildPackets\ EtherPeek +menutrans X\ resources Rimedoj\ X +menutrans XXD\ hex\ dump Eligo\ deksesuma\.\ de\ xxd +menutrans XFree86\ Config Konfiguro\ de\ XFree86 +" The End Of The Syntax Menu + +menutrans &Show\ filetypes\ in\ menu &Montri\ dosiertipojn\ en\ menuo +" -SEP1- +menutrans Set\ '&syntax'\ only Ŝalti\ nur\ '&syntax' +menutrans Set\ '&filetype'\ too Ŝalti\ ankaŭ\ '&filetype' +menutrans &Off M&alŝaltita +" -SEP3- +menutrans Co&lor\ test Testo\ de\ &koloroj +menutrans &Highlight\ test Testo\ de\ &emfazo +menutrans &Convert\ to\ HTML Konverti\ al\ &HTML diff --git a/runtime/lang/menu_fi.latin1.vim b/runtime/lang/menu_fi.latin1.vim new file mode 100644 index 00000000..4dd9140b --- /dev/null +++ b/runtime/lang/menu_fi.latin1.vim @@ -0,0 +1,3 @@ +" Menu Translations: Finnish for latin 1 encoding + +source :p:h/menu_fi_fi.latin1.vim diff --git a/runtime/lang/menu_fi.utf-8.vim b/runtime/lang/menu_fi.utf-8.vim new file mode 100644 index 00000000..b33639cd --- /dev/null +++ b/runtime/lang/menu_fi.utf-8.vim @@ -0,0 +1,3 @@ +" Menu Translations: Finnish for UTF-8 encoding + +source :p:h/menu_fi_fi.latin1.vim diff --git a/runtime/lang/menu_fi_fi.latin1.vim b/runtime/lang/menu_fi_fi.latin1.vim new file mode 100644 index 00000000..1f1f5072 --- /dev/null +++ b/runtime/lang/menu_fi_fi.latin1.vim @@ -0,0 +1,473 @@ +" Menu Translations: Finnish +" Maintainer: Flammie Pirinen +" Last Change: 2007 Sep 04 + +" Quit when menu translations have already been done. +if exists("did_menu_trans") + finish +endif +let did_menu_trans = 1 + +" Translations should be in latin1, if it requires latin9 or even unicode, +" change this: +if &enc != "cp1252" && &enc != "iso-8859-15" && &enc != "iso-8859-1" + scriptencoding latin1 +endif + +" Accels: TMYSPIO +menutrans &File &Tiedosto +" Accels: AJTUSNIDPOE +menutrans &Open\.\.\.:e &Avaa\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp Avaa\ &jaettuna\.\.\.:sp +menutrans Open\ Tab\.\.\.:tabnew Avaa\ &tabissa\.\.\.:tabnew +menutrans &New:enew &Uusi:enew +menutrans &Close:close &Sulje:close +" -SEP1- +menutrans &Save:w Talle&nna:w +menutrans Save\ &As\.\.\.:sav Tallenna\ n&imellä\.\.\.:sav +" -SEP2- +menutrans Split\ &Diff\ with\.\.\. Jaa\ &diffillä\.\.\. +menutrans Split\ Patched\ &By\.\.\. Jaa\ &patchilla\.\.\. +" -SEP3- +menutrans &Print Tul&osta +" -SEP4- +menutrans Sa&ve-Exit:wqa Tall&enna\ ja\ lopeta:wqa +menutrans E&xit:qa &Lopeta:qa + + +menutrans &Edit &Muokkaa +" Accels: KPTLOIEJSAHRUYKVNF +menutrans &Undou &Kumoau +menutrans &Redo^R &Palauta^R +menutrans Rep&eat\. &Toista\. +" -SEP1- +menutrans Cu&t"+x &Leikkaa"+x +menutrans &Copy"+y K&opioi"+y +menutrans &Paste"+gP L&iitä"+gP +menutrans Put\ &Before[p Lisää\ &ennen[p +menutrans Put\ &After]p Lisää\ &jälkeen]p +menutrans &Deletex Poi&stax +menutrans &Select\ AllggVG V&alitse\ kaikkiggVG +" -SEP2- +menutrans &Find\.\.\. &Hae\.\.\. +menutrans Find\ and\ Rep&lace\.\.\. Hae\ ja\ ko&rvaa\.\.\. +menutrans &Find/ &Hae/ +menutrans Find\ and\ Rep&lace:%s Hae\ ja\ ko&rvaa:%s +menutrans Find\ and\ Rep&lace:s Hae\ ja\ ko&rvaa:s +" -SEP3- +menutrans Settings\ &Window Aset&usikkuna +menutrans Startup\ &Settings &Käynnistysasetukset +menutrans &Global\ Settings &Yleiset\ asetukset +" Submenu: +" Accels: KOSHVYIATLEPR +menutrans Toggle\ Pattern\ &Highlight:set\ hls! &Korostus:set\ hls! +menutrans Toggle\ &Ignore-case:set\ ic! &Ohita\ kirjaintaso:set\ ic! +menutrans Toggle\ &Showmatch:set\ sm! &Suljekorostus:set\ sm! + +menutrans &Context\ lines &Huomioitavat\ kontekstirivit +" Subsubmenu: +" Accels: ELSOA +menutrans &Virtual\ Edit &Virtuaalimuokkaus +menutrans Never &Ei koskaan +menutrans Block\ Selection &Lohkovalinta +menutrans Insert\ mode &Syöttötila +menutrans Block\ and\ Insert L&ohkosyöttötila +menutrans Always &Aina + +menutrans Toggle\ Insert\ &Mode:set\ im! S&yöttötila:set\ im! +menutrans Toggle\ Vi\ C&ompatible:set\ cp! V&i-tila:set\ cp! +menutrans Search\ &Path\.\.\. H&akupolku\.\.\. +menutrans Ta&g\ Files\.\.\. &Tägitiedostot\.\.\. +" -SEP1- +menutrans Toggle\ &Toolbar Työka&lupalkki +menutrans Toggle\ &Bottom\ Scrollbar Vaakavi&erityspalkki +menutrans Toggle\ &Left\ Scrollbar Vasen\ &pystyvierityspalkki +menutrans Toggle\ &Right\ Scrollbar Oikea\ pystyvie&rityspalkki + +let g:menutrans_path_dialog = "Anna tiedostojen hakupolku.\nErota hakemistot pilkuin." +let g:menutrans_tags_dialog = "Anna tägitiedostojen nimet.\nErota tidostot pilkuin." + +menutrans F&ile\ Settings Tiedostoasetu&kset +" Submenu: +" Accels: NLRSTACIBEM +menutrans Toggle\ Line\ &Numbering:set\ nu! Rivi&numerointi:set\ nu! +menutrans Toggle\ &List\ Mode:set\ list! &Listaustila:set\ list! +menutrans Toggle\ Line\ &Wrap:set\ wrap! &Rivitys:set\ wrap! +menutrans Toggle\ W&rap\ at\ word:set\ lbr! &Sanoittainen rivitys:set\ lbr! +menutrans Toggle\ &expand-tab:set\ et! Muuta\ &tabit\ väleiksi:set\ et! +menutrans Toggle\ &auto-indent:set\ ai! &Automaattinen\ sisennys:set\ ai! +menutrans Toggle\ &C-indenting:set\ cin! &C-kielen\ sisennys:set\ cin! +" -SEP2- +menutrans &Shiftwidth S&isennysleveys +menutrans Soft\ &Tabstop Näennäista&bulointi +menutrans Te&xt\ Width\.\.\. Tekstinl&eveys\.\.\. +menutrans &File\ Format\.\.\. Tiedosto&muoto\.\.\. + +let g:menutrans_textwidth_dialog = "Anna uusi tekstin leveys\n(0 poistaa käytöstä)" +let g:menutrans_fileformat_dialog = "Anaa tiedoston kirjoitusmuoto." +let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Peru " + +menutrans C&olor\ Scheme &Väriteema +menutrans &Keymap &Näppäinkartta +menutrans None Ei mikään +menutrans Select\ Fo&nt\.\.\. Valitse\ &fontti\.\.\. + + +menutrans &Tools T&yökalut +" Accels: ___OTDM__ +menutrans &Jump\ to\ this\ tagg^] Siirry\ tägiing^] +menutrans Jump\ &back^T Siirry\ takaisin^T +menutrans Build\ &Tags\ File Luo\ tägitiedosto + +" -SEP1- +menutrans &Spelling &Oikeinkirjoitus +" Submenu: +" Accels: OSEKT +menutrans &Spell\ Check\ On &Oikaisuluku\ päälle +menutrans Spell\ Check\ &Off &Oikaisuluku\ pois\ päältä +menutrans To\ &Next\ error]s &Seuraavaan\ virheeseen]s +menutrans To\ &Previous\ error[s &Edelliseen\ virheeseen[s +menutrans Suggest\ &Correctionsz= Ehdota\ &korjaustaz= +menutrans &Repeat\ correction:spellrepall &Toista\ korjaus:spellrepall + +menutrans Set\ language\ to\ "en" Aseta\ kieleksi\ en +menutrans Set\ language\ to\ "en_au" Aseta\ kieleksi\ en_au +menutrans Set\ language\ to\ "en_ca" Aseta\ kieleksi\ en_ca +menutrans Set\ language\ to\ "en_gb" Aseta\ kieleksi\ en_gb +menutrans Set\ language\ to\ "en_nz" Aseta\ kieleksi\ en_nz +menutrans Set\ language\ to\ "en_us" Aseta\ kieleksi\ en_us + +menutrans &Find\ More\ Languages Hae\ lisää\ kieliä + + + +menutrans &Folding &Taitokset +" Accels: TNVSAPEOKL +menutrans &Enable/Disable\ foldszi &Taitoksetzi +menutrans &View\ Cursor\ Linezv &Näytä\ kursorin\ rivizv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Näytä\ &vain\ kursorin\ rivizMzx +menutrans C&lose\ more\ foldszm &Sulje\ lisää\ taitoksiazm +menutrans &Close\ all\ foldszM &Sulje\ kaikki\ taitoksetzM +menutrans O&pen\ more\ foldszr &Avaa\ lisää\ taitoksiazr +menutrans &Open\ all\ foldszR &Avaa\ kaikki\ taitoksetzR +" -SEP1- +menutrans Fold\ Met&hod Taitteluta&pa +" Submenu: +" Accels: MILSDM +menutrans M&anual &Manuaalinen +menutrans I&ndent S&isennys +menutrans E&xpression I&lmaus +menutrans S&yntax &Syntaksi +menutrans &Diff &Diff +menutrans Ma&rker &Merkit + +menutrans Create\ &Foldzf T&ee\ taitoszf +menutrans &Delete\ Foldzd P&oista\ taitoszd +menutrans Delete\ &All\ FoldszD Poista\ &kaikki\ taitoksetzD +" -SEP2- +menutrans Fold\ col&umn\ width Taitossarakkeen\ &leveys + +menutrans &Diff &Diffit +" Submenu: +" Accels: PHL +menutrans &Update &Päivitä +menutrans &Get\ Block &Hae\ lohko +menutrans &Put\ Block &Lisää\ lohko + +" -SEP2- +menutrans &Make:make &Make:make +menutrans &List\ Errors:cl Virheluettelo:cl +menutrans L&ist\ Messages:cl! Virheviestit:cl! +menutrans &Next\ Error:cn Seuraava\ virhe:cn +menutrans &Previous\ Error:cp Edellinen\ virhe:cp +menutrans &Older\ List:cold Edellinen\ lista:cold +menutrans N&ewer\ List:cnew Seuraava\ lista:cnew + +menutrans Error\ &Window Virheikkuna +" Submenu: +" Accels: PAS +menutrans &Update:cwin &Päivitä:cwin +menutrans &Open:copen &Avaa:copen +menutrans &Close:cclose &Sulje:cclose + +menutrans Se&T\ Compiler Ase&ta\ kääntäjä +" -SEP3- +menutrans &Convert\ to\ HEX:%!xxd Muunna\ heksoiksi:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Muunna\ takaisin:%!xxd\ -r + + +menutrans &Syntax &Syntaksi +" Accels: NSFPMAT +menutrans &Show\ filetypes\ in\ menu &Näytä\ tiedostotyypit\ valikossa +" -SEP1- +menutrans Set\ '&syntax'\ only Aseta\ vain\ &syntax +menutrans Set\ '&filetype'\ too Aseta\ myös\ &filetype +menutrans &Off &Pois\ päältä +" -SEP3- +menutrans Co&lor\ test Testaa\ värit +menutrans &Highlight\ test Testaa\ korostukset +menutrans &Convert\ to\ HTML Muunna\ HTML:ksi +" -SEP2- +menutrans &Off &Pois\ päältä +menutrans &Manual &Manuaalinen +menutrans A&utomatic &Automaattinen +menutrans on/off\ for\ &This\ file Kytke\ &tälle\ tiedostolle + +" The Start Of The Syntax Menu +menutrans ABC\ music\ notation ABC\ (notation\ musicale) +menutrans AceDB\ model Modèle\ AceDB +menutrans Apache\ config Config\.\ Apache +menutrans Apache-style\ config Config\.\ style\ Apache +menutrans ASP\ with\ VBScript ASP\ avec\ VBScript +menutrans ASP\ with\ Perl ASP\ avec\ Perl +menutrans Assembly Assembleur +menutrans BC\ calculator Calculateur\ BC +menutrans BDF\ font Fonte\ BDF +menutrans BIND\ config Config\.\ BIND +menutrans BIND\ zone Zone\ BIND +menutrans Cascading\ Style\ Sheets Feuilles\ de\ style\ en\ cascade +menutrans Cfg\ Config\ file Fichier\ de\ config\.\ \.cfg +menutrans Cheetah\ template Patron\ Cheetah +menutrans commit\ file Fichier\ commit +menutrans Generic\ Config\ file Fichier\ de\ config\.\ générique +menutrans Digital\ Command\ Lang DCL +menutrans DNS/BIND\ zone Zone\ BIND/DNS +menutrans Dylan\ interface Interface +menutrans Dylan\ lid LID +menutrans Elm\ filter\ rules Règles\ de\ filtrage\ Elm +menutrans ERicsson\ LANGuage Erlang\ (langage\ Ericsson) +menutrans Essbase\ script Script\ Essbase +menutrans Eterm\ config Config\.\ Eterm +menutrans Exim\ conf Config\.\ Exim +menutrans Fvwm\ configuration Config\.\ Fvwm +menutrans Fvwm2\ configuration Config\.\ Fvwm2 +menutrans Fvwm2\ configuration\ with\ M4 Config\.\ Fvwm2\ avec\ M4 +menutrans GDB\ command\ file Fichier\ de\ commandes\ GDB +menutrans HTML\ with\ M4 HTML\ avec\ M4 +menutrans Cheetah\ HTML\ template Patron\ Cheetah\ pour\ HTML +menutrans IDL\Generic\ IDL IDL\IDL\ générique +menutrans IDL\Microsoft\ IDL IDL\IDL\ Microsoft +menutrans Indent\ profile Profil\ Indent +menutrans Inno\ setup Config\.\ Inno +menutrans InstallShield\ script Script\ InstallShield +menutrans KDE\ script Script\ KDE +menutrans LFTP\ config Config\.\ LFTP +menutrans LifeLines\ script Script\ LifeLines +menutrans Lynx\ Style Style\ Lynx +menutrans Lynx\ config Config\.\ Lynx +menutrans Man\ page Page\ Man +menutrans MEL\ (for\ Maya) MEL\ (pour\ Maya) +menutrans 4DOS\ \.bat\ file Fichier\ \.bat\ 4DOS +menutrans \.bat\/\.cmd\ file Fichier\ \.bat\ /\ \.cmd +menutrans \.ini\ file Fichier\ \.ini +menutrans Module\ Definition Définition\ de\ module +menutrans Registry Extrait\ du\ registre +menutrans Resource\ file Fichier\ de\ ressources +menutrans Novell\ NCF\ batch Batch\ Novell\ NCF +menutrans NSIS\ script Script\ NSIS +menutrans Oracle\ config Config\.\ Oracle +menutrans Palm\ resource\ compiler Compil\.\ de\ resources\ Palm +menutrans PHP\ 3-4 PHP\ 3\ et\ 4 +menutrans Postfix\ main\ config Config\.\ Postfix +menutrans Povray\ scene\ descr Scène\ Povray +menutrans Povray\ configuration Config\.\ Povray +menutrans Purify\ log Log\ Purify +menutrans Readline\ config Config\.\ Readline +menutrans RCS\ log\ output Log\ RCS +menutrans RCS\ file Fichier\ RCS +menutrans RockLinux\ package\ desc\. Desc\.\ pkg\.\ RockLinux +menutrans Samba\ config Config\.\ Samba +menutrans SGML\ catalog Catalogue\ SGML +menutrans SGML\ DTD DTD\ SGML +menutrans SGML\ Declaration Déclaration\ SGML +menutrans Shell\ script Script\ shell +menutrans sh\ and\ ksh sh\ et\ ksh +menutrans Sinda\ compare Comparaison\ Sinda +menutrans Sinda\ input Entrée\ Sinda +menutrans Sinda\ output Sortie\ Sinda +menutrans SKILL\ for\ Diva SKILL\ pour\ Diva +menutrans Smarty\ Templates Patrons\ Smarty +menutrans SNNS\ network Réseau\ SNNS +menutrans SNNS\ pattern Motif\ SNNS +menutrans SNNS\ result Résultat\ SNNS +menutrans Snort\ Configuration Config\.\ Snort +menutrans Squid\ config Config\.\ Squid +menutrans Subversion\ commit Commit\ Subversion +menutrans TAK\ compare Comparaison\ TAK +menutrans TAK\ input Entrée\ TAK +menutrans TAK\ output Sortie\ TAK +menutrans TeX\ configuration Config\.\ TeX +menutrans TF\ mud\ client TF\ (client\ MUD) +menutrans Tidy\ configuration Config\.\ Tidy +menutrans Trasys\ input Entrée\ Trasys +menutrans Command\ Line Ligne\ de\ commande +menutrans Geometry Géométrie +menutrans Optics Optiques +menutrans Vim\ help\ file Fichier\ d'aide\ Vim +menutrans Vim\ script Script\ Vim +menutrans Viminfo\ file Fichier\ Viminfo +menutrans Virata\ config Config\.\ Virata +menutrans Wget\ config Config\.\ wget +menutrans Whitespace\ (add) Espaces\ et\ tabulations +menutrans WildPackets\ EtherPeek\ Decoder Décodeur\ WildPackets\ EtherPeek +menutrans X\ resources Resources\ X +menutrans XXD\ hex\ dump Sortie\ hexa\.\ de\ xxd +menutrans XFree86\ Config Config\.\ XFree86 + +menutrans &Buffers &Puskurit +" Accels: VPASE +menutrans Dummy Dummy +menutrans &Refresh\ menu Päivitä\ &valikko +menutrans &Delete &Poista +menutrans &Alternate V&aihda +menutrans &Next &Seuraava +menutrans &Previous &Edellinen +" -SEP- +" (Alphabet menus) +menutrans &others &muut +let g:menutrans_no_file = "[Ei tiedostoja]" + + +menutrans &Window &Ikkuna +" Accels: UJPTSMIYAKOL +menutrans &New^Wn &Uusi\ ikkuna^Wn +menutrans S&plit^Ws &Jaa^Ws +menutrans Sp&lit\ To\ #^W^^ &Jaa\ #^W^^ +menutrans Split\ &Vertically^Wv Jaa\ &pystysuunnassa^Wv +menutrans Split\ File\ E&xplorer Jaa\ &tiedostonhallinnalle +" -SEP1- +menutrans &Close^Wc &Sulje^Wc +menutrans Close\ &Other(s)^Wo Sulje\ &muut^Wo +" -SEP2- +menutrans Move\ &To S&iirrä +" Submenu: +" Accels: YAOV +menutrans &Top^WK &Ylös^WK +menutrans &Bottom^WJ &Alas^WJ +menutrans &Left\ side^WH &Oikealle^WH +menutrans &Right\ side^WL &Vasemmalle^WL + +menutrans Rotate\ &Up^WR Vaihda\ &ylemmäs^WR +menutrans Rotate\ &Down^Wr Vaihda\ &alemmas^Wr +" -SEP3- +menutrans &Equal\ Size^W= Saman\ &kokoisiksi^W= +menutrans &Max\ Height^W_ Enimmäisk&orkeuteen^W_ +menutrans M&in\ Height^W1_ Vähimmäisk&orkeuteen^W1_ +menutrans Max\ &Width^W\| Enimmäis&leveyteen^W\| +menutrans Min\ Widt&h^W1\| Vähimmäis&leveyteen^W1\| + +" (Plugin menus here) +menutrans Plugin Liitännäiset + +menutrans &Help &Ohje +" Accels: YKUHTLROVI +menutrans &Overview &Yleiskatsaus +menutrans &User\ Manual &Käyttöohje +menutrans &How-to\ links K&UINKA-linkkejä +menutrans &Find\.\.\. &Hae\.\.\. +" -sep1- +menutrans &Credits &Tekijät +menutrans Co&pying &Lisenssi +menutrans &Sponsor/Register Sponsoroi/&Rekisteröi +menutrans O&rphans &Orvoista +" -sep2- +menutrans &Version &Versio +menutrans &About T&ietoja + +let g:menutrans_help_dialog = "Anna komento tai sana, jota haetaan ohjeesta.\n\nAloita i_:llä syöttötilan komentoja varten (esim. i_CTRL-X)\nAloita c_:llä komentoriviä varten (esim. c_)\nKirjoita asetukset puolilainausmerkkeijin (esim. 'shiftwidth')" + + +" PopUp + +menutrans &Undo &Kumoa +" -SEP1- +menutrans Cu&t &Leikkaa +menutrans &Copy &Kopioi +menutrans &Paste L&iitä +" &Buffers.&Delete overwrites this one +menutrans &Delete &Poista +" -SEP2- +menutrans Select\ Blockwise Valitse\ lohkoittain +menutrans Select\ &Word Valitse\ &sana +menutrans Select\ &Line Valitse\ &rivi +menutrans Select\ &Block Valitse\ &lohko +menutrans Select\ &All Valitse\ &kaikki + + +" ToolBar + +menutrans Open Avaa +menutrans Save Tallenna +menutrans SaveAll TallennaKaikki +menutrans Print Tulosta +" -sep1- +menutrans Undo Kumoa +menutrans Redo Palauta +" -sep2- +menutrans Cut Leikkaa +menutrans Copy Kopioi +menutrans Paste Liitä +" -sep3- +menutrans Find Etsi +menutrans FindNext EtsiSeur +menutrans FindPrev EtsiEd +menutrans Replace Korvaa +" -sep4- +menutrans New Uusi +menutrans WinSplit JaaIkk +menutrans WinMax IkkMax +menutrans WinMin IkkMin +menutrans WinVSplit JaaIkkV +menutrans WinMaxWidth IkkMaxLev +menutrans WinMinWidth IkkMinLev +menutrans WinClose SuljeIkk +" -sep5- +menutrans LoadSesn AvaaSess +menutrans SaveSesn TallSess +menutrans RunScript AjaSkripti +" -sep6- +menutrans Make Make +menutrans RunCtags AjaCTags +menutrans TagJump TagHypp +" -sep7- +menutrans Help Ohje +menutrans FindHelp OhjeHaku + +fun! Do_toolbar_tmenu() + let did_toolbar_tmenu = 1 + tmenu ToolBar.Open Avaa tiedosto + tmenu ToolBar.Save Tallenna nykyinen tiedosto + tmenu ToolBar.SaveAll Tallenna kaikki tiedostot + tmenu ToolBar.Print Tulosta + tmenu ToolBar.Undo Kumoa + tmenu ToolBar.Redo Palauta + tmenu ToolBar.Cut Leikkaa + tmenu ToolBar.Copy Kopioi + tmenu ToolBar.Paste Liitä + if !has("gui_athena") + tmenu ToolBar.Find Hae + tmenu ToolBar.FindNext Hae seuraava + tmenu ToolBar.FindPrev Hae edellinen + tmenu ToolBar.Replace Korvaa + endif + if 0 " disabled; These are in the Windows menu + tmenu ToolBar.New Uusi ikkuna + tmenu ToolBar.WinSplit Jaa ikkuna + tmenu ToolBar.WinMax Maximiser fenêtre + tmenu ToolBar.WinMin Minimiser fenêtre + tmenu ToolBar.WinVSplit Fractionner verticalement + tmenu ToolBar.WinMaxWidth Maximiser largeur fenêtre + tmenu ToolBar.WinMinWidth Minimiser largeur fenêtre + tmenu ToolBar.WinClose Fermer fenêtre + endif + tmenu ToolBar.LoadSesn Avaa sessio + tmenu ToolBar.SaveSesn Tallenna nykyinen sessio + tmenu ToolBar.RunScript Lataa vim-skripti + tmenu ToolBar.Make Suorita make + tmenu ToolBar.RunCtags Suorita CTags + tmenu ToolBar.TagJump Hyppää tägiin + tmenu ToolBar.Help Vimin ohje + tmenu ToolBar.FindHelp Etsi ohjeesta +endfun + +" vim: set fileencoding=latin1 diff --git a/runtime/lang/menu_fi_fi.utf-8.vim b/runtime/lang/menu_fi_fi.utf-8.vim new file mode 100644 index 00000000..b33639cd --- /dev/null +++ b/runtime/lang/menu_fi_fi.utf-8.vim @@ -0,0 +1,3 @@ +" Menu Translations: Finnish for UTF-8 encoding + +source :p:h/menu_fi_fi.latin1.vim diff --git a/runtime/lang/menu_finnish_finland.1252.vim b/runtime/lang/menu_finnish_finland.1252.vim new file mode 100644 index 00000000..ad62e032 --- /dev/null +++ b/runtime/lang/menu_finnish_finland.1252.vim @@ -0,0 +1,3 @@ +" Menu Translations: Finnish for Windows CodePage 1252 encoding + +source :p:h/menu_fi_fi.latin1.vim diff --git a/runtime/macros.info b/runtime/macros.info deleted file mode 100755 index bbb0b4f16b944ccf1b417013e32ec14eef69d68e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 624 zcwT!fz`)1=0>2pq7@Qb*7}$V(Mh5l#2nO}a4-Cj41&A4$vcPObp%XyzI}o!ns5c%! zQsvF~mBI7>e-M+2L8zWVQ(Orwu6(-(t|o@T{yz|aZRUWBIx%nqwJ`QDFf$+n2Z&-I zIKW^75t0Y85Mo5KY~d_>IIAAcf-?R$z*!71)_XYXJc#wL{{MUk>kk8iK7{rEYG^o= z1y%PC;!=JFB=Z_j`~~;#1Kj?#hX~alfXXrMKfu5bkwmcS@rnUWk%zPD;VdWv)xQu+ xfNtIo7WoHf{pkm>KL7vo|BpY2^?-q~9wPQ{)vEn}5bA)e1rV2_`in^W#b5p_dQ7^ZEGkvVF?`|Nq~czd%d)1wQgIF!08G zU&p|}cjKo$P~7S7F{Mg#y&uLiot}O8G|7C9kja-T(_BCI{5_T_$WicN&Zm3+Eq@Z- zoRa1Knkvlsu;lCUGJoDzKc}hO(P8;xc=Mon%+Fm0>NCPVbu7Jj@W|J)Q*-!Y{-j8` zeNXx~?`A=P1z+K}>iZU4ca={ryu>bDXDcSh@p1FUPd|94|NsA2hzUskdB^u1=#m8- z;Xn~Jw&Or@50mBHwi6fF&!p{@e< z|Gxo}f89#I&wlX3Z~~D1X_D^yxeQ;fOaY5$0Lc$?Kx$|ld{59nO={-_e{||0{b6^m$yj>;Pu#fw? zF_6vw|GQ?wKlcBp!R*Ii@;#7b{|{9Ek7;KYM~WQ#IZ)K|=3Wv=`p2!E4HlmcQke{5 zGtZlp*ks3a3KaO<)?Eha|JZWD;z#E36x6X51q0bUmo|fBP5nW(`>qC(oRO1(?g2WC R$0}Lhw=_A!H@_&A0RYYTKPvzL diff --git a/runtime/macros/editexisting.vim b/runtime/macros/editexisting.vim index fb6b9193..31b37555 100644 --- a/runtime/macros/editexisting.vim +++ b/runtime/macros/editexisting.vim @@ -1,6 +1,6 @@ " Vim Plugin: Edit the file with an existing Vim if possible " Maintainer: Bram Moolenaar -" Last Change: 2007 Mar 17 +" Last Change: 2007 Aug 12 " This is a plugin, drop it in your (Unix) ~/.vim/plugin or (Win32) " $VIM/vimfiles/plugin directory. Or make a symbolic link, so that you @@ -13,6 +13,9 @@ " 2. When a file is edited and a swap file exists for it, try finding that " other Vim and bring it to the foreground. Requires Vim 7, because it " uses the SwapExists autocommand event. +if v:version < 700 + finish +endif " Function that finds the Vim instance that is editing "filename" and brings " it to the foreground. diff --git a/runtime/macros/hanoi.info b/runtime/macros/hanoi.info deleted file mode 100644 index 8072e567887704687849374f0b97fb2d1d933869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 624 zcwT!fz`)1=0v{OU8Jrk+7}$V(Mh2z42MkL25)8;71&A4$j)2(;niGKJ7a$g4Pz$>O zS5wEZlCgoo{r`UuhlxR`oph%x9>n@r|9?J&^@o8$AHw>7H8dQ` zf~xxmaVb9ol6eg%{(|{;b^>ny+Czlu4?yJ@_a9*3he#q=^?1dArpUut^>7xHf$Cp~ zB|tat2aEiJv;OphSfBs@`Txfs#CpKMSPv2Vw`$e?KL~X|)&hu2(f!K;5@cWm0G*K? AH2?qr diff --git a/runtime/macros/hanoi/click.me.info b/runtime/macros/hanoi/click.me.info deleted file mode 100644 index f38cb5a0aca788cbc1d0c57729b552c2190c848d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 973 zcwXI-u}T9$5QhJAj}yX4(kQnHa&RvY%Yc2J!`8w^iLIMLL^w!&m9zC<&*Ky$vN?4DL{ zb2vMT+mt39AbXyet=2qI39~Zvt$c~XaDGZu8gtnC`n_c;kK8bXNPScvf$I2Q6{z=h z{?Pi0>NfLsQteO+6@Ya@ec0|Pl6AH1oX{wd?S!aq5h=~PTTA>vVf_uC&R1##yr~fo z)W|VKBOi&4Jk^O2^{SEkGjAuU5s?}(i4l_+35^o5k=89DrFjlpq4)OkDfhOgme{A4 ONKuT(x0hE;dG8leHMg4p diff --git a/runtime/macros/hanoi/poster.info b/runtime/macros/hanoi/poster.info deleted file mode 100644 index 780fa35edee7770366b372b5886c5b9ff983a15e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 735 zcwT!fz`)1=0vZg03LhktK^k$wdLmQvqT&gk-4!m@;6H zWME=oT+_h}=6>wsY*9GyRq2jdoX(FYjfY-7_|E6!$IJF9|NsAgZ~o>nFz^d}o>X z3pm1oB5G{Mf#e=0%e!qSF0h|T+bhY(n|mVp?I~{U%w0T1OqSE$eedH>=2hHK#XN84 z-Z>ALPTf!DkK(fE-0(?+E%UbWM@rAn zVE8!+EN-3nxxe9O?;0Tcv#t+F_S6QD?VCb?H52}^|33|8KL(TUfh7BXp!$DIJG(ei@rx8VQ) diff --git a/runtime/macros/life/life.vim b/runtime/macros/life/life.vim index adf4e208..552a4930 100644 --- a/runtime/macros/life/life.vim +++ b/runtime/macros/life/life.vim @@ -1,6 +1,7 @@ " Macros to play Conway's Game of Life in vi " Version 1.0m: edges wrap -" by Eli-the-Bearded (eli@netusa.net), Sept 1996 +" by Eli-the-Bearded Benjamin Elijah Griffin +" Sept 1996 " This file may be free distributed so long as these credits remain unchanged. " " Modified by Bram Moolenaar (Bram@vim.org), 1996 Sept 10 diff --git a/runtime/macros/matchit.txt b/runtime/macros/matchit.txt index 57373fe5..8a3a96e2 100644 --- a/runtime/macros/matchit.txt +++ b/runtime/macros/matchit.txt @@ -4,7 +4,7 @@ For instructions on installing this file, type :help matchit-install inside Vim. -For Vim version 6.3. Last change: 2006 Feb 23 +For Vim version 6.3. Last change: 2007 Aug 29 VIM REFERENCE MANUAL by Benji Fisher @@ -34,7 +34,7 @@ in your |vimrc| file: > *g%* *v_g%* *o_g%* g% Cycle backwards through matching groups, as specified by - |b:match_words|. For example, go from "endif" to "else" to "if". + |b:match_words|. For example, go from "if" to "endif" to "else". *[%* *v_[%* *o_[%* [% Go to [count] previous unmatched group, as specified by @@ -64,9 +64,9 @@ option. The matchit plugin extends this in several ways: By default, words inside comments and strings are ignored, unless the cursor is inside a comment or string when you type "%". If the only thing you want to do is modify the behavior of "%" so that it - behaves this way, you can > - :let b:match_words = &matchpairs -< + behaves this way, you do not have to define |b:match_words|, since the + script uses the 'matchpairs' option as well as this variable. + See |matchit-details| for details on what the script does, and |b:match_words| for how to specify matching patterns. @@ -84,7 +84,7 @@ LANGUAGES: *matchit-languages* Currently, the following languages are supported: Ada, ASP with VBS, Csh, DTD, Entity, Essbase, Fortran, HTML, JSP (same as HTML), LaTeX, Lua, Pascal, SGML, Shell, Tcsh, Vim, XML. Other languages may already have support via -|filetype-plugin|s. +the default |filetype-plugin|s in the standard vim distribution. To support a new language, see |matchit-newlang| below. @@ -109,7 +109,6 @@ The script follows these rules: Prefer a match that includes the cursor position (that is, one that starts on or before the cursor). Prefer a match that starts as close to the cursor as possible. - Prefer a match in |b:match_words| to a match in 'matchpairs'. If more than one pattern in |b:match_words| matches, choose the one that is listed first. @@ -131,9 +130,10 @@ Examples: cursor starts on the "end " then "end if" is chosen. (You can avoid this problem by using a more complicated pattern.) -If there is no match, the script falls back on the usual behavior of |%|. If -debugging is turned on, the matched bit of text is saved as |b:match_match| -and the cursor column of the start of the match is saved as |b:match_col|. +If there is no match, the cursor does not move. (Before version 1.13 of the +script, it would fall back on the usual behavior of |%|). If debugging is +turned on, the matched bit of text is saved as |b:match_match| and the cursor +column of the start of the match is saved as |b:match_col|. Next, the script looks through |b:match_words| (original and parsed versions) for the group and pattern that match. If debugging is turned on, the group is @@ -160,11 +160,13 @@ or > :runtime macros/matchit.vim Either way, the script should start working the next time you start up Vim. -The script does nothing unless it finds a |buffer-variable| named -|b:match_words|. The script contains autocommands that set this variable for -various file types: see |matchit-languages| above. For a new language, you -can add autocommands to the script or to your vimrc file, but the recommended -method is to add a line such as > +(Earlier versions of the script did nothing unless a |buffer-variable| named +|b:match_words| was defined. Even earlier versions contained autocommands +that set this variable for various file types. Now, |b:match_words| is +defined in many of the default |filetype-plugin|s instead.) + +For a new language, you can add autocommands to the script or to your vimrc +file, but the recommended method is to add a line such as > let b:match_words = '\:\' to the |filetype-plugin| for your language. See |b:match_words| below for how this variable is interpreted. diff --git a/runtime/macros/matchit.vim b/runtime/macros/matchit.vim index 7fcc53e8..e41cda9e 100644 --- a/runtime/macros/matchit.vim +++ b/runtime/macros/matchit.vim @@ -1,7 +1,7 @@ " matchit.vim: (global plugin) Extended "%" matching -" Last Change: Mon May 15 10:00 PM 2006 EDT +" Last Change: Fri Jan 25 10:00 AM 2008 EST " Maintainer: Benji Fisher PhD -" Version: 1.11, for Vim 6.3+ +" Version: 1.13.2, for Vim 6.3+ " URL: http://www.vim.org/script.php?script_id=39 " Documentation: @@ -42,7 +42,7 @@ if exists("loaded_matchit") || &cp endif let loaded_matchit = 1 let s:last_mps = "" -let s:last_words = "" +let s:last_words = ":" let s:save_cpo = &cpo set cpo&vim @@ -100,13 +100,10 @@ function! s:Match_wrapper(word, forward, mode) range " In s:CleanUp(), we may need to check whether the cursor moved forward. let startline = line(".") let startcol = col(".") - " Use default behavior if called with a count or if no patterns are defined. + " Use default behavior if called with a count. if v:count exe "normal! " . v:count . "%" return s:CleanUp(restore_options, a:mode, startline, startcol) - elseif !exists("b:match_words") || b:match_words == "" - silent! normal! % - return s:CleanUp(restore_options, a:mode, startline, startcol) end " First step: if not already done, set the script variables @@ -114,8 +111,10 @@ function! s:Match_wrapper(word, forward, mode) range " s:pat parsed version of b:match_words " s:all regexp based on s:pat and the default groups " - " Allow b:match_words = "GetVimMatchWords()" . - if b:match_words =~ ":" + if !exists("b:match_words") || b:match_words == "" + let match_words = "" + " Allow b:match_words = "GetVimMatchWords()" . + elseif b:match_words =~ ":" let match_words = b:match_words else execute "let match_words =" b:match_words @@ -125,13 +124,6 @@ function! s:Match_wrapper(word, forward, mode) range \ exists("b:match_debug") let s:last_words = match_words let s:last_mps = &mps - if match_words !~ s:notslash . '\\\d' - let s:do_BR = 0 - let s:pat = match_words - else - let s:do_BR = 1 - let s:pat = s:ParseWords(match_words) - endif " The next several lines were here before " BF started messing with this script. " quote the special chars in 'matchpairs', replace [,:] with \| and then @@ -141,8 +133,15 @@ function! s:Match_wrapper(word, forward, mode) range let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>' " s:all = pattern with all the keywords - let s:all = s:pat . (strlen(s:pat) ? "," : "") . default - let s:all = substitute(s:all, s:notslash . '\zs[,:]\+', '\\|', 'g') + let match_words = match_words . (strlen(match_words) ? "," : "") . default + if match_words !~ s:notslash . '\\\d' + let s:do_BR = 0 + let s:pat = match_words + else + let s:do_BR = 1 + let s:pat = s:ParseWords(match_words) + endif + let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g') let s:all = '\%(' . s:all . '\)' " let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)' if exists("b:match_debug") @@ -172,16 +171,14 @@ function! s:Match_wrapper(word, forward, mode) range else " Find the match that ends on or after the cursor and set curcol. let regexp = s:Wholematch(matchline, s:all, startcol-1) let curcol = match(matchline, regexp) + " If there is no match, give up. + if curcol == -1 + return s:CleanUp(restore_options, a:mode, startline, startcol) + endif let endcol = matchend(matchline, regexp) let suf = strlen(matchline) - endcol let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(') let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$') - " If the match comes from the defaults, bail out. - if matchline !~ prefix . - \ substitute(s:pat, s:notslash.'\zs[,:]\+', '\\|', 'g') . suffix - silent! norm! % - return s:CleanUp(restore_options, a:mode, startline, startcol) - endif endif if exists("b:match_debug") let b:match_match = matchstr(matchline, regexp) @@ -401,6 +398,7 @@ fun! s:ParseWords(groups) endwhile " Now, tail has been used up. let parsed = parsed . "," endwhile " groups =~ '[^,:]' + let parsed = substitute(parsed, ',$', '', '') return parsed endfun @@ -651,7 +649,7 @@ fun! s:MultiMatch(spflag, mode) " s:all regexp based on s:pat and the default groups " This part is copied and slightly modified from s:Match_wrapper(). let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") . - \ '\/\*:\*\/,#if\%(def\)\=:$else\>:#elif\>:#endif\>' + \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>' " Allow b:match_words = "GetVimMatchWords()" . if b:match_words =~ ":" let match_words = b:match_words @@ -682,10 +680,12 @@ fun! s:MultiMatch(spflag, mode) " - maybe even more functionality should be split off " - into separate functions! let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default - let open = substitute(s:pat . cdefault, ':[^,]*,', '\\),\\(', 'g') - let open = '\(' . substitute(open, ':[^,]*$', '\\)', '') - let close = substitute(s:pat . cdefault, ',[^,]*:', '\\),\\(', 'g') - let close = substitute(close, '[^,]*:', '\\(', '') . '\)' + let open = substitute(s:pat . cdefault, + \ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g') + let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '') + let close = substitute(s:pat . cdefault, + \ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g') + let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)' if exists("b:match_skip") let skip = b:match_skip elseif exists("b:match_comment") " backwards compatibility and testing! diff --git a/runtime/macros/maze.info b/runtime/macros/maze.info deleted file mode 100644 index 2ad27db5a10927200064ce9b2ac05ec0aec22764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 624 zcwT!fz`)1=0`&~?3{DI@3~WF?BZE@@0S2YQ2@J>}1&A4$AZ#VUA3(Ahh(#FGGH$@t zJZD(WSjph^|38Ss#2{49pq3c~(IFoLR~5rx{~rjTHp74u12<3$;~WQO6k!L5Vjwuc zU;`172eJ@iM6zt*EPFVs9?pU?{x`r`3^3MvIO{x!^{@W_dVT{T5SOC+mjxuqzz6`0=^Us4 diff --git a/runtime/macros/maze/README.txt.info b/runtime/macros/maze/README.txt.info deleted file mode 100644 index 263ddcd2c284151cabf4a09fc84ee0b1db75aea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 734 zcwT!fz`)1=0=*2v3zl5R#<^V9J0& zl7WeVak&9AnESDhvqj;+SEV~A1~Xd{Qv*|z4@ERz`!r?k&l6a zH}3m71_r(xKkb3yPJfRnRhsMlFrMl3?8B!?=5vHhzFe8+`nl)tu}ndZf)8^(-Scnx zlj!D@Ece$`Va|soUyqmh^S=5yP34Xb%OAs=2hC%C?lMrH5%#HL>BWObzLuSu!x!@> zMau1a(!Y5(3kodw3cpp~x8S;~d~)F>cIi4>F*%Npn>T*?!8`r`|Gz>^K=RK!zVASn zEZ_(Sim0(22a_3UQ^J)+LH3dcCmm{U; zXE6Mn1QxeW{M_I0vv&=U{aM!sBzp=J<-a$D0LgF5a)2b;*319@|KR2~2L=(#+f|Yc z`?#+g1KIrlziTG^WB-2|%zg|e-vdeZ|3LNsn09t?q{y+K14TV=?j?bwf85&HVDaf7 zmB}DB^SnukO?FJDK!ML~-DQyek1ZE0eq1@R>;R|48B*xLID z7Fq~#W@p(L$rEH?_rBSk8Ti=yI6wx8FC1cwBNUuxXl^HHrtkP4S$>J;_?*`hXP>cZABl(c2G-kJT^=m6s?$e3)fqJOkJlDxt<+=Cy z?!I*u*RAGlq?%AG6@VqB9&9%cWU00tDGd_YPKoPgfzrI`QsV~^mfvvcei4m;muLj| zXhcH6$ORH3$8~DNz0rvN%-cxOh$$KgsgaNxDGd^dQLLKaz}^dkKxUO<}p8a8K}<)`_!@Y;=vUChaNSitx$qLZbe*l39LLAa8$bQvo&Nv-Um+$S`R5(qcc4oa zaD)Rz)Yy&#$vsS#ciT=}U_X<#SCWr6_eApBQ{38_yLgJ2ET_Hu-p8NJtGJ9iC_OtXu1?eBkBgXRKi$bO zhcQvDzyAPo_$_0Agx^mu9U%GT!wDeyTPXBdy~7ucGeGwD|0k}^XZXWV0+MBj0h0kh z^8f!gK=Q9!>G#Coy+k?Sa3hpeX!ur1bm@ zhM$wb;?{|u`x}1tt^u+?>-vCXPi+9%z9|Gqep{9UB-yrJ{{R06H@`VBh*;jPl5E(= zecc$y=Kud)GvOcm|I=XhV=(z1NV5M2s{hBdvx_4|j{O`c>Unc72_*gF*3JftPY0$&2d~WM5gY2e^BKROthG z0EILb%dNA{I_C)nr~2lfe`n|atwVuIP4I{Tswh*h5X|-n=6zh&)Y%HmLGwV(JJAC= zZ(Z?xB2o*yTI-qu8k(jb{G#3=oa t(iYM}9`bql6S_G*DXEZIIr_84nxUf~D9u_LMX||zL|eY}I&aB|P)CL78&CiM diff --git a/runtime/macros/urm/README.txt.info b/runtime/macros/urm/README.txt.info deleted file mode 100644 index 1337937c971cbec16817eecef4ca17de9504399e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 734 zcwT!fz`)1=0=*2v3jYvBgk-4!m@;6H zWME=oT-d-2=6>wsY*9GyRq2jdoX(FYjfY-7_|E6!$IJF9|NsAgZ~o>nFz^d}o>X z3pm1oB5G{Mf#e=0%e!qSF0h|T+bhY(n|mVp?I~{U%w0T1OqSE$eedH>=2hHK#XN84 z-Z>ALPTf!DkK(fE-0(?+E%UbW$P zNdEu-21x#OEB!wE!4Ja;K=!9ey6@*Qe7Q0OES>=*KgXI&qV?5PbP+c$*($#2VYfF#@2%m4rX;N~|61`*5KRgw++ zxUU-n+5G>%YbN|-|9=|Hehenx14;J(K=uEac6M>3$g!UTMLlosC4r=W+}hb-@#!Fy z$sjiKyh({oc1)*0fzNH-Wsv@lEf*|)WFAjJ9a~W_kj-;xGf39dA7s1lY9PrOIT`34 Tpu>2qlJ$K{lQVqti&7Z?PoP5? diff --git a/runtime/main.aap b/runtime/main.aap new file mode 100644 index 00000000..16b8b407 --- /dev/null +++ b/runtime/main.aap @@ -0,0 +1,23 @@ +# This recipe checks whether the runtime files use "unix" or "dos" fileformat. +# Then it includes either getdos.aap or getunix.aap. + +:recipe {fetch = ftp://ftp.vim.org/pub/vim/runtime/main.aap} + +@dos = 0 +@try: +@ f = open("filetype.vim", "rb") +@ line = f.read(200) +@ for c in line: +@ if c == '\r': +@ dos = 1 +@except: +@ if _no.OSTYPE == "mswin" or _no.OSTYPE == "msdos" or _no.OSTYPE == "os2" or _no.OSTYPE == "ce": +@ dos = 1 + :print Cannot read "filetype.vim", guessing fileformat is "dos". +@ else: + :print Cannot read "filetype.vim", guessing fileformat is "unix". + +@if dos: + :include getdos.aap {fetch = ftp://ftp.vim.org/pub/vim/runtime/getdos.aap} +@else: + :include getunix.aap {fetch = ftp://ftp.vim.org/pub/vim/runtime/getunix.aap} diff --git a/runtime/optwin.vim b/runtime/optwin.vim index c0cbf2b6..54981326 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: Bram Moolenaar -" Last Change: 2006 Oct 10 +" Last Change: 2008 Jan 22 " If there already is an option window, jump to that one. if bufwinnr("option-window") > 0 @@ -350,6 +350,10 @@ call append("$", "lines\tnumber of lines in the display") call append("$", " \tset lines=" . &lines) call append("$", "lazyredraw\tdon't redraw while executing macros") call BinOptionG("lz", &lz) +if has("reltime") + call append("$", "redrawtime\ttimeout for 'hlsearch' and :match highlighting in msec") + call append("$", " \tset rdt=" . &rdt) +endif call append("$", "writedelay\tdelay in msec for each char written to the display") call append("$", "\t(for debugging)") call append("$", " \tset wd=" . &wd) diff --git a/runtime/plugin/getscriptPlugin.vim b/runtime/plugin/getscriptPlugin.vim index b871bc1d..e88db7fa 100644 --- a/runtime/plugin/getscriptPlugin.vim +++ b/runtime/plugin/getscriptPlugin.vim @@ -1,7 +1,7 @@ " --------------------------------------------------------------------- " getscriptPlugin.vim " Author: Charles E. Campbell, Jr. -" Date: Jul 18, 2006 +" Date: Jan 07, 2008 " Installing: :help glvs-install " Usage: :help glvs " @@ -19,8 +19,7 @@ if &cp || exists("g:loaded_getscriptPlugin") endif finish endif -let g:loaded_getscriptPlugin = 1 -let s:keepfo = &fo +let g:loaded_getscriptPlugin = "v29" let s:keepcpo = &cpo set cpo&vim @@ -30,9 +29,10 @@ com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts() com! -nargs=0 GetScripts call getscript#GetLatestVimScripts() silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts() +" --------------------------------------------------------------------- " Restore Options: {{{1 -let &fo = s:keepfo let &cpo= s:keepcpo +unlet s:keepcpo " --------------------------------------------------------------------- " vim: ts=8 sts=2 fdm=marker nowrap diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim index 152eb321..03b9591d 100644 --- a/runtime/plugin/netrwPlugin.vim +++ b/runtime/plugin/netrwPlugin.vim @@ -1,6 +1,6 @@ " netrwPlugin.vim: Handles file transfer and remote directory listing across a network " PLUGIN SECTION -" Date: Jan 05, 2007 +" Date: Aug 09, 2007 " Maintainer: Charles E Campbell, Jr " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 @@ -22,7 +22,7 @@ if &cp || exists("g:loaded_netrwPlugin") finish endif -let g:loaded_netrwPlugin = 1 +let g:loaded_netrwPlugin = "v123" let s:keepcpo = &cpo if v:version < 700 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 for this version of netrw" | echohl None @@ -47,10 +47,10 @@ augroup END augroup Network au! if has("win32") || has("win95") || has("win64") || has("win16") - au BufReadCmd file://* exe "silent doau BufReadPre ".netrw#RFC2396(expand(""))|exe 'e '.substitute(netrw#RFC2396(expand("")),'file://\(.*\)','\1',"")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("")) + au BufReadCmd file://* exe "silent doau BufReadPre ".netrw#RFC2396(expand(""))|exe 'e '.substitute(netrw#RFC2396(expand("")),'file://\(.*\)','\1',"")|exe "bwipe ".expand("")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("")) else - au BufReadCmd file://* exe "silent doau BufReadPre ".netrw#RFC2396(expand(""))|exe 'e '.substitute(netrw#RFC2396(expand("")),'file://\(.*\)','\1',"")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("")) - au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".netrw#RFC2396(expand(""))|exe 'e '.substitute(netrw#RFC2396(expand("")),'file://localhost/\(.*\)','\1',"")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("")) + au BufReadCmd file://* exe "silent doau BufReadPre ".netrw#RFC2396(expand(""))|exe 'e '.substitute(netrw#RFC2396(expand("")),'file://\(.*\)','\1',"")|exe "bwipe ".expand("")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("")) + au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".netrw#RFC2396(expand(""))|exe 'e '.substitute(netrw#RFC2396(expand("")),'file://localhost/\(.*\)','\1',"")|exe "bwipe ".substitute(expand(""),'file://\(\k\+@\)\=','','')|exe "silent doau BufReadPost ".netrw#RFC2396(expand("")) endif au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("")|exe '2Nread "'.expand("").'"'|exe "silent doau BufReadPost ".expand("") au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau FileReadPre ".expand("")|exe 'Nread "' .expand("").'"'|exe "silent doau FileReadPost ".expand("") @@ -64,11 +64,10 @@ augroup Network augroup END " Commands: :Nread, :Nwrite, :NetUserPass {{{2 -com! -count=1 -nargs=* Nread call netrw#NetSavePosn()call netrw#NetRead(,)call netrw#NetRestorePosn() -com! -range=% -nargs=* Nwrite call netrw#NetSavePosn(),call netrw#NetWrite()call netrw#NetRestorePosn() +com! -count=1 -nargs=* Nread call netrw#NetrwSavePosn()call netrw#NetRead(,)call netrw#NetrwRestorePosn() +com! -range=% -nargs=* Nwrite call netrw#NetrwSavePosn(),call netrw#NetWrite()call netrw#NetrwRestorePosn() com! -nargs=* NetUserPass call NetUserPass() -com! -nargs=+ Ncopy call netrw#NetObtain() -com! -nargs=* Nsource call netrw#NetSavePosn()call netrw#NetSource()call netrw#NetRestorePosn() +com! -nargs=* Nsource call netrw#NetrwSavePosn()call netrw#NetSource()call netrw#NetrwRestorePosn() " Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2 com! -nargs=* -bar -bang -count=0 -complete=dir Explore call netrw#Explore(,0,0+0,) @@ -80,7 +79,8 @@ com! -nargs=* -bar -bang Nexplore call netrw#Explore(-1,0,0,) com! -nargs=* -bar -bang Pexplore call netrw#Explore(-2,0,0,) " Commands: NetrwSettings {{{2 -com! -nargs=0 NetrwSettings :call netrwSettings#NetrwSettings() +com! -nargs=0 NetrwSettings call netrwSettings#NetrwSettings() +com! -bang NetrwClean call netrw#NetrwClean(0) " Maps: if !exists("g:netrw_nogx") && maparg('g','n') == "" diff --git a/runtime/plugin/tarPlugin.vim b/runtime/plugin/tarPlugin.vim index e1b87fee..c2e8bb04 100644 --- a/runtime/plugin/tarPlugin.vim +++ b/runtime/plugin/tarPlugin.vim @@ -14,7 +14,7 @@ if &cp || exists("g:loaded_tarPlugin") finish endif -let g:loaded_tarPlugin = 1 +let g:loaded_tarPlugin = "v13" let s:keepcpo = &cpo set cpo&vim @@ -34,8 +34,9 @@ augroup tar au FileWriteCmd tarfile:*/* call tar#Write(expand("")) endif - au BufReadCmd *.tar call tar#Browse(expand("")) au BufReadCmd *.tar.gz call tar#Browse(expand("")) + au BufReadCmd *.tar call tar#Browse(expand("")) + au BufReadCmd *.lrp call tar#Browse(expand("")) au BufReadCmd *.tar.bz2 call tar#Browse(expand("")) au BufReadCmd *.tar.Z call tar#Browse(expand("")) au BufReadCmd *.tgz call tar#Browse(expand("")) diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim index 386e58f1..128f0d21 100644 --- a/runtime/plugin/vimballPlugin.vim +++ b/runtime/plugin/vimballPlugin.vim @@ -1,6 +1,6 @@ " vimballPlugin : construct a file containing both paths and files " Author: Charles E. Campbell, Jr. -" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr. +" Copyright: (c) 2004-2007 by Charles E. Campbell, Jr. " The VIM LICENSE applies to Vimball.vim, and Vimball.txt " (see |copyright|) except use "Vimball" instead of "Vim". " No warranty, express or implied. @@ -16,18 +16,18 @@ if &cp || exists("g:loaded_vimballPlugin") finish endif -let g:loaded_vimballPlugin = 1 +let g:loaded_vimballPlugin = "v25" let s:keepcpo = &cpo set cpo&vim " ------------------------------------------------------------------------------ " Public Interface: {{{1 -com! -ra -complete=dir -na=+ -bang MkVimball call vimball#MkVimball(,,0,) -com! -na=? -complete=dir UseVimball call vimball#Vimball(1,) -com! -na=0 VimballList call vimball#Vimball(0) -com! -na=* -complete=dir RmVimball call vimball#RmVimball() +com! -ra -complete=file -na=+ -bang MkVimball call vimball#MkVimball(,,0,) +com! -na=? -complete=dir UseVimball call vimball#Vimball(1,) +com! -na=0 VimballList call vimball#Vimball(0) +com! -na=* -complete=dir RmVimball call vimball#RmVimball() au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("")) -au BufEnter *.vba setlocal noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)") +au BufEnter *.vba setlocal ff=unix noma bt=nofile fmr=[[[,]]] fdm=marker|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)") " ===================================================================== " Restoration And Modelines: {{{1 diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim index 69e98bd6..18235666 100644 --- a/runtime/plugin/zipPlugin.vim +++ b/runtime/plugin/zipPlugin.vim @@ -1,6 +1,6 @@ " zipPlugin.vim: Handles browsing zipfiles " PLUGIN PORTION -" Date: Jul 18, 2006 +" Date: Oct 05, 2007 " Maintainer: Charles E Campbell, Jr " License: Vim License (see vim's :help license) " Copyright: Copyright (C) 2005,2006 Charles E. Campbell, Jr. {{{1 @@ -20,7 +20,7 @@ if &cp || exists("g:loaded_zipPlugin") finish endif -let g:loaded_zipPlugin = 1 +let g:loaded_zipPlugin = "v16" let s:keepcpo = &cpo set cpo&vim @@ -40,7 +40,7 @@ augroup zip au FileWriteCmd zipfile:*/* call zip#Write(expand("")) endif - au BufReadCmd *.zip call zip#Browse(expand("")) + au BufReadCmd *.zip,*.jar,*.xpi,*.war,*.ear call zip#Browse(expand("")) augroup END " --------------------------------------------------------------------- diff --git a/runtime/scripts.vim b/runtime/scripts.vim index 9e0e7b8d..4cee34e8 100644 --- a/runtime/scripts.vim +++ b/runtime/scripts.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types in scripts " " Maintainer: Bram Moolenaar -" Last change: 2007 Apr 29 +" Last change: 2007 Dec 20 " This file is called by an autocommand for every file that has just been " loaded into a buffer. It checks if the type of file can be recognized by @@ -234,6 +234,10 @@ else elseif s:line1 =~ '\ -" Last Change: 2007 Mar 10 +" Last Change: 2007 Aug 31 " (modified by David Ne\v{c}as (Yeti) ) " (XHTML support by Panagiotis Issaris ) " (made w3 compliant by Edd Barrett ) @@ -162,9 +162,9 @@ else let s:html_encoding = 'iso-8859-1' elseif s:vim_encoding =~ "^cp12" let s:html_encoding = substitute(s:vim_encoding, 'cp', 'windows-', '') - elseif s:vim_encoding == 'sjis' + elseif s:vim_encoding == 'sjis' || s:vim_encoding == 'cp932' let s:html_encoding = 'Shift_JIS' - elseif s:vim_encoding == 'big5' + elseif s:vim_encoding == 'big5' || s:vim_encoding == 'cp950' let s:html_encoding = "Big5" elseif s:vim_encoding == 'euc-cn' let s:html_encoding = 'GB_2312-80' diff --git a/runtime/syntax/ada.vim b/runtime/syntax/ada.vim index 9edf9de9..aede506e 100644 --- a/runtime/syntax/ada.vim +++ b/runtime/syntax/ada.vim @@ -1,16 +1,16 @@ "---------------------------------------------------------------------------- " Description: Vim Ada syntax file " Language: Ada (2005) -" $Id: ada.vim,v 1.5 2007/05/12 15:28:06 vimboss Exp $ +" $Id: ada.vim,v 1.2 2007/05/05 18:22:26 vimboss Exp $ " Copyright: Copyright (C) 2006 Martin Krischik " Maintainer: Martin Krischik " David A. Wheeler " Simon Bradley " Contributors: Preben Randhol. " $Author: vimboss $ -" $Date: 2007/05/12 15:28:06 $ +" $Date: 2007/05/05 18:22:26 $ " Version: 4.2 -" $Revision: 1.5 $ +" $Revision: 1.2 $ " $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/syntax/ada.vim $ " http://www.dwheeler.com/vim " History: 24.05.2006 MK Unified Headers diff --git a/runtime/syntax/arch.vim b/runtime/syntax/arch.vim index ad23a771..fa9c3f02 100644 --- a/runtime/syntax/arch.vim +++ b/runtime/syntax/arch.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: GNU Arch inventory file " Maintainer: Nikolai Weibull -" Latest Revision: 2007-05-06 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,_,- +setlocal iskeyword+=- syn keyword archTodo TODO FIXME XXX NOTE diff --git a/runtime/syntax/aspvbs.vim b/runtime/syntax/aspvbs.vim index ea159f80..07c129e4 100644 --- a/runtime/syntax/aspvbs.vim +++ b/runtime/syntax/aspvbs.vim @@ -4,7 +4,7 @@ " URL: http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken) " Last Change: 2006 Jun 19 " by Dan Casey -" Version: $Revision: 1.6 $ +" Version: $Revision: 1.3 $ " Thanks to Jay-Jay for a syntax sync hack, hungarian " notation, and extra highlighting. " Thanks to patrick dehne for the folding code. diff --git a/runtime/syntax/autohotkey.vim b/runtime/syntax/autohotkey.vim index 78cb9e79..bbefd6f7 100644 --- a/runtime/syntax/autohotkey.vim +++ b/runtime/syntax/autohotkey.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: AutoHotkey script file " Maintainer: Nikolai Weibull -" Latest Revision: 2007-05-09 +" Latest Revision: 2007-06-01 if exists("b:current_syntax") finish @@ -242,6 +242,10 @@ syn keyword autohotkeyType \ local \ global +syn keyword autohotkeyBoolean + \ true + \ false + hi def link autohotkeyTodo Todo hi def link autohotkeyComment Comment hi def link autohotkeyCommentStart autohotkeyComment @@ -271,6 +275,7 @@ hi def link autohotkeyNumber Number hi def link autohotkeyInteger autohotkeyNumber hi def link autohotkeyFloat autohotkeyNumber hi def link autohotkeyType Type +hi def link autohotkeyBoolean Boolean let b:current_syntax = "autohotkey" diff --git a/runtime/syntax/b.vim b/runtime/syntax/b.vim index 7f6c4e88..b470ab9e 100644 --- a/runtime/syntax/b.vim +++ b/runtime/syntax/b.vim @@ -1,7 +1,8 @@ " Vim syntax file " Language: B (A Formal Method with refinement and mathematical proof) -" Maintainer: Mathieu Clabaut -" LastChange: 25 Apr 2001 +" Maintainer: Mathieu Clabaut +" Contributor: Csaba Hoch +" LastChange: 8 Dec 2007 " For version 5.x: Clear all syntax items @@ -14,20 +15,20 @@ endif " A bunch of useful B keywords -syn keyword bStatement MACHINE SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY +syn keyword bStatement MACHINE MODEL SEES OPERATIONS INCLUDES DEFINITIONS CONSTRAINTS CONSTANTS VARIABLES CONCRETE_CONSTANTS CONCRETE_VARIABLES ABSTRACT_CONSTANTS ABSTRACT_VARIABLES HIDDEN_CONSTANTS HIDDEN_VARIABLES ASSERT ASSERTIONS EXTENDS IMPLEMENTATION REFINEMENT IMPORTS USES INITIALISATION INVARIANT PROMOTES PROPERTIES REFINES SETS VALUES VARIANT VISIBLE_CONSTANTS VISIBLE_VARIABLES THEORY XLS THEOREMS LOCAL_OPERATIONS syn keyword bLabel CASE IN EITHER OR CHOICE DO OF syn keyword bConditional IF ELSE SELECT ELSIF THEN WHEN syn keyword bRepeat WHILE FOR syn keyword bOps bool card conc closure closure1 dom first fnc front not or id inter iseq iseq1 iterate last max min mod perm pred prj1 prj2 ran rel rev seq seq1 size skip succ tail union syn keyword bKeywords LET VAR BE IN BEGIN END POW POW1 FIN FIN1 PRE SIGMA STRING UNION IS ANY WHERE -syn match bKeywords "||" syn keyword bBoolean TRUE FALSE bfalse btrue syn keyword bConstant PI MAXINT MININT User_Pass PatchProver PatchProverH0 PatchProverB0 FLAT ARI DED SUB RES syn keyword bGuard binhyp band bnot bguard bsearch bflat bfresh bguardi bget bgethyp barith bgetresult bresult bgoal bmatch bmodr bnewv bnum btest bpattern bprintf bwritef bsubfrm bvrb blvar bcall bappend bclose syn keyword bLogic or not -syn match bLogic "\&\|=>\|<=>" +syn match bLogic "\(!\|#\|%\|&\|+->>\|+->\|-->>\|->>\|-->\|->\|/:\|/<:\|/<<:\|/=\|/\\\|/|\\\|::\|:\|;:\|<+\|<->\|<--\|<-\|<:\|<<:\|<<|\|<=>\|<|\|==\|=>\|>+>>\|>->\|>+>\|||\||->\)" +syn match bNothing /:=/ syn keyword cTodo contained TODO FIXME XXX @@ -51,23 +52,8 @@ syn match bNumber "\<[0-9]\+\>" "syn match bIdentifier "\<[a-z_][a-z0-9_]*\>" syn case match -if exists("b_comment_strings") - " A comment can contain bString, bCharacter and bNumber. - " But a "*/" inside a bString in a bComment DOES end the comment! So we - " need to use a special type of bString: bCommentString, which also ends on - " "*/", and sees a "*" at the start of the line as comment again. - " Unfortunately this doesn't very well work for // type of comments :-( - syntax match bCommentSkip contained "^\s*\*\($\|\s\+\)" - syntax region bCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=bSpecial,bCommentSkip - syntax region bComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=bSpecial - syntax region bComment start="/\*" end="\*/" contains=bTodo,bCommentString,bCharacter,bNumber,bFloat - syntax region bComment start="/\?\*" end="\*\?/" contains=bTodo,bCommentString,bCharacter,bNumber,bFloat - syntax match bComment "//.*" contains=bTodo,bComment2String,bCharacter,bNumber -else syn region bComment start="/\*" end="\*/" contains=bTodo - syn region bComment start="/\?\*" end="\*\?/" contains=bTodo syn match bComment "//.*" contains=bTodo -endif syntax match bCommentError "\*/" syn keyword bType INT INTEGER BOOL NAT NATURAL NAT1 NATURAL1 @@ -80,7 +66,6 @@ syn match bInclude "^\s*#\s*include\>\s*["<]" contains=bIncluded syn region bDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen syn region bPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,bPreCondit,bIncluded,bInclude,bDefine,bInParen - syn sync ccomment bComment minlines=10 " Define the default highlighting. diff --git a/runtime/syntax/bst.vim b/runtime/syntax/bst.vim index 71829dd7..e7836d78 100644 --- a/runtime/syntax/bst.vim +++ b/runtime/syntax/bst.vim @@ -2,7 +2,7 @@ " Language: BibTeX Bibliography Style " Maintainer: Tim Pope " Filenames: *.bst -" $Id: bst.vim,v 1.5 2007/05/12 15:32:12 vimboss Exp $ +" $Id: bst.vim,v 1.2 2007/05/05 18:24:42 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded diff --git a/runtime/syntax/bzr.vim b/runtime/syntax/bzr.vim index 8f7d0d14..58ccfba3 100644 --- a/runtime/syntax/bzr.vim +++ b/runtime/syntax/bzr.vim @@ -2,7 +2,7 @@ " Language: Bazaar (bzr) commit file " Maintainer: Dmitry Vasiliev " URL: http://www.hlabs.spb.ru/vim/bzr.vim -" Revision: $Id: bzr.vim,v 1.4 2007/05/12 12:58:05 vimboss Exp $ +" Revision: $Id: bzr.vim,v 1.1 2007/05/05 17:20:51 vimboss Exp $ " Filenames: bzr_log.* " Version: 1.0 diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim index 7164e14e..07df36ba 100644 --- a/runtime/syntax/c.vim +++ b/runtime/syntax/c.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C " Maintainer: Bram Moolenaar -" Last Change: 2007 Feb 13 +" Last Change: 2008 Mar 19 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -65,12 +65,17 @@ if exists("c_space_errors") endif " This should be before cErrInParen to avoid problems with #define ({ xxx }) -syntax region cBlock start="{" end="}" transparent fold +if exists("c_curly_error") + syntax match cCurlyError "}" + syntax region cBlock start="{" end="}" contains=ALLBUT,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold +else + syntax region cBlock start="{" end="}" transparent fold +endif "catch errors caused by wrong parenthesis and brackets " also accept <% for {, %> for }, <: for [ and :> for ] (C99) " But avoid matching <::. -syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom +syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom if exists("c_no_curly_error") syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell " cCppParen: same as cParen but ends at end-of-line; used in cDefine @@ -144,9 +149,9 @@ if exists("c_comment_strings") else syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell if exists("c_no_comment_fold") - syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell + syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend else - syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold + syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend endif endif " keep a // comment separately, it terminates a preproc. conditional @@ -203,7 +208,7 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX if !exists("c_no_c99") syn keyword cConstant __func__ - syn keyword cConstant LLONG_MAX ULLONG_MAX + syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX @@ -304,7 +309,11 @@ else let b:c_minlines = 15 " mostly for () constructs endif endif -exec "syn sync ccomment cComment minlines=" . b:c_minlines +if exists("c_curly_error") + syn sync fromstart +else + exec "syn sync ccomment cComment minlines=" . b:c_minlines +endif " Define the default highlighting. " Only used when an item doesn't have highlighting yet @@ -330,6 +339,7 @@ hi def link cCommentError cError hi def link cCommentStartError cError hi def link cSpaceError cError hi def link cSpecialError cError +hi def link cCurlyError cError hi def link cOperator Operator hi def link cStructure Structure hi def link cStorageClass StorageClass diff --git a/runtime/syntax/cdrdaoconf.vim b/runtime/syntax/cdrdaoconf.vim new file mode 100644 index 00000000..5058c23a --- /dev/null +++ b/runtime/syntax/cdrdaoconf.vim @@ -0,0 +1,139 @@ +" Vim syntax file +" Language: cdrdao(1) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-09-02 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn keyword cdrdaoconfTodo + \ TODO FIXME XXX NOTE + +syn match cdrdaoconfBegin + \ display + \ nextgroup=@cdrdaoconfKeyword,cdrdaoconfComment + \ '^' + +syn cluster cdrdaoconfKeyword + \ contains=cdrdaoconfIntegerKeyword, + \ cdrdaoconfDriverKeyword, + \ cdrdaoconfDeviceKeyword, + \ cdrdaoconfPathKeyword + +syn keyword cdrdaoconfIntegerKeyword + \ contained + \ nextgroup=cdrdaoconfIntegerDelimiter + \ write_speed + \ write_buffers + \ user_capacity + \ full_burn + \ read_speed + \ cddb_timeout + +syn keyword cdrdaoconfIntegerKeyword + \ contained + \ nextgroup=cdrdaoconfParanoiaModeDelimiter + \ read_paranoia_mode + +syn keyword cdrdaoconfDriverKeyword + \ contained + \ nextgroup=cdrdaoconfDriverDelimiter + \ write_driver + \ read_driver + +syn keyword cdrdaoconfDeviceKeyword + \ contained + \ nextgroup=cdrdaoconfDeviceDelimiter + \ write_device + \ read_device + +syn keyword cdrdaoconfPathKeyword + \ contained + \ nextgroup=cdrdaoconfPathDelimiter + \ cddb_directory + \ tmp_file_dir + +syn match cdrdaoconfIntegerDelimiter + \ contained + \ nextgroup=cdrdaoconfInteger + \ skipwhite + \ ':' + +syn match cdrdaoconfParanoiaModeDelimiter + \ contained + \ nextgroup=cdrdaoconfParanoiaMode + \ skipwhite + \ ':' + +syn match cdrdaoconfDriverDelimiter + \ contained + \ nextgroup=cdrdaoconfDriver + \ skipwhite + \ ':' + +syn match cdrdaoconfDeviceDelimiter + \ contained + \ nextgroup=cdrdaoconfDevice + \ skipwhite + \ ':' + +syn match cdrdaoconfPathDelimiter + \ contained + \ nextgroup=cdrdaoconfPath + \ skipwhite + \ ':' + +syn match cdrdaoconfInteger + \ contained + \ '\<\d\+\>' + +syn match cdrdaoParanoiaMode + \ contained + \ '[0123]' + +syn match cdrdaoconfDriver + \ contained + \ '\<\(cdd2600\|generic-mmc\%(-raw\)\=\|plextor\%(-scan\)\|ricoh-mp6200\|sony-cdu9\%(20\|48\)\|taiyo-yuden\|teac-cdr55\|toshiba\|yamaha-cdr10x\)\>' + +syn region cdrdaoconfDevice + \ contained + \ matchgroup=cdrdaoconfDevice + \ start=+"+ + \ end=+"+ + +syn region cdrdaoconfPath + \ contained + \ matchgroup=cdrdaoconfPath + \ start=+"+ + \ end=+"+ + +syn match cdrdaoconfComment + \ contains=cdrdaoconfTodo,@Spell + \ '^.*#.*$' + +hi def link cdrdaoconfTodo Todo +hi def link cdrdaoconfComment Comment +hi def link cdrdaoconfKeyword Keyword +hi def link cdrdaoconfIntegerKeyword cdrdaoconfKeyword +hi def link cdrdaoconfDriverKeyword cdrdaoconfKeyword +hi def link cdrdaoconfDeviceKeyword cdrdaoconfKeyword +hi def link cdrdaoconfPathKeyword cdrdaoconfKeyword +hi def link cdrdaoconfDelimiter Delimiter +hi def link cdrdaoconfIntegerDelimiter cdrdaoconfDelimiter +hi def link cdrdaoconfDriverDelimiter cdrdaoconfDelimiter +hi def link cdrdaoconfDeviceDelimiter cdrdaoconfDelimiter +hi def link cdrdaoconfPathDelimiter cdrdaoconfDelimiter +hi def link cdrdaoconfInteger Number +hi def link cdrdaoconfParanoiaMode Number +hi def link cdrdaoconfDriver Identifier +hi def link cdrdaoconfDevice cdrdaoconfPath +hi def link cdrdaoconfPath String + +let b:current_syntax = "cdrdaoconf" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/syntax/cf.vim b/runtime/syntax/cf.vim dissimilarity index 65% index 95184060..bda24d79 100644 --- a/runtime/syntax/cf.vim +++ b/runtime/syntax/cf.vim @@ -1,251 +1,321 @@ -" Vim syntax file -" Language: ColdFusion -" Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com) -" Last Change: 2005 Nov 25 -" Filenames: *.cfc *.cfm -" Version: Macromedia ColdFusion MX 7 -" Usage: Note that ColdFusion has its own comment syntax -" i.e. - -" For version 5.x, clear all syntax items. -" For version 6.x+, quit if a syntax file is already loaded. -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Use all the stuff from the HTML syntax file. -" TODO remove this; CFML is not a superset of HTML -if version < 600 - source :p:h/html.vim -else - runtime! syntax/html.vim -endif - -syn sync fromstart -syn sync maxlines=200 -syn case ignore - -" Scopes and keywords. -syn keyword cfScope contained cgi cffile request caller this thistag cfcatch variables application server session client form url attributes arguments -syn keyword cfBool contained yes no true false - -" Operator strings. -" Not exhaustive, since there are longhand equivalents. -syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte eq neq not is mod contains -syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!" -syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch - -" Tag names. -syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate cfbreak cfcache -syn keyword cfTagName contained cfcalendar cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection -syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory cfdocument -syn keyword cfTagName contained cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror cfexecute -syn keyword cfTagName contained cfexit cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid -syn keyword cfTagName contained cfgridcolumn cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif -syn keyword cfTagName contained cfimport cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument -syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout cfloop cfmail -syn keyword cfTagName contained cfmailparam cfmailpart cfmodule cfNTauthenticate cfobject cfobjectcache -syn keyword cfTagName contained cfoutput cfparam cfpop cfprocessingdirective cfprocparam cfprocresult -syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow -syn keyword cfTagName contained cfreturn cfsavecontent cfschedule cfscript cfsearch cfselect cfset cfsetting -syn keyword cfTagName contained cfsilent cfslider cfstoredproc cfswitch cftable cftextarea cfthrow cftimer -syn keyword cfTagName contained cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx cfxml - -" Tag parameters. -syn keyword cfArg contained abort accept access accessible action addnewline addtoken addtoken agentname -syn keyword cfArg contained align appendkey appletsource application applicationtimeout applicationtoken -syn keyword cfArg contained archive argumentcollection arguments asciiextensionlist attachmentpath -syn keyword cfArg contained attributecollection attributes attributes autowidth backgroundcolor -syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname blockfactor body bold -syn keyword cfArg contained border branch cachedafter cachedwithin casesensitive categories category -syn keyword cfArg contained categorytree cc cfsqltype charset chartheight chartwidth checked class -syn keyword cfArg contained clientmanagement clientstorage codebase colheaderalign colheaderbold -syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders colheadertextcolor -syn keyword cfArg contained collection colorlist colspacing columns completepath component condition -syn keyword cfArg contained connection contentid context contextbytes contexthighlightbegin -syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria custom1 custom2 -syn keyword cfArg contained custom3 custom4 data dataalign databackgroundcolor datacollection -syn keyword cfArg contained datalabelstyle datasource date daynames dbname dbserver dbtype dbvarname debug -syn keyword cfArg contained default delete deletebutton deletefile delimiter delimiters description -syn keyword cfArg contained destination detail directory disabled display displayname disposition dn domain -syn keyword cfArg contained enablecab enablecfoutputonly enabled encoded encryption enctype enddate -syn keyword cfArg contained endrange endrow endtime entry errorcode exception existing expand expires -syn keyword cfArg contained expireurl expression extendedinfo extends extensions external failifexists -syn keyword cfArg contained failto file filefield filename filter firstdayofweek firstrowasheaders font -syn keyword cfArg contained fontbold fontembed fontitalic fontsize foregroundcolor format formfields -syn keyword cfArg contained formula from generateuniquefilenames getasbinary grid griddataalign gridlines -syn keyword cfArg contained groovecolor group groupcasesensitive header headeralign headerbold headerfont -syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor height highlighthref -syn keyword cfArg contained hint href hrefkey hscroll hspace htmltable id idletimeout img imgopen imgstyle -syn keyword cfArg contained index inline input insert insertbutton interval isolation italic item -syn keyword cfArg contained itemcolumn key keyonly label labelformat language list listgroups locale -syn keyword cfArg contained localfile log loginstorage lookandfeel mailerid mailto marginbottom marginleft -syn keyword cfArg contained marginright marginright margintop markersize markerstyle mask maxlength maxrows -syn keyword cfArg contained message messagenumber method mimeattach mimetype mode modifytype monthnames -syn keyword cfArg contained multipart multiple name namecomplict nameconflict namespace new newdirectory -syn keyword cfArg contained notsupported null numberformat object omit onchange onclick onerror onkeydown -syn keyword cfArg contained onkeyup onload onmousedown onmouseup onreset onsubmit onvalidate operation -syn keyword cfArg contained orderby orientation output outputfile overwrite ownerpassword pageencoding -syn keyword cfArg contained pageheight pagetype pagewidth paintstyle param_1 param_2 param_3 param_4 -syn keyword cfArg contained param_5 parent passive passthrough password path pattern permissions picturebar -syn keyword cfArg contained pieslicestyle port porttypename prefix preloader preservedata previouscriteria -syn keyword cfArg contained procedure protocol provider providerdsn proxybypass proxypassword proxyport -syn keyword cfArg contained proxyserver proxyuser publish query queryasroot queryposition range rebind -syn keyword cfArg contained recurse redirect referral refreshlabel remotefile replyto report requesttimeout -syn keyword cfArg contained required reset resolveurl result resultset retrycount returnasbinary returncode -syn keyword cfArg contained returntype returnvariable roles rowheaderalign rowheaderbold rowheaderfont -syn keyword cfArg contained rowheaderfontsize rowheaderitalic rowheaders rowheadertextcolor rowheaderwidth -syn keyword cfArg contained rowheight scale scalefrom scaleto scope scriptprotect scriptsrc secure -syn keyword cfArg contained securitycontext select selectcolor selected selecteddate selectedindex -syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement server serviceport -syn keyword cfArg contained serviceportname sessionmanagement sessiontimeout setclientcookies setcookie -syn keyword cfArg contained setdomaincookies show3d showborder showdebugoutput showerror showlegend -syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort sortascendingbutton -syn keyword cfArg contained sortcontrol sortdescendingbutton sortxaxis source spoolenable sql src start -syn keyword cfArg contained startdate startrange startrow starttime status statuscode statustext step -syn keyword cfArg contained stoponerror style subject suggestions suppresswhitespace tablename tableowner -syn keyword cfArg contained tablequalifier taglib target task template text textcolor textqualifier -syn keyword cfArg contained thread throwonerror throwonfailure throwontimeout time timeout timespan tipbgcolor tipstyle -syn keyword cfArg contained title to tooltip top toplevelvariable transfermode type uid unit url urlpath -syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate validateat value -syn keyword cfArg contained valuecolumn values valuesdelimiter valuesdisplay var variable vertical visible -syn keyword cfArg contained vscroll vspace webservice width wmode wraptext wsdlfile xaxistitle xaxistype -syn keyword cfArg contained xoffset yaxistitle yaxistype yoffset - -" ColdFusion Functions. -syn keyword cfFunctionName contained Abs GetFunctionList Max ACos GetGatewayHelper Mid AddSOAPRequestHeader -syn keyword cfFunctionName contained GetHttpRequestData Min AddSOAPResponseHeader GetHttpTimeString Minute -syn keyword cfFunctionName contained ArrayAppend GetLocale Month ArrayAvg GetLocaleDisplayName MonthAsString -syn keyword cfFunctionName contained ArrayClear GetMetaData Now ArrayDeleteAt GetMetricData NumberFormat -syn keyword cfFunctionName contained ArrayInsertAt GetPageContext ParagraphFormat ArrayIsEmpty GetProfileSections -syn keyword cfFunctionName contained ParseDateTime ArrayLen GetProfileString Pi ArrayMax GetSOAPRequest -syn keyword cfFunctionName contained PreserveSingleQuotes ArrayMin GetSOAPRequestHeader Quarter ArrayNew -syn keyword cfFunctionName contained GetSOAPResponse QueryAddColumn ArrayPrepend GetSOAPResponseHeader QueryAddRow -syn keyword cfFunctionName contained ArrayResize GetTempDirectory QueryNew ArraySet GetTempFile QuerySetCell -syn keyword cfFunctionName contained ArraySort GetTickCount QuotedValueList ArraySum GetTimeZoneInfo Rand ArraySwap -syn keyword cfFunctionName contained GetToken Randomize ArrayToList Hash RandRange Asc Hour REFind ASin -syn keyword cfFunctionName contained HTMLCodeFormat REFindNoCase Atn HTMLEditFormat ReleaseComObject BinaryDecode -syn keyword cfFunctionName contained IIf RemoveChars BinaryEncode IncrementValue RepeatString BitAnd InputBaseN -syn keyword cfFunctionName contained Replace BitMaskClear Insert ReplaceList BitMaskRead Int ReplaceNoCase -syn keyword cfFunctionName contained BitMaskSet IsArray REReplace BitNot IsBinary REReplaceNoCase BitOr IsBoolean -syn keyword cfFunctionName contained Reverse BitSHLN IsCustomFunction Right BitSHRN IsDate RJustify BitXor -syn keyword cfFunctionName contained IsDebugMode Round Ceiling IsDefined RTrim CharsetDecode IsLeapYear Second -syn keyword cfFunctionName contained CharsetEncode IsNumeric SendGatewayMessage Chr IsNumericDate SetEncoding -syn keyword cfFunctionName contained CJustify IsObject SetLocale Compare IsQuery SetProfileString CompareNoCase -syn keyword cfFunctionName contained IsSimpleValue SetVariable Cos IsSOAPRequest Sgn CreateDate IsStruct Sin -syn keyword cfFunctionName contained CreateDateTime IsUserInRole SpanExcluding CreateObject IsValid SpanIncluding -syn keyword cfFunctionName contained CreateODBCDate IsWDDX Sqr CreateODBCDateTime IsXML StripCR CreateODBCTime -syn keyword cfFunctionName contained IsXmlAttribute StructAppend CreateTime IsXmlDoc StructClear CreateTimeSpan -syn keyword cfFunctionName contained IsXmlElem StructCopy CreateUUID IsXmlNode StructCount DateAdd IsXmlRoot -syn keyword cfFunctionName contained StructDelete DateCompare JavaCast StructFind DateConvert JSStringFormat -syn keyword cfFunctionName contained StructFindKey DateDiff LCase StructFindValue DateFormat Left StructGet -syn keyword cfFunctionName contained DatePart Len StructInsert Day ListAppend StructIsEmpty DayOfWeek -syn keyword cfFunctionName contained ListChangeDelims StructKeyArray DayOfWeekAsString ListContains StructKeyExists -syn keyword cfFunctionName contained DayOfYear ListContainsNoCase StructKeyList DaysInMonth ListDeleteAt StructNew -syn keyword cfFunctionName contained DaysInYear ListFind StructSort DE ListFindNoCase StructUpdate DecimalFormat -syn keyword cfFunctionName contained ListFirst Tan DecrementValue ListGetAt TimeFormat Decrypt ListInsertAt -syn keyword cfFunctionName contained ToBase64 DeleteClientVariable ListLast ToBinary DirectoryExists ListLen -syn keyword cfFunctionName contained ToScript DollarFormat ListPrepend ToString Duplicate ListQualify Trim Encrypt -syn keyword cfFunctionName contained ListRest UCase Evaluate ListSetAt URLDecode Exp ListSort URLEncodedFormat -syn keyword cfFunctionName contained ExpandPath ListToArray URLSessionFormat FileExists ListValueCount Val Find -syn keyword cfFunctionName contained ListValueCountNoCase ValueList FindNoCase LJustify Week FindOneOf Log Wrap -syn keyword cfFunctionName contained FirstDayOfMonth Log10 WriteOutput Fix LSCurrencyFormat XmlChildPos FormatBaseN -syn keyword cfFunctionName contained LSDateFormat XmlElemNew GetTempDirectory LSEuroCurrencyFormat XmlFormat -syn keyword cfFunctionName contained GetAuthUser LSIsCurrency XmlGetNodeType GetBaseTagData LSIsDate XmlNew -syn keyword cfFunctionName contained GetBaseTagList LSIsNumeric XmlParse GetBaseTemplatePath LSNumberFormat -syn keyword cfFunctionName contained XmlSearch GetClientVariablesList LSParseCurrency XmlTransform -syn keyword cfFunctionName contained GetCurrentTemplatePath LSParseDateTime XmlValidate GetDirectoryFromPath -syn keyword cfFunctionName contained LSParseEuroCurrency Year GetEncoding LSParseNumber YesNoFormat GetException -syn keyword cfFunctionName contained LSTimeFormat GetFileFromPath LTrim - -syn cluster htmlTagNameCluster add=cfTagName -syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope -syn cluster htmlPreproc add=cfHashRegion - -syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool - -" Evaluation; skip strings ( this helps with cases like nested IIf() ) -syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError - -" , , , are analogous to hashmarks (implicit evaluation) and has 'var' -syn region cfSetRegion start="' - -" CF comments: similar to SGML comments -syn region cfComment start='' keepend contains=cfCommentTodo -syn keyword cfCommentTodo contained TODO FIXME XXX TBD WTF - -" CFscript -syn match cfScriptLineComment contained "\/\/.*$" contains=cfCommentTodo -syn region cfScriptComment contained start="/\*" end="\*/" contains=cfCommentTodo -" in CF, quotes are escaped by doubling -syn region cfScriptStringD contained start=+"+ skip=+\\\\\|""+ end=+"+ extend contains=@htmlPreproc,cfHashRegion -syn region cfScriptStringS contained start=+'+ skip=+\\\\\|''+ end=+'+ extend contains=@htmlPreproc,cfHashRegion -syn match cfScriptNumber contained "-\=\<\d\+L\=\>" -syn keyword cfScriptConditional contained if else -syn keyword cfScriptRepeat contained while for in -syn keyword cfScriptBranch contained break switch case try catch continue -syn keyword cfScriptFunction contained function -syn keyword cfScriptType contained var -syn match cfScriptBraces contained "[{}]" -syn keyword cfScriptStatement contained return - -syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,cfScriptType,@cfExpressionCluster,cfScriptStatement - -" Errors caused by wrong parenthesis; skip strings -syn region cfScriptParen contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster -syn match cfScrParenError contained +)+ - -syn region cfscriptBlock matchgroup=NONE start="" end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError -syn region cfscriptTag contained start='= 508 || !exists("did_cf_syn_inits") - if version < 508 - let did_cf_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink cfTagName Statement - HiLink cfArg Type - HiLink cfFunctionName Function - HiLink cfHashRegion PreProc - HiLink cfComment Comment - HiLink cfCommentTodo Todo - HiLink cfOperator Operator - HiLink cfOperatorMatch Operator - HiLink cfScope Title - HiLink cfBool Constant - - HiLink cfscriptBlock Special - HiLink cfscriptTag htmlTag - HiLink cfSetRegion PreProc - HiLink cfSetLHSRegion htmlTag - HiLink cfSetTagEnd htmlTag - - HiLink cfScriptLineComment Comment - HiLink cfScriptComment Comment - HiLink cfScriptStringS String - HiLink cfScriptStringD String - HiLink cfScriptNumber cfScriptValue - HiLink cfScriptConditional Conditional - HiLink cfScriptRepeat Repeat - HiLink cfScriptBranch Conditional - HiLink cfScriptType Type - HiLink cfScriptStatement Statement - HiLink cfScriptBraces Function - HiLink cfScriptFunction Function - HiLink cfScriptError Error - HiLink cfScrParenError cfScriptError - - delcommand HiLink -endif - -let b:current_syntax = "cf" - -" vim: ts=8 sw=2 +" Vim syntax file +" Language: ColdFusion +" Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com) +" Last Change: 2007 Nov 19 +" Filenames: *.cfc *.cfm +" Version: Macromedia ColdFusion MX 7 +" Usage: Note that ColdFusion has its own comment syntax +" i.e. + +" For version 5.x, clear all syntax items. +" For version 6.x+, quit if a syntax file is already loaded. +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Use all the stuff from the HTML syntax file. +" TODO remove this; CFML is not a superset of HTML +if version < 600 + source :p:h/html.vim +else + runtime! syntax/html.vim +endif + +syn sync fromstart +syn sync maxlines=200 +syn case ignore + +" Scopes and keywords. +syn keyword cfScope contained cgi cffile cookie request caller this thistag +syn keyword cfScope contained cfcatch variables application server session client form url attributes +syn keyword cfScope contained arguments +syn keyword cfBool contained yes no true false + +" Operator strings. +syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte equal eq neq not is mod contains +syn match cfOperatorMatch contained "\" +syn match cfOperatorMatch contained "\<\(greater\|less\)\_s\+than\(\_s\+or\_s\+equal\_s\+to\)\?\>" +syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!" +syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch + +" Tag names. +syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate +syn keyword cfTagName contained cfbreak cfcache cfcalendar cfcase cfcatch +syn keyword cfTagName contained cfchart cfchartdata cfchartseries cfcol cfcollection +syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory +syn keyword cfTagName contained cfdocument cfdocumentitem cfdocumentsection cfdump cfelse +syn keyword cfTagName contained cfelseif cferror cfexecute cfexit cffile cfflush cfform +syn keyword cfTagName contained cfformgroup cfformitem cfftp cffunction cfgraph cfgraphdata +syn keyword cfTagName contained cfgrid cfgridcolumn cfgridrow cfgridupdate cfheader +syn keyword cfTagName contained cfhtmlhead cfhttp cfhttpparam cfif cfimport +syn keyword cfTagName contained cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument +syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout +syn keyword cfTagName contained cfloop cfmail cfmailparam cfmailpart cfmodule +syn keyword cfTagName contained cfNTauthenticate cfobject cfobjectcache cfoutput cfparam +syn keyword cfTagName contained cfpop cfprocessingdirective cfprocparam cfprocresult +syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport +syn keyword cfTagName contained cfreportparam cfrethrow cfreturn cfsavecontent cfschedule +syn keyword cfTagName contained cfscript cfsearch cfselect cfservlet cfservletparam cfset +syn keyword cfTagName contained cfsetting cfsilent cfslider cfstoredproc cfswitch cftable +syn keyword cfTagName contained cftextarea cftextinput cfthrow cftimer cftrace cftransaction +syn keyword cfTagName contained cftree cftreeitem cftry cfupdate cfwddx cfxml + +" Tag parameters. +syn keyword cfArg contained abort accept access accessible action addnewline addtoken +syn keyword cfArg contained agentname align appendkey appletsource application +syn keyword cfArg contained applicationtimeout applicationtoken archive +syn keyword cfArg contained argumentcollection arguments asciiextensionlist +syn keyword cfArg contained attachmentpath attributecollection attributes autowidth +syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname +syn keyword cfArg contained blockfactor body bold border branch cachedafter cachedwithin +syn keyword cfArg contained casesensitive category categorytree cc cfsqltype charset +syn keyword cfArg contained chartheight chartwidth checked class clientmanagement +syn keyword cfArg contained clientstorage codebase colheaderalign colheaderbold +syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders +syn keyword cfArg contained colheadertextcolor collection colorlist colspacing columns +syn keyword cfArg contained completepath component condition connection contentid +syn keyword cfArg contained context contextbytes contexthighlightbegin +syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria +syn keyword cfArg contained custom1 custom2 custom3 custom4 data dataalign +syn keyword cfArg contained databackgroundcolor datacollection datasource daynames +syn keyword cfArg contained dbname dbserver dbtype dbvarname debug default delete +syn keyword cfArg contained deletebutton deletefile delimiter delimiters description +syn keyword cfArg contained destination detail directory disabled display displayname +syn keyword cfArg contained disposition dn domain editable enablecab enablecfoutputonly +syn keyword cfArg contained enabled encoded encryption enctype enddate endrange endtime +syn keyword cfArg contained entry errorcode exception existing expand expires expireurl +syn keyword cfArg contained expression extendedinfo extends extensions external +syn keyword cfArg contained failifexists failto file filefield filename filter +syn keyword cfArg contained firstdayofweek firstrowasheaders fixnewline font fontbold +syn keyword cfArg contained fontembed fontitalic fontsize foregroundcolor format +syn keyword cfArg contained formfields formula from generateuniquefilenames getasbinary +syn keyword cfArg contained grid griddataalign gridlines groovecolor group +syn keyword cfArg contained groupcasesensitive header headeralign headerbold headerfont +syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor +syn keyword cfArg contained height highlighthref hint href hrefkey hscroll hspace html +syn keyword cfArg contained htmltable id idletimeout img imgopen imgstyle index inline +syn keyword cfArg contained input insert insertbutton interval isolation italic item +syn keyword cfArg contained itemcolumn key keyonly label labelformat language list +syn keyword cfArg contained listgroups locale localfile log loginstorage lookandfeel +syn keyword cfArg contained mailerid mailto marginbottom marginleft marginright +syn keyword cfArg contained margintop markersize markerstyle mask max maxlength maxrows +syn keyword cfArg contained message messagenumber method mimeattach mimetype min mode +syn keyword cfArg contained modifytype monthnames multipart multiple name nameconflict +syn keyword cfArg contained namespace new newdirectory notsupported null numberformat +syn keyword cfArg contained object omit onblur onchange onclick onerror onfocus +syn keyword cfArg contained onkeydown onkeyup onload onmousedown onmouseup onreset +syn keyword cfArg contained onsubmit onvalidate operation orderby orientation output +syn keyword cfArg contained outputfile overwrite ownerpassword pageencoding pageheight +syn keyword cfArg contained pagetype pagewidth paintstyle param_1 param_2 param_3 +syn keyword cfArg contained param_4 param_5 param_6 param_7 param_8 param_9 parent +syn keyword cfArg contained parrent passive passthrough password path pattern +syn keyword cfArg contained permissions picturebar pieslicestyle port porttypename +syn keyword cfArg contained prefix preloader preservedata previouscriteria procedure +syn keyword cfArg contained protocol provider providerdsn proxybypass proxypassword +syn keyword cfArg contained proxyport proxyserver proxyuser publish query queryasroot +syn keyword cfArg contained queryposition range rebind recurse redirect referral +syn keyword cfArg contained refreshlabel remotefile replyto report requesttimeout +syn keyword cfArg contained required reset resoleurl resolveurl result resultset +syn keyword cfArg contained retrycount returnasbinary returncode returntype +syn keyword cfArg contained returnvariable roles rotated rowheaderalign rowheaderbold +syn keyword cfArg contained rowheaderfont rowheaderfontsize rowheaderitalic rowheaders +syn keyword cfArg contained rowheadertextcolor rowheaderwidth rowheight scale scalefrom +syn keyword cfArg contained scaleto scope scriptprotect scriptsrc secure securitycontext +syn keyword cfArg contained select selectcolor selected selecteddate selectedindex +syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement +syn keyword cfArg contained server serviceport serviceportname sessionmanagement +syn keyword cfArg contained sessiontimeout setclientcookies setcookie setdomaincookies +syn keyword cfArg contained show3d showborder showdebugoutput showerror showlegend +syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort +syn keyword cfArg contained sortascendingbutton sortcontrol sortdescendingbutton +syn keyword cfArg contained sortxaxis source spoolenable sql src srcfile start startdate +syn keyword cfArg contained startrange startrow starttime status statuscode statustext +syn keyword cfArg contained step stoponerror style subject suggestions +syn keyword cfArg contained suppresswhitespace tablename tableowner tablequalifier +syn keyword cfArg contained taglib target task template text textcolor textqualifier +syn keyword cfArg contained throwonerror throwonerror throwonfailure throwontimeout +syn keyword cfArg contained timeout timespan tipbgcolor tipstyle title to tooltip +syn keyword cfArg contained toplevelvariable transfermode type uid unit url urlpath +syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate +syn keyword cfArg contained validateat value valuecolumn values valuesdelimiter +syn keyword cfArg contained valuesdisplay var variable vertical visible vscroll vspace +syn keyword cfArg contained webservice width wmode wraptext wsdlfile xaxistitle +syn keyword cfArg contained xaxistype xoffset yaxistitle yaxistype yoffset + +" ColdFusion Functions. +syn keyword cfFunctionName contained ACos ASin Abs AddSOAPRequestHeader AddSOAPResponseHeader +syn keyword cfFunctionName contained ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ArrayInsertAt +syn keyword cfFunctionName contained ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArrayNew +syn keyword cfFunctionName contained ArrayPrepend ArrayResize ArraySet ArraySort ArraySum +syn keyword cfFunctionName contained ArraySwap ArrayToList Asc Atn AuthenticatedContext +syn keyword cfFunctionName contained AuthenticatedUser BinaryDecode BinaryEncode BitAnd +syn keyword cfFunctionName contained BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN +syn keyword cfFunctionName contained BitSHRN BitXor CJustify Ceiling CharsetDecode CharsetEncode +syn keyword cfFunctionName contained Chr Compare CompareNoCase Cos CreateDate CreateDateTime +syn keyword cfFunctionName contained CreateODBCDate CreateODBCDateTime CreateODBCTime +syn keyword cfFunctionName contained CreateObject CreateTime CreateTimeSpan CreateUUID DE DateAdd +syn keyword cfFunctionName contained DateCompare DateConvert DateDiff DateFormat DatePart Day +syn keyword cfFunctionName contained DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear +syn keyword cfFunctionName contained DecimalFormat DecrementValue Decrypt DecryptBinary +syn keyword cfFunctionName contained DeleteClientVariable DirectoryExists DollarFormat Duplicate +syn keyword cfFunctionName contained Encrypt EncryptBinary Evaluate Exp ExpandPath FileExists +syn keyword cfFunctionName contained Find FindNoCase FindOneOf FirstDayOfMonth Fix FormatBaseN +syn keyword cfFunctionName contained GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList +syn keyword cfFunctionName contained GetBaseTemplatePath GetClientVariablesList GetContextRoot +syn keyword cfFunctionName contained GetCurrentTemplatePath GetDirectoryFromPath GetEncoding +syn keyword cfFunctionName contained GetException GetFileFromPath GetFunctionList +syn keyword cfFunctionName contained GetGatewayHelper GetHttpRequestData GetHttpTimeString +syn keyword cfFunctionName contained GetLocalHostIP +syn keyword cfFunctionName contained GetLocale GetLocaleDisplayName GetMetaData GetMetricData +syn keyword cfFunctionName contained GetPageContext GetProfileSections GetProfileString +syn keyword cfFunctionName contained GetSOAPRequest GetSOAPRequestHeader GetSOAPResponse +syn keyword cfFunctionName contained GetSOAPResponseHeader GetTempDirectory GetTempFile +syn keyword cfFunctionName contained GetTickCount GetTimeZoneInfo GetToken +syn keyword cfFunctionName contained HTMLCodeFormat HTMLEditFormat Hash Hour IIf IncrementValue +syn keyword cfFunctionName contained InputBaseN Insert Int IsArray IsAuthenticated IsAuthorized +syn keyword cfFunctionName contained IsBinary IsBoolean IsCustomFunction IsDate IsDebugMode +syn keyword cfFunctionName contained IsDefined +syn keyword cfFunctionName contained IsLeapYear IsLocalHost IsNumeric +syn keyword cfFunctionName contained IsNumericDate IsObject IsProtected IsQuery IsSOAPRequest +syn keyword cfFunctionName contained IsSimpleValue IsStruct IsUserInRole IsValid IsWDDX IsXML +syn keyword cfFunctionName contained IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot +syn keyword cfFunctionName contained JSStringFormat JavaCast LCase LJustify LSCurrencyFormat +syn keyword cfFunctionName contained LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate +syn keyword cfFunctionName contained LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime +syn keyword cfFunctionName contained LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Left +syn keyword cfFunctionName contained Len ListAppend ListChangeDelims ListContains +syn keyword cfFunctionName contained ListContainsNoCase ListDeleteAt ListFind ListFindNoCase +syn keyword cfFunctionName contained ListFirst ListGetAt ListInsertAt ListLast ListLen +syn keyword cfFunctionName contained ListPrepend ListQualify ListRest ListSetAt ListSort +syn keyword cfFunctionName contained ListToArray ListValueCount ListValueCountNoCase Log Log10 +syn keyword cfFunctionName contained Max Mid Min Minute Month MonthAsString Now NumberFormat +syn keyword cfFunctionName contained ParagraphFormat ParseDateTime Pi +syn keyword cfFunctionName contained PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow +syn keyword cfFunctionName contained QueryNew QuerySetCell QuotedValueList REFind REFindNoCase +syn keyword cfFunctionName contained REReplace REReplaceNoCase RJustify RTrim Rand RandRange +syn keyword cfFunctionName contained Randomize ReleaseComObject RemoveChars RepeatString Replace +syn keyword cfFunctionName contained ReplaceList ReplaceNoCase Reverse Right Round Second +syn keyword cfFunctionName contained SendGatewayMessage SetEncoding SetLocale SetProfileString +syn keyword cfFunctionName contained SetVariable Sgn Sin SpanExcluding SpanIncluding Sqr StripCR +syn keyword cfFunctionName contained StructAppend StructClear StructCopy StructCount StructDelete +syn keyword cfFunctionName contained StructFind StructFindKey StructFindValue StructGet +syn keyword cfFunctionName contained StructInsert StructIsEmpty StructKeyArray StructKeyExists +syn keyword cfFunctionName contained StructKeyList StructNew StructSort StructUpdate Tan +syn keyword cfFunctionName contained TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase +syn keyword cfFunctionName contained URLDecode URLEncodedFormat URLSessionFormat Val ValueList +syn keyword cfFunctionName contained Week Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat +syn keyword cfFunctionName contained XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform +syn keyword cfFunctionName contained XmlValidate Year YesNoFormat + +" Deprecated tags and functions. +syn keyword cfDeprecated contained cfauthenticate cfimpersonate cfgraph cfgraphdata +syn keyword cfDeprecated contained cfservlet cfservletparam cftextinput +syn keyword cfDeprecated contained GetK2ServerDocCount GetK2ServerDocCountLimit GetTemplatePath +syn keyword cfDeprecated contained IsK2ServerABroker IsK2ServerDocCountExceeded IsK2ServerOnline +syn keyword cfDeprecated contained ParameterExists + +syn cluster htmlTagNameCluster add=cfTagName +syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope +syn cluster htmlPreproc add=cfHashRegion + +syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool + +" Evaluation; skip strings ( this helps with cases like nested IIf() ) +syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError + +" , , , are analogous to hashmarks (implicit +" evaluation) and have 'var' +syn region cfSetRegion start="' + +" CF comments: similar to SGML comments +syn region cfComment start='' keepend contains=cfCommentTodo +syn keyword cfCommentTodo contained TODO FIXME XXX TBD WTF + +" CFscript +syn match cfScriptLineComment contained "\/\/.*$" contains=cfCommentTodo +syn region cfScriptComment contained start="/\*" end="\*/" contains=cfCommentTodo +" in CF, quotes are escaped by doubling +syn region cfScriptStringD contained start=+"+ skip=+\\\\\|""+ end=+"+ extend contains=@htmlPreproc,cfHashRegion +syn region cfScriptStringS contained start=+'+ skip=+\\\\\|''+ end=+'+ extend contains=@htmlPreproc,cfHashRegion +syn match cfScriptNumber contained "\<\d\+\>" +syn keyword cfScriptConditional contained if else +syn keyword cfScriptRepeat contained while for in +syn keyword cfScriptBranch contained break switch case default try catch continue +syn keyword cfScriptFunction contained function +syn keyword cfScriptType contained var +syn match cfScriptBraces contained "[{}]" +syn keyword cfScriptStatement contained return + +syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,cfScriptType,@cfExpressionCluster,cfScriptStatement + +" Errors caused by wrong parenthesis; skip strings +syn region cfScriptParen contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster +syn match cfScrParenError contained +)+ + +syn region cfscriptBlock matchgroup=NONE start="" end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError +syn region cfscriptTag contained start=':p:h/sql.vim +unlet b:current_syntax +syn region cfqueryTag contained start=++ keepend contains=cfTagName,htmlTag +syn region cfSqlregion start=+]*>+ keepend end=+<\/cfquery>+me=s-1 matchgroup=NONE contains=@cfSql,cfComment,@htmlTagNameCluster,cfqueryTag + +" Define the default highlighting. +if version >= 508 || !exists("did_cf_syn_inits") + if version < 508 + let did_cf_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink cfTagName Statement + HiLink cfArg Type + HiLink cfFunctionName Function + HiLink cfHashRegion PreProc + HiLink cfComment Comment + HiLink cfCommentTodo Todo + HiLink cfOperator Operator + HiLink cfOperatorMatch Operator + HiLink cfScope Title + HiLink cfBool Constant + + HiLink cfscriptBlock Special + HiLink cfscriptTag htmlTag + HiLink cfSetRegion PreProc + HiLink cfSetLHSRegion htmlTag + HiLink cfSetTagEnd htmlTag + + HiLink cfScriptLineComment Comment + HiLink cfScriptComment Comment + HiLink cfScriptStringS String + HiLink cfScriptStringD String + HiLink cfScriptNumber cfScriptValue + HiLink cfScriptConditional Conditional + HiLink cfScriptRepeat Repeat + HiLink cfScriptBranch Conditional + HiLink cfScriptType Type + HiLink cfScriptStatement Statement + HiLink cfScriptBraces Function + HiLink cfScriptFunction Function + HiLink cfScriptError Error + HiLink cfDeprecated Error + HiLink cfScrParenError cfScriptError + + HiLink cfqueryTag htmlTag + + delcommand HiLink +endif + +let b:current_syntax = "cf" + +" vim: ts=8 sw=2 diff --git a/runtime/syntax/cmake.vim b/runtime/syntax/cmake.vim index 2781bb5e..ab963294 100644 --- a/runtime/syntax/cmake.vim +++ b/runtime/syntax/cmake.vim @@ -1,10 +1,10 @@ " ============================================================================= " " Program: CMake - Cross-Platform Makefile Generator -" Module: $RCSfile: cmake.vim,v $ +" Module: $RCSfile: cmake-syntax.vim,v $ " Language: VIM -" Date: $Date: 2006/04/21 22:08:13 $ -" Version: $Revision: 1.2 $ +" Date: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.6 $ " " ============================================================================= @@ -12,8 +12,8 @@ " Language: CMake " Author: Andy Cedilnik " Maintainer: Andy Cedilnik -" Last Change: $Date: 2006/04/21 22:08:13 $ -" Version: $Revision: 1.2 $ +" Last Change: $Date: 2006/09/23 21:09:08 $ +" Version: $Revision: 1.6 $ " " Licence: The CMake license applies to this file. See " http://www.cmake.org/HTML/Copyright.html @@ -49,7 +49,7 @@ syn region cmakeArguments start=/\s*(/ end=/)/ syn keyword cmakeDeprecated ABSTRACT_FILES BUILD_NAME SOURCE_FILES SOURCE_FILES_REMOVE VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WRAP_EXCLUDE_FILES \ nextgroup=cmakeArgument syn keyword cmakeStatement - \ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDIF ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE ENDMACRO + \ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ELSEIF ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDIF ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE ENDMACRO \ nextgroup=cmakeArgumnts "syn match cmakeMacro /^\s*[A-Z_]\+/ nextgroup=cmakeArgumnts diff --git a/runtime/syntax/cmusrc.vim b/runtime/syntax/cmusrc.vim index 3e84751a..e36a69c6 100644 --- a/runtime/syntax/cmusrc.vim +++ b/runtime/syntax/cmusrc.vim @@ -1,6 +1,6 @@ " Vim syntax file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-07-22 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -9,7 +9,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,_,- +setlocal iskeyword+=- syn keyword cmusrcTodo contained TODO FIXME XXX NOTE diff --git a/runtime/syntax/cobol.vim b/runtime/syntax/cobol.vim index db560039..5315e752 100644 --- a/runtime/syntax/cobol.vim +++ b/runtime/syntax/cobol.vim @@ -4,7 +4,7 @@ " (formerly Davyd Ondrejko ) " (formerly Sitaram Chamarty and " James Mitchell ) -" $Id: cobol.vim,v 1.5 2007/05/12 15:30:10 vimboss Exp $ +" $Id: cobol.vim,v 1.2 2007/05/05 18:23:43 vimboss Exp $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded diff --git a/runtime/syntax/coco.vim b/runtime/syntax/coco.vim new file mode 100644 index 00000000..4094a553 --- /dev/null +++ b/runtime/syntax/coco.vim @@ -0,0 +1,33 @@ +" Vim syntax file +" Language: Coco/R +" Maintainer: Ashish Shukla +" Last Change: 2007 Aug 10 +" Remark: Coco/R syntax partially implemented. +" License: Vim license + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn keyword cocoKeywords ANY CHARACTERS COMMENTS COMPILER CONTEXT END FROM IF IGNORE IGNORECASE NESTED PRAGMAS PRODUCTIONS SYNC TO TOKENS WEAK +syn match cocoUnilineComment #//.*$# +syn match cocoIdentifier /[[:alpha:]][[:alnum:]]*/ +syn region cocoMultilineComment start=#/[*]# end=#[*]/# +syn region cocoString start=/"/ skip=/\\"\|\\\\/ end=/"/ +syn region cocoCharacter start=/'/ skip=/\\'\|\\\\/ end=/'/ +syn match cocoOperator /+\||\|\.\.\|-\|(\|)\|{\|}\|\[\|\]\|=\|<\|>/ +syn region cocoProductionCode start=/([.]/ end=/[.])/ +syn match cocoPragma /[$][[:alnum:]]*/ + +hi def link cocoKeywords Keyword +hi def link cocoUnilineComment Comment +hi def link cocoMultilineComment Comment +hi def link cocoIdentifier Identifier +hi def link cocoString String +hi def link cocoCharacter Character +hi def link cocoOperator Operator +hi def link cocoProductionCode Statement +hi def link cocoPragma Special + diff --git a/runtime/syntax/conaryrecipe.vim b/runtime/syntax/conaryrecipe.vim index b26cf6e3..f94fdd40 100644 --- a/runtime/syntax/conaryrecipe.vim +++ b/runtime/syntax/conaryrecipe.vim @@ -1,21 +1,39 @@ " Vim syntax file " Language: Conary Recipe " Maintainer: rPath Inc -" Updated: 2007-05-07 +" Updated: 2007-12-08 if exists("b:current_syntax") finish endif runtime! syntax/python.vim + syn keyword conarySFunction mainDir addAction addSource addArchive addPatch syn keyword conarySFunction addRedirect addSvnSnapshot addMercurialSnapshot -syn keyword conarySFunction addCvsSnapshot +syn keyword conarySFunction addCvsSnapshot addGitSnapshot addBzrSnapshot -syn keyword conaryGFunction add addAll addNewGroup addReference createGroup -syn keyword conaryGFunction addNewGroup startGroup remove removeComponents -syn keyword conaryGFunction replace setByDefault setDefaultGroup -syn keyword conaryGFunction setLabelPath addCopy setSearchPath +syn keyword conaryGFunction add addAll addNewGroup addReference createGroup +syn keyword conaryGFunction addNewGroup startGroup remove removeComponents +syn keyword conaryGFunction replace setByDefault setDefaultGroup +syn keyword conaryGFunction setLabelPath addCopy setSearchPath AddAllFlags +syn keyword conaryGFunction GroupRecipe GroupReference TroveCacheWrapper +syn keyword conaryGFunction TroveCache buildGroups findTrovesForGroups +syn keyword conaryGFunction followRedirect processAddAllDirectives +syn keyword conaryGFunction processOneAddAllDirective removeDifferences +syn keyword conaryGFunction addTrovesToGroup addCopiedComponents +syn keyword conaryGFunction findAllWeakTrovesToRemove checkForRedirects +syn keyword conaryGFunction addPackagesForComponents getResolveSource +syn keyword conaryGFunction resolveGroupDependencies checkGroupDependencies +syn keyword conaryGFunction calcSizeAndCheckHashes findSourcesForGroup +syn keyword conaryGFunction addPostInstallScript addPostRollbackScript +syn keyword conaryGFunction addPostUpdateScript addPreUpdateScript +syn keyword conaryGFunction addTrove moveComponents copyComponents +syn keyword conaryGFunction removeItemsAlsoInNewGroup removeItemsAlsoInGroup +syn keyword conaryGFunction addResolveSource iterReplaceSpecs +syn keyword conaryGFunction setCompatibilityClass getLabelPath +syn keyword conaryGFunction getResolveTroveSpecs getSearchFlavor +syn keyword conaryGFunction getChildGroups getGroupMap syn keyword conaryBFunction Run Automake Configure ManualConfigure syn keyword conaryBFunction Make MakeParallelSubdir MakeInstall @@ -25,7 +43,8 @@ syn keyword conaryBFunction Install Copy Move Symlink Link Remove Doc syn keyword conaryBFunction Create MakeDirs disableParallelMake syn keyword conaryBFunction ConsoleHelper Replace SGMLCatalogEntry syn keyword conaryBFunction XInetdService XMLCatalogEntry TestSuite -syn keyword conaryBFunction PythonSetup +syn keyword conaryBFunction PythonSetup CMake Ant JavaCompile ClassPath +syn keyword conaryBFunction JavaDoc IncludeLicense MakeFIFO syn keyword conaryPFunction NonBinariesInBindirs FilesInMandir syn keyword conaryPFunction ImproperlyShared CheckSonames CheckDestDir @@ -45,10 +64,28 @@ syn keyword conaryPFunction Provides RequireChkconfig Requires TagHandler syn keyword conaryPFunction TagDescription Transient User UtilizeGroup syn keyword conaryPFunction WorldWritableExecutables UtilizeUser syn keyword conaryPFunction WarnWritable Strip CheckDesktopFiles +syn keyword conaryPFunction FixDirModes LinkType reportMissingBuildRequires +syn keyword conaryPFunction reportErrors FixupManpagePaths FixObsoletePaths +syn keyword conaryPFunction NonLSBPaths PythonEggs +syn keyword conaryPFunction EnforcePythonBuildRequirements +syn keyword conaryPFunction EnforceJavaBuildRequirements +syn keyword conaryPFunction EnforceCILBuildRequirements +syn keyword conaryPFunction EnforcePerlBuildRequirements +syn keyword conaryPFunction EnforceFlagBuildRequirements +syn keyword conaryPFunction FixupMultilibPaths ExecutableLibraries +syn keyword conaryPFunction NormalizeLibrarySymlinks NormalizeCompression +syn keyword conaryPFunction NormalizeManPages NormalizeInfoPages +syn keyword conaryPFunction NormalizeInitscriptLocation +syn keyword conaryPFunction NormalizeInitscriptContents +syn keyword conaryPFunction NormalizeAppDefaults NormalizeInterpreterPaths +syn keyword conaryPFunction NormalizePamConfig ReadableDocs +syn keyword conaryPFunction WorldWriteableExecutables NormalizePkgConfig +syn keyword conaryPFunction EtcConfig InstallBucket SupplementalGroup +syn keyword conaryPFunction FixBuilddirSymlink RelativeSymlinks " Most destdirPolicy aren't called from recipes, except for these -syn keyword conaryPFunction AutoDoc RemoveNonPackageFiles TestSuiteFiles -syn keyword conaryPFunction TestSuiteLinks +syn keyword conaryPFunction AutoDoc RemoveNonPackageFiles TestSuiteFiles +syn keyword conaryPFunction TestSuiteLinks syn match conaryMacro "%(\w\+)[sd]" contained syn match conaryBadMacro "%(\w*)[^sd]" contained " no final marker @@ -56,8 +93,8 @@ syn keyword conaryArches contained x86 x86_64 alpha ia64 ppc ppc64 s390 syn keyword conaryArches contained sparc sparc64 syn keyword conarySubArches contained sse2 3dnow 3dnowext cmov i486 i586 syn keyword conarySubArches contained i686 mmx mmxext nx sse sse2 -syn keyword conaryBad RPM_BUILD_ROOT EtcConfig InstallBucket subDir subdir -syn keyword conaryBad RPM_OPT_FLAGS +syn keyword conaryBad RPM_BUILD_ROOT EtcConfig InstallBucket subDir +syn keyword conaryBad RPM_OPT_FLAGS subdir syn cluster conaryArchFlags contains=conaryArches,conarySubArches syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches syn match conaryArch "Arch\.[a-z0-9A-Z]\+" contains=conaryArches,conarySubArches @@ -97,3 +134,4 @@ hi def link conaryKeywords Special hi def link conaryUseFlag Typedef let b:current_syntax = "conaryrecipe" + diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim index 7f9ac258..a73836a9 100644 --- a/runtime/syntax/css.vim +++ b/runtime/syntax/css.vim @@ -2,7 +2,7 @@ " Language: Cascading Style Sheets " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/css.vim -" Last Change: 2006 Jun 19 +" Last Change: 2007 Nov 06 " CSS2 by Nikolai Weibull " Full CSS2, HTML4 support by Yeti @@ -194,7 +194,7 @@ syn match cssSpecialCharQQ +\\"+ contained syn match cssSpecialCharQ +\\'+ contained syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ -syn match cssClassName "\.[A-Za-z][A-Za-z0-9-]\+" +syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+" if main_syntax == "css" syn sync minlines=10 diff --git a/runtime/syntax/cuda.vim b/runtime/syntax/cuda.vim new file mode 100644 index 00000000..77930e3f --- /dev/null +++ b/runtime/syntax/cuda.vim @@ -0,0 +1,72 @@ +" Vim syntax file +" Language: CUDA (NVIDIA Compute Unified Device Architecture) +" Maintainer: Timothy B. Terriberry +" Last Change: 2007 Oct 13 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Read the C syntax to start with +if version < 600 + source :p:h/c.vim +else + runtime! syntax/c.vim +endif + +" CUDA extentions +syn keyword cudaStorageClass __device__ __global__ __host__ +syn keyword cudaStorageClass __constant__ __shared__ +syn keyword cudaStorageClass __inline__ __align__ __thread__ +"syn keyword cudaStorageClass __import__ __export__ __location__ +syn keyword cudaStructure template +syn keyword cudaType char1 char2 char3 char4 +syn keyword cudaType uchar1 uchar2 uchar3 uchar4 +syn keyword cudaType short1 short2 short3 short4 +syn keyword cudaType ushort1 ushort2 ushort3 ushort4 +syn keyword cudaType int1 int2 int3 int4 +syn keyword cudaType uint1 uint2 uint3 uint4 +syn keyword cudaType long1 long2 long3 long4 +syn keyword cudaType ulong1 ulong2 ulong3 ulong4 +syn keyword cudaType float1 float2 float3 float4 +syn keyword cudaType ufloat1 ufloat2 ufloat3 ufloat4 +syn keyword cudaType dim3 texture textureReference +syn keyword cudaType cudaError_t cudaDeviceProp cudaMemcpyKind +syn keyword cudaType cudaArray cudaChannelFormatKind +syn keyword cudaType cudaChannelFormatDesc cudaTextureAddressMode +syn keyword cudaType cudaTextureFilterMode cudaTextureReadMode +syn keyword cudaVariable gridDim blockIdx blockDim threadIdx +syn keyword cudaConstant __DEVICE_EMULATION__ +syn keyword cudaConstant cudaSuccess +" Many more errors are defined, but only these are listed in the maunal +syn keyword cudaConstant cudaErrorMemoryAllocation +syn keyword cudaConstant cudaErrorInvalidDevicePointer +syn keyword cudaConstant cudaErrorInvalidSymbol +syn keyword cudaConstant cudaErrorMixedDeviceExecution +syn keyword cudaConstant cudaMemcpyHostToHost +syn keyword cudaConstant cudaMemcpyHostToDevice +syn keyword cudaConstant cudaMemcpyDeviceToHost +syn keyword cudaConstant cudaMemcpyDeviceToDevice +syn keyword cudaConstant cudaReadModeElementType +syn keyword cudaConstant cudaReadModeNormalizedFloat +syn keyword cudaConstant cudaFilterModePoint +syn keyword cudaConstant cudaFilterModeLinear +syn keyword cudaConstant cudaAddressModeClamp +syn keyword cudaConstant cudaAddressModeWrap +syn keyword cudaConstant cudaChannelFormatKindSigned +syn keyword cudaConstant cudaChannelFormatKindUnsigned +syn keyword cudaConstant cudaChannelFormatKindFloat + +hi def link cudaStorageClass StorageClass +hi def link cudaStructure Structure +hi def link cudaType Type +hi def link cudaVariable Identifier +hi def link cudaConstant Constant + +let b:current_syntax = "cuda" + +" vim: ts=8 diff --git a/runtime/syntax/def.vim b/runtime/syntax/def.vim index 8b54012f..5efb41bc 100644 --- a/runtime/syntax/def.vim +++ b/runtime/syntax/def.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: Microsoft Module-Definition (.def) File -" Maintainer: Rob Brady -" Last Change: $Date: 2004/06/13 18:26:37 $ -" URL: http://www.datatone.com/~robb/vim/syntax/def.vim -" $Revision: 1.1 $ +" Orig Author: Rob Brady +" Maintainer: Wu Yongwei +" Last Change: $Date: 2007/10/02 13:51:24 $ +" $Revision: 1.2 $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -23,7 +23,7 @@ syn keyword defKeyword HEAPSIZE DATA syn keyword defStorage LOADONCALL MOVEABLE DISCARDABLE SINGLE syn keyword defStorage FIXED PRELOAD -syn match defOrdinal "@\d\+" +syn match defOrdinal "\s\+@\d\+" syn region defString start=+'+ end=+'+ diff --git a/runtime/syntax/denyhosts.vim b/runtime/syntax/denyhosts.vim new file mode 100644 index 00000000..0ec09ba1 --- /dev/null +++ b/runtime/syntax/denyhosts.vim @@ -0,0 +1,289 @@ +" Vim syntax file +" Language: denyhosts configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-06-25 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn keyword denyhostsTodo + \ contained + \ TODO + \ FIXME + \ XXX + \ NOTE + +syn case ignore + +syn match denyhostsComment + \ contained + \ display + \ '#.*' + \ contains=denyhostsTodo, + \ @Spell + +syn match denyhostsBegin + \ display + \ '^' + \ nextgroup=@denyhostsSetting, + \ denyhostsComment + \ skipwhite + +syn cluster denyhostsSetting + \ contains=denyhostsStringSetting, + \ denyhostsBooleanSetting, + \ denyhostsPathSetting, + \ denyhostsNumericSetting, + \ denyhostsTimespecSetting, + \ denyhostsFormatSetting, + \ denyhostsRegexSetting + +syn keyword denyhostsStringSetting + \ contained + \ ADMIN_EMAIL + \ SMTP_HOST + \ SMTP_USERNAME + \ SMTP_PASSWORD + \ SMTP_FROM + \ SMTP_SUBJECT + \ BLOCK_SERVICE + \ nextgroup=denyhostsStringDelimiter + \ skipwhite + +syn keyword denyhostsBooleanSetting + \ contained + \ SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS + \ HOSTNAME_LOOKUP + \ SYSLOG_REPORT + \ RESET_ON_SUCCESS + \ SYNC_UPLOAD + \ SYNC_DOWNLOAD + \ ALLOWED_HOSTS_HOSTNAME_LOOKUP + \ nextgroup=denyhostsBooleanDelimiter + \ skipwhite + +syn keyword denyhostsPathSetting + \ contained + \ DAEMON_LOG + \ PLUGIN_DENY + \ PLUGIN_PURGE + \ SECURE_LOG + \ LOCK_FILE + \ HOSTS_DENY + \ WORK_DIR + \ nextgroup=denyhostsPathDelimiter + \ skipwhite + +syn keyword denyhostsNumericSetting + \ contained + \ SYNC_DOWNLOAD_THRESHOLD + \ SMTP_PORT + \ PURGE_THRESHOLD + \ DENY_THRESHOLD_INVALID + \ DENY_THRESHOLD_VALID + \ DENY_THRESHOLD_ROOT + \ DENY_THRESHOLD_RESTRICTED + \ nextgroup=denyhostsNumericDelimiter + \ skipwhite + +syn keyword denyhostsTimespecSetting + \ contained + \ DAEMON_SLEEP + \ DAEMON_PURGE + \ AGE_RESET_INVALID + \ AGE_RESET_VALID + \ AGE_RESET_ROOT + \ AGE_RESET_RESTRICTED + \ SYNC_INTERVAL + \ SYNC_DOWNLOAD_RESILIENCY + \ PURGE_DENY + \ nextgroup=denyhostsTimespecDelimiter + \ skipwhite + +syn keyword denyhostsFormatSetting + \ contained + \ DAEMON_LOG_TIME_FORMAT + \ DAEMON_LOG_MESSAGE_FORMAT + \ SMTP_DATE_FORMAT + \ nextgroup=denyhostsFormatDelimiter + \ skipwhite + +syn keyword denyhostsRegexSetting + \ contained + \ SSHD_FORMAT_REGEX + \ FAILED_ENTRY_REGEX + \ FAILED_ENTRY_REGEX2 + \ FAILED_ENTRY_REGEX3 + \ FAILED_ENTRY_REGEX4 + \ FAILED_ENTRY_REGEX5 + \ FAILED_ENTRY_REGEX6 + \ FAILED_ENTRY_REGEX7 + \ USERDEF_FAILED_ENTRY_REGEX + \ SUCCESSFUL_ENTRY_REGEX + \ nextgroup=denyhostsRegexDelimiter + \ skipwhite + +syn keyword denyhostURLSetting + \ contained + \ SYNC_SERVER + \ nextgroup=denyhostsURLDelimiter + \ skipwhite + +syn match denyhostsStringDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsString + \ skipwhite + +syn match denyhostsBooleanDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=@denyhostsBoolean + \ skipwhite + +syn match denyhostsPathDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsPath + \ skipwhite + +syn match denyhostsNumericDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsNumber + \ skipwhite + +syn match denyhostsTimespecDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsTimespec + \ skipwhite + +syn match denyhostsFormatDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsFormat + \ skipwhite + +syn match denyhostsRegexDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsRegex + \ skipwhite + +syn match denyhostsURLDelimiter + \ contained + \ display + \ '[:=]' + \ nextgroup=denyhostsURL + \ skipwhite + +syn match denyhostsString + \ contained + \ display + \ '.\+' + +syn cluster denyhostsBoolean + \ contains=denyhostsBooleanTrue, + \ denyhostsBooleanFalse + +syn match denyhostsBooleanFalse + \ contained + \ display + \ '.\+' + +syn match denyhostsBooleanTrue + \ contained + \ display + \ '\s*\%(1\|t\%(rue\)\=\|y\%(es\)\=\)\>\s*$' + +syn match denyhostsPath + \ contained + \ display + \ '.\+' + +syn match denyhostsNumber + \ contained + \ display + \ '\d\+\>' + +syn match denyhostsTimespec + \ contained + \ display + \ '\d\+[mhdwy]\>' + +syn match denyhostsFormat + \ contained + \ display + \ '.\+' + \ contains=denyhostsFormattingExpandos + +syn match denyhostsFormattingExpandos + \ contained + \ display + \ '%.' + +syn match denyhostsRegex + \ contained + \ display + \ '.\+' + +" TODO: Perhaps come up with a better regex here? There should really be a +" library for these kinds of generic regexes, that is, URLs, mail addresses, … +syn match denyhostsURL + \ contained + \ display + \ '.\+' + +hi def link denyhostsTodo Todo +hi def link denyhostsComment Comment +hi def link denyhostsSetting Keyword +hi def link denyhostsStringSetting denyhostsSetting +hi def link denyhostsBooleanSetting denyhostsSetting +hi def link denyhostsPathSetting denyhostsSetting +hi def link denyhostsNumericSetting denyhostsSetting +hi def link denyhostsTimespecSetting denyhostsSetting +hi def link denyhostsFormatSetting denyhostsSetting +hi def link denyhostsRegexSetting denyhostsSetting +hi def link denyhostURLSetting denyhostsSetting +hi def link denyhostsDelimiter Normal +hi def link denyhostsStringDelimiter denyhostsDelimiter +hi def link denyhostsBooleanDelimiter denyhostsDelimiter +hi def link denyhostsPathDelimiter denyhostsDelimiter +hi def link denyhostsNumericDelimiter denyhostsDelimiter +hi def link denyhostsTimespecDelimiter denyhostsDelimiter +hi def link denyhostsFormatDelimiter denyhostsDelimiter +hi def link denyhostsRegexDelimiter denyhostsDelimiter +hi def link denyhostsURLDelimiter denyhostsDelimiter +hi def link denyhostsString String +if exists('g:syntax_booleans_simple') || exists('b:syntax_booleans_simple') + hi def link denyhostsBoolean Boolean + hi def link denyhostsBooleanFalse denyhostsBoolean + hi def link denyhostsBooleanTrue denyhostsBoolean +else + hi def denyhostsBooleanTrue term=bold ctermfg=Green guifg=Green + hi def denyhostsBooleanFalse ctermfg=Red guifg=Red +endif +hi def link denyhostsPath String +hi def link denyhostsNumber Number +hi def link denyhostsTimespec Number +hi def link denyhostsFormat String +hi def link denyhostsFormattingExpandos Special +hi def link denyhostsRegex String +hi def link denyhostsURL String + +let b:current_syntax = "denyhosts" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/syntax/dosbatch.vim b/runtime/syntax/dosbatch.vim index e27310cc..cbff81c9 100644 --- a/runtime/syntax/dosbatch.vim +++ b/runtime/syntax/dosbatch.vim @@ -2,7 +2,7 @@ " Language: MSDOS batch file (with NT command extensions) " Maintainer: Mike Williams " Filenames: *.bat -" Last Change: 16th March 2004 +" Last Change: 30th October 2007 " Web Page: http://www.eandem.co.uk/mrw/vim " " Options Flags: @@ -43,8 +43,8 @@ syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s" syn match dosbatchIfOperator "if\s\+\(\(not\)\=\s\+\)\=\(exist\|defined\|errorlevel\|cmdextversion\)\="lc=2 " String - using "'s is a convenience rather than a requirement outside of FOR -syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,@dosbatchNumber -syn match dosbatchString "\|]*"lc=4 contains=dosbatchVariable,dosbatchArgument,@dosbatchNumber +syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,@dosbatchNumber,@Spell +syn match dosbatchString "\|]*"lc=4 contains=dosbatchVariable,dosbatchArgument,@dosbatchNumber,@Spell syn match dosbatchEchoOperator "\"lc=4 syn match dosbatchLabel ":\h\w*\>" " Comments - usual rem but also two colons as first non-space is an idiom -syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument -syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument -syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument +syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell +syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell +syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell " Comments in ()'s - still to handle spaces before rem -syn match dosbatchComment "(rem[^)]*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument +syn match dosbatchComment "(rem[^)]*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy @@ -127,12 +127,12 @@ if version >= 508 || !exists("did_dosbatch_syntax_inits") HiLink dosbatchConditional Conditional HiLink dosbatchRepeat Repeat - HiLink dosbatchOperator Operator - HiLink dosbatchEchoOperator dosbatchOperator - HiLink dosbatchIfOperator dosbatchOperator + HiLink dosbatchOperator Operator + HiLink dosbatchEchoOperator dosbatchOperator + HiLink dosbatchIfOperator dosbatchOperator HiLink dosbatchArgument Identifier - HiLink dosbatchIdentifier Identifier + HiLink dosbatchIdentifier Identifier HiLink dosbatchVariable dosbatchIdentifier HiLink dosbatchSpecialChar SpecialChar diff --git a/runtime/syntax/elinks.vim b/runtime/syntax/elinks.vim index 5b3a3f1a..b4d9e02e 100644 --- a/runtime/syntax/elinks.vim +++ b/runtime/syntax/elinks.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: elinks(1) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,_,- +setlocal iskeyword+=- syn keyword elinksTodo contained TODO FIXME XXX NOTE diff --git a/runtime/syntax/erlang.vim b/runtime/syntax/erlang.vim dissimilarity index 85% index a8ffb393..e3d68363 100644 --- a/runtime/syntax/erlang.vim +++ b/runtime/syntax/erlang.vim @@ -1,224 +1,229 @@ -" Vim syntax file -" Language: erlang (ERicsson LANGuage) -" http://www.erlang.se -" http://www.erlang.org -" Maintainer: Kre¹imir Mar¾iæ (Kresimir Marzic) -" Last update: Fri, 15-Feb-2002 -" Filenames: .erl -" URL: http://www.srk.fer.hr/~kmarzic/vim/syntax/erlang.vim - - -" There are three sets of highlighting in here: -" One is "erlang_characters", second is "erlang_functions" and third -" is "erlang_keywords". -" If you want to disable keywords highlighting, put in your .vimrc: -" let erlang_keywords=1 -" If you want to disable erlang BIF highlighting, put in your .vimrc -" this: -" let erlang_functions=1 -" If you want to disable special characters highlighting, put in -" your .vimrc: -" let erlang_characters=1 - - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists ("b:current_syntax") - finish -endif - - -" Case sensitive -syn case match - - -if ! exists ("erlang_characters") - " Basic elements - syn match erlangComment +%.*$+ - syn match erlangModifier "\~\a\|\\\a" contained - syn match erlangSpecialCharacter ":\|_\|@\|\\\|\"\|\." - syn match erlangSeparator "(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|->\|#" contained - syn region erlangString start=+"+ skip=+\\"+ end=+"+ contains=erlangModifier - syn region erlangAtom start=+'+ skip=+\\'+ end=+'+ - - " Operators - syn match erlangOperator "+\|-\|\*\|\/" - syn keyword erlangOperator div rem or xor bor bxor bsl bsr - syn keyword erlangOperator and band not bnot - syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>=" - syn match erlangOperator "++\|--\|=\|!\|<-" - - " Numbers - syn match erlangNumberInteger "[+-]\=\d\+" contains=erlangSeparator - syn match erlangNumberFloat1 "[+-]\=\d\+.\d\+" contains=erlangSeparator - syn match erlangNumberFloat2 "[+-]\=\d\+\(.\d\+\)\=[eE][+-]\=\d\+\(.\d\+\)\=" contains=erlangSeparator - syn match erlangNumberFloat3 "[+-]\=\d\+[#]\x\+" contains=erlangSeparator - syn match erlangNumberFloat4 "[+-]\=[eE][+-]\=\d\+" contains=erlangSeparator - syn match erlangNumberHex "$\x\+" contains=erlangSeparator - - " Ignore '_' and '-' in words - syn match erlangWord "\w\+[_-]\+\w\+" - - " Ignore numbers in words - syn match erlangWord "\w\+\d\+\(\(.\d\+\)\=\(\w\+\)\=\)\=" -endif - -if ! exists ("erlang_functions") - " Functions call - syn match erlangFCall "\w\+\(\s\+\)\=[:@]\(\s\+\)\=\w\+" contains=ALLBUT,erlangFunction,erlangBIF,erlangWord - - " build-in-functions (BIFs) - syn keyword erlangBIF abs alive apply atom_to_list - syn keyword erlangBIF binary_to_list binary_to_term - syn keyword erlangBIF concat_binary - syn keyword erlangBIF date disconnect_node - syn keyword erlangBIF element erase exit - syn keyword erlangBIF float float_to_list - syn keyword erlangBIF get get_keys group_leader - syn keyword erlangBIF halt hd - syn keyword erlangBIF integer_to_list is_alive - syn keyword erlangBIF length link list_to_atom list_to_binary - syn keyword erlangBIF list_to_float list_to_integer list_to_pid - syn keyword erlangBIF list_to_tuple load_module - syn keyword erlangBIF make_ref monitor_node - syn keyword erlangBIF node nodes now - syn keyword erlangBIF open_port - syn keyword erlangBIF pid_to_list process_flag - syn keyword erlangBIF process_info process put - syn keyword erlangBIF register registered round - syn keyword erlangBIF self setelement size spawn - syn keyword erlangBIF spawn_link split_binary statistics - syn keyword erlangBIF term_to_binary throw time tl trunc - syn keyword erlangBIF tuple_to_list - syn keyword erlangBIF unlink unregister - syn keyword erlangBIF whereis - - " Other BIFs - syn keyword erlangBIF atom binary constant function integer - syn keyword erlangBIF list number pid ports port_close port_info - syn keyword erlangBIF reference record - - " erlang:BIFs - syn keyword erlangBIF check_process_code delete_module - syn keyword erlangBIF get_cookie hash math module_loaded - syn keyword erlangBIF preloaded processes purge_module set_cookie - syn keyword erlangBIF set_node - - " functions of math library - syn keyword erlangFunction acos asin atan atan2 cos cosh exp - syn keyword erlangFunction log log10 pi pow power sin sinh sqrt - syn keyword erlangFunction tan tanh - - " Other functions - syn keyword erlangFunction call module_info parse_transform - syn keyword erlangFunction undefined_function - - " Modules - syn keyword erlangModule error_handler -endif - -if ! exists ("erlang_keywords") - " Constants and Directives - syn match erlangDirective "-compile\|-define\|-else\|-endif\|-export\|-file" - syn match erlangDirective "-ifdef\|-ifndef\|-import\|-include\|-include_lib" - syn match erlangDirective "-module\|-record\|-undef" - - syn match erlangConstant "-author\|-copyright\|-doc" - - " Keywords - syn keyword erlangKeyword after begin case catch - syn keyword erlangKeyword cond end fun if - syn keyword erlangKeyword let of query receive - syn keyword erlangKeyword when - - " Processes - syn keyword erlangProcess creation current_function dictionary - syn keyword erlangProcess group_leader heap_size high initial_call - syn keyword erlangProcess linked low memory_in_use message_queue - syn keyword erlangProcess net_kernel node normal priority - syn keyword erlangProcess reductions registered_name runnable - syn keyword erlangProcess running stack_trace status timer - syn keyword erlangProcess trap_exit waiting - - " Ports - syn keyword erlangPort command count_in count_out creation in - syn keyword erlangPort in_format linked node out owner packeting - - " Nodes - syn keyword erlangNode atom_tables communicating creation - syn keyword erlangNode current_gc current_reductions current_runtime - syn keyword erlangNode current_wall_clock distribution_port - syn keyword erlangNode entry_points error_handler friends - syn keyword erlangNode garbage_collection magic_cookie magic_cookies - syn keyword erlangNode module_table monitored_nodes name next_ref - syn keyword erlangNode ports preloaded processes reductions - syn keyword erlangNode ref_state registry runtime wall_clock - - " Reserved - syn keyword erlangReserved apply_lambda module_info module_lambdas - syn keyword erlangReserved record record_index record_info - - " Extras - syn keyword erlangExtra badarg nocookie false fun true - - " Signals - syn keyword erlangSignal badsig kill killed exit normal -endif - - - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists ("did_erlang_inits") - if version < 508 - let did_erlang_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - " erlang_characters - HiLink erlangComment Comment - HiLink erlangSpecialCharacter Special - HiLink erlangSeparator Normal - HiLink erlangModifier Special - HiLink erlangOperator Operator - HiLink erlangString String - HiLink erlangAtom Type - - HiLink erlangNumberInteger Number - HiLink erlangNumberFloat1 Float - HiLink erlangNumberFloat2 Float - HiLink erlangNumberFloat3 Float - HiLink erlangNumberFloat4 Float - HiLink erlangNumberHex Number - - HiLink erlangWord Normal - - " erlang_functions - HiLink erlangFCall Function - HiLink erlangBIF Function - HiLink erlangFunction Function - HiLink erlangModuleFunction Function - - " erlang_keywords - HiLink erlangDirective Type - HiLink erlangConstant Type - HiLink erlangKeyword Keyword - HiLink erlangProcess Special - HiLink erlangPort Special - HiLink erlangNode Special - HiLink erlangReserved Statement - HiLink erlangExtra Statement - HiLink erlangSignal Statement - - delcommand HiLink -endif - - -let b:current_syntax = "erlang" - -" eof +" Vim syntax file +" Language: erlang (ERicsson LANGuage) +" http://www.erlang.se +" http://www.erlang.org +" Maintainer: Csaba Hoch +" Former Maintainer: Kreąimir Marľić (Kresimir Marzic) +" Last update: 12-Mar-2008 +" Filenames: .erl + + +" There are three sets of highlighting in here: +" One is "erlang_characters", second is "erlang_functions" and third +" is "erlang_keywords". +" If you want to disable keywords highlighting, put in your .vimrc: +" let erlang_keywords=1 +" If you want to disable erlang BIF highlighting, put in your .vimrc +" this: +" let erlang_functions=1 +" If you want to disable special characters highlighting, put in +" your .vimrc: +" let erlang_characters=1 + + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists ("b:current_syntax") + finish +endif + + +" Case sensitive +syn case match + + +if ! exists ("erlang_characters") + + " Basic elements + syn match erlangComment "%.*$" contains=erlangAnnotation,erlangTodo + syn match erlangAnnotation " \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)" contained + syn match erlangAnnotation "`[^']*'" contained + syn keyword erlangTodo TODO FIXME XXX contained + syn match erlangModifier "\~\a\|\\\a\|\\\\" contained + syn match erlangSpecialCharacter ":\|_\|@\|\\\|\"\|\." + syn match erlangSeparator "(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|->\|#" contained + syn region erlangString start=+"+ skip=+\\.+ end=+"+ contains=erlangModifier + syn region erlangAtom start=+'+ skip=+\\'+ end=+'+ + + " Operators + syn match erlangOperator "+\|-\|\*\|\/" + syn keyword erlangOperator div rem or xor bor bxor bsl bsr + syn keyword erlangOperator and band not bnot + syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>=" + syn match erlangOperator "++\|--\|=\|!\|<-" + + " Numbers + syn match erlangNumberInteger "\d\+" contains=erlangSeparator + syn match erlangNumberFloat1 "\d\+\.\d\+" contains=erlangSeparator + syn match erlangNumberFloat2 "\d\+\(\.\d\+\)\=[eE][+-]\=\d\+\(\.\d\+\)\=" contains=erlangSeparator + syn match erlangNumberFloat3 "\d\+[#]\x\+" contains=erlangSeparator + syn match erlangNumberHex "$\x\+" contains=erlangSeparator + + " Ignore '_' and '-' in words + syn match erlangWord "\h\+\w*" + + syn match erlangChar /\$./ +endif + +if ! exists ("erlang_functions") + " Functions call + syn match erlangFCall "\%(\w\+\s*\.\s*\)*\w\+\s*[:@]\s*\w\+" + + " build-in-functions (BIFs) + syn keyword erlangBIF abs alive apply atom_to_list + syn keyword erlangBIF binary_to_list binary_to_term + syn keyword erlangBIF concat_binary + syn keyword erlangBIF date disconnect_node + syn keyword erlangBIF element erase exit + syn keyword erlangBIF float float_to_list + syn keyword erlangBIF get get_keys group_leader + syn keyword erlangBIF halt hd + syn keyword erlangBIF integer_to_list is_alive + syn keyword erlangBIF length link list_to_atom list_to_binary + syn keyword erlangBIF list_to_float list_to_integer list_to_pid + syn keyword erlangBIF list_to_tuple load_module + syn keyword erlangBIF make_ref monitor_node + syn keyword erlangBIF node nodes now + syn keyword erlangBIF open_port + syn keyword erlangBIF pid_to_list process_flag + syn keyword erlangBIF process_info process put + syn keyword erlangBIF register registered round + syn keyword erlangBIF self setelement size spawn + syn keyword erlangBIF spawn_link split_binary statistics + syn keyword erlangBIF term_to_binary throw time tl trunc + syn keyword erlangBIF tuple_to_list + syn keyword erlangBIF unlink unregister + syn keyword erlangBIF whereis + + " Other BIFs + syn keyword erlangBIF atom binary constant function integer + syn keyword erlangBIF list number pid ports port_close port_info + syn keyword erlangBIF reference record + + " erlang:BIFs + syn keyword erlangBIF check_process_code delete_module + syn keyword erlangBIF get_cookie hash math module_loaded + syn keyword erlangBIF preloaded processes purge_module set_cookie + syn keyword erlangBIF set_node + + " functions of math library + syn keyword erlangFunction acos asin atan atan2 cos cosh exp + syn keyword erlangFunction log log10 pi pow power sin sinh sqrt + syn keyword erlangFunction tan tanh + + " Other functions + syn keyword erlangFunction call module_info parse_transform + syn keyword erlangFunction undefined_function + + " Modules + syn keyword erlangModule error_handler +endif + +if ! exists ("erlang_keywords") + " Constants and Directives + syn match erlangDirective "-behaviour\|-behaviour" + syn match erlangDirective "-compile\|-define\|-else\|-endif\|-export\|-file" + syn match erlangDirective "-ifdef\|-ifndef\|-import\|-include_lib\|-include" + syn match erlangDirective "-module\|-record\|-undef" + + syn match erlangConstant "-author\|-copyright\|-doc\|-vsn" + + " Keywords + syn keyword erlangKeyword after begin case catch + syn keyword erlangKeyword cond end fun if + syn keyword erlangKeyword let of query receive + syn keyword erlangKeyword when + syn keyword erlangKeyword try + + " Processes + syn keyword erlangProcess creation current_function dictionary + syn keyword erlangProcess group_leader heap_size high initial_call + syn keyword erlangProcess linked low memory_in_use message_queue + syn keyword erlangProcess net_kernel node normal priority + syn keyword erlangProcess reductions registered_name runnable + syn keyword erlangProcess running stack_trace status timer + syn keyword erlangProcess trap_exit waiting + + " Ports + syn keyword erlangPort command count_in count_out creation in + syn keyword erlangPort in_format linked node out owner packeting + + " Nodes + syn keyword erlangNode atom_tables communicating creation + syn keyword erlangNode current_gc current_reductions current_runtime + syn keyword erlangNode current_wall_clock distribution_port + syn keyword erlangNode entry_points error_handler friends + syn keyword erlangNode garbage_collection magic_cookie magic_cookies + syn keyword erlangNode module_table monitored_nodes name next_ref + syn keyword erlangNode ports preloaded processes reductions + syn keyword erlangNode ref_state registry runtime wall_clock + + " Reserved + syn keyword erlangReserved apply_lambda module_info module_lambdas + syn keyword erlangReserved record record_index record_info + + " Extras + syn keyword erlangExtra badarg nocookie false fun true + + " Signals + syn keyword erlangSignal badsig kill killed exit normal +endif + + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists ("did_erlang_inits") + if version < 508 + let did_erlang_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + " erlang_characters + HiLink erlangComment Comment + HiLink erlangAnnotation Special + HiLink erlangTodo Todo + HiLink erlangSpecialCharacter Special + HiLink erlangSeparator Normal + HiLink erlangModifier Special + HiLink erlangOperator Operator + HiLink erlangString String + HiLink erlangAtom Type + + HiLink erlangNumberInteger Number + HiLink erlangNumberFloat1 Float + HiLink erlangNumberFloat2 Float + HiLink erlangNumberFloat3 Float + HiLink erlangNumberFloat4 Float + HiLink erlangNumberHex Number + + HiLink erlangWord Normal + + " erlang_functions + HiLink erlangFCall Function + HiLink erlangBIF Function + HiLink erlangFunction Function + HiLink erlangModuleFunction Function + + " erlang_keywords + HiLink erlangDirective Type + HiLink erlangConstant Type + HiLink erlangKeyword Keyword + HiLink erlangProcess Special + HiLink erlangPort Special + HiLink erlangNode Special + HiLink erlangReserved Statement + HiLink erlangExtra Statement + HiLink erlangSignal Statement + + delcommand HiLink +endif + + +let b:current_syntax = "erlang" + diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim index 06b46970..10f154a9 100644 --- a/runtime/syntax/eruby.vim +++ b/runtime/syntax/eruby.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: eRuby " Maintainer: Tim Pope -" Info: $Id: eruby.vim,v 1.8 2007/05/12 14:29:57 vimboss Exp $ +" Info: $Id: eruby.vim,v 1.18 2007/05/06 23:56:12 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns @@ -82,4 +82,4 @@ if main_syntax == 'eruby' unlet main_syntax endif -" vim: nowrap sw=2 sts=2 ts=8 ff=unix: +" vim: nowrap sw=2 sts=2 ts=8 : diff --git a/runtime/syntax/esterel.vim b/runtime/syntax/esterel.vim index cc3c4d73..3284d6f5 100644 --- a/runtime/syntax/esterel.vim +++ b/runtime/syntax/esterel.vim @@ -3,8 +3,8 @@ " Maintainer: Maurizio Tranchero - " Credits: Luca Necchi " First Release: Tue May 17 23:49:39 CEST 2005 -" Last Change: Sat Apr 22 14:56:41 CEST 2006 -" Version: 0.5 +" Last Change: Wed Jun 6 22:59:14 CEST 2007 +" Version: 0.7 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -43,20 +43,26 @@ syn keyword esterelStatement relation syn keyword esterelFunctions function procedure task syn keyword esterelSysCall call trap exit exec " Esterel Types -syn keyword esterelType integer float bolean +syn keyword esterelType integer float bolean " Esterel Comment -syn match esterelComment "%.*$" +syn match esterelComment "%.*$" " Operators and special characters -syn match esterelSpecial ":" -syn match esterelSpecial "<=" -syn match esterelSpecial ">=" -syn match esterelSpecial ";" -syn match esterelOperator "\[" -syn match esterelOperator "\]" -syn match esterelOperator ":=" -syn match esterelStatement "\<\(if\|else\)\>" -syn match esterelNone "\$" -syn match esterelNone "\\s" +syn match esterelSpecial ":" +syn match esterelSpecial "<=" +syn match esterelSpecial ">=" +syn match esterelSpecial "+" +syn match esterelSpecial "-" +syn match esterelSpecial "=" +syn match esterelSpecial ";" +syn match esterelSpecial "/" +syn match esterelSpecial "?" +syn match esterelOperator "\[" +syn match esterelOperator "\]" +syn match esterelOperator ":=" +syn match esterelOperator "||" +syn match esterelStatement "\<\(if\|else\)\>" +syn match esterelNone "\$" +syn match esterelNone "\\s" " Class Linking if version >= 508 || !exists("did_esterel_syntax_inits") diff --git a/runtime/syntax/forth.vim b/runtime/syntax/forth.vim index 0f567585..d2884e7f 100644 --- a/runtime/syntax/forth.vim +++ b/runtime/syntax/forth.vim @@ -1,11 +1,11 @@ " Vim syntax file " Language: FORTH " Maintainer: Christian V. J. Brüssow -" Last Change: Di 06 Jul 2004 18:40:33 CEST +" Last Change: Sa 14 Jul 2007 21:39:53 CEST " Filenames: *.fs,*.ft -" URL: http://www.cvjb.de/comp/vim/forth.vim +" URL: http://www.cvjb.de/comp/vim/forth.vim -" $Id: forth.vim,v 1.2 2004/07/10 09:40:55 vimboss Exp $ +" $Id: forth.vim,v 1.10 2007/07/14 21:40:17 bruessow Exp $ " The list of keywords is incomplete, compared with the offical ANS " wordlist. If you use this language, please improve it, and send me @@ -13,30 +13,48 @@ " Many Thanks to... " -" 2004-07-06: -" Changed "syn sync ccomment maxlines=200" line: splitted it into two separate -" lines. +" 2007-07-11: +" Benjamin Krill send me a patch +" to highlight space errors. +" You can toggle this feature on through setting the +" flag forth_space_errors in you vimrc. If you have switched it on, +" you can turn off highlighting of trailing spaces in comments by +" setting forth_no_trail_space_error in your vimrc. If you do not want +" the highlighting of a tabulator following a space in comments, you +" can turn this off by setting forth_no_tab_space_error. " +" 2006-05-25: +" Bill McCarthy and Ilya Sher +" Who found a bug in the ccomment line in 2004!!! +" I'm really very sorry, that it has taken two years to fix that +" in the offical version of this file. Shame on me. +" I think my face will be red the next ten years... +" +" 2006-05-21: +" Thomas E. Vaughan send me a patch +" for the parenthesis comment word, so words with a trailing +" parenthesis will not start the highlighting for such comments. +" " 2003-05-10: " Andrew Gaul send me a patch for " forthOperators. " " 2003-04-03: -" Ron Aaron made updates for an +" Ron Aaron made updates for an " improved Win32Forth support. " " 2002-04-22: -" Charles Shattuck helped me to settle up with the +" Charles Shattuck helped me to settle up with the " binary and hex number highlighting. " " 2002-04-20: -" Charles Shattuck send me some code for correctly +" Charles Shattuck send me some code for correctly " highlighting char and [char] followed by an opening paren. He also added " some words for operators, conditionals, and definitions; and added the " highlighting for s" and c". " " 2000-03-28: -" John Providenza made improvements for the +" John Providenza made improvements for the " highlighting of strings, and added the code for highlighting hex numbers. " @@ -68,6 +86,15 @@ else set iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 endif +" when wanted, highlight trailing white space +if exists("forth_space_errors") + if !exists("forth_no_trail_space_error") + syn match forthSpaceError display excludenl "\s\+$" + endif + if !exists("forth_no_tab_space_error") + syn match forthSpaceError display " \+\t"me=e-1 + endif +endif " Keywords @@ -177,12 +204,11 @@ syn region forthString start=+s\"+ end=+"+ end=+$+ syn region forthString start=+c\"+ end=+"+ end=+$+ " Comments -syn match forthComment '\\\s.*$' contains=forthTodo -syn region forthComment start='\\S\s' end='.*' contains=forthTodo -syn match forthComment '\.(\s[^)]*)' contains=forthTodo -syn region forthComment start='(\s' skip='\\)' end=')' contains=forthTodo -syn region forthComment start='/\*' end='\*/' contains=forthTodo -"syn match forthComment '(\s[^\-]*\-\-[^\-]*)' contains=forthTodo +syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError +syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError +syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError +syn region forthComment start='\s(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError +syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError " Include files syn match forthInclude '^INCLUDE\s\+\k\+' @@ -194,10 +220,10 @@ syn match forthInclude '^needs\s\+' " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_forth_syn_inits") if version < 508 - let did_forth_syn_inits = 1 - command -nargs=+ HiLink hi link + let did_forth_syn_inits = 1 + command -nargs=+ HiLink hi link else - command -nargs=+ HiLink hi def link + command -nargs=+ HiLink hi def link endif " The default methods for highlighting. Can be overriden later. @@ -231,6 +257,7 @@ if version >= 508 || !exists("did_forth_syn_inits") HiLink forthObjectDef Define HiLink forthEndOfObjectDef Define HiLink forthInclude Include + HiLink forthSpaceError Error delcommand HiLink endif diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim index 9cb76cb1..830b8d01 100644 --- a/runtime/syntax/fstab.vim +++ b/runtime/syntax/fstab.vim @@ -2,13 +2,14 @@ " Language: fstab file " Maintaner: Radu Dineiu " URL: http://ld.yi.org/vim/fstab.vim -" Last Change: 2007 Apr 24 -" Version: 0.91 +" Last Change: 2008 Jan 16 +" Version: 0.92 " " Credits: " David Necas (Yeti) " Stefano Zacchiroli " Georgi Georgiev +" James Vega " " Options: " let fstab_unknown_fs_errors = 1 @@ -23,7 +24,7 @@ endif " General syn cluster fsGeneralCluster contains=fsComment syn match fsComment /\s*#.*/ -syn match fsOperator /[,=:]/ +syn match fsOperator /[,=:#]/ " Device syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError @@ -31,9 +32,11 @@ syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts sysfs usbfs syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID +syn keyword fsDeviceKeyword contained sshfs nextgroup=fsDeviceSshfs syn match fsDeviceKeyword contained /^[a-zA-Z0-9.\-]\+\ze:/ syn match fsDeviceLabel contained /=[^ \t]\+/hs=s+1 contains=fsOperator syn match fsDeviceUUID contained /=[^ \t]\+/hs=s+1 contains=fsOperator +syn match fsDeviceSshfs contained /#[_=[:alnum:]\.\/+-]\+@[a-z0-9._-]\+\a\{2}:[^ \t]\+/hs=s+1 contains=fsOperator " Mount Point syn cluster fsMountPointCluster contains=fsMountPointKeyword,fsMountPointError @@ -43,7 +46,7 @@ syn keyword fsMountPointKeyword contained none swap " Type syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown syn match fsTypeUnknown /\s\+\zs\w\+/ contained -syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs +syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs " Options " ------- @@ -143,6 +146,14 @@ syn match fsOptionsKeywords contained /\= 508 || !exists("did_config_syntax_inits") HiLink fsDeviceKeyword Identifier HiLink fsDeviceLabel String HiLink fsDeviceUUID String + HiLink fsDeviceSshfs String HiLink fsFreqPassNumber Number if exists('fstab_unknown_fs_errors') && fstab_unknown_fs_errors == 1 HiLink fsTypeUnknown Error endif + HiLink fsDeviceError Error HiLink fsMountPointError Error HiLink fsMountPointKeyword Keyword @@ -235,6 +248,7 @@ if version >= 508 || !exists("did_config_syntax_inits") HiLink fsOptionsHpfsCase String HiLink fsOptionsIsoMap String HiLink fsOptionsReiserHash String + HiLink fsOptionsSshYesNoAsk String HiLink fsOptionsUfsType String HiLink fsOptionsUfsError String diff --git a/runtime/syntax/fvwm.vim b/runtime/syntax/fvwm.vim index 43b7abcf..29112fcc 100644 --- a/runtime/syntax/fvwm.vim +++ b/runtime/syntax/fvwm.vim @@ -1,8 +1,8 @@ -" Vim syntax file +" Vim syntax file for Fvwm-2.5.22 " Language: Fvwm{1,2} configuration file " Maintainer: Gautam Iyer " Previous Maintainer: Haakon Riiser -" Last Change: Sat 04 Nov 2006 11:28:37 PM PST +" Last Change: Sat 29 Sep 2007 11:08:34 AM PDT " " Thanks to David Necas (Yeti) for adding Fvwm 2.4 support. " @@ -43,7 +43,9 @@ syn match fvwmRGBValue "#\x\{9}" syn match fvwmRGBValue "#\x\{12}" syn match fvwmRGBValue "rgb:\x\{1,4}/\x\{1,4}/\x\{1,4}" -syn region fvwmComment contains=@Spell start="^\s*#" skip='\\$' end='$' +syn region fvwmComment contains=@Spell + \ start='^\s*#\s' skip='\\$' end='$' +syn region fvwmComment start="\v^\s*#(\S|$)" skip='\\$' end='$' if (exists("b:fvwm_version") && b:fvwm_version == 1) \ || (exists("use_fvwm_1") && use_fvwm_1) @@ -130,12 +132,16 @@ else syn match fvwmShortcutKey contained "&." syn keyword fvwmModuleName FvwmAnimate FvwmAudio FvwmAuto FvwmBacker - \ FvwmBanner FvwmButtons FvwmCommandS - \ FvwmConsole FvwmCpp FvwmDebug FvwmDragWell - \ FvwmEvent FvwmForm FvwmGtk FvwmIconBox + \ FvwmBanner FvwmButtons FvwmCascade + \ FvwmCommandS FvwmConsole FvwmConsoleC + \ FvwmCpp FvwmDebug FvwmDragWell FvwmEvent + \ FvwmForm FvwmGtkDebug FvwmIconBox \ FvwmIconMan FvwmIdent FvwmM4 FvwmPager - \ FvwmSave FvwmSaveDesk FvwmScript FvwmScroll - \ FvwmTaskBar FvwmWinList FvwmWharf + \ FvwmPerl FvwmProxy FvwmRearrange FvwmSave + \ FvwmSaveDesk FvwmScript FvwmScroll FvwmTabs + \ FvwmTalk FvwmTaskBar FvwmTheme FvwmTile + \ FvwmWharf FvwmWindowMenu FvwmWinList + " Obsolete fvwmModuleName: FvwmTheme syn keyword fvwmKeyword AddToMenu ChangeMenuStyle CopyMenuStyle @@ -162,21 +168,22 @@ else \ WindowShadeAnimate IgnoreModifiers \ EdgeCommand EdgeLeaveCommand GnomeButton \ Stroke StrokeFunc FocusStyle DestroyStyle - \ UpdateStyles AddToDecor BorderStyle - \ ChangeDecor DestroyDecor UpdateDecor - \ DesktopName DeskTopSize EdgeResistance - \ EdgeScroll EdgeThickness EwmhBaseStruts - \ EWMHNumberOfDesktops GotoDeskAndPage - \ GotoPage Scroll Xinerama + \ DestroyWindowStyle UpdateStyles AddToDecor + \ BorderStyle ChangeDecor DestroyDecor + \ UpdateDecor DesktopName DeskTopSize + \ EdgeResistance EdgeScroll EdgeThickness + \ EwmhBaseStruts EWMHNumberOfDesktops + \ GotoDeskAndPage GotoPage Scroll Xinerama \ XineramaPrimaryScreen XineramaSls \ XineramaSlsSize XineramaSlsScreens AddToFunc \ Beep DestroyFunc Echo Exec ExecUseShell \ Function Nop PipeRead Read SetEnv Silent \ UnsetEnv Wait DestroyModuleConfig KillModule - \ Module ModuleSynchronous ModuleTimeout - \ SendToModule Quit QuitScreen QuitSession - \ Restart SaveSession SaveQuitSession KeepRc - \ NoWindow Break CleanupColorsets + \ Module ModuleListenOnly ModuleSynchronous + \ ModuleTimeout SendToModule Quit QuitScreen + \ QuitSession Restart SaveSession + \ SaveQuitSession KeepRc NoWindow Break + \ CleanupColorsets EchoFuncDefinition " Conditional commands syn keyword fvwmKeyword nextgroup=fvwmCondition skipwhite @@ -200,9 +207,12 @@ else \ CurrentPageAnyDesk CurrentScreen FixedSize \ Focused HasHandles HasPointer Iconic \ Iconifiable Maximizable Maximized - \ Overlapped PlacedByButton3 PlacedByFvwm Raised - \ Shaded Sticky StickyAcrossDesks - \ StickyAcrossPages Transient Visible + \ Overlapped PlacedByButton PlacedByButton3 + \ PlacedByFvwm Raised Shaded Sticky + \ StickyAcrossDesks StickyAcrossPages + \ Transient Visible StickyIcon + \ StickyAcrossPagesIcon StickyAcrossDesksIcon + syn keyword fvwmCondNames contained skipwhite nextgroup=@fvwmConstants \ State Layer @@ -288,7 +298,7 @@ else \ MinOverlapPlacement \ MinOverlapPercentPlacement \ TileManualPlacement TileCascadePlacement - \ CenterPlacement MinOverlapPlacementPenalties + \ MinOverlapPlacementPenalties \ MinOverlapPercentPlacementPenalties \ DecorateTransient NakedTransient \ DontRaiseTransient RaiseTransient @@ -353,7 +363,8 @@ else \ EWMHUseStackingOrderHints \ EWMHIgnoreStackingOrderHints \ EWMHIgnoreStateHints EWMHUseStateHints - \ EWMHIgnoreStrutHints EWMHUseStrutHints + \ EWMHIgnoreStrutHints EWMHIgnoreWindowType + \ EWMHUseStrutHints \ EWMHMaximizeIgnoreWorkingArea \ EWMHMaximizeUseWorkingArea \ EWMHMaximizeUseDynamicWorkingArea @@ -361,6 +372,14 @@ else \ EWMHPlacementUseWorkingArea \ EWMHPlacementUseDynamicWorkingArea \ MoveByProgramMethod Unmanaged State + \ StippledIconTitle StickyStippledTitle + \ StickyStippledIconTitle + \ PositionPlacement + \ UnderMousePlacementHonorsStartsOnPage + \ UnderMousePlacementIgnoresStartsOnPage + \ MinOverlapPlacementPenalties + \ MinOverlapPercentPlacementPenalties + \ MinWindowSize StartShaded " Cursor styles syn keyword fvwmKeyword nextgroup=fvwmCursorStyle skipwhite @@ -400,6 +419,7 @@ else \ SelectOnRelease ItemFormat \ VerticalItemSpacing VerticalTitleSpacing \ AutomaticHotkeys AutomaticHotkeysOff + \ TitleFont TitleColorset HilightTitleBack " Button style syn keyword fvwmKeyword nextgroup=fvwmBNum skipwhite diff --git a/runtime/syntax/gitcommit.vim b/runtime/syntax/gitcommit.vim new file mode 100644 index 00000000..b7a871ec --- /dev/null +++ b/runtime/syntax/gitcommit.vim @@ -0,0 +1,53 @@ +" Vim syntax file +" Language: git commit file +" Maintainer: Tim Pope +" Filenames: *.git/COMMIT_EDITMSG +" Last Change: 2007 Dec 20 + +if exists("b:current_syntax") + finish +endif + +syn case match + +if has("spell") + syn spell toplevel +endif + +syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl +syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell +syn match gitcommitOverflow ".*" contained contains=@Spell +syn match gitcommitBlank "^[^#].*" contained contains=@Spell +syn match gitcommitComment "^#.*" +syn region gitcommitHead start=/^# / end=/^#$/ contained transparent +syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite +syn match gitcommitBranch "\S\+" contained +syn match gitcommitHeader "\%(^# \)\@<=.*:$" contained containedin=gitcommitComment + +syn region gitcommitUntracked start=/^# Untracked files:/ end=/^#$/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold +syn match gitcommitUntrackedFile "\t\@<=.*" contained + +syn region gitcommitDiscarded start=/^# Changed but not updated:/ end=/^#$/ contains=gitcommitHeader,gitcommitHead,gitcommitType fold +syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$/ contains=gitcommitHeader,gitcommitHead,gitcommitType fold + +syn match gitcommitType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitFile skipwhite +syn match gitcommitFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitArrow +syn match gitcommitArrow " -> " contained nextgroup=gitcommitFile transparent + +hi def link gitcommitSummary Keyword +hi def link gitcommitComment Comment +hi def link gitcommitUntracked gitcommitComment +hi def link gitcommitDiscarded gitcommitComment +hi def link gitcommitSelected gitcommitComment +hi def link gitcommitOnBranch Comment +hi def link gitcommitBranch Special +hi def link gitcommitType Type +hi def link gitcommitHeader PreProc +hi def link gitcommitFile Constant +hi def link gitcommitUntrackedFile gitcommitFile +"hi def link gitcommitOverflow Error +hi def link gitcommitBlank Error + +let b:current_syntax = "gitcommit" + +" vim:set ft=vim sts=4 sw=4: diff --git a/runtime/syntax/gitconfig.vim b/runtime/syntax/gitconfig.vim new file mode 100644 index 00000000..0a8df2a0 --- /dev/null +++ b/runtime/syntax/gitconfig.vim @@ -0,0 +1,39 @@ +" Vim syntax file +" Language: git config file +" Maintainer: Tim Pope +" Filenames: gitconfig, .gitconfig, *.git/config +" Last Change: 2007 Dec 20 + +if exists("b:current_syntax") + finish +endif + +syn case ignore +setlocal iskeyword+=- +setlocal iskeyword-=_ + +syn match gitconfigComment "[#;].*" +syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]" +syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]' +syn match gitconfigVariable "\%(^\s*\)\@<=\a\k*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite +syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend +syn keyword gitconfigBoolean true false yes no contained +syn match gitconfigNumber "\d\+" contained +syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError +syn match gitconfigError +\\.+ contained +syn match gitconfigEscape +\\[\\"ntb]+ contained +syn match gitconfigEscape +\\$+ contained + +hi def link gitconfigComment Comment +hi def link gitconfigSection Keyword +hi def link gitconfigVariable Identifier +hi def link gitconfigBoolean Boolean +hi def link gitconfigNumber Number +hi def link gitconfigString String +hi def link gitconfigDelim Delimiter +hi def link gitconfigEscape Delimiter +hi def link gitconfigError Error + +let b:current_syntax = "gitconfig" + +" vim:set ft=vim sts=4 sw=4: diff --git a/runtime/syntax/gitsendemail.vim b/runtime/syntax/gitsendemail.vim new file mode 100644 index 00000000..154ec076 --- /dev/null +++ b/runtime/syntax/gitsendemail.vim @@ -0,0 +1,21 @@ +" Vim syntax file +" Language: git send-email message +" Maintainer: Tim Pope +" Filenames: *.msg.[0-9]* (first line is "From ... # This line is ignored.") +" Last Change: 2007 Dec 20 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/mail.vim +syn case match + +syn match gitsendemailComment "\%^From.*#.*" +syn match gitsendemailComment "^GIT:.*" + +hi def link gitsendemailComment Comment + +let b:current_syntax = "gitsendemail" + +" vim:set ft=vim sts=4 sw=4: diff --git a/runtime/syntax/gp.vim b/runtime/syntax/gp.vim index 4be13440..2793aa4e 100644 --- a/runtime/syntax/gp.vim +++ b/runtime/syntax/gp.vim @@ -1,7 +1,7 @@ " Vim syntax file -" Language: gp (version 2.2) +" Language: gp (version 2.4) " Maintainer: Karim Belabas -" Last change: 2006 Apr 12 +" Last change: 2007 Oct 1 " URL: http://pari.math.u-bordeaux.fr if version < 600 @@ -15,7 +15,7 @@ syntax keyword gpStatement break return next syntax keyword gpConditional if syntax keyword gpRepeat until while for fordiv forprime forstep forvec " storage class -syntax keyword gpScope local global +syntax keyword gpScope my local global " defaults syntax keyword gpInterfaceKey colors compatible datadir debug debugfiles syntax keyword gpInterfaceKey debugmem echo factor_add_primes format help diff --git a/runtime/syntax/gpg.vim b/runtime/syntax/gpg.vim index b7307b9d..0f73b17a 100644 --- a/runtime/syntax/gpg.vim +++ b/runtime/syntax/gpg.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: gpg(1) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2007-05-06 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,- +setlocal iskeyword+=- syn keyword gpgTodo contained FIXME TODO XXX NOTE diff --git a/runtime/syntax/hostconf.vim b/runtime/syntax/hostconf.vim new file mode 100644 index 00000000..4fc8af0b --- /dev/null +++ b/runtime/syntax/hostconf.vim @@ -0,0 +1,147 @@ +" Vim syntax file +" Language: host.conf(5) configuration file +" Maintainer: Nikolai Weibull +" Latest Revision: 2007-06-25 + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn keyword hostconfTodo + \ contained + \ TODO + \ FIXME + \ XXX + \ NOTE + +syn match hostconfComment + \ display + \ contained + \ '\s*#.*' + \ contains=hostconfTodo, + \ @Spell + +syn match hostconfBegin + \ display + \ '^' + \ nextgroup=hostconfComment,hostconfKeyword + \ skipwhite + +syn keyword hostconfKeyword + \ contained + \ order + \ nextgroup=hostconfLookupOrder + \ skipwhite + +let s:orders = ['bind', 'hosts', 'nis'] + +function s:permute_suffixes(list) + if empty(a:list) + return [] + elseif len(a:list) == 1 + return a:list[0] + else + let i = 0 + let n = len(a:list) + let sub_permutations = [] + while i < n + let list_copy = copy(a:list) + let removed = list_copy[i] + call remove(list_copy, i) + call add(sub_permutations, [removed, s:permute_suffixes(list_copy)]) + let i += 1 + endwhile + return sub_permutations + endif +endfunction + +function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context) + for order_of_orders in a:list_of_order_of_orders + let order = order_of_orders[0] + let trailing_context = a:trailing_context . toupper(order[0]) . order[1:] + let nextgroup = 'hostconfLookupOrder' . trailing_context + let nextgroup_delimiter = nextgroup . 'Delimiter' + let group = 'hostconfLookupOrder' . a:context + execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite' + execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite' + if a:context != "" + execute 'hi def link' group 'hostconfLookupOrder' + endif + execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter' + let context = trailing_context + if type(order_of_orders[1]) == type([]) + call s:generate_suffix_groups(order_of_orders[1], context, trailing_context) + else + execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1] + execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder' + endif + endfor +endfunction + +call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "") + +delfunction s:generate_suffix_groups +delfunction s:permute_suffixes + +syn keyword hostconfKeyword + \ contained + \ trim + \ nextgroup=hostconfDomain + \ skipwhite + +syn match hostconfDomain + \ contained + \ '\.[^:;,[:space:]]\+' + \ nextgroup=hostconfDomainDelimiter + \ skipwhite + +syn match hostconfDomainDelimiter + \ contained + \ display + \ '[:;,]' + \ nextgroup=hostconfDomain + \ skipwhite + +syn keyword hostconfKeyword + \ contained + \ multi + \ nospoof + \ spoofalert + \ reorder + \ nextgroup=hostconfBoolean + \ skipwhite + +syn keyword hostconfBoolean + \ contained + \ on + \ off + +syn keyword hostconfKeyword + \ contained + \ spoof + \ nextgroup=hostconfSpoofValue + \ skipwhite + +syn keyword hostconfSpoofValue + \ contained + \ off + \ nowarn + \ warn + +hi def link hostconfTodo Todo +hi def link hostconfComment Comment +hi def link hostconfKeyword Keyword +hi def link hostconfLookupOrder Identifier +hi def link hostconfLookupOrderDelimiter Delimiter +hi def link hostconfDomain String +hi def link hostconfDomainDelimiter Delimiter +hi def link hostconfBoolean Boolean +hi def link hostconfSpoofValue hostconfBoolean + +let b:current_syntax = "hostconf" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/syntax/indent.vim b/runtime/syntax/indent.vim index 4934d018..4070769f 100644 --- a/runtime/syntax/indent.vim +++ b/runtime/syntax/indent.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: indent(1) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2007-05-10 +" Latest Revision: 2007-06-17 " indent_is_bsd: If exists, will change somewhat to match BSD implementation " " TODO: is the deny-all (a la lilo.vim nice or no?)... @@ -15,7 +15,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,-,+,_ +setlocal iskeyword+=-,+ syn match indentError '\S\+' diff --git a/runtime/syntax/initng.vim b/runtime/syntax/initng.vim index 68c21523..1a912c1d 100644 --- a/runtime/syntax/initng.vim +++ b/runtime/syntax/initng.vim @@ -4,7 +4,7 @@ " URL: http://glen.alkohol.ee/pld/initng/ " License: GPL v2 " Version: 0.13 -" Last Change: $Date: 2007/05/12 13:10:43 $ +" Last Change: $Date: 2007/05/05 17:17:40 $ " " Syntax highlighting for initng .i files. Inherits from sh.vim and adds " in the hiliting to start/stop {} blocks. Requires vim 6.3 or later. diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim index 85ea0810..d5e32fae 100644 --- a/runtime/syntax/java.vim +++ b/runtime/syntax/java.vim @@ -2,7 +2,7 @@ " Language: Java " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/java.vim -" Last Change: 2006 Apr 30 +" Last Change: 2007 Dec 21 " Please check :help java.vim for comments on some of the options available. @@ -121,6 +121,11 @@ syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contai syn keyword javaLabel default if !exists("java_allow_cpp_keywords") + " The default used to be to highlight C++ keywords. But several people + " don't like that, so default to not highlighting these. + let java_allow_cpp_keywords = 1 +endif +if !java_allow_cpp_keywords syn keyword javaError auto delete extern friend inline redeclared syn keyword javaError register signed sizeof struct template typedef union syn keyword javaError unsigned operator diff --git a/runtime/syntax/lftp.vim b/runtime/syntax/lftp.vim index 7de5a560..6a8e4f9e 100644 --- a/runtime/syntax/lftp.vim +++ b/runtime/syntax/lftp.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: lftp(1) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,- +setlocal iskeyword+=- syn region lftpComment display oneline start='#' end='$' \ contains=lftpTodo,@Spell diff --git a/runtime/syntax/lisp.vim b/runtime/syntax/lisp.vim dissimilarity index 88% index cd800e72..55390aaa 100644 --- a/runtime/syntax/lisp.vim +++ b/runtime/syntax/lisp.vim @@ -1,543 +1,624 @@ -" Vim syntax file -" Language: Lisp -" Maintainer: Dr. Charles E. Campbell, Jr. -" Last Change: Apr 12, 2007 -" Version: 19 -" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax -" -" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols -" taken from the HyperSpec - -" --------------------------------------------------------------------- -" Load Once: {{{1 -" For vim-version 5.x: Clear all syntax items -" For vim-version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if version >= 600 - setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_ -else - set iskeyword=42,43,45,47-58,60-62,64-90,97-122,_ -endif - -" --------------------------------------------------------------------- -" Clusters: {{{1 -syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite -syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite -if exists("g:lisp_instring") - syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString -else - syn cluster lispListCluster contains=@lispBaseListCluster,lispString -endif - -syn case ignore - -" --------------------------------------------------------------------- -" Lists: {{{1 -syn match lispSymbol contained ![^()'`,"; \t]\+! -syn match lispBarSymbol contained !|..\{-}|! -if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 - syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 - syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 - syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 - syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 - syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 - syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 - syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 - syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 - syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 - syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0 -else - syn region lispList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@lispListCluster - syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster -endif - -" --------------------------------------------------------------------- -" Atoms: {{{1 -syn match lispAtomMark "'" -syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList -syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark -syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark -syn region lispAtom start=+'"+ skip=+\\"+ end=+"+ -syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString -syn match lispAtomNmbr contained "\<\d\+" -syn match lispLeadWhite contained "^\s\+" - -" --------------------------------------------------------------------- -" Standard Lisp Functions and Macros: {{{1 -syn keyword lispFunc * find-method pprint-indent -syn keyword lispFunc ** find-package pprint-linear -syn keyword lispFunc *** find-restart pprint-logical-block -syn keyword lispFunc + find-symbol pprint-newline -syn keyword lispFunc ++ finish-output pprint-pop -syn keyword lispFunc +++ first pprint-tab -syn keyword lispFunc - fixnum pprint-tabular -syn keyword lispFunc / flet prin1 -syn keyword lispFunc // float prin1-to-string -syn keyword lispFunc /// float-digits princ -syn keyword lispFunc /= float-precision princ-to-string -syn keyword lispFunc 1+ float-radix print -syn keyword lispFunc 1- float-sign print-not-readable -syn keyword lispFunc < floating-point-inexact print-not-readable-object -syn keyword lispFunc <= floating-point-invalid-operation print-object -syn keyword lispFunc = floating-point-overflow print-unreadable-object -syn keyword lispFunc > floating-point-underflow probe-file -syn keyword lispFunc >= floatp proclaim -syn keyword lispFunc abort floor prog -syn keyword lispFunc abs fmakunbound prog* -syn keyword lispFunc access force-output prog1 -syn keyword lispFunc acons format prog2 -syn keyword lispFunc acos formatter progn -syn keyword lispFunc acosh fourth program-error -syn keyword lispFunc add-method fresh-line progv -syn keyword lispFunc adjoin fround provide -syn keyword lispFunc adjust-array ftruncate psetf -syn keyword lispFunc adjustable-array-p ftype psetq -syn keyword lispFunc allocate-instance funcall push -syn keyword lispFunc alpha-char-p function pushnew -syn keyword lispFunc alphanumericp function-keywords putprop -syn keyword lispFunc and function-lambda-expression quote -syn keyword lispFunc append functionp random -syn keyword lispFunc apply gbitp random-state -syn keyword lispFunc applyhook gcd random-state-p -syn keyword lispFunc apropos generic-function rassoc -syn keyword lispFunc apropos-list gensym rassoc-if -syn keyword lispFunc aref gentemp rassoc-if-not -syn keyword lispFunc arithmetic-error get ratio -syn keyword lispFunc arithmetic-error-operands get-decoded-time rational -syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize -syn keyword lispFunc array get-internal-real-time rationalp -syn keyword lispFunc array-dimension get-internal-run-time read -syn keyword lispFunc array-dimension-limit get-macro-character read-byte -syn keyword lispFunc array-dimensions get-output-stream-string read-char -syn keyword lispFunc array-displacement get-properties read-char-no-hang -syn keyword lispFunc array-element-type get-setf-expansion read-delimited-list -syn keyword lispFunc array-has-fill-pointer-p get-setf-method read-eval-print -syn keyword lispFunc array-in-bounds-p get-universal-time read-from-string -syn keyword lispFunc array-rank getf read-line -syn keyword lispFunc array-rank-limit gethash read-preserving-whitespace -syn keyword lispFunc array-row-major-index go read-sequence -syn keyword lispFunc array-total-size graphic-char-p reader-error -syn keyword lispFunc array-total-size-limit handler-bind readtable -syn keyword lispFunc arrayp handler-case readtable-case -syn keyword lispFunc ash hash-table readtablep -syn keyword lispFunc asin hash-table-count real -syn keyword lispFunc asinh hash-table-p realp -syn keyword lispFunc assert hash-table-rehash-size realpart -syn keyword lispFunc assoc hash-table-rehash-threshold reduce -syn keyword lispFunc assoc-if hash-table-size reinitialize-instance -syn keyword lispFunc assoc-if-not hash-table-test rem -syn keyword lispFunc atan host-namestring remf -syn keyword lispFunc atanh identity remhash -syn keyword lispFunc atom if remove -syn keyword lispFunc base-char if-exists remove-duplicates -syn keyword lispFunc base-string ignorable remove-if -syn keyword lispFunc bignum ignore remove-if-not -syn keyword lispFunc bit ignore-errors remove-method -syn keyword lispFunc bit-and imagpart remprop -syn keyword lispFunc bit-andc1 import rename-file -syn keyword lispFunc bit-andc2 in-package rename-package -syn keyword lispFunc bit-eqv in-package replace -syn keyword lispFunc bit-ior incf require -syn keyword lispFunc bit-nand initialize-instance rest -syn keyword lispFunc bit-nor inline restart -syn keyword lispFunc bit-not input-stream-p restart-bind -syn keyword lispFunc bit-orc1 inspect restart-case -syn keyword lispFunc bit-orc2 int-char restart-name -syn keyword lispFunc bit-vector integer return -syn keyword lispFunc bit-vector-p integer-decode-float return-from -syn keyword lispFunc bit-xor integer-length revappend -syn keyword lispFunc block integerp reverse -syn keyword lispFunc boole interactive-stream-p room -syn keyword lispFunc boole-1 intern rotatef -syn keyword lispFunc boole-2 internal-time-units-per-second round -syn keyword lispFunc boole-and intersection row-major-aref -syn keyword lispFunc boole-andc1 invalid-method-error rplaca -syn keyword lispFunc boole-andc2 invoke-debugger rplacd -syn keyword lispFunc boole-c1 invoke-restart safety -syn keyword lispFunc boole-c2 invoke-restart-interactively satisfies -syn keyword lispFunc boole-clr isqrt sbit -syn keyword lispFunc boole-eqv keyword scale-float -syn keyword lispFunc boole-ior keywordp schar -syn keyword lispFunc boole-nand labels search -syn keyword lispFunc boole-nor lambda second -syn keyword lispFunc boole-orc1 lambda-list-keywords sequence -syn keyword lispFunc boole-orc2 lambda-parameters-limit serious-condition -syn keyword lispFunc boole-set last set -syn keyword lispFunc boole-xor lcm set-char-bit -syn keyword lispFunc boolean ldb set-difference -syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character -syn keyword lispFunc boundp ldiff set-exclusive-or -syn keyword lispFunc break least-negative-double-float set-macro-character -syn keyword lispFunc broadcast-stream least-negative-long-float set-pprint-dispatch -syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-syntax-from-char -syn keyword lispFunc built-in-class least-negative-normalized-long-float setf -syn keyword lispFunc butlast least-negative-normalized-short-float setq -syn keyword lispFunc byte least-negative-normalized-single-float seventh -syn keyword lispFunc byte-position least-negative-short-float shadow -syn keyword lispFunc byte-size least-negative-single-float shadowing-import -syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize -syn keyword lispFunc call-method least-positive-long-float shiftf -syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float -syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon -syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon -syn keyword lispFunc case least-positive-normalized-single-float short-site-name -syn keyword lispFunc catch least-positive-short-float signal -syn keyword lispFunc ccase least-positive-single-float signed-byte -syn keyword lispFunc cdr length signum -syn keyword lispFunc ceiling let simle-condition -syn keyword lispFunc cell-error let* simple-array -syn keyword lispFunc cell-error-name lisp simple-base-string -syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector -syn keyword lispFunc change-class lisp-implementation-version simple-bit-vector-p -syn keyword lispFunc char list simple-condition-format-arguments -syn keyword lispFunc char-bit list* simple-condition-format-control -syn keyword lispFunc char-bits list-all-packages simple-error -syn keyword lispFunc char-bits-limit list-length simple-string -syn keyword lispFunc char-code listen simple-string-p -syn keyword lispFunc char-code-limit listp simple-type-error -syn keyword lispFunc char-control-bit load simple-vector -syn keyword lispFunc char-downcase load-logical-pathname-translations simple-vector-p -syn keyword lispFunc char-equal load-time-value simple-warning -syn keyword lispFunc char-font locally sin -syn keyword lispFunc char-font-limit log single-flaot-epsilon -syn keyword lispFunc char-greaterp logand single-float -syn keyword lispFunc char-hyper-bit logandc1 single-float-epsilon -syn keyword lispFunc char-int logandc2 single-float-negative-epsilon -syn keyword lispFunc char-lessp logbitp sinh -syn keyword lispFunc char-meta-bit logcount sixth -syn keyword lispFunc char-name logeqv sleep -syn keyword lispFunc char-not-equal logical-pathname slot-boundp -syn keyword lispFunc char-not-greaterp logical-pathname-translations slot-exists-p -syn keyword lispFunc char-not-lessp logior slot-makunbound -syn keyword lispFunc char-super-bit lognand slot-missing -syn keyword lispFunc char-upcase lognor slot-unbound -syn keyword lispFunc char/= lognot slot-value -syn keyword lispFunc char< logorc1 software-type -syn keyword lispFunc char<= logorc2 software-version -syn keyword lispFunc char= logtest some -syn keyword lispFunc char> logxor sort -syn keyword lispFunc char>= long-float space -syn keyword lispFunc character long-float-epsilon special -syn keyword lispFunc characterp long-float-negative-epsilon special-form-p -syn keyword lispFunc check-type long-site-name special-operator-p -syn keyword lispFunc cis loop speed -syn keyword lispFunc class loop-finish sqrt -syn keyword lispFunc class-name lower-case-p stable-sort -syn keyword lispFunc class-of machine-instance standard -syn keyword lispFunc clear-input machine-type standard-char -syn keyword lispFunc clear-output machine-version standard-char-p -syn keyword lispFunc close macro-function standard-class -syn keyword lispFunc clrhash macroexpand standard-generic-function -syn keyword lispFunc code-char macroexpand-1 standard-method -syn keyword lispFunc coerce macroexpand-l standard-object -syn keyword lispFunc commonp macrolet step -syn keyword lispFunc compilation-speed make-array storage-condition -syn keyword lispFunc compile make-array store-value -syn keyword lispFunc compile-file make-broadcast-stream stream -syn keyword lispFunc compile-file-pathname make-char stream-element-type -syn keyword lispFunc compiled-function make-concatenated-stream stream-error -syn keyword lispFunc compiled-function-p make-condition stream-error-stream -syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format -syn keyword lispFunc compiler-macro make-echo-stream streamp -syn keyword lispFunc compiler-macro-function make-hash-table streamup -syn keyword lispFunc complement make-instance string -syn keyword lispFunc complex make-instances-obsolete string-capitalize -syn keyword lispFunc complexp make-list string-char -syn keyword lispFunc compute-applicable-methods make-load-form string-char-p -syn keyword lispFunc compute-restarts make-load-form-saving-slots string-downcase -syn keyword lispFunc concatenate make-method string-equal -syn keyword lispFunc concatenated-stream make-package string-greaterp -syn keyword lispFunc concatenated-stream-streams make-pathname string-left-trim -syn keyword lispFunc cond make-random-state string-lessp -syn keyword lispFunc condition make-sequence string-not-equal -syn keyword lispFunc conjugate make-string string-not-greaterp -syn keyword lispFunc cons make-string-input-stream string-not-lessp -syn keyword lispFunc consp make-string-output-stream string-right-strim -syn keyword lispFunc constantly make-symbol string-right-trim -syn keyword lispFunc constantp make-synonym-stream string-stream -syn keyword lispFunc continue make-two-way-stream string-trim -syn keyword lispFunc control-error makunbound string-upcase -syn keyword lispFunc copy-alist map string/= -syn keyword lispFunc copy-list map-into string< -syn keyword lispFunc copy-pprint-dispatch mapc string<= -syn keyword lispFunc copy-readtable mapcan string= -syn keyword lispFunc copy-seq mapcar string> -syn keyword lispFunc copy-structure mapcon string>= -syn keyword lispFunc copy-symbol maphash stringp -syn keyword lispFunc copy-tree mapl structure -syn keyword lispFunc cos maplist structure-class -syn keyword lispFunc cosh mask-field structure-object -syn keyword lispFunc count max style-warning -syn keyword lispFunc count-if member sublim -syn keyword lispFunc count-if-not member-if sublis -syn keyword lispFunc ctypecase member-if-not subseq -syn keyword lispFunc debug merge subsetp -syn keyword lispFunc decf merge-pathname subst -syn keyword lispFunc declaim merge-pathnames subst-if -syn keyword lispFunc declaration method subst-if-not -syn keyword lispFunc declare method-combination substitute -syn keyword lispFunc decode-float method-combination-error substitute-if -syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not -syn keyword lispFunc defclass min subtypep -syn keyword lispFunc defconstant minusp svref -syn keyword lispFunc defgeneric mismatch sxhash -syn keyword lispFunc define-compiler-macro mod symbol -syn keyword lispFunc define-condition most-negative-double-float symbol-function -syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet -syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name -syn keyword lispFunc define-setf-expander most-negative-short-float symbol-package -syn keyword lispFunc define-setf-method most-negative-single-float symbol-plist -syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-value -syn keyword lispFunc defmacro most-positive-fixnum symbolp -syn keyword lispFunc defmethod most-positive-long-float synonym-stream -syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol -syn keyword lispFunc defparameter most-positive-single-float sys -syn keyword lispFunc defsetf muffle-warning system -syn keyword lispFunc defstruct multiple-value-bind t -syn keyword lispFunc deftype multiple-value-call tagbody -syn keyword lispFunc defun multiple-value-list tailp -syn keyword lispFunc defvar multiple-value-prog1 tan -syn keyword lispFunc delete multiple-value-seteq tanh -syn keyword lispFunc delete-duplicates multiple-value-setq tenth -syn keyword lispFunc delete-file multiple-values-limit terpri -syn keyword lispFunc delete-if name-char the -syn keyword lispFunc delete-if-not namestring third -syn keyword lispFunc delete-package nbutlast throw -syn keyword lispFunc denominator nconc time -syn keyword lispFunc deposit-field next-method-p trace -syn keyword lispFunc describe nil translate-logical-pathname -syn keyword lispFunc describe-object nintersection translate-pathname -syn keyword lispFunc destructuring-bind ninth tree-equal -syn keyword lispFunc digit-char no-applicable-method truename -syn keyword lispFunc digit-char-p no-next-method truncase -syn keyword lispFunc directory not truncate -syn keyword lispFunc directory-namestring notany two-way-stream -syn keyword lispFunc disassemble notevery two-way-stream-input-stream -syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream -syn keyword lispFunc do nreconc type -syn keyword lispFunc do* nreverse type-error -syn keyword lispFunc do-all-symbols nset-difference type-error-datum -syn keyword lispFunc do-exeternal-symbols nset-exclusive-or type-error-expected-type -syn keyword lispFunc do-external-symbols nstring type-of -syn keyword lispFunc do-symbols nstring-capitalize typecase -syn keyword lispFunc documentation nstring-downcase typep -syn keyword lispFunc dolist nstring-upcase unbound-slot -syn keyword lispFunc dotimes nsublis unbound-slot-instance -syn keyword lispFunc double-float nsubst unbound-variable -syn keyword lispFunc double-float-epsilon nsubst-if undefined-function -syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport -syn keyword lispFunc dpb nsubstitute unintern -syn keyword lispFunc dribble nsubstitute-if union -syn keyword lispFunc dynamic-extent nsubstitute-if-not unless -syn keyword lispFunc ecase nth unread -syn keyword lispFunc echo-stream nth-value unread-char -syn keyword lispFunc echo-stream-input-stream nthcdr unsigned-byte -syn keyword lispFunc echo-stream-output-stream null untrace -syn keyword lispFunc ed number unuse-package -syn keyword lispFunc eighth numberp unwind-protect -syn keyword lispFunc elt numerator update-instance-for-different-class -syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class -syn keyword lispFunc end-of-file oddp upgraded-array-element-type -syn keyword lispFunc endp open upgraded-complex-part-type -syn keyword lispFunc enough-namestring open-stream-p upper-case-p -syn keyword lispFunc ensure-directories-exist optimize use-package -syn keyword lispFunc ensure-generic-function or use-value -syn keyword lispFunc eq otherwise user -syn keyword lispFunc eql output-stream-p user-homedir-pathname -syn keyword lispFunc equal package values -syn keyword lispFunc equalp package-error values-list -syn keyword lispFunc error package-error-package vector -syn keyword lispFunc etypecase package-name vector-pop -syn keyword lispFunc eval package-nicknames vector-push -syn keyword lispFunc eval-when package-shadowing-symbols vector-push-extend -syn keyword lispFunc evalhook package-use-list vectorp -syn keyword lispFunc evenp package-used-by-list warn -syn keyword lispFunc every packagep warning -syn keyword lispFunc exp pairlis when -syn keyword lispFunc export parse-error wild-pathname-p -syn keyword lispFunc expt parse-integer with-accessors -syn keyword lispFunc extended-char parse-namestring with-compilation-unit -syn keyword lispFunc fboundp pathname with-condition-restarts -syn keyword lispFunc fceiling pathname-device with-hash-table-iterator -syn keyword lispFunc fdefinition pathname-directory with-input-from-string -syn keyword lispFunc ffloor pathname-host with-open-file -syn keyword lispFunc fifth pathname-match-p with-open-stream -syn keyword lispFunc file-author pathname-name with-output-to-string -syn keyword lispFunc file-error pathname-type with-package-iterator -syn keyword lispFunc file-error-pathname pathname-version with-simple-restart -syn keyword lispFunc file-length pathnamep with-slots -syn keyword lispFunc file-namestring peek-char with-standard-io-syntax -syn keyword lispFunc file-position phase write -syn keyword lispFunc file-stream pi write-byte -syn keyword lispFunc file-string-length plusp write-char -syn keyword lispFunc file-write-date pop write-line -syn keyword lispFunc fill position write-sequence -syn keyword lispFunc fill-pointer position-if write-string -syn keyword lispFunc find position-if-not write-to-string -syn keyword lispFunc find-all-symbols pprint y-or-n-p -syn keyword lispFunc find-class pprint-dispatch yes-or-no-p -syn keyword lispFunc find-if pprint-exit-if-list-exhausted zerop -syn keyword lispFunc find-if-not pprint-fill - -syn match lispFunc "\" - -" --------------------------------------------------------------------- -" Lisp Keywords (modifiers): {{{1 -syn keyword lispKey :abort :from-end :overwrite -syn keyword lispKey :adjustable :gensym :predicate -syn keyword lispKey :append :host :preserve-whitespace -syn keyword lispKey :array :if-does-not-exist :pretty -syn keyword lispKey :base :if-exists :print -syn keyword lispKey :case :include :print-function -syn keyword lispKey :circle :index :probe -syn keyword lispKey :conc-name :inherited :radix -syn keyword lispKey :constructor :initial-contents :read-only -syn keyword lispKey :copier :initial-element :rehash-size -syn keyword lispKey :count :initial-offset :rehash-threshold -syn keyword lispKey :create :initial-value :rename -syn keyword lispKey :default :input :rename-and-delete -syn keyword lispKey :defaults :internal :size -syn keyword lispKey :device :io :start -syn keyword lispKey :direction :junk-allowed :start1 -syn keyword lispKey :directory :key :start2 -syn keyword lispKey :displaced-index-offset :length :stream -syn keyword lispKey :displaced-to :level :supersede -syn keyword lispKey :element-type :name :test -syn keyword lispKey :end :named :test-not -syn keyword lispKey :end1 :new-version :type -syn keyword lispKey :end2 :nicknames :use -syn keyword lispKey :error :output :verbose -syn keyword lispKey :escape :output-file :version -syn keyword lispKey :external - -" --------------------------------------------------------------------- -" Standard Lisp Variables: {{{1 -syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch* -syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch* -syn keyword lispVar *break-on-signals* *load-truename* *print-pretty* -syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix* -syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably* -syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin* -syn keyword lispVar *compile-file-truename* *package* *print-right-margin* -syn keyword lispVar *compile-file-truename* *print-array* *query-io* -syn keyword lispVar *compile-print* *print-base* *random-state* -syn keyword lispVar *compile-verbose* *print-case* *read-base* -syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format* -syn keyword lispVar *debug-io* *print-escape* *read-eval* -syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress* -syn keyword lispVar *default-pathname-defaults* *print-length* *readtable* -syn keyword lispVar *error-output* *print-level* *standard-input* -syn keyword lispVar *evalhook* *print-lines* *standard-output* -syn keyword lispVar *features* *print-miser-width* *terminal-io* -syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output* - -" --------------------------------------------------------------------- -" Strings: {{{1 -syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell -if exists("g:lisp_instring") - syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString - syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained -endif - -" --------------------------------------------------------------------- -" Shared with Xlisp, Declarations, Macros, Functions: {{{1 -syn keyword lispDecl defmacro do-all-symbols labels -syn keyword lispDecl defsetf do-external-symbols let -syn keyword lispDecl deftype do-symbols locally -syn keyword lispDecl defun dotimes macrolet -syn keyword lispDecl do* flet multiple-value-bind - -" --------------------------------------------------------------------- -" Numbers: supporting integers and floating point numbers {{{1 -syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\=" - -syn match lispSpecial "\*\w[a-z_0-9-]*\*" -syn match lispSpecial !#|[^()'`,"; \t]\+|#! -syn match lispSpecial !#x\x\+! -syn match lispSpecial !#o\o\+! -syn match lispSpecial !#b[01]\+! -syn match lispSpecial !#\\[ -}\~]! -syn match lispSpecial !#[':][^()'`,"; \t]\+! -syn match lispSpecial !#([^()'`,"; \t]\+)! -syn match lispSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)! - -syn match lispConcat "\s\.\s" -syn match lispParenError ")" - -" --------------------------------------------------------------------- -" Comments: {{{1 -syn cluster lispCommentGroup contains=lispTodo,@Spell -syn match lispComment ";.*$" contains=@lispCommentGroup -syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup -syn keyword lispTodo contained combak combak: todo todo: - -" --------------------------------------------------------------------- -" Synchronization: {{{1 -syn sync lines=100 - -" --------------------------------------------------------------------- -" Define Highlighting: {{{1 -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 - command -nargs=+ HiLink hi def link - - HiLink lispCommentRegion lispComment - HiLink lispAtomNmbr lispNumber - HiLink lispAtomMark lispMark - HiLink lispInStringString lispString - - HiLink lispAtom Identifier - HiLink lispAtomBarSymbol Special - HiLink lispBarSymbol Special - HiLink lispComment Comment - HiLink lispConcat Statement - HiLink lispDecl Statement - HiLink lispFunc Statement - HiLink lispKey Type - HiLink lispMark Delimiter - HiLink lispNumber Number - HiLink lispParenError Error - HiLink lispSpecial Type - HiLink lispString String - HiLink lispTodo Todo - HiLink lispVar Statement - - if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 - if &bg == "dark" - hi def hlLevel0 ctermfg=red guifg=red1 - hi def hlLevel1 ctermfg=yellow guifg=orange1 - hi def hlLevel2 ctermfg=green guifg=yellow1 - hi def hlLevel3 ctermfg=cyan guifg=greenyellow - hi def hlLevel4 ctermfg=magenta guifg=green1 - hi def hlLevel5 ctermfg=red guifg=springgreen1 - hi def hlLevel6 ctermfg=yellow guifg=cyan1 - hi def hlLevel7 ctermfg=green guifg=slateblue1 - hi def hlLevel8 ctermfg=cyan guifg=magenta1 - hi def hlLevel9 ctermfg=magenta guifg=purple1 - else - hi def hlLevel0 ctermfg=red guifg=red3 - hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 - hi def hlLevel2 ctermfg=darkgreen guifg=orange2 - hi def hlLevel3 ctermfg=blue guifg=yellow3 - hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 - hi def hlLevel5 ctermfg=red guifg=green4 - hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 - hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 - hi def hlLevel8 ctermfg=blue guifg=darkslateblue - hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet - endif - endif - - delcommand HiLink -endif - -let b:current_syntax = "lisp" - -" --------------------------------------------------------------------- -" vim: ts=8 nowrap fdm=marker +" Vim syntax file +" Language: Lisp +" Maintainer: Dr. Charles E. Campbell, Jr. +" Last Change: Oct 19, 2007 +" Version: 20 +" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax +" +" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols +" taken from the HyperSpec +" Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim + +" --------------------------------------------------------------------- +" Load Once: {{{1 +" For vim-version 5.x: Clear all syntax items +" For vim-version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if version >= 600 + setlocal iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ +else + set iskeyword=38,42,43,45,47-58,60-62,64-90,97-122,_ +endif + +if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp") + set ignorecase +endif + +" --------------------------------------------------------------------- +" Clusters: {{{1 +syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite +syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite +if exists("g:lisp_instring") + syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString +else + syn cluster lispListCluster contains=@lispBaseListCluster,lispString +endif + +syn case ignore + +" --------------------------------------------------------------------- +" Lists: {{{1 +syn match lispSymbol contained ![^()'`,"; \t]\+! +syn match lispBarSymbol contained !|..\{-}|! +if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 + syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 + syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 + syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 + syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 + syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 + syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 + syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 + syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 + syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 + syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0 +else + syn region lispList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@lispListCluster + syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster +endif + +" --------------------------------------------------------------------- +" Atoms: {{{1 +syn match lispAtomMark "'" +syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList +syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark +syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark +syn region lispAtom start=+'"+ skip=+\\"+ end=+"+ +syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispSpecial +syn match lispAtomNmbr contained "\<\d\+" +syn match lispLeadWhite contained "^\s\+" + +" --------------------------------------------------------------------- +" Standard Lisp Functions and Macros: {{{1 +syn keyword lispFunc * find-method pprint-indent +syn keyword lispFunc ** find-package pprint-linear +syn keyword lispFunc *** find-restart pprint-logical-block +syn keyword lispFunc + find-symbol pprint-newline +syn keyword lispFunc ++ finish-output pprint-pop +syn keyword lispFunc +++ first pprint-tab +syn keyword lispFunc - fixnum pprint-tabular +syn keyword lispFunc / flet prin1 +syn keyword lispFunc // float prin1-to-string +syn keyword lispFunc /// float-digits princ +syn keyword lispFunc /= float-precision princ-to-string +syn keyword lispFunc 1+ float-radix print +syn keyword lispFunc 1- float-sign print-not-readable +syn keyword lispFunc < floating-point-inexact print-not-readable-object +syn keyword lispFunc <= floating-point-invalid-operation print-object +syn keyword lispFunc = floating-point-overflow print-unreadable-object +syn keyword lispFunc > floating-point-underflow probe-file +syn keyword lispFunc >= floatp proclaim +syn keyword lispFunc abort floor prog +syn keyword lispFunc abs fmakunbound prog* +syn keyword lispFunc access force-output prog1 +syn keyword lispFunc acons format prog2 +syn keyword lispFunc acos formatter progn +syn keyword lispFunc acosh fourth program-error +syn keyword lispFunc add-method fresh-line progv +syn keyword lispFunc adjoin fround provide +syn keyword lispFunc adjust-array ftruncate psetf +syn keyword lispFunc adjustable-array-p ftype psetq +syn keyword lispFunc allocate-instance funcall push +syn keyword lispFunc alpha-char-p function pushnew +syn keyword lispFunc alphanumericp function-keywords putprop +syn keyword lispFunc and function-lambda-expression quote +syn keyword lispFunc append functionp random +syn keyword lispFunc apply gbitp random-state +syn keyword lispFunc applyhook gcd random-state-p +syn keyword lispFunc apropos generic-function rassoc +syn keyword lispFunc apropos-list gensym rassoc-if +syn keyword lispFunc aref gentemp rassoc-if-not +syn keyword lispFunc arithmetic-error get ratio +syn keyword lispFunc arithmetic-error-operands get-decoded-time rational +syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize +syn keyword lispFunc array get-internal-real-time rationalp +syn keyword lispFunc array-dimension get-internal-run-time read +syn keyword lispFunc array-dimension-limit get-macro-character read-byte +syn keyword lispFunc array-dimensions get-output-stream-string read-char +syn keyword lispFunc array-displacement get-properties read-char-no-hang +syn keyword lispFunc array-element-type get-setf-expansion read-delimited-list +syn keyword lispFunc array-has-fill-pointer-p get-setf-method read-eval-print +syn keyword lispFunc array-in-bounds-p get-universal-time read-from-string +syn keyword lispFunc array-rank getf read-line +syn keyword lispFunc array-rank-limit gethash read-preserving-whitespace +syn keyword lispFunc array-row-major-index go read-sequence +syn keyword lispFunc array-total-size graphic-char-p reader-error +syn keyword lispFunc array-total-size-limit handler-bind readtable +syn keyword lispFunc arrayp handler-case readtable-case +syn keyword lispFunc ash hash-table readtablep +syn keyword lispFunc asin hash-table-count real +syn keyword lispFunc asinh hash-table-p realp +syn keyword lispFunc assert hash-table-rehash-size realpart +syn keyword lispFunc assoc hash-table-rehash-threshold reduce +syn keyword lispFunc assoc-if hash-table-size reinitialize-instance +syn keyword lispFunc assoc-if-not hash-table-test rem +syn keyword lispFunc atan host-namestring remf +syn keyword lispFunc atanh identity remhash +syn keyword lispFunc atom if remove +syn keyword lispFunc base-char if-exists remove-duplicates +syn keyword lispFunc base-string ignorable remove-if +syn keyword lispFunc bignum ignore remove-if-not +syn keyword lispFunc bit ignore-errors remove-method +syn keyword lispFunc bit-and imagpart remprop +syn keyword lispFunc bit-andc1 import rename-file +syn keyword lispFunc bit-andc2 in-package rename-package +syn keyword lispFunc bit-eqv in-package replace +syn keyword lispFunc bit-ior incf require +syn keyword lispFunc bit-nand initialize-instance rest +syn keyword lispFunc bit-nor inline restart +syn keyword lispFunc bit-not input-stream-p restart-bind +syn keyword lispFunc bit-orc1 inspect restart-case +syn keyword lispFunc bit-orc2 int-char restart-name +syn keyword lispFunc bit-vector integer return +syn keyword lispFunc bit-vector-p integer-decode-float return-from +syn keyword lispFunc bit-xor integer-length revappend +syn keyword lispFunc block integerp reverse +syn keyword lispFunc boole interactive-stream-p room +syn keyword lispFunc boole-1 intern rotatef +syn keyword lispFunc boole-2 internal-time-units-per-second round +syn keyword lispFunc boole-and intersection row-major-aref +syn keyword lispFunc boole-andc1 invalid-method-error rplaca +syn keyword lispFunc boole-andc2 invoke-debugger rplacd +syn keyword lispFunc boole-c1 invoke-restart safety +syn keyword lispFunc boole-c2 invoke-restart-interactively satisfies +syn keyword lispFunc boole-clr isqrt sbit +syn keyword lispFunc boole-eqv keyword scale-float +syn keyword lispFunc boole-ior keywordp schar +syn keyword lispFunc boole-nand labels search +syn keyword lispFunc boole-nor lambda second +syn keyword lispFunc boole-orc1 lambda-list-keywords sequence +syn keyword lispFunc boole-orc2 lambda-parameters-limit serious-condition +syn keyword lispFunc boole-set last set +syn keyword lispFunc boole-xor lcm set-char-bit +syn keyword lispFunc boolean ldb set-difference +syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character +syn keyword lispFunc boundp ldiff set-exclusive-or +syn keyword lispFunc break least-negative-double-float set-macro-character +syn keyword lispFunc broadcast-stream least-negative-long-float set-pprint-dispatch +syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-syntax-from-char +syn keyword lispFunc built-in-class least-negative-normalized-long-float setf +syn keyword lispFunc butlast least-negative-normalized-short-float setq +syn keyword lispFunc byte least-negative-normalized-single-float seventh +syn keyword lispFunc byte-position least-negative-short-float shadow +syn keyword lispFunc byte-size least-negative-single-float shadowing-import +syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize +syn keyword lispFunc call-method least-positive-long-float shiftf +syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float +syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon +syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon +syn keyword lispFunc case least-positive-normalized-single-float short-site-name +syn keyword lispFunc catch least-positive-short-float signal +syn keyword lispFunc ccase least-positive-single-float signed-byte +syn keyword lispFunc cdr length signum +syn keyword lispFunc ceiling let simple-condition +syn keyword lispFunc cell-error let* simple-array +syn keyword lispFunc cell-error-name lisp simple-base-string +syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector +syn keyword lispFunc change-class lisp-implementation-version simple-bit-vector-p +syn keyword lispFunc char list simple-condition-format-arguments +syn keyword lispFunc char-bit list* simple-condition-format-control +syn keyword lispFunc char-bits list-all-packages simple-error +syn keyword lispFunc char-bits-limit list-length simple-string +syn keyword lispFunc char-code listen simple-string-p +syn keyword lispFunc char-code-limit listp simple-type-error +syn keyword lispFunc char-control-bit load simple-vector +syn keyword lispFunc char-downcase load-logical-pathname-translations simple-vector-p +syn keyword lispFunc char-equal load-time-value simple-warning +syn keyword lispFunc char-font locally sin +syn keyword lispFunc char-font-limit log single-flaot-epsilon +syn keyword lispFunc char-greaterp logand single-float +syn keyword lispFunc char-hyper-bit logandc1 single-float-epsilon +syn keyword lispFunc char-int logandc2 single-float-negative-epsilon +syn keyword lispFunc char-lessp logbitp sinh +syn keyword lispFunc char-meta-bit logcount sixth +syn keyword lispFunc char-name logeqv sleep +syn keyword lispFunc char-not-equal logical-pathname slot-boundp +syn keyword lispFunc char-not-greaterp logical-pathname-translations slot-exists-p +syn keyword lispFunc char-not-lessp logior slot-makunbound +syn keyword lispFunc char-super-bit lognand slot-missing +syn keyword lispFunc char-upcase lognor slot-unbound +syn keyword lispFunc char/= lognot slot-value +syn keyword lispFunc char< logorc1 software-type +syn keyword lispFunc char<= logorc2 software-version +syn keyword lispFunc char= logtest some +syn keyword lispFunc char> logxor sort +syn keyword lispFunc char>= long-float space +syn keyword lispFunc character long-float-epsilon special +syn keyword lispFunc characterp long-float-negative-epsilon special-form-p +syn keyword lispFunc check-type long-site-name special-operator-p +syn keyword lispFunc cis loop speed +syn keyword lispFunc class loop-finish sqrt +syn keyword lispFunc class-name lower-case-p stable-sort +syn keyword lispFunc class-of machine-instance standard +syn keyword lispFunc clear-input machine-type standard-char +syn keyword lispFunc clear-output machine-version standard-char-p +syn keyword lispFunc close macro-function standard-class +syn keyword lispFunc clrhash macroexpand standard-generic-function +syn keyword lispFunc code-char macroexpand-1 standard-method +syn keyword lispFunc coerce macroexpand-l standard-object +syn keyword lispFunc commonp macrolet step +syn keyword lispFunc compilation-speed make-array storage-condition +syn keyword lispFunc compile make-array store-value +syn keyword lispFunc compile-file make-broadcast-stream stream +syn keyword lispFunc compile-file-pathname make-char stream-element-type +syn keyword lispFunc compiled-function make-concatenated-stream stream-error +syn keyword lispFunc compiled-function-p make-condition stream-error-stream +syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format +syn keyword lispFunc compiler-macro make-echo-stream streamp +syn keyword lispFunc compiler-macro-function make-hash-table streamup +syn keyword lispFunc complement make-instance string +syn keyword lispFunc complex make-instances-obsolete string-capitalize +syn keyword lispFunc complexp make-list string-char +syn keyword lispFunc compute-applicable-methods make-load-form string-char-p +syn keyword lispFunc compute-restarts make-load-form-saving-slots string-downcase +syn keyword lispFunc concatenate make-method string-equal +syn keyword lispFunc concatenated-stream make-package string-greaterp +syn keyword lispFunc concatenated-stream-streams make-pathname string-left-trim +syn keyword lispFunc cond make-random-state string-lessp +syn keyword lispFunc condition make-sequence string-not-equal +syn keyword lispFunc conjugate make-string string-not-greaterp +syn keyword lispFunc cons make-string-input-stream string-not-lessp +syn keyword lispFunc consp make-string-output-stream string-right-strim +syn keyword lispFunc constantly make-symbol string-right-trim +syn keyword lispFunc constantp make-synonym-stream string-stream +syn keyword lispFunc continue make-two-way-stream string-trim +syn keyword lispFunc control-error makunbound string-upcase +syn keyword lispFunc copy-alist map string/= +syn keyword lispFunc copy-list map-into string< +syn keyword lispFunc copy-pprint-dispatch mapc string<= +syn keyword lispFunc copy-readtable mapcan string= +syn keyword lispFunc copy-seq mapcar string> +syn keyword lispFunc copy-structure mapcon string>= +syn keyword lispFunc copy-symbol maphash stringp +syn keyword lispFunc copy-tree mapl structure +syn keyword lispFunc cos maplist structure-class +syn keyword lispFunc cosh mask-field structure-object +syn keyword lispFunc count max style-warning +syn keyword lispFunc count-if member sublim +syn keyword lispFunc count-if-not member-if sublis +syn keyword lispFunc ctypecase member-if-not subseq +syn keyword lispFunc debug merge subsetp +syn keyword lispFunc decf merge-pathname subst +syn keyword lispFunc declaim merge-pathnames subst-if +syn keyword lispFunc declaration method subst-if-not +syn keyword lispFunc declare method-combination substitute +syn keyword lispFunc decode-float method-combination-error substitute-if +syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not +syn keyword lispFunc defclass min subtypep +syn keyword lispFunc defconstant minusp svref +syn keyword lispFunc defgeneric mismatch sxhash +syn keyword lispFunc define-compiler-macro mod symbol +syn keyword lispFunc define-condition most-negative-double-float symbol-function +syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet +syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name +syn keyword lispFunc define-setf-expander most-negative-short-float symbol-package +syn keyword lispFunc define-setf-method most-negative-single-float symbol-plist +syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-value +syn keyword lispFunc defmacro most-positive-fixnum symbolp +syn keyword lispFunc defmethod most-positive-long-float synonym-stream +syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol +syn keyword lispFunc defparameter most-positive-single-float sys +syn keyword lispFunc defsetf muffle-warning system +syn keyword lispFunc defstruct multiple-value-bind t +syn keyword lispFunc deftype multiple-value-call tagbody +syn keyword lispFunc defun multiple-value-list tailp +syn keyword lispFunc defvar multiple-value-prog1 tan +syn keyword lispFunc delete multiple-value-seteq tanh +syn keyword lispFunc delete-duplicates multiple-value-setq tenth +syn keyword lispFunc delete-file multiple-values-limit terpri +syn keyword lispFunc delete-if name-char the +syn keyword lispFunc delete-if-not namestring third +syn keyword lispFunc delete-package nbutlast throw +syn keyword lispFunc denominator nconc time +syn keyword lispFunc deposit-field next-method-p trace +syn keyword lispFunc describe nil translate-logical-pathname +syn keyword lispFunc describe-object nintersection translate-pathname +syn keyword lispFunc destructuring-bind ninth tree-equal +syn keyword lispFunc digit-char no-applicable-method truename +syn keyword lispFunc digit-char-p no-next-method truncase +syn keyword lispFunc directory not truncate +syn keyword lispFunc directory-namestring notany two-way-stream +syn keyword lispFunc disassemble notevery two-way-stream-input-stream +syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream +syn keyword lispFunc do nreconc type +syn keyword lispFunc do* nreverse type-error +syn keyword lispFunc do-all-symbols nset-difference type-error-datum +syn keyword lispFunc do-exeternal-symbols nset-exclusive-or type-error-expected-type +syn keyword lispFunc do-external-symbols nstring type-of +syn keyword lispFunc do-symbols nstring-capitalize typecase +syn keyword lispFunc documentation nstring-downcase typep +syn keyword lispFunc dolist nstring-upcase unbound-slot +syn keyword lispFunc dotimes nsublis unbound-slot-instance +syn keyword lispFunc double-float nsubst unbound-variable +syn keyword lispFunc double-float-epsilon nsubst-if undefined-function +syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport +syn keyword lispFunc dpb nsubstitute unintern +syn keyword lispFunc dribble nsubstitute-if union +syn keyword lispFunc dynamic-extent nsubstitute-if-not unless +syn keyword lispFunc ecase nth unread +syn keyword lispFunc echo-stream nth-value unread-char +syn keyword lispFunc echo-stream-input-stream nthcdr unsigned-byte +syn keyword lispFunc echo-stream-output-stream null untrace +syn keyword lispFunc ed number unuse-package +syn keyword lispFunc eighth numberp unwind-protect +syn keyword lispFunc elt numerator update-instance-for-different-class +syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class +syn keyword lispFunc end-of-file oddp upgraded-array-element-type +syn keyword lispFunc endp open upgraded-complex-part-type +syn keyword lispFunc enough-namestring open-stream-p upper-case-p +syn keyword lispFunc ensure-directories-exist optimize use-package +syn keyword lispFunc ensure-generic-function or use-value +syn keyword lispFunc eq otherwise user +syn keyword lispFunc eql output-stream-p user-homedir-pathname +syn keyword lispFunc equal package values +syn keyword lispFunc equalp package-error values-list +syn keyword lispFunc error package-error-package vector +syn keyword lispFunc etypecase package-name vector-pop +syn keyword lispFunc eval package-nicknames vector-push +syn keyword lispFunc eval-when package-shadowing-symbols vector-push-extend +syn keyword lispFunc evalhook package-use-list vectorp +syn keyword lispFunc evenp package-used-by-list warn +syn keyword lispFunc every packagep warning +syn keyword lispFunc exp pairlis when +syn keyword lispFunc export parse-error wild-pathname-p +syn keyword lispFunc expt parse-integer with-accessors +syn keyword lispFunc extended-char parse-namestring with-compilation-unit +syn keyword lispFunc fboundp pathname with-condition-restarts +syn keyword lispFunc fceiling pathname-device with-hash-table-iterator +syn keyword lispFunc fdefinition pathname-directory with-input-from-string +syn keyword lispFunc ffloor pathname-host with-open-file +syn keyword lispFunc fifth pathname-match-p with-open-stream +syn keyword lispFunc file-author pathname-name with-output-to-string +syn keyword lispFunc file-error pathname-type with-package-iterator +syn keyword lispFunc file-error-pathname pathname-version with-simple-restart +syn keyword lispFunc file-length pathnamep with-slots +syn keyword lispFunc file-namestring peek-char with-standard-io-syntax +syn keyword lispFunc file-position phase write +syn keyword lispFunc file-stream pi write-byte +syn keyword lispFunc file-string-length plusp write-char +syn keyword lispFunc file-write-date pop write-line +syn keyword lispFunc fill position write-sequence +syn keyword lispFunc fill-pointer position-if write-string +syn keyword lispFunc find position-if-not write-to-string +syn keyword lispFunc find-all-symbols pprint y-or-n-p +syn keyword lispFunc find-class pprint-dispatch yes-or-no-p +syn keyword lispFunc find-if pprint-exit-if-list-exhausted zerop +syn keyword lispFunc find-if-not pprint-fill + +syn match lispFunc "\" +if exists("g:lispsyntax_clisp") + " CLISP FFI: + syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>" + syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>" + syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>" + syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>" + syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>" + syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>" + syn match lispFunc "\<\(ffi:\)\?c-lines\>" + syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>" + syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>" + syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>" + syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>" + syn match lispFunc "\<\(ffi:\)\?typeof\>" + syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>" +" CLISP Macros, functions et al: + syn match lispFunc "\<\(ext:\)\?with-collect\>" + syn match lispFunc "\<\(ext:\)\?letf\*\?\>" + syn match lispFunc "\<\(ext:\)\?finalize\>\>" + syn match lispFunc "\<\(ext:\)\?memoized\>" + syn match lispFunc "\<\(ext:\)\?getenv\>" + syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>" + syn match lispFunc "\<\(ext:\)\?ethe\>" + syn match lispFunc "\<\(ext:\)\?with-gensyms\>" + syn match lispFunc "\<\(ext:\)\?open-http\>" + syn match lispFunc "\<\(ext:\)\?string-concat\>" + syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>" + syn match lispFunc "\<\(ext:\)\?with-html-output\>" + syn match lispFunc "\<\(ext:\)\?expand-form\>" + syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>" + syn match lispFunc "\<\(ext:\)\?re-export\>" + syn match lispFunc "\<\(ext:\)\?saveinitmem\>" + syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>" + syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>" + syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>" + syn match lispFunc "\<\(custom:\)\?\*ansi\*\>" +endif + +" --------------------------------------------------------------------- +" Lisp Keywords (modifiers): {{{1 +syn keyword lispKey :abort :from-end :overwrite +syn keyword lispKey :adjustable :gensym :predicate +syn keyword lispKey :append :host :preserve-whitespace +syn keyword lispKey :array :if-does-not-exist :pretty +syn keyword lispKey :base :if-exists :print +syn keyword lispKey :case :include :print-function +syn keyword lispKey :circle :index :probe +syn keyword lispKey :conc-name :inherited :radix +syn keyword lispKey :constructor :initial-contents :read-only +syn keyword lispKey :copier :initial-element :rehash-size +syn keyword lispKey :count :initial-offset :rehash-threshold +syn keyword lispKey :create :initial-value :rename +syn keyword lispKey :default :input :rename-and-delete +syn keyword lispKey :defaults :internal :size +syn keyword lispKey :device :io :start +syn keyword lispKey :direction :junk-allowed :start1 +syn keyword lispKey :directory :key :start2 +syn keyword lispKey :displaced-index-offset :length :stream +syn keyword lispKey :displaced-to :level :supersede +syn keyword lispKey :element-type :name :test +syn keyword lispKey :end :named :test-not +syn keyword lispKey :end1 :new-version :type +syn keyword lispKey :end2 :nicknames :use +syn keyword lispKey :error :output :verbose +syn keyword lispKey :escape :output-file :version +syn keyword lispKey :external +" defpackage arguments +syn keyword lispKey :documentation :shadowing-import-from :modern :export +syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern +" lambda list keywords +syn keyword lispKey &allow-other-keys &aux &body +syn keyword lispKey &environment &key &optional &rest &whole +" make-array argument +syn keyword lispKey :fill-pointer +" readtable-case values +syn keyword lispKey :upcase :downcase :preserve :invert +" eval-when situations +syn keyword lispKey :load-toplevel :compile-toplevel :execute +" ANSI Extended LOOP: +syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in +syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum +syn keyword lispKey :and :with :initially :append :into :count :end :repeat +syn keyword lispKey :always :never :thereis :from :to :upto :downto :below +syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys +syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom +if exists("g:lispsyntax_clisp") + " CLISP FFI: + syn keyword lispKey :arguments :return-type :library :full :malloc-free + syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c + syn keyword lispKey :language :built-in :typedef :external + syn keyword lispKey :fini :init-once :init-always +endif + +" --------------------------------------------------------------------- +" Standard Lisp Variables: {{{1 +syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch* +syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch* +syn keyword lispVar *break-on-signals* *load-truename* *print-pretty* +syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix* +syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably* +syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin* +syn keyword lispVar *compile-file-truename* *package* *print-right-margin* +syn keyword lispVar *compile-file-truename* *print-array* *query-io* +syn keyword lispVar *compile-print* *print-base* *random-state* +syn keyword lispVar *compile-verbose* *print-case* *read-base* +syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format* +syn keyword lispVar *debug-io* *print-escape* *read-eval* +syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress* +syn keyword lispVar *default-pathname-defaults* *print-length* *readtable* +syn keyword lispVar *error-output* *print-level* *standard-input* +syn keyword lispVar *evalhook* *print-lines* *standard-output* +syn keyword lispVar *features* *print-miser-width* *terminal-io* +syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output* + +" --------------------------------------------------------------------- +" Strings: {{{1 +syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell +if exists("g:lisp_instring") + syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString + syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained +endif + +" --------------------------------------------------------------------- +" Shared with Xlisp, Declarations, Macros, Functions: {{{1 +syn keyword lispDecl defmacro do-all-symbols labels +syn keyword lispDecl defsetf do-external-symbols let +syn keyword lispDecl deftype do-symbols locally +syn keyword lispDecl defun dotimes macrolet +syn keyword lispDecl do* flet multiple-value-bind +if exists("g:lispsyntax_clisp") + " CLISP FFI: + syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>" + syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>" + syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>" + syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>" + syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>" + syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>" + syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>" + syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>" + syn keyword lispDecl size_t off_t time_t handle +endif + +" --------------------------------------------------------------------- +" Numbers: supporting integers and floating point numbers {{{1 +syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\=" + +syn match lispSpecial "\*\w[a-z_0-9-]*\*" +syn match lispSpecial !#|[^()'`,"; \t]\+|#! +syn match lispSpecial !#x\x\+! +syn match lispSpecial !#o\o\+! +syn match lispSpecial !#b[01]\+! +syn match lispSpecial !#\\[ -}\~]! +syn match lispSpecial !#[':][^()'`,"; \t]\+! +syn match lispSpecial !#([^()'`,"; \t]\+)! +syn match lispSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)! +syn match lispSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>" + +syn match lispConcat "\s\.\s" +syn match lispParenError ")" + +" --------------------------------------------------------------------- +" Comments: {{{1 +syn cluster lispCommentGroup contains=lispTodo,@Spell +syn match lispComment ";.*$" contains=@lispCommentGroup +syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup +syn keyword lispTodo contained combak combak: todo todo: + +" --------------------------------------------------------------------- +" Synchronization: {{{1 +syn sync lines=100 + +" --------------------------------------------------------------------- +" Define Highlighting: {{{1 +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 + command -nargs=+ HiLink hi def link + + HiLink lispCommentRegion lispComment + HiLink lispAtomNmbr lispNumber + HiLink lispAtomMark lispMark + HiLink lispInStringString lispString + + HiLink lispAtom Identifier + HiLink lispAtomBarSymbol Special + HiLink lispBarSymbol Special + HiLink lispComment Comment + HiLink lispConcat Statement + HiLink lispDecl Statement + HiLink lispFunc Statement + HiLink lispKey Type + HiLink lispMark Delimiter + HiLink lispNumber Number + HiLink lispParenError Error + HiLink lispSpecial Type + HiLink lispString String + HiLink lispTodo Todo + HiLink lispVar Statement + + if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 + if &bg == "dark" + hi def hlLevel0 ctermfg=red guifg=red1 + hi def hlLevel1 ctermfg=yellow guifg=orange1 + hi def hlLevel2 ctermfg=green guifg=yellow1 + hi def hlLevel3 ctermfg=cyan guifg=greenyellow + hi def hlLevel4 ctermfg=magenta guifg=green1 + hi def hlLevel5 ctermfg=red guifg=springgreen1 + hi def hlLevel6 ctermfg=yellow guifg=cyan1 + hi def hlLevel7 ctermfg=green guifg=slateblue1 + hi def hlLevel8 ctermfg=cyan guifg=magenta1 + hi def hlLevel9 ctermfg=magenta guifg=purple1 + else + hi def hlLevel0 ctermfg=red guifg=red3 + hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 + hi def hlLevel2 ctermfg=darkgreen guifg=orange2 + hi def hlLevel3 ctermfg=blue guifg=yellow3 + hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 + hi def hlLevel5 ctermfg=red guifg=green4 + hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 + hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 + hi def hlLevel8 ctermfg=blue guifg=darkslateblue + hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet + endif + endif + + delcommand HiLink +endif + +let b:current_syntax = "lisp" + +" --------------------------------------------------------------------- +" vim: ts=8 nowrap fdm=marker diff --git a/runtime/syntax/lsl.vim b/runtime/syntax/lsl.vim new file mode 100644 index 00000000..3f248167 --- /dev/null +++ b/runtime/syntax/lsl.vim @@ -0,0 +1,272 @@ +" Vim syntax file +" Language: Linden Scripting Language +" Maintainer: Timo Frenay +" Last Change: 2008 Mar 29 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Initializations +syn case match + +" Keywords +syn keyword lslKeyword default do else for if jump return state while + +" Types +syn keyword lslType float integer key list quaternion rotation string vector + +" Labels +syn match lslLabel +@\h\w*+ display + +" Constants +syn keyword lslConstant +\ ACTIVE AGENT AGENT_ALWAYS_RUN AGENT_ATTACHMENTS AGENT_AWAY AGENT_BUSY +\ AGENT_CROUCHING AGENT_FLYING AGENT_IN_AIR AGENT_MOUSELOOK AGENT_ON_OBJECT +\ AGENT_SCRIPTED AGENT_SITTING AGENT_TYPING AGENT_WALKING ALL_SIDES ANIM_ON +\ ATTACH_BACK ATTACH_BELLY ATTACH_CHEST ATTACH_CHIN ATTACH_HEAD +\ ATTACH_HUD_BOTTOM ATTACH_HUD_BOTTOM_LEFT ATTACH_HUD_BOTTOM_RIGHT +\ ATTACH_HUD_CENTER_1 ATTACH_HUD_CENTER_2 ATTACH_HUD_TOP_CENTER +\ ATTACH_HUD_TOP_LEFT ATTACH_HUD_TOP_RIGHT ATTACH_LEAR ATTACH_LEYE ATTACH_LFOOT +\ ATTACH_LHAND ATTACH_LHIP ATTACH_LLARM ATTACH_LLLEG ATTACH_LPEC +\ ATTACH_LSHOULDER ATTACH_LUARM ATTACH_LULEG ATTACH_MOUTH ATTACH_NOSE +\ ATTACH_PELVIS ATTACH_REAR ATTACH_REYE ATTACH_RFOOT ATTACH_RHAND ATTACH_RHIP +\ ATTACH_RLARM ATTACH_RLLEG ATTACH_RPEC ATTACH_RSHOULDER ATTACH_RUARM +\ ATTACH_RULEG CAMERA_ACTIVE CAMERA_BEHINDNESS_ANGLE CAMERA_BEHINDNESS_LAG +\ CAMERA_DISTANCE CAMERA_FOCUS CAMERA_FOCUS_LAG CAMERA_FOCUS_LOCKED +\ CAMERA_FOCUS_OFFSET CAMERA_FOCUS_THRESHOLD CAMERA_PITCH CAMERA_POSITION +\ CAMERA_POSITION_LAG CAMERA_POSITION_LOCKED CAMERA_POSITION_THRESHOLD +\ CHANGED_ALLOWED_DROP CHANGED_COLOR CHANGED_INVENTORY CHANGED_LINK +\ CHANGED_OWNER CHANGED_REGION CHANGED_SCALE CHANGED_SHAPE CHANGED_TELEPORT +\ CHANGED_TEXTURE CLICK_ACTION_BUY CLICK_ACTION_NONE CLICK_ACTION_OPEN +\ CLICK_ACTION_OPEN_MEDIA CLICK_ACTION_PAY CLICK_ACTION_PLAY CLICK_ACTION_SIT +\ CLICK_ACTION_TOUCH CONTROL_BACK CONTROL_DOWN CONTROL_FWD CONTROL_LBUTTON +\ CONTROL_LEFT CONTROL_ML_LBUTTON CONTROL_RIGHT CONTROL_ROT_LEFT +\ CONTROL_ROT_RIGHT CONTROL_UP DATA_BORN DATA_NAME DATA_ONLINE DATA_PAYINFO +\ DATA_RATING DATA_SIM_POS DATA_SIM_RATING DATA_SIM_STATUS DEBUG_CHANNEL +\ DEG_TO_RAD EOF FALSE HTTP_BODY_MAXLENGTH HTTP_BODY_TRUNCATED HTTP_METHOD +\ HTTP_MIMETYPE HTTP_VERIFY_CERT INVENTORY_ALL INVENTORY_ANIMATION +\ INVENTORY_BODYPART INVENTORY_CLOTHING INVENTORY_GESTURE INVENTORY_LANDMARK +\ INVENTORY_NONE INVENTORY_NOTECARD INVENTORY_OBJECT INVENTORY_SCRIPT +\ INVENTORY_SOUND INVENTORY_TEXTURE LAND_LARGE_BRUSH LAND_LEVEL LAND_LOWER +\ LAND_MEDIUM_BRUSH LAND_NOISE LAND_RAISE LAND_REVERT LAND_SMALL_BRUSH +\ LAND_SMOOTH LINK_ALL_CHILDREN LINK_ALL_OTHERS LINK_ROOT LINK_SET LINK_THIS +\ LIST_STAT_GEOMETRIC_MEAN LIST_STAT_MAX LIST_STAT_MEAN LIST_STAT_MEDIAN +\ LIST_STAT_MIN LIST_STAT_NUM_COUNT LIST_STAT_RANGE LIST_STAT_STD_DEV +\ LIST_STAT_SUM LIST_STAT_SUM_SQUARES LOOP MASK_BASE MASK_EVERYONE MASK_GROUP +\ MASK_NEXT MASK_OWNER NULL_KEY OBJECT_CREATOR OBJECT_DESC OBJECT_GROUP +\ OBJECT_NAME OBJECT_OWNER OBJECT_POS OBJECT_ROT OBJECT_UNKNOWN_DETAIL +\ OBJECT_VELOCITY PARCEL_COUNT_GROUP PARCEL_COUNT_OTHER PARCEL_COUNT_OWNER +\ PARCEL_COUNT_SELECTED PARCEL_COUNT_TEMP PARCEL_COUNT_TOTAL PARCEL_DETAILS_AREA +\ PARCEL_DETAILS_DESC PARCEL_DETAILS_GROUP PARCEL_DETAILS_NAME +\ PARCEL_DETAILS_OWNER PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY +\ PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS PARCEL_FLAG_ALLOW_CREATE_OBJECTS +\ PARCEL_FLAG_ALLOW_DAMAGE PARCEL_FLAG_ALLOW_FLY +\ PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY PARCEL_FLAG_ALLOW_GROUP_SCRIPTS +\ PARCEL_FLAG_ALLOW_LANDMARK PARCEL_FLAG_ALLOW_SCRIPTS +\ PARCEL_FLAG_ALLOW_TERRAFORM PARCEL_FLAG_LOCAL_SOUND_ONLY +\ PARCEL_FLAG_RESTRICT_PUSHOBJECT PARCEL_FLAG_USE_ACCESS_GROUP +\ PARCEL_FLAG_USE_ACCESS_LIST PARCEL_FLAG_USE_BAN_LIST +\ PARCEL_FLAG_USE_LAND_PASS_LIST PARCEL_MEDIA_COMMAND_AGENT +\ PARCEL_MEDIA_COMMAND_AUTO_ALIGN PARCEL_MEDIA_COMMAND_DESC +\ PARCEL_MEDIA_COMMAND_LOOP PARCEL_MEDIA_COMMAND_LOOP_SET +\ PARCEL_MEDIA_COMMAND_PAUSE PARCEL_MEDIA_COMMAND_PLAY PARCEL_MEDIA_COMMAND_SIZE +\ PARCEL_MEDIA_COMMAND_STOP PARCEL_MEDIA_COMMAND_TEXTURE +\ PARCEL_MEDIA_COMMAND_TIME PARCEL_MEDIA_COMMAND_TYPE +\ PARCEL_MEDIA_COMMAND_UNLOAD PARCEL_MEDIA_COMMAND_URL PASSIVE +\ PAYMENT_INFO_ON_FILE PAYMENT_INFO_USED PAY_DEFAULT PAY_HIDE PERM_ALL PERM_COPY +\ PERM_MODIFY PERM_MOVE PERM_TRANSFER PERMISSION_ATTACH PERMISSION_CHANGE_LINKS +\ PERMISSION_CONTROL_CAMERA PERMISSION_DEBIT PERMISSION_TAKE_CONTROLS +\ PERMISSION_TRACK_CAMERA PERMISSION_TRIGGER_ANIMATION PI PI_BY_TWO PING_PONG +\ PRIM_BUMP_BARK PRIM_BUMP_BLOBS PRIM_BUMP_BRICKS PRIM_BUMP_BRIGHT +\ PRIM_BUMP_CHECKER PRIM_BUMP_CONCRETE PRIM_BUMP_DARK PRIM_BUMP_DISKS +\ PRIM_BUMP_GRAVEL PRIM_BUMP_LARGETILE PRIM_BUMP_NONE PRIM_BUMP_SHINY +\ PRIM_BUMP_SIDING PRIM_BUMP_STONE PRIM_BUMP_STUCCO PRIM_BUMP_SUCTION +\ PRIM_BUMP_TILE PRIM_BUMP_WEAVE PRIM_BUMP_WOOD PRIM_CAST_SHADOWS PRIM_COLOR +\ PRIM_FLEXIBLE PRIM_FULLBRIGHT PRIM_HOLE_CIRCLE PRIM_HOLE_DEFAULT +\ PRIM_HOLE_SQUARE PRIM_HOLE_TRIANGLE PRIM_MATERIAL PRIM_MATERIAL_FLESH +\ PRIM_MATERIAL_GLASS PRIM_MATERIAL_LIGHT PRIM_MATERIAL_METAL +\ PRIM_MATERIAL_PLASTIC PRIM_MATERIAL_RUBBER PRIM_MATERIAL_STONE +\ PRIM_MATERIAL_WOOD PRIM_PHANTOM PRIM_PHYSICS PRIM_POINT_LIGHT PRIM_POSITION +\ PRIM_ROTATION PRIM_SCULPT_TYPE_CYLINDER PRIM_SCULPT_TYPE_PLANE +\ PRIM_SCULPT_TYPE_SPHERE PRIM_SCULPT_TYPE_TORUS PRIM_SHINY_HIGH PRIM_SHINY_LOW +\ PRIM_SHINY_MEDIUM PRIM_SHINY_NONE PRIM_SIZE PRIM_TEMP_ON_REZ PRIM_TEXGEN +\ PRIM_TEXGEN_DEFAULT PRIM_TEXGEN_PLANAR PRIM_TEXTURE PRIM_TYPE PRIM_TYPE_BOX +\ PRIM_TYPE_BOX PRIM_TYPE_CYLINDER PRIM_TYPE_CYLINDER PRIM_TYPE_LEGACY +\ PRIM_TYPE_PRISM PRIM_TYPE_PRISM PRIM_TYPE_RING PRIM_TYPE_SCULPT +\ PRIM_TYPE_SPHERE PRIM_TYPE_SPHERE PRIM_TYPE_TORUS PRIM_TYPE_TORUS +\ PRIM_TYPE_TUBE PRIM_TYPE_TUBE PSYS_PART_BEAM_MASK PSYS_PART_BOUNCE_MASK +\ PSYS_PART_DEAD_MASK PSYS_PART_EMISSIVE_MASK PSYS_PART_END_ALPHA +\ PSYS_PART_END_COLOR PSYS_PART_END_SCALE PSYS_PART_FLAGS +\ PSYS_PART_FOLLOW_SRC_MASK PSYS_PART_FOLLOW_VELOCITY_MASK +\ PSYS_PART_INTERP_COLOR_MASK PSYS_PART_INTERP_SCALE_MASK PSYS_PART_MAX_AGE +\ PSYS_PART_RANDOM_ACCEL_MASK PSYS_PART_RANDOM_VEL_MASK PSYS_PART_START_ALPHA +\ PSYS_PART_START_COLOR PSYS_PART_START_SCALE PSYS_PART_TARGET_LINEAR_MASK +\ PSYS_PART_TARGET_POS_MASK PSYS_PART_TRAIL_MASK PSYS_PART_WIND_MASK +\ PSYS_SRC_ACCEL PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_END +\ PSYS_SRC_BURST_PART_COUNT PSYS_SRC_BURST_RADIUS PSYS_SRC_BURST_RATE +\ PSYS_SRC_BURST_SPEED_MAX PSYS_SRC_BURST_SPEED_MIN PSYS_SRC_INNERANGLE +\ PSYS_SRC_MAX_AGE PSYS_SRC_OMEGA PSYS_SRC_OUTERANGLE PSYS_SRC_PATTERN +\ PSYS_SRC_PATTERN_ANGLE PSYS_SRC_PATTERN_ANGLE_CONE +\ PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY PSYS_SRC_PATTERN_DROP +\ PSYS_SRC_PATTERN_EXPLODE PSYS_SRC_TARGET_KEY PSYS_SRC_TEXTURE PUBLIC_CHANNEL +\ RAD_TO_DEG REGION_FLAG_ALLOW_DAMAGE REGION_FLAG_ALLOW_DIRECT_TELEPORT +\ REGION_FLAG_BLOCK_FLY REGION_FLAG_BLOCK_TERRAFORM +\ REGION_FLAG_DISABLE_COLLISIONS REGION_FLAG_DISABLE_PHYSICS +\ REGION_FLAG_FIXED_SUN REGION_FLAG_RESTRICT_PUSHOBJECT REGION_FLAG_SANDBOX +\ REMOTE_DATA_CHANNEL REMOTE_DATA_REPLY REMOTE_DATA_REQUEST REVERSE ROTATE SCALE +\ SCRIPTED SMOOTH SQRT2 STATUS_BLOCK_GRAB STATUS_CAST_SHADOWS STATUS_DIE_AT_EDGE +\ STATUS_PHANTOM STATUS_PHYSICS STATUS_RETURN_AT_EDGE STATUS_ROTATE_X +\ STATUS_ROTATE_Y STATUS_ROTATE_Z STATUS_SANDBOX STRING_TRIM STRING_TRIM_HEAD +\ STRING_TRIM_TAIL TRUE TWO_PI TYPE_FLOAT TYPE_INTEGER TYPE_INVALID TYPE_KEY +\ TYPE_ROTATION TYPE_STRING TYPE_VECTOR VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY +\ VEHICLE_ANGULAR_DEFLECTION_TIMESCALE VEHICLE_ANGULAR_FRICTION_TIMESCALE +\ VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE VEHICLE_ANGULAR_MOTOR_DIRECTION +\ VEHICLE_ANGULAR_MOTOR_TIMESCALE VEHICLE_BANKING_EFFICIENCY VEHICLE_BANKING_MIX +\ VEHICLE_BANKING_TIMESCALE VEHICLE_BUOYANCY VEHICLE_FLAG_CAMERA_DECOUPLED +\ VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT VEHICLE_FLAG_HOVER_TERRAIN_ONLY +\ VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_HOVER_WATER_ONLY +\ VEHICLE_FLAG_LIMIT_MOTOR_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY +\ VEHICLE_FLAG_MOUSELOOK_BANK VEHICLE_FLAG_MOUSELOOK_STEER +\ VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_HOVER_EFFICIENCY VEHICLE_HOVER_HEIGHT +\ VEHICLE_HOVER_TIMESCALE VEHICLE_LINEAR_DEFLECTION_EFFICIENCY +\ VEHICLE_LINEAR_DEFLECTION_TIMESCALE VEHICLE_LINEAR_FRICTION_TIMESCALE +\ VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE VEHICLE_LINEAR_MOTOR_TIMESCALE +\ VEHICLE_LINEAR_MOTOR_DIRECTION VEHICLE_LINEAR_MOTOR_OFFSET +\ VEHICLE_REFERENCE_FRAME VEHICLE_TYPE_AIRPLANE VEHICLE_TYPE_BALLOON +\ VEHICLE_TYPE_BOAT VEHICLE_TYPE_CAR VEHICLE_TYPE_NONE VEHICLE_TYPE_SLED +\ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY VEHICLE_VERTICAL_ATTRACTION_TIMESCALE +\ ZERO_ROTATION ZERO_VECTOR + +" Events +syn keyword lslEvent +\ attach at_rot_target at_target changed collision collision_end collision_start +\ control dataserver email http_response land_collision land_collision_end +\ land_collision_start link_message listen money moving_end moving_start +\ not_at_rot_target no_sensor object_rez on_rez remote_data run_time_permissions +\ sensor state_entry state_exit timer touch touch_end touch_start not_at_target + +" Functions +syn keyword lslFunction +\ llAbs llAcos llAddToLandBanList llAddToLandPassList llAdjustSoundVolume +\ llAllowInventoryDrop llAngleBetween llApplyImpulse llApplyRotationalImpulse +\ llAsin llAtan2 llAttachToAvatar llAvatarOnSitTarget llAxes2Rot llAxisAngle2Rot +\ llBase64ToInteger llBase64ToString llBreakAllLinks llBreakLink llCSV2List +\ llCeil llClearCameraParams llCloseRemoteDataChannel llCloud llCollisionFilter +\ llCollisionSound llCollisionSprite llCos llCreateLink llDeleteSubList +\ llDeleteSubString llDetachFromAvatar llDetectedGrab llDetectedGroup +\ llDetectedKey llDetectedLinkNumber llDetectedName llDetectedOwner +\ llDetectedPos llDetectedRot llDetectedType llDetectedVel llDialog llDie +\ llDumpList2String llEdgeOfWorld llEjectFromLand llEmail llEscapeURL +\ llEuler2Rot llFabs llFloor llForceMouselook llFrand llGetAccel llGetAgentInfo +\ llGetAgentSize llGetAlpha llGetAndResetTime llGetAnimation llGetAnimationList +\ llGetAttached llGetBoundingBox llGetCameraPos llGetCameraRot llGetCenterOfMass +\ llGetColor llGetCreator llGetDate llGetEnergy llGetForce llGetFreeMemory +\ llGetGMTclock llGetGeometricCenter llGetInventoryCreator llGetInventoryKey +\ llGetInventoryName llGetInventoryNumber llGetInventoryPermMask +\ llGetInventoryType llGetKey llGetLandOwnerAt llGetLinkKey llGetLinkName +\ llGetLinkNumber llGetListEntryType llGetListLength llGetLocalPos llGetLocalRot +\ llGetMass llGetNextEmail llGetNotecardLine llGetNumberOfNotecardLines +\ llGetNumberOfPrims llGetNumberOfSides llGetObjectDesc llGetObjectDetails +\ llGetObjectMass llGetObjectName llGetObjectPermMask llGetObjectPrimCount +\ llGetOmega llGetOwner llGetOwnerKey llGetParcelDetails llGetParcelFlags +\ llGetParcelMaxPrims llGetParcelPrimCount llGetParcelPrimOwners +\ llGetPermissions llGetPermissionsKey llGetPos llGetPrimitiveParams +\ llGetRegionCorner llGetRegionFPS llGetRegionFlags llGetRegionName +\ llGetRegionTimeDilation llGetRootPosition llGetRootRotation llGetRot +\ llGetScale llGetScriptName llGetScriptState llGetSimulatorHostname +\ llGetStartParameter llGetStatus llGetSubString llGetSunDirection llGetTexture +\ llGetTextureOffset llGetTextureRot llGetTextureScale llGetTime llGetTimeOfDay +\ llGetTimestamp llGetTorque llGetUnixTime llGetVel llGetWallclock +\ llGiveInventory llGiveInventoryList llGiveMoney llGodLikeRezObject llGround +\ llGroundContour llGroundNormal llGroundRepel llGroundSlope llHTTPRequest +\ llInsertString llInstantMessage llIntegerToBase64 llKey2Name llList2CSV +\ llList2Float llList2Integer llList2Key llList2List llList2ListStrided +\ llList2Rot llList2String llList2Vector llListFindList llListInsertList +\ llListRandomize llListReplaceList llListSort llListStatistics llListen +\ llListenControl llListenRemove llLoadURL llLog llLog10 llLookAt llLoopSound +\ llLoopSoundMaster llLoopSoundSlave llMD5String llMakeExplosion llMakeFire +\ llMakeFountain llMakeSmoke llMapDestination llMessageLinked llMinEventDelay +\ llModPow llModifyLand llMoveToTarget llOffsetTexture llOpenRemoteDataChannel +\ llOverMyLand llOwnerSay llParcelMediaCommandList llParcelMediaQuery +\ llParseString2List llParseStringKeepNulls llParticleSystem llPassCollisions +\ llPassTouches llPlaySound llPlaySoundSlave llPointAt llPow llPreloadSound +\ llPushObject llRefreshPrimURL llRegionSay llReleaseCamera llReleaseControls +\ llRemoteDataReply llRemoteDataSetRegion llRemoteLoadScript +\ llRemoteLoadScriptPin llRemoveFromLandBanList llRemoveFromLandPassList +\ llRemoveInventory llRemoveVehicleFlags llRequestAgentData +\ llRequestInventoryData llRequestPermissions llRequestSimulatorData +\ llResetLandBanList llResetLandPassList llResetOtherScript llResetScript +\ llResetTime llRezAtRoot llRezObject llRot2Angle llRot2Axis llRot2Euler +\ llRot2Fwd llRot2Left llRot2Up llRotBetween llRotLookAt llRotTarget +\ llRotTargetRemove llRotateTexture llRound llSameGroup llSay llScaleTexture +\ llScriptDanger llSendRemoteData llSensor llSensorRemove llSensorRepeat +\ llSetAlpha llSetBuoyancy llSetCameraAtOffset llSetCameraEyeOffset +\ llSetCameraParams llSetClickAction llSetColor llSetDamage llSetForce +\ llSetForceAndTorque llSetHoverHeight llSetInventoryPermMask llSetLinkAlpha +\ llSetLinkColor llSetLinkPrimitiveParams llSetLinkTexture llSetLocalRot +\ llSetObjectDesc llSetObjectName llSetObjectPermMask llSetParcelMusicURL +\ llSetPayPrice llSetPos llSetPrimURL llSetPrimitiveParams +\ llSetRemoteScriptAccessPin llSetRot llSetScale llSetScriptState llSetSitText +\ llSetSoundQueueing llSetSoundRadius llSetStatus llSetText llSetTexture +\ llSetTextureAnim llSetTimerEvent llSetTorque llSetTouchText llSetVehicleFlags +\ llSetVehicleFloatParam llSetVehicleRotationParam llSetVehicleType +\ llSetVehicleVectorParam llShout llSin llSitTarget llSleep llSound +\ llSoundPreload llSqrt llStartAnimation llStopAnimation llStopHover +\ llStopLookAt llStopMoveToTarget llStopPointAt llStopSound llStringLength +\ llStringToBase64 llStringTrim llSubStringIndex llTakeCamera llTakeControls +\ llTan llTarget llTargetOmega llTargetRemove llTeleportAgentHome llToLower +\ llToUpper llTriggerSound llTriggerSoundLimited llUnSit llUnescapeURL llVecDist +\ llVecMag llVecNorm llVolumeDetect llWater llWhisper llWind llXorBase64Strings +\ llXorBase64StringsCorrect + +" Operators +syn match lslOperator +[-!%&*+/<=>^|~]+ display + +" Numbers +syn match lslNumber +-\=\%(\<\d\+\|\%(\<\d\+\)\=\.\d\+\)\%([Ee][-+]\=\d\+\)\=\>\|\<0x\x\+\>+ display + +" Vectors and rotations +syn match lslVectorRot +<[-\t +.0-9A-Za-z_]\+\%(,[-\t +.0-9A-Za-z_]\+\)\{2,3}>+ contains=lslNumber display + +" Vector and rotation properties +syn match lslProperty +\.\@<=[sxyz]\>+ display + +" Strings +syn region lslString start=+"+ skip=+\\.+ end=+"+ contains=lslSpecialChar,@Spell +syn match lslSpecialChar +\\.+ contained display + +" Keys +syn match lslKey +"\x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}"+ display + +" Parentheses, braces and brackets +syn match lslBlock +[][(){}]+ display + +" Typecast operators +syn match lslTypecast +(\%(float\|integer\|key\|list\|quaternion\|rotation\|string\|vector\))+ contains=lslType display + +" Comments +syn match lslComment +//.*+ contains=@Spell + +" Define the default highlighting. +hi def link lslKeyword Keyword +hi def link lslType Type +hi def link lslLabel Label +hi def link lslConstant Constant +hi def link lslEvent PreProc +hi def link lslFunction Function +hi def link lslOperator Operator +hi def link lslNumber Number +hi def link lslVectorRot Special +hi def link lslProperty Identifier +hi def link lslString String +hi def link lslSpecialChar SpecialChar +hi def link lslKey Special +hi def link lslBlock Special +hi def link lslTypecast Operator +hi def link lslComment Comment + +let b:current_syntax = "lsl" + +" vim: ts=8 diff --git a/runtime/syntax/mail.vim b/runtime/syntax/mail.vim index 7717cd97..1157517f 100644 --- a/runtime/syntax/mail.vim +++ b/runtime/syntax/mail.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Mail file " Previous Maintainer: Felix von Leitner -" Maintainer: Gautam Iyer -" Last Change: Wed 01 Jun 2005 02:11:07 PM CDT +" Maintainer: Gautam Iyer +" Last Change: Thu 17 Jan 2008 11:25:44 AM PST " Quit when a syntax file was already loaded if exists("b:current_syntax") @@ -24,13 +24,15 @@ syn case match " emails " According to RFC 2822 any printable ASCII character can appear in a field " name, except ':'. -syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From " skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 -syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*$" +syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 +syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$" +" Usenet headers +syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$" syn case ignore " Nothing else depends on case. Headers in properly quoted (with "> " or ">") " emails are matched -syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 +syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$" syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" diff --git a/runtime/syntax/man.vim b/runtime/syntax/man.vim index 347180c8..6167b237 100644 --- a/runtime/syntax/man.vim +++ b/runtime/syntax/man.vim @@ -3,7 +3,7 @@ " Maintainer: Nam SungHyun " Previous Maintainer: Gautam H. Mudunuri " Version Info: -" Last Change: 2004 May 16 +" Last Change: 2007 Dec 30 " Additional highlighting by Johannes Tanzler : " * manSubHeading @@ -36,7 +36,7 @@ syn match manLongOptionDesc "^\s*--[a-z0-9-]\S*" if getline(1) =~ '^[a-zA-Z_]\+([23])' syntax include @cCode :p:h/c.vim syn match manCFuncDefinition display "\<\h\w*\>\s*("me=e-1 contained - syn region manSynopsis start="^SYNOPSIS"hs=s+8 end="^\u\+\s*$"he=e-12 keepend contains=manSectionHeading,@cCode,manCFuncDefinition + syn region manSynopsis start="^SYNOPSIS"hs=s+8 end="^\u\+\s*$"me=e-12 keepend contains=manSectionHeading,@cCode,manCFuncDefinition endif diff --git a/runtime/syntax/manual.vim b/runtime/syntax/manual.vim index 5ac045f6..5ea37318 100644 --- a/runtime/syntax/manual.vim +++ b/runtime/syntax/manual.vim @@ -1,6 +1,6 @@ " Vim syntax support file " Maintainer: Bram Moolenaar -" Last Change: 2001 Jun 04 +" Last Change: 2008 Jan 26 " This file is used for ":syntax manual". " It installs the Syntax autocommands, but no the FileType autocommands. @@ -17,9 +17,12 @@ endif let syntax_manual = 1 " Remove the connection between FileType and Syntax autocommands. -silent! au! syntaxset FileType +if exists('#syntaxset') + au! syntaxset FileType +endif " If the GUI is already running, may still need to install the FileType menu. -if has("gui_running") && !exists("did_install_syntax_menu") +" Don't do it when the 'M' flag is included in 'guioptions'. +if has("menu") && has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# 'M' source $VIMRUNTIME/menu.vim endif diff --git a/runtime/syntax/masm.vim b/runtime/syntax/masm.vim index d605c7c5..4ffd22b9 100644 --- a/runtime/syntax/masm.vim +++ b/runtime/syntax/masm.vim @@ -2,8 +2,8 @@ " Language: Microsoft Macro Assembler (80x86) " Orig Author: Rob Brady " Maintainer: Wu Yongwei -" Last Change: $Date: 2007/05/12 13:36:14 $ -" $Revision: 1.5 $ +" Last Change: $Date: 2007/04/21 13:20:15 $ +" $Revision: 1.44 $ " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded diff --git a/runtime/syntax/mmp.vim b/runtime/syntax/mmp.vim new file mode 100644 index 00000000..0117e779 --- /dev/null +++ b/runtime/syntax/mmp.vim @@ -0,0 +1,53 @@ +" Vim syntax file +" Language: Symbian meta-makefile definition (MMP) +" Maintainer: Ron Aaron +" Last Change: 2007/11/07 +" URL: http://ronware.org/wiki/vim/mmp +" Filetypes: *.mmp + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +syn match mmpComment "//.*" +syn region mmpComment start="/\*" end="\*\/" + +syn keyword mmpKeyword aif asspabi assplibrary aaspexports baseaddress +syn keyword mmpKeyword debuglibrary deffile document epocheapsize +syn keyword mmpKeyword epocprocesspriority epocstacksize exportunfrozen +syn keyword mmpStorage lang library linkas macro nostrictdef option +syn keyword mmpStorage resource source sourcepath srcdbg startbitmap +syn keyword mmpStorage start end staticlibrary strictdepend systeminclude +syn keyword mmpStorage systemresource target targettype targetpath uid +syn keyword mmpStorage userinclude win32_library + +syn match mmpIfdef "\#\(include\|ifdef\|ifndef\|if\|endif\|else\|elif\)" + +syn match mmpNumber "\d+" +syn match mmpNumber "0x\x\+" + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if !exists("did_mmp_syntax_inits") + let did_mmp_syntax_inits=1 + + hi def link mmpComment Comment + hi def link mmpKeyword Keyword + hi def link mmpStorage StorageClass + hi def link mmpString String + hi def link mmpNumber Number + hi def link mmpOrdinal Operator + hi def link mmpIfdef PreCondit +endif + +let b:current_syntax = "mmp" + +" vim: ts=8 diff --git a/runtime/syntax/modconf.vim b/runtime/syntax/modconf.vim index e982b8c5..d4e8827b 100644 --- a/runtime/syntax/modconf.vim +++ b/runtime/syntax/modconf.vim @@ -1,13 +1,13 @@ " Vim syntax file " Language: modules.conf(5) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish endif -setlocal iskeyword=@,48-57,- +setlocal iskeyword+=- let s:cpo_save = &cpo set cpo&vim diff --git a/runtime/syntax/mplayerconf.vim b/runtime/syntax/mplayerconf.vim index 55f7e1a5..b348327f 100644 --- a/runtime/syntax/mplayerconf.vim +++ b/runtime/syntax/mplayerconf.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: mplayer(1) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,- +setlocal iskeyword+=- syn keyword mplayerconfTodo contained TODO FIXME XXX NOTE diff --git a/runtime/syntax/mrxvtrc.vim b/runtime/syntax/mrxvtrc.vim index d86f8e42..878021e0 100644 --- a/runtime/syntax/mrxvtrc.vim +++ b/runtime/syntax/mrxvtrc.vim @@ -1,5 +1,5 @@ " Created : Wed 26 Apr 2006 01:20:53 AM CDT -" Modified : Mon 20 Nov 2006 12:14:16 AM PST +" Modified : Mon 27 Aug 2007 12:10:37 PM PDT " Author : Gautam Iyer " Description : Vim syntax file for mrxvtrc (for mrxvt-0.5.0 and up) @@ -31,19 +31,19 @@ syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError \ fullscreen reverseVideo loginShell \ jumpScroll scrollBar scrollbarRight \ scrollbarFloating scrollTtyOutputInhibit - \ scrollTtyKeypress scrollWithBuffer - \ transparentForce transparentScrollbar - \ transparentMenubar transparentTabbar - \ tabUsePixmap utmpInhibit visualBell mapAlert - \ meta8 mouseWheelScrollPage multibyte_cursor + \ scrollTtyKeypress transparentForce + \ transparentScrollbar transparentMenubar + \ transparentTabbar tabUsePixmap utmpInhibit + \ visualBell mapAlert meta8 + \ mouseWheelScrollPage multibyte_cursor \ tripleclickwords showMenu xft xftNomFont \ xftSlowOutput xftAntialias xftHinting \ xftAutoHint xftGlobalAdvance cmdAllTabs \ protectSecondary thai borderLess - \ overrideRedirect broadcast - \ smartResize smoothResize pointerBlank - \ cursorBlink noSysConfig disableMacros - \ linuxHomeEndKey sessionMgt + \ overrideRedirect broadcast smartResize + \ pointerBlank cursorBlink noSysConfig + \ disableMacros linuxHomeEndKey sessionMgt + \ boldColors smoothResize useFifo veryBright syn match mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError \ '\v' syn match mrxvtrcBColon contained skipwhite @@ -74,8 +74,7 @@ syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcNColon,mrxvtrcError \ externalBorder internalBorder lineSpace \ pointerBlankDelay cursorBlinkInterval \ shading backgroundFade bgRefreshInterval - \ fading focusDelay opacity opacityDegree - \ xftPSize + \ fading opacity opacityDegree xftPSize syn match mrxvtrcNColon contained skipwhite \ nextgroup=mrxvtrcNumVal,mrxvtrcError ':' syn match mrxvtrcNumVal contained skipwhite nextgroup=mrxvtrcError @@ -91,7 +90,6 @@ syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError \ greektoggle_key menu menubarPixmap \ scrollbarPixmap tabbarPixmap appIcon \ multichar_encoding initProfileList - \ winTitleFormat syn match mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError \ '\v' syn match mrxvtrcSColon contained skipwhite nextgroup=mrxvtrcStrVal ':' @@ -104,6 +102,7 @@ syn match mrxvtrcProfile contained nextgroup=@mrxvtrcPOpts,mrxvtrcError syn keyword mrxvtrcPSOpts contained nextgroup=mrxvtrcSColon,mrxvtrcError \ tabTitle command holdExitText holdExitTitle \ Pixmap workingDirectory titleFormat + \ winTitleFormat syn keyword mrxvtrcPCOpts contained nextgroup=mrxvtrcCColon,mrxvtrcError \ background foreground syn keyword mrxvtrcPNOpts contained nextgroup=mrxvtrcNColon,mrxvtrcError @@ -205,7 +204,7 @@ syn keyword mrxvtrcMacro contained skipwhite nextgroup=mrxvtrcError \ Dummy Copy Paste ToggleVeryBold \ ToggleTransparency ToggleBroadcast \ ToggleHold SetTitle ToggleMacros - \ ToggleFullscreen + \ ToggleFullscreen Raise " Macros with a string argument syn keyword mrxvtrcMacro contained skipwhite nextgroup=mrxvtrcStrVal @@ -214,7 +213,7 @@ syn keyword mrxvtrcMacro contained skipwhite nextgroup=mrxvtrcStrVal " Macros with a numeric argument syn keyword mrxvtrcMacro contained skipwhite \ nextgroup=mrxvtrcNumVal,mrxvtrcError - \ Close GotoTab MoveTab ResizeFont + \ Close GotoTab MoveTab ResizeFont UseFifo " NewTab macro syn keyword mrxvtrcMacro contained skipwhite diff --git a/runtime/syntax/muttrc.vim b/runtime/syntax/muttrc.vim index fb88f6af..0b1d1616 100644 --- a/runtime/syntax/muttrc.vim +++ b/runtime/syntax/muttrc.vim @@ -2,9 +2,9 @@ " Language: Mutt setup files " Original: Preben 'Peppe' Guldberg " Maintainer: Kyle Wheeler -" Last Change: 5 Mar 2007 +" Last Change: 15 Aug 2007 -" This file covers mutt version 1.5.14 (and most of CVS HEAD) +" This file covers mutt version 1.5.16 (and most of CVS HEAD) " Included are also a few features from 1.4.2.1 " For version 5.x: Clear all syntax items @@ -30,18 +30,19 @@ syn match muttrcComment "[^\\]#.*$"lc=1 " Escape sequences (back-tick and pipe goes here too) syn match muttrcEscape +\\[#tnr"'Cc ]+ syn match muttrcEscape +[`|]+ +syn match muttrcEscape +\\$+ " The variables takes the following arguments syn match muttrcString "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape -syn region muttrcString start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction +syn region muttrcString start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction,muttrcShellString syn region muttrcString start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction syn region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand,muttrcSet syn match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1 syn match muttrcRXChars contained /[][|()][.*?+]*/ -syn match muttrcRXChars contained /'^/ms=s+1 -syn match muttrcRXChars contained /$'/me=e-1 +syn match muttrcRXChars contained /['"]^/ms=s+1 +syn match muttrcRXChars contained /$['"]/me=e-1 syn match muttrcRXChars contained /\\/ " Why does muttrcRXString2 work with one \ when muttrcRXString requires two? syn region muttrcRXString contained start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars @@ -78,21 +79,21 @@ syn match muttrcKeyName contained "\c<\%(BackSpace\|Delete\|Down\|End\|Enter\| syn keyword muttrcVarBool contained allow_8bit allow_ansi arrow_cursor ascii_chars askbcc syn keyword muttrcVarBool contained askcc attach_split auto_tag autoedit beep beep_new -syn keyword muttrcVarBool contained bounce_delivered braille_friendly check_new collapse_unread +syn keyword muttrcVarBool contained bounce_delivered braille_friendly check_new check_mbox_size collapse_unread syn keyword muttrcVarBool contained confirmappend confirmcreate crypt_autoencrypt crypt_autopgp syn keyword muttrcVarBool contained crypt_autosign crypt_autosmime crypt_replyencrypt syn keyword muttrcVarBool contained crypt_replysign crypt_replysignencrypted crypt_timestamp -syn keyword muttrcVarBool contained crypt_use_gpgme delete_untag digest_collapse duplicate_threads +syn keyword muttrcVarBool contained crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads syn keyword muttrcVarBool contained edit_hdrs edit_headers encode_from envelope_from fast_reply syn keyword muttrcVarBool contained fcc_attach fcc_clear followup_to force_name forw_decode syn keyword muttrcVarBool contained forw_decrypt forw_quote forward_decode forward_decrypt syn keyword muttrcVarBool contained forward_quote hdrs header help hidden_host hide_limited syn keyword muttrcVarBool contained hide_missing hide_thread_subject hide_top_limited -syn keyword muttrcVarBool contained hide_top_missing ignore_list_reply_to imap_check_subscribed +syn keyword muttrcVarBool contained hide_top_missing ignore_linear_white_space ignore_list_reply_to imap_check_subscribed syn keyword muttrcVarBool contained imap_list_subscribed imap_passive imap_peek imap_servernoise syn keyword muttrcVarBool contained implicit_autoview include_onlyfirst keep_flagged syn keyword muttrcVarBool contained mailcap_sanitize maildir_header_cache_verify maildir_trash -syn keyword muttrcVarBool contained mark_old markers menu_move_off menu_scroll meta_key +syn keyword muttrcVarBool contained mark_old markers menu_move_off menu_scroll message_cache_clean meta_key syn keyword muttrcVarBool contained metoo mh_purge mime_forward_decode narrow_tree pager_stop syn keyword muttrcVarBool contained pgp_auto_decode pgp_auto_traditional pgp_autoencrypt syn keyword muttrcVarBool contained pgp_autoinline pgp_autosign pgp_check_exit @@ -206,37 +207,133 @@ syn keyword muttrcVarNum contained connect_timeout history imap_keepalive mail_c syn keyword muttrcVarNum contained pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc syn keyword muttrcVarNum contained save_history score_threshold_delete score_threshold_flag syn keyword muttrcVarNum contained score_threshold_read sendmail_wait sleep_time smime_timeout -syn keyword muttrcVarNum contained ssl_min_dh_prime_bits timeout wrap wrapmargin write_inc +syn keyword muttrcVarNum contained ssl_min_dh_prime_bits timeout time_inc wrap wrapmargin write_inc + +syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/ +syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/ +syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/ + +syn match muttrcFormatErrors contained /%./ + +syn region muttrcIndexFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes +syn region muttrcIndexFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes +syn region muttrcAliasFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors +syn region muttrcAliasFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors +syn region muttrcAttachFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors +syn region muttrcAttachFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors +syn region muttrcComposeFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors +syn region muttrcComposeFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors +syn region muttrcFolderFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors +syn region muttrcFolderFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors +syn region muttrcMixFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors +syn region muttrcMixFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors +syn region muttrcPGPFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes +syn region muttrcPGPFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes +syn region muttrcPGPCmdFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors +syn region muttrcPGPCmdFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors +syn region muttrcStatusFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors +syn region muttrcStatusFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors +syn region muttrcPGPGetKeysFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors +syn region muttrcPGPGetKeysFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors +syn region muttrcSmimeFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors +syn region muttrcSmimeFormatStr contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors + +" The following info was pulled from hdr_format_str in hdrline.c +syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/ +syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2 +" The following info was pulled from alias_format_str in addrbook.c +syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ +" The following info was pulled from mutt_attach_fmt in recvattach.c +syn match muttrcAttachFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CcDdefImMnQstTuX%]/ +syn match muttrcAttachFormatEscapes contained /%[>|*]./ +syn match muttrcAttachFormatConditionals contained /%?[CcdDefInmMQstTuX]?/ nextgroup=muttrcFormatConditionals2 +syn match muttrcFormatConditionals2 contained /[^?]*?/ +" The following info was pulled from compose_format_str in compose.c +syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ +syn match muttrcComposeFormatEscapes contained /%[>|*]./ +" The following info was pulled from folder_format_str in browser.c +syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CdfFglNstu%]/ +syn match muttrcFolderFormatEscapes contained /%[>|*]./ +syn match muttrcFolderFormatConditionals contained /%?[N]?/ +" The following info was pulled from mix_entry_fmt in remailer.c +syn match muttrcMixFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ncsa%]/ +syn match muttrcMixFormatConditionals contained /%?[ncsa]?/ +" The following info was pulled from crypt_entry_fmt in crypt-gpgme.c +" and pgp_entry_fmt in pgpkey.c (note that crypt_entry_fmt supports +" 'p', but pgp_entry_fmt does not). +syn match muttrcPGPFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[nkualfctp%]/ +syn match muttrcPGPFormatConditionals contained /%?[nkualfct]?/ +" The following info was pulled from _mutt_fmt_pgp_command in +" pgpinvoke.c +syn match muttrcPGPCmdFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[pfsar%]/ +syn match muttrcPGPCmdFormatConditionals contained /%?[pfsar]?/ nextgroup=muttrcFormatConditionals2 +" The following info was pulled from status_format_str in status.c +syn match muttrcStatusFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[bdfFhlLmMnopPrsStuvV%]/ +syn match muttrcStatusFormatEscapes contained /%[>|*]./ +syn match muttrcStatusFormatConditionals contained /%?[bdFlLmMnoptuV]?/ nextgroup=muttrcFormatConditionals2 +" This matches the documentation, but directly contradicts the code +" (according to the code, this should be identical to the +" muttrcPGPCmdFormatEscapes +syn match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[r%]/ +" The following info was pulled from _mutt_fmt_smime_command in +" smime.c +syn match muttrcSmimeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[Cciskaf%]/ +syn match muttrcSmimeFormatConditionals contained /%?[Cciskaf]?/ nextgroup=muttrcFormatConditionals2 + +syn region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes +syn region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes +syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes +syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes +syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes + +syn keyword muttrcVarStr contained attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt +syn match muttrcVarEqualsIdxFmt contained "=" nextgroup=muttrcIndexFormatStr +syn keyword muttrcVarStr contained alias_format nextgroup=muttrcVarEqualsAliasFmt +syn match muttrcVarEqualsAliasFmt contained "=" nextgroup=muttrcAliasFormatStr +syn keyword muttrcVarStr contained attach_format nextgroup=muttrcVarEqualsAttachFmt +syn match muttrcVarEqualsAttachFmt contained "=" nextgroup=muttrcAttachFormatStr +syn keyword muttrcVarStr contained compose_format nextgroup=muttrcVarEqualsComposeFmt +syn match muttrcVarEqualsComposeFmt contained "=" nextgroup=muttrcComposeFormatStr +syn keyword muttrcVarStr contained folder_format nextgroup=muttrcVarEqualsFolderFmt +syn match muttrcVarEqualsFolderFmt contained "=" nextgroup=muttrcFolderFormatStr +syn keyword muttrcVarStr contained mix_entry_format nextgroup=muttrcVarEqualsMixFmt +syn match muttrcVarEqualsMixFmt contained "=" nextgroup=muttrcMixFormatStr +syn keyword muttrcVarStr contained pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt +syn match muttrcVarEqualsPGPFmt contained "=" nextgroup=muttrcPGPFormatStr +syn keyword muttrcVarStr contained pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt +syn match muttrcVarEqualsPGPCmdFmt contained "=" nextgroup=muttrcPGPCmdFormatStr +syn keyword muttrcVarStr contained status_format nextgroup=muttrcVarEqualsStatusFmt +syn match muttrcVarEqualsStatusFmt contained "=" nextgroup=muttrcStatusFormatStr +syn keyword muttrcVarStr contained pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt +syn match muttrcVarEqualsPGPGetKeysFmt contained "=" nextgroup=muttrcPGPGetKeysFormatStr +syn keyword muttrcVarStr contained smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt +syn match muttrcVarEqualsSmimeFmt contained "=" nextgroup=muttrcSmimeFormatStr syn match muttrcVarStr contained 'my_[a-zA-Z0-9_]\+' -syn keyword muttrcVarStr contained alias_file alias_format assumed_charset attach_format attach_sep attribution -syn keyword muttrcVarStr contained certificate_file charset compose_format config_charset content_type +syn keyword muttrcVarStr contained alias_file assumed_charset attach_charset attach_sep +syn keyword muttrcVarStr contained certificate_file charset config_charset content_type syn keyword muttrcVarStr contained date_format default_hook display_filter dotlock_program dsn_notify syn keyword muttrcVarStr contained dsn_return editor entropy_file envelope_from_address escape folder -syn keyword muttrcVarStr contained folder_format forw_format forward_format from gecos_mask hdr_format +syn keyword muttrcVarStr contained forw_format forward_format from gecos_mask hdr_format syn keyword muttrcVarStr contained header_cache header_cache_pagesize history_file hostname imap_authenticators -syn keyword muttrcVarStr contained imap_delim_chars imap_headers imap_home_namespace imap_idle imap_login imap_pass -syn keyword muttrcVarStr contained imap_user indent_str indent_string index_format ispell locale mailcap_path -syn keyword muttrcVarStr contained mask mbox mbox_type message_format message_cachedir mh_seq_flagged mh_seq_replied -syn keyword muttrcVarStr contained mh_seq_unseen mix_entry_format mixmaster msg_format pager pager_format -syn keyword muttrcVarStr contained pgp_clearsign_command pgp_decode_command pgp_decrypt_command -syn keyword muttrcVarStr contained pgp_encrypt_only_command pgp_encrypt_sign_command pgp_entry_format -syn keyword muttrcVarStr contained pgp_export_command pgp_getkeys_command pgp_good_sign pgp_import_command -syn keyword muttrcVarStr contained pgp_list_pubring_command pgp_list_secring_command pgp_mime_signature_filename +syn keyword muttrcVarStr contained imap_delim_chars imap_headers imap_idle imap_login imap_pass +syn keyword muttrcVarStr contained imap_user indent_str indent_string ispell locale mailcap_path +syn keyword muttrcVarStr contained mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied +syn keyword muttrcVarStr contained mh_seq_unseen mixmaster msg_format pager +syn keyword muttrcVarStr contained pgp_good_sign +syn keyword muttrcVarStr contained pgp_mime_signature_filename syn keyword muttrcVarStr contained pgp_mime_signature_description pgp_sign_as -syn keyword muttrcVarStr contained pgp_sign_command pgp_sort_keys pgp_verify_command pgp_verify_key_command +syn keyword muttrcVarStr contained pgp_sort_keys syn keyword muttrcVarStr contained pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str syn keyword muttrcVarStr contained post_indent_string postponed preconnect print_cmd print_command syn keyword muttrcVarStr contained query_command quote_regexp realname record reply_regexp send_charset syn keyword muttrcVarStr contained sendmail shell signature simple_search smileys smime_ca_location -syn keyword muttrcVarStr contained smime_certificates smime_decrypt_command smime_default_key -syn keyword muttrcVarStr contained smime_encrypt_command smime_encrypt_with smime_get_cert_command -syn keyword muttrcVarStr contained smime_get_cert_email_command smime_get_signer_cert_command -syn keyword muttrcVarStr contained smime_import_cert_command smime_keys smime_pk7out_command smime_sign_as -syn keyword muttrcVarStr contained smime_sign_command smime_sign_opaque_command smime_verify_command -syn keyword muttrcVarStr contained smime_verify_opaque_command smtp_url smtp_authenticators sort sort_alias sort_aux +syn keyword muttrcVarStr contained smime_certificates smime_default_key +syn keyword muttrcVarStr contained smime_encrypt_with +syn keyword muttrcVarStr contained smime_keys smime_sign_as +syn keyword muttrcVarStr contained smtp_url smtp_authenticators smtp_pass sort sort_alias sort_aux syn keyword muttrcVarStr contained sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert -syn keyword muttrcVarStr contained status_chars status_format tmpdir to_chars tunnel visual +syn keyword muttrcVarStr contained status_chars tmpdir to_chars tunnel visual " Present in 1.4.2.1 (pgp_create_traditional was a bool then) syn keyword muttrcVarBool contained imap_force_ssl imap_force_ssl noinvimap_force_ssl @@ -372,12 +469,13 @@ syn match muttrcUnAlias /^\s*unalias\s\?/ nextgroup=muttrcUnAliasKey,muttrcUnAl syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]" syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s\+\%([<>-][0-9]\+\|[0-9]\+[-][0-9]*\)" -syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s\+\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\)" +syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s\+\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatRXContainer syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatString syn match muttrcSimplePat contained "!\?\^\?[=][bh]\s\+" nextgroup=muttrcSimplePatString -"syn match muttrcSimplePat contained /"[^~=%][^"]*/ contains=muttrcRXPat -"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXPat +syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat +"syn match muttrcSimplePat contained /'[^~=%][^']*/ +"contains=muttrcRXPat syn match muttrcSimplePatString contained /[a-zA-Z0-9]\+/ syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+ syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+ @@ -388,7 +486,7 @@ syn match muttrcSimplePatMetas contained /[(|)]/ syn region muttrcPattern contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPatternInner syn region muttrcPattern contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPatternInner -syn match muttrcPattern contained "[~][A-Za-z]" contains=muttrcSimplePat +syn match muttrcPattern contained "[~]\([A-Za-z]\|([^)]\+)\)" contains=muttrcSimplePat syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas @@ -535,6 +633,41 @@ if version >= 508 || !exists("did_muttrc_syntax_inits") HiLink muttrcRXHookNot Type HiLink muttrcPatHooks muttrcCommand HiLink muttrcPatHookNot Type + HiLink muttrcFormatConditionals2 Type + HiLink muttrcIndexFormatStr muttrcString + HiLink muttrcIndexFormatEscapes muttrcEscape + HiLink muttrcIndexFormatConditionals muttrcFormatConditionals2 + HiLink muttrcAliasFormatStr muttrcString + HiLink muttrcAliasFormatEscapes muttrcEscape + HiLink muttrcAttachFormatStr muttrcString + HiLink muttrcAttachFormatEscapes muttrcEscape + HiLink muttrcAttachFormatConditionals muttrcFormatConditionals2 + HiLink muttrcComposeFormatStr muttrcString + HiLink muttrcComposeFormatEscapes muttrcEscape + HiLink muttrcFolderFormatStr muttrcString + HiLink muttrcFolderFormatEscapes muttrcEscape + HiLink muttrcFolderFormatConditionals muttrcFormatConditionals2 + HiLink muttrcMixFormatStr muttrcString + HiLink muttrcMixFormatEscapes muttrcEscape + HiLink muttrcMixFormatConditionals muttrcFormatConditionals2 + HiLink muttrcPGPFormatStr muttrcString + HiLink muttrcPGPFormatEscapes muttrcEscape + HiLink muttrcPGPFormatConditionals muttrcFormatConditionals2 + HiLink muttrcPGPCmdFormatStr muttrcString + HiLink muttrcPGPCmdFormatEscapes muttrcEscape + HiLink muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 + HiLink muttrcStatusFormatStr muttrcString + HiLink muttrcStatusFormatEscapes muttrcEscape + HiLink muttrcStatusFormatConditionals muttrcFormatConditionals2 + HiLink muttrcPGPGetKeysFormatStr muttrcString + HiLink muttrcPGPGetKeysFormatEscapes muttrcEscape + HiLink muttrcSmimeFormatStr muttrcString + HiLink muttrcSmimeFormatEscapes muttrcEscape + HiLink muttrcSmimeFormatConditionals muttrcFormatConditionals2 + HiLink muttrcTimeEscapes muttrcEscape + HiLink muttrcPGPTimeEscapes muttrcEscape + HiLink muttrcStrftimeEscapes Type + HiLink muttrcFormatErrors Error HiLink muttrcBindFunctionNL SpecialChar HiLink muttrcBindKeyNL SpecialChar @@ -564,4 +697,4 @@ endif let b:current_syntax = "muttrc" -"EOF vim: ts=8 noet tw=100 sw=8 sts=0 +"EOF vim: ts=8 noet tw=100 sw=8 sts=0 ft=vim diff --git a/runtime/syntax/mysql.vim b/runtime/syntax/mysql.vim dissimilarity index 85% index 041fd08d..79cf4b5a 100644 --- a/runtime/syntax/mysql.vim +++ b/runtime/syntax/mysql.vim @@ -1,297 +1,297 @@ -" Vim syntax file -" Language: mysql -" Maintainer: Kenneth J. Pronovici -" Last Change: $Date: 2007/05/12 15:34:06 $ -" Filenames: *.mysql -" URL: ftp://cedar-solutions.com/software/mysql.vim -" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Always ignore case -syn case ignore - -" General keywords which don't fall into other categories -syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg avg_row_length -syn keyword mysqlKeyword both by -syn keyword mysqlKeyword cascade change character check checksum column columns comment constraint create cross -syn keyword mysqlKeyword current_date current_time current_timestamp -syn keyword mysqlKeyword data database databases day day_hour day_minute day_second -syn keyword mysqlKeyword default delayed delay_key_write delete desc describe distinct distinctrow drop -syn keyword mysqlKeyword enclosed escape escaped explain -syn keyword mysqlKeyword fields file first flush for foreign from full function -syn keyword mysqlKeyword global grant grants group -syn keyword mysqlKeyword having heap high_priority hosts hour hour_minute hour_second -syn keyword mysqlKeyword identified ignore index infile inner insert insert_id into isam -syn keyword mysqlKeyword join -syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long -syn keyword mysqlKeyword low_priority -syn keyword mysqlKeyword match max_rows middleint min_rows minute minute_second modify month myisam -syn keyword mysqlKeyword natural no -syn keyword mysqlKeyword on optimize option optionally order outer outfile -syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist -syn keyword mysqlKeyword read references reload rename replace restrict returns revoke row rows -syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off -syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting -syn keyword mysqlKeyword status straight_join string -syn keyword mysqlKeyword table tables temporary terminated to trailing type -syn keyword mysqlKeyword unique unlock unsigned update usage use using -syn keyword mysqlKeyword values varbinary variables varying -syn keyword mysqlKeyword where with write -syn keyword mysqlKeyword year_month -syn keyword mysqlKeyword zerofill - -" Special values -syn keyword mysqlSpecial false null true - -" Strings (single- and double-quote) -syn region mysqlString start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn region mysqlString start=+'+ skip=+\\\\\|\\'+ end=+'+ - -" Numbers and hexidecimal values -syn match mysqlNumber "-\=\<[0-9]*\>" -syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>" -syn match mysqlNumber "-\=\<[0-9]*e[+-]\=[0-9]*\>" -syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" -syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>" - -" User variables -syn match mysqlVariable "@\a*[A-Za-z0-9]*[._]*[A-Za-z0-9]*" - -" Comments (c-style, mysql-style and modified sql-style) -syn region mysqlComment start="/\*" end="\*/" -syn match mysqlComment "#.*" -syn match mysqlComment "-- .*" -syn sync ccomment mysqlComment - -" Column types -" -" This gets a bit ugly. There are two different problems we have to -" deal with. -" -" The first problem is that some keywoards like 'float' can be used -" both with and without specifiers, i.e. 'float', 'float(1)' and -" 'float(@var)' are all valid. We have to account for this and we -" also have to make sure that garbage like floatn or float_(1) is not -" highlighted. -" -" The second problem is that some of these keywords are included in -" function names. For instance, year() is part of the name of the -" dayofyear() function, and the dec keyword (no parenthesis) is part of -" the name of the decode() function. - -syn keyword mysqlType tinyint smallint mediumint int integer bigint -syn keyword mysqlType date datetime time bit bool -syn keyword mysqlType tinytext mediumtext longtext text -syn keyword mysqlType tinyblob mediumblob longblob blob -syn region mysqlType start="float\W" end="."me=s-1 -syn region mysqlType start="float$" end="."me=s-1 -syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="double\W" end="."me=s-1 -syn region mysqlType start="double$" end="."me=s-1 -syn region mysqlType start="double(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="double precision\W" end="."me=s-1 -syn region mysqlType start="double precision$" end="."me=s-1 -syn region mysqlType start="double precision(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="real\W" end="."me=s-1 -syn region mysqlType start="real$" end="."me=s-1 -syn region mysqlType start="real(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="numeric(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="dec\W" end="."me=s-1 -syn region mysqlType start="dec$" end="."me=s-1 -syn region mysqlType start="dec(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="decimal\W" end="."me=s-1 -syn region mysqlType start="decimal$" end="."me=s-1 -syn region mysqlType start="decimal(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="\Wtimestamp\W" end="."me=s-1 -syn region mysqlType start="\Wtimestamp$" end="."me=s-1 -syn region mysqlType start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="^timestamp\W" end="."me=s-1 -syn region mysqlType start="^timestamp$" end="."me=s-1 -syn region mysqlType start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="^year(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="char(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="varchar(" end=")" contains=mysqlNumber,mysqlVariable -syn region mysqlType start="enum(" end=")" contains=mysqlString,mysqlVariable -syn region mysqlType start="\Wset(" end=")" contains=mysqlString,mysqlVariable -syn region mysqlType start="^set(" end=")" contains=mysqlString,mysqlVariable - -" Logical, string and numeric operators -syn keyword mysqlOperator between not and or is in like regexp rlike binary exists -syn region mysqlOperator start="isnull(" end=")" contains=ALL -syn region mysqlOperator start="coalesce(" end=")" contains=ALL -syn region mysqlOperator start="interval(" end=")" contains=ALL - -" Control flow functions -syn keyword mysqlFlow case when then else end -syn region mysqlFlow start="ifnull(" end=")" contains=ALL -syn region mysqlFlow start="nullif(" end=")" contains=ALL -syn region mysqlFlow start="if(" end=")" contains=ALL - -" General Functions -" -" I'm leery of just defining keywords for functions, since according to the MySQL manual: -" -" Function names do not clash with table or column names. For example, ABS is a -" valid column name. The only restriction is that for a function call, no spaces -" are allowed between the function name and the `(' that follows it. -" -" This means that if I want to highlight function names properly, I have to use a -" region to define them, not just a keyword. This will probably cause the syntax file -" to load more slowly, but at least it will be 'correct'. - -syn region mysqlFunction start="abs(" end=")" contains=ALL -syn region mysqlFunction start="acos(" end=")" contains=ALL -syn region mysqlFunction start="adddate(" end=")" contains=ALL -syn region mysqlFunction start="ascii(" end=")" contains=ALL -syn region mysqlFunction start="asin(" end=")" contains=ALL -syn region mysqlFunction start="atan(" end=")" contains=ALL -syn region mysqlFunction start="atan2(" end=")" contains=ALL -syn region mysqlFunction start="benchmark(" end=")" contains=ALL -syn region mysqlFunction start="bin(" end=")" contains=ALL -syn region mysqlFunction start="bit_and(" end=")" contains=ALL -syn region mysqlFunction start="bit_count(" end=")" contains=ALL -syn region mysqlFunction start="bit_or(" end=")" contains=ALL -syn region mysqlFunction start="ceiling(" end=")" contains=ALL -syn region mysqlFunction start="character_length(" end=")" contains=ALL -syn region mysqlFunction start="char_length(" end=")" contains=ALL -syn region mysqlFunction start="concat(" end=")" contains=ALL -syn region mysqlFunction start="concat_ws(" end=")" contains=ALL -syn region mysqlFunction start="connection_id(" end=")" contains=ALL -syn region mysqlFunction start="conv(" end=")" contains=ALL -syn region mysqlFunction start="cos(" end=")" contains=ALL -syn region mysqlFunction start="cot(" end=")" contains=ALL -syn region mysqlFunction start="count(" end=")" contains=ALL -syn region mysqlFunction start="curdate(" end=")" contains=ALL -syn region mysqlFunction start="curtime(" end=")" contains=ALL -syn region mysqlFunction start="date_add(" end=")" contains=ALL -syn region mysqlFunction start="date_format(" end=")" contains=ALL -syn region mysqlFunction start="date_sub(" end=")" contains=ALL -syn region mysqlFunction start="dayname(" end=")" contains=ALL -syn region mysqlFunction start="dayofmonth(" end=")" contains=ALL -syn region mysqlFunction start="dayofweek(" end=")" contains=ALL -syn region mysqlFunction start="dayofyear(" end=")" contains=ALL -syn region mysqlFunction start="decode(" end=")" contains=ALL -syn region mysqlFunction start="degrees(" end=")" contains=ALL -syn region mysqlFunction start="elt(" end=")" contains=ALL -syn region mysqlFunction start="encode(" end=")" contains=ALL -syn region mysqlFunction start="encrypt(" end=")" contains=ALL -syn region mysqlFunction start="exp(" end=")" contains=ALL -syn region mysqlFunction start="export_set(" end=")" contains=ALL -syn region mysqlFunction start="extract(" end=")" contains=ALL -syn region mysqlFunction start="field(" end=")" contains=ALL -syn region mysqlFunction start="find_in_set(" end=")" contains=ALL -syn region mysqlFunction start="floor(" end=")" contains=ALL -syn region mysqlFunction start="format(" end=")" contains=ALL -syn region mysqlFunction start="from_days(" end=")" contains=ALL -syn region mysqlFunction start="from_unixtime(" end=")" contains=ALL -syn region mysqlFunction start="get_lock(" end=")" contains=ALL -syn region mysqlFunction start="greatest(" end=")" contains=ALL -syn region mysqlFunction start="group_unique_users(" end=")" contains=ALL -syn region mysqlFunction start="hex(" end=")" contains=ALL -syn region mysqlFunction start="inet_aton(" end=")" contains=ALL -syn region mysqlFunction start="inet_ntoa(" end=")" contains=ALL -syn region mysqlFunction start="instr(" end=")" contains=ALL -syn region mysqlFunction start="lcase(" end=")" contains=ALL -syn region mysqlFunction start="least(" end=")" contains=ALL -syn region mysqlFunction start="length(" end=")" contains=ALL -syn region mysqlFunction start="load_file(" end=")" contains=ALL -syn region mysqlFunction start="locate(" end=")" contains=ALL -syn region mysqlFunction start="log(" end=")" contains=ALL -syn region mysqlFunction start="log10(" end=")" contains=ALL -syn region mysqlFunction start="lower(" end=")" contains=ALL -syn region mysqlFunction start="lpad(" end=")" contains=ALL -syn region mysqlFunction start="ltrim(" end=")" contains=ALL -syn region mysqlFunction start="make_set(" end=")" contains=ALL -syn region mysqlFunction start="master_pos_wait(" end=")" contains=ALL -syn region mysqlFunction start="max(" end=")" contains=ALL -syn region mysqlFunction start="md5(" end=")" contains=ALL -syn region mysqlFunction start="mid(" end=")" contains=ALL -syn region mysqlFunction start="min(" end=")" contains=ALL -syn region mysqlFunction start="mod(" end=")" contains=ALL -syn region mysqlFunction start="monthname(" end=")" contains=ALL -syn region mysqlFunction start="now(" end=")" contains=ALL -syn region mysqlFunction start="oct(" end=")" contains=ALL -syn region mysqlFunction start="octet_length(" end=")" contains=ALL -syn region mysqlFunction start="ord(" end=")" contains=ALL -syn region mysqlFunction start="period_add(" end=")" contains=ALL -syn region mysqlFunction start="period_diff(" end=")" contains=ALL -syn region mysqlFunction start="pi(" end=")" contains=ALL -syn region mysqlFunction start="position(" end=")" contains=ALL -syn region mysqlFunction start="pow(" end=")" contains=ALL -syn region mysqlFunction start="power(" end=")" contains=ALL -syn region mysqlFunction start="quarter(" end=")" contains=ALL -syn region mysqlFunction start="radians(" end=")" contains=ALL -syn region mysqlFunction start="rand(" end=")" contains=ALL -syn region mysqlFunction start="release_lock(" end=")" contains=ALL -syn region mysqlFunction start="repeat(" end=")" contains=ALL -syn region mysqlFunction start="reverse(" end=")" contains=ALL -syn region mysqlFunction start="round(" end=")" contains=ALL -syn region mysqlFunction start="rpad(" end=")" contains=ALL -syn region mysqlFunction start="rtrim(" end=")" contains=ALL -syn region mysqlFunction start="sec_to_time(" end=")" contains=ALL -syn region mysqlFunction start="session_user(" end=")" contains=ALL -syn region mysqlFunction start="sign(" end=")" contains=ALL -syn region mysqlFunction start="sin(" end=")" contains=ALL -syn region mysqlFunction start="soundex(" end=")" contains=ALL -syn region mysqlFunction start="space(" end=")" contains=ALL -syn region mysqlFunction start="sqrt(" end=")" contains=ALL -syn region mysqlFunction start="std(" end=")" contains=ALL -syn region mysqlFunction start="stddev(" end=")" contains=ALL -syn region mysqlFunction start="strcmp(" end=")" contains=ALL -syn region mysqlFunction start="subdate(" end=")" contains=ALL -syn region mysqlFunction start="substring(" end=")" contains=ALL -syn region mysqlFunction start="substring_index(" end=")" contains=ALL -syn region mysqlFunction start="subtime(" end=")" contains=ALL -syn region mysqlFunction start="sum(" end=")" contains=ALL -syn region mysqlFunction start="sysdate(" end=")" contains=ALL -syn region mysqlFunction start="system_user(" end=")" contains=ALL -syn region mysqlFunction start="tan(" end=")" contains=ALL -syn region mysqlFunction start="time_format(" end=")" contains=ALL -syn region mysqlFunction start="time_to_sec(" end=")" contains=ALL -syn region mysqlFunction start="to_days(" end=")" contains=ALL -syn region mysqlFunction start="trim(" end=")" contains=ALL -syn region mysqlFunction start="ucase(" end=")" contains=ALL -syn region mysqlFunction start="unique_users(" end=")" contains=ALL -syn region mysqlFunction start="unix_timestamp(" end=")" contains=ALL -syn region mysqlFunction start="upper(" end=")" contains=ALL -syn region mysqlFunction start="user(" end=")" contains=ALL -syn region mysqlFunction start="version(" end=")" contains=ALL -syn region mysqlFunction start="week(" end=")" contains=ALL -syn region mysqlFunction start="weekday(" end=")" contains=ALL -syn region mysqlFunction start="yearweek(" end=")" contains=ALL - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_mysql_syn_inits") - if version < 508 - let did_mysql_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink mysqlKeyword Statement - HiLink mysqlSpecial Special - HiLink mysqlString String - HiLink mysqlNumber Number - HiLink mysqlVariable Identifier - HiLink mysqlComment Comment - HiLink mysqlType Type - HiLink mysqlOperator Statement - HiLink mysqlFlow Statement - HiLink mysqlFunction Function - - delcommand HiLink -endif - -let b:current_syntax = "mysql" - +" Vim syntax file +" Language: mysql +" Maintainer: Kenneth J. Pronovici +" Last Change: $LastChangedDate: 2007-12-19 10:59:39 -0600 (Wed, 19 Dec 2007) $ +" Filenames: *.mysql +" URL: ftp://cedar-solutions.com/software/mysql.vim +" Note: The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Always ignore case +syn case ignore + +" General keywords which don't fall into other categories +syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg avg_row_length +syn keyword mysqlKeyword both by +syn keyword mysqlKeyword cascade change character check checksum column columns comment constraint create cross +syn keyword mysqlKeyword current_date current_time current_timestamp +syn keyword mysqlKeyword data database databases day day_hour day_minute day_second +syn keyword mysqlKeyword default delayed delay_key_write delete desc describe distinct distinctrow drop +syn keyword mysqlKeyword enclosed escape escaped explain +syn keyword mysqlKeyword fields file first flush for foreign from full function +syn keyword mysqlKeyword global grant grants group +syn keyword mysqlKeyword having heap high_priority hosts hour hour_minute hour_second +syn keyword mysqlKeyword identified ignore index infile inner insert insert_id into isam +syn keyword mysqlKeyword join +syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long +syn keyword mysqlKeyword low_priority +syn keyword mysqlKeyword match max_rows middleint min_rows minute minute_second modify month myisam +syn keyword mysqlKeyword natural no +syn keyword mysqlKeyword on optimize option optionally order outer outfile +syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist +syn keyword mysqlKeyword read references reload rename replace restrict returns revoke row rows +syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off +syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting +syn keyword mysqlKeyword status straight_join string +syn keyword mysqlKeyword table tables temporary terminated to trailing type +syn keyword mysqlKeyword unique unlock unsigned update usage use using +syn keyword mysqlKeyword values varbinary variables varying +syn keyword mysqlKeyword where with write +syn keyword mysqlKeyword year_month +syn keyword mysqlKeyword zerofill + +" Special values +syn keyword mysqlSpecial false null true + +" Strings (single- and double-quote) +syn region mysqlString start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn region mysqlString start=+'+ skip=+\\\\\|\\'+ end=+'+ + +" Numbers and hexidecimal values +syn match mysqlNumber "-\=\<[0-9]*\>" +syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>" +syn match mysqlNumber "-\=\<[0-9]*e[+-]\=[0-9]*\>" +syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" +syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>" + +" User variables +syn match mysqlVariable "@\a*[A-Za-z0-9]*[._]*[A-Za-z0-9]*" + +" Comments (c-style, mysql-style and modified sql-style) +syn region mysqlComment start="/\*" end="\*/" +syn match mysqlComment "#.*" +syn match mysqlComment "--\_s.*" +syn sync ccomment mysqlComment + +" Column types +" +" This gets a bit ugly. There are two different problems we have to +" deal with. +" +" The first problem is that some keywoards like 'float' can be used +" both with and without specifiers, i.e. 'float', 'float(1)' and +" 'float(@var)' are all valid. We have to account for this and we +" also have to make sure that garbage like floatn or float_(1) is not +" highlighted. +" +" The second problem is that some of these keywords are included in +" function names. For instance, year() is part of the name of the +" dayofyear() function, and the dec keyword (no parenthesis) is part of +" the name of the decode() function. + +syn keyword mysqlType tinyint smallint mediumint int integer bigint +syn keyword mysqlType date datetime time bit bool +syn keyword mysqlType tinytext mediumtext longtext text +syn keyword mysqlType tinyblob mediumblob longblob blob +syn region mysqlType start="float\W" end="."me=s-1 +syn region mysqlType start="float$" end="."me=s-1 +syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="double\W" end="."me=s-1 +syn region mysqlType start="double$" end="."me=s-1 +syn region mysqlType start="double(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="double precision\W" end="."me=s-1 +syn region mysqlType start="double precision$" end="."me=s-1 +syn region mysqlType start="double precision(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="real\W" end="."me=s-1 +syn region mysqlType start="real$" end="."me=s-1 +syn region mysqlType start="real(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="numeric(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="dec\W" end="."me=s-1 +syn region mysqlType start="dec$" end="."me=s-1 +syn region mysqlType start="dec(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="decimal\W" end="."me=s-1 +syn region mysqlType start="decimal$" end="."me=s-1 +syn region mysqlType start="decimal(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="\Wtimestamp\W" end="."me=s-1 +syn region mysqlType start="\Wtimestamp$" end="."me=s-1 +syn region mysqlType start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="^timestamp\W" end="."me=s-1 +syn region mysqlType start="^timestamp$" end="."me=s-1 +syn region mysqlType start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="^year(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="char(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="varchar(" end=")" contains=mysqlNumber,mysqlVariable +syn region mysqlType start="enum(" end=")" contains=mysqlString,mysqlVariable +syn region mysqlType start="\Wset(" end=")" contains=mysqlString,mysqlVariable +syn region mysqlType start="^set(" end=")" contains=mysqlString,mysqlVariable + +" Logical, string and numeric operators +syn keyword mysqlOperator between not and or is in like regexp rlike binary exists +syn region mysqlOperator start="isnull(" end=")" contains=ALL +syn region mysqlOperator start="coalesce(" end=")" contains=ALL +syn region mysqlOperator start="interval(" end=")" contains=ALL + +" Control flow functions +syn keyword mysqlFlow case when then else end +syn region mysqlFlow start="ifnull(" end=")" contains=ALL +syn region mysqlFlow start="nullif(" end=")" contains=ALL +syn region mysqlFlow start="if(" end=")" contains=ALL + +" General Functions +" +" I'm leery of just defining keywords for functions, since according to the MySQL manual: +" +" Function names do not clash with table or column names. For example, ABS is a +" valid column name. The only restriction is that for a function call, no spaces +" are allowed between the function name and the `(' that follows it. +" +" This means that if I want to highlight function names properly, I have to use a +" region to define them, not just a keyword. This will probably cause the syntax file +" to load more slowly, but at least it will be 'correct'. + +syn region mysqlFunction start="abs(" end=")" contains=ALL +syn region mysqlFunction start="acos(" end=")" contains=ALL +syn region mysqlFunction start="adddate(" end=")" contains=ALL +syn region mysqlFunction start="ascii(" end=")" contains=ALL +syn region mysqlFunction start="asin(" end=")" contains=ALL +syn region mysqlFunction start="atan(" end=")" contains=ALL +syn region mysqlFunction start="atan2(" end=")" contains=ALL +syn region mysqlFunction start="benchmark(" end=")" contains=ALL +syn region mysqlFunction start="bin(" end=")" contains=ALL +syn region mysqlFunction start="bit_and(" end=")" contains=ALL +syn region mysqlFunction start="bit_count(" end=")" contains=ALL +syn region mysqlFunction start="bit_or(" end=")" contains=ALL +syn region mysqlFunction start="ceiling(" end=")" contains=ALL +syn region mysqlFunction start="character_length(" end=")" contains=ALL +syn region mysqlFunction start="char_length(" end=")" contains=ALL +syn region mysqlFunction start="concat(" end=")" contains=ALL +syn region mysqlFunction start="concat_ws(" end=")" contains=ALL +syn region mysqlFunction start="connection_id(" end=")" contains=ALL +syn region mysqlFunction start="conv(" end=")" contains=ALL +syn region mysqlFunction start="cos(" end=")" contains=ALL +syn region mysqlFunction start="cot(" end=")" contains=ALL +syn region mysqlFunction start="count(" end=")" contains=ALL +syn region mysqlFunction start="curdate(" end=")" contains=ALL +syn region mysqlFunction start="curtime(" end=")" contains=ALL +syn region mysqlFunction start="date_add(" end=")" contains=ALL +syn region mysqlFunction start="date_format(" end=")" contains=ALL +syn region mysqlFunction start="date_sub(" end=")" contains=ALL +syn region mysqlFunction start="dayname(" end=")" contains=ALL +syn region mysqlFunction start="dayofmonth(" end=")" contains=ALL +syn region mysqlFunction start="dayofweek(" end=")" contains=ALL +syn region mysqlFunction start="dayofyear(" end=")" contains=ALL +syn region mysqlFunction start="decode(" end=")" contains=ALL +syn region mysqlFunction start="degrees(" end=")" contains=ALL +syn region mysqlFunction start="elt(" end=")" contains=ALL +syn region mysqlFunction start="encode(" end=")" contains=ALL +syn region mysqlFunction start="encrypt(" end=")" contains=ALL +syn region mysqlFunction start="exp(" end=")" contains=ALL +syn region mysqlFunction start="export_set(" end=")" contains=ALL +syn region mysqlFunction start="extract(" end=")" contains=ALL +syn region mysqlFunction start="field(" end=")" contains=ALL +syn region mysqlFunction start="find_in_set(" end=")" contains=ALL +syn region mysqlFunction start="floor(" end=")" contains=ALL +syn region mysqlFunction start="format(" end=")" contains=ALL +syn region mysqlFunction start="from_days(" end=")" contains=ALL +syn region mysqlFunction start="from_unixtime(" end=")" contains=ALL +syn region mysqlFunction start="get_lock(" end=")" contains=ALL +syn region mysqlFunction start="greatest(" end=")" contains=ALL +syn region mysqlFunction start="group_unique_users(" end=")" contains=ALL +syn region mysqlFunction start="hex(" end=")" contains=ALL +syn region mysqlFunction start="inet_aton(" end=")" contains=ALL +syn region mysqlFunction start="inet_ntoa(" end=")" contains=ALL +syn region mysqlFunction start="instr(" end=")" contains=ALL +syn region mysqlFunction start="lcase(" end=")" contains=ALL +syn region mysqlFunction start="least(" end=")" contains=ALL +syn region mysqlFunction start="length(" end=")" contains=ALL +syn region mysqlFunction start="load_file(" end=")" contains=ALL +syn region mysqlFunction start="locate(" end=")" contains=ALL +syn region mysqlFunction start="log(" end=")" contains=ALL +syn region mysqlFunction start="log10(" end=")" contains=ALL +syn region mysqlFunction start="lower(" end=")" contains=ALL +syn region mysqlFunction start="lpad(" end=")" contains=ALL +syn region mysqlFunction start="ltrim(" end=")" contains=ALL +syn region mysqlFunction start="make_set(" end=")" contains=ALL +syn region mysqlFunction start="master_pos_wait(" end=")" contains=ALL +syn region mysqlFunction start="max(" end=")" contains=ALL +syn region mysqlFunction start="md5(" end=")" contains=ALL +syn region mysqlFunction start="mid(" end=")" contains=ALL +syn region mysqlFunction start="min(" end=")" contains=ALL +syn region mysqlFunction start="mod(" end=")" contains=ALL +syn region mysqlFunction start="monthname(" end=")" contains=ALL +syn region mysqlFunction start="now(" end=")" contains=ALL +syn region mysqlFunction start="oct(" end=")" contains=ALL +syn region mysqlFunction start="octet_length(" end=")" contains=ALL +syn region mysqlFunction start="ord(" end=")" contains=ALL +syn region mysqlFunction start="period_add(" end=")" contains=ALL +syn region mysqlFunction start="period_diff(" end=")" contains=ALL +syn region mysqlFunction start="pi(" end=")" contains=ALL +syn region mysqlFunction start="position(" end=")" contains=ALL +syn region mysqlFunction start="pow(" end=")" contains=ALL +syn region mysqlFunction start="power(" end=")" contains=ALL +syn region mysqlFunction start="quarter(" end=")" contains=ALL +syn region mysqlFunction start="radians(" end=")" contains=ALL +syn region mysqlFunction start="rand(" end=")" contains=ALL +syn region mysqlFunction start="release_lock(" end=")" contains=ALL +syn region mysqlFunction start="repeat(" end=")" contains=ALL +syn region mysqlFunction start="reverse(" end=")" contains=ALL +syn region mysqlFunction start="round(" end=")" contains=ALL +syn region mysqlFunction start="rpad(" end=")" contains=ALL +syn region mysqlFunction start="rtrim(" end=")" contains=ALL +syn region mysqlFunction start="sec_to_time(" end=")" contains=ALL +syn region mysqlFunction start="session_user(" end=")" contains=ALL +syn region mysqlFunction start="sign(" end=")" contains=ALL +syn region mysqlFunction start="sin(" end=")" contains=ALL +syn region mysqlFunction start="soundex(" end=")" contains=ALL +syn region mysqlFunction start="space(" end=")" contains=ALL +syn region mysqlFunction start="sqrt(" end=")" contains=ALL +syn region mysqlFunction start="std(" end=")" contains=ALL +syn region mysqlFunction start="stddev(" end=")" contains=ALL +syn region mysqlFunction start="strcmp(" end=")" contains=ALL +syn region mysqlFunction start="subdate(" end=")" contains=ALL +syn region mysqlFunction start="substring(" end=")" contains=ALL +syn region mysqlFunction start="substring_index(" end=")" contains=ALL +syn region mysqlFunction start="subtime(" end=")" contains=ALL +syn region mysqlFunction start="sum(" end=")" contains=ALL +syn region mysqlFunction start="sysdate(" end=")" contains=ALL +syn region mysqlFunction start="system_user(" end=")" contains=ALL +syn region mysqlFunction start="tan(" end=")" contains=ALL +syn region mysqlFunction start="time_format(" end=")" contains=ALL +syn region mysqlFunction start="time_to_sec(" end=")" contains=ALL +syn region mysqlFunction start="to_days(" end=")" contains=ALL +syn region mysqlFunction start="trim(" end=")" contains=ALL +syn region mysqlFunction start="ucase(" end=")" contains=ALL +syn region mysqlFunction start="unique_users(" end=")" contains=ALL +syn region mysqlFunction start="unix_timestamp(" end=")" contains=ALL +syn region mysqlFunction start="upper(" end=")" contains=ALL +syn region mysqlFunction start="user(" end=")" contains=ALL +syn region mysqlFunction start="version(" end=")" contains=ALL +syn region mysqlFunction start="week(" end=")" contains=ALL +syn region mysqlFunction start="weekday(" end=")" contains=ALL +syn region mysqlFunction start="yearweek(" end=")" contains=ALL + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_mysql_syn_inits") + if version < 508 + let did_mysql_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink mysqlKeyword Statement + HiLink mysqlSpecial Special + HiLink mysqlString String + HiLink mysqlNumber Number + HiLink mysqlVariable Identifier + HiLink mysqlComment Comment + HiLink mysqlType Type + HiLink mysqlOperator Statement + HiLink mysqlFlow Statement + HiLink mysqlFunction Function + + delcommand HiLink +endif + +let b:current_syntax = "mysql" + diff --git a/runtime/syntax/netrw.vim b/runtime/syntax/netrw.vim index e2baac88..62dab3fe 100644 --- a/runtime/syntax/netrw.vim +++ b/runtime/syntax/netrw.vim @@ -1,7 +1,7 @@ " Language : Netrw Remote-Directory Listing Syntax " Maintainer : Charles E. Campbell, Jr. -" Last change: Nov 27, 2006 -" Version : 9 +" Last change: Feb 06, 2008 +" Version : 12 " --------------------------------------------------------------------- " Syntax Clearing: {{{1 @@ -13,40 +13,59 @@ endif " --------------------------------------------------------------------- " Directory List Syntax Highlighting: {{{1 -syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion +syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion,netrwCopyTgt +syn cluster NetrwTreeGroup contains=netrwDir,netrwSymLink,netrwExe -syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify -syn match netrwDir "\.\{1,2}/" contains=netrwClassify -syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify -syn match netrwDir "^\S*/" contains=netrwClassify -syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" contains=netrwDateSep skipwhite nextgroup=netrwTime -syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify -syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify,netrwTreeIgnore -syn match netrwTreeIgnore contained "^\%(| \)*" +syn match netrwSpecial "\%(\S\+ \)*\S\+[*|=]\ze\%(\s\{2,}\|$\)" contains=netrwClassify +syn match netrwDir "\.\{1,2}/" contains=netrwClassify +syn match netrwDir "\%(\S\+ \)*\S\+/" contains=netrwClassify +syn match netrwSizeDate "\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s" contains=netrwDateSep skipwhite nextgroup=netrwTime +syn match netrwSymLink "\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)" contains=netrwClassify +syn match netrwExe "\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" contains=netrwClassify +syn match netrwTreeBar "^\%(| \)*" contains=netrwTreeBarSpace nextgroup=@netrwTreeGroup +syn match netrwTreeBarSpace " " contained syn match netrwClassify "[*=|@/]\ze\%(\s\{2,}\|$\)" contained syn match netrwDateSep "/" contained -syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep +syn match netrwTime "\d\{1,2}:\d\{2}:\d\{2}" contained contains=netrwTimeSep syn match netrwTimeSep ":" -syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup +syn match netrwComment '".*\%(\t\|$\)' contains=@NetrwGroup syn match netrwHide '^"\s*\(Hid\|Show\)ing:' skipwhite nextgroup=netrwHidePat syn match netrwSlash "/" contained syn match netrwHidePat "[^,]\+" contained skipwhite nextgroup=netrwHideSep syn match netrwHideSep "," contained transparent skipwhite nextgroup=netrwHidePat syn match netrwSortBy "Sorted by" contained transparent skipwhite nextgroup=netrwList syn match netrwSortSeq "Sort sequence:" contained transparent skipwhite nextgroup=netrwList -syn match netrwList ".*$" contained contains=netrwComma +syn match netrwCopyTgt "Copy/Move Tgt:" contained transparent skipwhite nextgroup=netrwList +syn match netrwList ".*$" contained contains=netrwComma syn match netrwComma "," contained -syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd keepend contained +syn region netrwQuickHelp matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd keepend contained syn match netrwHelpCmd "\S\ze:" contained skipwhite nextgroup=netrwCmdSep syn match netrwCmdSep ":" contained nextgroup=netrwCmdNote syn match netrwCmdNote ".\{-}\ze " contained syn match netrwVersion "(netrw.*)" contained +" ----------------------------- +" Special filetype highlighting {{{1 +" ----------------------------- +if exists("g:netrw_special_syntax") && netrw_special_syntax + syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar + syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar + syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar + syn match netrwHdr "\(\S\+ \)*\S\+\.h\>" contains=netrwTreeBar + syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar + syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar + syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar + syn match netrwTags "\" contains=netrwTreeBar + syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar + syn match netrwTilde "\(\S\+ \)*\S\+\~\>" contains=netrwTreeBar + syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar +endif + " --------------------------------------------------------------------- " Highlighting Links: {{{1 -if !exists("did_drchip_dbg_syntax") +if !exists("did_drchip_netrwlist_syntax") let did_drchip_netrwlist_syntax= 1 hi link netrwClassify Function hi link netrwCmdSep Delimiter @@ -56,13 +75,26 @@ if !exists("did_drchip_dbg_syntax") hi link netrwHidePat Statement hi link netrwList Statement hi link netrwVersion Identifier - hi link netrwSymLink Special + hi link netrwSymLink Question hi link netrwExe PreProc hi link netrwDateSep Delimiter + hi link netrwTreeBar Special hi link netrwTimeSep netrwDateSep hi link netrwComma netrwComment hi link netrwHide netrwComment + hi link netrwMarkFile Identifier + + " special syntax highlighting (see :he g:netrw_special_syntax) + hi link netrwBak NonText + hi link netrwCompress Folded + hi link netrwData DiffChange + hi link netrwLib DiffChange + hi link netrwMakefile DiffChange + hi link netrwObj Folded + hi link netrwTilde Folded + hi link netrwTmp Folded + hi link netrwTags Folded endif " Current Syntax: {{{1 diff --git a/runtime/syntax/objcpp.vim b/runtime/syntax/objcpp.vim index 5ce380cc..e80eed90 100644 --- a/runtime/syntax/objcpp.vim +++ b/runtime/syntax/objcpp.vim @@ -1,7 +1,8 @@ " Vim syntax file -" Language: ObjC++ -" Maintainer: Anthony Hodsdon -" Last change: 2003 Apr 25 +" Language: Objective C++ +" Maintainer: Kazunobu Kuriyama +" Ex-Maintainer: Anthony Hodsdon +" Last Change: 2007 Oct 29 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -14,17 +15,13 @@ endif " Read in C++ and ObjC syntax files if version < 600 so :p:h/cpp.vim - so :p:h/objc.vim + so :p:h/objc.vim else runtime! syntax/cpp.vim unlet b:current_syntax runtime! syntax/objc.vim endif -" Note that we already have a region for method calls ( [objc_class method] ) -" by way of cBracket. -syn region objCFunc start="^\s*[-+]" end="$" contains=ALLBUT,cErrInParen,cErrInBracket - syn keyword objCppNonStructure class template namespace transparent contained syn keyword objCppNonStatement new delete friend using transparent contained diff --git a/runtime/syntax/pdf.vim b/runtime/syntax/pdf.vim new file mode 100644 index 00000000..86d80daa --- /dev/null +++ b/runtime/syntax/pdf.vim @@ -0,0 +1,73 @@ +" Vim syntax file +" Language: PDF +" Maintainer: Tim Pope +" Last Change: 2007 Dec 16 + +if exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'pdf' +endif + +syn include @pdfXML syntax/xml.vim + +syn case match + +syn cluster pdfObjects contains=pdfBoolean,pdfConstant,pdfNumber,pdfFloat,pdfName,pdfHexString,pdfString,pdfArray,pdfHash,pdfReference,pdfComment +syn keyword pdfBoolean true false contained +syn keyword pdfConstant null contained +syn match pdfNumber "[+-]\=\<\d\+\>" +syn match pdfFloat "[+-]\=\<\%(\d\+\.\|\d*\.\d\+\)\>" contained + +syn match pdfNameError "#\X\|#\x\X\|#00" contained containedin=pdfName +syn match pdfSpecialChar "#\x\x" contained containedin=pdfName +syn match pdfName "/[^[:space:]\[\](){}<>/]*" contained +syn match pdfHexError "[^[:space:][:xdigit:]<>]" contained +"syn match pdfHexString "<\s*\x[^<>]*\x\s*>" contained contains=pdfHexError +"syn match pdfHexString "<\s*\x\=\s*>" contained +syn region pdfHexString matchgroup=pdfDelimiter start="<<\@!" end=">" contained contains=pdfHexError +syn match pdfStringError "\\." contained containedin=pdfString +syn match pdfSpecialChar "\\\%(\o\{1,3\}\|[nrtbf()\\]\)" contained containedin=pdfString +syn region pdfString matchgroup=pdfDelimiter start="\\\@>" contains=@pdfObjects contained +syn match pdfReference "\<\d\+\s\+\d\+\s\+R\>" +"syn keyword pdfOperator R contained containedin=pdfReference + +syn region pdfObject matchgroup=pdfType start="\" end="\" contains=@pdfObjects +syn region pdfObject matchgroup=pdfType start="\:p:h/html.vim else - runtime syntax/html.vim + runtime! syntax/html.vim unlet b:current_syntax endif diff --git a/runtime/syntax/phtml.vim b/runtime/syntax/phtml.vim dissimilarity index 99% index 2ff6dd95..646129a2 100644 --- a/runtime/syntax/phtml.vim +++ b/runtime/syntax/phtml.vim @@ -1,244 +1,6 @@ -" Vim syntax file -" Language: phtml PHP 2.0 -" Maintainer: Lutz Eymers -" URL: http://www.isp.de/data/phtml.vim -" Email: Subject: send syntax_vim.tgz -" Last change: 2003 May 11 -" -" Options phtml_sql_query = 1 for SQL syntax highligthing inside strings -" phtml_minlines = x to sync at least x lines backwards - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if !exists("main_syntax") - let main_syntax = 'phtml' -endif - -if version < 600 - so :p:h/html.vim -else - runtime! syntax/html.vim - unlet b:current_syntax -endif - -syn cluster htmlPreproc add=phtmlRegionInsideHtmlTags - -if exists( "phtml_sql_query") - if phtml_sql_query == 1 - syn include @phtmlSql :p:h/sql.vim - unlet b:current_syntax - endif -endif -syn cluster phtmlSql remove=sqlString,sqlComment - -syn case match - -" Env Variables -syn keyword phtmlEnvVar SERVER_SOFTWARE SERVER_NAME SERVER_URL GATEWAY_INTERFACE contained -syn keyword phtmlEnvVar SERVER_PROTOCOL SERVER_PORT REQUEST_METHOD PATH_INFO contained -syn keyword phtmlEnvVar PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST contained -syn keyword phtmlEnvVar REMOTE_ADDR AUTH_TYPE REMOTE_USER CONTEN_TYPE contained -syn keyword phtmlEnvVar CONTENT_LENGTH HTTPS HTTPS_KEYSIZE HTTPS_SECRETKEYSIZE contained -syn keyword phtmlEnvVar HTTP_ACCECT HTTP_USER_AGENT HTTP_IF_MODIFIED_SINCE contained -syn keyword phtmlEnvVar HTTP_FROM HTTP_REFERER contained -syn keyword phtmlEnvVar PHP_SELF contained - -syn case ignore - -" Internal Variables -syn keyword phtmlIntVar phperrmsg php_self contained - -" Comment -syn region phtmlComment start="/\*" end="\*/" contained contains=phtmlTodo - -" Function names -syn keyword phtmlFunctions Abs Ada_Close Ada_Connect Ada_Exec Ada_FetchRow contained -syn keyword phtmlFunctions Ada_FieldName Ada_FieldNum Ada_FieldType contained -syn keyword phtmlFunctions Ada_FreeResult Ada_NumFields Ada_NumRows Ada_Result contained -syn keyword phtmlFunctions Ada_ResultAll AddSlashes ASort BinDec Ceil ChDir contained -syn keyword phtmlFunctions AdaGrp ChMod ChOwn Chop Chr ClearStack ClearStatCache contained -syn keyword phtmlFunctions closeDir CloseLog Cos Count Crypt Date dbList contained -syn keyword phtmlFunctions dbmClose dbmDelete dbmExists dbmFetch dbmFirstKey contained -syn keyword phtmlFunctions dbmInsert dbmNextKey dbmOpen dbmReplace DecBin DecHex contained -syn keyword phtmlFunctions DecOct doubleval Echo End ereg eregi ereg_replace contained -syn keyword phtmlFunctions eregi_replace EscapeShellCmd Eval Exec Exit Exp contained -syn keyword phtmlFunctions fclose feof fgets fgetss File fileAtime fileCtime contained -syn keyword phtmlFunctions fileGroup fileInode fileMtime fileOwner filePerms contained -syn keyword phtmlFunctions fileSize fileType Floor Flush fopen fputs FPassThru contained -syn keyword phtmlFunctions fseek fsockopen ftell getAccDir GetEnv getHostByName contained -syn keyword phtmlFunctions getHostByAddr GetImageSize getLastAcess contained -syn keyword phtmlFunctions getLastbrowser getLastEmail getLastHost getLastMod contained -syn keyword phtmlFunctions getLastref getLogDir getMyInode getMyPid getMyUid contained -syn keyword phtmlFunctions getRandMax getStartLogging getToday getTotal GetType contained -syn keyword phtmlFunctions gmDate Header HexDec HtmlSpecialChars ImageArc contained -syn keyword phtmlFunctions ImageChar ImageCharUp IamgeColorAllocate contained -syn keyword phtmlFunctions ImageColorTransparent ImageCopyResized ImageCreate contained -syn keyword phtmlFunctions ImageCreateFromGif ImageDestroy ImageFill contained -syn keyword phtmlFunctions ImageFilledPolygon ImageFilledRectangle contained -syn keyword phtmlFunctions ImageFillToBorder ImageGif ImageInterlace ImageLine contained -syn keyword phtmlFunctions ImagePolygon ImageRectangle ImageSetPixel contained -syn keyword phtmlFunctions ImageString ImageStringUp ImageSX ImageSY Include contained -syn keyword phtmlFunctions InitSyslog intval IsSet Key Link LinkInfo Log Log10 contained -syn keyword phtmlFunctions LosAs Mail Max Md5 mi_Close mi_Connect mi_DBname contained -syn keyword phtmlFunctions mi_Exec mi_FieldName mi_FieldNum mi_NumFields contained -syn keyword phtmlFunctions mi_NumRows mi_Result Microtime Min MkDir MkTime msql contained -syn keyword phtmlFunctions msql_connect msql_CreateDB msql_dbName msql_DropDB contained -syn keyword phtmlFunctions msqlFieldFlags msql_FieldLen msql_FieldName contained -syn keyword phtmlFunctions msql_FieldType msql_FreeResult msql_ListDBs contained -syn keyword phtmlFunctions msql_Listfields msql_ListTables msql_NumFields contained -syn keyword phtmlFunctions msql_NumRows msql_RegCase msql_Result msql_TableName contained -syn keyword phtmlFunctions mysql mysql_affected_rows mysql_close mysql_connect contained -syn keyword phtmlFunctions mysql_CreateDB mysql_dbName mysqlDropDB contained -syn keyword phtmlFunctions mysql_FieldFlags mysql_FieldLen mysql_FieldName contained -syn keyword phtmlFunctions mysql_FieldType mysql_FreeResult mysql_insert_id contained -syn keyword phtmlFunctions mysql_listDBs mysql_Listfields mysql_ListTables contained -syn keyword phtmlFunctions mysql_NumFields mysql_NumRows mysql_Result contained -syn keyword phtmlFunctions mysql_TableName Next OctDec openDir OpenLog contained -syn keyword phtmlFunctions Ora_Bind Ora_Close Ora_Commit Ora_CommitOff contained -syn keyword phtmlFunctions Ora_CommitOn Ora_Exec Ora_Fetch Ora_GetColumn contained -syn keyword phtmlFunctions Ora_Logoff Ora_Logon Ora_Parse Ora_Rollback Ord contained -syn keyword phtmlFunctions Parse_str PassThru pclose pg_Close pg_Connect contained -syn keyword phtmlFunctions pg_DBname pg_ErrorMessage pg_Exec pg_FieldName contained -syn keyword phtmlFunctions pg_FieldPrtLen pg_FieldNum pg_FieldSize contained -syn keyword phtmlFunctions pg_FieldType pg_FreeResult pg_GetLastOid pg_Host contained -syn keyword phtmlFunctions pg_NumFields pg_NumRows pg_Options pg_Port contained -syn keyword phtmlFunctions pg_Result pg_tty phpInfo phpVersion popen pos pow contained -syn keyword phtmlFunctions Prev PutEnv QuoteMeta Rand readDir ReadFile ReadLink contained -syn keyword phtmlFunctions reg_Match reg_replace reg_Search Rename Reset return contained -syn keyword phtmlFunctions rewind rewindDir RmDir rSort SetCookie SetErrorReporting contained -syn keyword phtmlFunctions SetLogging SetShowInfo SetType shl shr Sin Sleep contained -syn keyword phtmlFunctions Solid_Close Solid_Connect Solid_Exec Solid_FetchRow contained -syn keyword phtmlFunctions Solid_FieldName Solid_FieldNum Solid_FreeResult contained -syn keyword phtmlFunctions Solid_NumFields Solid_NumRows Solid_Result Sort contained -syn keyword phtmlFunctions Spundtex Sprintf Sqrt Srand strchr strtr contained -syn keyword phtmlFunctions StripSlashes strlen strchr strstr strtok strtolower contained -syn keyword phtmlFunctions strtoupper strval substr sybSQL_CheckConnect contained -syn keyword phtmlFunctions sybSQL_DBUSE sybSQL_Connect sybSQL_Exit contained -syn keyword phtmlFunctions sybSQL_Fieldname sybSQL_GetField sybSQL_IsRow contained -syn keyword phtmlFunctions sybSQL_NextRow sybSQL_NumFields sybSQL_NumRows contained -syn keyword phtmlFunctions sybSQL_Query sybSQL_Result sybSQL_Result sybSQL_Seek contained -syn keyword phtmlFunctions Symlink syslog System Tan TempNam Time Umask UniqId contained -syn keyword phtmlFunctions Unlink Unset UrlDecode UrlEncode USleep Virtual contained -syn keyword phtmlFunctions SecureVar contained - -" Conditional -syn keyword phtmlConditional if else elseif endif switch endswitch contained - -" Repeat -syn keyword phtmlRepeat while endwhile contained - -" Repeat -syn keyword phtmlLabel case default contained - -" Statement -syn keyword phtmlStatement break return continue exit contained - -" Operator -syn match phtmlOperator "[-=+%^&|*!]" contained -syn match phtmlOperator "[-+*/%^&|]=" contained -syn match phtmlOperator "/[^*]"me=e-1 contained -syn match phtmlOperator "\$" contained -syn match phtmlRelation "&&" contained -syn match phtmlRelation "||" contained -syn match phtmlRelation "[!=<>]=" contained -syn match phtmlRelation "[<>]" contained - -" Identifier -syn match phtmlIdentifier "$\h\w*" contained contains=phtmlEnvVar,phtmlIntVar,phtmlOperator - - -" Include -syn keyword phtmlInclude include contained - -" Definesag -syn keyword phtmlDefine Function contained - -" String -syn region phtmlString keepend matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=phtmlIdentifier,phtmlSpecialChar,@phtmlSql contained - -" Number -syn match phtmlNumber "-\=\<\d\+\>" contained - -" Float -syn match phtmlFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained - -" SpecialChar -syn match phtmlSpecialChar "\\[abcfnrtyv\\]" contained -syn match phtmlSpecialChar "\\\d\{3}" contained contains=phtmlOctalError -syn match phtmlSpecialChar "\\x[0-9a-fA-F]\{2}" contained - -syn match phtmlOctalError "[89]" contained - - -syn match phtmlParentError "[)}\]]" contained - -" Todo -syn keyword phtmlTodo TODO Todo todo contained - -" Parents -syn cluster phtmlInside contains=phtmlComment,phtmlFunctions,phtmlIdentifier,phtmlConditional,phtmlRepeat,phtmlLabel,phtmlStatement,phtmlOperator,phtmlRelation,phtmlString,phtmlNumber,phtmlFloat,phtmlSpecialChar,phtmlParent,phtmlParentError,phtmlInclude - -syn cluster phtmlTop contains=@phtmlInside,phtmlInclude,phtmlDefine,phtmlParentError,phtmlTodo -syn region phtmlParent matchgroup=Delimiter start="(" end=")" contained contains=@phtmlInside -syn region phtmlParent matchgroup=Delimiter start="{" end="}" contained contains=@phtmlInside -syn region phtmlParent matchgroup=Delimiter start="\[" end="\]" contained contains=@phtmlInside - -syn region phtmlRegion keepend matchgroup=Delimiter start=".*)\|".\{-}>.\{-}"\|/\*.\{-}>.\{-}\*/+ end=">" contains=@phtmlTop -syn region phtmlRegionInsideHtmlTags keepend matchgroup=Delimiter start=".*)\|/\*.\{-}>.\{-}\*/+ end=">" contains=@phtmlTop contained - -" sync -if exists("phtml_minlines") - exec "syn sync minlines=" . phtml_minlines -else - syn sync minlines=100 -endif - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_phtml_syn_inits") - if version < 508 - let did_phtml_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink phtmlComment Comment - HiLink phtmlString String - HiLink phtmlNumber Number - HiLink phtmlFloat Float - HiLink phtmlIdentifier Identifier - HiLink phtmlIntVar Identifier - HiLink phtmlEnvVar Identifier - HiLink phtmlFunctions Function - HiLink phtmlRepeat Repeat - HiLink phtmlConditional Conditional - HiLink phtmlLabel Label - HiLink phtmlStatement Statement - HiLink phtmlType Type - HiLink phtmlInclude Include - HiLink phtmlDefine Define - HiLink phtmlSpecialChar SpecialChar - HiLink phtmlParentError Error - HiLink phtmlOctalError Error - HiLink phtmlTodo Todo - HiLink phtmlOperator Operator - HiLink phtmlRelation Operator - - delcommand HiLink -endif - -let b:current_syntax = "phtml" - -if main_syntax == 'phtml' - unlet main_syntax -endif - -" vim: ts=8 +" Vim syntax file +" PHTML used to be the filetype for PHP 2.0. Now everything is PHP. + +if !exists("b:current_syntax") + runtime! syntax/php.vim +endif diff --git a/runtime/syntax/pinfo.vim b/runtime/syntax/pinfo.vim index 57d37d47..bf4126e5 100644 --- a/runtime/syntax/pinfo.vim +++ b/runtime/syntax/pinfo.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: pinfo(1) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,_,- +setlocal iskeyword+=- syn case ignore diff --git a/runtime/syntax/po.vim b/runtime/syntax/po.vim index 3bb39b17..06b6e42f 100644 --- a/runtime/syntax/po.vim +++ b/runtime/syntax/po.vim @@ -1,7 +1,10 @@ " Vim syntax file " Language: po (gettext) " Maintainer: Dwayne Bailey -" Last Change: 2004 Nov 13 +" Last Change: 2007 Aug 23 +" Contributors: Dwayne Bailey (Most advanced syntax highlighting) +" Leonardo Fontenelle (Spell checking) +" Nam SungHyun (Original maintainer) " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -14,6 +17,7 @@ endif syn sync minlines=10 " Identifiers +syn match poStatementMsgCTxt "^msgctxt" syn match poStatementMsgidplural "^msgid_plural" contained syn match poPluralCaseN "[0-9]" contained syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN @@ -24,16 +28,18 @@ syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1 syn region poHtmlTranslatables start=+alt=\\"+ms=e-1 end=+\\"+ contained " Translation blocks +syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr +syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained - \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAccelerator,poHtmlNot,poVariable + \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained - \ contains=poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAccelerator,poHtmlNot,poVariable + \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable " Header and Copyright syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained -syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME \|LANGUAGE \|text/plain; charset=CHARSET\|ENCODING\)" contained +syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME \|LANGUAGE \|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR , YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained " Translation comment block including: translator comment, automatic coments, flags and locations @@ -63,7 +69,8 @@ syn match poObsolete "^#\~.*$" syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1 " Accelerator keys - this messes up if the preceding or following char is a multibyte unicode char -syn match poAccelerator contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 +syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 +syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell " Variables simple syn match poVariable contained "%\d" @@ -91,8 +98,10 @@ if version >= 508 || !exists("did_po_syn_inits") HiLink poStatementMsgid Statement HiLink poStatementMsgstr Statement HiLink poStatementMsgidplural Statement + HiLink poStatementMsgCTxt Statement HiLink poPluralCaseN Constant + HiLink poStringCTxt Comment HiLink poStringID String HiLink poStringSTR String HiLink poCommentKDE Comment @@ -109,8 +118,9 @@ if version >= 508 || !exists("did_po_syn_inits") HiLink poFormat poSpecial HiLink poSpecial Special - HiLink poAccelerator Special - HiLink poVariable Special + HiLink poAcceleratorId Special + HiLink poAcceleratorStr Special + HiLink poVariable Special HiLink poMsguniqError Special HiLink poMsguniqErrorMarkers Comment diff --git a/runtime/syntax/postscr.vim b/runtime/syntax/postscr.vim index 40dbcec5..fddfe4c9 100644 --- a/runtime/syntax/postscr.vim +++ b/runtime/syntax/postscr.vim @@ -2,16 +2,16 @@ " Language: PostScript - all Levels, selectable " Maintainer: Mike Williams " Filenames: *.ps,*.eps -" Last Change: 27th June 2002 -" URL: http://www.eandem.co.uk/mrw/vim +" Last Change: 31st October 2007 +" URL: http://www.eandem.co.uk/mrw/vim " " Options Flags: -" postscr_level - language level to use for highligting (1, 2, or 3) -" postscr_display - include display PS operators -" postscr_ghostscript - include GS extensions -" postscr_fonts - highlight standard font names (a lot for PS 3) -" postscr_encodings - highlight encoding names (there are a lot) -" postscr_andornot_binary - highlight and, or, and not as binary operators (not logical) +" postscr_level - language level to use for highligting (1, 2, or 3) +" postscr_display - include display PS operators +" postscr_ghostscript - include GS extensions +" postscr_fonts - highlight standard font names (a lot for PS 3) +" postscr_encodings - highlight encoding names (there are a lot) +" postscr_andornot_binary - highlight and, or, and not as binary operators (not logical) " " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -35,16 +35,16 @@ endif syn keyword postscrTodo contained TODO " Comment -syn match postscrComment "%.*$" contains=postscrTodo +syn match postscrComment "%.*$" contains=postscrTodo,@Spell " DSC comment start line (NB: defines DSC level, not PS level!) -syn match postscrDSCComment "^%!PS-Adobe-\d\+\.\d\+\s*.*$" +syn match postscrDSCComment "^%!PS-Adobe-\d\+\.\d\+\s*.*$" " DSC comment line (no check on possible comments - another language!) -syn match postscrDSCComment "^%%\u\+.*$" contains=@postscrString,@postscrNumber +syn match postscrDSCComment "^%%\u\+.*$" contains=@postscrString,@postscrNumber,@Spell " DSC continuation line (no check that previous line is DSC comment) -syn match postscrDSCComment "^%%+ *.*$" contains=@postscrString,@postscrNumber +syn match postscrDSCComment "^%%+ *.*$" contains=@postscrString,@postscrNumber,@Spell " Names -syn match postscrName "\k\+" +syn match postscrName "\k\+" " Identifiers syn match postscrIdentifierError "/\{1,2}[[:space:]\[\]{}]"me=e-1 @@ -53,18 +53,18 @@ syn match postscrIdentifier "/\{1,2}\k\+" contains=postscrConstant,postscrBo " Numbers syn case ignore " In file hex data - usually complete lines -syn match postscrHex "^[[:xdigit:]][[:xdigit:][:space:]]*$" -"syn match postscrHex "\<\x\{2,}\>" +syn match postscrHex "^[[:xdigit:]][[:xdigit:][:space:]]*$" +"syn match postscrHex "\<\x\{2,}\>" " Integers -syn match postscrInteger "\<[+-]\=\d\+\>" +syn match postscrInteger "\<[+-]\=\d\+\>" " Radix -syn match postscrRadix "\d\+#\x\+\>" +syn match postscrRadix "\d\+#\x\+\>" " Reals - upper and lower case e is allowed -syn match postscrFloat "[+-]\=\d\+\.\>" -syn match postscrFloat "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>" -syn match postscrFloat "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>" -syn match postscrFloat "[+-]\=\d\+e[+-]\=\d\+\>" -syn cluster postscrNumber contains=postscrInteger,postscrRadix,postscrFloat +syn match postscrFloat "[+-]\=\d\+\.\>" +syn match postscrFloat "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>" +syn match postscrFloat "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>" +syn match postscrFloat "[+-]\=\d\+e[+-]\=\d\+\>" +syn cluster postscrNumber contains=postscrInteger,postscrRadix,postscrFloat syn case match " Escaped characters @@ -75,7 +75,8 @@ syn match postscrSpecialChar contained "\\\o\{1,3}" " Strings " ASCII strings -syn region postscrASCIIString start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError +syn region postscrASCIIString start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError,@Spell +syn match postscrASCIIStringError ")" " Hex strings syn match postscrHexCharError contained "[^<>[:xdigit:][:space:]]" syn region postscrHexString start=+<\($\|[^<]\)+ end=+>+ contains=postscrHexCharError @@ -342,61 +343,61 @@ endif " By default level 3 includes all level 2 operators if postscr_level == 2 || postscr_level == 3 " Dictionary operators - syn match postscrOperator "\(<<\|>>\)" - syn keyword postscrOperator undef + syn match postscrL2Operator "\(<<\|>>\)" + syn keyword postscrL2Operator undef syn keyword postscrConstant globaldict shareddict " Device operators - syn keyword postscrOperator setpagedevice currentpagedevice + syn keyword postscrL2Operator setpagedevice currentpagedevice " Path operators - syn keyword postscrOperator rectclip setbbox uappend ucache upath ustrokepath arct + syn keyword postscrL2Operator rectclip setbbox uappend ucache upath ustrokepath arct " Painting operators - syn keyword postscrOperator rectfill rectstroke ufill ueofill ustroke + syn keyword postscrL2Operator rectfill rectstroke ufill ueofill ustroke " Array operators - syn keyword postscrOperator currentpacking setpacking packedarray + syn keyword postscrL2Operator currentpacking setpacking packedarray " Misc operators - syn keyword postscrOperator languagelevel + syn keyword postscrL2Operator languagelevel " Insideness operators - syn keyword postscrOperator infill ineofill instroke inufill inueofill inustroke + syn keyword postscrL2Operator infill ineofill instroke inufill inueofill inustroke " GState operators - syn keyword postscrOperator gstate setgstate currentgstate setcolor - syn keyword postscrOperator setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust - syn keyword postscrOperator currentcolor + syn keyword postscrL2Operator gstate setgstate currentgstate setcolor + syn keyword postscrL2Operator setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust + syn keyword postscrL2Operator currentcolor " Device gstate operators - syn keyword postscrOperator sethalftone currenthalftone setoverprint currentoverprint - syn keyword postscrOperator setcolorrendering currentcolorrendering + syn keyword postscrL2Operator sethalftone currenthalftone setoverprint currentoverprint + syn keyword postscrL2Operator setcolorrendering currentcolorrendering " Character operators - syn keyword postscrConstant GlobalFontDirectory SharedFontDirectory - syn keyword postscrOperator glyphshow selectfont - syn keyword postscrOperator addglyph undefinefont xshow xyshow yshow + syn keyword postscrL2Constant GlobalFontDirectory SharedFontDirectory + syn keyword postscrL2Operator glyphshow selectfont + syn keyword postscrL2Operator addglyph undefinefont xshow xyshow yshow " Pattern operators - syn keyword postscrOperator makepattern setpattern execform + syn keyword postscrL2Operator makepattern setpattern execform " Resource operators - syn keyword postscrOperator defineresource undefineresource findresource resourcestatus - syn keyword postscrRepeat resourceforall + syn keyword postscrL2Operator defineresource undefineresource findresource resourcestatus + syn keyword postscrL2Repeat resourceforall " File operators - syn keyword postscrOperator filter printobject writeobject setobjectformat currentobjectformat + syn keyword postscrL2Operator filter printobject writeobject setobjectformat currentobjectformat " VM operators - syn keyword postscrOperator currentshared setshared defineuserobject execuserobject undefineuserobject - syn keyword postscrOperator gcheck scheck startjob currentglobal setglobal + syn keyword postscrL2Operator currentshared setshared defineuserobject execuserobject undefineuserobject + syn keyword postscrL2Operator gcheck scheck startjob currentglobal setglobal syn keyword postscrConstant UserObjects " Interpreter operators - syn keyword postscrOperator setucacheparams setvmthreshold ucachestatus setsystemparams - syn keyword postscrOperator setuserparams currentuserparams setcacheparams currentcacheparams - syn keyword postscrOperator currentdevparams setdevparams vmreclaim currentsystemparams + syn keyword postscrL2Operator setucacheparams setvmthreshold ucachestatus setsystemparams + syn keyword postscrL2Operator setuserparams currentuserparams setcacheparams currentcacheparams + syn keyword postscrL2Operator currentdevparams setdevparams vmreclaim currentsystemparams " PS2 constants syn keyword postscrConstant contained DeviceCMYK Pattern Indexed Separation Cyan Magenta Yellow Black @@ -491,52 +492,52 @@ if postscr_level == 2 || postscr_level == 3 syn keyword postscrConstant contained Predictor " Paper Size operators - syn keyword postscrOperator letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note + syn keyword postscrL2Operator letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note " Paper Tray operators - syn keyword postscrOperator lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray + syn keyword postscrL2Operator lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray " SCC compatibility operators - syn keyword postscrOperator sccbatch sccinteractive setsccbatch setsccinteractive + syn keyword postscrL2Operator sccbatch sccinteractive setsccbatch setsccinteractive " Page duplexing operators - syn keyword postscrOperator duplexmode firstside newsheet setduplexmode settumble tumble + syn keyword postscrL2Operator duplexmode firstside newsheet setduplexmode settumble tumble " Device compatability operators - syn keyword postscrOperator devdismount devformat devmount devstatus - syn keyword postscrRepeat devforall + syn keyword postscrL2Operator devdismount devformat devmount devstatus + syn keyword postscrL2Repeat devforall " Imagesetter compatability operators - syn keyword postscrOperator accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage - syn keyword postscrOperator setpagemargin setpageparams + syn keyword postscrL2Operator accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage + syn keyword postscrL2Operator setpagemargin setpageparams " Misc compatability operators - syn keyword postscrOperator appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline - syn keyword postscrOperator diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount - syn keyword postscrOperator pagestackorder printername processcolors sethardwareiomode setjobtimeout - syn keyword postscrOperator setpagestockorder setprintername setresolution doprinterrors dostartpage - syn keyword postscrOperator hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution - syn keyword postscrOperator setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart - syn keyword postscrOperator setuserdiskpercent softwareiomode userdiskpercent waittimeout - syn keyword postscrOperator setsoftwareiomode dosysstart emulate setmargins setmirrorprint + syn keyword postscrL2Operator appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline + syn keyword postscrL2Operator diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount + syn keyword postscrL2Operator pagestackorder printername processcolors sethardwareiomode setjobtimeout + syn keyword postscrL2Operator setpagestockorder setprintername setresolution doprinterrors dostartpage + syn keyword postscrL2Operator hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution + syn keyword postscrL2Operator setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart + syn keyword postscrL2Operator setuserdiskpercent softwareiomode userdiskpercent waittimeout + syn keyword postscrL2Operator setsoftwareiomode dosysstart emulate setmargins setmirrorprint endif " PS2 highlighting if postscr_level == 3 " Shading operators - syn keyword postscrOperator setsmoothness currentsmoothness shfill + syn keyword postscrL3Operator setsmoothness currentsmoothness shfill " Clip operators - syn keyword postscrOperator clipsave cliprestore + syn keyword postscrL3Operator clipsave cliprestore " Pagedevive operators - syn keyword postscrOperator setpage setpageparams + syn keyword postscrL3Operator setpage setpageparams " Device gstate operators - syn keyword postscrOperator findcolorrendering + syn keyword postscrL3Operator findcolorrendering " Font operators - syn keyword postscrOperator composefont + syn keyword postscrL3Operator composefont " PS LL3 Output device resource entries syn keyword postscrConstant contained DeviceN TrappingDetailsType @@ -658,56 +659,56 @@ endif " PS LL3 highlighting if exists("postscr_ghostscript") " GS gstate operators - syn keyword postscrOperator .setaccuratecurves .currentaccuratecurves .setclipoutside - syn keyword postscrOperator .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength - syn keyword postscrOperator .currentdotlength .setfilladjust2 .currentfilladjust2 - syn keyword postscrOperator .currentclipoutside .setcurvejoin .currentcurvejoin - syn keyword postscrOperator .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha - syn keyword postscrOperator .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode + syn keyword postscrGSOperator .setaccuratecurves .currentaccuratecurves .setclipoutside + syn keyword postscrGSOperator .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength + syn keyword postscrGSOperator .currentdotlength .setfilladjust2 .currentfilladjust2 + syn keyword postscrGSOperator .currentclipoutside .setcurvejoin .currentcurvejoin + syn keyword postscrGSOperator .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha + syn keyword postscrGSOperator .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode " GS path operators - syn keyword postscrOperator .dashpath .rectappend + syn keyword postscrGSOperator .dashpath .rectappend " GS painting operators - syn keyword postscrOperator .setrasterop .currentrasterop .setsourcetransparent - syn keyword postscrOperator .settexturetransparent .currenttexturetransparent - syn keyword postscrOperator .currentsourcetransparent + syn keyword postscrGSOperator .setrasterop .currentrasterop .setsourcetransparent + syn keyword postscrGSOperator .settexturetransparent .currenttexturetransparent + syn keyword postscrGSOperator .currentsourcetransparent " GS character operators - syn keyword postscrOperator .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph + syn keyword postscrGSOperator .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph " GS mathematical operators - syn keyword postscrMathOperator arccos arcsin + syn keyword postscrGSMathOperator arccos arcsin " GS dictionary operators - syn keyword postscrOperator .dicttomark .forceput .forceundef .knownget .setmaxlength + syn keyword postscrGSOperator .dicttomark .forceput .forceundef .knownget .setmaxlength " GS byte and string operators - syn keyword postscrOperator .type1encrypt .type1decrypt - syn keyword postscrOperator .bytestring .namestring .stringmatch + syn keyword postscrGSOperator .type1encrypt .type1decrypt + syn keyword postscrGSOperator .bytestring .namestring .stringmatch " GS relational operators (seem like math ones to me!) - syn keyword postscrMathOperator max min + syn keyword postscrGSMathOperator max min " GS file operators - syn keyword postscrOperator findlibfile unread writeppmfile - syn keyword postscrOperator .filename .fileposition .peekstring .unread + syn keyword postscrGSOperator findlibfile unread writeppmfile + syn keyword postscrGSOperator .filename .fileposition .peekstring .unread " GS vm operators - syn keyword postscrOperator .forgetsave + syn keyword postscrGSOperator .forgetsave " GS device operators - syn keyword postscrOperator copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines - syn keyword postscrOperator setdevice currentdevice getdeviceprops putdeviceprops flushpage - syn keyword postscrOperator finddevice findprotodevice .getbitsrect + syn keyword postscrGSOperator copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines + syn keyword postscrGSOperator setdevice currentdevice getdeviceprops putdeviceprops flushpage + syn keyword postscrGSOperator finddevice findprotodevice .getbitsrect " GS misc operators - syn keyword postscrOperator getenv .makeoperator .setdebug .oserrno .oserror .execn + syn keyword postscrGSOperator getenv .makeoperator .setdebug .oserrno .oserror .execn " GS rendering stack operators - syn keyword postscrOperator .begintransparencygroup .discardtransparencygroup .endtransparencygroup - syn keyword postscrOperator .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask - syn keyword postscrOperator .settextknockout .currenttextknockout + syn keyword postscrGSOperator .begintransparencygroup .discardtransparencygroup .endtransparencygroup + syn keyword postscrGSOperator .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask + syn keyword postscrGSOperator .settextknockout .currenttextknockout " GS filters syn keyword postscrConstant contained BCPEncode BCPDecode eexecEncode eexecDecode PCXDecode @@ -739,42 +740,55 @@ if version >= 508 || !exists("did_postscr_syntax_inits") command -nargs=+ HiLink hi def link endif - HiLink postscrComment Comment - - HiLink postscrConstant Constant - HiLink postscrString String - HiLink postscrASCIIString postscrString - HiLink postscrHexString postscrString - HiLink postscrASCII85String postscrString - HiLink postscrNumber Number - HiLink postscrInteger postscrNumber - HiLink postscrHex postscrNumber - HiLink postscrRadix postscrNumber - HiLink postscrFloat Float - HiLink postscrBoolean Boolean - - HiLink postscrIdentifier Identifier - HiLink postscrProcedure Function - - HiLink postscrName Statement - HiLink postscrConditional Conditional - HiLink postscrRepeat Repeat - HiLink postscrOperator Operator - HiLink postscrMathOperator postscrOperator + HiLink postscrComment Comment + + HiLink postscrConstant Constant + HiLink postscrString String + HiLink postscrASCIIString postscrString + HiLink postscrHexString postscrString + HiLink postscrASCII85String postscrString + HiLink postscrNumber Number + HiLink postscrInteger postscrNumber + HiLink postscrHex postscrNumber + HiLink postscrRadix postscrNumber + HiLink postscrFloat Float + HiLink postscrBoolean Boolean + + HiLink postscrIdentifier Identifier + HiLink postscrProcedure Function + + HiLink postscrName Statement + HiLink postscrConditional Conditional + HiLink postscrRepeat Repeat + HiLink postscrL2Repeat postscrRepeat + HiLink postscrOperator Operator + HiLink postscrL1Operator postscrOperator + HiLink postscrL2Operator postscrOperator + HiLink postscrL3Operator postscrOperator + HiLink postscrMathOperator postscrOperator HiLink postscrLogicalOperator postscrOperator - HiLink postscrBinaryOperator postscrOperator + HiLink postscrBinaryOperator postscrOperator - HiLink postscrDSCComment SpecialComment - HiLink postscrSpecialChar SpecialChar + HiLink postscrDSCComment SpecialComment + HiLink postscrSpecialChar SpecialChar - HiLink postscrTodo Todo + HiLink postscrTodo Todo - HiLink postscrError Error + HiLink postscrError Error HiLink postscrSpecialCharError postscrError HiLink postscrASCII85CharError postscrError - HiLink postscrHexCharError postscrError + HiLink postscrHexCharError postscrError + HiLink postscrASCIIStringError postscrError HiLink postscrIdentifierError postscrError + if exists("postscr_ghostscript") + HiLink postscrGSOperator postscrOperator + HiLink postscrGSMathOperator postscrMathOperator + else + HiLink postscrGSOperator postscrError + HiLink postscrGSMathOperator postscrError + endif + delcommand HiLink endif diff --git a/runtime/syntax/promela.vim b/runtime/syntax/promela.vim new file mode 100644 index 00000000..d9b24723 --- /dev/null +++ b/runtime/syntax/promela.vim @@ -0,0 +1,60 @@ +" Vim syntax file +" Language: ProMeLa +" Maintainer: Maurizio Tranchero - +" First Release: Mon Oct 16 08:49:46 CEST 2006 +" Last Change: Sat May 16 12:20:43 CEST 2007 +" Version: 0.2 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" case is significant +" syn case ignore +" ProMeLa Keywords +syn keyword promelaStatement proctype if else while chan do od fi break goto unless +syn keyword promelaStatement active assert label atomic +syn keyword promelaFunctions skip timeout run +" check what it is the following +" ProMeLa Types +syn keyword promelaType bit bool byte short int +" ProMeLa Regions +syn region promelaComment start="\/\/" end="$" keepend +syn region promelaString start="\"" end="\"" +" syn region promelaComment start="//" end="$" contains=ALL +" syn region promelaComment start="/\*" end="\*/" contains=ALL +" ProMeLa Comment +syn match promelaComment "\/.*$" +syn match promelaComment "/\*.*\*/" +" Operators and special characters +syn match promelaOperator "!" +syn match promelaOperator "?" +syn match promelaOperator "->" +syn match promelaOperator "=" +syn match promelaOperator "+" +syn match promelaOperator "*" +syn match promelaOperator "/" +syn match promelaOperator "-" +syn match promelaOperator "<" +syn match promelaOperator ">" +syn match promelaOperator "<=" +syn match promelaOperator ">=" +syn match promelaSpecial "\[" +syn match promelaSpecial "\]" +syn match promelaSpecial ";" +syn match promelaSpecial "::" + +" Class Linking +hi def link promelaStatement Statement +hi def link promelaType Type +hi def link promelaComment Comment +hi def link promelaOperator Type +hi def link promelaSpecial Special +hi def link promelaFunctions Special +hi def link promelaString String + +let b:current_syntax = "promela" diff --git a/runtime/syntax/quake.vim b/runtime/syntax/quake.vim index 7840f7cc..3a9b68d6 100644 --- a/runtime/syntax/quake.vim +++ b/runtime/syntax/quake.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Quake[1-3] configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 " quake_is_quake1 - the syntax is to be used for quake1 configs " quake_is_quake2 - the syntax is to be used for quake2 configs " quake_is_quake3 - the syntax is to be used for quake3 configs @@ -14,7 +14,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,+,-,_ +setlocal iskeyword+=-,+ syn keyword quakeTodo contained TODO FIXME XXX NOTE diff --git a/runtime/syntax/readline.vim b/runtime/syntax/readline.vim index 81175fee..1972e5af 100644 --- a/runtime/syntax/readline.vim +++ b/runtime/syntax/readline.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: readline(3) configuration file " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 " readline_has_bash - if defined add support for bash specific " settings/functions @@ -12,7 +12,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,- +setlocal iskeyword+=- syn keyword readlineTodo contained TODO FIXME XXX NOTE diff --git a/runtime/syntax/reva.vim b/runtime/syntax/reva.vim new file mode 100644 index 00000000..7e11ffe2 --- /dev/null +++ b/runtime/syntax/reva.vim @@ -0,0 +1,191 @@ +" Vim syntax file +" Language: Reva Forth +" Version: 7.1 +" Last Change: 2008/01/11 +" Maintainer: Ron Aaron +" URL: http://ronware.org/reva/ +" Filetypes: *.rf *.frt +" NOTE: You should also have the ftplugin/reva.vim file to set 'isk' + +" For version 5.x: Clear all syntax items and don't load +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear + echo "Reva syntax file requires version 6.0 or later of vim!" + finish +elseif exists("b:current_syntax") + finish +endif + +syn clear + +" Synchronization method +syn sync ccomment +syn sync maxlines=100 + + +syn case ignore +" Some special, non-FORTH keywords +"syn keyword revaTodo contained todo fixme bugbug todo: bugbug: note: +syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*' +syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\=' + +syn match revaHelpDesc '\S.*' contained +syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*' +syn region revaHelpStuff start='\' end='^\S' contains=revaHelpDesc +syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff + + +syn case match +" basic mathematical and logical operators +syn keyword revaoperators + - * / mod /mod negate abs min max umin umax +syn keyword revaoperators and or xor not invert 1+ 1- +syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem +syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <> + + +" stack manipulations +syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll +syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop +syn keyword revastack >r r> r@ rdrop +" syn keyword revastack sp@ sp! rp@ rp! + +" address operations +syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize +syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+ +syn keyword revamemblks move fill + +" conditionals +syn keyword revacond if else then =if >if if if0 ;; catch throw + +" iterations +syn keyword revaloop while repeat until again +syn keyword revaloop do loop i j leave unloop skip more + +" new words +syn match revaColonDef '\ immediate +syn keyword revadefine compile literal ' ['] + +" Built in words +com! -nargs=+ Builtin syn keyword revaBuiltin +Builtin execute ahead interp bye >body here pad words make +Builtin accept close cr creat delete ekey emit fsize ioerr key? +Builtin mtime open/r open/rw read rename seek space spaces stat +Builtin tell type type_ write (seek) (argv) (save) 0; 0drop; +Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl, +Builtin body> clamp depth disassemble findprev fnvhash getenv here, +Builtin iterate last! last@ later link lz> lzmax os parse/ peek +Builtin peek-n pop prior push put rp@ rpick save setenv slurp +Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC +Builtin THROW_BADLIB THROW_GENERIC used xt>size z, +Builtin +lplace +place -chop /char /string bounds c+lplace c+place +Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split +Builtin zcount zt \\char +Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout +Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^) +Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class +Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit +Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib +Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context +Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable +Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind) +Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r +Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer +Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs +Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave +Builtin endcase endof eval exception exec false find func: header heapgone help help/ +Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@ +Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln +Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp +Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@ +Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \|| +" p[ [''] [ ['] + + +" debugging +syn keyword revadebug .s dump see + +" basic character operations +" syn keyword revaCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY +" syn keyword revaCharOps KEY? TIB CR +" syn match revaCharOps '\d >digit digit> >single >double >number >float + +" contexts +syn keyword revavocs forth macro inline +syn keyword revavocs context: +syn match revavocs /\<\~[^~ ]*/ +syn match revavocs /[^~ ]*\~\>/ + +" numbers +syn keyword revamath decimal hex base binary octal +syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>' +" recognize hex and binary numbers, the '$' and '%' notation is for greva +syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess +syn match revainteger '\<\x*\d\x*\>' " *2* --- this order! +syn match revainteger '\<%[0-1]*[0-1]\+\>' +syn match revainteger "\<'.\>" + +" Strings +" syn region revaString start=+\.\?\"+ end=+"+ end=+$+ +syn region revaString start=/"/ skip=/\\"/ end=/"/ + +" Comments +syn region revaComment start='\\S\s' end='.*' contains=revaTodo +syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo +syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo +syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo +syn match revaComment '\<|\s.*$' contains=revaTodo +syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment + +" Include files +syn match revaInclude '\<\(include\|needs\)\s\+\S\+' + + +" Define the default highlighting. +if !exists("did_reva_syntax_inits") + let did_reva_syntax_inits=1 + " The default methods for highlighting. Can be overriden later. + hi def link revaEOF cIf0 + hi def link revaHelpStuff special + hi def link revaHelpDesc Comment + hi def link revaTodo Todo + hi def link revaOperators Operator + hi def link revaMath Number + hi def link revaInteger Number + hi def link revaStack Special + hi def link revaFStack Special + hi def link revaSP Special + hi def link revaMemory Operator + hi def link revaAdrArith Function + hi def link revaMemBlks Function + hi def link revaCond Conditional + hi def link revaLoop Repeat + hi def link revaColonDef Define + hi def link revaEndOfColonDef Define + hi def link revaDefine Define + hi def link revaDebug Debug + hi def link revaCharOps Character + hi def link revaConversion String + hi def link revaForth Statement + hi def link revaVocs Statement + hi def link revaString String + hi def link revaComment Comment + hi def link revaClassDef Define + hi def link revaEndOfClassDef Define + hi def link revaObjectDef Define + hi def link revaEndOfObjectDef Define + hi def link revaInclude Include + hi def link revaBuiltin Keyword +endif + +let b:current_syntax = "reva" + +" vim: ts=8:sw=4:nocindent:smartindent: diff --git a/runtime/syntax/rexx.vim b/runtime/syntax/rexx.vim index 179e453c..b4d07323 100644 --- a/runtime/syntax/rexx.vim +++ b/runtime/syntax/rexx.vim @@ -4,6 +4,7 @@ " Last Change: 2005 Dez 9, added some -coloring, " line comments, do *over*, messages, directives, " highlighting classes, methods, routines and requires +" 2007 Oct 17, added support for new ooRexx 3.2 features " Rony G. Flatscher " " URL: http://www.geulig.de/vim/rexx.vim @@ -27,122 +28,194 @@ setlocal iskeyword+=! setlocal iskeyword+=? " ---rgf, position important: must be before comments etc. ! -syn match rexxOperator "[-=|\/\\\+\*\[\],;<>&\~]" - -syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>" -syn match rexxEnvironmentSymbol "\<\.\+\([a-zA-Z0-9._?!]\)*\>" +syn match rexxOperator "[=|\/\\\+\*\[\],;:<>&\~%\-]" +" rgf syn match rexxIdentifier "\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>" +syn match rexxIdentifier "\<\K\k*\>" +syn match rexxEnvironmentSymbol "\<\.\k\+\>" " A Keyword is the first symbol in a clause. A clause begins at the start " of a line or after a semicolon. THEN, ELSE, OTHERWISE, and colons are always " followed by an implied semicolon. -syn match rexxClause "\(^\|;\|:\|then \|else \|otherwise \)\s*\w\+" contains=ALLBUT,rexxParse2,rexxRaise2 - +syn match rexxClause "\(^\|;\|:\|then \|else \|when \|otherwise \)\s*\S*" contains=ALLBUT,rexxParse2,rexxRaise2,rexxForward2 " Considered keywords when used together in a phrase and begin a clause -syn match rexxParse "\\|version\)\>" -syn match rexxParse2 "\" contained containedin=rexxParse - +syn match rexxParse "\\|version\)\>" containedin=rexxClause contains=rexxParse2 +syn match rexxParse2 "\" containedin=rexxParse syn match rexxKeyword contained "\" -syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\=\>" -syn match rexxKeyword contained "\" -syn match rexxKeyword contained "\\(\s*forever\)\=\>" -syn match rexxKeyword contained "\\s*\" +syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\?\>" +syn match rexxKeyword contained "\" + +syn match rexxKeyword contained "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\(\s\+forever\)\?\>" +syn match rexxKeyword contained "\\s*\(strict\s*\)\?\" " Another keyword phrase, separated to aid highlighting in rexxFunction -syn match rexxKeyword contained "\" -syn match rexxKeyword2 contained "\" +syn match rexxRegularCallSignal contained "\<\(call\|signal\)\s\(\s*on\>\|\s*off\>\)\@!\(\k\+\ze\|\ze(\)\(\s*\|;\|$\|(\)" +syn region rexxLabel contained start="\<\(call\|signal\)\>\s*\zs\(\k*\|(\)" end="\ze\(\s*\|;\|$\|(\)" containedin=rexxRegularCallSignal + +syn match rexxExceptionHandling contained "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>.*\(;\|$\)" +" hilite label given after keyword "name" +syn match rexxLabel "name\s\+\zs\k\+\ze" containedin=rexxExceptionHandling +" hilite condition name (serves as label) +syn match rexxLabel "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>\s*\zs\k\+\ze\s*\(;\|$\)" containedin=rexxExceptionHandling +" user exception handling, hilite user defined name +syn region rexxLabel contained start="user\s\+\zs\k" end="\ze\(\s\|;\|$\)" containedin=rexxExceptionHandling " Considered keywords when they begin a clause -syn match rexxKeyword contained "\<\(arg\|do\|drop\|end\|exit\|expose\|forward\|if\|interpret\|iterate\|leave\|nop\)\>" -syn match rexxKeyword contained "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>" +syn match rexxKeywordStatements "\<\(arg\|catch\|do\|drop\|end\|exit\|expose\|finally\|forward\|if\|interpret\|iterate\|leave\|loop\|nop\)\>" +syn match rexxKeywordStatements "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>" + +" Conditional keywords starting a new statement +syn match rexxConditional "\<\(then\|else\|when\|otherwise\)\(\s*\|;\|\_$\|\)\>" contains=rexxKeywordStatements " Conditional phrases -syn match rexxConditional "\(^\s*\| \)\(to\|by\|for\|until\|while\|then\|when\|otherwise\|else\|over\)\( \|\s*$\)" -syn match rexxConditional contained "\<\(to\|by\|for\|until\|while\|then\|when\|otherwise\|else\|over\)\>" +syn match rexxLoopKeywords "\<\(to\|by\|for\|until\|while\|over\)\>" containedin=doLoopSelectLabelRegion " must be after Conditional phrases! -syn match rexxKeyword ".*\<\(then\|else\)\s*\" +syn match doLoopSelectLabelRegion "\<\(do\|loop\|select\)\>\s\+\(label\s\+\)\?\(\s\+\k\+\s\+\zs\\)\?\k*\(\s\+forever\)\?\(\s\|;\|$\)" + +" color label's name +syn match rexxLabel2 "\<\(do\|loop\|select\)\>\s\+label\s\+\zs\k*\ze" containedin=doLoopSelectLabelRegion + +" make sure control variable is normal +syn match rexxControlVariable "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\s\+\" containedin=doLoopSelectLabelRegion + +" make sure control variable assignment is normal +syn match rexxStartValueAssignment "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\(=.*\)\?\s\+\" containedin=doLoopSelectLabelRegion + +" highlight label name +syn match endIterateLeaveLabelRegion "\<\(end\|leave\|iterate\)\>\(\s\+\K\k*\)" contains=rexxLabel2 +syn match rexxLabel2 "\<\(end\|leave\|iterate\)\>\s\+\zs\k*\ze" containedin=endIterateLeaveLabelRegion + +" Guard statement +syn match rexxGuard "\(^\|;\|:\)\s*\\s\+\<\(on\|off\)\>" + +" Trace statement +syn match rexxTrace "\(^\|;\|:\)\s*\\s\+\<\K\k*\>" " Raise statement -syn match rexxRaise "\(^\|;\|:\)\s\+\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\=" -syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|return\)\>" contained containedin=rexxRaise +syn match rexxRaise "\(^\|;\|:\)\s\+\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 +syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|propagate\|return\)\>" containedin=rexxRaise -" Forward statement keywords -syn match rexxForward "\(^\|;\|:\)\\s*" -syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained containedin=rexxForward +" Forward statement +syn match rexxForward "\(^\|;\|:\)\\s*" contains=rexxForward2 +syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained " Functions/Procedures -syn match rexxFunction "\<\w*\(/\*\s*\*/\)*("me=e-1 contains=rexxComment,rexxConditional,rexxKeyword,rexxIdentifier -syn match rexxFunction "\<\<[a-zA-Z\!\?_]\([a-zA-Z0-9._?!]\)*\>("me=e-1 -syn match rexxFunction "\" contains=rexxKeyword2 +syn match rexxFunction "\<\<[a-zA-Z\!\?_]\k*\>("me=e-1 syn match rexxFunction "[()]" " String constants -syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\=+ oneline -syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\=+ oneline +syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\?+ oneline +syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\?+ oneline -" Catch errors caused by wrong parenthesis syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword +" Catch errors caused by wrong parenthesis syn match rexxParenError ")" syn match rexxInParen "[\\[\\]{}]" " Comments -syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment -syn match rexxCommentError "\*/" -syn match rexxLineComment /--.*/ +syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment +syn match rexxCommentError "\*/" +syn region rexxLineComment start="--" end="\_$" oneline -syn keyword rexxTodo contained TODO FIXME XXX +" Highlight User Labels +" check for labels between comments, labels stated in a statement in the middle of a line +syn match rexxLabel "\(\_^\|;\)\s*\(\/\*.*\*\/\)*\s*\k\+\s*\(\/\*.*\*\/\)*\s*:"me=e-1 contains=rexxTodo,rexxComment +syn keyword rexxTodo contained TODO FIXME XXX " ooRexx messages syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1 syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator -" Highlight User Labels -syn match rexxLabel "^\s*\k*\s*:"me=e-1 - +" line continuations, take care of (line-)comments after it syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$" + " the following is necessary, otherwise three consecutive dashes will cause it to highlight the first one -syn match rexxLineContinue "-\ze\(\s+--.*\|\s*\/\*.*\)*$" +syn match rexxLineContinue "-\ze-\@!\s*\(--.*\|\s*\/\*.*\)\?$" " Special Variables syn keyword rexxSpecialVariable sigl rc result self super +syn keyword rexxSpecialVariable .environment .error .input .local .methods .output .rs .stderr .stdin .stdout .stdque " Constants -syn keyword rexxConst .true .false .nil - -" ooRexx builtin classes, first define dot to be o.k. in keywords -syn keyword rexxBuiltinClass .object .class .method .message -syn keyword rexxBuiltinClass .monitor .alarm -syn keyword rexxBuiltinClass .stem .stream .string -syn keyword rexxBuiltinClass .mutablebuffer -syn keyword rexxBuiltinClass .array .list .queue .directory .table .set -syn keyword rexxBuiltinClass .relation .bag .supplier .regularExpressions - -" Windows-only classes -syn keyword rexxBuiltinClass .OLEObject .MenuObject .WindowsClipboard .WindowsEventLog -syn keyword rexxBuiltinClass .WindowsManager .WindowObject .WindowsProgramManager - - -" ooRexx directives, ---rgf location important, otherwise directives in top of -" file not matched! -syn region rexxClass start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxMethod start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxRequires start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)" -syn region rexxRoutine start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)" - -syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxComment,rexxLineComment,rexxClass,rexxMethod,rexxRoutine,rexxRequires keepend +syn keyword rexxConst .true .false .nil .endOfLine .line +syn match rexxNumber "\(-\|+\)\?\s*\zs\<\(\d\+\.\?\|\d*\.\d\+\(E\(+\|-\)\d\{2,2}\)\?\)\?\>" +" ooRexx builtin classes (as of version 3.2.0, fall 2007), first define dot to be o.k. in keywords +syn keyword rexxBuiltinClass .Alarm .ArgUtil .Array .Bag .CaselessColumnComparator +syn keyword rexxBuiltinClass .CaselessComparator .CaselessDescendingComparator .CircularQueue +syn keyword rexxBuiltinClass .Class .Collection .ColumnComparator .Comparable .Comparator +syn keyword rexxBuiltinClass .DateTime .DescendingComparator .Directory .InputOutputStream +syn keyword rexxBuiltinClass .InputStream .InvertingComparator .List .MapCollection +syn keyword rexxBuiltinClass .Message .Method .Monitor .MutableBuffer .Object +syn keyword rexxBuiltinClass .OrderedCollection .OutputStream .Properties .Queue +syn keyword rexxBuiltinClass .Relation .RexxQueue .Set .SetCollection .Stem .Stream +syn keyword rexxBuiltinClass .StreamSupplier .String .Supplier .Table .TimeSpan -if !exists("rexx_minlines") -" let rexx_minlines = 10 - let rexx_minlines = 500 -endif -exec "syn sync ccomment rexxComment minlines=" . rexx_minlines +" Windows-only classes +syn keyword rexxBuiltinClass .AdvancedControls .AnimatedButton .BaseDialog .ButtonControl +syn keyword rexxBuiltinClass .CategoryDialog .CheckBox .CheckList .ComboBox .DialogControl +syn keyword rexxBuiltinClass .DialogExtensions .DlgArea .DlgAreaU .DynamicDialog +syn keyword rexxBuiltinClass .EditControl .InputBox .IntegerBox .ListBox .ListChoice +syn keyword rexxBuiltinClass .ListControl .MenuObject .MessageExtensions .MultiInputBox +syn keyword rexxBuiltinClass .MultiListChoice .PasswordBox .PlainBaseDialog .PlainUserDialog +syn keyword rexxBuiltinClass .ProgressBar .ProgressIndicator .PropertySheet .RadioButton +syn keyword rexxBuiltinClass .RcDialog .ResDialog .ScrollBar .SingleSelection .SliderControl +syn keyword rexxBuiltinClass .StateIndicator .StaticControl .TabControl .TimedMessage +syn keyword rexxBuiltinClass .TreeControl .UserDialog .VirtualKeyCodes .WindowBase +syn keyword rexxBuiltinClass .WindowExtensions .WindowObject .WindowsClassesBase .WindowsClipboard +syn keyword rexxBuiltinClass .WindowsEventLog .WindowsManager .WindowsProgramManager .WindowsRegistry + +" ooRexx directives, ---rgf location important, otherwise directives in top of file not matched! +syn region rexxClassDirective start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxMethodDirective start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxRequiresDirective start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxRoutineDirective start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)" +syn region rexxAttributeDirective start="::\s*attribute\s*"ms=e+1 end="\ze\(\s\|;\|$\)" + +syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxComment,rexxLineComment,rexxClassDirective,rexxMethodDirective,rexxRoutineDirective,rexxRequiresDirective,rexxAttributeDirective keepend + +syn region rexxVariable start="\zs\<\(\.\)\@!\K\k\+\>\ze\s*\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)" end="\(\_$\|.\)"me=e-1 +syn match rexxVariable "\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)\s*\zs\K\k*\ze" + +" rgf, 2007-07-22: unfortunately, the entire region is colored (not only the +" patterns), hence useless (vim 7.0)! (syntax-docs hint that that should work) +" attempt: just colorize the parenthesis in matching colors, keep content +" transparent to keep the formatting already done to it! +" syn region par1 matchgroup=par1 start="(" matchgroup=par1 end=")" transparent contains=par2 +" syn region par2 matchgroup=par2 start="(" matchgroup=par2 end=")" transparent contains=par3 contained +" syn region par3 matchgroup=par3 start="(" matchgroup=par3 end=")" transparent contains=par4 contained +" syn region par4 matchgroup=par4 start="(" matchgroup=par4 end=")" transparent contains=par5 contained +" syn region par5 matchgroup=par5 start="(" matchgroup=par5 end=")" transparent contains=par1 contained + +" this will colorize the entire region, removing any colorizing already done! +" syn region par1 matchgroup=par1 start="(" end=")" contains=par2 +" syn region par2 matchgroup=par2 start="(" end=")" contains=par3 contained +" syn region par3 matchgroup=par3 start="(" end=")" contains=par4 contained +" syn region par4 matchgroup=par4 start="(" end=")" contains=par5 contained +" syn region par5 matchgroup=par5 start="(" end=")" contains=par1 contained + +hi par1 ctermfg=red guifg=red +hi par2 ctermfg=blue guifg=blue +hi par3 ctermfg=darkgreen guifg=darkgreen +hi par4 ctermfg=darkyellow guifg=darkyellow +hi par5 ctermfg=darkgrey guifg=darkgrey + +" line continuation (trailing comma or single dash) +syn sync linecont "\(,\|-\ze-\@!\)\ze\s*\(--.*\|\/\*.*\)*$" + +" if !exists("rexx_minlines") +" let rexx_minlines = 500 +" endif +" exec "syn sync ccomment rexxComment minlines=" . rexx_minlines + +" always scan from start, PCs are powerful enough for that in 2007 ! +exec "syn sync fromstart" " Define the default highlighting. " For version 5.7 and earlier: only when not done already @@ -155,6 +228,20 @@ if version >= 508 || !exists("did_rexx_syn_inits") command -nargs=+ HiLink hi def link endif + " make binary and hex strings stand out + hi rexxStringConstant term=bold,underline ctermfg=5 cterm=bold guifg=darkMagenta gui=bold + + HiLink rexxLabel2 Function + HiLink doLoopSelectLabelRegion rexxKeyword + HiLink endIterateLeaveLabelRegion rexxKeyword + HiLink rexxLoopKeywords rexxKeyword " Todo + + HiLink rexxNumber Normal +" HiLink rexxIdentifier DiffChange + + HiLink rexxRegularCallSignal Statement + HiLink rexxExceptionHandling Statement + HiLink rexxLabel Function HiLink rexxCharacter Character HiLink rexxParenError rexxError @@ -162,7 +249,8 @@ if version >= 508 || !exists("did_rexx_syn_inits") HiLink rexxCommentError rexxError HiLink rexxError Error HiLink rexxKeyword Statement - HiLink rexxKeyword2 rexxKeyword + HiLink rexxKeywordStatements Statement + HiLink rexxFunction Function HiLink rexxString String HiLink rexxComment Comment @@ -172,15 +260,16 @@ if version >= 508 || !exists("did_rexx_syn_inits") HiLink rexxOperator Operator HiLink rexxMessageOperator rexxOperator - HiLink rexxLineComment RexxComment + HiLink rexxLineComment Comment HiLink rexxLineContinue WildMenu HiLink rexxDirective rexxKeyword - HiLink rexxClass Type - HiLink rexxMethod rexxFunction - HiLink rexxRequires Include - HiLink rexxRoutine rexxFunction + HiLink rexxClassDirective Type + HiLink rexxMethodDirective rexxFunction + HiLink rexxAttributeDirective rexxFunction + HiLink rexxRequiresDirective Include + HiLink rexxRoutineDirective rexxFunction HiLink rexxConst Constant HiLink rexxTypeSpecifier Type @@ -192,6 +281,9 @@ if version >= 508 || !exists("did_rexx_syn_inits") HiLink rexxParse rexxKeyword HiLink rexxParse2 rexxParse + HiLink rexxGuard rexxKeyword + HiLink rexxTrace rexxKeyword + HiLink rexxRaise rexxKeyword HiLink rexxRaise2 rexxRaise diff --git a/runtime/syntax/rnc.vim b/runtime/syntax/rnc.vim index d510f047..8436c887 100644 --- a/runtime/syntax/rnc.vim +++ b/runtime/syntax/rnc.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Relax NG compact syntax " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-06-17 if exists("b:current_syntax") finish @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword=@,48-57,_,-,. +setlocal iskeyword+=-,. syn keyword rncTodo contained TODO FIXME XXX NOTE diff --git a/runtime/syntax/rnoweb.vim b/runtime/syntax/rnoweb.vim index 4a1dc6ba..161fd4ec 100644 --- a/runtime/syntax/rnoweb.vim +++ b/runtime/syntax/rnoweb.vim @@ -3,7 +3,7 @@ " Maintainer: Johannes Ranke " Last Change: 2007 Mär 30 " Version: 0.8 -" SVN: $Id: rnoweb.vim,v 1.6 2007/05/12 14:31:58 vimboss Exp $ +" SVN: $Id: rnoweb.vim,v 1.3 2007/05/05 17:55:31 vimboss Exp $ " Remarks: - This file is inspired by the proposal of " Fernando Henrique Ferraz Pereira da Rosa " http://www.ime.usp.br/~feferraz/en/sweavevim.html diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim index 79939e63..9b51d4ef 100644 --- a/runtime/syntax/ruby.vim +++ b/runtime/syntax/ruby.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Ruby " Maintainer: Doug Kearns -" Info: $Id: ruby.vim,v 1.11 2007/05/12 13:10:02 vimboss Exp $ +" Info: $Id: ruby.vim,v 1.134 2007/05/06 17:55:04 tpope Exp $ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site " Release Coordinator: Doug Kearns @@ -321,4 +321,4 @@ hi def link rubySpaceError rubyError let b:current_syntax = "ruby" -" vim: nowrap sw=2 sts=2 ts=8 noet ff=unix: +" vim: nowrap sw=2 sts=2 ts=8 noet : diff --git a/runtime/syntax/scheme.vim b/runtime/syntax/scheme.vim index 93d4187f..6f6927f6 100644 --- a/runtime/syntax/scheme.vim +++ b/runtime/syntax/scheme.vim @@ -1,6 +1,6 @@ " Vim syntax file " Language: Scheme (R5RS) -" Last Change: Nov 28, 2004 +" Last Change: 2007 Jun 16 " Maintainer: Sergey Khorev " Original author: Dirk van Deun @@ -265,6 +265,9 @@ if exists("b:is_chicken") || exists("is_chicken") syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC endif + " suggested by Alex Queiroz + syn match schemeExtSyntax oneline "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+" + syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ endif " Synchronization and the wrapping up... diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index ce98ac6d..d31eb583 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,22 +2,10 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Dr. Charles E. Campbell, Jr. " Previous Maintainer: Lennart Schultz -" Last Change: Dec 12, 2006 -" Version: 89 +" Last Change: Mar 06, 2008 +" Version: 97 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax -" -" Using the following VIM variables: {{{1 -" g:is_bash if none of the previous three variables are -" defined, then if g:is_bash is set enhance with -" bash syntax highlighting -" g:is_kornshell if neither b:is_kornshell or b:is_bash is -" defined, then if g:is_kornshell is set -" enhance with kornshell/POSIX syntax highlighting -" g:is_posix this variable is the same as g:is_kornshell -" g:sh_fold_enabled if non-zero, syntax folding is enabled -" g:sh_minlines sets up syn sync minlines (dflt: 200) -" g:sh_maxlines sets up syn sync maxlines (dflt: 2x sh_minlines) -" +" For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from Éric Brunet (eric.brunet@ens.fr) " For version 5.x: Clear all syntax items {{{1 @@ -61,6 +49,15 @@ elseif g:sh_fold_enabled != 0 && !has("folding") let g:sh_fold_enabled= 0 echomsg "Ignoring g:sh_fold_enabled=".g:sh_fold_enabled."; need to re-compile vim for +fold support" endif +if !exists("s:sh_fold_functions") + let s:sh_fold_functions = 1 +endif +if !exists("s:sh_fold_heredoc") + let s:sh_fold_heredoc = 2 +endif +if !exists("s:sh_fold_ifdofor") + let s:sh_fold_ifdofor = 4 +endif if g:sh_fold_enabled && &fdm == "manual" set fdm=syntax endif @@ -70,26 +67,33 @@ syn case match " Clusters: contains=@... clusters {{{1 "================================== -syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq +syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError +if exists("b:is_kornshell") + syn cluster ErrorList add=shDTestError +endif +syn cluster shArithParenList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen +syn cluster shArithList contains=@shArithParenList,shParenError +syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq syn cluster shColonList contains=@shCaseList -syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq +syn cluster shCommandSubList contains=shArithmetic,shDeref,shDerefSimple,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shSingleQuote,shDoubleQuote,shStatement,shVariable,shSubSh,shAlias,shTest,shCtrlSeq,shSpecial syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shPosnParm,shExSingleQuote,shCtrlSeq,shSpecial syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPPS syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError -syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq +syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shExpr,shExSingleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest -syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shFunctionStart,shCtrlSeq +syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") + syn cluster shFunctionList add=shRepeat syn cluster shFunctionList add=shDblBrace,shDblParen endif syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload -syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shIdWhiteSpace,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq -syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest +syn cluster shIdList contains=shCommandSub,shWrapLineOperator,shSetOption,shDeref,shDerefSimple,shRedir,shExSingleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial +syn cluster shLoopList contains=@shCaseList,shTestOpr,shExpr,shDblBrace,shConditional,shCaseEsac,shTest,@shErrorList,shSet syn cluster shSubShList contains=@shCaseList,shOperator syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shExSingleQuote,shSingleQuote,shTestOpr,shTest,shCtrlSeq @@ -97,10 +101,11 @@ syn cluster shTestList contains=shCharClass,shComment,shCommandSub,shDeref,shDer " Echo: {{{1 " ==== " This one is needed INSIDE a CommandSub, so that `echo bla` be correct -syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList -syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList +syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment +syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment +syn match shEchoQuote contained '\%(\\\\\)*\\["`']' -" This must be after the strings, so that bla \" be correct +" This must be after the strings, so that ... \" will be correct syn region shEmbeddedEcho contained matchgroup=shStatement start="\" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shDoubleQuote,shCharClass,shCtrlSeq " Alias: {{{1 @@ -125,10 +130,10 @@ if exists("b:is_kornshell") endif syn match shTestError "]" -" Options Interceptor: {{{1 +" Options: {{{1 " ==================== -syn match shOption "\s[\-+][a-zA-Z0-9]\+\>"ms=s+1 -syn match shOption "\s--[^ \t$`'"|]\+"ms=s+1 +syn match shOption "\s\zs[-+][a-zA-Z0-9]\+\>" +syn match shOption "\s\zs--[^ \t$`'"|]\+" " File Redirection Highlighted As Operators: {{{1 "=========================================== @@ -140,8 +145,8 @@ syn match shRedir "\d<<-\=" " Operators: {{{1 " ========== syn match shOperator "<<\|>>" contained -syn match shOperator "[!&;|]" -syn match shOperator "\[[[^:]\|\]]" +syn match shOperator "[!&;|]" contained +syn match shOperator "\[[[^:]\|\]]" contained syn match shOperator "!\==" skipwhite nextgroup=shPattern syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shDoubleQuote,shDeref @@ -172,7 +177,7 @@ syn match shCharClass contained "\[:\(backspace\|escape\|return\|xdigit\|alnum " Loops: do, if, while, until {{{1 " ====== -if g:sh_fold_enabled +if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor syn region shDo fold transparent matchgroup=shConditional start="\" matchgroup=shConditional end="\" contains=@shLoopList syn region shIf fold transparent matchgroup=shConditional start="\" matchgroup=shConditional end="\<;\_s*then\>" end="\" contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey syn region shFor fold matchgroup=shLoop start="\" end="\" end="\"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn @@ -182,7 +187,8 @@ else syn region shFor matchgroup=shLoop start="\" end="\" end="\"me=e-2 contains=@shLoopList,shDblParen skipwhite nextgroup=shCurlyIn endif if exists("b:is_kornshell") || exists("b:is_bash") - syn cluster shCaseList add=shRepeat + syn cluster shCaseList add=shRepeat + syn cluster shFunctionList add=shRepeat syn region shRepeat matchgroup=shLoop start="\" end="\" end="\"me=e-2 contains=@shLoopList,shDblParen,shDblBrace syn region shRepeat matchgroup=shLoop start="\" end="\" end="\"me=e-2 contains=@shLoopList,shDblParen,shDblBrace syn region shCaseEsac matchgroup=shConditional start="\" matchgroup=shConditional end="\" end="\" contains=@shLoopList @@ -195,10 +201,10 @@ syn match shComma contained "," " Case: case...esac {{{1 " ==== -syn match shCaseBar contained skipwhite "[^|"`'()]\{-}|"hs=e nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote +syn match shCaseBar contained skipwhite "\(^\|[^\\]\)\(\\\\\)*\zs|" nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBar -syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\([^#$()'" \t]\|\\.\)\{-})"ms=s,hs=e end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment -if g:sh_fold_enabled +syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment +if (g:sh_fold_enabled % (s:sh_fold_ifdofor * 2))/s:sh_fold_ifdofor syn region shCaseEsac fold matchgroup=shConditional start="\" end="\" contains=@shCaseEsacList else syn region shCaseEsac matchgroup=shConditional start="\" end="\" contains=@shCaseEsacList @@ -217,6 +223,7 @@ syn region shCaseCommandSub start=+`+ skip=+\\\\\|\\.+ end=+`+ contains=@shCom "====== syn match shWrapLineOperator "\\$" syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList +syn match shEscape contained '\\.' " $() and $(()): {{{1 " $(..) is not supported by sh (Bourne shell). However, apparently @@ -226,7 +233,7 @@ syn region shCommandSub start="`" skip="\\\\\|\\." end="`" contains=@shComman " an Error under /bin/sh. By consensus of vimdev'ers! if exists("b:is_kornshell") || exists("b:is_bash") syn region shCommandSub matchgroup=shCmdSubRegion start="\$(" skip='\\\\\|\\.' end=")" contains=@shCommandSubList - syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shCommandSubList + syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList syn match shSkipInitWS contained "^\s\+" else syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList @@ -275,7 +282,8 @@ syn match shSpecial "^\%(\\\\\)*\\[\\"'`$()#]" syn cluster shCommentGroup contains=shTodo,@Spell syn keyword shTodo contained COMBAK FIXME TODO XXX syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup -syn match shComment "#.*$" contains=@shCommentGroup +syn match shComment "\s\zs#.*$" contains=@shCommentGroup +syn match shQuickComment contained "#.*$" " Here Documents: {{{1 " ========================================= @@ -287,7 +295,7 @@ if version < 600 syn region shHereDoc matchgroup=shRedir start="<<\s*\**\.\**" matchgroup=shRedir end="^\.$" contains=@shDblQuoteList syn region shHereDoc matchgroup=shRedir start="<<-\s*\**\.\**" matchgroup=shRedir end="^\s*\.$" contains=@shDblQuoteList -elseif g:sh_fold_enabled +elseif (g:sh_fold_enabled % (s:sh_fold_heredoc * 2))/s:sh_fold_heredoc syn region shHereDoc matchgroup=shRedir fold start="<<\s*\z(\S*\)" matchgroup=shRedir end="^\z1\s*$" contains=@shDblQuoteList syn region shHereDoc matchgroup=shRedir fold start="<<\s*\"\z(\S*\)\"" matchgroup=shRedir end="^\z1\s*$" syn region shHereDoc matchgroup=shRedir fold start="<<\s*'\z(\S*\)'" matchgroup=shRedir end="^\z1\s*$" @@ -326,32 +334,38 @@ endif " Identifiers: {{{1 "============= -syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier -syn match shIdWhiteSpace contained "\s" -syn match shSetIdentifier contained "=" nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote +syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained +syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shSetIdentifier +syn match shSetIdentifier "=" contained nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote,shExSingleQuote if exists("b:is_bash") - syn region shSetList matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="#\|="me=e-1 contains=@shIdList - syn region shSetList matchgroup=shSet start="\[^/]"me=e-1 end="$" end="\\ze[|)]" matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList - syn match shSet "\<\(declare\|typeset\|local\|export\|set\|unset\)\>" + syn region shSetList oneline matchgroup=shSet start="\<\(declare\|typeset\|local\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze#\|=" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="\ze[;|)]\|$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList elseif exists("b:is_kornshell") - syn region shSetList matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList - syn region shSetList matchgroup=shSet start="\\ze[^/]" end="$\|\ze[})]" matchgroup=shOperator end="\ze[|);&]"me=e-1 matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList - syn match shSet "\<\(typeset\|set\|export\|unset\)\>" + syn region shSetList oneline matchgroup=shSet start="\<\(typeset\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList else - syn region shSetList matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$\|\ze[|)]" matchgroup=shOperator end="\ze[|);&]" matchgroup=NONE end="[#=]"me=e-1 contains=@shIdList - syn match shStatement "\<\(set\|export\|unset\)\>" + syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[^/]" end="$" matchgroup=shOperator end="\ze[}|);&]" matchgroup=NONE end="\ze[#=]" contains=@shIdList endif " Functions: {{{1 syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo -" COMBAK -- look at bash09. function foo() (line#35) is folding 38 lines. Not being terminated properly -"syn match shFunctionStart "{" contained -if g:sh_fold_enabled - syn region shFunctionOne transparent fold start="^\s*\h\w*\s*()\_s*\ze{" matchgroup=shFunctionStart end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart - syn region shFunctionTwo transparent fold start="\h\w*\s*\%(()\)\=\_s*\ze{" matchgroup=shFunctionStart end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart + +if exists("b:is_bash") + if (g:sh_fold_enabled % (s:sh_fold_functions * 2))/s:sh_fold_functions + syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionTwo fold matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + else + syn region shFunctionOne matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{" end="}" contains=@shFunctionList + syn region shFunctionTwo matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + endif else - syn region shFunctionOne transparent start="^\s*\h\w*\s*()\_s*\ze{" matchgroup=shFunctionStart end="}" contains=@shFunctionList - syn region shFunctionTwo transparent start="\h\w*\s*\%(()\)\=\_s*\ze{" matchgroup=shFunctionStart end="}" contains=shFunctionKey,@shFunctionList contained + if (g:sh_fold_enabled % (s:sh_fold_functions * 2))/s:sh_fold_functions + syn region shFunctionOne fold matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + syn region shFunctionTwo fold matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment + else + syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList + syn region shFunctionTwo matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained + endif endif " Parameter Dereferencing: {{{1 @@ -363,6 +377,7 @@ syn match shDerefSimple "\$[-#*@!?]" syn match shDerefSimple "\$\$" if exists("b:is_bash") || exists("b:is_kornshell") syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList + syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList endif " bash: ${!prefix*} and ${#parameter}: {{{1 @@ -399,9 +414,9 @@ if exists("b:is_bash") || exists("b:is_kornshell") syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern syn match shDerefEscape contained '\%(\\\\\)*\\.' endif -syn region shDerefString contained matchgroup=shOperator start=+'+ end=+'+ contains=shStringSpecial -syn region shDerefString contained matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial -syn match shDerefString contained "\\["']" +syn region shDerefString contained matchgroup=shOperator start=+\%(\\\)\@ -" SiSU Markup: SiSU (sisu-0.38) -" (originally looked at Ruby Vim by Mirko Nasato) -" Last Update: 2006 Jul 22 +"SiSU Vim syntax file +"SiSU Maintainer: Ralph Amissah +"SiSU Markup: SiSU (sisu-0.66.0, 2008-02-24) +"(originally looked at Ruby Vim by Mirko Nasato) if version < 600 syntax clear @@ -10,63 +9,76 @@ elseif exists("b:current_syntax") finish else endif -"% 11 Errors? + +" Errors: syn match sisu_error contains=sisu_link,sisu_error_wspace "" -"% 10 Markers: Endnote Identifiers, Pagebreaks etc.: + +" Markers Identifiers: if !exists("sisu_no_identifiers") - syn match sisu_mark_endnote "\~^" - syn match sisu_contain contains=@NoSpell "" - syn match sisu_break contains=@NoSpell "
    \|
    " - syn match sisu_control contains=@NoSpell "

    \|

    \|

    \|<:p[bn]>" - syn match sisu_html "

    \|
    " - syn match sisu_marktail "[~-]#" - syn match sisu_html contains=@NoSpell "\|\|\|\|\|
    " - syn match sisu_control "\"" - syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" - syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" - syn match sisu_link contains=@NoSpell "\(https\?://\|\.\.\/\)\S\+" + syn match sisu_mark_endnote "\~^" + syn match sisu_contain contains=@NoSpell "" + syn match sisu_break contains=@NoSpell "
    \|
    " + syn match sisu_control contains=@NoSpell "

    \|

    \|

    \|<:p[bn]>" + syn match sisu_html "

    \|
    " + syn match sisu_marktail "[~-]#" + syn match sisu_html contains=@NoSpell "\|\|
    \|\|
    \|
    " + syn match sisu_control "\"" + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" + syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" "metaverse specific - syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>" - syn match sisu_marktail "<\~#>" - syn match sisu_markpara contains=@NoSpell "<:i[12]>" - syn match sisu_link " \*\~\S\+" - syn match sisu_action "^<:insert\d\+>" - syn match sisu_contain "<:e>" + syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>" + syn match sisu_marktail "<\~#>" + syn match sisu_markpara contains=@NoSpell "<:i[1-9]>" + syn match sisu_link " \*\~\S\+" + syn match sisu_action "^<:insert\d\+>" + syn match sisu_contain "<:e>" + syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" + syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" + syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" + syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" + syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" + syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" + syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" + syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" endif -"% 9 URLs Numbers: and ASCII Codes + +"URLs Numbers And ASCII Codes: syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" -"% 8 Tuned Error - is error if not already matched + +"Tuned Error: (is error if not already matched) syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" syn match sisu_error contains=sisu_error "]" -"% 7 Simple Enclosed Markup: -" Simple Markup: -"% url/link + +"Simple Paired Enclosed Markup: +"url/link syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" -"% header -syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="$" -syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(tags\?\|date\)\s\+"rs=e-1 end="\n$" -syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^@\S\+:[+-]\?\s"rs=e-1 end="$" -syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^@\(tags\?\|date\):\s\+"rs=e-1 end="\n$" -"% headings +"header +syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="\n$" +syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^[@%]\S\+:[+-]\?\s"rs=e-1 end="\n$" +"headings syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$" -"% grouped text -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="table{.\+" end="}table" -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="{t\~h}" end="$$" +"grouped text +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n\n" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)" syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code" -"% endnotes -syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" -syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" +"endnotes +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n" -"% images -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}\(\(https\?://\|\.\./\)\S\+\|image\)" oneline -"% some line operations +"links and images +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|\.\./\)\S\+" oneline +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline +"some line operations syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$" -syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([12*]\|[12]\*\) " end="$" +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$" -"% font face curly brackets +"font face curly brackets +"syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_sem start="\S\+:{" end="}:[^<>,.!?:; ]\+" oneline syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" @@ -74,43 +86,45 @@ syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," -syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" +syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="" end="" oneline -"% single words bold italicise etc. "workon +"single words bold italicise etc. "workon syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline -"% misc +"misc syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline -"% metaverse html (flagged as errors for filetype sisu) +"metaverse html (flagged as errors for filetype sisu) syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" skip="\n" oneline syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" skip="\n" oneline syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" skip="\n" oneline syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" skip="\n" oneline syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" skip="\\\\\|\\'" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="" end="" oneline -"% metaverse <:> +"metaverse syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>" syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:alt>" end="<:alt[-_]end>" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:poem>" end="<:poem[-_]end>" -"% 6 Expensive Mode -" Expensive Mode: + +"Expensive Mode: if !exists("sisu_no_expensive") else " not Expensive syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline endif " Expensive? -"% 5 Headers: and Headings (Document Instructions) + +"Headers And Headings: (Document Instructions) syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" -"% 4 Errors? + +"Errors: syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+" syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" syn match sisu_error_wspace contains=sisu_error_wspace " \s*$" -syn match sisu_error contains=sisu_error,sisu_error_wspace "[^ (}]https\?:\S\+" syn match sisu_error contains=sisu_error_wspace "\t\+" -syn match sisu_error contains=sisu_error "https\?:\S\+[}><]" +syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" +syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n\n" -syn match sisu_error contains=sisu_error "^[\-\~]{[^{]\{-}\n\n" +syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n\n" syn match sisu_error contains=sisu_error "\s\+.{{" syn match sisu_error contains=sisu_error "^\~\s*$" syn match sisu_error contains=sisu_error "^[0-9]\~\s*$" @@ -124,48 +138,52 @@ syn match sisu_error contains=sisu_error "" "errors for filetype sisu, though not error in 'metaverse': syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" syn match sisu_error "/\?<\([biu]\)>[^()]\{-}\n\n" -"% 3 Error Exceptions? + +"Error Exceptions: syn match sisu_control "\n\n" "contains=ALL syn match sisu_control " //" syn match sisu_error "%{" -syn match sisu_error "
    https\?:\S\+\|https\?:\S\+
    " -syn match sisu_error "[><]https\?:\S\+\|https\?:\S\+[><]" -"% 2 Definitions - Define the default highlighting. -if version >= 508 || !exists("did_sisu_syntax_inits") - if version < 508 - let did_sisu_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif -"% 1 Defined - HiLink sisu_normal Normal - HiLink sisu_header PreProc - HiLink sisu_header_content Statement - HiLink sisu_heading Title - HiLink sisu_structure Operator - HiLink sisu_contain Include - HiLink sisu_mark_endnote Include - HiLink sisu_link NonText - HiLink sisu_linked String - HiLink sisu_fontface Include - HiLink sisu_strikeout DiffDelete - HiLink sisu_content_alt Special - HiLink sisu_content_endnote Special - HiLink sisu_control Define - HiLink sisu_ocn Include - HiLink sisu_number Number - HiLink sisu_identifier Function - HiLink sisu_underline Underlined - HiLink sisu_markpara Include - HiLink sisu_marktail Include - HiLink sisu_mark Identifier - HiLink sisu_break Structure - HiLink sisu_html Type - HiLink sisu_action Identifier - HiLink sisu_comment Comment - HiLink sisu_error_wspace Error - HiLink sisu_error Error - delcommand HiLink -endif +syn match sisu_error "
    _\?https\?:\S\+\|_\?https\?:\S\+
    " +syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" + +"Definitions Default Highlighting: +hi def link sisu_normal Normal +hi def link sisu_header PreProc +hi def link sisu_header_content Statement +hi def link sisu_heading Title +hi def link sisu_structure Operator +hi def link sisu_contain Include +hi def link sisu_mark_endnote Include +hi def link sisu_link NonText +hi def link sisu_linked String +hi def link sisu_fontface Include +hi def link sisu_strikeout DiffDelete +hi def link sisu_content_alt Special +hi def link sisu_sem_content String +hi def link sisu_sem_content SpecialKey +hi def link sisu_sem_block Special +hi def link sisu_sem_marker Visual +"hi def link sisu_sem_marker Structure +hi def link sisu_sem_marker_block MatchParen +hi def link sisu_sem_ex_marker FoldColumn +hi def link sisu_sem_ex_marker_block Folded +hi def link sisu_sem_ex_content Comment +"hi def link sisu_sem_ex_content SpecialKey +hi def link sisu_sem_ex_block Comment +hi def link sisu_content_endnote Special +hi def link sisu_control Define +hi def link sisu_ocn Include +hi def link sisu_number Number +hi def link sisu_identifier Function +hi def link sisu_underline Underlined +hi def link sisu_markpara Include +hi def link sisu_marktail Include +hi def link sisu_mark Identifier +hi def link sisu_break Structure +hi def link sisu_html Type +hi def link sisu_action Identifier +hi def link sisu_comment Comment +hi def link sisu_error_sem_marker Error +hi def link sisu_error_wspace Error +hi def link sisu_error Error let b:current_syntax = "sisu" diff --git a/runtime/syntax/snobol4.vim b/runtime/syntax/snobol4.vim index 1f6460f1..07eb63de 100644 --- a/runtime/syntax/snobol4.vim +++ b/runtime/syntax/snobol4.vim @@ -2,8 +2,12 @@ " Language: SNOBOL4 " Maintainer: Rafal Sulejman " Site: http://rms.republika.pl/vim/syntax/snobol4.vim -" Last change: 2006 may 1 +" Last change: 2006 may 10 " Changes: +" - strict snobol4 mode (set snobol4_strict_mode to activate) +" - incorrect HL of dots in strings corrected +" - incorrect HL of dot-variables in parens corrected +" - one character labels weren't displayed correctly. " - nonexistent Snobol4 keywords displayed as errors. " For version 5.x: Clear all syntax items @@ -15,40 +19,54 @@ elseif exists("b:current_syntax") endif syntax case ignore -" Vanilla Snobol4 keywords -syn keyword snobol4Keyword any apply arb arbno arg array -syn keyword snobol4Keyword break -syn keyword snobol4Keyword char clear code collect convert copy -syn keyword snobol4Keyword data datatype date define detach differ dump dupl -syn keyword snobol4Keyword endfile eq eval -syn keyword snobol4Keyword field -syn keyword snobol4Keyword ge gt ident -syn keyword snobol4Keyword input integer item -syn keyword snobol4Keyword le len lgt local lpad lt -syn keyword snobol4Keyword ne notany -syn keyword snobol4Keyword opsyn output -syn keyword snobol4Keyword pos prototype -syn keyword snobol4Keyword remdr replace rpad rpos rtab -syn keyword snobol4Keyword size span stoptr -syn keyword snobol4Keyword tab table time trace trim terminal -syn keyword snobol4Keyword unload -syn keyword snobol4Keyword value -" Spitbol keywords + +" Snobol4 keywords +syn keyword snobol4Keyword any apply arb arbno arg array +syn keyword snobol4Keyword break +syn keyword snobol4Keyword char clear code collect convert copy +syn keyword snobol4Keyword data datatype date define detach differ dump dupl +syn keyword snobol4Keyword endfile eq eval +syn keyword snobol4Keyword field +syn keyword snobol4Keyword ge gt ident +syn keyword snobol4Keyword input integer item +syn keyword snobol4Keyword le len lgt local lpad lt +syn keyword snobol4Keyword ne notany +syn keyword snobol4Keyword opsyn output +syn keyword snobol4Keyword pos prototype +syn keyword snobol4Keyword remdr replace rpad rpos rtab rewind +syn keyword snobol4Keyword size span stoptr +syn keyword snobol4Keyword tab table time trace trim terminal +syn keyword snobol4Keyword unload +syn keyword snobol4Keyword value + " CSNOBOL keywords -syn keyword snobol4Keyword sset +syn keyword snobol4ExtKeyword breakx +syn keyword snobol4ExtKeyword char chop +syn keyword snobol4ExtKeyword date delete +syn keyword snobol4ExtKeyword exp +syn keyword snobol4ExtKeyword freeze function +syn keyword snobol4ExtKeyword host +syn keyword snobol4ExtKeyword io_findunit +syn keyword snobol4ExtKeyword label lpad leq lge lle llt lne log +syn keyword snobol4ExtKeyword ord +syn keyword snobol4ExtKeyword reverse rpad rsort rename +syn keyword snobol4ExtKeyword serv_listen sset set sort sqrt substr +syn keyword snobol4ExtKeyword thaw +syn keyword snobol4ExtKeyword vdiffer -syn region snobol4String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ -syn region snobol4String matchgroup=Quote start=+'+ skip=+\\'+ end=+'+ -syn match snobol4Statement "^-[^ ][^ ]*" -syn match snobol4Comment "^\*.*$" -syn match snobol4Comment ";\*.*$" -syn match snobol4Constant "[^a-z]\.[a-z][a-z0-9\-]*" -syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError +syn region snobol4String matchgroup=Quote start=+"+ end=+"+ +syn region snobol4String matchgroup=Quote start=+'+ end=+'+ +syn match snobol4BogusStatement "^-[^ ][^ ]*" +syn match snobol4Statement "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)" +syn match snobol4Constant /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1 +syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError syn match snobol4Number "\<\d*\(\.\d\d*\)*\>" -syn match snobol4BogusSysVar "&\w\{1,}" +syn match snobol4BogusSysVar "&\w\{1,}" syn match snobol4SysVar "&\(abort\|alphabet\|anchor\|arb\|bal\|case\|code\|dump\|errlimit\|errtext\|errtype\|fail\|fence\|fnclevel\|ftrace\|fullscan\|input\|lastno\|lcase\|maxlngth\|output\|parm\|rem\|rtntype\|stcount\|stfcount\|stlimit\|stno\|succeed\|trace\|trim\|ucase\)" -syn match snobol4Label "^[^-\.\+ \t]\S\{1,}" -" +syn match snobol4ExtSysVar "&\(gtrace\|line\|file\|lastline\|lastfile\)" +syn match snobol4Label "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*" +syn match snobol4Comment "\(^\|;\)\([\*\|!;#].*$\)" + " Parens matching syn cluster snobol4ParenGroup contains=snobol4ParenError syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket @@ -58,8 +76,7 @@ syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' conta syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>" " optional shell shebang line -syn match snobol4Comment "^\#\!.*$" - +" syn match snobol4Comment "^\#\!.*$" " Define the default highlighting. " For version 5.7 and earlier: only when not done already @@ -80,19 +97,26 @@ if version >= 508 || !exists("did_snobol4_syntax_inits") HiLink snobol4Number Number HiLink snobol4Error Error HiLink snobol4Statement PreProc + HiLink snobol4BogusStatement snobol4Error HiLink snobol4String String HiLink snobol4Comment Comment HiLink snobol4Special Special HiLink snobol4Todo Todo - HiLink snobol4Keyword Statement - HiLink snobol4Function Statement HiLink snobol4Keyword Keyword + HiLink snobol4Function Function HiLink snobol4MathsOperator Operator HiLink snobol4ParenError snobol4Error HiLink snobol4ErrInParen snobol4Error HiLink snobol4ErrInBracket snobol4Error HiLink snobol4SysVar Keyword HiLink snobol4BogusSysVar snobol4Error + if exists("snobol4_strict_mode") + HiLink snobol4ExtSysVar WarningMsg + HiLink snobol4ExtKeyword WarningMsg + else + HiLink snobol4ExtSysVar snobol4SysVar + HiLink snobol4ExtKeyword snobol4Keyword + endif delcommand HiLink endif diff --git a/runtime/syntax/sql.vim b/runtime/syntax/sql.vim index 311d9eeb..7ba20f34 100644 --- a/runtime/syntax/sql.vim +++ b/runtime/syntax/sql.vim @@ -36,4 +36,4 @@ endif " Source the appropriate file exec 'runtime syntax/'.filename.'.vim' -" vim:sw=4:ff=unix: +" vim:sw=4: diff --git a/runtime/syntax/sqlanywhere.vim b/runtime/syntax/sqlanywhere.vim dissimilarity index 89% index b69da0bd..81fa060f 100644 --- a/runtime/syntax/sqlanywhere.vim +++ b/runtime/syntax/sqlanywhere.vim @@ -1,706 +1,711 @@ -" Vim syntax file -" Language: SQL, Adaptive Server Anywhere -" Maintainer: David Fishburn -" Last Change: Thu Sep 15 2005 10:30:09 AM -" Version: 9.0.2 - -" Description: Updated to Adaptive Server Anywhere 9.0.2 -" Updated to Adaptive Server Anywhere 9.0.1 -" Updated to Adaptive Server Anywhere 9.0.0 -" -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -syn case ignore - -" The SQL reserved words, defined as keywords. - -syn keyword sqlSpecial false null true - -" common functions -syn keyword sqlFunction count sum avg min max debug_eng isnull -syn keyword sqlFunction greater lesser argn string ymd todate -syn keyword sqlFunction totimestamp date today now utc_now -syn keyword sqlFunction number identity years months weeks days -syn keyword sqlFunction hours minutes seconds second minute hour -syn keyword sqlFunction day month year dow date_format substr -syn keyword sqlFunction substring byte_substr length byte_length -syn keyword sqlFunction datalength ifnull evaluate list -syn keyword sqlFunction soundex similar difference like_start -syn keyword sqlFunction like_end regexp_compile -syn keyword sqlFunction regexp_compile_patindex remainder abs -syn keyword sqlFunction graphical_plan plan explanation ulplan -syn keyword sqlFunction graphical_ulplan long_ulplan -syn keyword sqlFunction short_ulplan rewrite watcomsql -syn keyword sqlFunction transactsql dialect estimate -syn keyword sqlFunction estimate_source index_estimate -syn keyword sqlFunction experience_estimate traceback wsql_state -syn keyword sqlFunction lang_message dateadd datediff datepart -syn keyword sqlFunction datename dayname monthname quarter -syn keyword sqlFunction tsequal hextoint inttohex rand textptr -syn keyword sqlFunction rowid grouping stddev variance rank -syn keyword sqlFunction dense_rank density percent_rank user_name -syn keyword sqlFunction user_id str stuff char_length nullif -syn keyword sqlFunction sortkey compare ts_index_statistics -syn keyword sqlFunction ts_table_statistics isdate isnumeric -syn keyword sqlFunction get_identity lookup newid uuidtostr -syn keyword sqlFunction strtouuid varexists - -" 9.0.1 functions -syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot -syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp -syn keyword sqlFunction floor getdate insertstr -syn keyword sqlFunction log log10 lower mod pi power -syn keyword sqlFunction property radians replicate round sign sin -syn keyword sqlFunction sqldialect tan truncate truncnum -syn keyword sqlFunction base64_encode base64_decode -syn keyword sqlFunction hash compress decompress encrypt decrypt - -" string functions -syn keyword sqlFunction ascii char left ltrim repeat -syn keyword sqlFunction space right rtrim trim lcase ucase -syn keyword sqlFunction locate charindex patindex replace -syn keyword sqlFunction errormsg csconvert - -" property functions -syn keyword sqlFunction db_id db_name property_name -syn keyword sqlFunction property_description property_number -syn keyword sqlFunction next_connection next_database property -syn keyword sqlFunction connection_property db_property db_extended_property -syn keyword sqlFunction event_parmeter event_condition event_condition_name - -" sa_ procedures -syn keyword sqlFunction sa_add_index_consultant_analysis -syn keyword sqlFunction sa_add_workload_query -syn keyword sqlFunction sa_app_deregister -syn keyword sqlFunction sa_app_get_infoStr -syn keyword sqlFunction sa_app_get_status -syn keyword sqlFunction sa_app_register -syn keyword sqlFunction sa_app_registration_unlock -syn keyword sqlFunction sa_app_set_infoStr -syn keyword sqlFunction sa_audit_string -syn keyword sqlFunction sa_check_commit -syn keyword sqlFunction sa_checkpoint_execute -syn keyword sqlFunction sa_conn_activity -syn keyword sqlFunction sa_conn_compression_info -syn keyword sqlFunction sa_conn_deregister -syn keyword sqlFunction sa_conn_info -syn keyword sqlFunction sa_conn_properties -syn keyword sqlFunction sa_conn_properties_by_conn -syn keyword sqlFunction sa_conn_properties_by_name -syn keyword sqlFunction sa_conn_register -syn keyword sqlFunction sa_conn_set_status -syn keyword sqlFunction sa_create_analysis_from_query -syn keyword sqlFunction sa_db_info -syn keyword sqlFunction sa_db_properties -syn keyword sqlFunction sa_disable_auditing_type -syn keyword sqlFunction sa_disable_index -syn keyword sqlFunction sa_disk_free_space -syn keyword sqlFunction sa_enable_auditing_type -syn keyword sqlFunction sa_enable_index -syn keyword sqlFunction sa_end_forward_to -syn keyword sqlFunction sa_eng_properties -syn keyword sqlFunction sa_event_schedules -syn keyword sqlFunction sa_exec_script -syn keyword sqlFunction sa_flush_cache -syn keyword sqlFunction sa_flush_statistics -syn keyword sqlFunction sa_forward_to -syn keyword sqlFunction sa_get_dtt -syn keyword sqlFunction sa_get_histogram -syn keyword sqlFunction sa_get_request_profile -syn keyword sqlFunction sa_get_request_profile_sub -syn keyword sqlFunction sa_get_request_times -syn keyword sqlFunction sa_get_server_messages -syn keyword sqlFunction sa_get_simulated_scale_factors -syn keyword sqlFunction sa_get_workload_capture_status -syn keyword sqlFunction sa_index_density -syn keyword sqlFunction sa_index_levels -syn keyword sqlFunction sa_index_statistics -syn keyword sqlFunction sa_internal_alter_index_ability -syn keyword sqlFunction sa_internal_create_analysis_from_query -syn keyword sqlFunction sa_internal_disk_free_space -syn keyword sqlFunction sa_internal_get_dtt -syn keyword sqlFunction sa_internal_get_histogram -syn keyword sqlFunction sa_internal_get_request_times -syn keyword sqlFunction sa_internal_get_simulated_scale_factors -syn keyword sqlFunction sa_internal_get_workload_capture_status -syn keyword sqlFunction sa_internal_index_density -syn keyword sqlFunction sa_internal_index_levels -syn keyword sqlFunction sa_internal_index_statistics -syn keyword sqlFunction sa_internal_java_loaded_classes -syn keyword sqlFunction sa_internal_locks -syn keyword sqlFunction sa_internal_pause_workload_capture -syn keyword sqlFunction sa_internal_procedure_profile -syn keyword sqlFunction sa_internal_procedure_profile_summary -syn keyword sqlFunction sa_internal_read_backup_history -syn keyword sqlFunction sa_internal_recommend_indexes -syn keyword sqlFunction sa_internal_reset_identity -syn keyword sqlFunction sa_internal_resume_workload_capture -syn keyword sqlFunction sa_internal_start_workload_capture -syn keyword sqlFunction sa_internal_stop_index_consultant -syn keyword sqlFunction sa_internal_stop_workload_capture -syn keyword sqlFunction sa_internal_table_fragmentation -syn keyword sqlFunction sa_internal_table_page_usage -syn keyword sqlFunction sa_internal_table_stats -syn keyword sqlFunction sa_internal_virtual_sysindex -syn keyword sqlFunction sa_internal_virtual_sysixcol -syn keyword sqlFunction sa_java_loaded_classes -syn keyword sqlFunction sa_jdk_version -syn keyword sqlFunction sa_locks -syn keyword sqlFunction sa_make_object -syn keyword sqlFunction sa_pause_workload_capture -syn keyword sqlFunction sa_proc_debug_attach_to_connection -syn keyword sqlFunction sa_proc_debug_connect -syn keyword sqlFunction sa_proc_debug_detach_from_connection -syn keyword sqlFunction sa_proc_debug_disconnect -syn keyword sqlFunction sa_proc_debug_get_connection_name -syn keyword sqlFunction sa_proc_debug_release_connection -syn keyword sqlFunction sa_proc_debug_request -syn keyword sqlFunction sa_proc_debug_version -syn keyword sqlFunction sa_proc_debug_wait_for_connection -syn keyword sqlFunction sa_procedure_profile -syn keyword sqlFunction sa_procedure_profile_summary -syn keyword sqlFunction sa_read_backup_history -syn keyword sqlFunction sa_recommend_indexes -syn keyword sqlFunction sa_recompile_views -syn keyword sqlFunction sa_remove_index_consultant_analysis -syn keyword sqlFunction sa_remove_index_consultant_workload -syn keyword sqlFunction sa_reset_identity -syn keyword sqlFunction sa_resume_workload_capture -syn keyword sqlFunction sa_server_option -syn keyword sqlFunction sa_set_simulated_scale_factor -syn keyword sqlFunction sa_setremoteuser -syn keyword sqlFunction sa_setsubscription -syn keyword sqlFunction sa_start_recording_commits -syn keyword sqlFunction sa_start_workload_capture -syn keyword sqlFunction sa_statement_text -syn keyword sqlFunction sa_stop_index_consultant -syn keyword sqlFunction sa_stop_recording_commits -syn keyword sqlFunction sa_stop_workload_capture -syn keyword sqlFunction sa_sync -syn keyword sqlFunction sa_sync_sub -syn keyword sqlFunction sa_table_fragmentation -syn keyword sqlFunction sa_table_page_usage -syn keyword sqlFunction sa_table_stats -syn keyword sqlFunction sa_update_index_consultant_workload -syn keyword sqlFunction sa_validate -syn keyword sqlFunction sa_virtual_sysindex -syn keyword sqlFunction sa_virtual_sysixcol - -" sp_ procedures -syn keyword sqlFunction sp_addalias -syn keyword sqlFunction sp_addauditrecord -syn keyword sqlFunction sp_adddumpdevice -syn keyword sqlFunction sp_addgroup -syn keyword sqlFunction sp_addlanguage -syn keyword sqlFunction sp_addlogin -syn keyword sqlFunction sp_addmessage -syn keyword sqlFunction sp_addremotelogin -syn keyword sqlFunction sp_addsegment -syn keyword sqlFunction sp_addserver -syn keyword sqlFunction sp_addthreshold -syn keyword sqlFunction sp_addtype -syn keyword sqlFunction sp_adduser -syn keyword sqlFunction sp_auditdatabase -syn keyword sqlFunction sp_auditlogin -syn keyword sqlFunction sp_auditobject -syn keyword sqlFunction sp_auditoption -syn keyword sqlFunction sp_auditsproc -syn keyword sqlFunction sp_bindefault -syn keyword sqlFunction sp_bindmsg -syn keyword sqlFunction sp_bindrule -syn keyword sqlFunction sp_changedbowner -syn keyword sqlFunction sp_changegroup -syn keyword sqlFunction sp_checknames -syn keyword sqlFunction sp_checkperms -syn keyword sqlFunction sp_checkreswords -syn keyword sqlFunction sp_clearstats -syn keyword sqlFunction sp_column_privileges -syn keyword sqlFunction sp_columns -syn keyword sqlFunction sp_commonkey -syn keyword sqlFunction sp_configure -syn keyword sqlFunction sp_cursorinfo -syn keyword sqlFunction sp_databases -syn keyword sqlFunction sp_datatype_info -syn keyword sqlFunction sp_dboption -syn keyword sqlFunction sp_dbremap -syn keyword sqlFunction sp_depends -syn keyword sqlFunction sp_diskdefault -syn keyword sqlFunction sp_displaylogin -syn keyword sqlFunction sp_dropalias -syn keyword sqlFunction sp_dropdevice -syn keyword sqlFunction sp_dropgroup -syn keyword sqlFunction sp_dropkey -syn keyword sqlFunction sp_droplanguage -syn keyword sqlFunction sp_droplogin -syn keyword sqlFunction sp_dropmessage -syn keyword sqlFunction sp_dropremotelogin -syn keyword sqlFunction sp_dropsegment -syn keyword sqlFunction sp_dropserver -syn keyword sqlFunction sp_dropthreshold -syn keyword sqlFunction sp_droptype -syn keyword sqlFunction sp_dropuser -syn keyword sqlFunction sp_estspace -syn keyword sqlFunction sp_extendsegment -syn keyword sqlFunction sp_fkeys -syn keyword sqlFunction sp_foreignkey -syn keyword sqlFunction sp_getmessage -syn keyword sqlFunction sp_help -syn keyword sqlFunction sp_helpconstraint -syn keyword sqlFunction sp_helpdb -syn keyword sqlFunction sp_helpdevice -syn keyword sqlFunction sp_helpgroup -syn keyword sqlFunction sp_helpindex -syn keyword sqlFunction sp_helpjoins -syn keyword sqlFunction sp_helpkey -syn keyword sqlFunction sp_helplanguage -syn keyword sqlFunction sp_helplog -syn keyword sqlFunction sp_helpprotect -syn keyword sqlFunction sp_helpremotelogin -syn keyword sqlFunction sp_helpsegment -syn keyword sqlFunction sp_helpserver -syn keyword sqlFunction sp_helpsort -syn keyword sqlFunction sp_helptext -syn keyword sqlFunction sp_helpthreshold -syn keyword sqlFunction sp_helpuser -syn keyword sqlFunction sp_indsuspect -syn keyword sqlFunction sp_lock -syn keyword sqlFunction sp_locklogin -syn keyword sqlFunction sp_logdevice -syn keyword sqlFunction sp_login_environment -syn keyword sqlFunction sp_modifylogin -syn keyword sqlFunction sp_modifythreshold -syn keyword sqlFunction sp_monitor -syn keyword sqlFunction sp_password -syn keyword sqlFunction sp_pkeys -syn keyword sqlFunction sp_placeobject -syn keyword sqlFunction sp_primarykey -syn keyword sqlFunction sp_procxmode -syn keyword sqlFunction sp_recompile -syn keyword sqlFunction sp_remap -syn keyword sqlFunction sp_remote_columns -syn keyword sqlFunction sp_remote_exported_keys -syn keyword sqlFunction sp_remote_imported_keys -syn keyword sqlFunction sp_remote_pcols -syn keyword sqlFunction sp_remote_primary_keys -syn keyword sqlFunction sp_remote_procedures -syn keyword sqlFunction sp_remote_tables -syn keyword sqlFunction sp_remoteoption -syn keyword sqlFunction sp_rename -syn keyword sqlFunction sp_renamedb -syn keyword sqlFunction sp_reportstats -syn keyword sqlFunction sp_reset_tsql_environment -syn keyword sqlFunction sp_role -syn keyword sqlFunction sp_server_info -syn keyword sqlFunction sp_servercaps -syn keyword sqlFunction sp_serverinfo -syn keyword sqlFunction sp_serveroption -syn keyword sqlFunction sp_setlangalias -syn keyword sqlFunction sp_setreplicate -syn keyword sqlFunction sp_setrepproc -syn keyword sqlFunction sp_setreptable -syn keyword sqlFunction sp_spaceused -syn keyword sqlFunction sp_special_columns -syn keyword sqlFunction sp_sproc_columns -syn keyword sqlFunction sp_statistics -syn keyword sqlFunction sp_stored_procedures -syn keyword sqlFunction sp_syntax -syn keyword sqlFunction sp_table_privileges -syn keyword sqlFunction sp_tables -syn keyword sqlFunction sp_tsql_environment -syn keyword sqlFunction sp_tsql_feature_not_supported -syn keyword sqlFunction sp_unbindefault -syn keyword sqlFunction sp_unbindmsg -syn keyword sqlFunction sp_unbindrule -syn keyword sqlFunction sp_volchanged -syn keyword sqlFunction sp_who -syn keyword sqlFunction xp_scanf -syn keyword sqlFunction xp_sprintf - -" server functions -syn keyword sqlFunction col_length -syn keyword sqlFunction col_name -syn keyword sqlFunction index_col -syn keyword sqlFunction object_id -syn keyword sqlFunction object_name -syn keyword sqlFunction proc_role -syn keyword sqlFunction show_role -syn keyword sqlFunction xp_cmdshell -syn keyword sqlFunction xp_msver -syn keyword sqlFunction xp_read_file -syn keyword sqlFunction xp_real_cmdshell -syn keyword sqlFunction xp_real_read_file -syn keyword sqlFunction xp_real_sendmail -syn keyword sqlFunction xp_real_startmail -syn keyword sqlFunction xp_real_startsmtp -syn keyword sqlFunction xp_real_stopmail -syn keyword sqlFunction xp_real_stopsmtp -syn keyword sqlFunction xp_real_write_file -syn keyword sqlFunction xp_scanf -syn keyword sqlFunction xp_sendmail -syn keyword sqlFunction xp_sprintf -syn keyword sqlFunction xp_startmail -syn keyword sqlFunction xp_startsmtp -syn keyword sqlFunction xp_stopmail -syn keyword sqlFunction xp_stopsmtp -syn keyword sqlFunction xp_write_file - -" http functions -syn keyword sqlFunction http_header http_variable -syn keyword sqlFunction next_http_header next_http_variable -syn keyword sqlFunction sa_set_http_header sa_set_http_option -syn keyword sqlFunction sa_http_variable_info sa_http_header_info - -" http functions 9.0.1 -syn keyword sqlFunction http_encode http_decode -syn keyword sqlFunction html_encode html_decode - -" keywords -syn keyword sqlKeyword absolute action activ add address after -syn keyword sqlKeyword algorithm allow_dup_row -syn keyword sqlKeyword alter and any as asc ascii ase at atomic -syn keyword sqlKeyword attended audit authorization -syn keyword sqlKeyword autoincrement autostop bcp before -syn keyword sqlKeyword between blank -syn keyword sqlKeyword blanks block bottom unbounded break bufferpool -syn keyword sqlKeyword bulk by byte cache calibrate calibration -syn keyword sqlKeyword capability cascade cast -syn keyword sqlKeyword catalog changes char char_convert check -syn keyword sqlKeyword class classes client -syn keyword sqlKeyword cluster clustered collation column -syn keyword sqlKeyword command comment comparisons -syn keyword sqlKeyword compatible component compressed compute -syn keyword sqlKeyword concat confirm connection -syn keyword sqlKeyword console consolidate consolidated -syn keyword sqlKeyword constraint constraints continue -syn keyword sqlKeyword convert count crc cross cube -syn keyword sqlKeyword current cursor data data database -syn keyword sqlKeyword current_timestamp current_user -syn keyword sqlKeyword datatype dba dbfile -syn keyword sqlKeyword dbspace debug -syn keyword sqlKeyword decrypted default defaults definition -syn keyword sqlKeyword delay deleting delimited desc -syn keyword sqlKeyword description deterministic directory -syn keyword sqlKeyword disable distinct do domain -syn keyword sqlKeyword dsetpass dttm dynamic each editproc ejb -syn keyword sqlKeyword else elseif enable encrypted end endif -syn keyword sqlKeyword engine erase error escape escapes event -syn keyword sqlKeyword every exception exclusive exec -syn keyword sqlKeyword existing exists expanded express -syn keyword sqlKeyword external externlogin factor false -syn keyword sqlKeyword fastfirstrow fieldproc file filler -syn keyword sqlKeyword fillfactor finish first first_keyword -syn keyword sqlKeyword following force foreign format -syn keyword sqlKeyword freepage full function go global -syn keyword sqlKeyword group handler hash having hexadecimal -syn keyword sqlKeyword hidden high hng hold holdlock -syn keyword sqlKeyword hours id identified identity ignore -syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate -syn keyword sqlKeyword in inactive incremental index info inner -syn keyword sqlKeyword inout insensitive inserting -syn keyword sqlKeyword instead integrated -syn keyword sqlKeyword internal into iq is isolation jar java -syn keyword sqlKeyword jconnect jdk join kb key language last -syn keyword sqlKeyword last_keyword lateral left level like -syn keyword sqlKeyword limit local location log -syn keyword sqlKeyword logging login long low main -syn keyword sqlKeyword match max maximum membership -syn keyword sqlKeyword minutes mirror mode modify monitor -syn keyword sqlKeyword name named native natural new next no -syn keyword sqlKeyword noholdlock nolock nonclustered none not -syn keyword sqlKeyword notify null nulls of off old on -syn keyword sqlKeyword only optimization optimizer option -syn keyword sqlKeyword or order others out outer over -syn keyword sqlKeyword package packetsize padding page pages -syn keyword sqlKeyword paglock parallel part partition path -syn keyword sqlKeyword pctfree plan preceding precision prefetch prefix -syn keyword sqlKeyword preserve preview primary -syn keyword sqlKeyword prior priqty private privileges -syn keyword sqlKeyword procedure public publication publish publisher -syn keyword sqlKeyword quotes range readcommitted -syn keyword sqlKeyword readpast readuncommitted -syn keyword sqlKeyword received recompile recursive references -syn keyword sqlKeyword referencing relative -syn keyword sqlKeyword rename repeatableread -syn keyword sqlKeyword replicate rereceive resend reset -syn keyword sqlKeyword resolve resource respect -syn keyword sqlKeyword restrict result retain -syn keyword sqlKeyword returns right -syn keyword sqlKeyword rollup row rowlock rows save -syn keyword sqlKeyword schedule schema scroll seconds secqty -syn keyword sqlKeyword send sensitive sent serializable -syn keyword sqlKeyword server server session sets -syn keyword sqlKeyword share since site size skip -syn keyword sqlKeyword some sorted_data sqlcode sqlid -syn keyword sqlKeyword sqlstate stacker statement -syn keyword sqlKeyword statistics status stogroup store -syn keyword sqlKeyword strip subpages subscribe subscription -syn keyword sqlKeyword subtransaction synchronization -syn keyword sqlKeyword syntax_error table tablock -syn keyword sqlKeyword tablockx tb temp template temporary then -syn keyword sqlKeyword timezone to top -syn keyword sqlKeyword transaction transactional tries true -syn keyword sqlKeyword tsequal type unconditionally unenforced -syn keyword sqlKeyword unique union unknown unload -syn keyword sqlKeyword updating updlock upgrade use user -syn keyword sqlKeyword using utc utilities validproc -syn keyword sqlKeyword value values varchar variable -syn keyword sqlKeyword varying vcat verify view virtual wait -syn keyword sqlKeyword warning wd when where window with within -syn keyword sqlKeyword with_lparen work writefile -syn keyword sqlKeyword xlock zeros -" XML function support -syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg -syn keyword sqlFunction xmlattributes -syn keyword sqlKeyword raw auto elements explicit -" HTTP support -syn keyword sqlKeyword authorization secure url service -" HTTP 9.0.2 new procedure keywords -syn keyword sqlKeyword namespace certificate clientport proxy -" OLAP support 9.0.0 -syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept -syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy -syn keyword sqlKeyword regr_sxx regr_syy regr_sxy - -" Alternate keywords -syn keyword sqlKeyword character dec options proc reference -syn keyword sqlKeyword subtrans tran syn keyword - - -syn keyword sqlOperator in any some all between exists -syn keyword sqlOperator like escape not is and or -syn keyword sqlOperator intersect minus -syn keyword sqlOperator prior distinct - -syn keyword sqlStatement allocate alter backup begin call case -syn keyword sqlStatement checkpoint clear close commit configure connect -syn keyword sqlStatement create deallocate declare delete describe -syn keyword sqlStatement disconnect drop execute exit explain fetch -syn keyword sqlStatement for forward from get goto grant help if include -syn keyword sqlStatement input insert install leave load lock loop -syn keyword sqlStatement message open output parameter parameters passthrough -syn keyword sqlStatement prepare print put raiserror read readtext release -syn keyword sqlStatement remote remove reorganize resignal restore resume -syn keyword sqlStatement return revoke rollback savepoint select -syn keyword sqlStatement set setuser signal start stop synchronize -syn keyword sqlStatement system trigger truncate unload update -syn keyword sqlStatement validate waitfor whenever while writetext - - -syn keyword sqlType char long varchar text -syn keyword sqlType bigint decimal double float int integer numeric -syn keyword sqlType smallint tinyint real -syn keyword sqlType money smallmoney -syn keyword sqlType bit -syn keyword sqlType date datetime smalldate time timestamp -syn keyword sqlType binary image varbinary uniqueidentifier -syn keyword sqlType xml unsigned - -syn keyword sqlOption Allow_nulls_by_default -syn keyword sqlOption Ansi_blanks -syn keyword sqlOption Ansi_close_cursors_on_rollback -syn keyword sqlOption Ansi_integer_overflow -syn keyword sqlOption Ansi_permissions -syn keyword sqlOption Ansi_update_constraints -syn keyword sqlOption Ansinull -syn keyword sqlOption Assume_distinct_servers -syn keyword sqlOption Auditing -syn keyword sqlOption Auditing_options -syn keyword sqlOption Auto_commit -syn keyword sqlOption Auto_refetch -syn keyword sqlOption Automatic_timestamp -syn keyword sqlOption Background_priority -syn keyword sqlOption Bell -syn keyword sqlOption Blob_threshold -syn keyword sqlOption Blocking -syn keyword sqlOption Blocking_timeout -syn keyword sqlOption Chained -syn keyword sqlOption Char_OEM_Translation -syn keyword sqlOption Checkpoint_time -syn keyword sqlOption Cis_option -syn keyword sqlOption Cis_rowset_size -syn keyword sqlOption Close_on_endtrans -syn keyword sqlOption Command_delimiter -syn keyword sqlOption Commit_on_exit -syn keyword sqlOption Compression -syn keyword sqlOption Connection_authentication -syn keyword sqlOption Continue_after_raiserror -syn keyword sqlOption Conversion_error -syn keyword sqlOption Cooperative_commit_timeout -syn keyword sqlOption Cooperative_commits -syn keyword sqlOption Database_authentication -syn keyword sqlOption Date_format -syn keyword sqlOption Date_order -syn keyword sqlOption Debug_messages -syn keyword sqlOption Dedicated_task -syn keyword sqlOption Default_timestamp_increment -syn keyword sqlOption Delayed_commit_timeout -syn keyword sqlOption Delayed_commits -syn keyword sqlOption Delete_old_logs -syn keyword sqlOption Describe_Java_Format -syn keyword sqlOption Divide_by_zero_error -syn keyword sqlOption Echo -syn keyword sqlOption Escape_character -syn keyword sqlOption Exclude_operators -syn keyword sqlOption Extended_join_syntax -syn keyword sqlOption External_remote_options -syn keyword sqlOption Fire_triggers -syn keyword sqlOption First_day_of_week -syn keyword sqlOption Float_as_double -syn keyword sqlOption For_xml_null_treatment -syn keyword sqlOption Force_view_creation -syn keyword sqlOption Global_database_id -syn keyword sqlOption Headings -syn keyword sqlOption Input_format -syn keyword sqlOption Integrated_server_name -syn keyword sqlOption Isolation_level -syn keyword sqlOption ISQL_command_timing -syn keyword sqlOption ISQL_escape_character -syn keyword sqlOption ISQL_field_separator -syn keyword sqlOption ISQL_log -syn keyword sqlOption ISQL_plan -syn keyword sqlOption ISQL_plan_cursor_sensitivity -syn keyword sqlOption ISQL_plan_cursor_writability -syn keyword sqlOption ISQL_quote -syn keyword sqlOption Java_heap_size -syn keyword sqlOption Java_input_output -syn keyword sqlOption Java_namespace_size -syn keyword sqlOption Java_page_buffer_size -syn keyword sqlOption Lock_rejected_rows -syn keyword sqlOption Log_deadlocks -syn keyword sqlOption Log_detailed_plans -syn keyword sqlOption Log_max_requests -syn keyword sqlOption Login_mode -syn keyword sqlOption Login_procedure -syn keyword sqlOption Max_cursor_count -syn keyword sqlOption Max_hash_size -syn keyword sqlOption Max_plans_cached -syn keyword sqlOption Max_recursive_iterations -syn keyword sqlOption Max_statement_count -syn keyword sqlOption Max_work_table_hash_size -syn keyword sqlOption Min_password_length -syn keyword sqlOption Nearest_century -syn keyword sqlOption Non_keywords -syn keyword sqlOption NULLS -syn keyword sqlOption ODBC_describe_binary_as_varbinary -syn keyword sqlOption ODBC_distinguish_char_and_varchar -syn keyword sqlOption On_Charset_conversion_failure -syn keyword sqlOption On_error -syn keyword sqlOption On_tsql_error -syn keyword sqlOption Optimistic_wait_for_commit -syn keyword sqlOption Optimization_goal -syn keyword sqlOption Optimization_level -syn keyword sqlOption Optimization_logging -syn keyword sqlOption Optimization_workload -syn keyword sqlOption Output_format -syn keyword sqlOption Output_length -syn keyword sqlOption Output_nulls -syn keyword sqlOption Percent_as_comment -syn keyword sqlOption Pinned_cursor_percent_of_cache -syn keyword sqlOption Precision -syn keyword sqlOption Prefetch -syn keyword sqlOption Preserve_source_format -syn keyword sqlOption Prevent_article_pkey_update -syn keyword sqlOption Qualify_owners -syn keyword sqlOption Query_plan_on_open -syn keyword sqlOption Quiet -syn keyword sqlOption Quote_all_identifiers -syn keyword sqlOption Quoted_identifier -syn keyword sqlOption Read_past_deleted -syn keyword sqlOption Recovery_time -syn keyword sqlOption Remote_idle_timeout -syn keyword sqlOption Replicate_all -syn keyword sqlOption Replication_error -syn keyword sqlOption Replication_error_piece -syn keyword sqlOption Return_date_time_as_string -syn keyword sqlOption Return_java_as_string -syn keyword sqlOption RI_Trigger_time -syn keyword sqlOption Rollback_on_deadlock -syn keyword sqlOption Row_counts -syn keyword sqlOption Save_remote_passwords -syn keyword sqlOption Scale -syn keyword sqlOption Screen_format -syn keyword sqlOption Sort_Collation -syn keyword sqlOption SQL_flagger_error_level -syn keyword sqlOption SQL_flagger_warning_level -syn keyword sqlOption SQLConnect -syn keyword sqlOption SQLStart -syn keyword sqlOption SR_Date_Format -syn keyword sqlOption SR_Time_Format -syn keyword sqlOption SR_TimeStamp_Format -syn keyword sqlOption Statistics -syn keyword sqlOption String_rtruncation -syn keyword sqlOption Subscribe_by_remote -syn keyword sqlOption Subsume_row_locks -syn keyword sqlOption Suppress_TDS_debugging -syn keyword sqlOption TDS_Empty_string_is_null -syn keyword sqlOption Temp_space_limit_check -syn keyword sqlOption Thread_count -syn keyword sqlOption Thread_stack -syn keyword sqlOption Thread_swaps -syn keyword sqlOption Time_format -syn keyword sqlOption Time_zone_adjustment -syn keyword sqlOption Timestamp_format -syn keyword sqlOption Truncate_date_values -syn keyword sqlOption Truncate_timestamp_values -syn keyword sqlOption Truncate_with_auto_commit -syn keyword sqlOption Truncation_length -syn keyword sqlOption Tsql_hex_constant -syn keyword sqlOption Tsql_variables -syn keyword sqlOption Update_statistics -syn keyword sqlOption User_estimates -syn keyword sqlOption Verify_all_columns -syn keyword sqlOption Verify_threshold -syn keyword sqlOption Wait_for_commit - -" Strings and characters: -syn region sqlString start=+"+ end=+"+ contains=@Spell -syn region sqlString start=+'+ end=+'+ contains=@Spell - -" Numbers: -syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" - -" Comments: -syn region sqlDashComment start=/--/ end=/$/ contains=@Spell -syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell -syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell -syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell -syn sync ccomment sqlComment -syn sync ccomment sqlDashComment -syn sync ccomment sqlSlashComment - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_sql_syn_inits") - if version < 508 - let did_sql_syn_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi link - endif - - HiLink sqlDashComment Comment - HiLink sqlSlashComment Comment - HiLink sqlMultiComment Comment - HiLink sqlNumber Number - HiLink sqlOperator Operator - HiLink sqlSpecial Special - HiLink sqlKeyword Keyword - HiLink sqlStatement Statement - HiLink sqlString String - HiLink sqlType Type - HiLink sqlFunction Function - HiLink sqlOption PreProc - - delcommand HiLink -endif - -let b:current_syntax = "sqlanywhere" - -" vim:sw=4:ff=unix: + +" Vim syntax file +" Language: SQL, Adaptive Server Anywhere +" Maintainer: David Fishburn +" Last Change: Tue 29 Jan 2008 12:54:19 PM Eastern Standard Time +" Version: 10.0.1 + +" Description: Updated to Adaptive Server Anywhere 10.0.1 +" Updated to Adaptive Server Anywhere 9.0.2 +" Updated to Adaptive Server Anywhere 9.0.1 +" Updated to Adaptive Server Anywhere 9.0.0 +" +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case ignore + +" The SQL reserved words, defined as keywords. + +syn keyword sqlSpecial false null true + +" common functions +syn keyword sqlFunction count sum avg min max debug_eng isnull +syn keyword sqlFunction greater lesser argn string ymd todate +syn keyword sqlFunction totimestamp date today now utc_now +syn keyword sqlFunction number identity years months weeks days +syn keyword sqlFunction hours minutes seconds second minute hour +syn keyword sqlFunction day month year dow date_format substr +syn keyword sqlFunction substring byte_substr length byte_length +syn keyword sqlFunction datalength ifnull evaluate list +syn keyword sqlFunction soundex similar difference like_start +syn keyword sqlFunction like_end regexp_compile +syn keyword sqlFunction regexp_compile_patindex remainder abs +syn keyword sqlFunction graphical_plan plan explanation ulplan +syn keyword sqlFunction graphical_ulplan long_ulplan +syn keyword sqlFunction short_ulplan rewrite watcomsql +syn keyword sqlFunction transactsql dialect estimate +syn keyword sqlFunction estimate_source index_estimate +syn keyword sqlFunction experience_estimate traceback wsql_state +syn keyword sqlFunction lang_message dateadd datediff datepart +syn keyword sqlFunction datename dayname monthname quarter +syn keyword sqlFunction tsequal hextoint inttohex rand textptr +syn keyword sqlFunction rowid grouping stddev variance rank +syn keyword sqlFunction dense_rank density percent_rank user_name +syn keyword sqlFunction user_id str stuff char_length nullif +syn keyword sqlFunction sortkey compare ts_index_statistics +syn keyword sqlFunction ts_table_statistics isdate isnumeric +syn keyword sqlFunction get_identity lookup newid uuidtostr +syn keyword sqlFunction strtouuid varexists + +" 9.0.1 functions +syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot +syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp +syn keyword sqlFunction floor getdate insertstr +syn keyword sqlFunction log log10 lower mod pi power +syn keyword sqlFunction property radians replicate round sign sin +syn keyword sqlFunction sqldialect tan truncate truncnum +syn keyword sqlFunction base64_encode base64_decode +syn keyword sqlFunction hash compress decompress encrypt decrypt + +" string functions +syn keyword sqlFunction ascii char left ltrim repeat +syn keyword sqlFunction space right rtrim trim lcase ucase +syn keyword sqlFunction locate charindex patindex replace +syn keyword sqlFunction errormsg csconvert + +" property functions +syn keyword sqlFunction db_id db_name property_name +syn keyword sqlFunction property_description property_number +syn keyword sqlFunction next_connection next_database property +syn keyword sqlFunction connection_property db_property db_extended_property +syn keyword sqlFunction event_parmeter event_condition event_condition_name + +" sa_ procedures +syn keyword sqlFunction sa_add_index_consultant_analysis +syn keyword sqlFunction sa_add_workload_query +syn keyword sqlFunction sa_app_deregister +syn keyword sqlFunction sa_app_get_infoStr +syn keyword sqlFunction sa_app_get_status +syn keyword sqlFunction sa_app_register +syn keyword sqlFunction sa_app_registration_unlock +syn keyword sqlFunction sa_app_set_infoStr +syn keyword sqlFunction sa_audit_string +syn keyword sqlFunction sa_check_commit +syn keyword sqlFunction sa_checkpoint_execute +syn keyword sqlFunction sa_conn_activity +syn keyword sqlFunction sa_conn_compression_info +syn keyword sqlFunction sa_conn_deregister +syn keyword sqlFunction sa_conn_info +syn keyword sqlFunction sa_conn_properties +syn keyword sqlFunction sa_conn_properties_by_conn +syn keyword sqlFunction sa_conn_properties_by_name +syn keyword sqlFunction sa_conn_register +syn keyword sqlFunction sa_conn_set_status +syn keyword sqlFunction sa_create_analysis_from_query +syn keyword sqlFunction sa_db_info +syn keyword sqlFunction sa_db_properties +syn keyword sqlFunction sa_disable_auditing_type +syn keyword sqlFunction sa_disable_index +syn keyword sqlFunction sa_disk_free_space +syn keyword sqlFunction sa_enable_auditing_type +syn keyword sqlFunction sa_enable_index +syn keyword sqlFunction sa_end_forward_to +syn keyword sqlFunction sa_eng_properties +syn keyword sqlFunction sa_event_schedules +syn keyword sqlFunction sa_exec_script +syn keyword sqlFunction sa_flush_cache +syn keyword sqlFunction sa_flush_statistics +syn keyword sqlFunction sa_forward_to +syn keyword sqlFunction sa_get_dtt +syn keyword sqlFunction sa_get_histogram +syn keyword sqlFunction sa_get_request_profile +syn keyword sqlFunction sa_get_request_profile_sub +syn keyword sqlFunction sa_get_request_times +syn keyword sqlFunction sa_get_server_messages +syn keyword sqlFunction sa_get_simulated_scale_factors +syn keyword sqlFunction sa_get_workload_capture_status +syn keyword sqlFunction sa_index_density +syn keyword sqlFunction sa_index_levels +syn keyword sqlFunction sa_index_statistics +syn keyword sqlFunction sa_internal_alter_index_ability +syn keyword sqlFunction sa_internal_create_analysis_from_query +syn keyword sqlFunction sa_internal_disk_free_space +syn keyword sqlFunction sa_internal_get_dtt +syn keyword sqlFunction sa_internal_get_histogram +syn keyword sqlFunction sa_internal_get_request_times +syn keyword sqlFunction sa_internal_get_simulated_scale_factors +syn keyword sqlFunction sa_internal_get_workload_capture_status +syn keyword sqlFunction sa_internal_index_density +syn keyword sqlFunction sa_internal_index_levels +syn keyword sqlFunction sa_internal_index_statistics +syn keyword sqlFunction sa_internal_java_loaded_classes +syn keyword sqlFunction sa_internal_locks +syn keyword sqlFunction sa_internal_pause_workload_capture +syn keyword sqlFunction sa_internal_procedure_profile +syn keyword sqlFunction sa_internal_procedure_profile_summary +syn keyword sqlFunction sa_internal_read_backup_history +syn keyword sqlFunction sa_internal_recommend_indexes +syn keyword sqlFunction sa_internal_reset_identity +syn keyword sqlFunction sa_internal_resume_workload_capture +syn keyword sqlFunction sa_internal_start_workload_capture +syn keyword sqlFunction sa_internal_stop_index_consultant +syn keyword sqlFunction sa_internal_stop_workload_capture +syn keyword sqlFunction sa_internal_table_fragmentation +syn keyword sqlFunction sa_internal_table_page_usage +syn keyword sqlFunction sa_internal_table_stats +syn keyword sqlFunction sa_internal_virtual_sysindex +syn keyword sqlFunction sa_internal_virtual_sysixcol +syn keyword sqlFunction sa_java_loaded_classes +syn keyword sqlFunction sa_jdk_version +syn keyword sqlFunction sa_locks +syn keyword sqlFunction sa_make_object +syn keyword sqlFunction sa_pause_workload_capture +syn keyword sqlFunction sa_proc_debug_attach_to_connection +syn keyword sqlFunction sa_proc_debug_connect +syn keyword sqlFunction sa_proc_debug_detach_from_connection +syn keyword sqlFunction sa_proc_debug_disconnect +syn keyword sqlFunction sa_proc_debug_get_connection_name +syn keyword sqlFunction sa_proc_debug_release_connection +syn keyword sqlFunction sa_proc_debug_request +syn keyword sqlFunction sa_proc_debug_version +syn keyword sqlFunction sa_proc_debug_wait_for_connection +syn keyword sqlFunction sa_procedure_profile +syn keyword sqlFunction sa_procedure_profile_summary +syn keyword sqlFunction sa_read_backup_history +syn keyword sqlFunction sa_recommend_indexes +syn keyword sqlFunction sa_recompile_views +syn keyword sqlFunction sa_remove_index_consultant_analysis +syn keyword sqlFunction sa_remove_index_consultant_workload +syn keyword sqlFunction sa_reset_identity +syn keyword sqlFunction sa_resume_workload_capture +syn keyword sqlFunction sa_server_option +syn keyword sqlFunction sa_set_simulated_scale_factor +syn keyword sqlFunction sa_setremoteuser +syn keyword sqlFunction sa_setsubscription +syn keyword sqlFunction sa_start_recording_commits +syn keyword sqlFunction sa_start_workload_capture +syn keyword sqlFunction sa_statement_text +syn keyword sqlFunction sa_stop_index_consultant +syn keyword sqlFunction sa_stop_recording_commits +syn keyword sqlFunction sa_stop_workload_capture +syn keyword sqlFunction sa_sync +syn keyword sqlFunction sa_sync_sub +syn keyword sqlFunction sa_table_fragmentation +syn keyword sqlFunction sa_table_page_usage +syn keyword sqlFunction sa_table_stats +syn keyword sqlFunction sa_update_index_consultant_workload +syn keyword sqlFunction sa_validate +syn keyword sqlFunction sa_virtual_sysindex +syn keyword sqlFunction sa_virtual_sysixcol + +" sp_ procedures +syn keyword sqlFunction sp_addalias +syn keyword sqlFunction sp_addauditrecord +syn keyword sqlFunction sp_adddumpdevice +syn keyword sqlFunction sp_addgroup +syn keyword sqlFunction sp_addlanguage +syn keyword sqlFunction sp_addlogin +syn keyword sqlFunction sp_addmessage +syn keyword sqlFunction sp_addremotelogin +syn keyword sqlFunction sp_addsegment +syn keyword sqlFunction sp_addserver +syn keyword sqlFunction sp_addthreshold +syn keyword sqlFunction sp_addtype +syn keyword sqlFunction sp_adduser +syn keyword sqlFunction sp_auditdatabase +syn keyword sqlFunction sp_auditlogin +syn keyword sqlFunction sp_auditobject +syn keyword sqlFunction sp_auditoption +syn keyword sqlFunction sp_auditsproc +syn keyword sqlFunction sp_bindefault +syn keyword sqlFunction sp_bindmsg +syn keyword sqlFunction sp_bindrule +syn keyword sqlFunction sp_changedbowner +syn keyword sqlFunction sp_changegroup +syn keyword sqlFunction sp_checknames +syn keyword sqlFunction sp_checkperms +syn keyword sqlFunction sp_checkreswords +syn keyword sqlFunction sp_clearstats +syn keyword sqlFunction sp_column_privileges +syn keyword sqlFunction sp_columns +syn keyword sqlFunction sp_commonkey +syn keyword sqlFunction sp_configure +syn keyword sqlFunction sp_cursorinfo +syn keyword sqlFunction sp_databases +syn keyword sqlFunction sp_datatype_info +syn keyword sqlFunction sp_dboption +syn keyword sqlFunction sp_dbremap +syn keyword sqlFunction sp_depends +syn keyword sqlFunction sp_diskdefault +syn keyword sqlFunction sp_displaylogin +syn keyword sqlFunction sp_dropalias +syn keyword sqlFunction sp_dropdevice +syn keyword sqlFunction sp_dropgroup +syn keyword sqlFunction sp_dropkey +syn keyword sqlFunction sp_droplanguage +syn keyword sqlFunction sp_droplogin +syn keyword sqlFunction sp_dropmessage +syn keyword sqlFunction sp_dropremotelogin +syn keyword sqlFunction sp_dropsegment +syn keyword sqlFunction sp_dropserver +syn keyword sqlFunction sp_dropthreshold +syn keyword sqlFunction sp_droptype +syn keyword sqlFunction sp_dropuser +syn keyword sqlFunction sp_estspace +syn keyword sqlFunction sp_extendsegment +syn keyword sqlFunction sp_fkeys +syn keyword sqlFunction sp_foreignkey +syn keyword sqlFunction sp_getmessage +syn keyword sqlFunction sp_help +syn keyword sqlFunction sp_helpconstraint +syn keyword sqlFunction sp_helpdb +syn keyword sqlFunction sp_helpdevice +syn keyword sqlFunction sp_helpgroup +syn keyword sqlFunction sp_helpindex +syn keyword sqlFunction sp_helpjoins +syn keyword sqlFunction sp_helpkey +syn keyword sqlFunction sp_helplanguage +syn keyword sqlFunction sp_helplog +syn keyword sqlFunction sp_helpprotect +syn keyword sqlFunction sp_helpremotelogin +syn keyword sqlFunction sp_helpsegment +syn keyword sqlFunction sp_helpserver +syn keyword sqlFunction sp_helpsort +syn keyword sqlFunction sp_helptext +syn keyword sqlFunction sp_helpthreshold +syn keyword sqlFunction sp_helpuser +syn keyword sqlFunction sp_indsuspect +syn keyword sqlFunction sp_lock +syn keyword sqlFunction sp_locklogin +syn keyword sqlFunction sp_logdevice +syn keyword sqlFunction sp_login_environment +syn keyword sqlFunction sp_modifylogin +syn keyword sqlFunction sp_modifythreshold +syn keyword sqlFunction sp_monitor +syn keyword sqlFunction sp_password +syn keyword sqlFunction sp_pkeys +syn keyword sqlFunction sp_placeobject +syn keyword sqlFunction sp_primarykey +syn keyword sqlFunction sp_procxmode +syn keyword sqlFunction sp_recompile +syn keyword sqlFunction sp_remap +syn keyword sqlFunction sp_remote_columns +syn keyword sqlFunction sp_remote_exported_keys +syn keyword sqlFunction sp_remote_imported_keys +syn keyword sqlFunction sp_remote_pcols +syn keyword sqlFunction sp_remote_primary_keys +syn keyword sqlFunction sp_remote_procedures +syn keyword sqlFunction sp_remote_tables +syn keyword sqlFunction sp_remoteoption +syn keyword sqlFunction sp_rename +syn keyword sqlFunction sp_renamedb +syn keyword sqlFunction sp_reportstats +syn keyword sqlFunction sp_reset_tsql_environment +syn keyword sqlFunction sp_role +syn keyword sqlFunction sp_server_info +syn keyword sqlFunction sp_servercaps +syn keyword sqlFunction sp_serverinfo +syn keyword sqlFunction sp_serveroption +syn keyword sqlFunction sp_setlangalias +syn keyword sqlFunction sp_setreplicate +syn keyword sqlFunction sp_setrepproc +syn keyword sqlFunction sp_setreptable +syn keyword sqlFunction sp_spaceused +syn keyword sqlFunction sp_special_columns +syn keyword sqlFunction sp_sproc_columns +syn keyword sqlFunction sp_statistics +syn keyword sqlFunction sp_stored_procedures +syn keyword sqlFunction sp_syntax +syn keyword sqlFunction sp_table_privileges +syn keyword sqlFunction sp_tables +syn keyword sqlFunction sp_tsql_environment +syn keyword sqlFunction sp_tsql_feature_not_supported +syn keyword sqlFunction sp_unbindefault +syn keyword sqlFunction sp_unbindmsg +syn keyword sqlFunction sp_unbindrule +syn keyword sqlFunction sp_volchanged +syn keyword sqlFunction sp_who +syn keyword sqlFunction xp_scanf +syn keyword sqlFunction xp_sprintf + +" server functions +syn keyword sqlFunction col_length +syn keyword sqlFunction col_name +syn keyword sqlFunction index_col +syn keyword sqlFunction object_id +syn keyword sqlFunction object_name +syn keyword sqlFunction proc_role +syn keyword sqlFunction show_role +syn keyword sqlFunction xp_cmdshell +syn keyword sqlFunction xp_msver +syn keyword sqlFunction xp_read_file +syn keyword sqlFunction xp_real_cmdshell +syn keyword sqlFunction xp_real_read_file +syn keyword sqlFunction xp_real_sendmail +syn keyword sqlFunction xp_real_startmail +syn keyword sqlFunction xp_real_startsmtp +syn keyword sqlFunction xp_real_stopmail +syn keyword sqlFunction xp_real_stopsmtp +syn keyword sqlFunction xp_real_write_file +syn keyword sqlFunction xp_scanf +syn keyword sqlFunction xp_sendmail +syn keyword sqlFunction xp_sprintf +syn keyword sqlFunction xp_startmail +syn keyword sqlFunction xp_startsmtp +syn keyword sqlFunction xp_stopmail +syn keyword sqlFunction xp_stopsmtp +syn keyword sqlFunction xp_write_file + +" http functions +syn keyword sqlFunction http_header http_variable +syn keyword sqlFunction next_http_header next_http_variable +syn keyword sqlFunction sa_set_http_header sa_set_http_option +syn keyword sqlFunction sa_http_variable_info sa_http_header_info + +" http functions 9.0.1 +syn keyword sqlFunction http_encode http_decode +syn keyword sqlFunction html_encode html_decode + +" keywords +syn keyword sqlKeyword absolute accent action activ add address after +syn keyword sqlKeyword algorithm allow_dup_row +syn keyword sqlKeyword alter and any as append asc ascii ase at atomic +syn keyword sqlKeyword attach attended audit authorization +syn keyword sqlKeyword autoincrement autostop batch bcp before +syn keyword sqlKeyword between blank blanks block +syn keyword sqlKeyword both bottom unbounded break bufferpool +syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration +syn keyword sqlKeyword cancel capability cascade cast +syn keyword sqlKeyword catalog changes char char_convert check checksum +syn keyword sqlKeyword class classes client cmp +syn keyword sqlKeyword cluster clustered collation column columns +syn keyword sqlKeyword command comment committed comparisons +syn keyword sqlKeyword compatible component compressed compute computes +syn keyword sqlKeyword concat confirm conflict connection +syn keyword sqlKeyword console consolidate consolidated +syn keyword sqlKeyword constraint constraints continue +syn keyword sqlKeyword convert copy count crc cross cube +syn keyword sqlKeyword current cursor data data database +syn keyword sqlKeyword current_timestamp current_user +syn keyword sqlKeyword datatype dba dbfile +syn keyword sqlKeyword dbspace dbspacename debug decoupled +syn keyword sqlKeyword decrypted default defaults deferred definition +syn keyword sqlKeyword delay deleting delimited dependencies desc +syn keyword sqlKeyword description detach deterministic directory +syn keyword sqlKeyword disable disabled distinct do domain download +syn keyword sqlKeyword dsetpass dttm dynamic each editproc ejb +syn keyword sqlKeyword else elseif enable encapsulated encrypted end +syn keyword sqlKeyword encoding endif engine erase error escape escapes event +syn keyword sqlKeyword every except exception exclude exclusive exec +syn keyword sqlKeyword existing exists expanded express +syn keyword sqlKeyword external externlogin factor failover false +syn keyword sqlKeyword fastfirstrow fieldproc file filler +syn keyword sqlKeyword fillfactor finish first first_keyword +syn keyword sqlKeyword following force foreign format +syn keyword sqlKeyword freepage french fresh full function go global +syn keyword sqlKeyword group handler hash having header hexadecimal +syn keyword sqlKeyword hidden high history hold holdlock +syn keyword sqlKeyword hours id identified identity ignore +syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate +syn keyword sqlKeyword in inactive inactivity incremental index info +syn keyword sqlKeyword inline inner inout insensitive inserting +syn keyword sqlKeyword instead integrated +syn keyword sqlKeyword internal into introduced iq is isolation jar java +syn keyword sqlKeyword jconnect jdk join kb key keep kerberos language last +syn keyword sqlKeyword last_keyword lateral left level like +syn keyword sqlKeyword limit local location log +syn keyword sqlKeyword logging login logscan long low lru main +syn keyword sqlKeyword match materialized max maximum membership +syn keyword sqlKeyword minutes mirror mode modify monitor mru +syn keyword sqlKeyword name named national native natural new next no +syn keyword sqlKeyword noholdlock nolock nonclustered none not +syn keyword sqlKeyword notify null nulls of off old on +syn keyword sqlKeyword only optimization optimizer option +syn keyword sqlKeyword or order others out outer over +syn keyword sqlKeyword package packetsize padding page pages +syn keyword sqlKeyword paglock parallel part partition partner password path +syn keyword sqlKeyword pctfree plan preceding precision prefetch prefix +syn keyword sqlKeyword preserve preview primary +syn keyword sqlKeyword prior priqty private privileges procedure profile +syn keyword sqlKeyword public publication publish publisher +syn keyword sqlKeyword quote quotes range readcommitted readonly +syn keyword sqlKeyword readpast readuncommitted readwrite rebuild +syn keyword sqlKeyword received recompile recover recursive references +syn keyword sqlKeyword referencing refresh relative relocate +syn keyword sqlKeyword rename repeatable repeatableread +syn keyword sqlKeyword replicate rereceive resend reserve reset +syn keyword sqlKeyword resizing resolve resource respect +syn keyword sqlKeyword restrict result retain +syn keyword sqlKeyword returns right +syn keyword sqlKeyword rollup root row rowlock rows save +syn keyword sqlKeyword schedule schema scripted scroll seconds secqty +syn keyword sqlKeyword send sensitive sent serializable +syn keyword sqlKeyword server server session sets +syn keyword sqlKeyword share simple since site size skip +syn keyword sqlKeyword snapshot soapheader some sorted_data +syn keyword sqlKeyword sqlcode sqlid sqlstate stacker stale statement +syn keyword sqlKeyword statistics status stogroup store +syn keyword sqlKeyword strip subpages subscribe subscription +syn keyword sqlKeyword subtransaction synchronization +syn keyword sqlKeyword syntax_error table tablock +syn keyword sqlKeyword tablockx tb temp template temporary then +syn keyword sqlKeyword ties timezone to top tracing +syn keyword sqlKeyword transaction transactional tries true +syn keyword sqlKeyword tsequal type tune uncommitted unconditionally +syn keyword sqlKeyword unenforced unique union unknown unload +syn keyword sqlKeyword updating updlock upgrade upload use user +syn keyword sqlKeyword using utc utilities validproc +syn keyword sqlKeyword value values varchar variable +syn keyword sqlKeyword varying vcat verify view virtual wait +syn keyword sqlKeyword warning web when where window with with_auto +syn keyword sqlKeyword with_auto with_cube with_rollup without +syn keyword sqlKeyword with_lparen within word work workload writefile +syn keyword sqlKeyword writers writeserver xlock zeros +" XML function support +syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg +syn keyword sqlFunction xmlattributes +syn keyword sqlKeyword raw auto elements explicit +" HTTP support +syn keyword sqlKeyword authorization secure url service +" HTTP 9.0.2 new procedure keywords +syn keyword sqlKeyword namespace certificate clientport proxy +" OLAP support 9.0.0 +syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept +syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy +syn keyword sqlKeyword regr_sxx regr_syy regr_sxy + +" Alternate keywords +syn keyword sqlKeyword character dec options proc reference +syn keyword sqlKeyword subtrans tran syn keyword + + +syn keyword sqlOperator in any some all between exists +syn keyword sqlOperator like escape not is and or +syn keyword sqlOperator intersect minus +syn keyword sqlOperator prior distinct + +syn keyword sqlStatement allocate alter backup begin call case +syn keyword sqlStatement checkpoint clear close commit configure connect +syn keyword sqlStatement create deallocate declare delete describe +syn keyword sqlStatement disconnect drop execute exit explain fetch +syn keyword sqlStatement for forward from get goto grant help if include +syn keyword sqlStatement input insert install leave load lock loop +syn keyword sqlStatement message open output parameter parameters passthrough +syn keyword sqlStatement prepare print put raiserror read readtext release +syn keyword sqlStatement remote remove reorganize resignal restore resume +syn keyword sqlStatement return revoke rollback savepoint select +syn keyword sqlStatement set setuser signal start stop synchronize +syn keyword sqlStatement system trigger truncate unload update +syn keyword sqlStatement validate waitfor whenever while writetext + + +syn keyword sqlType char long varchar text +syn keyword sqlType bigint decimal double float int integer numeric +syn keyword sqlType smallint tinyint real +syn keyword sqlType money smallmoney +syn keyword sqlType bit +syn keyword sqlType date datetime smalldate time timestamp +syn keyword sqlType binary image varbinary uniqueidentifier +syn keyword sqlType xml unsigned +" New types 10.0.0 +syn keyword sqlType varbit nchar nvarchar + +syn keyword sqlOption Allow_nulls_by_default +syn keyword sqlOption Ansi_blanks +syn keyword sqlOption Ansi_close_cursors_on_rollback +syn keyword sqlOption Ansi_integer_overflow +syn keyword sqlOption Ansi_permissions +syn keyword sqlOption Ansi_update_constraints +syn keyword sqlOption Ansinull +syn keyword sqlOption Assume_distinct_servers +syn keyword sqlOption Auditing +syn keyword sqlOption Auditing_options +syn keyword sqlOption Auto_commit +syn keyword sqlOption Auto_refetch +syn keyword sqlOption Automatic_timestamp +syn keyword sqlOption Background_priority +syn keyword sqlOption Bell +syn keyword sqlOption Blob_threshold +syn keyword sqlOption Blocking +syn keyword sqlOption Blocking_timeout +syn keyword sqlOption Chained +syn keyword sqlOption Char_OEM_Translation +syn keyword sqlOption Checkpoint_time +syn keyword sqlOption Cis_option +syn keyword sqlOption Cis_rowset_size +syn keyword sqlOption Close_on_endtrans +syn keyword sqlOption Command_delimiter +syn keyword sqlOption Commit_on_exit +syn keyword sqlOption Compression +syn keyword sqlOption Connection_authentication +syn keyword sqlOption Continue_after_raiserror +syn keyword sqlOption Conversion_error +syn keyword sqlOption Cooperative_commit_timeout +syn keyword sqlOption Cooperative_commits +syn keyword sqlOption Database_authentication +syn keyword sqlOption Date_format +syn keyword sqlOption Date_order +syn keyword sqlOption Debug_messages +syn keyword sqlOption Dedicated_task +syn keyword sqlOption Default_timestamp_increment +syn keyword sqlOption Delayed_commit_timeout +syn keyword sqlOption Delayed_commits +syn keyword sqlOption Delete_old_logs +syn keyword sqlOption Describe_Java_Format +syn keyword sqlOption Divide_by_zero_error +syn keyword sqlOption Echo +syn keyword sqlOption Escape_character +syn keyword sqlOption Exclude_operators +syn keyword sqlOption Extended_join_syntax +syn keyword sqlOption External_remote_options +syn keyword sqlOption Fire_triggers +syn keyword sqlOption First_day_of_week +syn keyword sqlOption Float_as_double +syn keyword sqlOption For_xml_null_treatment +syn keyword sqlOption Force_view_creation +syn keyword sqlOption Global_database_id +syn keyword sqlOption Headings +syn keyword sqlOption Input_format +syn keyword sqlOption Integrated_server_name +syn keyword sqlOption Isolation_level +syn keyword sqlOption ISQL_command_timing +syn keyword sqlOption ISQL_escape_character +syn keyword sqlOption ISQL_field_separator +syn keyword sqlOption ISQL_log +syn keyword sqlOption ISQL_plan +syn keyword sqlOption ISQL_plan_cursor_sensitivity +syn keyword sqlOption ISQL_plan_cursor_writability +syn keyword sqlOption ISQL_quote +syn keyword sqlOption Java_heap_size +syn keyword sqlOption Java_input_output +syn keyword sqlOption Java_namespace_size +syn keyword sqlOption Java_page_buffer_size +syn keyword sqlOption Lock_rejected_rows +syn keyword sqlOption Log_deadlocks +syn keyword sqlOption Log_detailed_plans +syn keyword sqlOption Log_max_requests +syn keyword sqlOption Login_mode +syn keyword sqlOption Login_procedure +syn keyword sqlOption Max_cursor_count +syn keyword sqlOption Max_hash_size +syn keyword sqlOption Max_plans_cached +syn keyword sqlOption Max_recursive_iterations +syn keyword sqlOption Max_statement_count +syn keyword sqlOption Max_work_table_hash_size +syn keyword sqlOption Min_password_length +syn keyword sqlOption Nearest_century +syn keyword sqlOption Non_keywords +syn keyword sqlOption NULLS +syn keyword sqlOption ODBC_describe_binary_as_varbinary +syn keyword sqlOption ODBC_distinguish_char_and_varchar +syn keyword sqlOption On_Charset_conversion_failure +syn keyword sqlOption On_error +syn keyword sqlOption On_tsql_error +syn keyword sqlOption Optimistic_wait_for_commit +syn keyword sqlOption Optimization_goal +syn keyword sqlOption Optimization_level +syn keyword sqlOption Optimization_logging +syn keyword sqlOption Optimization_workload +syn keyword sqlOption Output_format +syn keyword sqlOption Output_length +syn keyword sqlOption Output_nulls +syn keyword sqlOption Percent_as_comment +syn keyword sqlOption Pinned_cursor_percent_of_cache +syn keyword sqlOption Precision +syn keyword sqlOption Prefetch +syn keyword sqlOption Preserve_source_format +syn keyword sqlOption Prevent_article_pkey_update +syn keyword sqlOption Qualify_owners +syn keyword sqlOption Query_plan_on_open +syn keyword sqlOption Quiet +syn keyword sqlOption Quote_all_identifiers +syn keyword sqlOption Quoted_identifier +syn keyword sqlOption Read_past_deleted +syn keyword sqlOption Recovery_time +syn keyword sqlOption Remote_idle_timeout +syn keyword sqlOption Replicate_all +syn keyword sqlOption Replication_error +syn keyword sqlOption Replication_error_piece +syn keyword sqlOption Return_date_time_as_string +syn keyword sqlOption Return_java_as_string +syn keyword sqlOption RI_Trigger_time +syn keyword sqlOption Rollback_on_deadlock +syn keyword sqlOption Row_counts +syn keyword sqlOption Save_remote_passwords +syn keyword sqlOption Scale +syn keyword sqlOption Screen_format +syn keyword sqlOption Sort_Collation +syn keyword sqlOption SQL_flagger_error_level +syn keyword sqlOption SQL_flagger_warning_level +syn keyword sqlOption SQLConnect +syn keyword sqlOption SQLStart +syn keyword sqlOption SR_Date_Format +syn keyword sqlOption SR_Time_Format +syn keyword sqlOption SR_TimeStamp_Format +syn keyword sqlOption Statistics +syn keyword sqlOption String_rtruncation +syn keyword sqlOption Subscribe_by_remote +syn keyword sqlOption Subsume_row_locks +syn keyword sqlOption Suppress_TDS_debugging +syn keyword sqlOption TDS_Empty_string_is_null +syn keyword sqlOption Temp_space_limit_check +syn keyword sqlOption Thread_count +syn keyword sqlOption Thread_stack +syn keyword sqlOption Thread_swaps +syn keyword sqlOption Time_format +syn keyword sqlOption Time_zone_adjustment +syn keyword sqlOption Timestamp_format +syn keyword sqlOption Truncate_date_values +syn keyword sqlOption Truncate_timestamp_values +syn keyword sqlOption Truncate_with_auto_commit +syn keyword sqlOption Truncation_length +syn keyword sqlOption Tsql_hex_constant +syn keyword sqlOption Tsql_variables +syn keyword sqlOption Update_statistics +syn keyword sqlOption User_estimates +syn keyword sqlOption Verify_all_columns +syn keyword sqlOption Verify_threshold +syn keyword sqlOption Wait_for_commit + +" Strings and characters: +syn region sqlString start=+"+ end=+"+ contains=@Spell +syn region sqlString start=+'+ end=+'+ contains=@Spell + +" Numbers: +syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" + +" Comments: +syn region sqlDashComment start=/--/ end=/$/ contains=@Spell +syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell +syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell +syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell +syn sync ccomment sqlComment +syn sync ccomment sqlDashComment +syn sync ccomment sqlSlashComment + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_sql_syn_inits") + if version < 508 + let did_sql_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi link + endif + + HiLink sqlDashComment Comment + HiLink sqlSlashComment Comment + HiLink sqlMultiComment Comment + HiLink sqlNumber Number + HiLink sqlOperator Operator + HiLink sqlSpecial Special + HiLink sqlKeyword Keyword + HiLink sqlStatement Statement + HiLink sqlString String + HiLink sqlType Type + HiLink sqlFunction Function + HiLink sqlOption PreProc + + delcommand HiLink +endif + +let b:current_syntax = "sqlanywhere" + +" vim:sw=4: diff --git a/runtime/syntax/sudoers.vim b/runtime/syntax/sudoers.vim index 2e2d7448..1bcd03f9 100644 --- a/runtime/syntax/sudoers.vim +++ b/runtime/syntax/sudoers.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: sudoers(5) configuration files " Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2007-08-02 if exists("b:current_syntax") finish @@ -156,7 +156,7 @@ syn keyword sudoersListParameter contained env_check env_delete env_keep next syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl -syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameterEquals,sudoersStringParameter,sudoersListParameter +syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl diff --git a/runtime/syntax/tcsh.vim b/runtime/syntax/tcsh.vim index 83649a75..94c4181c 100644 --- a/runtime/syntax/tcsh.vim +++ b/runtime/syntax/tcsh.vim @@ -1,7 +1,6 @@ -" Vim syntax file -" Language: C-shell (tcsh) -" Maintainer: Gautam Iyer -" Last Modified: Thu 16 Nov 2006 01:07:04 PM PST +" tcsh.vim: Vim syntax file for tcsh scripts +" Maintainer: Gautam Iyer +" Modified: Sat 16 Jun 2007 04:52:12 PM PDT " " Description: We break up each statement into a "command" and an "end" part. " All groups are either a "command" or part of the "end" of a statement (ie @@ -13,64 +12,118 @@ " causes history to come up as a keyword, which we want to avoid. " Quit when a syntax file was already loaded -if exists("b:current_syntax") +if exists('b:current_syntax') finish endif +let s:oldcpo = &cpo +set cpo&vim " Line continuation is used + +setlocal iskeyword+=- + syn case match " ----- Clusters ----- syn cluster tcshModifiers contains=tcshModifier,tcshModifierError syn cluster tcshQuoteList contains=tcshDQuote,tcshSQuote,tcshBQuote -syn cluster tcshStatementEnds contains=@tcshQuoteList,tcshComment,tcshUsrVar,TcshArgv,tcshSubst,tcshRedir,tcshMeta,tcshHereDoc,tcshSpecial,tcshArguement -syn cluster tcshStatements contains=tcshBuiltins,tcshCommands,tcshSet,tcshSetEnv,tcshAlias,tcshIf,tcshWhile +syn cluster tcshStatementEnds contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshRedir,tcshMeta,tcshHereDoc,tcshSpecial,tcshArguement +syn cluster tcshStatements contains=tcshBuiltin,tcshCommands,tcshIf,tcshWhile syn cluster tcshVarList contains=tcshUsrVar,tcshArgv,tcshSubst +syn cluster tcshConditions contains=tcshCmdSubst,tcshParenExpr,tcshOperator,tcshNumber,@tcshVarList + +" ----- Errors ----- +" Define first, so can be easily overridden. +syn match tcshError contained '\v\S.+' " ----- Statements ----- " Tcsh commands: Any filename / modifiable variable (must be first!) syn match tcshCommands '\v[a-zA-Z0-9\\./_$:-]+' contains=tcshSpecial,tcshUsrVar,tcshArgv,tcshVarError nextgroup=tcshStatementEnd -" Builtin commands except (un)set(env), (un)alias, if, while, else -syn keyword tcshBuiltins nextgroup=tcshStatementEnd alloc bg bindkey break breaksw builtins bye case cd chdir complete continue default dirs echo echotc end endif endsw eval exec exit fg filetest foreach getspath getxvers glob goto hashstat history hup inlib jobs kill limit log login logout ls ls-F migrate newgrp nice nohup notify onintr popd printenv pushd rehash repeat rootnode sched setpath setspath settc setty setxvers shift source stop suspend switch telltc time umask uncomplete unhash universe unlimit ver wait warp watchlog where which +" Builtin commands except those treated specially. Currently (un)set(env), +" (un)alias, if, while, else, bindkey +syn keyword tcshBuiltin nextgroup=tcshStatementEnd alloc bg break breaksw builtins bye case cd chdir complete continue default dirs echo echotc end endif endsw eval exec exit fg filetest foreach getspath getxvers glob goto hashstat history hup inlib jobs kill limit log login logout ls ls-F migrate newgrp nice nohup notify onintr popd printenv pushd rehash repeat rootnode sched setpath setspath settc setty setxvers shift source stop suspend switch telltc time umask uncomplete unhash universe unlimit ver wait warp watchlog where which -" StatementEnd is anything after a builtin / command till the lexical end of a +" StatementEnd is anything after a built-in / command till the lexical end of a " statement (;, |, ||, |&, && or end of line) -syn region tcshStatementEnd transparent contained matchgroup=tcshBuiltins start='' end='\v\\@|$" contains=tcshOperator,tcshNumber,@tcshStatementEnds +" if statements +syn keyword tcshIf nextgroup=tcshIfEnd skipwhite if +syn region tcshIfEnd contained start='\S' skip='\\$' matchgroup=tcshBuiltin end='\v|$' contains=@tcshConditions,tcshSpecial,@tcshStatementEnds +syn region tcshIfEnd contained matchgroup=tcshBuiltin contains=@tcshConditions,tcshSpecial start='(' end='\v\)%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds +syn region tcshIfEnd contained matchgroup=tcshBuiltin contains=tcshCommands,tcshSpecial start='\v\{\s+' end='\v\s+\}%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds keepend -" else statements (nextgroup if) -syn keyword tcshElse nextgroup=tcshIf skipwhite else +" else statements +syn keyword tcshBuiltin nextgroup=tcshIf skipwhite else " while statements (contains expressions / operators) -syn keyword tcshWhile nextgroup=tcshWhEnd while -syn region tcshWhEnd contained transparent matchgroup=tcshBuiltins start='' skip="\\$" end="\v$" contains=tcshOperator,tcshNumber,@tcshStatementEnds +syn keyword tcshBuiltin nextgroup=@tcshConditions,tcshSpecial skipwhite while + +" Conditions (for if and while) +syn region tcshParenExpr contained contains=@tcshConditions,tcshSpecial matchgroup=tcshBuiltin start='(' end=')' +syn region tcshCmdSubst contained contains=tcshCommands matchgroup=tcshBuiltin start='\v\{\s+' end='\v\s+\}' keepend + +" Bindkey. Internal editor functions +syn keyword tcshBindkeyFuncs contained backward-char backward-delete-char + \ backward-delete-word backward-kill-line backward-word + \ beginning-of-line capitalize-word change-case + \ change-till-end-of-line clear-screen complete-word + \ complete-word-fwd complete-word-back complete-word-raw + \ copy-prev-word copy-region-as-kill dabbrev-expand delete-char + \ delete-char-or-eof delete-char-or-list + \ delete-char-or-list-or-eof delete-word digit digit-argument + \ down-history downcase-word end-of-file end-of-line + \ exchange-point-and-mark expand-glob expand-history expand-line + \ expand-variables forward-char forward-word + \ gosmacs-transpose-chars history-search-backward + \ history-search-forward insert-last-word i-search-fwd + \ i-search-back keyboard-quit kill-line kill-region + \ kill-whole-line list-choices list-choices-raw list-glob + \ list-or-eof load-average magic-space newline normalize-path + \ normalize-command overwrite-mode prefix-meta quoted-insert + \ redisplay run-fg-editor run-help self-insert-command + \ sequence-lead-in set-mark-command spell-word spell-line + \ stuff-char toggle-literal-history transpose-chars + \ transpose-gosling tty-dsusp tty-flush-output tty-sigintr + \ tty-sigquit tty-sigtsusp tty-start-output tty-stop-output + \ undefined-key universal-argument up-history upcase-word + \ vi-beginning-of-next-word vi-add vi-add-at-eol vi-chg-case + \ vi-chg-meta vi-chg-to-eol vi-cmd-mode vi-cmd-mode-complete + \ vi-delprev vi-delmeta vi-endword vi-eword vi-char-back + \ vi-char-fwd vi-charto-back vi-charto-fwd vi-insert + \ vi-insert-at-bol vi-repeat-char-fwd vi-repeat-char-back + \ vi-repeat-search-fwd vi-repeat-search-back vi-replace-char + \ vi-replace-mode vi-search-back vi-search-fwd vi-substitute-char + \ vi-substitute-line vi-word-back vi-word-fwd vi-undo vi-zero + \ which-command yank yank-pop e_copy_to_clipboard + \ e_paste_from_clipboard e_dosify_next e_dosify_prev e_page_up + \ e_page_down +syn keyword tcshBuiltin nextgroup=tcshBindkeyEnd bindkey +syn region tcshBindkeyEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$' contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshMeta,tcshSpecial,tcshArguement,tcshBindkeyFuncs " Expressions start with @. -syn match tcshExprStart "\v\@\s+" nextgroup=tcshExprVar -syn match tcshExprVar contained "\v\h\w*%(\[\d+\])?" contains=tcshShellVar,tcshEnvVar nextgroup=tcshExprOp -syn match tcshExprOp contained "++\|--" -syn match tcshExprOp contained "\v\s*\=" nextgroup=tcshExprEnd -syn match tcshExprEnd contained "\v.*$"hs=e+1 contains=tcshOperator,tcshNumber,@tcshVarList -syn match tcshExprEnd contained "\v.{-};"hs=e contains=tcshOperator,tcshNumber,@tcshVarList +syn match tcshExprStart '\v\@\s+' nextgroup=tcshExprVar +syn match tcshExprVar contained '\v\h\w*%(\[\d+\])?' contains=tcshShellVar,tcshEnvVar nextgroup=tcshExprOp +syn match tcshExprOp contained '++\|--' +syn match tcshExprOp contained '\v\s*\=' nextgroup=tcshExprEnd +syn match tcshExprEnd contained '\v.*$'hs=e+1 contains=@tcshConditions +syn match tcshExprEnd contained '\v.{-};'hs=e contains=@tcshConditions " ----- Comments: ----- syn match tcshComment '#\s.*' contains=tcshTodo,tcshCommentTi,@Spell @@ -85,12 +138,12 @@ syn match tcshTodo contained '\v\c' " want VIM to assume that no backslash quote constructs exist. " Backquotes are treated as commands, and are not contained in anything -if(exists("tcsh_backslash_quote") && tcsh_backslash_quote == 0) - syn region tcshSQuote keepend contained start="\v\\@, >>, >>&, >>!, >>&!] -syn match tcshRedir contained "\v\<|\>\>?\&?!?" +syn match tcshRedir contained '\v\<|\>\>?\&?!?' -" Metachars -syn match tcshMeta contained "\v[]{}*?[]" +" Meta-chars +syn match tcshMeta contained '\v[]{}*?[]' -" Here Documents (<<) -syn region tcshHereDoc contained matchgroup=tcshRedir start="\v\<\<\s*\z(\h\w*)" end="^\z1$" contains=@tcshVarList,tcshSpecial -syn region tcshHereDoc contained matchgroup=tcshRedir start="\v\<\<\s*'\z(\h\w*)'" start='\v\<\<\s*"\z(\h\w*)"$' start="\v\<\<\s*\\\z(\h\w*)$" end="^\z1$" +" Here documents (<<) +syn region tcshHereDoc contained matchgroup=tcshShellVar start='\v\<\<\s*\z(\h\w*)' end='^\z1$' contains=@tcshVarList,tcshSpecial +syn region tcshHereDoc contained matchgroup=tcshShellVar start="\v\<\<\s*'\z(\h\w*)'" start='\v\<\<\s*"\z(\h\w*)"$' start='\v\<\<\s*\\\z(\h\w*)$' end='^\z1$' " Operators -syn match tcshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||" -syn match tcshOperator contained "[(){}]" +syn match tcshOperator contained '&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||' +"syn match tcshOperator contained '[(){}]' " Numbers -syn match tcshNumber contained "\v<-?\d+>" +syn match tcshNumber contained '\v<-?\d+>' -" Arguements -syn match tcshArguement contained "\v\s@<=-(\w|-)*" +" Arguments +syn match tcshArguement contained '\v\s@<=-(\w|-)*' -" Special charectors -syn match tcshSpecial contained "\v\\@ -" Last Change: Feb 27, 2007 -" Version: 37 +" Last Change: Oct 10, 2007 +" Version: 39 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " " Notes: {{{1 @@ -261,27 +261,27 @@ syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained " Sections, subsections, etc: {{{1 if g:tex_fold_enabled && has("folding") - syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell - syn region texPartZone matchgroup=texSection start='\\part\>' end='\n\ze\s*\\part\>' fold contains=@texFoldGroup,@texPartGroup,@Spell - syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\n\ze\s*\\chapter\>' fold contains=@texFoldGroup,@texChapterGroup,@Spell - syn region texSectionZone matchgroup=texSection start='\\section\>' end='\n\ze\s*\\section\>' fold contains=@texFoldGroup,@texSectionGroup,@Spell - syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\n\ze\s*\\subsection\>' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell - syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\n\ze\s*\\subsubsection\>' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell - syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\n\ze\s*\\paragraph\>' fold contains=@texFoldGroup,@texParaGroup,@Spell - syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\n\ze\s*\\subparagraph\>' fold contains=@texFoldGroup,@Spell - syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell - syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell + syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell + syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\n\s*\\part\>' fold contains=@texFoldGroup,@texPartGroup,@Spell + syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\n\s*\\\%(chapter\|part\)\>' fold contains=@texFoldGroup,@texChapterGroup,@Spell + syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\n\s*\\\%(section\>\|chapter\>\|part\>\|end{document}\)' fold contains=@texFoldGroup,@texSectionGroup,@Spell + syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\n\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end{document}\)' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell + syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\n\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end{document}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell + syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\n\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end{document}\)' fold contains=@texFoldGroup,@texParaGroup,@Spell + syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\n\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end{document}\)' fold contains=@texFoldGroup,@Spell + syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell + syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell else - syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell - syn region texPartZone matchgroup=texSection start='\\part\>' end='\n\ze\s*\\part\>' contains=@texFoldGroup,@texPartGroup,@Spell - syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\n\ze\s*\\chapter\>' contains=@texFoldGroup,@texChapterGroup,@Spell - syn region texSectionZone matchgroup=texSection start='\\section\>' end='\n\ze\s*\\section\>' contains=@texFoldGroup,@texSectionGroup,@Spell - syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\n\ze\s*\\subsection\>' contains=@texFoldGroup,@texSubSectionGroup,@Spell - syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\n\ze\s*\\subsubsection\>' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell - syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\n\ze\s*\\paragraph\>' contains=@texFoldGroup,@texParaGroup,@Spell - syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\n\ze\s*\\subparagraph\>' contains=@texFoldGroup,@Spell - syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell - syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell + syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell + syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\n\s*\\part\>' contains=@texFoldGroup,@texPartGroup,@Spell + syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\n\s*\\\%(chapter\|part\)\>' contains=@texFoldGroup,@texChapterGroup,@Spell + syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\n\s*\\\%(section\>\|chapter\>\|part\>\|end{document}\)' contains=@texFoldGroup,@texSectionGroup,@Spell + syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\n\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end{document}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell + syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\n\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end{document}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell + syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\n\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end{document}\)' contains=@texFoldGroup,@texParaGroup,@Spell + syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\n\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end{document}\)' contains=@texFoldGroup,@Spell + syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell + syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell endif " Bad Math (mismatched): {{{1 @@ -300,8 +300,13 @@ if !exists("tex_no_math") fun! TexNewMathZone(sfx,mathzone,starform) let grpname = "texMathZone".a:sfx let syncname = "texSyncMathZone".a:sfx + if g:tex_fold_enabled + let foldcmd= " fold" + else + let foldcmd= "" + endif exe "syn cluster texMathZones add=".grpname - exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup' + exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'HiLink '.grpname.' texMath' @@ -309,7 +314,7 @@ if !exists("tex_no_math") let grpname = "texMathZone".a:sfx.'S' let syncname = "texSyncMathZone".a:sfx.'S' exe "syn cluster texMathZones add=".grpname - exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup' + exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'HiLink '.grpname.' texMath' diff --git a/runtime/syntax/verilogams.vim b/runtime/syntax/verilogams.vim index 7141eca2..d16e4bff 100644 --- a/runtime/syntax/verilogams.vim +++ b/runtime/syntax/verilogams.vim @@ -1,7 +1,13 @@ " Vim syntax file -" Language: Verilog-AMS -" Maintainer: S. Myles Prather -" Last Update: Sun Aug 14 03:58:00 CST 2003 +" Language: Verilog-AMS +" Maintainer: S. Myles Prather +" +" Version 1.1 S. Myles Prather +" Moved some keywords to the type category. +" Added the metrix suffixes to the number matcher. +" Version 1.2 Prasanna Tamhankar +" Minor reserved keyword updates. +" Last Update: Thursday September 15 15:36:03 CST 2005 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded @@ -21,17 +27,17 @@ endif " Annex B.1 'All keywords' syn keyword verilogamsStatement above abs absdelay acos acosh ac_stim syn keyword verilogamsStatement always analog analysis and asin -syn keyword verilogamsStatement asinh assign atan atan2 atanh branch -syn keyword verilogamsStatement buf bufif1 ceil cmos +syn keyword verilogamsStatement asinh assign atan atan2 atanh +syn keyword verilogamsStatement buf bufif0 bufif1 ceil cmos connectmodule syn keyword verilogamsStatement connectrules cos cosh cross ddt ddx deassign syn keyword verilogamsStatement defparam disable discipline syn keyword verilogamsStatement driver_update edge enddiscipline -syn keyword verilogamsStatement endconnectrules endmodule endfunction +syn keyword verilogamsStatement endconnectrules endmodule endfunction endgenerate syn keyword verilogamsStatement endnature endparamset endprimitive endspecify syn keyword verilogamsStatement endtable endtask event exp final_step syn keyword verilogamsStatement flicker_noise floor flow force fork -syn keyword verilogamsStatement function generate genvar highz0 -syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone initial +syn keyword verilogamsStatement function generate highz0 +syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone inf initial syn keyword verilogamsStatement initial_step inout input join syn keyword verilogamsStatement laplace_nd laplace_np laplace_zd laplace_zp syn keyword verilogamsStatement large last_crossing limexp ln localparam log @@ -40,17 +46,18 @@ syn keyword verilogamsStatement negedge net_resolution nmos noise_table nor not syn keyword verilogamsStatement notif0 notif1 or output paramset pmos syn keyword verilogamsType parameter real integer electrical input output syn keyword verilogamsType inout reg tri tri0 tri1 triand trior trireg -syn keyword verilogamsType string from exclude aliasparam ground +syn keyword verilogamsType string from exclude aliasparam ground genvar +syn keyword verilogamsType branch time realtime syn keyword verilogamsStatement posedge potential pow primitive pull0 pull1 syn keyword verilogamsStatement pullup pulldown rcmos release syn keyword verilogamsStatement rnmos rpmos rtran rtranif0 rtranif1 syn keyword verilogamsStatement scalared sin sinh slew small specify specparam syn keyword verilogamsStatement sqrt strong0 strong1 supply0 supply1 -syn keyword verilogamsStatement table tan tanh task time timer tran tranif0 +syn keyword verilogamsStatement table tan tanh task timer tran tranif0 syn keyword verilogamsStatement tranif1 transition syn keyword verilogamsStatement vectored wait wand weak0 weak1 syn keyword verilogamsStatement white_noise wire wor wreal xnor xor zi_nd -syn keyword verilogamsStatement zi_np zi_zd +syn keyword verilogamsStatement zi_np zi_zd zi_zp syn keyword verilogamsRepeat forever repeat while for syn keyword verilogamsLabel begin end syn keyword verilogamsConditional if else case casex casez default endcase @@ -95,7 +102,7 @@ syn match verilogamsNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" -syn match verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" +syn match verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)[TGMKkmunpfa]\=\>" syn region verilogamsString start=+"+ skip=+\\"+ end=+"+ contains=verilogamsEscape syn match verilogamsEscape +\\[nt"\\]+ contained diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 56be4324..81f8798b 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Vim 7.1 script " Maintainer: Dr. Charles E. Campbell, Jr. -" Last Change: May 11, 2007 -" Version: 7.1-67 +" Last Change: Jan 24, 2008 +" Version: 7.1-76 " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 @@ -16,20 +16,35 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 -syn keyword vimCommand contained ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] caddb[uffer] cad[dexpr] caddf[ile] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cex[pr] cf[ile] cfir[st] cgetb[uffer] cgete[xpr] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis diffu[pdate] dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] earlier echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] hid[e] his[tory] ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] laddb[uffer] lad[dexpr] laddf[ile] lan[guage] la[st] later lb[uffer] lc[d] lch[dir] lcl[ose] le[ft] lefta[bove] lex[pr] lf[ile] lfir[st] lgetb[uffer] lgete[xpr] lg[etfile] lgr[ep] lgrepa[dd] lh[elpgrep] l[ist] ll lla[st] lli[st] lmak[e] lm[ap] lmapc[lear] lnew[er] lne[xt] lN[ext] lnf[ile] lNf[ile] ln[oremap] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lpf[ile] lp[revious] lr[ewind] ls lt[ag] lu[nmap] lv[imgrep] lvimgrepa[dd] lw[indow] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mksp[ell] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] nu[mber] nun[map] omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] profd[el] prof[ile] promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] san[dbox] sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sm[ap] smapc[lear] sme smenu sn[ext] sN[ext] sni[ff] sno[magic] snor[emap] snoreme snoremenu sor[t] so[urce] spelld[ump] spe[llgood] spelli[nfo] spellr[epall] spellu[ndo] spellw[rong] sp[lit] spr[evious] sre[wind] sta[g] startg[replace] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sunm[ap] sus[pend] sv[iew] syncbind t tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabl[ast] tabm[ove] tabnew tabn[ext] tabN[ext] tabo[nly] tabp[revious] tabr[ewind] tabs ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] xm[ap] xmapc[lear] xme xmenu XMLent XMLns xn[oremap] xnoreme xnoremenu xu[nmap] y[ank] +syn keyword vimCommand contained ab[breviate] argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo ca[bbrev] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpg[rep] iabc[lear] inorea[bbrev] ju[mps] laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu +syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpt[ags] if is[earch] k lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme +syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] cnorea[bbrev] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for ha[rdcopy] hid[e] ij[ump] isp[lit] keepalt laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu +syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] h[elp] his[tory] il[ist] iuna[bbrev] keepj[umps] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] norea[bbrev] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank] +syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] helpf[ind] ia[bbrev] imapc[lear] j[oin] kee[pmarks] syn match vimCommand contained "\