diff options
author | Bram Moolenaar <Bram@vim.org> | 2004-06-24 15:53:16 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2004-06-24 15:53:16 +0000 |
commit | f4b8e57ffd048f9ca46dd7618939ba7a1b2294ec (patch) | |
tree | 08865b59e356d861c0d1321e4adaef8385e53635 | |
parent | 69a7cb473ceae109b61fae9aa04ee0c29afba5d9 (diff) | |
download | vim-f4b8e57ffd048f9ca46dd7618939ba7a1b2294ec.zip |
updated for version 7.0002
39 files changed, 3944 insertions, 2125 deletions
@@ -204,7 +204,19 @@ SRC_DOS_UNIX = \ # source files for DOS (also in the extra archive) SRC_DOS = \ - src/GvimExt \ + src/GvimExt/*.mak \ + src/GvimExt/GvimExt.reg \ + src/GvimExt/Makefile \ + src/GvimExt/README.txt \ + src/GvimExt/gvimext.cpp \ + src/GvimExt/gvimext.def \ + src/GvimExt/gvimext.h \ + src/GvimExt/gvimext.inf \ + src/GvimExt/gvimext.rc \ + src/GvimExt/gvimext_ming.def \ + src/GvimExt/gvimext_ming.rc \ + src/GvimExt/resource.h \ + src/GvimExt/uninst.bat \ README_srcdos.txt \ src/INSTALLpc.txt \ src/Make_bc3.mak \ diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 462d66bd9..9d39f61f6 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.0aa. Last change: 2004 Jun 20 +*eval.txt* For Vim version 7.0aa. Last change: 2004 Jun 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1236,10 +1236,19 @@ eventhandler() *eventhandler()* executable({expr}) *executable()* This function checks if an executable with the name {expr} exists. {expr} must be the name of the program without any - arguments. executable() uses the normal $PATH. - On MS-DOS and MS-Windows the ".exe", ".bat", etc. must be - included. It only checks if the file exists and is not a - directory, not if it's really executable. + arguments. + executable() uses the value of $PATH and/or the normal + searchpath for programs. *PATHEXT* + On MS-DOS and MS-Windows the ".exe", ".bat", etc. can + optionally be included. Then the extensions in $PATHEXT are + tried. Thus if "foo.exe" does not exist, "foo.exe.bat" can be + found. If $PATHEXT is not set then ".exe;.com;.bat;.cmd" is + used. A dot by itself can be used in $PATHEXT to try using + the name without an extension. When 'shell' looks like a + Unix shell, then the name is also tried without adding an + extension. + On MS-DOS and MS-Windows it only checks if the file exists and + is not a directory, not if it's really executable. The result is a Number: 1 exists 0 does not exist diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index a855d4661..21c48d3cd 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.0aa. Last change: 2004 May 05 +*filetype.txt* For Vim version 7.0aa. Last change: 2004 Jun 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -148,7 +148,7 @@ This means that the contents of compressed files are not inspected. *new-filetype* If a file type that you want to use is not detected yet, there are three ways -to add it. In any way, it's better not modify the $VIMRUNTIME/filetype.vim +to add it. In any way, it's better not to modify the $VIMRUNTIME/filetype.vim file. It will be overwritten when installing a new version of Vim. A. If you want to overrule all default file type checks. diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index 8028b661f..7e13134d7 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.0aa. Last change: 2004 Jun 16 +*insert.txt* For Vim version 7.0aa. Last change: 2004 Jun 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -375,6 +375,11 @@ This redefines the backspace key to start a new undo sequence. You can now undo the effect of the backspace key, without changing what you typed before that, with CTRL-O u. +Using CTRL-O splits undo: the text typed before and after it is undone +separately. If you want to avoid this (e.g., in a mapping) you might be able +to use CTRL-R = |i_CTRL-R|. E.g., to call a function: > + :imap <F2> <C-R>=MyFunc()<CR> + When the 'whichwrap' option is set appropriately, the <Left> and <Right> keys on the first/last character in the line make the cursor wrap to the previous/next line. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 0d48e98d9..297012d47 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0aa. Last change: 2004 Jun 15 +*options.txt* For Vim version 7.0aa. Last change: 2004 Jun 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -50,7 +50,7 @@ achieve special effects. These options come in three forms: :se[t] {option}&vim Reset option to its Vim default value. {not in Vi} :se[t] all& Set all options, except terminal options, to their - default value. The values of 'term', 'lines' and + default value. The values of 'term', 'lines' and 'columns' are not changed. {not in Vi} *:set-args* *E487* *E521* @@ -140,7 +140,7 @@ example, if Alt-b produces <Esc>b, use this: > The advantage over a mapping is that it works in all situations. The listing from ":set" looks different from Vi. Long string options are put -at the end of the list. The number of options is quite large. The output of +at the end of the list. The number of options is quite large. The output of "set all" probably does not fit on the screen, causing Vim to give the |more-prompt|. @@ -154,14 +154,14 @@ A few examples: > :set tags=tags\\,file results in "tags\,file" :set tags=tags\\\ file results in "tags\ file" -The "|" character separates a ":set" command from a following command. To -include the "|" in the option value, use "\|" instead. This example sets the +The "|" character separates a ":set" command from a following command. To +include the "|" in the option value, use "\|" instead. This example sets the 'titlestring' option to "hi|there": > :set titlestring=hi\|there This sets the 'titlestring' option to "hi" and 'iconstring' to "there": > :set titlestring=hi|set iconstring=there -For MS-DOS and WIN32 backslashes in file names are mostly not removed. More +For MS-DOS and WIN32 backslashes in file names are mostly not removed. More precise: For options that expect a file name (those where environment variables are expanded) a backslash before a normal file name character is not removed. But a backslash before a special character (space, backslash, comma, @@ -172,7 +172,7 @@ There is one special situation, when the value starts with "\\": > :set dir=\\path\\file results in "\\path\file" (wrong!) For the first one the start is kept, but for the second one the backslashes are halved. This makes sure it works both when you expect backslashes to be -halved and when you expect the backslashes to be kept. The third gives a +halved and when you expect the backslashes to be kept. The third gives a result which is probably not what you want. Avoid it. *add-option-flags* *remove-option-flags* @@ -183,12 +183,12 @@ option, without changing the existing ones, you can do it like this: > Remove a flag from an option like this: > :set guioptions-=a This removes the 'a' flag from 'guioptions'. -Note that you should add or remove one flag at a time. If 'guioptions' has +Note that you should add or remove one flag at a time. If 'guioptions' has the value "ab", using "set guioptions-=ba" won't work, because the string "ba" doesn't appear. *:set_env* *expand-env* *expand-environment-var* -Environment variables in most string options will be expanded. If the +Environment variables in most string options will be expanded. If the environment variable exists the '$' and the following environment variable name is replaced with its value. If it does not exist the '$' and the name are not modified. Any non-id character (not a letter, digit or '_') may @@ -247,7 +247,7 @@ value, ":setlocal list" only changes the local value and ":e two" gets the global value. Note that if you do this next: > :e one You will not get back the 'list' value as it was the last time you edited -"one". The options local to a window are not remembered for each buffer. +"one". The options local to a window are not remembered for each buffer. *:setl* *:setlocal* :setl[ocal] ... Like ":set" but set only the value local to the @@ -300,7 +300,7 @@ then the other window will switch to the same value. There is no need to set the 'makeprg' option in the other C source window too. However, if you start editing a Perl file in a new window, you want to use another 'makeprog' for it, without changing the value used for the C source -files. You use this command: > +files. You use this command: > :setlocal makeprg=perlmake You can switch back to using the global value by making the local value empty: > :setlocal makeprg= @@ -384,7 +384,7 @@ the system, mostly it is something like 256 or 1024 characters. : fixdel :endif < Where "^V" is CTRL-V and "<BS>" is the backspace key - (don't type four characters!). Replace "termname" + (don't type four characters!). Replace "termname" with your terminal name. If your <Delete> key sends a strange key sequence (not @@ -500,7 +500,7 @@ will give an error message for the trailing "*/". This line is OK: > If an error is detected the rest of the line is skipped. If you want to include a ':' in a set command precede it with a '\'. The -backslash in front of the ':' will be removed. Example: > +backslash in front of the ':' will be removed. Example: > /* vi:set dir=c\:\tmp: */ This sets the 'dir' option to "c:\tmp". Only a single backslash before the ':' is removed. Thus to include "\:" you have to specify "\\:". @@ -529,7 +529,7 @@ used when 'compatible' is not set, and the "Vi default", which is used when 'compatible' is set. Most options are the same in all windows and buffers. There are a few that -are specific to how the text is presented in a window. These can be set to a +are specific to how the text is presented in a window. These can be set to a different value in each window. For example the 'list' option can be set in one window and reset in another for the same text, giving both types of view at the same time. There are a few options that are specific to a certain @@ -546,14 +546,14 @@ are used as a default value for the window-specific options. For the buffer-specific options this depends on the 's' and 'S' flags in the 'cpoptions' option. If 's' is included (which is the default) the values for buffer options are copied from the currently active buffer when a buffer is -first entered. If 'S' is present the options are copied each time the buffer -is entered, this is almost like having global options. If 's' and 'S' are not +first entered. If 'S' is present the options are copied each time the buffer +is entered, this is almost like having global options. If 's' and 'S' are not present, the options are copied from the currently active buffer when the buffer is created. -Not all options are supported in all versions. To test if option "foo" can be -used with ":set" use "exists('&foo')". This doesn't mean the value is -actually remembered and works. Some options are hidden, which means that you +Not all options are supported in all versions. To test if option "foo" can be +used with ":set" use "exists('&foo')". This doesn't mean the value is +actually remembered and works. Some options are hidden, which means that you can set them but the value is not remembered. To test if option "foo" is really supported use "exists('+foo')". @@ -597,7 +597,7 @@ A jump table for the options with a short description can be found at |Q_op|. When off, the keyboard map toggles between Hebrew and English. This is useful to start the Vim in native mode i.e. English (left-to-right mode) and have default second language Farsi or Hebrew (right-to-left - mode). See |farsi.txt|. + mode). See |farsi.txt|. *'ambiwidth'* *'ambw'* 'ambiwidth' 'ambw' string (default: "single") @@ -703,9 +703,12 @@ A jump table for the options with a short description can be found at |Q_op|. Copy indent from current line when starting a new line (typing <CR> in Insert mode or when using the "o" or "O" command). If you do not type anything on the new line except <BS> or CTRL-D and then type - <Esc> or <CR>, the indent is deleted again. When autoindent is on, - formatting (with the "gq" command or when you reach 'textwidth' in - Insert mode) uses the indentation of the first line. + <Esc> or <CR>, the indent is deleted again. Moving the cursor to + another line has the same effect, unless the 'I' flag is included in + 'cpoptions'. + When autoindent is on, formatting (with the "gq" command or when you + reach 'textwidth' in Insert mode) uses the indentation of the first + line. When 'smartindent' or 'cindent' is on the indent is changed in a different way. The 'autoindent' option is reset when the 'paste' option is set. @@ -757,7 +760,7 @@ A jump table for the options with a short description can be found at |Q_op|. color, see |:hi-normal|. When 'background' is set Vim will adjust the default color groups for - the new value. But the colors used for syntax highlighting will not + the new value. But the colors used for syntax highlighting will not change. When a color scheme is loaded (the "colors_name" variable is set) setting 'background' will cause the color scheme to be reloaded. If @@ -824,7 +827,7 @@ A jump table for the options with a short description can be found at |Q_op|. backup file, but you do want a backup while the file is being written, reset this option and set the 'writebackup' option (this is the default). If you do not want a backup file at all reset both - options (use this if your file system is almost full). See the + options (use this if your file system is almost full). See the |backup-table| for more explanations. When the 'backupskip' pattern matches, a backup is not made anyway. When 'patchmode' is set, the backup may be renamed to become the @@ -877,13 +880,13 @@ A jump table for the options with a short description can be found at |Q_op|. One situation where "no" and "auto" will cause problems: A program that opens a file, invokes Vim to edit that file, and then tests if the open file was changed (through the file descriptor) will check the - backup file instead of the newly created file. "crontab -e" is an + backup file instead of the newly created file. "crontab -e" is an example. When a copy is made, the original file is truncated and then filled with the new text. This means that protection bits, owner and symbolic links of the original file are unmodified. The backup file - however, is a new file, owned by the user who edited the file. The + however, is a new file, owned by the user who edited the file. The group of the backup is set to the group of the original file. If this fails, the protection bits for the group are made the same as for others. @@ -1134,7 +1137,7 @@ A jump table for the options with a short description can be found at |Q_op|. these words, separated by a comma: internal Use internal case mapping functions, the current locale does not change the case mapping. This only - matters when 'encoding' is a Unicode encoding. When + matters when 'encoding' is a Unicode encoding. When "internal" is omitted, the towupper() and towlower() system library functions are used when available. keepascii For the ASCII characters (0x00 to 0x7f) use the US @@ -1389,7 +1392,7 @@ A jump table for the options with a short description can be found at |Q_op|. This is a special kind of option, because when it's set or reset, other options are also changed as a side effect. CAREFUL: Setting or resetting this option can have a lot of unexpected effects: Mappings - are interpreted in another way, undo behaves differently, etc. If you + are interpreted in another way, undo behaves differently, etc. If you set this option in your vimrc file, you should probably put it at the very start. By default this option is on and the Vi defaults are used for the @@ -1401,7 +1404,7 @@ A jump table for the options with a short description can be found at |Q_op|. to the Vim defaults. Effectively, this means that when a ".vimrc" file exists, Vim will use the Vim defaults, otherwise it will use the Vi defaults. (Note: This doesn't happen for the system-wide vimrc - file). Also see |compatible-default|. + file). Also see |compatible-default|. You can also set this option with the "-C" argument, and reset it with "-N". See |-C| and |-N|. Switching this option off makes the Vim defaults be used for options @@ -1409,7 +1412,7 @@ A jump table for the options with a short description can be found at |Q_op|. marked with a '+' below. Other options are not modified. At the moment this option is set, several other options will be set or reset to make Vim as Vi-compatible as possible. See the table - below. This can be used if you want to revert to Vi compatible + below. This can be used if you want to revert to Vi compatible editing. See also 'cpoptions'. @@ -1529,7 +1532,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} {only for MS-DOS} When on direct console I/O is used to obtain a keyboard character. - This should work in most cases. Also see |'bioskey'|. Together, + This should work in most cases. Also see |'bioskey'|. Together, three methods of console input are available: 'conskey' 'bioskey' action ~ on on or off direct console input @@ -1556,7 +1559,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} A sequence of single character flags. When a character is present - this indicates vi-compatible behavior. This is used for things where + this indicates vi-compatible behavior. This is used for things where not being vi-compatible is mostly or sometimes preferred. 'cpoptions' stands for "compatible-options". Commas can be added for readability. @@ -1635,6 +1638,9 @@ A jump table for the options with a short description can be found at |Q_op|. *cpo-i* i When included, interrupting the reading of a file will leave it modified. + *cpo-I* + I When moving the cursor up or down just after inserting + indent for 'autoindent', do not delete the indent. *cpo-j* j When joining lines, only add two spaces after a '.', not after '!' or '?'. Also see 'joinspaces'. @@ -1698,7 +1704,7 @@ A jump table for the options with a short description can be found at |Q_op|. *cpo-s* s Set buffer options when entering the buffer for the first time. This is like it is in Vim version 3.0. - And it is the default. If not present the options are + And it is the default. If not present the options are set when the buffer is created. *cpo-S* S Set buffer options always when entering a buffer @@ -1719,7 +1725,7 @@ A jump table for the options with a short description can be found at |Q_op|. the history for search pattern, but doesn't change the last used search pattern. *cpo-u* - u Undo is Vi compatible. See |undo-two-ways|. + u Undo is Vi compatible. See |undo-two-ways|. *cpo-v* v Backspaced characters remain visible on the screen in Insert mode. Without this flag the characters are @@ -1763,14 +1769,14 @@ A jump table for the options with a short description can be found at |Q_op|. specially. When matching a paren outside of quotes, everything inside quotes is ignored. When matching a paren inside quotes, it will find the matching one (if - there is one). This works very well for C programs. + there is one). This works very well for C programs. *cpo-star* * Use ":*" in the same way as ":@". When not included, ":*" is an alias for ":'<,'>", select the Visual area. *cpo-<* < Disable the recognition of special key codes in |<>| form in mappings, abbreviations, and the "to" part of - menu commands. For example, the command + menu commands. For example, the command ":map X <Tab>" results in X being mapped to: '<' included: "<Tab>" (5 characters) '<' excluded: "^I" (^I is a real <Tab>) @@ -1845,7 +1851,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'define' 'def' string (default "^\s*#\s*define") global or local to buffer |global-local| {not in Vi} - Pattern to be used to find a macro definition. It is a search + Pattern to be used to find a macro definition. It is a search pattern, just like for the "/" command. This option is used for the commands like "[i" and "[d" |include-search|. The 'isident' option is used to recognize the defined name after the match: @@ -1882,7 +1888,7 @@ A jump table for the options with a short description can be found at |Q_op|. contain a list of words. This can be one word per line, or several words per line, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. - To include a comma in a file name precede it with a backslash. Spaces + To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. Where to find a list of words? @@ -1901,7 +1907,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+diff| feature} Join the current window in the group of windows that shows differences - between files. See |vimdiff|. + between files. See |vimdiff|. *'dex'* *'diffexpr'* 'diffexpr' 'dex' string (default "") @@ -1920,7 +1926,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 |+diff| feature} - Option settings for diff mode. It can consist of the following items. + Option settings for diff mode. It can consist of the following items. All are optional. Items must be separated by a comma. filler Show filler lines, to keep the text @@ -2014,7 +2020,7 @@ A jump table for the options with a short description can be found at |Q_op|. Change the way text is displayed. This is comma separated list of flags: lastline When included, as much as possible of the last line - in a window will be displayed. When not included, a + in a window will be displayed. When not included, a last line that doesn't fit is replaced with "@" lines. uhex Show unprintable characters hexadecimal as <xx> instead of using ^C and ~C. @@ -2058,12 +2064,12 @@ A jump table for the options with a short description can be found at |Q_op|. "utf-8". Although care has been taken to allow different values of 'encoding', "utf-8" is the natural choice for the environment and avoids unnecessary conversion overhead. "utf-8" has not been made - the default to prevent different behaviour of the GUI and terminal + the default to prevent different behavior of the GUI and terminal versions, and to avoid changing the encoding of newly created files without your knowledge (in case 'fileencodings' is empty). The character encoding of files can be different from 'encoding'. - This is specified with 'fileencoding'. The conversion is done with + This is specified with 'fileencoding'. The conversion is done with iconv() or as specified with 'charconvert'. Normally 'encoding' will be equal to your current locale. This will @@ -2101,7 +2107,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} When writing a file and this option is off and the 'binary' option - is on, no <EOL> will be written for the last line in the file. This + is on, no <EOL> will be written for the last line in the file. This option is automatically set when starting to edit a new file, unless the file does not have an <EOL> for the last line in the file, in which case it is reset. Normally you don't have to set or reset this @@ -2116,7 +2122,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When on, all the windows are automatically made the same size after - splitting or closing a window. When off, splitting a window will + splitting or closing a window. When off, splitting a window will reduce the size of the current window and leave the other windows the same. When closing a window the extra lines are given to the window next to it (depending on 'splitbelow' and 'splitright'). @@ -2133,7 +2139,7 @@ A jump table for the options with a short description can be found at |Q_op|. External program to use for "=" command. When this option is empty the internal formatting functions are used ('lisp', 'cindent' or 'indentexpr'). - Environment variables are expanded |:set_env|. See |option-backslash| + Environment variables are expanded |:set_env|. See |option-backslash| about including spaces and backslashes. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -2144,7 +2150,7 @@ A jump table for the options with a short description can be found at |Q_op|. Ring the bell (beep or screen flash) for error messages. This only makes a difference for error messages, the bell will be used always for a lot of errors without a message (e.g., hitting <Esc> in Normal - mode). See 'visualbell' on how to make the bell behave like a beep, + mode). See 'visualbell' on how to make the bell behave like a beep, screen flash or do nothing. *'errorfile'* *'ef'* @@ -2204,7 +2210,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} In Insert mode: Use the appropriate number of spaces to insert a - <Tab>. Spaces are used in indents with the '>' and '<' commands and + <Tab>. Spaces are used in indents with the '>' and '<' commands and when 'autoindent' is on. To insert a real tab when 'expandtab' is on, use CTRL-V<Tab>. See also |:retab| and |ins-expandtab|. NOTE: This option is reset when 'compatible' is set. @@ -2256,7 +2262,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'fe'* NOTE: Before version 6.0 this option specified the encoding for the - whole of Vim, this was a mistake. Now use 'encoding' instead. The + whole of Vim, this was a mistake. Now use 'encoding' instead. The old short name was 'fe', which is no longer used. *'fileencodings'* *'fencs'* @@ -2270,7 +2276,7 @@ A jump table for the options with a short description can be found at |Q_op|. an existing file. When a file is read, Vim tries to use the first mentioned character encoding. If an error is detected, the next one in the list is tried. When an encoding is found that works, - 'fileencoding' is set to it. If all fail, 'fileencoding' is set to + 'fileencoding' is set to it. If all fail, 'fileencoding' is set to an empty string, which means the value of 'encoding' is used. WARNING: Conversion can cause loss of information! When 'encoding' is "utf-8" (or one of the other Unicode variants) @@ -2344,7 +2350,7 @@ A jump table for the options with a short description can be found at |Q_op|. - When empty, the format defined with 'fileformat' will be used always. It is not set automatically. - When set to one name, that format will be used whenever a new buffer - is opened. 'fileformat' is set accordingly for that buffer. The + is opened. 'fileformat' is set accordingly for that buffer. The 'fileformats' name will be used when a file is read into an existing buffer, no matter what 'fileformat' for that buffer is set to. - When more than one name is present, separated by commas, automatic @@ -2353,7 +2359,7 @@ A jump table for the options with a short description can be found at |Q_op|. 1. If all lines end in <CR><NL>, and 'fileformats' includes "dos", 'fileformat' is set to "dos". 2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat' - is set to "unix". Note that when a <NL> is found without a + is set to "unix". Note that when a <NL> is found without a preceding <CR>, "unix" is preferred over "dos". 3. If 'fileformats' includes "mac", 'fileformat' is set to "mac". This means that "mac" is only chosen when "unix" is not present, @@ -2424,7 +2430,7 @@ A jump table for the options with a short description can be found at |Q_op|. fold:c '-' filling 'foldtext' diff:c '-' deleted lines of the 'diff' option - Any one that is omitted will fall back to the default. For "stl" and + Any one that is omitted will fall back to the default. For "stl" and "stlnc" the space will be used when there is highlighting, '^' or '-' otherwise. @@ -2449,7 +2455,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} When on, the keyboard is mapped for the Farsi character set. Normally you would set 'allowrevins' and use CTRL-_ in insert mode to - toggle this option |i_CTRL-_|. See |farsi.txt|. + toggle this option |i_CTRL-_|. See |farsi.txt|. *'foldclose'* *'fcl'* 'foldclose' 'fcl' string (default "") @@ -2481,7 +2487,7 @@ A jump table for the options with a short description can be found at |Q_op|. When off, all folds are open. This option can be used to quickly switch between showing all text unfolded and viewing the text with folds (including manually opened or closed folds). It can be toggled - with the |zi| command. The 'foldcolumn' will remain blank when + with the |zi| command. The 'foldcolumn' will remain blank when 'foldenable' is off. This option is set by commands that create a new fold or close a fold. See |folding|. @@ -2504,7 +2510,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Used only when 'foldmethod' is "indent". Lines starting with characters in 'foldignore' will get their fold level from surrounding - lines. White space is skipped before checking for this character. + lines. White space is skipped before checking for this character. The default "#" works well for C programs. See |fold-indent|. *'foldlevel'* *'fdl'* @@ -2529,7 +2535,7 @@ A jump table for the options with a short description can be found at |Q_op|. Useful to always start editing with all folds closed (value zero), some folds closed (one) or no folds closed (99). This is done before reading any modeline, thus a setting in a modeline - overrules this option. Starting to edit a file for |diff-mode| also + overrules this option. Starting to edit a file for |diff-mode| also ignores this option and closes all folds. It is also done before BufReadPre autocommands, to allow an autocmd to overrule the 'foldlevel' value for specific files. @@ -2605,7 +2611,7 @@ A jump table for the options with a short description can be found at |Q_op|. (not for a search pattern in a ":" command) tag jumping to a tag: ":ta", CTRL-T, etc. undo undo or redo: "u" and CTRL-R - When the command is part of a mapping this option is not used. Add + When the command is part of a mapping this option is not used. Add the |zv| command to the mapping to get the same effect. When a movement command is used for an operator (e.g., "dl" or "y%") this option is not used. This means the operator will include the @@ -2715,12 +2721,12 @@ A jump table for the options with a short description can be found at |Q_op|. {only available when compiled with GUI enabled, and for MS-DOS and Win32 console} This option tells Vim what the cursor should look like in different - modes. It fully works in the GUI. In an MSDOS or Win32 console, only + modes. It fully works in the GUI. In an MSDOS or Win32 console, only the height of the cursor can be changed. This can be done by specifying a block cursor, or a percentage for a vertical or horizontal cursor. - The option is a comma separated list of parts. Each part consist of a + The option is a comma separated list of parts. Each part consist of a mode-list and an argument-list: mode-list:argument-list,mode-list:argument-list,.. The mode-list is a dash separated list of these modes: @@ -2901,7 +2907,7 @@ A jump table for the options with a short description can be found at |Q_op|. If set and valid, 'guifontwide' is always used for double width characters, even if 'encoding' is not set to "utf-8". Vim does not attempt to find an appropriate value for 'guifontwide' - automatically. If 'guifontwide' is empty Pango/Xft will choose the + automatically. If 'guifontwide' is empty Pango/Xft will choose the font for characters not available in 'guifont'. Thus you do not need to set 'guifontwide' at all unless you want to override the choice made by Pango/Xft. @@ -2913,7 +2919,7 @@ A jump table for the options with a short description can be found at |Q_op|. The number of pixels subtracted from the screen height when fitting the GUI window on the screen. Set this before the GUI is started, e.g., in your |gvimrc| file. When zero, the whole screen height will - be used by the window. When positive, the specified number of pixel + be used by the window. When positive, the specified number of pixel lines will be left for window decorations and other items on the screen. Set it to a negative value to allow windows taller than the screen. @@ -2947,7 +2953,7 @@ A jump table for the options with a short description can be found at |Q_op|. by a yank or delete operation for the "* register. The same applies to the modeless selection. - 'A' Autoselect for the modeless selection. Like 'a', but only + 'A' Autoselect for the modeless selection. Like 'a', but only applies to the modeless selection. 'guioptions' autoselect Visual autoselect modeless ~ @@ -2972,7 +2978,7 @@ A jump table for the options with a short description can be found at |Q_op|. limitations of X11. For a color icon, see |X11-icon|. 'm' Menu bar is present. - 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note + 'M' The system menu "$VIMRUNTIME/menu.vim" is not sourced. Note that this flag must be added in the .vimrc file, before switching on syntax or filetype recognition (when the .gvimrc file is sourced the system menu has already been loaded; the @@ -3009,7 +3015,7 @@ A jump table for the options with a short description can be found at |Q_op|. the right moment, try adding this flag. This must be done before starting the GUI. Set it in your gvimrc. Adding or removing it after the GUI has started has no effect. - 'F' Add a footer. Only for Motif. See |gui-footer|. + 'F' Add a footer. Only for Motif. See |gui-footer|. *'guipty'* *'noguipty'* 'guipty' boolean (default on) @@ -3029,7 +3035,7 @@ A jump table for the options with a short description can be found at |Q_op|. in 'runtimepath' will be used. Environment variables are expanded |:set_env|. For example: "$VIMRUNTIME/doc/help.txt". If $VIMRUNTIME is not set, $VIM is also - tried. Also see |$VIMRUNTIME| and |option-backslash| about including + tried. Also see |$VIMRUNTIME| and |option-backslash| about including spaces and backslashes. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -3075,7 +3081,7 @@ A jump table for the options with a short description can be found at |Q_op|. The commands that move through the buffer list sometimes make a buffer hidden although the 'hidden' option is off: When the buffer is modified, 'autowrite' is off or writing is not possible, and the '!' - flag was used. See also |windows.txt|. + flag was used. See also |windows.txt|. This option is set for one command with ":hide {command}" |:hide|. WARNING: It's easy to forget that you have changes in hidden buffers. Think twice when using ":q!" or ":qa!". @@ -3095,7 +3101,7 @@ A jump table for the options with a short description can be found at |Q_op|. This option can be used to set highlighting mode for various occasions. It is a comma separated list of character pairs. The first character in a pair gives the occasion, the second the mode to - use for that occasion. The occasions are: + use for that occasion. The occasions are: |hl-SpecialKey| 8 Meta and special keys listed with ":map" |hl-NonText| @ '~' and '@' at the end of the window and characters from 'showbreak' @@ -3158,7 +3164,7 @@ A jump table for the options with a short description can be found at |Q_op|. highlighting comes back. 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 + search starts. This will be the first line in the window or the first line below a closed fold. A match in a previous line which is not drawn may not continue in an newly drawn line. NOTE: This option is reset when 'compatible' is set. @@ -3227,7 +3233,7 @@ A jump table for the options with a short description can be found at |Q_op|. When Vim was compiled with HAVE_X11 defined, the original icon will be restored if possible |X11|. When this option contains printf-style '%' items, they will be - expanded according to the rules used for 'statusline'. See + expanded according to the rules used for 'statusline'. See 'titlestring' for example settings. {not available when compiled without the |+statusline| feature} @@ -3342,7 +3348,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 |+find_in_path| feature} - Pattern to be used to find an include command. It is a search + Pattern to be used to find an include command. It is a search pattern, just like for the "/" command (See |pattern|). The default value is for C programs. This option is used for the commands "[i", "]I", "[d", etc.. The 'isfname' option is used to recognize the file @@ -3356,12 +3362,12 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+find_in_path| or |+eval| feature} Expression to be used to transform the string found with the 'include' - option to a file name. Mostly useful to change "." to "/" for Java: > + option to a file name. Mostly useful to change "." to "/" for Java: > :set includeexpr=substitute(v:fname,'\\.','/','g') < The "v:fname" variable will be set to the file name that was detected. Evaluated in the |sandbox|. Also used for the |gf| command if an unmodified file name can't be - found. Allows doing "gf" on the name after an 'include' statement. + found. Allows doing "gf" on the name after an 'include' statement. Also used for |<cfile>|. *'incsearch'* *'is'* *'noincsearch'* *'nois'* @@ -3371,11 +3377,11 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+extra_search| feature} While typing a search command, show immediately where the so far - typed pattern matches. The matched string is highlighted. If the + typed pattern matches. The matched string is highlighted. If the pattern is invalid or not found, nothing is shown. The screen will be updated often, this is only useful on fast terminals. Note that the match will be shown, but the cursor is not actually positioned - there. You still need to finish the search command with <CR> to move + there. You still need to finish the search command with <CR> to move the cursor. The highlighting can be set with the 'i' flag in 'highlight'. See also: 'hlsearch'. NOTE: This option is reset when 'compatible' is set. @@ -3472,7 +3478,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} The characters specified by this option are included in file names and path names. Filenames are used for commands like "gf", "[i" and in - the tags file. It is also used for "\f" in a |pattern|. + the tags file. It is also used for "\f" in a |pattern|. 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. @@ -3486,8 +3492,8 @@ A jump table for the options with a short description can be found at |Q_op|. cmd.exe. The format of this option is a list of parts, separated with commas. - Each part can be a single character number or a range. A range is two - character numbers with '-' in between. A character number can be a + Each part can be a single character number or a range. A range is two + character numbers with '-' in between. A character number can be a decimal number between 0 and 255 or the ASCII character itself (does not work for digits). Example: "_,-,128-140,#-43" (include '_' and '-' and the range @@ -3524,7 +3530,7 @@ A jump table for the options with a short description can be found at |Q_op|. |pattern|. See 'isfname' for a description of the format of this option. Careful: If you change this option, it might break expanding - environment variables. E.g., when '/' is included and Vim tries to + environment variables. E.g., when '/' is included and Vim tries to expand "$HOME/.viminfo". Maybe you should change 'iskeyword' instead. *'iskeyword'* *'isk'* @@ -3535,7 +3541,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} Keywords are used in searching and recognizing with many commands: - "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See + "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See 'isfname' for a description of the format of this option. For C programs you could use "a-z,A-Z,48-57,_,.,-,>". For a help file it is set to all non-blank printable characters except @@ -3650,7 +3656,7 @@ A jump table for the options with a short description can be found at |Q_op|. {only available when compiled with the |+langmap| feature} This option allows switching your keyboard into a special language - mode. When you are typing text in Insert mode the characters are + mode. When you are typing text in Insert mode the characters are inserted directly. When in command mode the 'langmap' option takes care of translating these special characters to the original meaning of the key. This means you don't have to change the keyboard mode to @@ -3730,7 +3736,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When this option is set, the screen will not be redrawn while executing macros, registers and other commands that have not been - typed. Also, updating the window title is postponed. To force an + typed. Also, updating the window title is postponed. To force an update use |:redraw|. *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* @@ -3811,7 +3817,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'listchars' 'lcs' string (default "eol:$") global {not in Vi} - Strings to use in 'list' mode. It is a comma separated list of string + Strings to use in 'list' mode. It is a comma separated list of string settings. eol:c Character to show at the end of each line. When omitted, there is no extra character at the end of the @@ -3821,7 +3827,7 @@ A jump table for the options with a short description can be found at |Q_op|. fill the space that the Tab normally occupies. "tab:>-" will show a Tab that takes four spaces as ">---". When omitted, a Tab is show as ^I. - trail:c Character to show for trailing spaces. When omitted, + trail:c Character to show for trailing spaces. When omitted, trailing spaces are blank. extends:c Character to show in the last column, when 'wrap' is off and the line continues beyond the right of the @@ -3830,7 +3836,7 @@ A jump table for the options with a short description can be found at |Q_op|. is off and there is text preceding the character visible in the first column. - The characters ':' and ',' should not be used. UTF-8 characters can + The characters ':' and ',' should not be used. UTF-8 characters can be used when 'encoding' is "utf-8", otherwise only printable characters are allowed. @@ -3902,7 +3908,7 @@ A jump table for the options with a short description can be found at |Q_op|. local to buffer {not in Vi} Characters that form pairs. The |%| command jumps from one to the - other. Currently only single character pairs are allowed, and they + other. Currently only single character pairs are allowed, and they must be different. The characters must be separated by a colon. The pairs must be separated by a comma. Example for including '<' and '>' (HTML): > @@ -3961,7 +3967,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} Maximum amount of memory (in Kbyte) to use for all buffers together. - Maximum value 2000000. Use this to work without a limit. Also see + Maximum value 2000000. Use this to work without a limit. Also see 'maxmem'. *'menuitems'* *'mis'* @@ -4048,7 +4054,7 @@ A jump table for the options with a short description can be found at |Q_op|. See |mouse-using|. Also see |'clipboard'|. Note: When enabling the mouse in a terminal, copy/paste will use the - "* register if there is access to an X-server. The xterm handling of + "* register if there is access to an X-server. The xterm handling of the mouse buttons can still be used by keeping the shift key pressed. Also see the 'clipboard' option. @@ -4235,11 +4241,11 @@ A jump table for the options with a short description can be found at |Q_op|. 'paste' boolean (default off) global {not in Vi} - Put Vim in Paste mode. This is useful if you want to cut or copy - some text from one window and paste it in Vim. This will avoid + Put Vim in Paste mode. This is useful if you want to cut or copy + some text from one window and paste it in Vim. This will avoid unexpected effects. Setting this option is useful when using Vim in a terminal, where Vim - cannot distinguish between typed text and pasted text. In the GUI, Vim + cannot distinguish between typed text and pasted text. In the GUI, Vim knows about pasting and will mostly do the right thing without 'paste' being set. The same is true for a terminal where Vim handles the mouse clicks itself. @@ -4300,7 +4306,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+diff| feature} Expression which is evaluated to apply a patch to a file and generate - the resulting new version of the file. See |diff-patchexpr|. + the resulting new version of the file. See |diff-patchexpr|. *'patchmode'* *'pm'* *E206* 'patchmode' 'pm' string (default "") @@ -4370,7 +4376,7 @@ A jump table for the options with a short description can be found at |Q_op|. :set path=.,c:/include < Don't forget "." or files won't even be found in the same directory as the file! - The maximum length is limited. How much depends on the system, mostly + The maximum length is limited. How much depends on the system, mostly it is something like 256 or 1024 characters. You can check if all the include files are found, using the value of 'path', see |:checkpath|. @@ -4419,7 +4425,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 |+windows| or |+quickfix| feature} - Identifies the preview window. Only one window can have this option + Identifies the preview window. Only one window can have this option set. It's normally not set directly, but by using one of the commands |:ptag|, |:pedit|, etc. @@ -4733,14 +4739,14 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+cmdline_info| feature} Show the line and column number of the cursor position, separated by a - comma. When there is room, the relative position of the displayed + comma. When there is room, the relative position of the displayed text in the file is shown on the far right: Top first line is visible Bot last line is visible All first and last line are visible 45% relative position in the file If 'rulerformat' is set, it will determine the contents of the ruler. - Each window has its own ruler. If a window has a status line, the + Each window has its own ruler. If a window has a status line, the ruler is shown there. Otherwise it is shown in the last line of the screen. If the statusline is given by 'statusline' (ie. not empty), this option takes precedence over 'ruler' and 'rulerformat' @@ -4833,7 +4839,7 @@ A jump table for the options with a short description can be found at |Q_op|. Note that, unlike 'path', no wildcards like "**" are allowed. Normal wildcards are allowed, but can significantly slow down searching for - runtime files. For speed, use as few items as possible and avoid + runtime files. For speed, use as few items as possible and avoid wildcards. See |:runtime|. Example: > @@ -4856,7 +4862,7 @@ A jump table for the options with a short description can be found at |Q_op|. Number of lines to scroll with CTRL-U and CTRL-D commands. Will be set to half the number of lines in the window when the window size changes. If you give a count to the CTRL-U or CTRL-D command it will - be used as the new value for 'scroll'. Reset to half the window + be used as the new value for 'scroll'. Reset to half the window height with ":set scroll=0". {Vi is a bit different: 'scroll' gives the number of screen lines instead of file lines, makes a difference when lines wrap} @@ -4945,7 +4951,7 @@ A jump table for the options with a short description can be found at |Q_op|. displayed. Switch it off only if you know that you will not run into problems, or when the 'exrc' option is off. On Unix this option is only used if the ".vimrc" or ".exrc" is not owned by you. This can be - dangerous if the systems allows users to do a "chown". You better set + dangerous if the systems allows users to do a "chown". You better set 'secure' at the end of your ~/.vimrc then. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -5035,14 +5041,14 @@ A jump table for the options with a short description can be found at |Q_op|. Name of the shell to use for ! and :! commands. When changing the value also check these options: 'shelltype', 'shellpipe', 'shellslash' 'shellredir', 'shellquote', 'shellxquote' and 'shellcmdflag'. - It is allowed to give an argument to the command, e.g. "csh -f". + It is allowed to give an argument to the command, e.g. "csh -f". See |option-backslash| about including spaces and backslashes. Environment variables are expanded |:set_env|. If the name of the shell contains a space, you might need to enclose it in quotes. Example: > :set shell=\"c:\program\ files\unix\sh.exe\"\ -f < Note the backslash before each quote (to avoid starting a comment) and - each space (to avoid ending the option value). Also note that the + each space (to avoid ending the option value). Also note that the "-f" is not inside the quotes, because it is not part of the command name. And Vim automagically recognizes the backslashes that are path separators. @@ -5080,7 +5086,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+quickfix| feature} String to be used to put the output of the ":make" command in the - error file. See also |:make_makeprg|. See |option-backslash| about + error file. See also |:make_makeprg|. See |option-backslash| about including spaces and backslashes. The name of the temporary file can be represented by "%s" if necessary (the file name is appended automatically if no %s appears in the value @@ -5209,7 +5215,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'shiftwidth'* *'sw'* 'shiftwidth' 'sw' number (default 8) local to buffer - Number of spaces to use for each step of (auto)indent. Used for + Number of spaces to use for each step of (auto)indent. Used for |'cindent'|, |>>|, |<<|, etc. *'shortmess'* *'shm'* @@ -5298,7 +5304,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 |+cmdline_info| feature} - Show (partial) command in status line. Set this option off if your + Show (partial) command in status line. Set this option off if your terminal is slow. In Visual mode the size of the selected area is shown: - When selecting characters within a line, the number of characters. @@ -5313,7 +5319,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When completing a word in insert mode (see |ins-completion|) from the tags file, show both the tag name and a tidied-up form of the search - pattern (if there is one) as possible matches. Thus, if you have + 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). @@ -5340,7 +5346,7 @@ A jump table for the options with a short description can be found at |Q_op|. If in Insert, Replace or Visual mode put a message on the last line. Use the 'M' flag in 'highlight' to set the type of highlighting for this message. - When |XIM| may be used the message will include "XIM". But this + When |XIM| may be used the message will include "XIM". But this doesn't mean XIM is really active, especially when 'imactivatekey' is not set. NOTE: This option is set to the Vi default value when 'compatible' is @@ -5386,7 +5392,7 @@ A jump table for the options with a short description can be found at |Q_op|. Override the 'ignorecase' option if the search pattern contains upper case characters. Only used when the search pattern is typed and 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", - ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After + ":g" and ":s". Not used for "*", "#", "gd", tag search, etc.. After "*" and "#" you can make 'smartcase' used by doing a "/" command, recalling the search pattern from history and hitting <Enter>. NOTE: This option is reset when 'compatible' is set. @@ -5411,11 +5417,11 @@ A jump table for the options with a short description can be found at |Q_op|. given the same indent as the matching '{'. When typing '#' as the first character in a new line, the indent for that line is removed, the '#' is put in the first column. The indent - is restored for the next line. If you don't want this, use this + is restored for the next line. If you don't want this, use this mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. When using the ">>" command, lines starting with '#' are not shifted right. - NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' + NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste' is set smart indenting is disabled. *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'* @@ -5475,7 +5481,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} When "on" the commands listed below move the cursor to the first blank of the line. When off the cursor is kept in the same column - (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, + (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", , and to the commands "d", "<<" and ">>" with a linewise operator, with "%" with a count and to buffer changing commands (CTRL-^, :bnext, :bNext, etc.). Also for an Ex command that @@ -5508,7 +5514,7 @@ A jump table for the options with a short description can be found at |Q_op|. 0 Leading zeroes in numeric items. Overridden by '-'. minwid Minimum width of the item, padding as set by '-' & '0'. Value must be 50 or less. - maxwid Maximum width of the item. Truncation occurs with a '<' + maxwid Maximum width of the item. Truncation occurs with a '<' on the left for text items. Numeric items will be shifted down to maxwid-2 digits followed by '>'number where number is the amount of missing digits, much like @@ -5551,7 +5557,7 @@ A jump table for the options with a short description can be found at |Q_op|. L N Number of lines in buffer. c N Column number. v N Virtual column number. - V N Virtual column number as -{num}. Not displayed if equal to 'c'. + V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the percentage described for 'ruler'. Always 3 in length. @@ -5573,7 +5579,7 @@ A jump table for the options with a short description can be found at |Q_op|. Display of flags are controlled by the following heuristic: If a flag text starts with comma it is assumed that it wants to - separate itself from anything but preceding plaintext. If it starts + separate itself from anything but preceding plaintext. If it starts with a space it is assumed that it wants to separate itself from anything but other flags. That is: A leading comma is removed if the preceding character stems from plaintext. A leading space is removed @@ -5631,8 +5637,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Files with these suffixes get a lower priority when multiple files match a wildcard. See |suffixes|. Commas can be used to separate the - suffixes. Spaces after the comma are ignored. A dot is also seen as - the start of a suffix. To avoid a dot or comma being recognized as a + suffixes. Spaces after the comma are ignored. A dot is also seen as + the start of a suffix. To avoid a dot or comma being recognized as a separator, precede it with a backslash (see |option-backslash| about including spaces and backslashes). See 'wildignore' for completely ignoring files. @@ -5654,7 +5660,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'swapfile' 'swf' boolean (default on) local to buffer {not in Vi} - Use a swapfile for the buffer. This option can be reset when a + Use a swapfile for the buffer. This option can be reset when a swapfile is not wanted for a specific buffer. For example, with confidential information that even root must not be able to access. Careful: All text will be in memory: @@ -5675,7 +5681,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When this option is not empty a swap file is synced to disk after - writing to it. This takes some time, especially on busy unix systems. + writing to it. This takes some time, especially on busy unix systems. When this option is empty parts of the swap file may be in memory and not written to disk. When the system crashes you may lose more work. On Unix the system does a sync now and then without Vim asking for it, @@ -5742,7 +5748,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'expandtab'. This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. 3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a - |modeline| to set these values when editing the file again. Only + |modeline| to set these values when editing the file again. Only works when using Vim to edit the file. 4. Always set 'tabstop' and 'shiftwidth' to the same value, and 'noexpandtab'. This should then work (for initial indents only) @@ -5756,7 +5762,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} When searching for a tag (e.g., for the |:ta| command), Vim can either - use a binary search or a linear search in a tags file. Binary + use a binary search or a linear search in a tags file. Binary searching makes searching for a tag a LOT faster, but a linear search will find more tags if the tags file wasn't properly sorted. Vim normally assumes that your tags files are sorted, or indicate that @@ -5764,7 +5770,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'tagbsearch' option need to be switched off. When 'tagbsearch' is on, binary searching is first used in the tags - files. In certain situations, Vim will do a linear search instead for + files. In certain situations, Vim will do a linear search instead for certain files, or retry all files with a linear search. When 'tagbsearch' is off, only a linear search is done. @@ -5950,8 +5956,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Maximum width of text that is being inserted. A longer line will be broken after white space to get this width. A zero value disables - this. 'textwidth' is set to 0 when the 'paste' option is set. When - 'textwidth' is zero, 'wrapmargin' may be used. See also + this. 'textwidth' is set to 0 when the 'paste' option is set. When + 'textwidth' is zero, 'wrapmargin' may be used. See also 'formatoptions' and |ins-textwidth|. NOTE: This option is set to 0 when 'compatible' is set. @@ -5960,13 +5966,13 @@ A jump table for the options with a short description can be found at |Q_op|. global or local to buffer |global-local| {not in Vi} List of file names, separated by commas, that are used to lookup words - for thesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in + for thesaurus completion commands |i_CTRL-X_CTRL-T|. Each line in the file should contain words with similar meaning, separated by non-keyword characters (white space is preferred). Maximum line length is 510 bytes. To obtain a file to be used here, check out the wordlist FAQ at http://www.hyphenologist.co.uk . - To include a comma in a file name precede it with a backslash. Spaces + To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. The use of |:set+=| and |:set-=| is preferred when adding or removing @@ -6083,8 +6089,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+title| feature} Gives the percentage of 'columns' to use for the length of the window - title. When the title is longer, only the end of the path name is - shown. A '<' character before the path name is used to indicate this. + title. When the title is longer, only the end of the path name is + shown. A '<' character before the path name is used to indicate this. Using a percentage makes this adapt to the width of the window. But it won't work perfectly, because the actual number of characters available also depends on the font used and other things in the title @@ -6124,7 +6130,7 @@ A jump table for the options with a short description can be found at |Q_op|. Some people prefer to have the file name first: > :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%) < Note the use of "%{ }" and an expression to get the path of the file, - without the file name. The "%( %)" constructs are used to add a + without the file name. The "%( %)" constructs are used to add a separating space only when needed. NOTE: Use of special characters in 'titlestring' may cause the display to be garbled (e.g., when it contains a CR or NL character). @@ -6135,12 +6141,12 @@ A jump table for the options with a short description can be found at |Q_op|. global {only for |+GUI_GTK|, |+GUI_Athena|, |+GUI_Motif| and |+GUI_Photon|} - The contents of this option controls various toolbar settings. The + The contents of this option controls various toolbar settings. The possible values are: icons Toolbar buttons are shown with icons. text Toolbar buttons shown with text. horiz Icon and text of a toolbar button are - horizontally arranged. {only in GTK+ 2 GUI} + horizontally arranged. {only in GTK+ 2 GUI} tooltips Tooltips are active for toolbar buttons. Tooltips refer to the popup help text which appears after the mouse cursor is placed over a toolbar button for a brief moment. @@ -6352,7 +6358,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +mksession feature} Changes the effect of the |:mkview| command. It is a comma separated - list of words. Each word enables saving and restoring something: + list of words. Each word enables saving and restoring something: word save and restore ~ cursor cursor position in file and in window folds manually created folds, opened/closed folds and local @@ -6378,7 +6384,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+viminfo| feature} When non-empty, the viminfo file is read upon startup and written - when exiting Vim (see |viminfo-file|). The string should be a comma + when exiting Vim (see |viminfo-file|). The string should be a comma separated list of parameters, each consisting of a single character identifying the particular parameter, followed by a number or string which specifies the value of that parameter. If a particular @@ -6397,7 +6403,7 @@ A jump table for the options with a short description can be found at |Q_op|. % When included, save and restore the buffer list. If Vim is started with a file name argument, the buffer list is not restored. If Vim is started without a file name argument, the - buffer list is restored from the viminfo file. Buffers + buffer list is restored from the viminfo file. Buffers without a file name and buffers for help files are not written to the viminfo file. ' Maximum number of previously edited files for which the marks @@ -6406,23 +6412,23 @@ A jump table for the options with a short description can be found at |Q_op|. Including this item also means that the |jumplist| and the |changelist| are stored in the viminfo file. / Maximum number of items in the search pattern history to be - saved. If non-zero, then the previous search and substitute + saved. If non-zero, then the previous search and substitute patterns are also saved. When not included, the value of 'history' is used. : Maximum number of items in the command-line history to be - saved. When not included, the value of 'history' is used. + saved. When not included, the value of 'history' is used. < Maximum number of lines saved for each register. If zero then registers are not saved. When not included, all lines are saved. '"' is the old name for this item. Also see the 's' item below: limit specified in Kbyte. @ Maximum number of items in the input-line history to be - saved. When not included, the value of 'history' is used. + saved. When not included, the value of 'history' is used. c When included, convert the text in the viminfo file from the 'encoding' used when writing the file to the current 'encoding'. See |viminfo-encoding|. f Whether file marks need to be stored. If zero, file marks ('0 to '9, 'A to 'Z) are not stored. When not present or when - non-zero, they are all stored. '0 is used for the current + non-zero, they are all stored. '0 is used for the current cursor position (when exiting or when doing ":wviminfo"). h Disable the effect of 'hlsearch' when loading the viminfo file. When not included, it depends on whether ":nohlsearch" @@ -6631,7 +6637,7 @@ A jump table for the options with a short description can be found at |Q_op|. global {not in Vi} Completion mode that is used for the character specified with - 'wildchar'. It is a comma separated list of up to four parts. Each + 'wildchar'. It is a comma separated list of up to four parts. Each part specifies what to do for each consecutive use of 'wildchar. The first part specifies the behavior for the first use of 'wildchar', The second part for the second use, etc. @@ -6678,7 +6684,7 @@ A jump table for the options with a short description can be found at |Q_op|. yes ALT key handling is done by the windowing system. ALT key combinations cannot be mapped. menu Using ALT in combination with a character that is a menu - shortcut key, will be handled by the windowing system. Other + shortcut key, will be handled by the windowing system. Other keys can be mapped. If the menu is disabled by excluding 'm' from 'guioptions', the ALT key is never used for the menu. @@ -6692,7 +6698,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the +windows 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 + 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" @@ -6771,8 +6777,8 @@ A jump table for the options with a short description can be found at |Q_op|. This option changes how text is displayed. It doesn't change the text in the buffer, see 'textwidth' for that. When on, lines longer than the width of the window will wrap and - displaying continues on the next line. When off lines will not wrap - and only part of long lines will be displayed. When the cursor is + displaying continues on the next line. When off lines will not wrap + and only part of long lines will be displayed. When the cursor is moved to a part that is not shown, the screen will scroll horizontally. The line will be broken in the middle of a word if necessary. See @@ -6805,7 +6811,7 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Allows writing files. When not set, writing a file is not allowed. Can be used for a view-only mode, where modifications to the text are - still allowed. Can be reset with the |-m| or |-M| command line + still allowed. Can be reset with the |-m| or |-M| command line argument. Filtering text is still possible, even though this requires writing a temporary file. diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index 5aee40187..f2fa8f6e6 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 7.0aa. Last change: 2004 Apr 02 +*repeat.txt* For Vim version 7.0aa. Last change: 2004 Jun 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -467,6 +467,13 @@ DEFINING BREAKPOINTS Set a breakpoint in a sourced file. Example: > :breakadd file 43 .vimrc +:breaka[dd] here + Set a breakpoint in the current line of the current file. + Like doing: > + :breakadd file <cursor-line> <current-file> +< Note that this only works for commands that are executed when + sourcing the file, not for a function defined in that file. + The [lnum] is the line number of the breakpoint. Vim will stop at or after this line. When omitted line 1 is used. @@ -501,6 +508,9 @@ DELETING BREAKPOINTS :breakd[el] file [lnum] {name} Delete a breakpoint in a sourced file. +:breakd[el] here + Delete a breakpoint at the current line of the current file. + When [lnum] is omitted, the first breakpoint in the function or file is deleted. The {name} must be exactly the same as what was typed for the ":breakadd" diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index d5d44dff1..ea6dea263 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0aa. Last change: 2004 Jun 20 +*todo.txt* For Vim version 7.0aa. Last change: 2004 Jun 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,6 +30,8 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. *known-bugs* -------------------- Known bugs and current work ----------------------- +Change for fsync() error in Vim 6 as patch? + For version 7.0: - Include many PATCHES: 9 Merge in ideas from tutor.txt (Gabriel Zachmann) @@ -59,7 +61,7 @@ For version 7.0: InsmodLeave Taro Muraoka, 2004 Jun 16 - Include the kvim patch. http://freenux.org/vim/ (Mickael Marchand) Do not add Qtopia yet, it doesn't work very well. - Mickael will update the patch before 21st. + update from Mickael 2004 Jun 20. 8 Unix: When libcall() fails there is no clear error message. Johannes Zellner has a patch for this. updated patch 2004 June 16. @@ -88,7 +90,8 @@ For version 7.0: 7 Completion of network shares, patch by Yasuhiro Matsumoto. Update 2004 Jun 17. 8 Patches from Peter "Rain Dog" Cucka: - - guifont selector (2002 Dec 15) will send update + - guifont selector (2002 Dec 15) + update 2004 Jun 20 7 Add an option to set the width of the 'number' column. Eight positions is often more than needed. Or adjust the width to the length of the file? @@ -215,11 +218,6 @@ For version 7.0: 7 Motif: use the menu font consistently. Patch from Martin Dalecki 2002 Jan 11. - Motif: add 3D shading for the menu entries? Patch from Martin Dalecki. - 9 When 'autoindent' is set, hitting <CR> twice, while there is text after - the cursor, doesn't delete the autoindent in the resulting blank line. - (Rich Wales) This is Vi compatible, but it looks like a bug. Rich has - a suggestion for a patch to fix this. - e-mail to Rich bounced. 7 For Visual mode: Command to do a search for the string in the marked area. Only when fewer than two lines. Use "g/" and "gb". Patch from Yegappan Lakshmanan. @@ -260,6 +258,12 @@ For version 7.0: ispell inside Vim). Gautam Iyer has an example with "aspell". "engspchk" from Charles Campbell is a good way. Support for approximate-regexps will help (agrep http://www.tgries.de/agrep/). + - Charles Campbell asks for method to add "contained" groups to + existing syntax items (to add @Spell). Add ":syntax contains + {pattern} add=@Spell" command? A bit like ":syn cluster" but change + the contains list directly for matching syntax items. + - Keep wordlist in syntax group, load it only once and use it several + times later. Sort of global syntax items. - REFACTORING: The main() function is very long. Move parts to separate functions, especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004 Feb 9). @@ -302,6 +306,11 @@ For version 7.0: Especially when using the scrollbar. Typing a cursor-movement command scrolls back to where the cursor is. 8 Support four composing characters, needed for Hebrew. (Ron Aaron) +- Add a few more things to 'diffopt': "horizontal", "vertical", + "foldcolumn". (Benji Fisher, 2004 Jun 21) +- FileChangedShellPost autocommand event: after (not) reloading a changed + file. Can be used to update statusline oslt. +- Displaying size of Visual area: use 24-33 column display. Vi incompatibility: @@ -1111,6 +1120,8 @@ Problems that will (probably) not be solved: - GTK: When pasting a selection from Vim to xclipboard gvim crashes with a ABRT signal. Probably an error in the file gdkselection.c, the assert always fails when XmbTextListToTextProperty() fails. (Tom Allard) +- GTK 2: gives an assertion error for every non-builtin icon in the toolbar. + This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour) - When using an xterm that supports the termresponse feature, and the 't_Co' termcap option was wrong when Vim started, it will be corrected when the termresponse is received. Since the number of colors changes, the @@ -2171,6 +2182,9 @@ Command line history: Insert mode: +9 When 'autoindent' is set, hitting <CR> twice, while there is text after + the cursor, doesn't delete the autoindent in the resulting blank line. + (Rich Wales) This is Vi compatible, but it looks like a bug. 8 When using CTRL-O in Insert mode, then executing an insert command "a" or "i", should we return to Insert mode after <Esc>? (Eggink) Perhaps it can be allowed a single time, to be able to do @@ -3299,8 +3313,6 @@ Various improvements: - Implement 'redraw' option. - Add special code to 'sections' option to define something else but '{' or '}' as the start of a section (e.g. one shiftwidth to the right). -- Add 'indent' option: Always use this amount of indent when starting a new - line and when formatting text. - Use pipes for filtering on Unix. Requires using fork() to be able to read and write at the same time, or some select() mechanism. 7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt index ee9eba43a..47396ccf4 100644 --- a/runtime/doc/usr_05.txt +++ b/runtime/doc/usr_05.txt @@ -1,4 +1,4 @@ -*usr_05.txt* For Vim version 7.0aa. Last change: 2004 Mar 12 +*usr_05.txt* For Vim version 7.0aa. Last change: 2004 Jun 24 VIM USER MANUAL - by Bram Moolenaar @@ -369,8 +369,8 @@ adding. If it's OK, you can give the new one another name: > mv thefile ~/.vim/ftplugin/stuff_too.vim The underscore is used to separate the name of the filetype from the rest, -which can be anything. If you would use "otherstuff.vim" it wouldn't work, it -would be loaded for the "otherstuff" filetype. +which can be anything. If you use "otherstuff.vim" it wouldn't work, it would +be loaded for the "otherstuff" filetype. On MS-DOS you cannot use long filenames. You would run into trouble if you add a second plugin and the filetype has more than six characters. You can @@ -505,7 +505,7 @@ before and after the option name. For example: > :help 'wrap' In case you have messed up an option value, you can set it back to the -default by putting a ampersand (&) after the option name. Example: > +default by putting an ampersand (&) after the option name. Example: > :set iskeyword& @@ -514,8 +514,8 @@ NOT WRAPPING LINES Vim normally wraps long lines, so that you can see all of the text. Sometimes it's better to let the text continue right of the window. Then you need to -scroll the text left-right to see all of a long line. Switch wrapping of with -this command: > +scroll the text left-right to see all of a long line. Switch wrapping off +with this command: > :set nowrap diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt index 46bff9a7c..e366f0763 100644 --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0aa. Last change: 2004 Jun 07 +*version7.txt* For Vim version 7.0aa. Last change: 2004 Jun 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -32,6 +32,20 @@ INCOMPATIBLE CHANGES *incompatible-7* These changes are incompatible with previous releases. Check this list if you run into a problem when upgrading from Vim 6.x to 7.0 +":helpgrep" now uses a help window to display a match. + + +Minor incompatibilities: + +For filetype detection: For many types, instead of ~/.dir/filename use +*/.dir/filename, so that it also works for other user's files. + +":0verbose" now sets 'verbose' to zero instead of one. + +Removed the old and incomplete "VimBuddy" code. + +Buffers without a name report "No Name" instead of "No File". It was +confusing for buffers with a name and 'buftype' set to "nofile". ============================================================================== NEW FEATURES *new-7* @@ -68,10 +82,21 @@ New autocommand events: ~ New Syntax files: ~ +Others: ~ + +Mac: Add the selection type to the clipboard, so that Block, line and +character selections can be used between two Vims. (Eckehard Berns) +Also fixes the problem that setting 'clipboard' to "unnamed" breaks using +"yyp". ============================================================================== IMPROVEMENTS *improvements-7* +":helpgrep" accepts a language specifier after the pattern: "pat@it". + +":breakadd here" and ":breakdel here" can be used to set or delete a +breakpoint at the cursor. + ============================================================================== COMPILE TIME CHANGES *compile-changes-7* @@ -80,5 +105,51 @@ COMPILE TIME CHANGES *compile-changes-7* ============================================================================== BUG FIXES *bug-fixes-7* +When using PostScript printing on MS-DOS the default 'printexpr' used "lpr" +instead of "copy". When 'printdevice' was empty the copy command did not +work. Use "LPT1" then. + +The GTK font dialog uses a font size zero when the font name doesn't include a +size. Use a default size of 10. + +This example in the documentation didn't work: + :e `=foo . ".c" ` +Skip over the expression in `=expr` when looking for comments, |, % and #. + +When ":helpgrep" doesn't find anything there is no error message. + +"L" and "H" did not take closed folds into account. + +Win32: The "-P title" argument stopped at the first title that matched, even +when it doesn't support MDI. + +Mac GUI: CTRL-^ and CTRL-@ did not work. + +"2daw" on "word." at the end of a line didn't include the preceding white +space. + +Win32: Using FindExecutable() doesn't work to find a program. Use +SearchPath() instead. For executable() use $PATHEXT when the program searched +for doesn't have an extension. + +When 'virtualedit' is set, moving the cursor up after appending a character +may move it to a different column. Was caused by auto-formatting moving the +cursor and not putting it back where it was. + +When indent was added automatically and then moving the cursor, the indent was +not deleted (like when pressing ESC). The "I" flag in 'cpoptions' can be used +to make it work the old way. + +When <Space> is mapped to something that starts with a space, typing <Space> +does not expand abbreviations. Only disable expanding abbreviations when a +mapping is not remapped, not when the RHS starts with the LHS. + +When opening a command-line window, 'textwidth' gets set to 78 by the Vim +filetype plugin. Reset 'textwidth' to 0 to avoid lines are broken. + +After using cursor(line, col) moving up/down doesn't keep the same column. + +Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart +fields. (Walter Briscoe) vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/plugin/explorer.vim b/runtime/plugin/explorer.vim index 4a5b6057f..e0fcb3349 100644 --- a/runtime/plugin/explorer.vim +++ b/runtime/plugin/explorer.vim @@ -1,7 +1,7 @@ "============================================================================= " File: explorer.vim " Author: M A Aziz Ahmed (aziz@acorn-networks.com - doesn't work) -" Last Change: 2004 May 13 +" Last Change: 2004 Jun 22 " Version: 2.5 + changes " Additions by Mark Waggoner (waggoner@aracnet.com) et al. "----------------------------------------------------------------------------- @@ -647,7 +647,7 @@ function! s:ShowDirectory() let b:maxFileLen = 0 0 /^"=/+1,$g/^/call s:MarkDirs() - normal! `t + keepjumps normal! `t call s:AddFileInfo() endif @@ -840,7 +840,7 @@ function! s:AddFileInfo() call s:AddSeparators() " return to start - normal! `t + keepjumps normal! `t let &sc = save_sc endfunction @@ -973,7 +973,7 @@ function! s:UpdateHeader() " Go back where we came from if possible 0 if line("'t") != 0 - normal! `t + keepjumps normal! `t endif let &report=oldRep diff --git a/runtime/plugin/netrw.vim b/runtime/plugin/netrw.vim index fdb6d2793..60dec437f 100644 --- a/runtime/plugin/netrw.vim +++ b/runtime/plugin/netrw.vim @@ -1,18 +1,18 @@ -" netrw.vim: (global plugin) Handles file transfer across a network -" Last Change: Jun 18, 2004 +" netrw.vim: Handles file transfer and remote directory listing across a network +" Last Change: Jun 24, 2004 " Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz> -" Version: 46 +" Version: 47c NOT RELEASED " License: Vim License (see vim's :help license) " " But be doers of the word, and not only hearers, deluding your own selves " (James 1:22 RSV) " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -" Exit quickly when already loaded or when 'compatible' is set. +" Exit quickly when already loaded or when 'compatible' is set. {{{1 if exists("loaded_netrw") || &cp finish endif -let loaded_netrw = "v46" +let loaded_netrw = "v47c" let s:save_cpo = &cpo set cpo&vim @@ -70,7 +70,7 @@ if !exists("g:netrw_fetch_cmd") endif if !exists("g:netrw_list_cmd") if executable("ssh") - let g:netrw_list_cmd= "ssh HOSTNAME ls -Fa" + let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa" else " call Decho("ssh is not executable, can't do netlist") let g:netrw_list_cmd= "" @@ -104,13 +104,13 @@ if version >= 600 augroup Network au! if has("win32") - au BufReadCmd file://* exe "doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "doau BufReadPost ".expand("<afile>") + au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") else - au BufReadCmd file:///* exe "doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "doau BufReadPost ".expand("<afile>") - au BufReadCmd file://localhost/* exe "doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "doau BufReadPost ".expand("<afile>") + au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") + au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>") endif - au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "doau BufReadPost ".expand("<afile>") - au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "doau BufReadPost ".expand("<afile>") + au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>") + au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>") au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "Nwrite " .expand("<afile>")|call <SID>NetRestorePosn() augroup END endif @@ -160,729 +160,736 @@ endfun " ------------------------------------------------------------------------ " NetRead: responsible for reading a file over the net {{{1 fun! s:NetRead(...) -" call Dfunc("NetRead(a:1<".a:1.">)") - - " save options - call s:NetOptionSave() - - " Special Exception: if a file is named "0r", then - " "0r" will be used to read the - " following files instead of "r" - if a:0 == 0 - let readcmd= "r" - let ichoice= 0 - elseif a:1 == "0r" - let readcmd = "0r" - let ichoice = 2 - else - let readcmd = "r" - let ichoice = 1 - endif - - " get name of a temporary file - let tmpfile= tempname() - -" call Decho("ichoice=".ichoice." readcmd<".readcmd.">") - while ichoice <= a:0 - - " attempt to repeat with previous host-file-etc - if exists("b:netrw_lastfile") && a:0 == 0 -" call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") - let choice = b:netrw_lastfile - let ichoice= ichoice + 1 - +" call Dfunc("NetRead(a:1<".a:1.">)") + + " save options + call s:NetOptionSave() + + " Special Exception: if a file is named "0r", then + " "0r" will be used to read the + " following files instead of "r" + if a:0 == 0 + let readcmd= "r" + let ichoice= 0 + elseif a:1 == "0r" + let readcmd = "0r" + let ichoice = 2 else - exe "let choice= a:" . ichoice -" call Decho("no lastfile: choice<" . choice . ">") - - " Reconstruct Choice if choice starts with '"' - if match(choice,"?") == 0 - echo 'NetRead Usage:' - echo ':Nread machine:path uses rcp' - echo ':Nread "machine path" uses ftp with <.netrc>' - echo ':Nread "machine id password path" uses ftp' - echo ':Nread dav://machine[:port]/path uses cadaver' - echo ':Nread fetch://machine/path uses fetch' - echo ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' - echo ':Nread http://[user@]machine/path uses http wget' - echo ':Nread rcp://[user@]machine/path uses rcp' - echo ':Nread rsync://machine[:port]/path uses rsync' - echo ':Nread scp://[user@]machine[[:#]port]/path uses scp' - echo ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' - break - elseif match(choice,"^\"") != -1 -" call Decho("reconstructing choice") - if match(choice,"\"$") != -1 - " case "..." - let choice=strpart(choice,1,strlen(choice)-2) - else - " case "... ... ..." - let choice = strpart(choice,1,strlen(choice)-1) - let wholechoice = "" - - while match(choice,"\"$") == -1 - let wholechoice = wholechoice . " " . choice - let ichoice = ichoice + 1 - if ichoice > a:0 - echoerr "Unbalanced string in filename '". wholechoice ."'" -" call Dret("NetRead") - return - endif - let choice= a:{ichoice} - endwhile - let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) - endif - endif - endif -" call Decho("choice<" . choice . ">") - let ichoice= ichoice + 1 - - " fix up windows urls - if has("win32") - let choice = substitute(choice,'\\','/','ge') -" call Decho("fixing up windows url to <".choice."> tmpfile<".tmpfile) - exe 'lcd ' . fnamemodify(tmpfile,':h') - let tmpfile = fnamemodify(tmpfile,':t') + let readcmd = "r" + let ichoice = 1 endif - - " Determine method of read (ftp, rcp, etc) - call s:NetMethod(choice) - - " Check if NetList() should be handling this request -" call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">") - if choice =~ "^.*/$" - if strlen(g:netrw_list_cmd) > 0 - call s:NetList(choice) -" call Dret("NetRead") + + " get name of a temporary file + let tmpfile= tempname() + +" call Decho("ichoice=".ichoice." readcmd<".readcmd.">") + while ichoice <= a:0 + + " attempt to repeat with previous host-file-etc + if exists("b:netrw_lastfile") && a:0 == 0 +" call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") + let choice = b:netrw_lastfile + let ichoice= ichoice + 1 + else - echoerr "sorry, can't do a remote listing; ssh isn't executable" + exe "let choice= a:" . ichoice +" call Decho("no lastfile: choice<" . choice . ">") + + " Reconstruct Choice if choice starts with '"' + if match(choice,"?") == 0 + echo 'NetRead Usage:' + echo ':Nread machine:path uses rcp' + echo ':Nread "machine path" uses ftp with <.netrc>' + echo ':Nread "machine id password path" uses ftp' + echo ':Nread dav://machine[:port]/path uses cadaver' + echo ':Nread fetch://machine/path uses fetch' + echo ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' + echo ':Nread http://[user@]machine/path uses http wget' + echo ':Nread rcp://[user@]machine/path uses rcp' + echo ':Nread rsync://machine[:port]/path uses rsync' + echo ':Nread scp://[user@]machine[[:#]port]/path uses scp' + echo ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' + break + elseif match(choice,"^\"") != -1 +" call Decho("reconstructing choice") + if match(choice,"\"$") != -1 + " case "..." + let choice=strpart(choice,1,strlen(choice)-2) + else + " case "... ... ..." + let choice = strpart(choice,1,strlen(choice)-1) + let wholechoice = "" + + while match(choice,"\"$") == -1 + let wholechoice = wholechoice . " " . choice + let ichoice = ichoice + 1 + if ichoice > a:0 + echoerr "Unbalanced string in filename '". wholechoice ."'" +" call Dret("NetRead") + return + endif + let choice= a:{ichoice} + endwhile + let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) + endif + endif endif - return - endif - " ============ - " Perform Read - " ============ +" call Decho("choice<" . choice . ">") + let ichoice= ichoice + 1 + + " fix up windows urls + if has("win32") + let choice = substitute(choice,'\\','/','ge') +" call Decho("fixing up windows url to <".choice."> tmpfile<".tmpfile) - "......................................... - " rcp: NetRead Method #1 - if b:netrw_method == 1 " read with rcp -" call Decho("read via rcp (method #1)") - " ER: noting done with g:netrw_uid yet? - " ER: on Win2K" rcp machine[.user]:file tmpfile - " ER: if machine contains '.' adding .user is required (use $USERNAME) - " ER: the tmpfile is full path: rcp sees C:\... as host C - if s:netrw_has_nt_rcp == 1 - if exists("g:netrw_uid") && ( g:netrw_uid != "" ) - let uid_machine = g:netrw_machine .'.'. g:netrw_uid - else - " Any way needed it machine contains a '.' - let uid_machine = g:netrw_machine .'.'. $USERNAME + exe 'lcd ' . fnamemodify(tmpfile,':h') + let tmpfile = fnamemodify(tmpfile,':t') endif - else - if exists("g:netrw_uid") && ( g:netrw_uid != "" ) - let uid_machine = g:netrw_uid .'@'. g:netrw_machine + + " Determine method of read (ftp, rcp, etc) + call s:NetMethod(choice) + + " Check if NetList() should be handling this request +" call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">") + if choice =~ "^.*/$" + if strlen(g:netrw_list_cmd) > 0 + keepjumps call s:NetList(choice) +" call Dret("NetRead") + else + echoerr "sorry, can't do a remote listing; ssh isn't executable" + endif + return + endif + + " ============ + " Perform Read + " ============ + + "......................................... + " rcp: NetRead Method #1 + if b:netrw_method == 1 " read with rcp +" call Decho("read via rcp (method #1)") + " ER: noting done with g:netrw_uid yet? + " ER: on Win2K" rcp machine[.user]:file tmpfile + " ER: if machine contains '.' adding .user is required (use $USERNAME) + " ER: the tmpfile is full path: rcp sees C:\... as host C + if s:netrw_has_nt_rcp == 1 + if exists("g:netrw_uid") && ( g:netrw_uid != "" ) + let uid_machine = g:netrw_machine .'.'. g:netrw_uid + else + " Any way needed it machine contains a '.' + let uid_machine = g:netrw_machine .'.'. $USERNAME + endif else - let uid_machine = g:netrw_machine + if exists("g:netrw_uid") && ( g:netrw_uid != "" ) + let uid_machine = g:netrw_uid .'@'. g:netrw_machine + else + let uid_machine = g:netrw_machine + endif 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) - let b:netrw_lastfile = choice - - "......................................... - " ftp + <.netrc>: NetRead Method #2 - elseif b:netrw_method == 2 " read with ftp + <.netrc> -" call Decho("read via ftp+.netrc (method #2)") +" 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) + let b:netrw_lastfile = choice + + "......................................... + " ftp + <.netrc>: NetRead Method #2 + elseif b:netrw_method == 2 " read with ftp + <.netrc> +" call Decho("read via ftp+.netrc (method #2)") + let netrw_fname= b:netrw_fname + new + set ff=unix + exe "put ='".g:netrw_ftpmode."'" + exe "put ='get ".netrw_fname." ".tmpfile."'" + if exists("g:netrw_port") && g:netrw_port != "" +" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) + exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port + else +" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) + exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine + endif + " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) + if getline(1) !~ "^$" + echoerr getline(1) + endif + bd! + let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + let b:netrw_lastfile = choice + + "......................................... + " ftp + machine,id,passwd,filename: NetRead Method #3 + elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname + " Construct execution string (four lines) which will be passed through filter +" call Decho("read via ftp+mipf (method #3)") let netrw_fname= b:netrw_fname new set ff=unix - exe "put ='".g:netrw_ftpmode."'" - exe "put ='get ".netrw_fname." ".tmpfile."'" if exists("g:netrw_port") && g:netrw_port != "" -" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) - exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port + put ='open '.g:netrw_machine.' '.g:netrw_port else -" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) - exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine + 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 exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" + put =g:netrw_ftpmode + endif + put ='get '.netrw_fname.' '.tmpfile + + " 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('performing ftp -i -n') + norm 1Gdd +" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") + exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) if getline(1) !~ "^$" echoerr getline(1) endif bd! - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - - "......................................... - " ftp + machine,id,passwd,filename: NetRead Method #3 - elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname - " Construct execution string (four lines) which will be passed through filter -" call Decho("read via ftp+mipf (method #3)") - let netrw_fname= b:netrw_fname - new - set 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 + + "......................................... + " scp: NetRead Method #4 + elseif b:netrw_method == 4 " read with scp +" call Decho("read via scp (method #4)") + if exists("g:netrw_port") && g:netrw_port != "" + let useport= " -P ".g:netrw_port + else + let useport= "" + endif + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile + else +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile + endif + let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + let b:netrw_lastfile = choice + + "......................................... + elseif b:netrw_method == 5 " read with http (wget) +" call Decho("read via http (method #5)") + if g:netrw_http_cmd == "" + echoerr "neither wget nor fetch command is available" + exit + endif + + if match(b:netrw_fname,"#") == -1 + " simple wget +" call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&') + let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + + else + " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker) + let netrw_html= substitute(b:netrw_fname,"#.*$","","") + let netrw_tag = substitute(b: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('<\s*a\s*name=\s*"'.netrw_tag.'"/') + exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" + endif + let b:netrw_lastfile = choice + + "......................................... + " cadaver: NetRead Method #6 + elseif b:netrw_method == 6 " read with cadaver +" call Decho("read via cadaver (method #6)") + + " Construct execution string (four lines) which will be passed through filter + let netrw_fname= b:netrw_fname + new + set 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 put ='user '.g:netrw_uid.' '.g:netrw_passwd + + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') + put ='get '.netrw_fname.' '.cygtmpfile + else + put ='get '.netrw_fname.' '.tmpfile + endif + + " perform cadaver operation: + norm 1Gdd +" 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 b:netrw_lastfile = choice + + "......................................... + " rsync: NetRead Method #7 + elseif b:netrw_method == 7 " read with rsync +" call Decho("read via rsync (method #7)") + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') +" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile + else +" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile + endif + let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) + let b:netrw_lastfile = choice + + "......................................... + " fetch: NetRead Method #8 + " fetch://[user@]host[:http]/path + elseif b:netrw_method == 8 " read with fetch + if g:netrw_fetch_cmd == "" + echoerr "fetch command not available" + exit + endif + if exists("g:netrw_option") && g:netrw_option == ":http" + let netrw_option= "http" + else + let netrw_option= "ftp" + 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."/".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&') + else +" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&') + endif + + let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) + let b:netrw_lastfile = choice + + "......................................... + " sftp: NetRead Method #9 + elseif b:netrw_method == 9 " read with sftp +" call Decho("read via sftp (method #4)") + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') +" call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) +" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) + exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile + else +" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile + endif + let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) + let b:netrw_lastfile = choice + + "......................................... + else " Complain + echo "***warning*** unable to comply with your request<" . choice . ">" endif - - if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" - put =g:netrw_ftpmode - endif - put ='get '.netrw_fname.' '.tmpfile - - " 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('performing ftp -i -n') - norm 1Gdd -" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") - exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" - " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) - if getline(1) !~ "^$" - echoerr getline(1) - endif - bd! - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) - let b:netrw_lastfile = choice - - "......................................... - " scp: NetRead Method #4 - elseif b:netrw_method == 4 " read with scp -" call Decho("read via scp (method #4)") - if exists("g:netrw_port") && g:netrw_port != "" - let useport= " -P ".g:netrw_port - else - let useport= "" - endif - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile - else -" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile - endif - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) - let b:netrw_lastfile = choice - - "......................................... - elseif b:netrw_method == 5 " read with http (wget) -" call Decho("read via http (method #5)") - if g:netrw_http_cmd == "" - echoerr "neither wget nor fetch command is available" - exit - endif - - if match(b:netrw_fname,"#") == -1 - " simple wget -" call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&') - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) - - else - " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker) - let netrw_html= substitute(b:netrw_fname,"#.*$","","") - let netrw_tag = substitute(b: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('<\s*a\s*name=\s*"'.netrw_tag.'"/') - exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" - endif - let b:netrw_lastfile = choice - - "......................................... - " cadaver: NetRead Method #6 - elseif b:netrw_method == 6 " read with cadaver -" call Decho("read via cadaver (method #6)") - - " Construct execution string (four lines) which will be passed through filter - let netrw_fname= b:netrw_fname - new - set 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 - put ='user '.g:netrw_uid.' '.g:netrw_passwd - - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') - put ='get '.netrw_fname.' '.cygtmpfile - else - put ='get '.netrw_fname.' '.tmpfile - endif - - " perform cadaver operation: - norm 1Gdd -" 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 b:netrw_lastfile = choice - - "......................................... - " rsync: NetRead Method #7 - elseif b:netrw_method == 7 " read with rsync -" call Decho("read via rsync (method #7)") - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile - else -" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile - endif - let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) - let b:netrw_lastfile = choice - - "......................................... - " fetch: NetRead Method #8 - " fetch://[user@]host[:http]/path - elseif b:netrw_method == 8 " read with fetch - if g:netrw_fetch_cmd == "" - echoerr "fetch command not available" - exit - endif - if exists("g:netrw_option") && g:netrw_option == ":http" - let netrw_option= "http" - else - let netrw_option= "ftp" - 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."/".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&') - else -" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&') - endif - - let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) - let b:netrw_lastfile = choice - - "......................................... - " sftp: NetRead Method #9 - elseif b:netrw_method == 9 " read with sftp -" call Decho("read via sftp (method #4)") - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) -" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) - exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile - else -" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile - endif - let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) - let b:netrw_lastfile = choice - - "......................................... - else " Complain - echo "***warning*** unable to comply with your request<" . choice . ">" + endwhile + + " cleanup +" call Decho("cleanup") + if exists("b:netrw_method") + unlet b:netrw_method + unlet g:netrw_machine + unlet b:netrw_fname endif - endwhile - - " cleanup -" call Decho("cleanup") - if exists("b:netrw_method") - unlet b:netrw_method - unlet g:netrw_machine - unlet b:netrw_fname - endif - call s:NetOptionRestore() - -" call Dret("NetRead") + call s:NetOptionRestore() + +" call Dret("NetRead") endfun " end of NetRead " ------------------------------------------------------------------------ " NetGetFile: Function to read file "fname" with command "readcmd". {{{1 fun! s:NetGetFile(readcmd, fname, method) -"" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)") - - if exists("*NetReadFixup") - " for the use of NetReadFixup (not otherwise used internally) - let line2= line("$") - endif - - " transform paths from / to \ for Windows, unless the shell is bash - if &term == "win32" - if &shell == "bash" - let fname=a:fname -"" call Decho("(win32 && bash) fname<".fname.">") - else - let fname=substitute(a:fname,'/','\\\\','ge') -"" call Decho("(win32 && !bash) fname<".fname.">") +" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)") + + if exists("*NetReadFixup") + " for the use of NetReadFixup (not otherwise used internally) + let line2= line("$") endif - else - let fname= a:fname -"" call Decho("(copied) fname<".fname.">") - endif - - " get the file, but disable undo when reading a new buffer - if a:readcmd[0] == '0' - let use_e_cmd = 0 " 1 when using ':edit' - let delline = 0 " 1 when have to delete empty last line - if line("$") == 1 && getline(1) == "" - " Now being asked to 0r a file into an empty file. - " Safe to :e it instead, unless there is another window on the same buffer. - let curbufnr = bufnr("%") - let use_e_cmd = 1 - let delline = 1 - " Loop over all windows, - " reset use_e_cmd when another one is editing the current buffer. - let i = 1 - while 1 - if i != winnr() && winbufnr(i) == curbufnr - let use_e_cmd = 0 - break - endif - let i = i + 1 - if winbufnr(i) < 0 - break - endif - endwhile + + " transform paths from / to \ for Windows, unless the shell is bash + if &term == "win32" + if &shell == "bash" + let fname=a:fname +" call Decho("(win32 && bash) fname<".fname.">") + else + let fname=substitute(a:fname,'/','\\\\','ge') +" call Decho("(win32 && !bash) fname<".fname.">") + endif + else + let fname= a:fname +" call Decho("(copied) fname<".fname.">") endif - - if use_e_cmd > 0 - " ':edit' the temp file, wipe out the old buffer and rename the buffer - let curfilename = expand("%") - - let binlocal = &l:bin - let binglobal = &g:bin - if binlocal - setglobal bin " Need to set 'bin' globally for ":e" command. + + " get the file, but disable undo when reading a new buffer + if a:readcmd[0] == '0' + let use_e_cmd = 0 " 1 when using ':edit' + let delline = 0 " 1 when have to delete empty last line + if line("$") == 1 && getline(1) == "" + " Now being asked to 0r a file into an empty file. + " Safe to :e it instead, unless there is another window on the same buffer. + let curbufnr = bufnr("%") + let use_e_cmd = 1 + let delline = 1 + " Loop over all windows, + " reset use_e_cmd when another one is editing the current buffer. + let i = 1 + while 1 + if i != winnr() && winbufnr(i) == curbufnr + let use_e_cmd = 0 + break + endif + let i = i + 1 + if winbufnr(i) < 0 + break + endif + endwhile endif - silent exe "e! ".v:cmdarg." ".fname - if binlocal && !binglobal - setglobal nobin - setlocal bin + + if use_e_cmd > 0 + " ':edit' the temp file, wipe out the old buffer and rename the buffer + let curfilename = expand("%") + + let binlocal = &l:bin + let binglobal = &g:bin + if binlocal + setglobal bin " Need to set 'bin' globally for ":e" command. + endif + silent exe "e! ".v:cmdarg." ".fname + if binlocal && !binglobal + setglobal nobin + setlocal bin + endif + + exe curbufnr . "bwipe!" + exe "f ".curfilename + " the ":f newname" apparently leaves the temporary file as the alternate + " file in the buffer list (see :ls!). The following command wipes it out. + exe bufnr("#")."bwipe!" + else + let oldul= &ul + set ul=-1 + exe a:readcmd." ".v:cmdarg." ".fname + if delline > 0 + " wipe out last line, which should be a blank line anyway + $del + endif + let &ul= oldul endif - - exe curbufnr . "bwipe!" - exe "f ".curfilename - " the ":f newname" apparently leaves the temporary file as the alternate - " file in the buffer list (see :ls!). The following command wipes it out. - exe bufnr("#")."bwipe!" - else - let oldul= &ul - set ul=-1 + elseif filereadable(fname) +" call Decho("exe<".a:readcmd." ".v:cmdarg." ".fname.">") exe a:readcmd." ".v:cmdarg." ".fname - if delline > 0 - " wipe out last line, which should be a blank line anyway - $del - endif - let &ul= oldul - endif - else - exe a:readcmd." ".v:cmdarg." ".fname - endif - - " User-provided (ie. optional) fix-it-up command - if exists("*NetReadFixup") - let line1= line(".") - if a:readcmd == "r" - let line2= line("$") - line2 + line1 else - let line2= line("$") - line2 +" call Dret("NetGetFile") + return endif -"" call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")") - call NetReadFixup(a:method, line1, line2) - endif -"" call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> fname<".a:fname."> readable=".filereadable(a:fname)) - -" insure that we have the right filetype and that its being displayed - filetype detect - redraw! -"" call Dret("NetGetFile") + + " User-provided (ie. optional) fix-it-up command + if exists("*NetReadFixup") + let line1= line(".") + if a:readcmd == "r" + let line2= line("$") - line2 + line1 + else + let line2= line("$") - line2 + endif +" call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")") + call NetReadFixup(a:method, line1, line2) + endif + +" call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> fname<".a:fname."> readable=".filereadable(a:fname)) + + " insure that we have the right filetype and that its being displayed + filetype detect + redraw! +" call Dret("NetGetFile") endfun " ------------------------------------------------------------------------ " NetWrite: responsible for writing a file over the net {{{1 fun! s:NetWrite(...) range -"" call Dfunc("NetWrite(a:0=".a:0.")") - - " option handling - let mod= 0 - call s:NetOptionSave() - - " Get Temporary Filename - let tmpfile= tempname() - - if a:0 == 0 - let ichoice = 0 - else - let ichoice = 1 - endif - - " write (selected portion of) file to temporary - silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile - - while ichoice <= a:0 - - " attempt to repeat with previous host-file-etc - if exists("b:netrw_lastfile") && a:0 == 0 -"" call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") - let choice = b:netrw_lastfile - let ichoice= ichoice + 1 +" call Dfunc("NetWrite(a:0=".a:0.")") + + " option handling + let mod= 0 + call s:NetOptionSave() + + " Get Temporary Filename + let tmpfile= tempname() + + if a:0 == 0 + let ichoice = 0 else - exe "let choice= a:" . ichoice - - " Reconstruct Choice if choice starts with '"' - if match(choice,"?") == 0 - echo 'NetWrite Usage:"' - echo ':Nwrite machine:path uses rcp' - echo ':Nwrite "machine path" uses ftp with <.netrc>' - echo ':Nwrite "machine id password path" uses ftp' - echo ':Nwrite dav://[user@]machine/path uses cadaver' - echo ':Nwrite fetch://[user@]machine/path uses fetch' - echo ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' - echo ':Nwrite rcp://machine/path uses rcp' - echo ':Nwrite rsync://[user@]machine/path uses rsync' - echo ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' - echo ':Nwrite sftp://[user@]machine/path uses sftp' - break - - elseif match(choice,"^\"") != -1 - if match(choice,"\"$") != -1 - " case "..." - let choice=strpart(choice,1,strlen(choice)-2) - else - " case "... ... ..." - let choice = strpart(choice,1,strlen(choice)-1) - let wholechoice = "" - - while match(choice,"\"$") == -1 - let wholechoice= wholechoice . " " . choice - let ichoice = ichoice + 1 - if choice > a:0 - echoerr "Unbalanced string in filename '". wholechoice ."'" -"" call Dret("NetWrite") - return - endif - let choice= a:{ichoice} - endwhile - let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) + let ichoice = 1 + endif + + " write (selected portion of) file to temporary + silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile + + while ichoice <= a:0 + + " attempt to repeat with previous host-file-etc + if exists("b:netrw_lastfile") && a:0 == 0 +" call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") + let choice = b:netrw_lastfile + let ichoice= ichoice + 1 + else + exe "let choice= a:" . ichoice + + " Reconstruct Choice if choice starts with '"' + if match(choice,"?") == 0 + echo 'NetWrite Usage:"' + echo ':Nwrite machine:path uses rcp' + echo ':Nwrite "machine path" uses ftp with <.netrc>' + echo ':Nwrite "machine id password path" uses ftp' + echo ':Nwrite dav://[user@]machine/path uses cadaver' + echo ':Nwrite fetch://[user@]machine/path uses fetch' + echo ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' + echo ':Nwrite rcp://machine/path uses rcp' + echo ':Nwrite rsync://[user@]machine/path uses rsync' + echo ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' + echo ':Nwrite sftp://[user@]machine/path uses sftp' + break + + elseif match(choice,"^\"") != -1 + if match(choice,"\"$") != -1 + " case "..." + let choice=strpart(choice,1,strlen(choice)-2) + else + " case "... ... ..." + let choice = strpart(choice,1,strlen(choice)-1) + let wholechoice = "" + + while match(choice,"\"$") == -1 + let wholechoice= wholechoice . " " . choice + let ichoice = ichoice + 1 + if choice > a:0 + echoerr "Unbalanced string in filename '". wholechoice ."'" +" call Dret("NetWrite") + return + endif + let choice= a:{ichoice} + endwhile + let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) + endif endif endif - endif -"" call Decho("choice<" . choice . ">") - let ichoice= ichoice + 1 - - " fix up windows urls - if has("win32") - let choice= substitute(choice,'\\','/','ge') - "ER: see NetRead() - exe 'lcd ' . fnamemodify(tmpfile,':h') - let tmpfile = fnamemodify(tmpfile,':t') - endif - - " Determine method of read (ftp, rcp, etc) - call s:NetMethod(choice) - - " ============= - " Perform Write - " ============= - - "......................................... - " rcp: NetWrite Method #1 - if b:netrw_method == 1 " write with rcp -"" Decho "write via rcp (method #1)" - if s:netrw_has_nt_rcp == 1 - if exists("g:netrw_uid") && ( g:netrw_uid != "" ) - let uid_machine = g:netrw_machine .'.'. g:netrw_uid +" call Decho("choice<" . choice . ">") + let ichoice= ichoice + 1 + + " fix up windows urls + if has("win32") + let choice= substitute(choice,'\\','/','ge') + "ER: see NetRead() + exe 'lcd ' . fnamemodify(tmpfile,':h') + let tmpfile = fnamemodify(tmpfile,':t') + endif + + " Determine method of read (ftp, rcp, etc) + call s:NetMethod(choice) + + " ============= + " Perform Write + " ============= + + "......................................... + " rcp: NetWrite Method #1 + if b:netrw_method == 1 " write with rcp +" Decho "write via rcp (method #1)" + if s:netrw_has_nt_rcp == 1 + if exists("g:netrw_uid") && ( g:netrw_uid != "" ) + let uid_machine = g:netrw_machine .'.'. g:netrw_uid + else + let uid_machine = g:netrw_machine .'.'. $USERNAME + endif else - let uid_machine = g:netrw_machine .'.'. $USERNAME + if exists("g:netrw_uid") && ( g:netrw_uid != "" ) + let uid_machine = g:netrw_uid .'@'. g:netrw_machine + else + let uid_machine = g:netrw_machine + endif endif - else +" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&') + let b:netrw_lastfile = choice + + "......................................... + " ftp + <.netrc>: NetWrite Method #2 + elseif b:netrw_method == 2 " write with ftp + <.netrc> + let netrw_fname = b:netrw_fname + new + set ff=unix + exe "put ='".g:netrw_ftpmode."'" +" call Decho(" NetWrite: put ='".g:netrw_ftpmode."'") + exe "put ='put ".tmpfile." ".netrw_fname."'" +" call Decho("put ='put ".tmpfile." ".netrw_fname."'") + if exists("g:netrw_port") && g:netrw_port != "" +" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) + exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port + else +" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) + exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine + endif + " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) + if getline(1) !~ "^$" + echoerr getline(1) + let mod=1 + endif + bd! + let b:netrw_lastfile = choice + + "......................................... + " ftp + machine, id, passwd, filename: NetWrite Method #3 + elseif b:netrw_method == 3 " write with ftp + machine, id, passwd, and fname + let netrw_fname= b:netrw_fname + new + set 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 + put ='put '.tmpfile.' '.netrw_fname + " save choice/id/password for future use + let b:netrw_lastfile = choice + + " 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('performing ftp -i -n') + norm 1Gdd +" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") + exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" + " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) + if getline(1) !~ "^$" + echoerr getline(1) + let mod=1 + endif + bd! + + "......................................... + " scp: NetWrite Method #4 + elseif b:netrw_method == 4 " write with scp + if exists("g:netrw_port") && g:netrw_port != "" + let useport= " -P ".g:netrw_port + else + let useport= "" + endif + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') + else +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') + endif + let b:netrw_lastfile = choice + + "......................................... + " http: NetWrite Method #5 + elseif b:netrw_method == 5 + echoerr "***warning*** currently <netrw.vim> does not support writing using http:" + + "......................................... + " dav: NetWrite Method #6 + elseif b:netrw_method == 6 " write with cadaver +" call Decho("write via cadaver (method #6)") + + " Construct execution string (four lines) which will be passed through filter + let netrw_fname= b:netrw_fname + new + set 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 + put ='user '.g:netrw_uid.' '.g:netrw_passwd + + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') + put ='put '.cygtmpfile.' '.netrw_fname + else + put ='put '.tmpfile.' '.netrw_fname + endif + + " perform cadaver operation: + norm 1Gdd +" call Decho("executing: %!".g:netrw_dav_cmd) + exe g:netrw_silentxfer."%!".g:netrw_dav_cmd + bd! + let b:netrw_lastfile = choice + + "......................................... + " rsync: NetWrite Method #7 + elseif b:netrw_method == 7 " write with rsync + if g:netrw_cygwin == 1 + let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') +" call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') + else +" call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') + endif + let b:netrw_lastfile = choice + + "......................................... + " scp: NetWrite Method #9 + elseif b:netrw_method == 9 " write with sftp + let netrw_fname= b:netrw_fname if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_uid .'@'. g:netrw_machine else let uid_machine = g:netrw_machine endif - endif -"" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&') - let b:netrw_lastfile = choice - - "......................................... - " ftp + <.netrc>: NetWrite Method #2 - elseif b:netrw_method == 2 " write with ftp + <.netrc> - let netrw_fname = b:netrw_fname - new - set ff=unix - exe "put ='".g:netrw_ftpmode."'" -"" call Decho(" NetWrite: put ='".g:netrw_ftpmode."'") - exe "put ='put ".tmpfile." ".netrw_fname."'" -"" call Decho("put ='put ".tmpfile." ".netrw_fname."'") - if exists("g:netrw_port") && g:netrw_port != "" -"" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port) - exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port - else -"" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine) - exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine - endif - " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) - if getline(1) !~ "^$" - echoerr getline(1) - let mod=1 - endif - bd! - let b:netrw_lastfile = choice - - "......................................... - " ftp + machine, id, passwd, filename: NetWrite Method #3 - elseif b:netrw_method == 3 " write with ftp + machine, id, passwd, and fname - let netrw_fname= b:netrw_fname - new - set 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 - put ='put '.tmpfile.' '.netrw_fname - " save choice/id/password for future use - let b:netrw_lastfile = choice - - " 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('performing ftp -i -n') - norm 1Gdd -"" call Decho("executing: %!".g:netrw_ftp_cmd." -i -n") - exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n" - " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar) - if getline(1) !~ "^$" - echoerr getline(1) - let mod=1 - endif - bd! - - "......................................... - " scp: NetWrite Method #4 - elseif b:netrw_method == 4 " write with scp - if exists("g:netrw_port") && g:netrw_port != "" - let useport= " -P ".g:netrw_port - else - let useport= "" - endif - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -"" call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') - else -"" call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') - endif - let b:netrw_lastfile = choice - - "......................................... - " http: NetWrite Method #5 - elseif b:netrw_method == 5 - echoerr "***warning*** currently <netrw.vim> does not support writing using http:" - - "......................................... - " dav: NetWrite Method #6 - elseif b:netrw_method == 6 " write with cadaver -"" call Decho("write via cadaver (method #6)") - - " Construct execution string (four lines) which will be passed through filter - let netrw_fname= b:netrw_fname - new - set 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 - put ='user '.g:netrw_uid.' '.g:netrw_passwd - - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') - put ='put '.cygtmpfile.' '.netrw_fname - else + new + set ff=unix put ='put '.tmpfile.' '.netrw_fname + norm 1Gdd +" call Decho("executing: %!".g:netrw_sftp_cmd.' '.uid_machine) + exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine + bd! + let b:netrw_lastfile= choice + + "......................................... + else " Complain + echo "***warning*** unable to comply with your request<" . choice . ">" endif - - " perform cadaver operation: - norm 1Gdd -"" call Decho("executing: %!".g:netrw_dav_cmd) - exe g:netrw_silentxfer."%!".g:netrw_dav_cmd - bd! - let b:netrw_lastfile = choice - - "......................................... - " rsync: NetWrite Method #7 - elseif b:netrw_method == 7 " write with rsync - if g:netrw_cygwin == 1 - let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -"" call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') - else -"" call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') - endif - let b:netrw_lastfile = choice - - "......................................... - " scp: NetWrite Method #9 - elseif b:netrw_method == 9 " write with sftp - let netrw_fname= b:netrw_fname - if exists("g:netrw_uid") && ( g:netrw_uid != "" ) - let uid_machine = g:netrw_uid .'@'. g:netrw_machine - else - let uid_machine = g:netrw_machine - endif - new - set ff=unix - put ='put '.tmpfile.' '.netrw_fname - norm 1Gdd -"" call Decho("executing: %!".g:netrw_sftp_cmd.' '.uid_machine) - exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine - bd! - let b:netrw_lastfile= choice - - "......................................... - else " Complain - echo "***warning*** unable to comply with your request<" . choice . ">" + endwhile + + " cleanup +" call Decho("cleanup") + let result=delete(tmpfile) + call s:NetOptionRestore() + + if a:firstline == 1 && a:lastline == line("$") + let &mod= mod " usually equivalent to set nomod endif - endwhile - - " cleanup -"" call Decho("cleanup") - let result=delete(tmpfile) - call s:NetOptionRestore() - - if a:firstline == 1 && a:lastline == line("$") - let &mod= mod " usually equivalent to set nomod - endif - -"" call Dret("NetWrite") + +" call Dret("NetWrite") endfun " end of NetWrite @@ -892,133 +899,150 @@ endfun " g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted " with the requested remote hostname first. fun! <SID>NetList(dirname) -"" call Dfunc("NetList(dirname<".a:dirname.">)") +" call Dfunc("NetList(dirname<".a:dirname.">)") - " sanity maintenance - let dirname= a:dirname - if dirname !~ '/$' && (!exists("g:netrw_machine") || !exists("b:netlist_method") || !exists("b:netlist_path")) - let dirname= dirname."/" + " make this buffer modifiable + setlocal ma + + " analyze a:dirname and g:netrw_list_cmd + let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' + if a:dirname !~ dirpat + echoerr "NetList: I don't understand your dirname<".a:dirname.">" +" call Dret("NetList 0 : badly formatted dirname") + return 0 endif - set ma + let method = substitute(a:dirname,dirpat,'\1','') + let user = substitute(a:dirname,dirpat,'\2','') + let machine = substitute(a:dirname,dirpat,'\3','') + let path = substitute(a:dirname,dirpat,'\4','') + let fname = substitute(a:dirname,'^.*/\ze.','','') +" call Decho("set up method <".method .">") +" call Decho("set up user <".user .">") +" call Decho("set up machine<".machine.">") +" call Decho("set up path <".path .">") +" call Decho("set up fname <".fname .">") + + let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'') +" call Decho("set up listcmd<".listcmd.">") + + if fname =~ '@$' && fname !~ '^"' +" call Decho("attempt transfer of symlink as file") + call s:NetList(substitute(a:dirname,'@$','','e')) + redraw! +" call Dret("NetList 0 : symlink") + return 0 - if dirname !~ '/$' && dirname !~ '^"' + elseif fname !~ '/$' && fname !~ '^"' " looks like a regular file, attempt transfer -"" call Decho("attempt transfer with regular file<".dirname.">") -"" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">") - %d +" call Decho("attempt transfer as regular file<".a:dirname.">") " remove any filetype indicator from end of dirname, except for the - " "this is a directory" indicator (/) - let dirname= substitute(dirname,"[*=@|]$","","e") -"" call Decho("modified dirname<".dirname.">") + " "this is a directory" indicator (/). There shouldn't be one of those, + " anyway. + let path= substitute(path,'[*=@|]$','','e') +" call Decho("new path<".path.">") " remote-read the requested file into current buffer - let machine= g:netrw_machine - let method = b:netlist_method - let path = b:netlist_path enew! - exe "file ".method."://".machine."/".path.dirname - exe "doau BufReadPre ".dirname - silent call s:NetRead(method."://".machine."/".path.dirname) - exe "doau BufReadPost ".dirname + exe "file ".method."://".machine."/".path + exe "silent doau BufReadPre ".fname + silent call s:NetRead(method."://".machine."/".path) + exe "silent doau BufReadPost ".fname 1d - set nomod noma + set nomod - silent! unlet b:netlist_method - silent! unlet b:netlist_cmd - silent! unlet b:netlist_path -"" call Dret("NetList") - return +" call Dret("NetList 0 : file<".fname.">") + return 0 + endif - elseif dirname == './' - " refresh the directory list -"" call Decho("refresh directory listing") -"" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">") - %d + " --------------------------------------------------------------------- + " Perform Directory Listing: +" call Decho("Perform directory listing...") + " set up new buffer and map + let bufname = method.'://'.user.machine.'/'.path + let bufnamenr = bufnr(bufname) +" call Decho("bufname<".bufname."> bufnamenr=".bufnamenr) + if bufnamenr != -1 + " buffer already exists, switch to it! + exe "b ".bufnamenr + if line("$") >= 5 +" call Dret("NetList 1") + return 1 + endif + else + enew! + endif + setlocal bt=nofile bh=wipe nobl + exe 'file '.bufname + set bt=nowrite bh=hide nobl + nnoremap <buffer> <cr> :exe "norm! 0"<bar>call <SID>NetList(<SID>NetListChgDir(expand("%")))<cr> + setlocal ma + +" call Decho("executing: r! ".listcmd." '".path."'") + keepjumps put ='\" ==============================' + keepjumps put ='\" Netrw Remote Directory Listing' + keepjumps put ='\" '.bufname + keepjumps put ='\" ==============================' + exe "silent r! ".listcmd." '".path."'" + keepjumps 1d + set ft=netrwlist + if line("$") >= 5 + keepjumps silent 5,$s/^\(.*\)\([/@]\)$/ \2\1/e + keepjumps silent 5,$call s:NetSort() + keepjumps silent 5,$s/^ \(.\)\(.*\)$/\2\1/e + keepjumps 5 + endif + let prvbuf= bufnr(bufname) + if prvbuf != -1 + exe "silent! b ".prvbuf + endif - elseif dirname == '../' - " go up one directory + setlocal noma nomod - if b:netlist_path !~ '/' && strlen(b:netlist_path) > 0 - " go to top (rltv) directory -"" call Decho("go up one directory : 1 path<".b:netlist_path.">") - let b:netlist_path= "" +" call Dret("NetList 1") + return 1 +endfun - elseif b:netlist_path !~ '^[./]\+$' && strlen(b:netlist_path) > 0 - " remove a directory from the netlist_path -"" call Decho("go up one directory : 2 path<".b:netlist_path.">") - if b:netlist_path =~ '^[^/]*/$' - let b:netlist_path= "" - else - let b:netlist_path= substitute(b:netlist_path,'^\(.*/\)[^/]*/$','\1','') - endif +" --------------------------------------------------------------------- +" NetListCombine: +fun! <SID>NetListChgDir(dirname) + let newdir= expand("<cWORD>") +" call Dfunc("NetListChgDir(dirname<".a:dirname.">) newdir<".newdir.">") - else - " append ../ -"" call Decho("go up one directory : 3 path<".b:netlist_path.">") - let b:netlist_path= b:netlist_path.'../' - endif -"" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">") - %d + let dirname= a:dirname - elseif dirname !~ '^\w\+:' && dirname =~ '/$' - " go down one directory -"" call Decho("go down one directory<".dirname.">") - let b:netlist_path=b:netlist_path.dirname -"" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">") + if newdir !~ '/$' + " handling a file + let dirname= dirname.newdir +" call Decho("handling a file: dirname<".dirname.">") + + elseif newdir == './' + " refresh the directory list +" call Decho("refresh directory listing") %d - else - " normal initial directory listing -"" call Decho("normal initial directory listing") + elseif newdir == '../' + " go up one directory + let trailer= substitute(a:dirname,'^\(\w\+://\%(\w\+@\)\=\w\+/\)\(.*\)$','\2','') - let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',g:netrw_machine,'') - let method = substitute(dirname,'^\(\w\+\):.*$','\1','') - let fname = b:netrw_fname -"" call Decho("set up listcmd<".listcmd.">") -"" call Decho("set up method <".method.">") -"" call Decho("set up fname <".fname.">") + if trailer =~ '^\%(\.\./\)*$' + " tack on a ../" + let dirname= dirname.'../' - " set up window - if &mod == 1 - wincmd s - endif - enew! - if v:version >= 602 - setlocal bh=wipe + else + " strip off a directory name from dirname + let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','') endif - - " set up buffer-local variables - let b:netlist_method = method - let b:netlist_cmd = listcmd - let b:netlist_path = fname +" call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">") - " set up buffer-local map - nnoremap <buffer> <cr> :call <SID>NetList(expand("<cWORD>"))<cr> - -"" call Decho("netlist method<".b:netlist_method."> cmd<".b:netlist_cmd."> path<".b:netlist_path.">") - endif - -"" call Decho("executing: r! ".b:netlist_cmd." '".b:netlist_path."'") - put ='\" ==============================' - put ='\" Netrw Remote Directory Listing' - put ='\" '.g:netrw_machine.':'.b:netlist_path - put ='\" ==============================' - exe "silent r! ".b:netlist_cmd." '".b:netlist_path."'" - 1d - set ft=netrwlist - silent 5,$s/^\(.*\)\/$/ \1/e - silent 5,$call s:NetSort() - silent 5,$s/^ \(.*\)$/\1\//e - 5 - exe 'file ['.g:netrw_machine.':'.b:netlist_path.']' - if v:version >= 602 - setlocal nomod bh=wipe bt=nofile nobl noma else - setlocal nomod + " go down one directory + let dirname= dirname.newdir +" call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">") endif -"" call Dret("NetList") +" call Dret("NetListChgDir <".dirname.">") + return dirname endfun " ------------------------------------------------------------------------ @@ -1033,183 +1057,183 @@ endfun " 8: fetch " 9: sftp fun! s:NetMethod(choice) " globals: method machine id passwd fname -"" call Dfunc("NetMethod(a:choice<".a:choice.">)") - - " initialization - let b:netrw_method = 0 - let g:netrw_machine = "" - let b:netrw_fname = "" - let g:netrw_port = "" - - " 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 - " rcpurm : rcp://[user@]host/filename Use rcp - " rcphf : [user@]host:filename Use rcp - " scpurm : scp://[user@]host[[#:]port]/filename Use scp - " httpurm : http://[user@]host/filename Use wget - " davurm : dav://host[:port]/path Use cadaver - " rsyncurm : rsync://host[:port]/path Use rsync - " fetchurm : fetch://[user@]host[:http]/filename Use fetch (defaults to ftp, override for http) - " sftpurm : sftp://[user@]host/filename Use scp - let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$' - let mf = '^\(\S\+\)\s\+\(\S\+\)$' - let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$' - let rcpurm = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$' - let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$' - let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$' - let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$' - let davurm = '^dav://\([^/]\{-}\)/\(.*\)\=$' - let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$' - let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$' - let sftpurm = '^sftp://\([^/]\{-}\)/\(.*\)\=$' - -"" call Decho("determine method:") - " Determine Method - " rcp://user@hostname/...path-to-file - if match(a:choice,rcpurm) == 0 -"" call Decho("rcp://...") - let b:netrw_method = 1 - let userid = substitute(a:choice,rcpurm,'\2',"") - let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"") - let b:netrw_fname = substitute(a:choice,rcpurm,'\4',"") - if userid != "" - let g:netrw_uid= userid - endif - - " scp://user@hostname/...path-to-file - elseif match(a:choice,scpurm) == 0 -"" call Decho("scp://...") - let b:netrw_method = 4 - let g:netrw_machine= substitute(a:choice,scpurm,'\1',"") - let b:netrw_port = substitute(a:choice,scpurm,'\2',"") - let b:netrw_fname = substitute(a:choice,scpurm,'\3',"") - - " http://user@hostname/...path-to-file - elseif match(a:choice,httpurm) == 0 -"" call Decho("http://...") - let b:netrw_method = 5 - let g:netrw_machine= substitute(a:choice,httpurm,'\1',"") - let b:netrw_fname = substitute(a:choice,httpurm,'\2',"") - - " dav://hostname[:port]/..path-to-file.. - elseif match(a:choice,davurm) == 0 -"" call Decho("dav://...") - let b:netrw_method= 6 - let g:netrw_machine= substitute(a:choice,davurm,'\1',"") - let b:netrw_fname = substitute(a:choice,davurm,'\2',"") - - " rsync://user@hostname/...path-to-file - elseif match(a:choice,rsyncurm) == 0 -"" call Decho("rsync://...") - let b:netrw_method = 7 - let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"") - let b:netrw_fname = substitute(a:choice,rsyncurm,'\2',"") - - " ftp://[user@]hostname[[:#]port]/...path-to-file - elseif match(a:choice,ftpurm) == 0 -"" call Decho("ftp://...") - let userid = substitute(a:choice,ftpurm,'\2',"") - let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"") - let g:netrw_port = substitute(a:choice,ftpurm,'\4',"") - let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"") - if g:netrw_port != "" - let g:netrw_port = substitute(g:netrw_port,"[#:]","","") - endif - if userid != "" - let g:netrw_uid= userid - endif - if exists("g:netrw_uid") && exists("g:netrw_passwd") - let b:netrw_method = 3 - else - if filereadable(expand("$HOME/.netrc")) && !exists("g:netrw_ignorenetrc") - let b:netrw_method= 2 +" call Dfunc("NetMethod(a:choice<".a:choice.">)") + + " initialization + let b:netrw_method = 0 + let g:netrw_machine = "" + let b:netrw_fname = "" + let g:netrw_port = "" + + " 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 + " rcpurm : rcp://[user@]host/filename Use rcp + " rcphf : [user@]host:filename Use rcp + " scpurm : scp://[user@]host[[#:]port]/filename Use scp + " httpurm : http://[user@]host/filename Use wget + " davurm : dav://host[:port]/path Use cadaver + " rsyncurm : rsync://host[:port]/path Use rsync + " fetchurm : fetch://[user@]host[:http]/filename Use fetch (defaults to ftp, override for http) + " sftpurm : sftp://[user@]host/filename Use scp + let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$' + let mf = '^\(\S\+\)\s\+\(\S\+\)$' + let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$' + let rcpurm = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$' + let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$' + let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$' + let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$' + let davurm = '^dav://\([^/]\{-}\)/\(.*\)\=$' + let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$' + let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$' + let sftpurm = '^sftp://\([^/]\{-}\)/\(.*\)\=$' + +" call Decho("determine method:") + " Determine Method + " rcp://user@hostname/...path-to-file + if match(a:choice,rcpurm) == 0 +" call Decho("rcp://...") + let b:netrw_method = 1 + let userid = substitute(a:choice,rcpurm,'\2',"") + let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"") + let b:netrw_fname = substitute(a:choice,rcpurm,'\4',"") + if userid != "" + let g:netrw_uid= userid + endif + + " scp://user@hostname/...path-to-file + elseif match(a:choice,scpurm) == 0 +" call Decho("scp://...") + let b:netrw_method = 4 + let g:netrw_machine= substitute(a:choice,scpurm,'\1',"") + let b:netrw_port = substitute(a:choice,scpurm,'\2',"") + let b:netrw_fname = substitute(a:choice,scpurm,'\3',"") + + " http://user@hostname/...path-to-file + elseif match(a:choice,httpurm) == 0 +" call Decho("http://...") + let b:netrw_method = 5 + let g:netrw_machine= substitute(a:choice,httpurm,'\1',"") + let b:netrw_fname = substitute(a:choice,httpurm,'\2',"") + + " dav://hostname[:port]/..path-to-file.. + elseif match(a:choice,davurm) == 0 +" call Decho("dav://...") + let b:netrw_method= 6 + let g:netrw_machine= substitute(a:choice,davurm,'\1',"") + let b:netrw_fname = substitute(a:choice,davurm,'\2',"") + + " rsync://user@hostname/...path-to-file + elseif match(a:choice,rsyncurm) == 0 +" call Decho("rsync://...") + let b:netrw_method = 7 + let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"") + let b:netrw_fname = substitute(a:choice,rsyncurm,'\2',"") + + " ftp://[user@]hostname[[:#]port]/...path-to-file + elseif match(a:choice,ftpurm) == 0 +" call Decho("ftp://...") + let userid = substitute(a:choice,ftpurm,'\2',"") + let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"") + let g:netrw_port = substitute(a:choice,ftpurm,'\4',"") + let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"") + if g:netrw_port != "" + let g:netrw_port = substitute(g:netrw_port,"[#:]","","") + endif + if userid != "" + let g:netrw_uid= userid + endif + if exists("g:netrw_uid") && exists("g:netrw_passwd") + let b:netrw_method = 3 else - if !exists("g:netrw_uid") || g:netrw_uid == "" - call NetUserPass() - elseif !exists("g:netrw_passwd") || g:netrw_passwd == "" - call NetUserPass(g:netrw_uid) - " else just use current g:netrw_uid and g:netrw_passwd + if filereadable(expand("$HOME/.netrc")) && !exists("g:netrw_ignorenetrc") + let b:netrw_method= 2 + else + if !exists("g:netrw_uid") || g:netrw_uid == "" + call NetUserPass() + elseif !exists("g:netrw_passwd") || g:netrw_passwd == "" + call NetUserPass(g:netrw_uid) + " else just use current g:netrw_uid and g:netrw_passwd + endif + let b:netrw_method= 3 endif - let b:netrw_method= 3 endif - endif - - elseif match(a:choice,fetchurm) == 0 -"" call Decho("fetch://...") - let b:netrw_method = 8 - let g:netrw_userid = substitute(a:choice,fetchurm,'\2',"") - let g:netrw_machine= substitute(a:choice,fetchurm,'\3',"") - let b:netrw_option = substitute(a:choice,fetchurm,'\4',"") - let b:netrw_fname = substitute(a:choice,fetchurm,'\5',"") - - " Issue an ftp : "machine id password [path/]filename" - elseif match(a:choice,mipf) == 0 -"" call Decho("(ftp) host id pass file") - 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 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") + + elseif match(a:choice,fetchurm) == 0 +" call Decho("fetch://...") + let b:netrw_method = 8 + let g:netrw_userid = substitute(a:choice,fetchurm,'\2',"") + let g:netrw_machine= substitute(a:choice,fetchurm,'\3',"") + let b:netrw_option = substitute(a:choice,fetchurm,'\4',"") + let b:netrw_fname = substitute(a:choice,fetchurm,'\5',"") + + " Issue an ftp : "machine id password [path/]filename" + elseif match(a:choice,mipf) == 0 +" call Decho("(ftp) host id pass file") let b:netrw_method = 3 - let g:netrw_machine = substitute(a:choice,mf,'\1',"") - let b:netrw_fname = substitute(a:choice,mf,'\2',"") - - elseif filereadable(expand("$HOME/.netrc")) - let b:netrw_method = 2 - let g:netrw_machine = substitute(a:choice,mf,'\1',"") - let b:netrw_fname = substitute(a:choice,mf,'\2',"") - endif - - " sftp://user@hostname/...path-to-file - elseif match(a:choice,sftpurm) == 0 -"" call Decho("sftp://...") - let b:netrw_method = 9 - let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"") - let b:netrw_fname = substitute(a:choice,sftpurm,'\2',"") - - " Issue an rcp: hostname:filename" (this one should be last) - elseif match(a:choice,rcphf) == 0 -"" call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">") - let b:netrw_method = 1 - let userid = substitute(a:choice,rcphf,'\2',"") - let g:netrw_machine= substitute(a:choice,rcphf,'\3',"") - let b:netrw_fname = substitute(a:choice,rcphf,'\4',"") -"" call Decho('\1<'.substitute(a:choice,rcphf,'\1',"").">") -"" call Decho('\2<'.substitute(a:choice,rcphf,'\2',"").">") -"" call Decho('\3<'.substitute(a:choice,rcphf,'\3',"").">") -"" call Decho('\4<'.substitute(a:choice,rcphf,'\4',"").">") - if userid != "" - let g:netrw_uid= userid - endif - if has("win32") - " don't let PCs try <.netrc> - 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 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") + let b:netrw_method = 3 + let g:netrw_machine = substitute(a:choice,mf,'\1',"") + let b:netrw_fname = substitute(a:choice,mf,'\2',"") + + elseif filereadable(expand("$HOME/.netrc")) + let b:netrw_method = 2 + let g:netrw_machine = substitute(a:choice,mf,'\1',"") + let b:netrw_fname = substitute(a:choice,mf,'\2',"") + endif + + " sftp://user@hostname/...path-to-file + elseif match(a:choice,sftpurm) == 0 +" call Decho("sftp://...") + let b:netrw_method = 9 + let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"") + let b:netrw_fname = substitute(a:choice,sftpurm,'\2',"") + + " Issue an rcp: hostname:filename" (this one should be last) + elseif match(a:choice,rcphf) == 0 +" call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">") + let b:netrw_method = 1 + let userid = substitute(a:choice,rcphf,'\2',"") + let g:netrw_machine= substitute(a:choice,rcphf,'\3',"") + let b:netrw_fname = substitute(a:choice,rcphf,'\4',"") +" call Decho('\1<'.substitute(a:choice,rcphf,'\1',"").">") +" call Decho('\2<'.substitute(a:choice,rcphf,'\2',"").">") +" call Decho('\3<'.substitute(a:choice,rcphf,'\3',"").">") +" call Decho('\4<'.substitute(a:choice,rcphf,'\4',"").">") + if userid != "" + let g:netrw_uid= userid + endif + if has("win32") + " don't let PCs try <.netrc> + let b:netrw_method = 3 + endif + + else + echoerr "***error*** cannot determine method" + let b:netrw_method = -1 endif - - else - echoerr "***error*** cannot determine method" - let b:netrw_method = -1 - endif - -"" call Decho("a:choice <".a:choice.">") -"" call Decho("b:netrw_method <".b:netrw_method.">") -"" call Decho("g:netrw_machine<".g:netrw_machine.">") -"" call Decho("g:netrw_port <".g:netrw_port.">") -"" 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.">") -"" endif "Decho -"" call Decho("b:netrw_fname <".b:netrw_fname.">") -"" call Dret("NetMethod") + +" call Decho("a:choice <".a:choice.">") +" call Decho("b:netrw_method <".b:netrw_method.">") +" call Decho("g:netrw_machine<".g:netrw_machine.">") +" call Decho("g:netrw_port <".g:netrw_port.">") +" 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.">") +" endif "Decho +" call Decho("b:netrw_fname <".b:netrw_fname.">") +" call Dret("NetMethod") endfun " end of NetMethod @@ -1222,83 +1246,83 @@ fun! NetUserPass(...) " get/set userid if a:0 == 0 -"" call Dfunc("NetUserPass(a:0<".a:0.">)") +" call Dfunc("NetUserPass(a:0<".a:0.">)") if !exists("g:netrw_uid") || g:netrw_uid == "" " via prompt let g:netrw_uid= input('Enter username: ') endif else " from command line -"" call Dfunc("NetUserPass(a:1<".a:1.">) {") +" call Dfunc("NetUserPass(a:1<".a:1.">) {") let g:netrw_uid= a:1 endif " get password if a:0 <= 1 " via prompt -"" call Decho("a:0=".a:0." case <=1:") +" call Decho("a:0=".a:0." case <=1:") let g:netrw_passwd= inputsecret("Enter Password: ") else " from command line -"" call Decho("a:0=".a:0." case >1: a:2<".a:2.">") +" call Decho("a:0=".a:0." case >1: a:2<".a:2.">") let g:netrw_passwd=a:2 endif -"" call Dret("NetUserPass") +" call Dret("NetUserPass") endfun " end NetUserPass " ------------------------------------------------------------------------ " NetOptionSave: save options and set to "standard" form {{{1 fun!s:NetOptionSave() -"" call Dfunc("NetOptionSave()") - - " Get Temporary Filename - let s:aikeep = &ai - let s:cinkeep = &cin - let s:cinokeep = &cino - let s:comkeep = &com - let s:cpokeep = &cpo - let s:dirkeep = getcwd() - let s:gdkeep = &gd - let s:twkeep = &tw - set cino = - set com = - set cpo -=aA - set nocin noai - set tw =0 - if has("win32") && !has("win95") - let s:swfkeep= &swf - set noswf -"" call Decho("setting s:swfkeep to <".&swf.">") - endif +" call Dfunc("NetOptionSave()") + + " Get Temporary Filename + let s:aikeep = &ai + let s:cinkeep = &cin + let s:cinokeep = &cino + let s:comkeep = &com + let s:cpokeep = &cpo + let s:dirkeep = getcwd() + let s:gdkeep = &gd + let s:twkeep = &tw + set cino = + set com = + set cpo -=aA + set nocin noai + set tw =0 + if has("win32") && !has("win95") + let s:swfkeep= &swf + set noswf +" call Decho("setting s:swfkeep to <".&swf.">") + endif -"" call Dret("NetOptionSave") +" call Dret("NetOptionSave") endfun " ------------------------------------------------------------------------ " NetOptionRestore: restore options {{{1 fun! s:NetOptionRestore() -"" call Dfunc("NetOptionRestore()") - - let &ai = s:aikeep - let &cin = s:cinkeep - let &cino = s:cinokeep - let &com = s:comkeep - let &cpo = s:cpokeep - exe "lcd ".s:dirkeep - let &gd = s:gdkeep - let &tw = s:twkeep - if exists("s:swfkeep") - let &swf= s:swfkeep - unlet s:swfkeep - endif - unlet s:aikeep - unlet s:cinkeep - unlet s:cinokeep - unlet s:comkeep - unlet s:cpokeep - unlet s:gdkeep - unlet s:twkeep - unlet s:dirkeep - -"" call Dret("NetOptionRestore") +" call Dfunc("NetOptionRestore()") + + let &ai = s:aikeep + let &cin = s:cinkeep + let &cino = s:cinokeep + let &com = s:comkeep + let &cpo = s:cpokeep + exe "lcd ".s:dirkeep + let &gd = s:gdkeep + let &tw = s:twkeep + if exists("s:swfkeep") + let &swf= s:swfkeep + unlet s:swfkeep + endif + unlet s:aikeep + unlet s:cinkeep + unlet s:cinokeep + unlet s:comkeep + unlet s:cpokeep + unlet s:gdkeep + unlet s:twkeep + unlet s:dirkeep + +" call Dret("NetOptionRestore") endfun " ------------------------------------------------------------------------ @@ -1310,12 +1334,12 @@ endfun " at the end of the transfer. if has("win95") && g:netrw_win95ftp fun! NetReadFixup(method, line1, line2) -"" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") +" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")") if method == 3 " ftp (no <.netrc>) let fourblanklines= line2 - 3 silent fourblanklines.",".line2."g/^\s*/d" endif -"" call Dret("NetReadFixup") +" call Dret("NetReadFixup") endfun endif @@ -1340,8 +1364,8 @@ fun! <SID>NetSort() range endwhile " do insert if lo < i - exec i.'d_' - call append(lo - 1, i_val) + exe 'keepjumps '.i.'d_' + keepjumps call append(lo - 1, i_val) endif let i = i + 1 endwhile diff --git a/runtime/syntax/logtalk.vim b/runtime/syntax/logtalk.vim index b8218da3e..3cc368d18 100644 --- a/runtime/syntax/logtalk.vim +++ b/runtime/syntax/logtalk.vim @@ -2,7 +2,7 @@ " " Language: Logtalk " Maintainer: Paulo Moura <pmoura@logtalk.org> -" Last Change: 2004 May 16 +" Last Change: 2004 June 1 " Quit when a syntax file was already loaded: @@ -55,9 +55,7 @@ syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- cat " Logtalk closing entity directives -syn match logtalkCloseEntityDir ":- end_object\." -syn match logtalkCloseEntityDir ":- end_protocol\." -syn match logtalkCloseEntityDir ":- end_category\." +syn match logtalkCloseEntityDir ":- end_\(object\|protocol\|category\)\." " Logtalk entity relations @@ -88,38 +86,24 @@ syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=log " Logtalk built-in predicates -syn match logtalkBuiltIn "\<current_object\ze(" -syn match logtalkBuiltIn "\<current_protocol\ze(" -syn match logtalkBuiltIn "\<current_category\ze(" +syn match logtalkBuiltIn "\<current_\(object\|protocol\|category\)\ze(" -syn match logtalkBuiltIn "\<create_object\ze(" -syn match logtalkBuiltIn "\<create_protocol\ze(" -syn match logtalkBuiltIn "\<create_category\ze(" +syn match logtalkBuiltIn "\<create_\(object\|protocol\|category\)\ze(" -syn match logtalkBuiltIn "\<object_property\ze(" -syn match logtalkBuiltIn "\<protocol_property\ze(" -syn match logtalkBuiltIn "\<category_property\ze(" +syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze(" -syn match logtalkBuiltIn "\<abolish_object\ze(" -syn match logtalkBuiltIn "\<abolish_protocol\ze(" -syn match logtalkBuiltIn "\<abolish_category\ze(" +syn match logtalkBuiltIn "\<abolish_\(object\|protocol\|category\)\ze(" -syn match logtalkBuiltIn "\<extends_object\ze(" -syn match logtalkBuiltIn "\<extends_protocol\ze(" -syn match logtalkBuiltIn "\<implements_protocol\ze(" -syn match logtalkBuiltIn "\<instantiates_class\ze(" -syn match logtalkBuiltIn "\<specializes_class\ze(" -syn match logtalkBuiltIn "\<imports_category\ze(" +syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze(" +syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze(" +syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze(" -syn match logtalkBuiltIn "\<abolish_events\ze(" +syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze(" syn match logtalkBuiltIn "\<current_event\ze(" -syn match logtalkBuiltIn "\<define_events\ze(" -syn match logtalkBuiltIn "\<current_logtalk_flag\ze(" -syn match logtalkBuiltIn "\<set_logtalk_flag\ze(" +syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze(" -syn match logtalkBuiltIn "\<logtalk_compile\ze(" -syn match logtalkBuiltIn "\<logtalk_load\ze(" +syn match logtalkBuiltIn "\<logtalk_\(compile\|load\)\ze(" syn match logtalkBuiltIn "\<forall\ze(" syn match logtalkBuiltIn "\<retractall\ze(" @@ -128,24 +112,20 @@ syn match logtalkBuiltIn "\<retractall\ze(" " Logtalk built-in methods syn match logtalkBuiltInMethod "\<parameter\ze(" -syn match logtalkBuiltInMethod "\<self\ze(" -syn match logtalkBuiltInMethod "\<sender\ze(" +syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze(" syn match logtalkBuiltInMethod "\<this\ze(" syn match logtalkBuiltInMethod "\<current_predicate\ze(" syn match logtalkBuiltInMethod "\<predicate_property\ze(" syn match logtalkBuiltInMethod "\<abolish\ze(" -syn match logtalkBuiltInMethod "\<asserta\ze(" -syn match logtalkBuiltInMethod "\<assertz\ze(" +syn match logtalkBuiltInMethod "\<assert\(a\|z\)\ze(" syn match logtalkBuiltInMethod "\<clause\ze(" syn match logtalkBuiltInMethod "\<retract\ze(" syn match logtalkBuiltInMethod "\<retractall\ze(" -syn match logtalkBuiltInMethod "\<bagof\ze(" -syn match logtalkBuiltInMethod "\<findall\ze(" -syn match logtalkBuiltInMethod "\<forall\ze(" -syn match logtalkBuiltInMethod "\<setof\ze(" +syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze(" +syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze(" syn match logtalkBuiltInMethod "\<before\ze(" syn match logtalkBuiltInMethod "\<after\ze(" @@ -163,13 +143,12 @@ syn match logtalkOperator "@" syn match logtalkKeyword "\<true\>" syn match logtalkKeyword "\<fail\>" -syn match logtalkKeyword "\<call\ze(" +syn match logtalkKeyword "\<ca\(ll\|tch\)\ze(" syn match logtalkOperator "!" -syn match logtalkOperator "," +" syn match logtalkOperator "," syn match logtalkOperator ";" syn match logtalkOperator "-->" syn match logtalkOperator "->" -syn match logtalkKeyword "\<catch\ze(" syn match logtalkKeyword "\<throw\ze(" @@ -188,8 +167,7 @@ syn match logtalkKeyword "\<integer\ze(" syn match logtalkKeyword "\<float\ze(" syn match logtalkKeyword "\<atomic\ze(" syn match logtalkKeyword "\<compound\ze(" -syn match logtalkKeyword "\<nonvar\ze(" -syn match logtalkKeyword "\<number\ze(" +syn match logtalkKeyword "\<n\(onvar\|umber\)\ze(" " Term comparison @@ -227,10 +205,8 @@ syn match logtalkOperator ">=" " Stream selection and control -syn match logtalkKeyword "\<current_input\ze(" -syn match logtalkKeyword "\<current_output\ze(" -syn match logtalkKeyword "\<set_input\ze(" -syn match logtalkKeyword "\<set_output\ze(" +syn match logtalkKeyword "\<current_\(input\|output\)\ze(" +syn match logtalkKeyword "\<set_\(input\|output\)\ze(" syn match logtalkKeyword "\<open\ze(" syn match logtalkKeyword "\<close\ze(" syn match logtalkKeyword "\<flush_output\ze(" @@ -241,33 +217,20 @@ syn match logtalkKeyword "\<at_end_of_stream\>" syn match logtalkKeyword "\<set_stream_position\ze(" -" Character input/output +" Character and byte input/output -syn match logtalkKeyword "\<get_char\ze(" -syn match logtalkKeyword "\<get_code\ze(" -syn match logtalkKeyword "\<peek_char\ze(" -syn match logtalkKeyword "\<peek_code\ze(" -syn match logtalkKeyword "\<put_char\ze(" -syn match logtalkKeyword "\<put_code\ze(" +syn match logtalkKeyword "\<\(get\|peek\|put\)_\(char\|code\|byte\)\ze(" syn match logtalkKeyword "\<nl\ze(" syn match logtalkKeyword "\<nl\>" -" Byte input/output - -syn match logtalkKeyword "\<get_byte\ze(" -syn match logtalkKeyword "\<peek_byte\ze(" -syn match logtalkKeyword "\<put_byte\ze(" - - " Term input/output syn match logtalkKeyword "\<read_term\ze(" syn match logtalkKeyword "\<read\ze(" -syn match logtalkKeyword "\<write_term\ze(" syn match logtalkKeyword "\<write\ze(" syn match logtalkKeyword "\<writeq\ze(" -syn match logtalkKeyword "\<write_canonical\ze(" +syn match logtalkKeyword "\<write_\(canonical\|term\)\ze(" syn match logtalkKeyword "\<op\ze(" syn match logtalkKeyword "\<current_op\ze(" syn match logtalkKeyword "\<char_conversion\ze(" @@ -283,20 +246,15 @@ syn match logtalkKeyword "\<repeat\>" " Atomic term processing -syn match logtalkKeyword "\<atom_length\ze(" -syn match logtalkKeyword "\<atom_concat\ze(" +syn match logtalkKeyword "\<atom_\(length\|concat\|chars\|codes\)\ze(" syn match logtalkKeyword "\<sub_atom\ze(" -syn match logtalkKeyword "\<atom_chars\ze(" -syn match logtalkKeyword "\<atom_codes\ze(" syn match logtalkKeyword "\<char_code\ze(" -syn match logtalkKeyword "\<number_chars\ze(" -syn match logtalkKeyword "\<number_codes\ze(" +syn match logtalkKeyword "\<number_\(chars\|codes\)\ze(" " Implementation defined hooks functions -syn match logtalkKeyword "\<set_prolog_flag\ze(" -syn match logtalkKeyword "\<current_prolog_flag\ze(" +syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze(" syn match logtalkKeyword "\<halt\ze(" syn match logtalkKeyword "\<halt\>" @@ -314,8 +272,7 @@ syn match logtalkKeyword "\<mod\ze(" syn match logtalkKeyword "\<mod\>" syn match logtalkKeyword "\<abs\ze(" syn match logtalkKeyword "\<sign\ze(" -syn match logtalkKeyword "\<float_integer_part\ze(" -syn match logtalkKeyword "\<float_fractional_part\ze(" +syn match logtalkKeyword "\<float_\(integer\|fractional\)_part\ze(" syn match logtalkKeyword "\<float\ze(" syn match logtalkKeyword "\<floor\ze(" syn match logtalkKeyword "\<truncate\ze(" @@ -326,12 +283,11 @@ syn match logtalkKeyword "\<ceiling\ze(" " Other arithemtic functors syn match logtalkOperator "\*\*" -syn match logtalkKeyword "\<sin\ze(" +syn match logtalkKeyword "\<s\(in\|qrt\)\ze(" syn match logtalkKeyword "\<cos\ze(" syn match logtalkKeyword "\<atan\ze(" syn match logtalkKeyword "\<exp\ze(" syn match logtalkKeyword "\<log\ze(" -syn match logtalkKeyword "\<sqrt\ze(" " Bitwise functors diff --git a/runtime/syntax/texinfo.vim b/runtime/syntax/texinfo.vim index c7d5d8ec7..134fc6763 100644 --- a/runtime/syntax/texinfo.vim +++ b/runtime/syntax/texinfo.vim @@ -2,7 +2,7 @@ " Language: Texinfo (macro package for TeX) " Maintainer: Sandor Kopanyi <sandor.kopanyi@mailbox.hu> " URL: <-> -" Last Change: 2003 May 11 +" Last Change: 2004 Jun 23 " " the file follows the Texinfo manual structure; this file is based " on manual for Texinfo version 4.0, 28 September 1999 @@ -351,7 +351,7 @@ syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@oddheading" skip=" syn match texinfoAtCmd "@refill" -syn cluster texinfoAll contains=ALLBUT,{texinfoThisAtCmd,texinfoHFSpecialChar} +syn cluster texinfoAll contains=ALLBUT,texinfoThisAtCmd,texinfoHFSpecialChar syn cluster texinfoReducedAll contains=texinfoSpecialChar,texinfoBrcPrmAtCmd "============================================================================== " highlighting diff --git a/src/GvimExt/GvimExt.reg b/src/GvimExt/GvimExt.reg new file mode 100644 index 000000000..db49d24bd --- /dev/null +++ b/src/GvimExt/GvimExt.reg @@ -0,0 +1,20 @@ +REGEDIT4 + +[HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}] + @="Vim Shell Extension" +[HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32] + @="gvimext.dll" + "ThreadingModel"="Apartment" + +[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim] + @="{51EEE242-AD87-11d3-9C1E-0090278BBD99}" + +[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved] + "{51EEE242-AD87-11d3-9C1E-0090278BBD99}"="Vim Shell Extension" + +[HKEY_LOCAL_MACHINE\Software\Vim\Gvim] + "path"="gvim.exe" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0aa] + "DisplayName"="Vim 7.0aa: Edit with Vim popup menu entry" + "UninstallString"="uninstal.exe" diff --git a/src/GvimExt/Make_bc5.mak b/src/GvimExt/Make_bc5.mak new file mode 100644 index 000000000..363c6d608 --- /dev/null +++ b/src/GvimExt/Make_bc5.mak @@ -0,0 +1,43 @@ +### USEDLL no for statically linked version of run-time, yes for DLL runtime +### BOR path to root of Borland C install (c:\bc5) + +### (requires cc3250.dll be available in %PATH%) +!if ("$(USEDLL)"=="") +USEDLL = no +!endif + +### BOR: root of the BC installation +!if ("$(BOR)"=="") +BOR = c:\bc5 +!endif + +CC = $(BOR)\bin\Bcc32 +BRC = $(BOR)\bin\brc32 +LINK = $(BOR)\BIN\ILink32 +INCLUDE = $(BOR)\include;. +LIB = $(BOR)\lib + +!if ("$(USEDLL)"=="yes") +RT_DEF = -D_RTLDLL +RT_LIB = cw32i.lib +!else +RT_DEF = +RT_LIB = cw32.lib +!endif + + +all : gvimext.dll + +gvimext.obj : gvimext.cpp gvimext.h + $(CC) -tWD -I$(INCLUDE) -c -DFEAT_GETTEXT $(RT_DEF) -w- gvimext.cpp + +gvimext.res : gvimext.rc + $(BRC) -r gvimext.rc + +gvimext.dll : gvimext.obj gvimext.res + $(LINK) -L$(LIB) -aa gvimext.obj, gvimext.dll, , c0d32.obj $(RT_LIB) import32.lib, gvimext.def, gvimext.res + +clean : + -@del gvimext.obj + -@del gvimext.res + -@del gvimext.dll diff --git a/src/GvimExt/Make_ming.mak b/src/GvimExt/Make_ming.mak new file mode 100644 index 000000000..345625524 --- /dev/null +++ b/src/GvimExt/Make_ming.mak @@ -0,0 +1,63 @@ +# Project: gvimext +# Generates gvimext.dll with gcc. +# Can be used for Cygwin and MingW (MingW ignores -mno-cygwin) +# +# Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 +# Now it is allocated dymanically by the linker by evaluating all DLLs +# already loaded in memory. The binary image contains as well information +# for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29 + +# If cross-compiling set this to yes, else set it to no +CROSS = no +#CROSS = yes +# For the old MinGW 2.95 (the one you get e.g. with debian woody) +# set the following variable to yes and check if the executables are +# really named that way. +# If you have a newer MinGW or you are using cygwin set it to no and +# check also the executables +MINGWOLD = no + +ifeq ($(CROSS),yes) +ifeq ($(MINGWOLD),yes) +CXX = i586-mingw32msvc-g++ +CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks +WINDRES = i586-mingw32msvc-windres +else +CXX = i386-mingw32msvc-g++ +CXXFLAGS := -O2 -mno-cygwin +WINDRES = i386-mingw32msvc-windres +endif +else +CXX := g++.exe +WINDRES := windres.exe +CXXFLAGS := -O2 -mno-cygwin +endif +LIBS := -luuid +RES := gvimext.res +DEFFILE = gvimext_ming.def +OBJ := gvimext.o + +DLL := gvimext.dll + +.PHONY: all all-before all-after clean clean-custom + +all: all-before $(DLL) all-after + +$(DLL): $(OBJ) $(RES) $(DEFFILE) + $(CXX) -shared $(CXXFLAGS) -s -o $@ \ + -Wl,--enable-auto-image-base \ + -Wl,--enable-auto-import \ + -Wl,--whole-archive \ + $^ \ + -Wl,--no-whole-archive \ + $(LIBS) + +gvimext.o: gvimext.cpp + $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@ + +$(RES): gvimext_ming.rc + $(WINDRES) --input-format=rc --output-format=coff -DMING $? -o $@ + +clean: clean-custom + $(RM) $(OBJ) $(RES) $(DLL) + diff --git a/src/GvimExt/Makefile b/src/GvimExt/Makefile new file mode 100644 index 000000000..d1bd2d1da --- /dev/null +++ b/src/GvimExt/Makefile @@ -0,0 +1,35 @@ +# Makefile for GvimExt, using MSVC +# Options: +# DEBUG=yes Build debug version (for VC7 and maybe later) +# + +TARGETOS=BOTH +APPVER=4.0 + +!if "$(DEBUG)" != "yes" +NODEBUG = 1 +!endif + +!include <win32.mak> + +all: gvimext.dll + +gvimext.dll: gvimext.obj \ + gvimext.res + $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib + $(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp + +gvimext.obj: gvimext.h + +.cpp.obj: + $(cc) $(cflags) -DFEAT_GETTEXT $(cvarsdll) $*.cpp + +gvimext.res: gvimext.rc + $(rc) $(rcflags) $(rcvars) gvimext.rc + +clean: + - if exist gvimext.dll del gvimext.dll + - if exist gvimext.lib del gvimext.lib + - if exist gvimext.exp del gvimext.exp + - if exist gvimext.obj del gvimext.obj + - if exist gvimext.res del gvimext.res diff --git a/src/GvimExt/README.txt b/src/GvimExt/README.txt new file mode 100644 index 000000000..dd9fcba7d --- /dev/null +++ b/src/GvimExt/README.txt @@ -0,0 +1,94 @@ +README.txt for the gvimext DLL. + +Written by Tianmiao Hu. Edited by Bram Moolenaar. + + +INSTALLATION + +To install the "Edit with Vim" popup menu entry, it is recommended to use the +"install.exe" program. It will ask you a few questions and install the needed +registry entries. + +In special situations you might want to make changes by hand. Check these +items: +- The gvimext.dll, gvim.exe and uninstal.exe either need to be in the search + path, or you have to set the full path in the registry entries. You could + move the gvimext.dll to the "windows\system" or "windows\system32" + directory, where the other DLL files are. +- You can find the names of the used registry entries in the file + "GvimExt.reg". You can edit this file to add the paths. To install the + registry entries, right-click the gvimext.reg file and choose the "merge" + menu option. +- The registry key [HKEY_LOCAL_MACHINE\Software\Vim\Gvim] is used by the + gvimext.dll. The value "path" specifies the location of "gvim.exe". If + gvim.exe is in the search path, the path can be omitted. The value "lang" + can be used to set the language, for example "de" for German. If "lang" is + omitted, the language set for Windows will be used. + +It is the preferred method to keep gvim.exe with the runtime files, so that +Vim will find them (also the translated menu items are there). + + +UNINSTALLATION + +To uninstall the "Edit with Vim" popup menu entry, it is recommended to use +the "uninstal.exe" program. + +In special situations you might want to uninstall by hand: +- Open the registry by running regedit.exe. +- Delete all the keys listed in GvimExt.reg, except this one: + [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved] + For this key, only delete one value: + "{51EEE242-AD87-11d3-9C1E-0090278BBD99}"="Vim Shell Extension" +- Delete the gvimext.dll, if you want. You might need to reboot the machine + in order to remove this file. A quick way is to log off and re-login. + +Another method is by using the uninst.bat script: + uninst gvimext.inf +This batch file will remove all the registry keys from the system. Then you +can remove the gvimext.dll file. +Note: In order for this batch file to work, you must have two system files: +rundll32.exe and setupapi.dll. I believe you will have rundll32.exe in your +system. I know windows nt 4.0 with the service pack 4 has setupapi.dll. My +windows 95 has setupapi.dll. I find that the internet explorer 4.0 comes with +the setupapi.dll in file Ie4_5.cab. + +If you do encounter problems running this script, then probably you need to +modify the uninst.bat to suit to your system. Basically, you must find out +where are the locations for your rundll32.exe and setupapi.dll files. In +windows nt, both files are under c:\winnt\system32 directory. In my windows 95 +system, I got setupapi.dll at c:\windows\system and rundll32.exe at +c:\windows. So you might want to try something like: + rundll32.exe c:\windows\system\setupapi.dll,InstallHinfSection DefaultUninstall 128 %1 +where %1 can be substitued by gvimext.inf + + +THE SOURCE CODE + +I have provided the source code here in hope that gvim users around world can +further enhance this little dll. I believe the only thing you need to change +is gvimext.cpp file. The important two functions you need to look at are +QueryContextMenu and InvokeCommand. You can modify right-click menus in the +QueryContextMenu function and invoke gvim in the InvokeCommand function. Note +the selected files can be accessed from the DragQueryFile function. I am not +familiar with the invoking options for gvim. I believe there are some +improvements that can be made on that side. + +I use MS Visual C++ 6.0's nmake to make the gvimext.dll. I don't have a +chance to try earlier versions of MSVC. The files that are required for build +are: + gvimext.cpp + gvimext.h + gvimext.def + gvimext.rc + resource.h + Makefile + +To compile the DLL from the command line: + vcvars32 + nmake -f Makefile + +If you did something interesting to this dll, please let me know +@ tianmiao@acm.org. + +Happy vimming!!! diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp new file mode 100644 index 000000000..57fbf8119 --- /dev/null +++ b/src/GvimExt/gvimext.cpp @@ -0,0 +1,979 @@ +/* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved gvimext by Tianmiao Hu + * + * Do ":help uganda" in Vim to read copying and usage conditions. + * Do ":help credits" in Vim to see a list of people who contributed. + */ + +/* + * gvimext is a DLL which is used for the "Edit with Vim" context menu + * extension. It implements a MS defined interface with the Shell. + * + * If you have any questions or any suggestions concerning gvimext, please + * contact Tianmiao Hu: tianmiao@acm.org. + */ + +#include "gvimext.h" + +#ifdef __BORLANDC__ +# include <dir.h> +# ifndef _strnicmp +# define _strnicmp(a, b, c) strnicmp((a), (b), (c)) +# endif +#else +static char *searchpath(char *name); +#endif + +// Always get an error while putting the following stuff to the +// gvimext.h file as class protected variables, give up and +// declare them as global stuff +FORMATETC fmte = {CF_HDROP, + (DVTARGETDEVICE FAR *)NULL, + DVASPECT_CONTENT, + -1, + TYMED_HGLOBAL + }; +STGMEDIUM medium; +HRESULT hres = 0; +UINT cbFiles = 0; + +// +// Get the name of the Gvim executable to use, with the path. +// When "runtime" is non-zero, we were called to find the runtime directory. +// Returns the path in name[MAX_PATH]. It's empty when it fails. +// + static void +getGvimName(char *name, int runtime) +{ + HKEY keyhandle; + DWORD hlen; + + // Get the location of gvim from the registry. + name[0] = 0; + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0, + KEY_READ, &keyhandle) == ERROR_SUCCESS) + { + hlen = MAX_PATH; + if (RegQueryValueEx(keyhandle, "path", 0, NULL, (BYTE *)name, &hlen) + != ERROR_SUCCESS) + name[0] = 0; + else + name[hlen] = 0; + RegCloseKey(keyhandle); + } + + // Registry didn't work, use the search path. + if (name[0] == 0) + strcpy(name, searchpath("gvim.exe")); + + if (!runtime) + { + // Only when looking for the executable, not the runtime dir, we can + // search for the batch file or a name without a path. + if (name[0] == 0) + strcpy(name, searchpath("gvim.bat")); + if (name[0] == 0) + strcpy(name, "gvim"); // finds gvim.bat or gvim.exe + + // avoid that Vim tries to expand wildcards in the file names + strcat(name, " --literal"); + } +} + +// +// Get the Vim runtime directory into buf[MAX_PATH]. +// The result is empty when it failed. +// When it works, the path ends in a slash or backslash. +// + static void +getRuntimeDir(char *buf) +{ + int idx; + + getGvimName(buf, 1); + if (buf[0] != 0) + { + // When no path found, use the search path to expand it. + if (strchr(buf, '/') == NULL && strchr(buf, '\\') == NULL) + strcpy(buf, searchpath(buf)); + + // remove "gvim.exe" from the end + for (idx = strlen(buf) - 1; idx >= 0; idx--) + if (buf[idx] == '\\' || buf[idx] == '/') + { + buf[idx + 1] = 0; + break; + } + } +} + +// +// GETTEXT: translated messages and menu entries +// +#ifndef FEAT_GETTEXT +# define _(x) x +#else +# define _(x) (*dyn_libintl_gettext)(x) +# define VIMPACKAGE "vim" +# ifndef GETTEXT_DLL +# define GETTEXT_DLL "libintl.dll" +# endif + +// Dummy functions +static char *null_libintl_gettext(const char *); +static char *null_libintl_textdomain(const char *); +static char *null_libintl_bindtextdomain(const char *, const char *); +static int dyn_libintl_init(char *dir); +static void dyn_libintl_end(void); + +static HINSTANCE hLibintlDLL = 0; +static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext; +static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain; +static char *(*dyn_libintl_bindtextdomain)(const char *, const char *) + = null_libintl_bindtextdomain; + +// +// Attempt to load libintl.dll. If it doesn't work, use dummy functions. +// "dir" is the directory where the libintl.dll might be. +// Return 1 for success, 0 for failure. +// + static int +dyn_libintl_init(char *dir) +{ + int i; + static struct + { + char *name; + FARPROC *ptr; + } libintl_entry[] = + { + {"gettext", (FARPROC*)&dyn_libintl_gettext}, + {"textdomain", (FARPROC*)&dyn_libintl_textdomain}, + {"bindtextdomain", (FARPROC*)&dyn_libintl_bindtextdomain}, + {NULL, NULL} + }; + + // No need to initialize twice. + if (hLibintlDLL) + return 1; + + // Load gettext library, first try the Vim runtime directory, then search + // the path. + strcat(dir, GETTEXT_DLL); + hLibintlDLL = LoadLibrary(dir); + if (!hLibintlDLL) + { + hLibintlDLL = LoadLibrary(GETTEXT_DLL); + if (!hLibintlDLL) + return 0; + } + + // Get the addresses of the functions we need. + for (i = 0; libintl_entry[i].name != NULL + && libintl_entry[i].ptr != NULL; ++i) + { + if ((*libintl_entry[i].ptr = GetProcAddress(hLibintlDLL, + libintl_entry[i].name)) == NULL) + { + dyn_libintl_end(); + return 0; + } + } + return 1; +} + + static void +dyn_libintl_end(void) +{ + if (hLibintlDLL) + FreeLibrary(hLibintlDLL); + hLibintlDLL = NULL; + dyn_libintl_gettext = null_libintl_gettext; + dyn_libintl_textdomain = null_libintl_textdomain; + dyn_libintl_bindtextdomain = null_libintl_bindtextdomain; +} + + static char * +null_libintl_gettext(const char *msgid) +{ + return (char *)msgid; +} + + static char * +null_libintl_bindtextdomain(const char *domainname, const char *dirname) +{ + return NULL; +} + + static char * +null_libintl_textdomain(const char* domainname) +{ + return NULL; +} + +// +// Setup for translating strings. +// + static void +dyn_gettext_load(void) +{ + char szBuff[MAX_PATH]; + char szLang[MAX_PATH]; + DWORD len; + HKEY keyhandle; + int gotlang = 0; + + strcpy(szLang, "LANG="); + + // First try getting the language from the registry, this can be + // used to overrule the system language. + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0, + KEY_READ, &keyhandle) == ERROR_SUCCESS) + { + len = MAX_PATH; + if (RegQueryValueEx(keyhandle, "lang", 0, NULL, (BYTE*)szBuff, &len) + == ERROR_SUCCESS) + { + szBuff[len] = 0; + strcat(szLang, szBuff); + gotlang = 1; + } + RegCloseKey(keyhandle); + } + + if (!gotlang && getenv("LANG") == NULL) + { + // Get the language from the system. + // Could use LOCALE_SISO639LANGNAME, but it's not in Win95. + // LOCALE_SABBREVLANGNAME gives us three letters, like "enu", we use + // only the first two. + len = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, + (LPTSTR)szBuff, MAX_PATH); + if (len >= 2 && _strnicmp(szBuff, "en", 2) != 0) + { + // There are a few exceptions (probably more) + if (_strnicmp(szBuff, "cht", 3) == 0 + || _strnicmp(szBuff, "zht", 3) == 0) + strcpy(szBuff, "zh_TW"); + else if (_strnicmp(szBuff, "chs", 3) == 0 + || _strnicmp(szBuff, "zhc", 3) == 0) + strcpy(szBuff, "zh_CN"); + else if (_strnicmp(szBuff, "jp", 2) == 0) + strcpy(szBuff, "ja"); + else + szBuff[2] = 0; // truncate to two-letter code + strcat(szLang, szBuff); + gotlang = 1; + } + } + if (gotlang) + putenv(szLang); + + // Try to locate the runtime files. The path is used to find libintl.dll + // and the vim.mo files. + getRuntimeDir(szBuff); + if (szBuff[0] != 0) + { + len = strlen(szBuff); + if (dyn_libintl_init(szBuff)) + { + strcpy(szBuff + len, "lang"); + + (*dyn_libintl_bindtextdomain)(VIMPACKAGE, szBuff); + (*dyn_libintl_textdomain)(VIMPACKAGE); + } + } +} + + static void +dyn_gettext_free(void) +{ + dyn_libintl_end(); +} +#endif // FEAT_GETTEXT + +// +// Global variables +// +UINT g_cRefThisDll = 0; // Reference count of this DLL. +HINSTANCE g_hmodThisDll = NULL; // Handle to this DLL itself. + + +//--------------------------------------------------------------------------- +// DllMain +//--------------------------------------------------------------------------- +extern "C" int APIENTRY +DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) +{ + switch (dwReason) + { + case DLL_PROCESS_ATTACH: + // Extension DLL one-time initialization + g_hmodThisDll = hInstance; + break; + + case DLL_PROCESS_DETACH: + break; + } + + return 1; // ok +} + + static void +inc_cRefThisDLL() +{ +#ifdef FEAT_GETTEXT + if (g_cRefThisDll == 0) + dyn_gettext_load(); +#endif + InterlockedIncrement((LPLONG)&g_cRefThisDll); +} + + static void +dec_cRefThisDLL() +{ +#ifdef FEAT_GETTEXT + if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) + dyn_gettext_free(); +#else + InterlockedDecrement((LPLONG)&g_cRefThisDll); +#endif +} + +//--------------------------------------------------------------------------- +// DllCanUnloadNow +//--------------------------------------------------------------------------- + +STDAPI DllCanUnloadNow(void) +{ + return (g_cRefThisDll == 0 ? S_OK : S_FALSE); +} + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvOut) +{ + *ppvOut = NULL; + + if (IsEqualIID(rclsid, CLSID_ShellExtension)) + { + CShellExtClassFactory *pcf = new CShellExtClassFactory; + + return pcf->QueryInterface(riid, ppvOut); + } + + return CLASS_E_CLASSNOTAVAILABLE; +} + +CShellExtClassFactory::CShellExtClassFactory() +{ + m_cRef = 0L; + + inc_cRefThisDLL(); +} + +CShellExtClassFactory::~CShellExtClassFactory() +{ + dec_cRefThisDLL(); +} + +STDMETHODIMP CShellExtClassFactory::QueryInterface(REFIID riid, + LPVOID FAR *ppv) +{ + *ppv = NULL; + + // Any interface on this object is the object pointer + + if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) + { + *ppv = (LPCLASSFACTORY)this; + + AddRef(); + + return NOERROR; + } + + return E_NOINTERFACE; +} + +STDMETHODIMP_(ULONG) CShellExtClassFactory::AddRef() +{ + return InterlockedIncrement((LPLONG)&m_cRef); +} + +STDMETHODIMP_(ULONG) CShellExtClassFactory::Release() +{ + if (InterlockedDecrement((LPLONG)&m_cRef)) + return m_cRef; + + delete this; + + return 0L; +} + +STDMETHODIMP CShellExtClassFactory::CreateInstance(LPUNKNOWN pUnkOuter, + REFIID riid, + LPVOID *ppvObj) +{ + *ppvObj = NULL; + + // Shell extensions typically don't support aggregation (inheritance) + + if (pUnkOuter) + return CLASS_E_NOAGGREGATION; + + // Create the main shell extension object. The shell will then call + // QueryInterface with IID_IShellExtInit--this is how shell extensions are + // initialized. + + LPCSHELLEXT pShellExt = new CShellExt(); //Create the CShellExt object + + if (NULL == pShellExt) + return E_OUTOFMEMORY; + + return pShellExt->QueryInterface(riid, ppvObj); +} + + +STDMETHODIMP CShellExtClassFactory::LockServer(BOOL fLock) +{ + return NOERROR; +} + +// *********************** CShellExt ************************* +CShellExt::CShellExt() +{ + m_cRef = 0L; + m_pDataObj = NULL; + + inc_cRefThisDLL(); +} + +CShellExt::~CShellExt() +{ + if (m_pDataObj) + m_pDataObj->Release(); + + dec_cRefThisDLL(); +} + +STDMETHODIMP CShellExt::QueryInterface(REFIID riid, LPVOID FAR *ppv) +{ + *ppv = NULL; + + if (IsEqualIID(riid, IID_IShellExtInit) || IsEqualIID(riid, IID_IUnknown)) + { + *ppv = (LPSHELLEXTINIT)this; + } + else if (IsEqualIID(riid, IID_IContextMenu)) + { + *ppv = (LPCONTEXTMENU)this; + } + + if (*ppv) + { + AddRef(); + + return NOERROR; + } + + return E_NOINTERFACE; +} + +STDMETHODIMP_(ULONG) CShellExt::AddRef() +{ + return InterlockedIncrement((LPLONG)&m_cRef); +} + +STDMETHODIMP_(ULONG) CShellExt::Release() +{ + + if (InterlockedDecrement((LPLONG)&m_cRef)) + return m_cRef; + + delete this; + + return 0L; +} + + +// +// FUNCTION: CShellExt::Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY) +// +// PURPOSE: Called by the shell when initializing a context menu or property +// sheet extension. +// +// PARAMETERS: +// pIDFolder - Specifies the parent folder +// pDataObj - Spefifies the set of items selected in that folder. +// hRegKey - Specifies the type of the focused item in the selection. +// +// RETURN VALUE: +// +// NOERROR in all cases. +// +// COMMENTS: Note that at the time this function is called, we don't know +// (or care) what type of shell extension is being initialized. +// It could be a context menu or a property sheet. +// + +STDMETHODIMP CShellExt::Initialize(LPCITEMIDLIST pIDFolder, + LPDATAOBJECT pDataObj, + HKEY hRegKey) +{ + // Initialize can be called more than once + if (m_pDataObj) + m_pDataObj->Release(); + + // duplicate the object pointer and registry handle + + if (pDataObj) + { + m_pDataObj = pDataObj; + pDataObj->AddRef(); + } + + return NOERROR; +} + + +// +// FUNCTION: CShellExt::QueryContextMenu(HMENU, UINT, UINT, UINT, UINT) +// +// PURPOSE: Called by the shell just before the context menu is displayed. +// This is where you add your specific menu items. +// +// PARAMETERS: +// hMenu - Handle to the context menu +// indexMenu - Index of where to begin inserting menu items +// idCmdFirst - Lowest value for new menu ID's +// idCmtLast - Highest value for new menu ID's +// uFlags - Specifies the context of the menu event +// +// RETURN VALUE: +// +// +// COMMENTS: +// + +STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu, + UINT indexMenu, + UINT idCmdFirst, + UINT idCmdLast, + UINT uFlags) +{ + UINT idCmd = idCmdFirst; + + hres = m_pDataObj->GetData(&fmte, &medium); + if (medium.hGlobal) + cbFiles = DragQueryFile((HDROP)medium.hGlobal, (UINT)-1, 0, 0); + + // InsertMenu(hMenu, indexMenu++, MF_SEPARATOR|MF_BYPOSITION, 0, NULL); + + // Initialize m_cntOfHWnd to 0 + m_cntOfHWnd = 0; + // Retieve all the vim instances + EnumWindows(EnumWindowsProc, (LPARAM)this); + + if (cbFiles > 1) + { + InsertMenu(hMenu, + indexMenu++, + MF_STRING|MF_BYPOSITION, + idCmd++, + _("Edit with &multiple Vims")); + + InsertMenu(hMenu, + indexMenu++, + MF_STRING|MF_BYPOSITION, + idCmd++, + _("Edit with single &Vim")); + + if (cbFiles <= 4) + { + // Can edit up to 4 files in diff mode + InsertMenu(hMenu, + indexMenu++, + MF_STRING|MF_BYPOSITION, + idCmd++, + _("&Diff with Vim")); + m_edit_existing_off = 3; + } + else + m_edit_existing_off = 2; + + } + else + { + InsertMenu(hMenu, + indexMenu++, + MF_STRING|MF_BYPOSITION, + idCmd++, + _("Edit with &Vim")); + m_edit_existing_off = 1; + } + + // Now display all the vim instances + for (int i = 0; i < m_cntOfHWnd; i++) + { + char title[MAX_PATH]; + char temp[MAX_PATH]; + + // Obtain window title, continue if can not + if (GetWindowText(m_hWnd[i], title, MAX_PATH - 1) == 0) + continue; + // Truncate the title before the path, keep the file name + char *pos = strchr(title, '('); + if (pos != NULL) + { + if (pos > title && pos[-1] == ' ') + --pos; + *pos = 0; + } + // Now concatenate + strncpy(temp, _("Edit with existing Vim - &"), MAX_PATH - 1); + strncat(temp, title, MAX_PATH - 1); + InsertMenu(hMenu, + indexMenu++, + MF_STRING|MF_BYPOSITION, + idCmd++, + temp); + } + // InsertMenu(hMenu, indexMenu++, MF_SEPARATOR|MF_BYPOSITION, 0, NULL); + + // Must return number of menu items we added. + return ResultFromShort(idCmd-idCmdFirst); +} + +// +// FUNCTION: CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO) +// +// PURPOSE: Called by the shell after the user has selected on of the +// menu items that was added in QueryContextMenu(). +// +// PARAMETERS: +// lpcmi - Pointer to an CMINVOKECOMMANDINFO structure +// +// RETURN VALUE: +// +// +// COMMENTS: +// + +STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) +{ + HRESULT hr = E_INVALIDARG; + + // If HIWORD(lpcmi->lpVerb) then we have been called programmatically + // and lpVerb is a command that should be invoked. Otherwise, the shell + // has called us, and LOWORD(lpcmi->lpVerb) is the menu ID the user has + // selected. Actually, it's (menu ID - idCmdFirst) from QueryContextMenu(). + if (!HIWORD(lpcmi->lpVerb)) + { + UINT idCmd = LOWORD(lpcmi->lpVerb); + + if (idCmd >= m_edit_existing_off) + { + // Existing with vim instance + hr = PushToWindow(lpcmi->hwnd, + lpcmi->lpDirectory, + lpcmi->lpVerb, + lpcmi->lpParameters, + lpcmi->nShow, + idCmd - m_edit_existing_off); + } + else + { + switch (idCmd) + { + case 0: + hr = InvokeGvim(lpcmi->hwnd, + lpcmi->lpDirectory, + lpcmi->lpVerb, + lpcmi->lpParameters, + lpcmi->nShow); + break; + case 1: + hr = InvokeSingleGvim(lpcmi->hwnd, + lpcmi->lpDirectory, + lpcmi->lpVerb, + lpcmi->lpParameters, + lpcmi->nShow, + 0); + break; + case 2: + hr = InvokeSingleGvim(lpcmi->hwnd, + lpcmi->lpDirectory, + lpcmi->lpVerb, + lpcmi->lpParameters, + lpcmi->nShow, + 1); + break; + } + } + } + return hr; +} + +STDMETHODIMP CShellExt::PushToWindow(HWND hParent, + LPCSTR pszWorkingDir, + LPCSTR pszCmd, + LPCSTR pszParam, + int iShowCmd, + int idHWnd) +{ + HWND hWnd = m_hWnd[idHWnd]; + + // Show and bring vim instance to foreground + if (IsIconic(hWnd) != 0) + ShowWindow(hWnd, SW_RESTORE); + else + ShowWindow(hWnd, SW_SHOW); + SetForegroundWindow(hWnd); + + // Post the selected files to the vim instance + PostMessage(hWnd, WM_DROPFILES, (WPARAM)medium.hGlobal, 0); + + return NOERROR; +} + +STDMETHODIMP CShellExt::GetCommandString(UINT idCmd, + UINT uFlags, + UINT FAR *reserved, + LPSTR pszName, + UINT cchMax) +{ + if (uFlags == GCS_HELPTEXT && cchMax > 35) + lstrcpy(pszName, _("Edits the selected file(s) with Vim")); + + return NOERROR; +} + +BOOL CALLBACK CShellExt::EnumWindowsProc(HWND hWnd, LPARAM lParam) +{ + char temp[MAX_PATH]; + + // First do a bunch of check + // No invisible window + if (!IsWindowVisible(hWnd)) return TRUE; + // No child window ??? + // if (GetParent(hWnd)) return TRUE; + // Class name should be Vim, if failed to get class name, return + if (GetClassName(hWnd, temp, sizeof(temp)) == 0) + return TRUE; + // Compare class name to that of vim, if not, return + if (_strnicmp(temp, "vim", sizeof("vim")) != 0) + return TRUE; + // First check if the number of vim instance exceeds MAX_HWND + CShellExt *cs = (CShellExt*) lParam; + if (cs->m_cntOfHWnd >= MAX_HWND) return TRUE; + // Now we get the vim window, put it into some kind of array + cs->m_hWnd[cs->m_cntOfHWnd] = hWnd; + cs->m_cntOfHWnd ++; + + return TRUE; // continue enumeration (otherwise this would be false) +} + +#ifdef WIN32 +// This symbol is not defined in older versions of the SDK or Visual C++. + +#ifndef VER_PLATFORM_WIN32_WINDOWS +# define VER_PLATFORM_WIN32_WINDOWS 1 +#endif + +static DWORD g_PlatformId; + +// +// Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or +// VER_PLATFORM_WIN32_WINDOWS (Win95). +// + static void +PlatformId(void) +{ + static int done = FALSE; + + if (!done) + { + OSVERSIONINFO ovi; + + ovi.dwOSVersionInfoSize = sizeof(ovi); + GetVersionEx(&ovi); + + g_PlatformId = ovi.dwPlatformId; + done = TRUE; + } +} + +# ifndef __BORLANDC__ + static char * +searchpath(char *name) +{ + static char widename[2 * MAX_PATH]; + static char location[2 * MAX_PATH + 2]; + + // There appears to be a bug in FindExecutableA() on Windows NT. + // Use FindExecutableW() instead... + PlatformId(); + if (g_PlatformId == VER_PLATFORM_WIN32_NT) + { + MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)name, -1, + (LPWSTR)widename, MAX_PATH); + if (FindExecutableW((LPCWSTR)widename, (LPCWSTR)"", + (LPWSTR)location) > (HINSTANCE)32) + { + WideCharToMultiByte(CP_ACP, 0, (LPWSTR)location, -1, + (LPSTR)widename, 2 * MAX_PATH, NULL, NULL); + return widename; + } + } + else + { + if (FindExecutableA((LPCTSTR)name, (LPCTSTR)"", + (LPTSTR)location) > (HINSTANCE)32) + return location; + } + return ""; +} +# endif +#endif + +STDMETHODIMP CShellExt::InvokeGvim(HWND hParent, + LPCSTR pszWorkingDir, + LPCSTR pszCmd, + LPCSTR pszParam, + int iShowCmd) +{ + char m_szFileUserClickedOn[MAX_PATH]; + char cmdStr[MAX_PATH]; + UINT i; + + for (i = 0; i < cbFiles; i++) + { + DragQueryFile((HDROP)medium.hGlobal, + i, + m_szFileUserClickedOn, + sizeof(m_szFileUserClickedOn)); + + getGvimName(cmdStr, 0); + strcat(cmdStr, " \""); + + if ((strlen(cmdStr) + strlen(m_szFileUserClickedOn) + 2) < MAX_PATH) + { + strcat(cmdStr, m_szFileUserClickedOn); + strcat(cmdStr, "\""); + + STARTUPINFO si; + PROCESS_INFORMATION pi; + + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + + // Start the child process. + if (!CreateProcess(NULL, // No module name (use command line). + cmdStr, // Command line. + NULL, // Process handle not inheritable. + NULL, // Thread handle not inheritable. + FALSE, // Set handle inheritance to FALSE. + 0, // No creation flags. + NULL, // Use parent's environment block. + NULL, // Use parent's starting directory. + &si, // Pointer to STARTUPINFO structure. + &pi) // Pointer to PROCESS_INFORMATION structure. + ) + { + MessageBox( + hParent, + _("Error creating process: Check if gvim is in your path!"), + _("gvimext.dll error"), + MB_OK); + } + else + { + CloseHandle( pi.hProcess ); + CloseHandle( pi.hThread ); + } + } + else + { + MessageBox( + hParent, + _("Path length too long!"), + _("gvimext.dll error"), + MB_OK); + } + } + + return NOERROR; +} + + +STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, + LPCSTR pszWorkingDir, + LPCSTR pszCmd, + LPCSTR pszParam, + int iShowCmd, + int useDiff) +{ + char m_szFileUserClickedOn[MAX_PATH]; + char *cmdStr; + size_t cmdlen; + size_t len; + UINT i; + + cmdlen = MAX_PATH; + cmdStr = (char *)malloc(cmdlen); + getGvimName(cmdStr, 0); + if (useDiff) + strcat(cmdStr, " -d"); + for (i = 0; i < cbFiles; i++) + { + DragQueryFile((HDROP)medium.hGlobal, + i, + m_szFileUserClickedOn, + sizeof(m_szFileUserClickedOn)); + + len = strlen(cmdStr) + strlen(m_szFileUserClickedOn) + 4; + if (len > cmdlen) + { + cmdlen = len + MAX_PATH; + cmdStr = (char *)realloc(cmdStr, cmdlen); + } + strcat(cmdStr, " \""); + strcat(cmdStr, m_szFileUserClickedOn); + strcat(cmdStr, "\""); + } + + STARTUPINFO si; + PROCESS_INFORMATION pi; + + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + + // Start the child process. + if (!CreateProcess(NULL, // No module name (use command line). + cmdStr, // Command line. + NULL, // Process handle not inheritable. + NULL, // Thread handle not inheritable. + FALSE, // Set handle inheritance to FALSE. + 0, // No creation flags. + NULL, // Use parent's environment block. + NULL, // Use parent's starting directory. + &si, // Pointer to STARTUPINFO structure. + &pi) // Pointer to PROCESS_INFORMATION structure. + ) + { + MessageBox( + hParent, + _("Error creating process: Check if gvim is in your path!"), + _("gvimext.dll error"), + MB_OK); + } + else + { + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + } + + free(cmdStr); + + return NOERROR; +} diff --git a/src/GvimExt/gvimext.def b/src/GvimExt/gvimext.def new file mode 100644 index 000000000..459d10369 --- /dev/null +++ b/src/GvimExt/gvimext.def @@ -0,0 +1,8 @@ +;gvimdef.def : Declares the module parameters for the DLL. + +LIBRARY gvimext +DESCRIPTION 'Vim Shell Extension' + +EXPORTS + DllCanUnloadNow private + DllGetClassObject private diff --git a/src/GvimExt/gvimext.h b/src/GvimExt/gvimext.h new file mode 100644 index 000000000..5eb50048b --- /dev/null +++ b/src/GvimExt/gvimext.h @@ -0,0 +1,164 @@ +/* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved gvimext by Tianmiao Hu + * + * Do ":help uganda" in Vim to read copying and usage conditions. + * Do ":help credits" in Vim to see a list of people who contributed. + */ + +/* + * If you have any questions or any suggestions concerning gvimext, please + * contact Tianmiao Hu: tianmiao@acm.org. + */ + +#if !defined(AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_) +#define AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// Insert your headers here +// #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers + +//-------------------------------------------------------------- +// common user interface routines +// +// +//-------------------------------------------------------------- + +#ifndef STRICT +#define STRICT +#endif + +#define INC_OLE2 // WIN32, get ole2 from windows.h + +#include <windows.h> +#include <windowsx.h> +#include <shlobj.h> + +#define ResultFromShort(i) ResultFromScode(MAKE_SCODE(SEVERITY_SUCCESS, 0, (USHORT)(i))) + +// Initialize GUIDs (should be done only and at-least once per DLL/EXE) +// +#pragma data_seg(".text") +#define INITGUID +#include <initguid.h> +#include <shlguid.h> + +// +// The class ID of this Shell extension class. +// +// class id: {51EEE242-AD87-11d3-9C1E-0090278BBD99} +// +// +// NOTE!!! If you use this shell extension as a starting point, +// you MUST change the GUID below. Simply run UUIDGEN.EXE +// to generate a new GUID. +// + +// {51EEE242-AD87-11d3-9C1E-0090278BBD99} +// static const GUID <<name>> = +// { 0x51eee242, 0xad87, 0x11d3, { 0x9c, 0x1e, 0x0, 0x90, 0x27, 0x8b, 0xbd, 0x99 } }; +// +// + +// {51EEE242-AD87-11d3-9C1E-0090278BBD99} +// IMPLEMENT_OLECREATE(<<class>>, <<external_name>>, +// 0x51eee242, 0xad87, 0x11d3, 0x9c, 0x1e, 0x0, 0x90, 0x27, 0x8b, 0xbd, 0x99); +// + +// {51EEE242-AD87-11d3-9C1E-0090278BBD99} -- this is the registry format +DEFINE_GUID(CLSID_ShellExtension, 0x51eee242, 0xad87, 0x11d3, 0x9c, 0x1e, 0x0, 0x90, 0x27, 0x8b, 0xbd, 0x99); + +// this class factory object creates context menu handlers for windows 32 shell +class CShellExtClassFactory : public IClassFactory +{ +protected: + ULONG m_cRef; + +public: + CShellExtClassFactory(); + ~CShellExtClassFactory(); + + //IUnknown members + STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); + STDMETHODIMP_(ULONG) AddRef(); + STDMETHODIMP_(ULONG) Release(); + + //IClassFactory members + STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); + STDMETHODIMP LockServer(BOOL); + +}; +typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY; +#define MAX_HWND 100 + +// this is the actual OLE Shell context menu handler +class CShellExt : public IContextMenu, + IShellExtInit +{ +protected: + ULONG m_cRef; + LPDATAOBJECT m_pDataObj; + UINT m_edit_existing_off; + + // For some reason, this callback must be static + static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam); + + STDMETHODIMP PushToWindow(HWND hParent, + LPCSTR pszWorkingDir, + LPCSTR pszCmd, + LPCSTR pszParam, + int iShowCmd, + int idHWnd); + + STDMETHODIMP InvokeGvim(HWND hParent, + LPCSTR pszWorkingDir, + LPCSTR pszCmd, + LPCSTR pszParam, + int iShowCmd); + + STDMETHODIMP InvokeSingleGvim(HWND hParent, + LPCSTR pszWorkingDir, + LPCSTR pszCmd, + LPCSTR pszParam, + int iShowCmd, + int useDiff); + +public: + int m_cntOfHWnd; + HWND m_hWnd[MAX_HWND]; + CShellExt(); + ~CShellExt(); + + //IUnknown members + STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); + STDMETHODIMP_(ULONG) AddRef(); + STDMETHODIMP_(ULONG) Release(); + + //IShell members + STDMETHODIMP QueryContextMenu(HMENU hMenu, + UINT indexMenu, + UINT idCmdFirst, + UINT idCmdLast, + UINT uFlags); + + STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi); + + STDMETHODIMP GetCommandString(UINT idCmd, + UINT uFlags, + UINT FAR *reserved, + LPSTR pszName, + UINT cchMax); + + //IShellExtInit methods + STDMETHODIMP Initialize(LPCITEMIDLIST pIDFolder, + LPDATAOBJECT pDataObj, + HKEY hKeyID); +}; + +typedef CShellExt *LPCSHELLEXT; +#pragma data_seg() + +#endif diff --git a/src/GvimExt/gvimext.inf b/src/GvimExt/gvimext.inf new file mode 100644 index 000000000..8b45bb19e --- /dev/null +++ b/src/GvimExt/gvimext.inf @@ -0,0 +1,22 @@ +[Version] +Signature="$Windows NT$"" +Provider="Tianmiao" + +[Manufacture] + +[DefaultInstall] +AddReg=ThisDll.Add.Reg + +[DefaultUninstall] +DelReg=ThisDLL.Add.Reg + +[ThisDll.Add.Reg] +HKCR,CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99} +HKCR,CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32 +HKCR,*\shellex\ContextMenuHandlers\gvim +HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved",{51EEE242-AD87-11d3-9C1E-0090278BBD99} +HKLM,Software\Vim\Gvim +HKLM,"Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 6.0" + +[Strings] +ThisDll="gvimext.dll" diff --git a/src/GvimExt/gvimext.rc b/src/GvimExt/gvimext.rc new file mode 100644 index 000000000..19a5d0ca7 --- /dev/null +++ b/src/GvimExt/gvimext.rc @@ -0,0 +1,111 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#ifndef __BORLANDC__ +# include "afxres.h" +#endif + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x3L +#else + FILEFLAGS 0x2L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "Developed using COM architecture!\0" + VALUE "CompanyName", "Tianmiao Hu's Developer Studio\0" + VALUE "FileDescription", "A small project for the context menu of gvim!\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "gvim right-click menu extension\0" + VALUE "LegalCopyright", "Copyright © 1999 Tianmiao Hu\0" + VALUE "LegalTrademarks", "Tianmiao Hu's Gvim Context Menu Extension\0" + VALUE "OriginalFilename", "gvimext.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Tianmiao Hu's gvimext context menu extension\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/src/GvimExt/gvimext_ming.def b/src/GvimExt/gvimext_ming.def new file mode 100644 index 000000000..0b47d7dea --- /dev/null +++ b/src/GvimExt/gvimext_ming.def @@ -0,0 +1,10 @@ +;gvimdef_ming.def : Declares the module parameters for the DLL. +;The mingw environment doesn't know anything about private declarations +;Hence this is the same file as gvimext.def with private removed + +LIBRARY gvimext +DESCRIPTION 'Vim Shell Extension build with MinGW' + +EXPORTS + DllCanUnloadNow = DllCanUnloadNow@0 + DllGetClassObject = DllGetClassObject@12 diff --git a/src/GvimExt/gvimext_ming.rc b/src/GvimExt/gvimext_ming.rc new file mode 100644 index 000000000..6c6985409 --- /dev/null +++ b/src/GvimExt/gvimext_ming.rc @@ -0,0 +1,45 @@ +#include <windows.h> +#define xstr(x) str(x) +#define str(x) #x +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x3L +#else + FILEFLAGS 0x2L +#endif + FILEOS 0x4L + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +{ + BLOCK "StringFileInfo" + { + BLOCK "040904b0" + { + VALUE "Comments", "Developed using COM architecture!\0" + VALUE "CompanyName", "Tianmiao Hu's Developer Studio\0" + VALUE "FileDescription", "A small project for the context menu of gvim!\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "gvim right-click menu extension\0" + VALUE "LegalCopyright", "Copyright © 1999 Tianmiao Hu\0" + VALUE "LegalTrademarks", "Tianmiao Hu's Gvim Context Menu Extension\0" + VALUE "OriginalFilename", "gvimext.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Tianmiao Hu's gvimext context menu extension\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + +#if defined(__GNUC__) + VALUE "SpecialBuild", "Build With " "MingW " xstr(__GNUC__) "." xstr(__GNUC_MINOR__) "." xstr(__GNUC_PATCHLEVEL__) " on " __DATE__ " " __TIME__ "\0" +#else + VALUE "SpecialBuild", "Unknown compiler\0" + +#endif + } + } + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x409, 1200 + } +} diff --git a/src/GvimExt/resource.h b/src/GvimExt/resource.h new file mode 100644 index 000000000..8ddc823f8 --- /dev/null +++ b/src/GvimExt/resource.h @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by gvimext.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/src/GvimExt/uninst.bat b/src/GvimExt/uninst.bat new file mode 100644 index 000000000..71d14f65a --- /dev/null +++ b/src/GvimExt/uninst.bat @@ -0,0 +1 @@ +rundll32.exe setupapi,InstallHinfSection DefaultUninstall 128 %1 diff --git a/src/edit.c b/src/edit.c index 9a42f5ae8..7619a5555 100644 --- a/src/edit.c +++ b/src/edit.c @@ -4658,8 +4658,10 @@ stop_insert(end_insert_pos, esc) * insertion (or moving the cursor), but it's required when appending * a line and having it end in a space. But only do it when something * was actually inserted, otherwise undo won't work. */ - if (!ins_need_undo) + if (!ins_need_undo && has_format_option(FO_AUTO)) { + pos_T tpos = curwin->w_cursor; + /* When the cursor is at the end of the line after a space the * formatting will move it to the following word. Avoid that by * moving the cursor onto the space. */ @@ -4669,27 +4671,45 @@ stop_insert(end_insert_pos, esc) dec_cursor(); cc = gchar_cursor(); if (!vim_iswhite(cc)) - inc_cursor(); + curwin->w_cursor = tpos; } auto_format(TRUE, FALSE); - if (vim_iswhite(cc) && gchar_cursor() != NUL) - inc_cursor(); + if (vim_iswhite(cc)) + { + if (gchar_cursor() != NUL) + inc_cursor(); +#ifdef FEAT_VIRTUALEDIT + /* If the cursor is still at the same character, also keep + * the "coladd". */ + if (gchar_cursor() == NUL + && curwin->w_cursor.lnum == tpos.lnum + && curwin->w_cursor.col == tpos.col) + curwin->w_cursor.coladd = tpos.coladd; +#endif + } } /* If a space was inserted for auto-formatting, remove it now. */ check_auto_format(TRUE); /* If we just did an auto-indent, remove the white space from the end - * of the line, and put the cursor back. */ - if (did_ai && esc) + * of the line, and put the cursor back. + * Do this when ESC was used or moving the cursor up/down. */ + if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL + && curwin->w_cursor.lnum != end_insert_pos->lnum))) { + pos_T tpos = curwin->w_cursor; + + curwin->w_cursor = *end_insert_pos; if (gchar_cursor() == NUL && curwin->w_cursor.col > 0) --curwin->w_cursor.col; while (cc = gchar_cursor(), vim_iswhite(cc)) (void)del_char(TRUE); - if (cc != NUL) + if (curwin->w_cursor.lnum != tpos.lnum) + curwin->w_cursor = tpos; + else if (cc != NUL) ++curwin->w_cursor.col; /* put cursor back on the NUL */ #ifdef FEAT_VISUAL diff --git a/src/eval.c b/src/eval.c index 561857a37..ce7bf0999 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3784,6 +3784,8 @@ f_cursor(argvars, retvar) if (has_mbyte) mb_adjust_cursor(); #endif + + curwin->w_set_curswant = TRUE; } /* diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 3aa463338..67134820d 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -375,6 +375,7 @@ dbg_parsearg(arg) char_u *p = arg; char_u *q; struct debuggy *bp; + int here = FALSE; if (ga_grow(&dbg_breakp, 1) == FAIL) return FAIL; @@ -385,6 +386,16 @@ dbg_parsearg(arg) bp->dbg_type = DBG_FUNC; else if (STRNCMP(p, "file", 4) == 0) bp->dbg_type = DBG_FILE; + else if (STRNCMP(p, "here", 4) == 0) + { + if (curbuf->b_ffname == NULL) + { + EMSG(_(e_noname)); + return FAIL; + } + bp->dbg_type = DBG_FILE; + here = TRUE; + } else { EMSG2(_(e_invarg2), p); @@ -393,7 +404,9 @@ dbg_parsearg(arg) p = skipwhite(p + 4); /* Find optional line number. */ - if (VIM_ISDIGIT(*p)) + if (here) + bp->dbg_lnum = curwin->w_cursor.lnum; + else if (VIM_ISDIGIT(*p)) { bp->dbg_lnum = getdigits(&p); p = skipwhite(p); @@ -402,7 +415,8 @@ dbg_parsearg(arg) bp->dbg_lnum = 0; /* Find the function or file name. Don't accept a function name with (). */ - if (*p == NUL + if ((!here && *p == NUL) + || (here && *p != NUL) || (bp->dbg_type == DBG_FUNC && strstr((char *)p, "()") != NULL)) { EMSG2(_(e_invarg2), arg); @@ -411,6 +425,8 @@ dbg_parsearg(arg) if (bp->dbg_type == DBG_FUNC) bp->dbg_name = vim_strsave(p); + else if (here) + bp->dbg_name = vim_strsave(curbuf->b_ffname); else { /* Expand the file name in the same way as do_source(). This means diff --git a/src/ex_getln.c b/src/ex_getln.c index 3c242816b..f2e7f8cc6 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -5181,6 +5181,10 @@ ex_window() set_option_value((char_u *)"ft", 0L, (char_u *)"vim", OPT_LOCAL); } + /* Reset 'textwidth' after setting 'filetype' (the Vim filetype plugin + * sets 'textwidth' to 78). */ + curbuf->b_p_tw = 0; + /* Fill the buffer with the history. */ init_history(); if (hislen > 0) diff --git a/src/fileio.c b/src/fileio.c index a0947aa6d..ce5ce41e0 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3965,8 +3965,10 @@ restore_backup: * original and the backup file to be lost when halting the system right * after writing the file. That's because only the meta-data is * journalled. Syncing the file slows down the system, but assures it has - * been written to disk and we don't lose it. */ - if (fsync(fd) != 0) + * been written to disk and we don't lose it. + * For a device do try the fsync() but don't complain if it does not work + * (could be a pipe). */ + if (fsync(fd) != 0 && !device) { errmsg = (char_u *)_("E667: Fsync failed"); end = 0; diff --git a/src/getchar.c b/src/getchar.c index 3a8438357..f05054091 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -100,6 +100,7 @@ static int KeyNoremap = FALSE; /* remapping disabled */ #define RM_YES 0 /* tb_noremap: remap */ #define RM_NONE 1 /* tb_noremap: don't remap */ #define RM_SCRIPT 2 /* tb_noremap: remap local script mappings */ +#define RM_ABBR 4 /* tb_noremap: don't remap, do abbrev. */ /* typebuf.tb_buf has three parts: room in front (for result of mappings), the * middle for typeahead and room for new characters (which needs to be 3 * @@ -896,6 +897,8 @@ init_typebuf() * * If noremap is REMAP_YES, new string can be mapped again. * If noremap is REMAP_NONE, new string cannot be mapped again. + * If noremap is REMAP_SKIP, fist char of new string cannot be mapped again, + * but abbreviations are allowed. * If noremap is REMAP_SCRIPT, new string cannot be mapped again, except for * script-local mappings. * If noremap is > 0, that many characters of the new string cannot be mapped. @@ -993,6 +996,8 @@ ins_typebuf(str, noremap, offset, nottyped, silent) /* If noremap == REMAP_SCRIPT: do remap script-local mappings. */ if (noremap == REMAP_SCRIPT) val = RM_SCRIPT; + else if (noremap == REMAP_SKIP) + val = RM_ABBR; else val = RM_NONE; @@ -1004,7 +1009,9 @@ ins_typebuf(str, noremap, offset, nottyped, silent) * If noremap > 0: "noremap" characters are not remappable, the rest * mappable */ - if (noremap < 0) + if (noremap == REMAP_SKIP) + nrm = 1; + else if (noremap < 0) nrm = addlen; else nrm = noremap; @@ -1856,8 +1863,8 @@ vgetorpeek(advance) && (no_zero_mapping == 0 || c1 != '0') && (typebuf.tb_maplen == 0 || (p_remap - && typebuf.tb_noremap[typebuf.tb_off] - != RM_NONE)) + && (typebuf.tb_noremap[typebuf.tb_off] + & (RM_NONE|RM_ABBR)) == 0)) && !(p_paste && (State & (INSERT + CMDLINE))) && !(State == HITRETURN && (c1 == CAR || c1 == ' ')) && State != ASKMORE @@ -1973,7 +1980,7 @@ vgetorpeek(advance) * remapped, skip the entry. */ for (n = mlen; --n >= 0; ) - if (*s++ == RM_NONE) + if (*s++ & (RM_NONE|RM_ABBR)) break; if (n >= 0) continue; @@ -2132,7 +2139,8 @@ vgetorpeek(advance) + typebuf.tb_off, 1); } KeyNoremap = (typebuf.tb_noremap[ - typebuf.tb_off] != REMAP_YES); + typebuf.tb_off] + & (RM_NONE|RM_SCRIPT)); del_typebuf(1, 0); } break; /* got character, break for loop */ @@ -2233,7 +2241,8 @@ vgetorpeek(advance) /* * Insert the 'to' part in the typebuf.tb_buf. * If 'from' field is the same as the start of the - * 'to' field, don't remap the first character. + * 'to' field, don't remap the first character (but do + * allow abbreviations). * If m_noremap is set, don't remap the whole 'to' * part. */ @@ -2241,8 +2250,8 @@ vgetorpeek(advance) mp->m_noremap != REMAP_YES ? mp->m_noremap : STRNCMP(mp->m_str, mp->m_keys, - (size_t)keylen) - ? REMAP_YES : 1, + (size_t)keylen) != 0 + ? REMAP_YES : REMAP_SKIP, 0, TRUE, cmd_silent || mp->m_silent) == FAIL) { c = -1; diff --git a/src/misc1.c b/src/misc1.c index 0e0705dbd..6c5cb6ab2 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -4014,7 +4014,8 @@ fullpathcmp(s1, s2, checkname) } /* - * get the tail of a path: the file name. + * Get the tail of a path: the file name. + * Fail safe: never returns NULL. */ char_u * gettail(fname) diff --git a/src/option.c b/src/option.c index ca95cc0e0..fcbddeae8 100644 --- a/src/option.c +++ b/src/option.c @@ -3115,7 +3115,7 @@ set_init_3() * "-c" and "\"", but not for DJGPP, because it starts the shell without * command.com. And for Win32 we need to set p_sxq instead. */ - if (strstr((char *)p_sh, "sh") != NULL) + if (strstr((char *)gettail(p_sh), "sh") != NULL) { int idx3; diff --git a/src/option.h b/src/option.h index f3985e50e..1d2b83c2a 100644 --- a/src/option.h +++ b/src/option.h @@ -129,6 +129,7 @@ #define CPO_FNAMEW 'F' /* set file name for ":w file" */ #define CPO_GOTO1 'g' /* goto line 1 for ":edit" */ #define CPO_INTMOD 'i' /* interrupt a read makes buffer modified */ +#define CPO_INDENT 'I' /* remove auto-indent more often */ #define CPO_JOINSP 'j' /* only use two spaces for join after '.' */ #define CPO_ENDOFSENT 'J' /* need two spaces to detect end of sentence */ #define CPO_KEYCODE 'k' /* don't recognize raw key code in mappings */ @@ -158,7 +159,7 @@ #define CPO_STAR '*' /* ":*" means ":@" */ #define CPO_SPECI '<' /* don't recognize <> in mappings */ #define CPO_DEFAULT "aABceFs" -#define CPO_ALL "aAbBcCdDeEfFgijJkKlLmMnoOprRsStuvwWxy$!%*<" +#define CPO_ALL "aAbBcCdDeEfFgiIjJkKlLmMnoOprRsStuvwWxy$!%*<" /* characters for p_ww option: */ #define WW_ALL "bshl<>[],~" diff --git a/src/os_win32.c b/src/os_win32.c index 434362b11..da6fd8dac 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -1521,7 +1521,7 @@ theend: /* * Return TRUE if "name" is in $PATH. - * TODO: Should also check if it's really executable. + * TODO: Should somehow check if it's really executable. */ static int executable_exists(char *name) @@ -2556,7 +2556,43 @@ mch_writable(char_u *name) int mch_can_exe(char_u *name) { - return executable_exists((char *)name); + char_u buf[_MAX_PATH]; + int len = STRLEN(name); + char_u *p; + + if (len >= _MAX_PATH) /* safety check */ + return FALSE; + + /* If there already is an extension try using the name directly. Also do + * this with a Unix-shell like 'shell'. */ + if (vim_strchr(gettail(name), '.') != NULL + || strstr((char *)gettail(p_sh), "sh") != NULL) + if (executable_exists((char *)name)) + return TRUE; + + /* + * Loop over all extensions in $PATHEXT. + */ + STRNCPY(buf, name, _MAX_PATH); + p = mch_getenv("PATHEXT"); + if (p == NULL) + p = (char_u *)".com;.exe;.bat;.cmd"; + while (*p) + { + if (p[0] == '.' && (p[1] == NUL || p[1] == ';')) + { + /* A single "." means no extension is added. */ + buf[len] = NUL; + ++p; + if (*p) + ++p; + } + else + copy_option_part(&p, buf + len, _MAX_PATH - len, ";"); + if (executable_exists((char *)buf)) + return TRUE; + } + return FALSE; } #endif @@ -4659,14 +4695,14 @@ copy_infostreams(char_u *from, char_u *to) { streamname[len - 6] = 0; copy_substream(sh, &context, tow, streamname, - (long)sid.Size.LowPart); + (long)sid.Size.u.LowPart); } } /* Advance to the next stream. We might try seeking too far, * but BackupSeek() doesn't skip over stream borders, thus * that's OK. */ - (void)BackupSeek(sh, sid.Size.LowPart, sid.Size.HighPart, + (void)BackupSeek(sh, sid.Size.LowPart, sid.Size.u.HighPart, &lo, &hi, &context); } diff --git a/src/po/es.po b/src/po/es.po index 24fdec1bf..ed89984fa 100644 --- a/src/po/es.po +++ b/src/po/es.po @@ -8,10 +8,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Vim 6.3a.16 (Español)\n" -"Report-Msgid-Bugs-To: Alejandro López-Valencia <dradul@yahoo.com>\n" -"POT-Creation-Date: 2004-05-12 18:38-0500\n" -"PO-Revision-Date: 2004-05-12 20:34-0500\n" +"Project-Id-Version: Vim 6.3.7 (Español)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2004-06-23 20:35-0500\n" +"PO-Revision-Date: 2004-06-23 20:46-0500\n" "Last-Translator: Alejandro López-Valencia <dradul@yahoo.com>\n" "Language-Team: Alejandro López-Valencia <dradul@yahoo.com>\n" "MIME-Version: 1.0\n" @@ -26,172 +26,172 @@ msgstr "E82: No se puede asignar memoria para ningún «buffer», saliendo..." msgid "E83: Cannot allocate buffer, using other one..." msgstr "E83: No se puede asignar memoria para el «buffer», usando otro..." -#: buffer.c:805 +#: buffer.c:808 msgid "E515: No buffers were unloaded" msgstr "E515: No se descargó ningún «buffer»." -#: buffer.c:807 +#: buffer.c:810 msgid "E516: No buffers were deleted" msgstr "E516: No se borró ningún «buffer»." -#: buffer.c:809 +#: buffer.c:812 msgid "E517: No buffers were wiped out" msgstr "E517: No se eliminó ningún «buffer»." -#: buffer.c:817 +#: buffer.c:820 msgid "1 buffer unloaded" msgstr "Un «buffer» descargado." -#: buffer.c:819 +#: buffer.c:822 #, c-format msgid "%d buffers unloaded" msgstr "%d «buffers» descargados." -#: buffer.c:824 +#: buffer.c:827 msgid "1 buffer deleted" msgstr "Un «buffer» suprimido." -#: buffer.c:826 +#: buffer.c:829 #, c-format msgid "%d buffers deleted" msgstr "%d «buffers» suprimidos." -#: buffer.c:831 +#: buffer.c:834 msgid "1 buffer wiped out" msgstr "1 «buffer» eliminado." -#: buffer.c:833 +#: buffer.c:836 #, c-format msgid "%d buffers wiped out" msgstr "%d «buffers» eliminados." -#: buffer.c:894 +#: buffer.c:897 msgid "E84: No modified buffer found" msgstr "E84: No he encontrado ningún «buffer» modificado." #. back where we started, didn't find anything. -#: buffer.c:933 +#: buffer.c:936 msgid "E85: There is no listed buffer" msgstr "E85: No hay «buffers» en la lista." -#: buffer.c:945 +#: buffer.c:948 #, c-format msgid "E86: Buffer %ld does not exist" msgstr "E86: El «buffer» %ld no existe." -#: buffer.c:948 +#: buffer.c:951 msgid "E87: Cannot go beyond last buffer" msgstr "E87: No puedo ir más allá del último «buffer»." -#: buffer.c:950 +#: buffer.c:953 msgid "E88: Cannot go before first buffer" msgstr "E88: No puedo ir más atrás del primer buffer." -#: buffer.c:988 +#: buffer.c:991 #, c-format msgid "E89: No write since last change for buffer %ld (add ! to override)" msgstr "" "E89: No ha guardado el fichero desde el último cambio del «buffer» %ld " "(añada ! para forzar)." -#: buffer.c:1005 +#: buffer.c:1008 msgid "E90: Cannot unload last buffer" msgstr "E90: No se puede descargar el último buffer." -#: buffer.c:1538 +#: buffer.c:1544 msgid "W14: Warning: List of file names overflow" msgstr "W14: Advertencia: lista de nombres de ficheros demasiado larga." -#: buffer.c:1709 +#: buffer.c:1716 #, c-format msgid "E92: Buffer %ld not found" msgstr "E92: No se ha encontrado el buffer %ld" -#: buffer.c:1940 +#: buffer.c:1947 #, c-format msgid "E93: More than one match for %s" msgstr "E93: Más de una coincidencia con %s." -#: buffer.c:1942 +#: buffer.c:1949 #, c-format msgid "E94: No matching buffer for %s" msgstr "E94: No hay un buffer que coincida con %s." -#: buffer.c:2337 +#: buffer.c:2344 #, c-format msgid "line %ld" msgstr "línea %ld" -#: buffer.c:2420 +#: buffer.c:2429 msgid "E95: Buffer with this name already exists" msgstr "E95: Ya existe un buffer con este nombre." -#: buffer.c:2713 +#: buffer.c:2724 msgid " [Modified]" msgstr " [Modificado]" -#: buffer.c:2718 +#: buffer.c:2729 msgid "[Not edited]" msgstr "[Sin editar]" -#: buffer.c:2723 +#: buffer.c:2734 msgid "[New file]" msgstr "[Fichero nuevo]" -#: buffer.c:2724 +#: buffer.c:2735 msgid "[Read errors]" msgstr "[Errores de lectura]" -#: buffer.c:2726 fileio.c:2112 +#: buffer.c:2737 fileio.c:2124 msgid "[readonly]" msgstr "[Sólo lectura]" -#: buffer.c:2747 +#: buffer.c:2758 #, c-format msgid "1 line --%d%%--" msgstr "1 línea --%d%%--" -#: buffer.c:2749 +#: buffer.c:2760 #, c-format msgid "%ld lines --%d%%--" msgstr "%ld líneas --%d%%--" -#: buffer.c:2756 +#: buffer.c:2767 #, c-format msgid "line %ld of %ld --%d%%-- col " msgstr "línea %ld de %ld --%d%%-- col " -#: buffer.c:2864 +#: buffer.c:2875 msgid "[No file]" msgstr "[Sin fichero]" # must be a help buffer #. must be a help buffer -#: buffer.c:2904 +#: buffer.c:2915 msgid "help" msgstr "ayuda" -#: buffer.c:3463 screen.c:5075 +#: buffer.c:3474 screen.c:5079 msgid "[help]" msgstr "[ayuda]" -#: buffer.c:3495 screen.c:5081 +#: buffer.c:3506 screen.c:5085 msgid "[Preview]" msgstr "[Vista previa]" -#: buffer.c:3775 +#: buffer.c:3786 msgid "All" msgstr "Todo" -#: buffer.c:3775 +#: buffer.c:3786 msgid "Bot" msgstr "Final" -#: buffer.c:3777 +#: buffer.c:3788 msgid "Top" msgstr "Comienzo" -#: buffer.c:4523 +#: buffer.c:4536 msgid "" "\n" "# Buffer list:\n" @@ -199,15 +199,15 @@ msgstr "" "\n" "# Lista de «buffers»:\n" -#: buffer.c:4556 +#: buffer.c:4569 msgid "[Error List]" msgstr "[Lista de errores]" -#: buffer.c:4569 memline.c:1520 +#: buffer.c:4582 memline.c:1521 msgid "[No File]" msgstr "[Sin fichero]" -#: buffer.c:4882 +#: buffer.c:4895 msgid "" "\n" "--- Signs ---" @@ -215,12 +215,12 @@ msgstr "" "\n" "--- Signos ---" -#: buffer.c:4901 +#: buffer.c:4914 #, c-format msgid "Signs for %s:" msgstr "Signos para %s" -#: buffer.c:4907 +#: buffer.c:4920 #, c-format msgid " line=%ld id=%d name=%s" msgstr " línea=%ld id=%d nombre=%s" @@ -234,32 +234,32 @@ msgstr "E96: No puedo usar «diff» con más de %ld «buffers»." msgid "E97: Cannot create diffs" msgstr "E97: No puedo crear «diffs»." -#: diff.c:818 +#: diff.c:819 msgid "Patch file" msgstr "Fichero de parches." -#: diff.c:1069 +#: diff.c:1072 msgid "E98: Cannot read diff output" msgstr "E98: no puedo leer la salida de «diff»." -#: diff.c:1819 +#: diff.c:1822 msgid "E99: Current buffer is not in diff mode" msgstr "E99: El «buffer» actual no está en modo «diff»." -#: diff.c:1831 +#: diff.c:1834 msgid "E100: No other buffer in diff mode" msgstr "E100: Ningún otro «buffer» está en modo «diff»." -#: diff.c:1839 +#: diff.c:1842 msgid "E101: More than two buffers in diff mode, don't know which one to use" msgstr "E101: Más de dos «buffers» en modo «diff», no se cual usar." -#: diff.c:1862 +#: diff.c:1865 #, c-format msgid "E102: Can't find buffer \"%s\"" msgstr "E102: No puedo encontrar el «buffer» «%s»." -#: diff.c:1868 +#: diff.c:1871 #, c-format msgid "E103: Buffer \"%s\" is not in diff mode" msgstr "E103: El «buffer» «%s» no está en modo «diff»." @@ -274,7 +274,8 @@ msgstr "E544: No encontré el fichero «keymap»." #: digraph.c:2411 msgid "E105: Using :loadkeymap not in a sourced file" -msgstr "E105: «:loadkeymap» en un fichero que no contiene instrucciones ejecutables." +msgstr "" +"E105: «:loadkeymap» en un fichero que no contiene instrucciones ejecutables." #: edit.c:40 msgid " Keyword completion (^N^P)" @@ -481,7 +482,7 @@ msgstr "E120: Usando <SID> en un contexto que no es de «script»: %s." #. * this way has the compelling advantage that translations need not to #. * be touched at all. See below what 'ok' and 'ync' are used for. #. -#: eval.c:3687 gui.c:4382 gui_gtk.c:2059 +#: eval.c:3687 gui.c:4385 gui_gtk.c:2059 msgid "&Ok" msgstr "&Ok" @@ -506,124 +507,124 @@ msgstr "He llamado a «inputrestore()» más veces que a «inputsave()»." msgid "E655: Too many symbolic links (cycle?)" msgstr "E655: Hay demasiados enlaces symbólicos (¿referencia circular?)" -#: eval.c:6609 +#: eval.c:6626 msgid "E240: No connection to Vim server" msgstr "E240: Sin conexión al servidor Vim." -#: eval.c:6706 +#: eval.c:6724 msgid "E277: Unable to read a server reply" msgstr "E277: Incapaz de leer una respuesta del servidor." -#: eval.c:6734 +#: eval.c:6752 msgid "E258: Unable to send to client" msgstr "E258: Incapaz de enviar al cliente." -#: eval.c:6782 +#: eval.c:6800 #, c-format msgid "E241: Unable to send to %s" msgstr "E241: Incapaz de enviar a %s." -#: eval.c:6882 +#: eval.c:6900 msgid "(Invalid)" msgstr "(No válido)" -#: eval.c:8060 +#: eval.c:8078 #, c-format msgid "E121: Undefined variable: %s" msgstr "E121: Variable sin definir: %s." -#: eval.c:8492 +#: eval.c:8510 #, c-format msgid "E461: Illegal variable name: %s" msgstr "E244: ¡Nombre ilegal para una variable! %s" -#: eval.c:8784 +#: eval.c:8802 #, c-format msgid "E122: Function %s already exists, add ! to replace it" msgstr "E226: La función %s ya existe, añada «!» para reemplazarla." -#: eval.c:8857 +#: eval.c:8875 #, c-format msgid "E123: Undefined function: %s" msgstr "E123: Función sin definir: %s." -#: eval.c:8870 +#: eval.c:8888 #, c-format msgid "E124: Missing '(': %s" msgstr "E124: Falta «(»: %s." -#: eval.c:8903 +#: eval.c:8921 #, c-format msgid "E125: Illegal argument: %s" msgstr "E125: Argumento ilegal: %s." -#: eval.c:8982 +#: eval.c:9000 msgid "E126: Missing :endfunction" msgstr "E126: Falta «:endfunction»." -#: eval.c:9089 +#: eval.c:9107 #, c-format msgid "E127: Cannot redefine function %s: It is in use" msgstr "E127: No se puede redefinir la función %s: está en uso." -#: eval.c:9159 +#: eval.c:9177 msgid "E129: Function name required" msgstr "E129: Se requiere el nombre de la función." -#: eval.c:9210 +#: eval.c:9228 #, c-format msgid "E128: Function name must start with a capital: %s" msgstr "E128: El nombre de la función debe empezar con mayúscula: %s." -#: eval.c:9402 +#: eval.c:9420 #, c-format msgid "E130: Undefined function: %s" msgstr "E130: Función sin definir: %s." -#: eval.c:9407 +#: eval.c:9425 #, c-format msgid "E131: Cannot delete function %s: It is in use" msgstr "E131: No se puede eliminar la función %s: está en uso." -#: eval.c:9455 +#: eval.c:9473 msgid "E132: Function call depth is higher than 'maxfuncdepth'" msgstr "" "E132: La profundidad de la llamada a la función es mayor que «maxfuncdepth»." # always scroll up, don't overwrite #. always scroll up, don't overwrite -#: eval.c:9508 +#: eval.c:9526 #, c-format msgid "calling %s" msgstr "Llamando a %s." -#: eval.c:9570 +#: eval.c:9588 #, c-format msgid "%s aborted" msgstr "He abortado a %s." -#: eval.c:9572 +#: eval.c:9590 #, c-format msgid "%s returning #%ld" msgstr "%s devuelve #%ld." -#: eval.c:9579 +#: eval.c:9597 #, c-format msgid "%s returning \"%s\"" msgstr "%s devuelve «%s»." # always scroll up, don't overwrite #. always scroll up, don't overwrite -#: eval.c:9595 ex_cmds2.c:2365 +#: eval.c:9613 ex_cmds2.c:2369 #, c-format msgid "continuing in %s" msgstr "continuando en %s." -#: eval.c:9621 +#: eval.c:9639 msgid "E133: :return not inside a function" msgstr "E133: «:return» no está dentro de una función." -#: eval.c:9952 +#: eval.c:9970 msgid "" "\n" "# global variables:\n" @@ -736,7 +737,7 @@ msgstr "# Valor de «encoding» cuando se escribió este fichero\n" msgid "Illegal starting char" msgstr "Carácter de comienzo ilegal" -#: ex_cmds.c:2097 ex_cmds.c:2362 ex_cmds2.c:763 +#: ex_cmds.c:2097 ex_cmds2.c:760 msgid "Save As" msgstr "Guardar como" @@ -766,13 +767,13 @@ msgstr "¿Escribir sobre el fichero existente «%.*s»?" msgid "E141: No file name for buffer %ld" msgstr "E141: No existe un nombre de fichero para el «buffer» %ld" -#: ex_cmds.c:2405 +#: ex_cmds.c:2406 msgid "E142: File not written: Writing is disabled by 'write' option" msgstr "" "E142: No se ha escrito el fichero: escritura desactivada por la opción " "«write»." -#: ex_cmds.c:2425 +#: ex_cmds.c:2426 #, c-format msgid "" "'readonly' option is set for \"%.*s\".\n" @@ -781,69 +782,69 @@ msgstr "" "Se ha activado la opción «readonly» para «%.*s».\n" "¿Quiere escribirlo de todas formas?" -#: ex_cmds.c:2597 +#: ex_cmds.c:2599 msgid "Edit File" msgstr "Editar fichero" -#: ex_cmds.c:3205 +#: ex_cmds.c:3206 #, c-format msgid "E143: Autocommands unexpectedly deleted new buffer %s" msgstr "" "E143: Los autocomandos han eliminado inesperadamente el nuevo «buffer» %s" -#: ex_cmds.c:3339 +#: ex_cmds.c:3340 msgid "E144: non-numeric argument to :z" msgstr "E144: Argumento no numérico para «:z»." -#: ex_cmds.c:3424 +#: ex_cmds.c:3425 msgid "E145: Shell commands not allowed in rvim" msgstr "E145: Rvim no permite acceso al procesador de comandos." -#: ex_cmds.c:3531 +#: ex_cmds.c:3532 msgid "E146: Regular expressions can't be delimited by letters" msgstr "E146: Las expresiones regulares no se pueden delimitar con letras." -#: ex_cmds.c:3877 +#: ex_cmds.c:3878 #, c-format msgid "replace with %s (y/n/a/q/l/^E/^Y)?" msgstr "¿Reemplazar con %s (y/n/a/q/l/^E/^Y)?" -#: ex_cmds.c:4270 +#: ex_cmds.c:4271 msgid "(Interrupted) " msgstr "(Interrumpido)" -#: ex_cmds.c:4274 +#: ex_cmds.c:4275 msgid "1 substitution" msgstr "1 sustitución" -#: ex_cmds.c:4276 +#: ex_cmds.c:4277 #, c-format msgid "%ld substitutions" msgstr "%ld sustituciones" -#: ex_cmds.c:4279 +#: ex_cmds.c:4280 msgid " on 1 line" msgstr " en 1 línea" -#: ex_cmds.c:4281 +#: ex_cmds.c:4282 #, c-format msgid " on %ld lines" msgstr " en %ld líneas" -#: ex_cmds.c:4332 +#: ex_cmds.c:4333 msgid "E147: Cannot do :global recursive" msgstr "E147: «:global» no puede ser recursivo." -#: ex_cmds.c:4367 +#: ex_cmds.c:4368 msgid "E148: Regular expression missing from global" msgstr "E148: Falta una expresión regular en el comando global." -#: ex_cmds.c:4416 +#: ex_cmds.c:4417 #, c-format msgid "Pattern found in every line: %s" msgstr "Patrón encontrado en cada línea: %s" -#: ex_cmds.c:4497 +#: ex_cmds.c:4498 msgid "" "\n" "# Last Substitute String:\n" @@ -853,97 +854,97 @@ msgstr "" "# Última cadena de sustitución:\n" "$" -#: ex_cmds.c:4598 +#: ex_cmds.c:4599 msgid "E478: Don't panic!" msgstr "E478: ¡No entre en pánico!" -#: ex_cmds.c:4650 +#: ex_cmds.c:4651 #, c-format msgid "E661: Sorry, no '%s' help for %s" msgstr "E149: Lo siento, no hay ayuda «%s» para %s." -#: ex_cmds.c:4653 +#: ex_cmds.c:4654 #, c-format msgid "E149: Sorry, no help for %s" msgstr "E149: Lo siento, no hay ayuda para %s" -#: ex_cmds.c:4687 +#: ex_cmds.c:4688 #, c-format msgid "Sorry, help file \"%s\" not found" msgstr "Lo siento, no encuentro el fichero de ayuda «%s»." -#: ex_cmds.c:5170 +#: ex_cmds.c:5191 #, c-format msgid "E150: Not a directory: %s" msgstr "E150: No es un directorio: %s" -#: ex_cmds.c:5309 +#: ex_cmds.c:5332 #, c-format msgid "E152: Cannot open %s for writing" msgstr "E152: No se puede abrir %s para escritura." -#: ex_cmds.c:5345 +#: ex_cmds.c:5368 #, c-format msgid "E153: Unable to open %s for reading" msgstr "E153: Incapaz de abrir %s para lectura" -#: ex_cmds.c:5367 +#: ex_cmds.c:5404 #, c-format msgid "E670: Mix of help file encodings within a language: %s" msgstr "" "E670: Mezcla de codificaciones de ficheros de ayuda dentro de un lenguaje: %s" -#: ex_cmds.c:5445 +#: ex_cmds.c:5483 #, c-format -msgid "E154: Duplicate tag \"%s\" in file %s" -msgstr "E154: Tag «%s» duplicada en el fichero %s" +msgid "E154: Duplicate tag \"%s\" in file %s/%s" +msgstr "E154: Tag «%s» duplicada en el fichero %s/%s" -#: ex_cmds.c:5557 +#: ex_cmds.c:5599 #, c-format msgid "E160: Unknown sign command: %s" msgstr "E160: Comando desconocido de signo: %s" -#: ex_cmds.c:5577 +#: ex_cmds.c:5619 msgid "E156: Missing sign name" msgstr "E156: Falta el nombre del signo." -#: ex_cmds.c:5623 +#: ex_cmds.c:5665 msgid "E612: Too many signs defined" msgstr "E612: Demasiados signos definidos." -#: ex_cmds.c:5691 +#: ex_cmds.c:5733 #, c-format msgid "E239: Invalid sign text: %s" msgstr "E239: Texto de signo no válido: %s" -#: ex_cmds.c:5722 ex_cmds.c:5913 +#: ex_cmds.c:5764 ex_cmds.c:5955 #, c-format msgid "E155: Unknown sign: %s" msgstr "E155: Signo desconocida: %s" -#: ex_cmds.c:5771 +#: ex_cmds.c:5813 msgid "E159: Missing sign number" msgstr "E159: Falta el número del signo." -#: ex_cmds.c:5853 +#: ex_cmds.c:5895 #, c-format msgid "E158: Invalid buffer name: %s" msgstr "E159: El nombre del «buffer» no es válido: %s" -#: ex_cmds.c:5892 +#: ex_cmds.c:5934 #, c-format msgid "E157: Invalid sign ID: %ld" msgstr "E157: El id del signo no es válido: %ld" -#: ex_cmds.c:5962 +#: ex_cmds.c:6004 msgid " (NOT FOUND)" msgstr " (NO ENCONTRADO)" -#: ex_cmds.c:5964 +#: ex_cmds.c:6006 msgid " (not supported)" msgstr " (no hay apoyo para la función pedida)" -#: ex_cmds.c:6063 +#: ex_cmds.c:6105 msgid "[Deleted]" msgstr "[Suprimido]" @@ -951,7 +952,7 @@ msgstr "[Suprimido]" msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "Entrando al modo de depuración. Oprima \"cont\" para continuar." -#: ex_cmds2.c:96 ex_docmd.c:966 +#: ex_cmds2.c:96 ex_docmd.c:968 #, c-format msgid "line %ld: %s" msgstr "línea %ld: %s" @@ -966,217 +967,219 @@ msgstr "cmd: %s" msgid "Breakpoint in \"%s%s\" line %ld" msgstr "«Breakpoint» en «%s%s» línea %ld" -#: ex_cmds2.c:540 +#: ex_cmds2.c:539 #, c-format msgid "E161: Breakpoint not found: %s" msgstr "E161: No se ha encontrado el «breakpoint»: %s" -#: ex_cmds2.c:566 +#: ex_cmds2.c:565 msgid "No breakpoints defined" msgstr "No hay «breakpoints» definidos." -#: ex_cmds2.c:571 +#: ex_cmds2.c:570 #, c-format msgid "%3d %s %s line %ld" msgstr "%3d %s %s línea %ld" -#: ex_cmds2.c:786 +#: ex_cmds2.c:785 #, c-format msgid "Save changes to \"%.*s\"?" msgstr "¿Guardar los cambios en «%.*s»?" -#: ex_cmds2.c:788 ex_docmd.c:9378 +#: ex_cmds2.c:787 ex_docmd.c:9407 msgid "Untitled" msgstr "Sin título" -#: ex_cmds2.c:915 +#: ex_cmds2.c:914 #, c-format msgid "E162: No write since last change for buffer \"%s\"" msgstr "E162: No se ha grabado nada desde el último cambio en el buffer «%s»" -#: ex_cmds2.c:984 +#: ex_cmds2.c:983 msgid "Warning: Entered other buffer unexpectedly (check autocommands)" msgstr "" "Advertencia: se ha entrado en otro «buffer» en forma inesperada (verifique " "los autocomandos)." -#: ex_cmds2.c:1387 +#: ex_cmds2.c:1386 msgid "E163: There is only one file to edit" msgstr "E163: Hay sólo un fichero que editar." -#: ex_cmds2.c:1389 +#: ex_cmds2.c:1388 msgid "E164: Cannot go before first file" msgstr "E164: No se puede ir antes del primer fichero." -#: ex_cmds2.c:1391 +#: ex_cmds2.c:1390 msgid "E165: Cannot go beyond last file" msgstr "E165: No se puede ir más allá del último fichero." -#: ex_cmds2.c:1804 +#: ex_cmds2.c:1803 #, c-format msgid "E666: compiler not supported: %s" msgstr "E666: El compilador no tiene apoyo en esta versión: %s" -#: ex_cmds2.c:1897 +#: ex_cmds2.c:1900 #, c-format msgid "Searching for \"%s\" in \"%s\"" msgstr "Buscando «%s» en «%s»." -#: ex_cmds2.c:1919 +#: ex_cmds2.c:1922 #, c-format msgid "Searching for \"%s\"" msgstr "Buscando «%s»." -#: ex_cmds2.c:1940 +#: ex_cmds2.c:1944 #, c-format msgid "not found in 'runtimepath': \"%s\"" msgstr "No se ha encontrado en «runtimepath»: «%s»" -#: ex_cmds2.c:1974 +#: ex_cmds2.c:1978 msgid "Source Vim script" msgstr "Ejecute script de Vim." -#: ex_cmds2.c:2164 +#: ex_cmds2.c:2168 #, c-format msgid "Cannot source a directory: \"%s\"" msgstr "No se puede ejecutar un directorio: «%s»." -#: ex_cmds2.c:2202 +#: ex_cmds2.c:2206 #, c-format msgid "could not source \"%s\"" msgstr "No se pudo ejecutar «%s»." -#: ex_cmds2.c:2204 +#: ex_cmds2.c:2208 #, c-format msgid "line %ld: could not source \"%s\"" msgstr "línea %ld: no se pudo ejecutar «%s»." -#: ex_cmds2.c:2218 +#: ex_cmds2.c:2222 #, c-format msgid "sourcing \"%s\"" msgstr "ejecutando «%s»." -#: ex_cmds2.c:2220 +#: ex_cmds2.c:2224 #, c-format msgid "line %ld: sourcing \"%s\"" msgstr "línea %ld: ejecutando «%s»." -#: ex_cmds2.c:2363 +#: ex_cmds2.c:2367 #, c-format msgid "finished sourcing %s" msgstr "La ejecución de «%s» ha terminado." -#: ex_cmds2.c:2707 +#: ex_cmds2.c:2711 msgid "W15: Warning: Wrong line separator, ^M may be missing" msgstr "W15: Advertencia: separador de línea equivocado, puede que falte ^M" -#: ex_cmds2.c:2756 +#: ex_cmds2.c:2760 msgid "E167: :scriptencoding used outside of a sourced file" -msgstr "E167: Ha usado «:scriptencoding» fuera de un fichero de instrucciones ejecutables." +msgstr "" +"E167: Ha usado «:scriptencoding» fuera de un fichero de instrucciones " +"ejecutables." -#: ex_cmds2.c:2789 +#: ex_cmds2.c:2793 msgid "E168: :finish used outside of a sourced file" -msgstr "E168: Ha usado «:finish» fuera de un fichero de instrucciones ejecutables." +msgstr "" +"E168: Ha usado «:finish» fuera de un fichero de instrucciones ejecutables." -#: ex_cmds2.c:3238 +#: ex_cmds2.c:3242 #, c-format msgid "Page %d" msgstr "Página %d" -#: ex_cmds2.c:3394 +#: ex_cmds2.c:3398 msgid "No text to be printed" msgstr "No hay texto que imprimir." -#: ex_cmds2.c:3472 +#: ex_cmds2.c:3476 #, c-format msgid "Printing page %d (%d%%)" msgstr "Imprimiendo la página %d (%d%%)." -#: ex_cmds2.c:3484 +#: ex_cmds2.c:3488 #, c-format msgid " Copy %d of %d" msgstr "Copia %d de %d" -#: ex_cmds2.c:3542 +#: ex_cmds2.c:3546 #, c-format msgid "Printed: %s" msgstr "Impreso: %s." -#: ex_cmds2.c:3549 +#: ex_cmds2.c:3553 msgid "Printing aborted" msgstr "Impresión abortada." -#: ex_cmds2.c:3914 +#: ex_cmds2.c:3918 msgid "E455: Error writing to PostScript output file" msgstr "E455: Error escribiendo al fichero PostScript de salida." -#: ex_cmds2.c:4189 +#: ex_cmds2.c:4193 #, c-format msgid "E624: Can't open file \"%s\"" msgstr "E456: No se puede abrir el fichero «%s»." -#: ex_cmds2.c:4199 ex_cmds2.c:4824 +#: ex_cmds2.c:4203 ex_cmds2.c:4828 #, c-format msgid "E457: Can't read PostScript resource file \"%s\"" msgstr "E457: No se puede leer el fichero de recursos de PostScript «%s»." -#: ex_cmds2.c:4207 +#: ex_cmds2.c:4211 #, c-format msgid "E618: file \"%s\" is not a PostScript resource file" msgstr "E618: El fichero \"%s\" no es un fichero de recursos PostScript." -#: ex_cmds2.c:4222 ex_cmds2.c:4242 ex_cmds2.c:4257 ex_cmds2.c:4279 +#: ex_cmds2.c:4226 ex_cmds2.c:4246 ex_cmds2.c:4261 ex_cmds2.c:4283 #, c-format msgid "E619: file \"%s\" is not a supported PostScript resource file" msgstr "E619: El fichero «%s» no es un recurso PostScript que pueda usar." -#: ex_cmds2.c:4309 +#: ex_cmds2.c:4313 #, c-format msgid "E621: \"%s\" resource file has wrong version" msgstr "E621: El fichero de recursos «%s» tiene la versión equivocada." -#: ex_cmds2.c:4776 +#: ex_cmds2.c:4780 msgid "E324: Can't open PostScript output file" msgstr "E324: No puedo abrir el fichero PostScript de salida." -#: ex_cmds2.c:4809 +#: ex_cmds2.c:4813 #, c-format msgid "E456: Can't open file \"%s\"" msgstr "E456: No puedo abrir el fichero «%s»." -#: ex_cmds2.c:4928 +#: ex_cmds2.c:4932 msgid "E456: Can't find PostScript resource file \"prolog.ps\"" -msgstr "" -"E456: No encuentro el fichero de recursos PostScript «prolog.ps»." +msgstr "E456: No encuentro el fichero de recursos PostScript «prolog.ps»." -#: ex_cmds2.c:4959 +#: ex_cmds2.c:4963 #, c-format msgid "E456: Can't find PostScript resource file \"%s.ps\"" msgstr "E456: No hallo el fichero de recursos PostScript «%s.ps»." -#: ex_cmds2.c:4977 +#: ex_cmds2.c:4981 #, c-format msgid "E620: Unable to convert from multi-byte to \"%s\" encoding" msgstr "E620: No puedo convertir de «multi-byte» a la codificación \"%s\"." -#: ex_cmds2.c:5102 +#: ex_cmds2.c:5106 msgid "Sending to printer..." msgstr "Envíando a la impresora..." -#: ex_cmds2.c:5106 +#: ex_cmds2.c:5110 msgid "E365: Failed to print PostScript file" msgstr "E365: No pude imprimir el fichero PostScript." -#: ex_cmds2.c:5108 +#: ex_cmds2.c:5112 msgid "Print job sent." msgstr "Tarea de impresión envíada." -#: ex_cmds2.c:5618 +#: ex_cmds2.c:5622 #, c-format msgid "Current %slanguage: \"%s\"" msgstr "Idioma actual «%s»: «%s»." -#: ex_cmds2.c:5629 +#: ex_cmds2.c:5633 #, c-format msgid "E197: Cannot set language to \"%s\"" msgstr "E197: No se puede establecer la opción del idioma a «%s»." @@ -1191,74 +1194,74 @@ msgstr "Entrando al modo Ex. Escriba «visual» para ir al modo Normal." msgid "E501: At end-of-file" msgstr "E501: Estoy al final del fichero." -#: ex_docmd.c:669 +#: ex_docmd.c:670 msgid "E169: Command too recursive" msgstr "E169: El comando recurre excesivamente." -#: ex_docmd.c:1229 +#: ex_docmd.c:1232 #, c-format msgid "E605: Exception not caught: %s" msgstr "E605: La excepción %s no se atrapó." -#: ex_docmd.c:1317 +#: ex_docmd.c:1320 msgid "End of sourced file" msgstr "Fin del fichero de instrcucciones ejecutables." -#: ex_docmd.c:1318 +#: ex_docmd.c:1321 msgid "End of function" msgstr "Fin de la función." -#: ex_docmd.c:1907 +#: ex_docmd.c:1910 msgid "E464: Ambiguous use of user-defined command" msgstr "E464: Uso ambiguo de un comando definido por el usuario." -#: ex_docmd.c:1921 +#: ex_docmd.c:1924 msgid "E492: Not an editor command" msgstr "E371: No es un comando del editor." -#: ex_docmd.c:2028 +#: ex_docmd.c:2031 msgid "E493: Backwards range given" msgstr "E493: Me ha dado un rango invertido." -#: ex_docmd.c:2037 +#: ex_docmd.c:2040 msgid "Backwards range given, OK to swap" msgstr "Me ha dado un rango invertido, ¿está bien intercambiarlo?" -#: ex_docmd.c:2160 +#: ex_docmd.c:2163 msgid "E494: Use w or w>>" msgstr "E494: Use «w» o «w>>»." -#: ex_docmd.c:3786 +#: ex_docmd.c:3789 msgid "E319: Sorry, the command is not available in this version" msgstr "E319: Lo siento, el comando no está disponible en esta versión." -#: ex_docmd.c:3989 +#: ex_docmd.c:3992 msgid "E172: Only one file name allowed" msgstr "E172: Sólo se permite un nombre de fichero." -#: ex_docmd.c:4569 +#: ex_docmd.c:4572 msgid "1 more file to edit. Quit anyway?" msgstr "Un fichero más para editar. ¿Termino de todas formas?" -#: ex_docmd.c:4572 +#: ex_docmd.c:4575 #, c-format msgid "%d more files to edit. Quit anyway?" msgstr "Hay %d ficheros más en edición. ¿Termino de todas formas?" -#: ex_docmd.c:4579 +#: ex_docmd.c:4582 msgid "E173: 1 more file to edit" msgstr "E173: Un fichero más para editar." -#: ex_docmd.c:4581 +#: ex_docmd.c:4584 #, c-format msgid "E173: %ld more files to edit" msgstr "E173: Hay %ld ficheros en edición." -#: ex_docmd.c:4676 +#: ex_docmd.c:4679 msgid "E174: Command already exists: add ! to replace it" msgstr "E174: El comando ya existe. Añada «!» para reemplazarlo." -#: ex_docmd.c:4787 +#: ex_docmd.c:4790 msgid "" "\n" " Name Args Range Complete Definition" @@ -1266,191 +1269,191 @@ msgstr "" "\n" " Nombre Args Rango Completar Definición" -#: ex_docmd.c:4876 +#: ex_docmd.c:4879 msgid "No user-defined commands found" msgstr "No se han encontrado comandos definidos por el usuario" -#: ex_docmd.c:4908 +#: ex_docmd.c:4911 msgid "E175: No attribute specified" msgstr "E175: No se ha especificado el atributo." -#: ex_docmd.c:4960 +#: ex_docmd.c:4963 msgid "E176: Invalid number of arguments" msgstr "E176: El número de argumentos no es válido." -#: ex_docmd.c:4975 +#: ex_docmd.c:4978 msgid "E177: Count cannot be specified twice" msgstr "E177: El recuento no se puede especificar dos veces." -#: ex_docmd.c:4985 +#: ex_docmd.c:4988 msgid "E178: Invalid default value for count" msgstr "E178: El valor predeterminado para el recuento no es válido." -#: ex_docmd.c:5016 +#: ex_docmd.c:5019 msgid "E179: argument required for complete" msgstr "E179: se necesita un argumento para completar." -#: ex_docmd.c:5048 +#: ex_docmd.c:5051 #, c-format msgid "E180: Invalid complete value: %s" msgstr "E180: El valor para completar no es válido: %s." -#: ex_docmd.c:5057 +#: ex_docmd.c:5060 msgid "E468: Completion argument only allowed for custom completion" msgstr "" "E468: El argumento de finalización solo se permite en finalizaciones " "definidas por el usuario." -#: ex_docmd.c:5063 +#: ex_docmd.c:5066 msgid "E467: Custom completion requires a function argument" msgstr "" "E467: Las finalizatines definidad por el usuario requieren de un argumento " "de función." -#: ex_docmd.c:5074 +#: ex_docmd.c:5077 #, c-format msgid "E181: Invalid attribute: %s" msgstr "E181: El atributo no es válido: %s" -#: ex_docmd.c:5117 +#: ex_docmd.c:5120 msgid "E182: Invalid command name" msgstr "E182: El nombre de comando no es válido." -#: ex_docmd.c:5132 +#: ex_docmd.c:5135 msgid "E183: User defined commands must start with an uppercase letter" msgstr "" "E183: Los comandos definidos por el usuario deben comenzar con una letra " "mayúscula." -#: ex_docmd.c:5203 +#: ex_docmd.c:5206 #, c-format msgid "E184: No such user-defined command: %s" msgstr "E184: No existe tal comando definido por el usuario: %s" -#: ex_docmd.c:5664 +#: ex_docmd.c:5667 #, c-format msgid "E185: Cannot find color scheme %s" msgstr "E185: No se puede encontrar el esquema de colores %s" -#: ex_docmd.c:5672 +#: ex_docmd.c:5675 msgid "Greetings, Vim user!" msgstr "¡Saludos, usuario de Vim!" -#: ex_docmd.c:6389 +#: ex_docmd.c:6396 msgid "Edit File in new window" msgstr "Editar fichero en una ventana nueva" -#: ex_docmd.c:6684 +#: ex_docmd.c:6697 msgid "No swap file" msgstr "No hay fichero de intercambio" -#: ex_docmd.c:6788 +#: ex_docmd.c:6801 msgid "Append File" msgstr "Añadir fichero" -#: ex_docmd.c:6852 +#: ex_docmd.c:6865 msgid "E186: No previous directory" msgstr "E186: No hay directorio previo." -#: ex_docmd.c:6934 +#: ex_docmd.c:6947 msgid "E187: Unknown" msgstr "E187: Desconocido." -#: ex_docmd.c:7019 +#: ex_docmd.c:7032 msgid "E465: :winsize requires two number arguments" msgstr "E465: «:winsize» requiere de dos argumentos numéricos." -#: ex_docmd.c:7075 +#: ex_docmd.c:7088 #, c-format msgid "Window position: X %d, Y %d" msgstr "Posición de la ventana: X %d, Y %d" -#: ex_docmd.c:7080 +#: ex_docmd.c:7093 msgid "E188: Obtaining window position not implemented for this platform" msgstr "" "E188: La obtención de la posición de la ventana no está implementada en esta " "plataforma." -#: ex_docmd.c:7090 +#: ex_docmd.c:7103 msgid "E466: :winpos requires two number arguments" msgstr "E466: «:winpos» require de dos argumentos numéricos." -#: ex_docmd.c:7368 +#: ex_docmd.c:7381 msgid "Save Redirection" msgstr "Guardar redirección." -#: ex_docmd.c:7558 +#: ex_docmd.c:7571 msgid "Save View" msgstr "Guardar vista" -#: ex_docmd.c:7559 +#: ex_docmd.c:7572 msgid "Save Session" msgstr "Guardar sesión" -#: ex_docmd.c:7561 +#: ex_docmd.c:7574 msgid "Save Setup" msgstr "Guardar configuración" -#: ex_docmd.c:7713 +#: ex_docmd.c:7726 #, c-format msgid "E189: \"%s\" exists (add ! to override)" msgstr "E189: \"%s\" ya existe (añada ! para sobreescribir.)" -#: ex_docmd.c:7718 +#: ex_docmd.c:7731 #, c-format msgid "E190: Cannot open \"%s\" for writing" msgstr "E190: No se puede abrir «%s» para escritura" # set mark #. set mark -#: ex_docmd.c:7742 +#: ex_docmd.c:7755 msgid "E191: Argument must be a letter or forward/backward quote" msgstr "" "E191: El argumento debe ser una letra o un apóstrofo/apóstrofo invertido" -#: ex_docmd.c:7784 +#: ex_docmd.c:7797 msgid "E192: Recursive use of :normal too deep" msgstr "E192: Uso recursivo demasiado profundo de «:normal»." -#: ex_docmd.c:8302 +#: ex_docmd.c:8315 msgid "E194: No alternate file name to substitute for '#'" msgstr "E194: No hay un nombre de fichero alternativo que sustituya a «#»." -#: ex_docmd.c:8333 +#: ex_docmd.c:8346 msgid "E495: no autocommand file name to substitute for \"<afile>\"" msgstr "" "E495: No ha dado un nombre de fichero de autocomandos para sustituir a " "\"<afile>\"" -#: ex_docmd.c:8341 +#: ex_docmd.c:8354 msgid "E496: no autocommand buffer number to substitute for \"<abuf>\"" msgstr "" "E496: No existe un «buffer» de autocomando para sustituir por \"<abuf>\"" -#: ex_docmd.c:8352 +#: ex_docmd.c:8365 msgid "E497: no autocommand match name to substitute for \"<amatch>\"" msgstr "" "E497: Ningún nombre de autocomando concuerda para sustituir «<amatch>»." -#: ex_docmd.c:8362 +#: ex_docmd.c:8375 msgid "E498: no :source file name to substitute for \"<sfile>\"" msgstr "" "E498: No hay un nombre de fichero «:source» que sustituya a \"<sfile>\"." -#: ex_docmd.c:8403 +#: ex_docmd.c:8416 #, no-c-format msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" msgstr "E499: Un nombre de fichero vacio solo funciona con \":p:h\"." -#: ex_docmd.c:8405 +#: ex_docmd.c:8418 msgid "E500: Evaluates to an empty string" msgstr "E500: La expresión evalua a un «string» vacio." -#: ex_docmd.c:9360 +#: ex_docmd.c:9389 msgid "E195: Cannot open viminfo file for reading" msgstr "E195: No se puede abrir el fichero «viminfo» para lectura." -#: ex_docmd.c:9533 +#: ex_docmd.c:9562 msgid "E196: No digraphs in this version" msgstr "E196: No hay dígrafos en esta versión." @@ -1511,7 +1514,7 @@ msgstr "Exepción." msgid "Error and interrupt" msgstr "Error e interrupción" -#: ex_eval.c:754 gui.c:4381 +#: ex_eval.c:754 gui.c:4384 msgid "Error" msgstr "Error" @@ -1593,19 +1596,19 @@ msgstr "E602: :endtry sin un :try" msgid "E193: :endfunction not inside a function" msgstr "E193: «:endfunction» no está dentro de una función." -#: ex_getln.c:3296 +#: ex_getln.c:3299 msgid "tagname" msgstr "Nombre del «tag»" -#: ex_getln.c:3299 +#: ex_getln.c:3302 msgid " kind file\n" msgstr " tipo de fichero\n" -#: ex_getln.c:4752 +#: ex_getln.c:4768 msgid "'history' option is zero" msgstr "La opción 'history' es cero." -#: ex_getln.c:5023 +#: ex_getln.c:5039 #, c-format msgid "" "\n" @@ -1614,274 +1617,274 @@ msgstr "" "\n" "# Historia de «%s» (de lo más nuevo a lo más antiguo):\n" -#: ex_getln.c:5024 +#: ex_getln.c:5040 msgid "Command Line" msgstr "Línea de comandos" -#: ex_getln.c:5025 +#: ex_getln.c:5041 msgid "Search String" msgstr "Cadena de búsqueda" -#: ex_getln.c:5026 +#: ex_getln.c:5042 msgid "Expression" msgstr "Expresión" -#: ex_getln.c:5027 +#: ex_getln.c:5043 msgid "Input Line" msgstr "Línea de entrada" -#: ex_getln.c:5065 +#: ex_getln.c:5081 msgid "E198: cmd_pchar beyond the command length" msgstr "E198: «cmd_pchar» más allá de la longitud del comando." -#: ex_getln.c:5242 +#: ex_getln.c:5258 msgid "E199: Active window or buffer deleted" msgstr "E199: Se ha suprimido la ventana o el buffer activos." -#: fileio.c:377 +#: fileio.c:378 msgid "Illegal file name" msgstr "Nombre de fichero ilegal" -#: fileio.c:401 fileio.c:535 fileio.c:2913 fileio.c:2954 +#: fileio.c:402 fileio.c:540 fileio.c:2925 fileio.c:2966 msgid "is a directory" msgstr "es un directorio" -#: fileio.c:403 +#: fileio.c:404 msgid "is not a file" msgstr "no es un fichero" -#: fileio.c:557 fileio.c:4131 +#: fileio.c:562 fileio.c:4143 msgid "[New File]" msgstr "[Fichero nuevo]" -#: fileio.c:590 +#: fileio.c:595 msgid "[Permission Denied]" msgstr "[Permiso negado]" -#: fileio.c:694 +#: fileio.c:706 msgid "E200: *ReadPre autocommands made the file unreadable" msgstr "E200: Los autocomandos «*ReadPre» hicieron ilegible al fichero." -#: fileio.c:696 +#: fileio.c:708 msgid "E201: *ReadPre autocommands must not change current buffer" msgstr "E201: Los autocomandos «*ReadPre» no deben cambiar el buffer en curso." -#: fileio.c:717 +#: fileio.c:729 msgid "Vim: Reading from stdin...\n" msgstr "Vim: leyendo la entrada estándar...\n" -#: fileio.c:723 +#: fileio.c:735 msgid "Reading from stdin..." msgstr "Leyendo la entrada estándar..." # Re-opening the original file failed! #. Re-opening the original file failed! -#: fileio.c:1000 +#: fileio.c:1012 msgid "E202: Conversion made file unreadable!" msgstr "E202: ¡La conversión ha hecho el fichero ilegible!" -#: fileio.c:2090 +#: fileio.c:2102 msgid "[fifo/socket]" msgstr "[fifo/socket]" -#: fileio.c:2097 +#: fileio.c:2109 msgid "[fifo]" msgstr "[fifo]" -#: fileio.c:2104 +#: fileio.c:2116 msgid "[socket]" msgstr "[socket]" -#: fileio.c:2112 +#: fileio.c:2124 msgid "[RO]" msgstr "[RO]" -#: fileio.c:2122 +#: fileio.c:2134 msgid "[CR missing]" msgstr "[Falta un CR]" -#: fileio.c:2127 +#: fileio.c:2139 msgid "[NL found]" msgstr "[Se ha encontrado un NL]" -#: fileio.c:2132 +#: fileio.c:2144 msgid "[long lines split]" msgstr "[he partido las líneas largas]" -#: fileio.c:2138 fileio.c:4115 +#: fileio.c:2150 fileio.c:4127 msgid "[NOT converted]" msgstr "[NO convertido]" -#: fileio.c:2143 fileio.c:4120 +#: fileio.c:2155 fileio.c:4132 msgid "[converted]" msgstr "[convertido]" -#: fileio.c:2150 fileio.c:4145 +#: fileio.c:2162 fileio.c:4157 msgid "[crypted]" msgstr "[encriptado]" -#: fileio.c:2157 +#: fileio.c:2169 msgid "[CONVERSION ERROR]" msgstr "[ERROR DE CONVERSIÓN]" -#: fileio.c:2163 +#: fileio.c:2175 #, c-format msgid "[ILLEGAL BYTE in line %ld]" msgstr "[BYTE ILEGAL en la línea %ld]" -#: fileio.c:2170 +#: fileio.c:2182 msgid "[READ ERRORS]" msgstr "[ERRORES DE LECTURA]" -#: fileio.c:2386 +#: fileio.c:2398 msgid "Can't find temp file for conversion" msgstr "No se puede encontrar el fichero temporal para la conversión." -#: fileio.c:2393 +#: fileio.c:2405 msgid "Conversion with 'charconvert' failed" msgstr "La conversión con '«charconvert»' ha fallado." -#: fileio.c:2396 +#: fileio.c:2408 msgid "can't read output of 'charconvert'" msgstr "No puedo leer la salida de «charconvert»." -#: fileio.c:2796 +#: fileio.c:2808 msgid "E203: Autocommands deleted or unloaded buffer to be written" msgstr "" "E203: Los autocomandos fueron suprimidos o el «buffer» se descargó para ser " "grabado en disco." -#: fileio.c:2819 +#: fileio.c:2831 msgid "E204: Autocommand changed number of lines in unexpected way" msgstr "" "E204: El autocomando ha cambiado el número de líneas en forma inesperada." -#: fileio.c:2857 +#: fileio.c:2869 msgid "NetBeans dissallows writes of unmodified buffers" msgstr "NetBeans no permite que se escriba sobre «buffers» sin modificar." -#: fileio.c:2865 +#: fileio.c:2877 msgid "Partial writes disallowed for NetBeans buffers" msgstr "No se permite la escritura parcial de los «buffers» de NetBeans." -#: fileio.c:2919 fileio.c:2937 +#: fileio.c:2931 fileio.c:2949 msgid "is not a file or writable device" msgstr "no es un fichero o dispositivo en el que se pueda escribir." -#: fileio.c:2989 +#: fileio.c:3001 msgid "is read-only (add ! to override)" msgstr "Es de solo lectura (añada ! para obreescribir)." -#: fileio.c:3335 +#: fileio.c:3347 msgid "E506: Can't write to backup file (add ! to override)" msgstr "" "E506: No puedo escribir al fichero de respaldo (añada ! para forzar el " "comando)." -#: fileio.c:3347 +#: fileio.c:3359 msgid "E507: Close error for backup file (add ! to override)" msgstr "" "E507: Error al cerrar el fichero de la copia de respaldo (añada ! para " "forzar el comando)." -#: fileio.c:3349 +#: fileio.c:3361 msgid "E508: Can't read file for backup (add ! to override)" msgstr "" "E508: No puedo leer el fichero para crear la copia de respaldo (añada ! para " "forzar el comando)." -#: fileio.c:3365 +#: fileio.c:3377 msgid "E509: Cannot create backup file (add ! to override)" msgstr "" "E509: No puedo crear el fichero para la copia de respaldo (añada ! para " "forzar el comando)." -#: fileio.c:3468 +#: fileio.c:3480 msgid "E510: Can't make backup file (add ! to override)" msgstr "" "E510: No puedo hacer un fichero de copia de respaldo (añada ! para forzar el " "comando)." -#: fileio.c:3530 +#: fileio.c:3542 msgid "E460: The resource fork would be lost (add ! to override)" msgstr "" "E460: Se perdería el segmento («fork») de recursos! (añada ! para forzar el " "comando)." -#: fileio.c:3640 +#: fileio.c:3652 msgid "E214: Can't find temp file for writing" msgstr "E214: No puedo encontrar el fichero temporal para escribir en él." -#: fileio.c:3658 +#: fileio.c:3670 msgid "E213: Cannot convert (add ! to write without conversion)" msgstr "" "E213: No puedo convertirlo (añada ! para escribir el fichero sin conversión)." -#: fileio.c:3693 +#: fileio.c:3705 msgid "E166: Can't open linked file for writing" msgstr "E166: No puedo abrir el fichero enlazado para escribir en él." -#: fileio.c:3697 +#: fileio.c:3709 msgid "E212: Can't open file for writing" msgstr "E212: No puedo abrir el fichero para escribir en él." -#: fileio.c:3959 +#: fileio.c:3971 msgid "E667: Fsync failed" msgstr "E667: falló «fsync»" -#: fileio.c:3966 +#: fileio.c:3978 msgid "E512: Close failed" msgstr "E314: Falló el cierre del fichero." -#: fileio.c:4037 +#: fileio.c:4049 msgid "E513: write error, conversion failed" msgstr "E513: Error de escritura, la conversión falló." -#: fileio.c:4043 +#: fileio.c:4055 msgid "E514: write error (file system full?)" msgstr "E514: Error de escritura (¿Sistema de ficheros lleno?" -#: fileio.c:4110 +#: fileio.c:4122 msgid " CONVERSION ERROR" msgstr "ERROR DE CONVERSIÓN" -#: fileio.c:4126 +#: fileio.c:4138 msgid "[Device]" msgstr "[Dispositivo]" -#: fileio.c:4131 +#: fileio.c:4143 msgid "[New]" msgstr "[Nuevo]" -#: fileio.c:4153 +#: fileio.c:4165 msgid " [a]" msgstr " [a]" -#: fileio.c:4153 +#: fileio.c:4165 msgid " appended" msgstr " añadido" -#: fileio.c:4155 +#: fileio.c:4167 msgid " [w]" msgstr " [w]" -#: fileio.c:4155 +#: fileio.c:4167 msgid " written" msgstr " escritos" -#: fileio.c:4205 +#: fileio.c:4217 msgid "E205: Patchmode: can't save original file" msgstr "E205: Modo «patch»: no se puede guardar el fichero original." -#: fileio.c:4227 +#: fileio.c:4239 msgid "E206: patchmode: can't touch empty original file" msgstr "E206: Modo «patch»: no se puede tocar el fichero original vacío." -#: fileio.c:4242 +#: fileio.c:4254 msgid "E207: Can't delete backup file" msgstr "E207: No se puede borrar el fichero de respaldo." -#: fileio.c:4306 +#: fileio.c:4318 msgid "" "\n" "WARNING: Original file may be lost or damaged\n" @@ -1889,57 +1892,57 @@ msgstr "" "\n" "AVISO: el fichero original puede haberse perdido o haberse dañado\n" -#: fileio.c:4308 +#: fileio.c:4320 msgid "don't quit the editor until the file is successfully written!" msgstr "¡no salga del editor hasta que el fichero se haya escrito!" -#: fileio.c:4397 +#: fileio.c:4409 msgid "[dos]" msgstr "[DOS]" -#: fileio.c:4397 +#: fileio.c:4409 msgid "[dos format]" msgstr "[formato DOS]" -#: fileio.c:4404 +#: fileio.c:4416 msgid "[mac]" msgstr "[Mac]" -#: fileio.c:4404 +#: fileio.c:4416 msgid "[mac format]" msgstr "[formato Mac]" -#: fileio.c:4411 +#: fileio.c:4423 msgid "[unix]" msgstr "[UNIX]" -#: fileio.c:4411 +#: fileio.c:4423 msgid "[unix format]" msgstr "[formato UNIX]" -#: fileio.c:4438 +#: fileio.c:4450 msgid "1 line, " msgstr "1 línea, " -#: fileio.c:4440 +#: fileio.c:4452 #, c-format msgid "%ld lines, " msgstr "%ld líneas, " -#: fileio.c:4443 +#: fileio.c:4455 msgid "1 character" msgstr "1 carácter" -#: fileio.c:4445 +#: fileio.c:4457 #, c-format msgid "%ld characters" msgstr "%ld caracteres" -#: fileio.c:4455 +#: fileio.c:4467 msgid "[noeol]" msgstr "[no hay fin de línea]" -#: fileio.c:4455 +#: fileio.c:4467 msgid "[Incomplete last line]" msgstr "[Última línea incompleta]" @@ -1949,39 +1952,39 @@ msgstr "[Última línea incompleta]" #. don't overwrite messages here #. must give this prompt #. don't use emsg() here, don't want to flush the buffers -#: fileio.c:4474 +#: fileio.c:4486 msgid "WARNING: The file has been changed since reading it!!!" msgstr "ADVERTENCIA: ¡¡¡El fichero ha cambiado desde que se leyó!!!" -#: fileio.c:4476 +#: fileio.c:4488 msgid "Do you really want to write to it" msgstr "¿Quiere realmente escribir a él?" -#: fileio.c:5726 +#: fileio.c:5741 #, c-format msgid "E208: Error writing to \"%s\"" msgstr "E208: Error al escribir a «%s»." -#: fileio.c:5733 +#: fileio.c:5748 #, c-format msgid "E209: Error closing \"%s\"" msgstr "E209: Error al cerrar «%s»." -#: fileio.c:5736 +#: fileio.c:5751 #, c-format msgid "E210: Error reading \"%s\"" msgstr "E210: Error al leer «%s»." -#: fileio.c:5970 +#: fileio.c:5985 msgid "E246: FileChangedShell autocommand deleted buffer" msgstr "E246: el autocomando «FileChangedShell» ha borrado el buffer." -#: fileio.c:5977 +#: fileio.c:5992 #, c-format msgid "E211: Warning: File \"%s\" no longer available" msgstr "E211: Advertencia: el fichero «%s» ya no está disponible" -#: fileio.c:5991 +#: fileio.c:6006 #, c-format msgid "" "W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as " @@ -1990,35 +1993,35 @@ msgstr "" "W12: Advertencia: el fichero «%s» ha cambiado y el buffer fue cambiado " "también en Vim." -#: fileio.c:5994 +#: fileio.c:6009 #, c-format msgid "W11: Warning: File \"%s\" has changed since editing started" msgstr "" "W11: Advertencia: el fichero «%s» ha cambiado desde que comenzó la edición." -#: fileio.c:5996 +#: fileio.c:6011 #, c-format msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" msgstr "" "W16: Advertencia: el modo del fichero «%s» ha cambiado desde que comenzó la " "edición." -#: fileio.c:6006 +#: fileio.c:6021 #, c-format msgid "W13: Warning: File \"%s\" has been created after editing started" msgstr "" "W13: Advertencia: el fichero «%s» ha sido creado después de comenzar la " "edición." -#: fileio.c:6019 +#: fileio.c:6034 msgid "See \":help W11\" for more info." msgstr "Vea «:help w11» para más información." -#: fileio.c:6033 +#: fileio.c:6048 msgid "Warning" msgstr "Advertencia" -#: fileio.c:6034 +#: fileio.c:6049 msgid "" "&OK\n" "&Load File" @@ -2026,45 +2029,45 @@ msgstr "" "&OK\n" "&Cargar fichero" -#: fileio.c:6140 +#: fileio.c:6155 #, c-format msgid "E462: Could not prepare for reloading \"%s\"" msgstr "E462: No pude prepararme para recargar a \"%s\"." -#: fileio.c:6159 +#: fileio.c:6174 #, c-format msgid "E321: Could not reload \"%s\"" msgstr "E321: No se pudo recargar «%s»." -#: fileio.c:6740 +#: fileio.c:6755 msgid "--Deleted--" msgstr "--Suprimido--" # the group doesn't exist #. the group doesn't exist -#: fileio.c:6900 +#: fileio.c:6915 #, c-format msgid "E367: No such group: \"%s\"" msgstr "E367: No existe el grupo: «%s»." -#: fileio.c:7026 +#: fileio.c:7041 #, c-format msgid "E215: Illegal character after *: %s" msgstr "E215: Carácter ilegal después de *: «%s»." -#: fileio.c:7038 +#: fileio.c:7053 #, c-format msgid "E216: No such event: %s" msgstr "E216: No existe tal hecho: «%s»" -#: fileio.c:7040 +#: fileio.c:7055 #, c-format msgid "E216: No such group or event: %s" msgstr "E216: No existe tal grupo o evento: %s" # Highlight title #. Highlight title -#: fileio.c:7198 +#: fileio.c:7213 msgid "" "\n" "--- Auto-Commands ---" @@ -2072,42 +2075,42 @@ msgstr "" "\n" "--- Auto-comandos ---" -#: fileio.c:7469 +#: fileio.c:7484 msgid "E217: Can't execute autocommands for ALL events" msgstr "" "E217: No se pueden ejecutar los autocomandos para TODOS los eventos de " "ejecución." -#: fileio.c:7492 +#: fileio.c:7507 msgid "No matching autocommands" msgstr "Ningún autocomando coincide." -#: fileio.c:7813 +#: fileio.c:7828 msgid "E218: autocommand nesting too deep" msgstr "E218: El autocomando se anida en demasiados bucles." -#: fileio.c:8088 +#: fileio.c:8103 #, c-format msgid "%s Auto commands for \"%s\"" msgstr "%s Auto comandos para «%s»" -#: fileio.c:8096 +#: fileio.c:8111 #, c-format msgid "Executing %s" msgstr "Ejecutando %s" # always scroll up, don't overwrite #. always scroll up, don't overwrite -#: fileio.c:8164 +#: fileio.c:8179 #, c-format msgid "autocommand %s" msgstr "autocomando %s" -#: fileio.c:8731 +#: fileio.c:8746 msgid "E219: Missing {." msgstr "E219: Falta un {." -#: fileio.c:8733 +#: fileio.c:8748 msgid "E220: Missing }." msgstr "E220: Falta un }." @@ -2127,39 +2130,39 @@ msgstr "E351: No puedo borrar el pliegue con el 'foldmethod' activo." msgid "E222: Add to read buffer" msgstr "E222: Añadir al «buffer» de lectura" -#: getchar.c:2198 +#: getchar.c:2208 msgid "E223: recursive mapping" msgstr "E223: asociación recursiva" -#: getchar.c:3077 +#: getchar.c:3087 #, c-format msgid "E224: global abbreviation already exists for %s" msgstr "E224: ya existe una abreviatura global para «%s»." -#: getchar.c:3080 +#: getchar.c:3090 #, c-format msgid "E225: global mapping already exists for %s" msgstr "E225: ya existe una asociación global para «%s»." -#: getchar.c:3212 +#: getchar.c:3222 #, c-format msgid "E226: abbreviation already exists for %s" msgstr "E226: ya existe una abreviatura para «%s»." -#: getchar.c:3215 +#: getchar.c:3225 #, c-format msgid "E227: mapping already exists for %s" msgstr "E227: ya existe una asociación para «%s»." -#: getchar.c:3279 +#: getchar.c:3289 msgid "No abbreviation found" msgstr "No encontré ninguna abreviatura." -#: getchar.c:3281 +#: getchar.c:3291 msgid "No mapping found" msgstr "No encontré ninguna asociación." -#: getchar.c:4173 +#: getchar.c:4183 msgid "E228: makemap: Illegal mode" msgstr "E228: «makemap»: modo ilegal." @@ -2186,7 +2189,7 @@ msgstr "E231: El valor de «guifontwide» no es válido." msgid "E599: Value of 'imactivatekey' is invalid" msgstr "E599: El valor de «imactivatekey» no es válido." -#: gui.c:4061 +#: gui.c:4064 #, c-format msgid "E254: Cannot allocate color %s" msgstr "E254: No se puede asignar el color «%s»." @@ -2229,7 +2232,7 @@ msgstr "Scrollbar Widget: No pude obtener la geometría del «pixmap» miniatura." msgid "Vim dialog" msgstr "Diálogo de Vim" -#: gui_beval.c:101 gui_w32.c:3945 +#: gui_beval.c:101 gui_w32.c:3978 msgid "E232: Cannot create BalloonEval with both message and callback" msgstr "" "E232: No puedo crear un «BalloonEval» que contenga tanto el mensaje como el " @@ -2239,7 +2242,7 @@ msgstr "" msgid "Vim dialog..." msgstr "Diálogo de Vim..." -#: gui_gtk.c:2060 message.c:2999 +#: gui_gtk.c:2060 message.c:3005 msgid "" "&Yes\n" "&No\n" @@ -2365,16 +2368,25 @@ msgstr "" "\n" "Enviando mensaje para terminar los procesos dependientes («hijo»).\n" -#: gui_w32.c:834 +#: gui_w32.c:839 +#, c-format +msgid "E671: Cannot find window title \"%s\"" +msgstr "E671: No puedo encontrar el título de la ventana «%s»." + +#: gui_w32.c:847 #, c-format msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." msgstr "E243: Argumento no admitido: «-%s»; use la versión OLE." -#: gui_w48.c:2147 +#: gui_w32.c:1100 +msgid "E672: Unable to open window inside MDI application" +msgstr "E672: No puedo abrir una ventana dentro de la aplicación MDI." + +#: gui_w48.c:2163 msgid "Find string (use '\\\\' to find a '\\')" msgstr "Buscar cadena (use «\\\\» para encontrar un «\\»)" -#: gui_w48.c:2172 +#: gui_w48.c:2188 msgid "Find & Replace (use '\\\\' to find a '\\')" msgstr "Buscar y reemplazar (use «\\\\» para encontra una «\\»)" @@ -3002,47 +3014,47 @@ msgstr "" msgid "Invalid argument for" msgstr "Argumento no válido para" -#: main.c:466 +#: main.c:469 msgid "This Vim was not compiled with the diff feature." msgstr "Este Vim no ha sido compilado con la característica «diff»." -#: main.c:932 +#: main.c:935 msgid "Attempt to open script file again: \"" msgstr "Intento de abrir de nuevo el fichero «script»: «" -#: main.c:941 +#: main.c:944 msgid "Cannot open for reading: \"" msgstr "No puedo abrir para leer: «" -#: main.c:985 +#: main.c:988 msgid "Cannot open for script output: \"" msgstr "No puedo abrir para escribir la salida del «script»: «" -#: main.c:1132 +#: main.c:1135 #, c-format msgid "%d files to edit\n" msgstr "%d ficheros que editar\n" -#: main.c:1233 +#: main.c:1236 msgid "Vim: Warning: Output is not to a terminal\n" msgstr "Vim: Advertencia: la salida no es a un terminal\n" -#: main.c:1235 +#: main.c:1238 msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: Advertencia: la entrada no es desde un terminal\n" # just in case.. #. just in case.. -#: main.c:1297 +#: main.c:1306 msgid "pre-vimrc command line" msgstr "Línea de comandos anter de «vimrc»" -#: main.c:1338 +#: main.c:1347 #, c-format msgid "E282: Cannot read from \"%s\"" msgstr "E282: No puedo leer desde «%s»" -#: main.c:2411 +#: main.c:2420 msgid "" "\n" "More info with: \"vim -h\"\n" @@ -3050,23 +3062,23 @@ msgstr "" "\n" "Más información con: «vim -h»\n" -#: main.c:2444 +#: main.c:2453 msgid "[file ..] edit specified file(s)" msgstr "[fichero ...] edita el/los fichero(s) especificado(s)" -#: main.c:2445 +#: main.c:2454 msgid "- read text from stdin" msgstr "- lee texto de la entrada estándar" -#: main.c:2446 +#: main.c:2455 msgid "-t tag edit file where tag is defined" msgstr "-t «tag» edita el fichero donde está definido «tag»" -#: main.c:2448 +#: main.c:2457 msgid "-q [errorfile] edit file with first error" msgstr "-q [fich. err.] edita el fichero con el primer error" -#: main.c:2457 +#: main.c:2466 msgid "" "\n" "\n" @@ -3076,11 +3088,11 @@ msgstr "" "\n" "Uso:" -#: main.c:2460 +#: main.c:2469 msgid " vim [arguments] " msgstr " vim [argumentos]" -#: main.c:2464 +#: main.c:2473 msgid "" "\n" " or:" @@ -3088,7 +3100,7 @@ msgstr "" "\n" " o:" -#: main.c:2467 +#: main.c:2476 msgid "" "\n" "\n" @@ -3098,258 +3110,258 @@ msgstr "" "\n" "Argumentos:\n" -#: main.c:2468 +#: main.c:2477 msgid "--\t\t\tOnly file names after this" msgstr "--\t\t\tSólo nombres de ficheros después de esto" -#: main.c:2470 +#: main.c:2479 msgid "--literal\t\tDon't expand wildcards" msgstr "--literal\t\tNo expandir comodines" -#: main.c:2473 +#: main.c:2482 msgid "-register\t\tRegister this gvim for OLE" msgstr "-register\t\tRegistrar este «gvim» para «OLE»" -#: main.c:2474 +#: main.c:2483 msgid "-unregister\t\tUnregister gvim for OLE" msgstr "-unregister\t\tSuprimir el registro de gvim para OLE" -#: main.c:2477 +#: main.c:2486 msgid "-g\t\t\tRun using GUI (like \"gvim\")" msgstr "-g\t\t\tEjecutar usando el GUI (como «gvim»)" -#: main.c:2478 +#: main.c:2487 msgid "-f or --nofork\tForeground: Don't fork when starting GUI" msgstr "" "-f o --nofork\tPrimer plano: No separarse («fork») cuando se inicia la " "interface gráfica (GUI)." -#: main.c:2480 +#: main.c:2489 msgid "-v\t\t\tVi mode (like \"vi\")" msgstr "-v\t\t\tModo Vi (como «vi»)" -#: main.c:2481 +#: main.c:2490 msgid "-e\t\t\tEx mode (like \"ex\")" msgstr "-e\t\t\tModo Ex (como «ex»)" -#: main.c:2482 +#: main.c:2491 msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")" msgstr "-s\t\t\tModo silencioso o «batch» (sólo para «ex»)" -#: main.c:2484 +#: main.c:2493 msgid "-d\t\t\tDiff mode (like \"vimdiff\")" msgstr "-d\t\t\tModo «diff» (como «vimdiff»)" -#: main.c:2486 +#: main.c:2495 msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" msgstr "-y\t\t\tModo fácil (como «evim», sin modo)" -#: main.c:2487 +#: main.c:2496 msgid "-R\t\t\tReadonly mode (like \"view\")" msgstr "-R\t\t\tModo de sólo lectura (como «view»)" -#: main.c:2488 +#: main.c:2497 msgid "-Z\t\t\tRestricted mode (like \"rvim\")" msgstr "-Z\t\t\tModo restringido (como «rvim»)" -#: main.c:2489 +#: main.c:2498 msgid "-m\t\t\tModifications (writing files) not allowed" msgstr "-m\t\t\tModificaciones no permitidas (escritura de ficheros)" -#: main.c:2490 +#: main.c:2499 msgid "-M\t\t\tModifications in text not allowed" msgstr "-M\t\t\tModificaciones en el texto no permitidas" -#: main.c:2491 +#: main.c:2500 msgid "-b\t\t\tBinary mode" msgstr "-b\t\t\tModo binario" -#: main.c:2493 +#: main.c:2502 msgid "-l\t\t\tLisp mode" msgstr "-l\t\t\tModo lisp" -#: main.c:2495 +#: main.c:2504 msgid "-C\t\t\tCompatible with Vi: 'compatible'" msgstr "-C\t\t\tCompatible con Vi: 'compatible'" -#: main.c:2496 +#: main.c:2505 msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'" msgstr "-N\t\t\tNo totalmente compatible con Vi: 'nocompatible'" -#: main.c:2497 +#: main.c:2506 msgid "-V[N]\t\tVerbose level" msgstr "-V[N]\t\tNivel de detalle de la ejecución" -#: main.c:2498 +#: main.c:2507 msgid "-D\t\t\tDebugging mode" msgstr "-D\t\t\tModo de depuración" -#: main.c:2499 +#: main.c:2508 msgid "-n\t\t\tNo swap file, use memory only" msgstr "-n\t\t\tSin fichero de intercambio, usa sólo la memoria" -#: main.c:2500 +#: main.c:2509 msgid "-r\t\t\tList swap files and exit" msgstr "-r\t\t\tDar una lista de los fichero de intercambio y salir" -#: main.c:2501 +#: main.c:2510 msgid "-r (with file name)\tRecover crashed session" msgstr "-r (con nombre del fichero)\tRecuperar sesión fallida" -#: main.c:2502 +#: main.c:2511 msgid "-L\t\t\tSame as -r" msgstr "-L\t\t\tIgual que -r" -#: main.c:2504 +#: main.c:2513 msgid "-f\t\t\tDon't use newcli to open window" msgstr "-f\t\t\tNo usar «newcli» para abrir la ventana" -#: main.c:2505 +#: main.c:2514 msgid "-dev <device>\t\tUse <device> for I/O" msgstr "-dev <dispositivo>\t\tUse <dispositivo> para E/S" -#: main.c:2508 +#: main.c:2517 msgid "-A\t\t\tstart in Arabic mode" msgstr "-A\t\t\tIniciar en modo árabe" -#: main.c:2511 +#: main.c:2520 msgid "-H\t\t\tStart in Hebrew mode" msgstr "-H\t\t\tIniciar en modo hebreo" -#: main.c:2514 +#: main.c:2523 msgid "-F\t\t\tStart in Farsi mode" msgstr "-F\t\t\tIniciar en modo persa (farsi)" -#: main.c:2516 +#: main.c:2525 msgid "-T <terminal>\tSet terminal type to <terminal>" msgstr "-T <terminal>\tDetermina el tipo de terminal a <<terminal>>" -#: main.c:2517 +#: main.c:2526 msgid "-u <vimrc>\t\tUse <vimrc> instead of any .vimrc" msgstr "-u <vimrc>\t\tUsa <vimrc> en lugar de cualquier .vimrc" -#: main.c:2519 +#: main.c:2528 msgid "-U <gvimrc>\t\tUse <gvimrc> instead of any .gvimrc" msgstr "-U <gvimrc>\t\tUsa <gvimrc> en lugar de cualquier .gvimrc" -#: main.c:2521 +#: main.c:2530 msgid "--noplugin\t\tDon't load plugin scripts" msgstr "--noplugin\t\tNo carga los «plugin scripts»" -#: main.c:2522 +#: main.c:2531 msgid "-o[N]\t\tOpen N windows (default: one for each file)" msgstr "-o[N]\t\tAbre N ventanas (valor predeterminado: una por fichero)" -#: main.c:2523 +#: main.c:2532 msgid "-O[N]\t\tLike -o but split vertically" msgstr "-O[N]\t\tComo «-o» pero divide las ventanas verticalmente." -#: main.c:2524 +#: main.c:2533 msgid "+\t\t\tStart at end of file" msgstr "+\t\t\tComienza al final del fichero" -#: main.c:2525 +#: main.c:2534 msgid "+<lnum>\t\tStart at line <lnum>" msgstr "+<lnum>\t\tComienza en la línea <lnum>" -#: main.c:2527 +#: main.c:2536 msgid "--cmd <command>\tExecute <command> before loading any vimrc file" msgstr "--cmd <comando>\tEjecuta <comando> antes de cargar algún fichero vimrc" -#: main.c:2529 +#: main.c:2538 msgid "-c <command>\t\tExecute <command> after loading the first file" msgstr "-c <comando>\t\tEjecuta <comando> después de cargar el primer fichero" -#: main.c:2530 +#: main.c:2539 msgid "-S <session>\t\tSource file <session> after loading the first file" msgstr "" "-S <sesión>\t\tEjecuta los comandos del fichero <sesión> después\n" " \t\tde cargar el primer fichero" -#: main.c:2531 +#: main.c:2540 msgid "-s <scriptin>\tRead Normal mode commands from file <scriptin>" msgstr "-s <scriptin>\tLee los comandos en modo Normal del fichero <scriptin>" -#: main.c:2532 +#: main.c:2541 msgid "-w <scriptout>\tAppend all typed commands to file <scriptout>" msgstr "" "-w <scriptout>\tAñade todos los comandos escritos al fichero <scriptout>" -#: main.c:2533 +#: main.c:2542 msgid "-W <scriptout>\tWrite all typed commands to file <scriptout>" msgstr "" "-W <scriptout>\tGraba todos los comandos escritos al fichero <scriptout>" -#: main.c:2535 +#: main.c:2544 msgid "-x\t\t\tEdit encrypted files" msgstr "-x\t\t\tEdita ficheros cifrados" -#: main.c:2539 +#: main.c:2548 msgid "-display <display>\tConnect vim to this particular X-server" msgstr "-display <pantalla>\tConecta vim a este servidor X11 en particular" -#: main.c:2541 +#: main.c:2550 msgid "-X\t\t\tDo not connect to X server" msgstr "-X\t\t\tNo se conecta al servidor X11" -#: main.c:2544 +#: main.c:2553 msgid "--remote <files>\tEdit <files> in a Vim server if possible" msgstr "" "--remote <ficheros>\tEdita los <ficheros> en un servidor Vim si es posible." -#: main.c:2545 +#: main.c:2554 msgid "--remote-silent <files> Same, don't complain if there is no server" msgstr "" "--remote-silent <ficheros> Lo mismo pero no se queja si no existe un " "servidor disponible." -#: main.c:2546 +#: main.c:2555 msgid "" "--remote-wait <files> As --remote but wait for files to have been edited" msgstr "" "--remote-wait <ficheros>\tComo --remote pero espera a que los ficheros " "terminen de editarse" -#: main.c:2547 +#: main.c:2556 msgid "" "--remote-wait-silent <files> Same, don't complain if there is no server" msgstr "" "--remote-wait-silent <ficheros> Lo mismo pero no se queja si no hay un " "servidor disponible." -#: main.c:2548 +#: main.c:2557 msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit" msgstr "--remote-send <teclas>\tEnvía <teclas> a un servidor Vim y sale" -#: main.c:2549 +#: main.c:2558 msgid "--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result" msgstr "" "--remote-expr <expr>\tEvalúa <expr> en servidor Vim e imprime el resultado" -#: main.c:2550 +#: main.c:2559 msgid "--serverlist\t\tList available Vim server names and exit" msgstr "" "--serverlist\t\tEmite una lista de los servidores Vim disponibles y sale" -#: main.c:2551 +#: main.c:2560 msgid "--servername <name>\tSend to/become the Vim server <name>" msgstr "" "--servername <nombre>\tEnvía a/se convierte en el servidor Vim de nombre " "<nombre>" -#: main.c:2554 +#: main.c:2563 msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo" msgstr "-i <viminfo>\t\tUsa <viminfo> en lugar de .viminfo" -#: main.c:2556 +#: main.c:2565 msgid "-h or --help\tPrint Help (this message) and exit" msgstr "-h or --help\tImprime la ayuda de comandos (este mensaje) y termina." -#: main.c:2557 +#: main.c:2566 msgid "--version\t\tPrint version information and exit" msgstr "--version\t\tImprime la información de versión y termina." -#: main.c:2561 +#: main.c:2570 msgid "" "\n" "Arguments recognised by gvim (Motif version):\n" @@ -3357,7 +3369,7 @@ msgstr "" "\n" "Argumentos reconocidos por gvim (versión Motif):\n" -#: main.c:2565 +#: main.c:2574 msgid "" "\n" "Arguments recognised by gvim (neXtaw version):\n" @@ -3365,7 +3377,7 @@ msgstr "" "\n" "Argumentos reconocidos por gvim (versión neXtaw):\n" -#: main.c:2567 +#: main.c:2576 msgid "" "\n" "Arguments recognised by gvim (Athena version):\n" @@ -3373,76 +3385,76 @@ msgstr "" "\n" "Argumentos reconocidos por gvim (versión Athena):\n" -#: main.c:2571 +#: main.c:2580 msgid "-display <display>\tRun vim on <display>" msgstr "-display <pantalla>\tEjecuta vim en <pantalla>" -#: main.c:2572 +#: main.c:2581 msgid "-iconic\t\tStart vim iconified" msgstr "-iconic\t\tArranca vim «iconizado»" -#: main.c:2574 +#: main.c:2583 msgid "-name <name>\t\tUse resource as if vim was <name>" msgstr "-name <nombre>\t\tUsa un recurso como si vim fuese <nombre>" -#: main.c:2575 +#: main.c:2584 msgid "\t\t\t (Unimplemented)\n" msgstr "\t\t\t (Sin implementar)\n" -#: main.c:2577 +#: main.c:2586 msgid "-background <color>\tUse <color> for the background (also: -bg)" msgstr "-background <color>\tUsa <color> para el fondo (también: -bg)" -#: main.c:2578 +#: main.c:2587 msgid "-foreground <color>\tUse <color> for normal text (also: -fg)" msgstr "-foreground <color>\tUsa <color> para el texto normal (también: -fg)" -#: main.c:2579 main.c:2599 +#: main.c:2588 main.c:2608 msgid "-font <font>\t\tUse <font> for normal text (also: -fn)" msgstr "" "-font <tipo>\t\tUsa <fuente de impresión> para el texto normal (también: -fn)" -#: main.c:2580 +#: main.c:2589 msgid "-boldfont <font>\tUse <font> for bold text" msgstr "-boldfont <tipo>\tUsa <fuente de impresión> para texto en negrita" -#: main.c:2581 +#: main.c:2590 msgid "-italicfont <font>\tUse <font> for italic text" msgstr "-italicfont <tipo>\tUsa <fuente de impresión> para texto en cursiva" -#: main.c:2582 main.c:2600 +#: main.c:2591 main.c:2609 msgid "-geometry <geom>\tUse <geom> for initial geometry (also: -geom)" msgstr "" "-geometry <geom>\tUsa <geom> para la geometría inicial (también: -geom)" -#: main.c:2583 +#: main.c:2592 msgid "-borderwidth <width>\tUse a border width of <width> (also: -bw)" msgstr "-borderwidth <ancho>\tUsa un ancho de borde de <ancho> (también: -bw)" -#: main.c:2584 +#: main.c:2593 msgid "-scrollbarwidth <width> Use a scrollbar width of <width> (also: -sw)" msgstr "" "-scrollbarwidth <ancho> Usa una barra de desplazamiento de ancho <ancho> " "(también: -sw)" -#: main.c:2586 +#: main.c:2595 msgid "-menuheight <height>\tUse a menu bar height of <height> (also: -mh)" msgstr "" "-menuheight <alt>\tUsa una barra de menú de altura <alt> (también: -mh)" -#: main.c:2588 main.c:2601 +#: main.c:2597 main.c:2610 msgid "-reverse\t\tUse reverse video (also: -rv)" msgstr "-reverse\t\tUsar vídeo inverso (también: -rv)" -#: main.c:2589 +#: main.c:2598 msgid "+reverse\t\tDon't use reverse video (also: +rv)" msgstr "+reverse\t\tNo usar vídeo inverso (también: +rv)" -#: main.c:2590 +#: main.c:2599 msgid "-xrm <resource>\tSet the specified resource" msgstr "-xrm <recurso>\tEstablece el recurso especificado" -#: main.c:2593 +#: main.c:2602 msgid "" "\n" "Arguments recognised by gvim (RISC OS version):\n" @@ -3450,15 +3462,15 @@ msgstr "" "\n" "Argumentos reconocidos por gvim (versión para RISC OS):\n" -#: main.c:2594 +#: main.c:2603 msgid "--columns <number>\tInitial width of window in columns" msgstr "--columns <número>\tAnchura inicial de la ventana, en columnas" -#: main.c:2595 +#: main.c:2604 msgid "--rows <number>\tInitial height of window in rows" msgstr "--rows <número>\tAltura inicial de la ventana, en filas" -#: main.c:2598 +#: main.c:2607 msgid "" "\n" "Arguments recognised by gvim (GTK+ version):\n" @@ -3466,50 +3478,50 @@ msgstr "" "\n" "Argumentos reconocidos por gvim (versión GTK+):\n" -#: main.c:2602 +#: main.c:2611 msgid "-display <display>\tRun vim on <display> (also: --display)" msgstr "-display <pantalla>\tEjecuta vim en <pantalla> (también: --display)" -#: main.c:2604 +#: main.c:2613 msgid "--role <role>\tSet a unique role to identify the main window" msgstr "" "--role <role>\tDefine un rol único para identificar la ventana principal." -#: main.c:2606 +#: main.c:2615 msgid "--socketid <xid>\tOpen Vim inside another GTK widget" msgstr "--socketid <xid>\tAbre a Vim dentro de otro «widget» GTK." -#: main.c:2609 +#: main.c:2618 msgid "-P <parent title>\tOpen Vim inside parent application" msgstr "-P <título ventana padre>\tAbrir a Vim dentro de la aplicación padre." -#: main.c:2847 +#: main.c:2856 msgid "No display" msgstr "No hay una ventana" # Failed to send, abort. #. Failed to send, abort. -#: main.c:2862 +#: main.c:2871 msgid ": Send failed.\n" msgstr ": Falló el envio.\n" # Let vim start normally. #. Let vim start normally. -#: main.c:2868 +#: main.c:2877 msgid ": Send failed. Trying to execute locally\n" msgstr "" ": Falló el inicio de sesión remota («send»). Intentado una ejecución local.\n" -#: main.c:2906 main.c:2927 +#: main.c:2915 main.c:2936 #, c-format msgid "%d of %d edited" msgstr "%d de %d editados" -#: main.c:2949 +#: main.c:2958 msgid "No display: Send expression failed.\n" msgstr "No hay una ventana en el destino: El envio de la expresión falló.\n" -#: main.c:2961 +#: main.c:2970 msgid ": Send expression failed.\n" msgstr ": Falló el envio de la expresión.\n" @@ -3627,23 +3639,23 @@ msgstr "E292: El servidor de método de entrada (IME) no está funcionando" msgid "E293: block was not locked" msgstr "E293: El bloque no estaba asegurado" -#: memfile.c:1005 +#: memfile.c:1010 msgid "E294: Seek error in swap file read" msgstr "E294: Error de búsqueda al leer el fichero de intercambio" -#: memfile.c:1010 +#: memfile.c:1015 msgid "E295: Read error in swap file" msgstr "E295: Error de lectura en el fichero de intercambio" -#: memfile.c:1062 +#: memfile.c:1067 msgid "E296: Seek error in swap file write" msgstr "E296: Error de búsqueda al escribir en el fichero de intercambio" -#: memfile.c:1080 +#: memfile.c:1085 msgid "E297: Write error in swap file" msgstr "E297: Error de escritura en el fichero de intercambio" -#: memfile.c:1277 +#: memfile.c:1282 msgid "E300: Swap file already exists (symlink attack?)" msgstr "E300: Ya existe un fichero de intercambio (¿ataque de symlink?)" @@ -3661,45 +3673,45 @@ msgstr "E298: ¿No se obtuvo el bloque nº 2?" # could not (re)open the swap file, what can we do???? #. could not (re)open the swap file, what can we do???? -#: memline.c:443 +#: memline.c:444 msgid "E301: Oops, lost the swap file!!!" msgstr "E301: ¡¡¡Eeeh, se ha perdido el fichero de intercambio!!!" -#: memline.c:448 +#: memline.c:449 msgid "E302: Could not rename swap file" msgstr "E302: No se pudo cambiar el nombre del fichero de intercambio" -#: memline.c:518 +#: memline.c:519 #, c-format msgid "E303: Unable to open swap file for \"%s\", recovery impossible" msgstr "" "E303: Incapaz de abrir el fichero de intercambio para «%s», recuperación " "imposible" -#: memline.c:617 +#: memline.c:618 msgid "E304: ml_timestamp: Didn't get block 0??" msgstr "E304: «ml_timestamp»: ¿No se obtuvo el bloque 0?" -#: memline.c:757 +#: memline.c:758 #, c-format msgid "E305: No swap file found for %s" msgstr "E305: No se encontró el fichero de intercambio para %s" -#: memline.c:767 +#: memline.c:768 msgid "Enter number of swap file to use (0 to quit): " msgstr "" "Introduzca el número del fichero de intercambio a usar (0 para salir): " -#: memline.c:812 +#: memline.c:813 #, c-format msgid "E306: Cannot open %s" msgstr "E306: No puedo abrir %s" -#: memline.c:834 +#: memline.c:835 msgid "Unable to read block 0 from " msgstr "Incapaz de leer el bloque 0 de " -#: memline.c:837 +#: memline.c:838 msgid "" "\n" "Maybe no changes were made or Vim did not update the swap file." @@ -3707,28 +3719,28 @@ msgstr "" "\n" "Tal vez no se han hecho cambios o Vim no actualizó el fichero de intercambio" -#: memline.c:847 memline.c:864 +#: memline.c:848 memline.c:865 msgid " cannot be used with this version of Vim.\n" msgstr " no puede usarse con esta versión de Vim.\n" -#: memline.c:849 +#: memline.c:850 msgid "Use Vim version 3.0.\n" msgstr "Use la versión 3.0 de Vim.\n" -#: memline.c:855 +#: memline.c:856 #, c-format msgid "E307: %s does not look like a Vim swap file" msgstr "E307: %s no parece un fichero de intercambio de Vim" -#: memline.c:868 +#: memline.c:869 msgid " cannot be used on this computer.\n" msgstr "no puede usarse en este ordenador.\n" -#: memline.c:870 +#: memline.c:871 msgid "The file was created on " msgstr "El fichero fue creado el " -#: memline.c:874 +#: memline.c:875 msgid "" ",\n" "or the file has been damaged." @@ -3736,83 +3748,83 @@ msgstr "" ",\n" "o el fichero ha sido dañado." -#: memline.c:903 +#: memline.c:904 #, c-format msgid "Using swap file \"%s\"" msgstr "Usando el fichero de intercambio «%s»" -#: memline.c:909 +#: memline.c:910 #, c-format msgid "Original file \"%s\"" msgstr "Fichero original «%s»" -#: memline.c:922 +#: memline.c:923 msgid "E308: Warning: Original file may have been changed" msgstr "E308: Advertencia: el fichero original puede haber sido cambiado" -#: memline.c:975 +#: memline.c:976 #, c-format msgid "E309: Unable to read block 1 from %s" msgstr "E309: Incapaz de leer el bloque 1 de %s" -#: memline.c:979 +#: memline.c:980 msgid "???MANY LINES MISSING" msgstr "???FALTAN MUCHAS LÍNEAS" -#: memline.c:995 +#: memline.c:996 msgid "???LINE COUNT WRONG" msgstr "???RECUENTO DE LÍNEAS EQUIVOCADO" -#: memline.c:1002 +#: memline.c:1003 msgid "???EMPTY BLOCK" msgstr "???BLOQUE VACÍO" -#: memline.c:1028 +#: memline.c:1029 msgid "???LINES MISSING" msgstr "???FALTAN LÍNEAS" -#: memline.c:1060 +#: memline.c:1061 #, c-format msgid "E310: Block 1 ID wrong (%s not a .swp file?)" msgstr "E310: ID del bloque 1 equivocado (¿no es %s un fichero .swp?)" -#: memline.c:1065 +#: memline.c:1066 msgid "???BLOCK MISSING" msgstr "???FALTA UN BLOQUE" -#: memline.c:1081 +#: memline.c:1082 msgid "??? from here until ???END lines may be messed up" msgstr "??? desde aquí hast ???FIN las líneas pueden estar desordenadas" -#: memline.c:1097 +#: memline.c:1098 msgid "??? from here until ???END lines may have been inserted/deleted" msgstr "" "??? desde aquí hasta ???FIN las líneas pueden haber sido insertadas/borradas" -#: memline.c:1117 +#: memline.c:1118 msgid "???END" msgstr "???FIN" -#: memline.c:1143 +#: memline.c:1144 msgid "E311: Recovery Interrupted" msgstr "E311: Recuperación interrumpida" -#: memline.c:1148 +#: memline.c:1149 msgid "" "E312: Errors detected while recovering; look for lines starting with ???" msgstr "" "E312: Se han detectado errores al recuperar; busque líneas que empiecen " "con ???" -#: memline.c:1150 +#: memline.c:1151 msgid "See \":help E312\" for more information." msgstr "Vea «:help E312» para más información." -#: memline.c:1155 +#: memline.c:1156 msgid "Recovery completed. You should check if everything is OK." msgstr "Recuperación completada. Ud. debería comprobar que todo está bien." -#: memline.c:1156 +#: memline.c:1157 msgid "" "\n" "(You might want to write out this file under another name\n" @@ -3820,12 +3832,12 @@ msgstr "" "\n" "(Podría querer guardar este fichero con otro nombre\n" -#: memline.c:1157 +#: memline.c:1158 msgid "and run diff with the original file to check for changes)\n" msgstr "" "y ejecutar «diff» con el fichero original para comprobar los cambios)\n" -#: memline.c:1158 +#: memline.c:1159 msgid "" "Delete the .swp file afterwards.\n" "\n" @@ -3835,51 +3847,51 @@ msgstr "" # use msg() to start the scrolling properly #. use msg() to start the scrolling properly -#: memline.c:1214 +#: memline.c:1215 msgid "Swap files found:" msgstr "Se han encontrado ficheros de intercambio:" -#: memline.c:1392 +#: memline.c:1393 msgid " In current directory:\n" msgstr " En el directorio actual:\n" -#: memline.c:1394 +#: memline.c:1395 msgid " Using specified name:\n" msgstr " Usando el nombre especificado:\n" -#: memline.c:1398 +#: memline.c:1399 msgid " In directory " msgstr " En el directorio " -#: memline.c:1416 +#: memline.c:1417 msgid " -- none --\n" msgstr " -- ninguno --\n" -#: memline.c:1488 +#: memline.c:1489 msgid " owned by: " msgstr " propiedad de: " -#: memline.c:1490 +#: memline.c:1491 msgid " dated: " msgstr " de fecha: " -#: memline.c:1494 memline.c:3684 +#: memline.c:1495 memline.c:3685 msgid " dated: " msgstr " de fecha: " -#: memline.c:1510 +#: memline.c:1511 msgid " [from Vim version 3.0]" msgstr " [desde la versión 3.0 de Vim]" -#: memline.c:1514 +#: memline.c:1515 msgid " [does not look like a Vim swap file]" msgstr " [no parece un fichero de intercambio de Vim]" -#: memline.c:1518 +#: memline.c:1519 msgid " file name: " msgstr " nombre del fichero: " -#: memline.c:1524 +#: memline.c:1525 msgid "" "\n" " modified: " @@ -3887,15 +3899,15 @@ msgstr "" "\n" " modificado: " -#: memline.c:1525 +#: memline.c:1526 msgid "YES" msgstr "SI" -#: memline.c:1525 +#: memline.c:1526 msgid "no" msgstr "no" -#: memline.c:1529 +#: memline.c:1530 msgid "" "\n" " user name: " @@ -3903,11 +3915,11 @@ msgstr "" "\n" " nombre del usuario: " -#: memline.c:1536 +#: memline.c:1537 msgid " host name: " msgstr " nombre del «host»: " -#: memline.c:1538 +#: memline.c:1539 msgid "" "\n" " host name: " @@ -3915,7 +3927,7 @@ msgstr "" "\n" " nombre del «host»: " -#: memline.c:1544 +#: memline.c:1545 msgid "" "\n" " process ID: " @@ -3923,11 +3935,11 @@ msgstr "" "\n" " ID del proceso: " -#: memline.c:1550 +#: memline.c:1551 msgid " (still running)" msgstr " (aún en ejecución)" -#: memline.c:1562 +#: memline.c:1563 msgid "" "\n" " [not usable with this version of Vim]" @@ -3935,7 +3947,7 @@ msgstr "" "\n" " [no se peude usar con esta versión de Vim]" -#: memline.c:1565 +#: memline.c:1566 msgid "" "\n" " [not usable on this computer]" @@ -3943,92 +3955,92 @@ msgstr "" "\n" " [no se puede usar en este ordenador]" -#: memline.c:1570 +#: memline.c:1571 msgid " [cannot be read]" msgstr " [no se puede leer]" -#: memline.c:1574 +#: memline.c:1575 msgid " [cannot be opened]" msgstr " [no se puede abrir]" -#: memline.c:1764 +#: memline.c:1765 msgid "E313: Cannot preserve, there is no swap file" msgstr "E313: No puedo preservarlo, no existe un fichero de intercambio" -#: memline.c:1817 +#: memline.c:1818 msgid "File preserved" msgstr "fichero preservado" -#: memline.c:1819 +#: memline.c:1820 msgid "E314: Preserve failed" msgstr "E314: Falló la preservación del fichero" -#: memline.c:1890 +#: memline.c:1891 #, c-format msgid "E315: ml_get: invalid lnum: %ld" msgstr "E315: «ml_get»: número de línea no válido: %ld" -#: memline.c:1916 +#: memline.c:1917 #, c-format msgid "E316: ml_get: cannot find line %ld" msgstr "E316: «ml_get»: no puedo encontrar la línea %ld" -#: memline.c:2306 +#: memline.c:2307 msgid "E317: pointer block id wrong 3" msgstr "E317: El id del bloque de punteros está equivocado. 3" -#: memline.c:2386 +#: memline.c:2387 msgid "stack_idx should be 0" msgstr "«stack_idx» debería ser 0" -#: memline.c:2448 +#: memline.c:2449 msgid "E318: Updated too many blocks?" msgstr "E318: ¿Demasiados bloques actualizados?" -#: memline.c:2630 +#: memline.c:2631 msgid "E317: pointer block id wrong 4" msgstr "E317: El id del bloque de punteros está equivocado. 4" -#: memline.c:2657 +#: memline.c:2658 msgid "deleted block 1?" msgstr "¿bloque 1 suprimido?" -#: memline.c:2857 +#: memline.c:2858 #, c-format msgid "E320: Cannot find line %ld" msgstr "E320: No puedo encontrar la línea %ld" -#: memline.c:3100 +#: memline.c:3101 msgid "E317: pointer block id wrong" msgstr "E317: El id del bloque de punteros está equivocado." -#: memline.c:3116 +#: memline.c:3117 msgid "pe_line_count is zero" msgstr "«pe_line_count» es cero" -#: memline.c:3145 +#: memline.c:3146 #, c-format msgid "E322: line number out of range: %ld past the end" msgstr "E322: número de línea fuera de rango: %ld más allá del final" -#: memline.c:3149 +#: memline.c:3150 #, c-format msgid "E323: line count wrong in block %ld" msgstr "E323: recuento de líneas erróneo en el bloque %ld" -#: memline.c:3198 +#: memline.c:3199 msgid "Stack size increases" msgstr "El tamaño de la pila aumenta" -#: memline.c:3244 +#: memline.c:3245 msgid "E317: pointer block id wrong 2" msgstr "E310: El id del bloque de punteros está equivocado. 2" -#: memline.c:3674 +#: memline.c:3675 msgid "E325: ATTENTION" msgstr "E325: ATENCIÓN" -#: memline.c:3675 +#: memline.c:3676 msgid "" "\n" "Found a swap file by the name \"" @@ -4036,11 +4048,11 @@ msgstr "" "\n" "Se ha encontrado un fichero de intercambio con el nombre «" -#: memline.c:3679 +#: memline.c:3680 msgid "While opening file \"" msgstr "al abrir el fichero «" -#: memline.c:3688 +#: memline.c:3689 msgid " NEWER than swap file!\n" msgstr " MÁS NUEVO que el fichero de intercambio!\n" @@ -4048,7 +4060,7 @@ msgstr " MÁS NUEVO que el fichero de intercambio!\n" # * other languages. #. Some of these messages are long to allow translation to #. * other languages. -#: memline.c:3692 +#: memline.c:3693 msgid "" "\n" "(1) Another program may be editing the same file.\n" @@ -4060,11 +4072,11 @@ msgstr "" " De ser así, tenga cuidado de no acabar con dos\n" " ejemplares diferentes del mismo fichero al hacer cambios.\n" -#: memline.c:3693 +#: memline.c:3694 msgid " Quit, or continue with caution.\n" msgstr " Salga del programa o continue con precaución.\n" -#: memline.c:3694 +#: memline.c:3695 msgid "" "\n" "(2) An edit session for this file crashed.\n" @@ -4072,11 +4084,11 @@ msgstr "" "\n" "(2) Falló una sesión de edición de este fichero.\n" -#: memline.c:3695 +#: memline.c:3696 msgid " If this is the case, use \":recover\" or \"vim -r " msgstr " Si es así, use «:recover» o «vim -r " -#: memline.c:3697 +#: memline.c:3698 msgid "" "\"\n" " to recover the changes (see \":help recovery\").\n" @@ -4084,11 +4096,11 @@ msgstr "" "»\n" " para recuperar los cambios (véa «:help recovery»).\n" -#: memline.c:3698 +#: memline.c:3699 msgid " If you did this already, delete the swap file \"" msgstr " Si Ud. ya ha hecho esto, borre el fichero de intercambio «" -#: memline.c:3700 +#: memline.c:3701 msgid "" "\"\n" " to avoid this message.\n" @@ -4096,23 +4108,23 @@ msgstr "" "»\n" " para evitar este mensaje.\n" -#: memline.c:3714 memline.c:3718 +#: memline.c:3715 memline.c:3719 msgid "Swap file \"" msgstr "¡El fichero de intercambio «" -#: memline.c:3715 memline.c:3721 +#: memline.c:3716 memline.c:3722 msgid "\" already exists!" msgstr "» ya existe!" -#: memline.c:3724 +#: memline.c:3725 msgid "VIM - ATTENTION" msgstr "VIM - ATENCIÓN" -#: memline.c:3726 +#: memline.c:3727 msgid "Swap file already exists!" msgstr "¡Ya existe un fichero de intercambio!" -#: memline.c:3730 +#: memline.c:3731 msgid "" "&Open Read-Only\n" "&Edit anyway\n" @@ -4126,7 +4138,7 @@ msgstr "" "&Salir\n" "&Abortar" -#: memline.c:3732 +#: memline.c:3733 msgid "" "&Open Read-Only\n" "&Edit anyway\n" @@ -4142,7 +4154,7 @@ msgstr "" "&Abortar\n" "&Borrarlo" -#: memline.c:3789 +#: memline.c:3790 msgid "E326: Too many swap files found" msgstr "E326: Se han encontrado demasiados ficheros de intercambio" @@ -4252,11 +4264,11 @@ msgstr " (RET/BS: línea, ESPACIO/b: página, d/u: media página, q: salir)" msgid " (RET: line, SPACE: page, d: half page, q: quit)" msgstr " (RET: línea, ESPACIO: página, d: media página, q: salir)" -#: message.c:2982 message.c:2997 +#: message.c:2988 message.c:3003 msgid "Question" msgstr "Pregunta" -#: message.c:2984 +#: message.c:2990 msgid "" "&Yes\n" "&No" @@ -4264,7 +4276,7 @@ msgstr "" "&Si\n" "&No" -#: message.c:3017 +#: message.c:3023 msgid "" "&Yes\n" "&No\n" @@ -4278,16 +4290,16 @@ msgstr "" "&Descartar todo\n" "&Cancelar" -#: message.c:3058 +#: message.c:3064 msgid "Save File dialog" msgstr "Diálogo de Guardar Fichero" -#: message.c:3060 +#: message.c:3066 msgid "Open File dialog" msgstr "Diálogo de Abrir Fichero" #. TODO: non-GUI file selector here -#: message.c:3131 +#: message.c:3137 msgid "E338: Sorry, no file browser in console mode" msgstr "E338: Lo siento, no hay hojeador de ficheros en modo de consola" @@ -4465,35 +4477,35 @@ msgstr "leido del socket Netbeans" msgid "E658: NetBeans connection lost for buffer %ld" msgstr "E658: Se perdió la conexión NetBeans para el «buffer» %ld." -#: normal.c:2980 +#: normal.c:2983 msgid "Warning: terminal cannot highlight" msgstr "Advertencia: el terminal no puede realzar el texto" -#: normal.c:3276 +#: normal.c:3279 msgid "E348: No string under cursor" msgstr "E348: No hay ninguna cadena bajo el cursor" -#: normal.c:3278 +#: normal.c:3281 msgid "E349: No identifier under cursor" msgstr "E349: No hay ningún identificador bajo el cursor" -#: normal.c:4519 +#: normal.c:4522 msgid "E352: Cannot erase folds with current 'foldmethod'" msgstr "E352: No puedo borar pliegues con el «folmethod» actual." -#: normal.c:6740 +#: normal.c:6743 msgid "E664: changelist is empty" msgstr "E664: La lista de cambios está vacía." -#: normal.c:6742 +#: normal.c:6745 msgid "E662: At start of changelist" msgstr "E662: Al comienzo de la lista de cambios." -#: normal.c:6744 +#: normal.c:6747 msgid "E663: At end of changelist" msgstr "E663: Al final de la lista de cambios." -#: normal.c:8005 +#: normal.c:8009 msgid "Type :quit<Enter> to exit Vim" msgstr "Escriba :quit<enter> para terminar la ejecución de Vim." @@ -4533,41 +4545,41 @@ msgstr "%ld líneas sangradas" # Debe mostrar la línea de comandos. #. must display the prompt -#: ops.c:1675 +#: ops.c:1688 msgid "cannot yank; delete anyway" msgstr "No puedo hacer un «yank»; ¿Lo borro de todas formas?" -#: ops.c:2261 +#: ops.c:2274 msgid "1 line changed" msgstr "1 línea cambiada" -#: ops.c:2263 +#: ops.c:2276 #, c-format msgid "%ld lines changed" msgstr "%ld líneas cambiadas" -#: ops.c:2647 +#: ops.c:2660 #, c-format msgid "freeing %ld lines" msgstr "liberando %ld líneas" -#: ops.c:2928 +#: ops.c:2941 msgid "1 line yanked" msgstr "1 línea copiada" -#: ops.c:2930 +#: ops.c:2943 #, c-format msgid "%ld lines yanked" msgstr "%ld líneas copiadas" -#: ops.c:3215 +#: ops.c:3228 #, c-format msgid "E353: Nothing in register %s" msgstr "E353: No hay nada en el registro %s" # Highlight title #. Highlight title -#: ops.c:3766 +#: ops.c:3779 msgid "" "\n" "--- Registers ---" @@ -4575,11 +4587,11 @@ msgstr "" "\n" "--- Registros ---" -#: ops.c:5075 +#: ops.c:5088 msgid "Illegal register name" msgstr "Nombre de registro ilegal" -#: ops.c:5163 +#: ops.c:5176 msgid "" "\n" "# Registers:\n" @@ -4587,34 +4599,34 @@ msgstr "" "\n" "# Registros:\n" -#: ops.c:5213 +#: ops.c:5226 #, c-format msgid "E574: Unknown register type %d" msgstr "E574: Registro desconocido de tipo «%d»." -#: ops.c:5698 +#: ops.c:5711 #, c-format msgid "E354: Invalid register name: '%s'" msgstr "E354: Nombre de registro no válido: '%s'" -#: ops.c:6058 +#: ops.c:6071 #, c-format msgid "%ld Cols; " msgstr "%ld Cols; " -#: ops.c:6065 +#: ops.c:6078 #, c-format msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes" msgstr "" "Seleccionadas %s%ld de %ld Líneas; %ld de %ld Palabras; %ld de %ld Caracteres" -#: ops.c:6081 +#: ops.c:6094 #, c-format msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld" msgstr "" "Col %s de %s; Línea %ld de %ld; Palabra %ld de %ld; Carácter %ld de %ld" -#: ops.c:6092 +#: ops.c:6105 #, c-format msgid "(+%ld for BOM)" msgstr "(+%ld para BOM)" @@ -4740,48 +4752,48 @@ msgstr "E536: Se requiere una coma." msgid "E537: 'commentstring' must be empty or contain %s" msgstr "E537: «commentstring» debe estar vacio o contener «%s»." -#: option.c:5679 +#: option.c:5682 msgid "E538: No mouse support" msgstr "E538: No hay soporte para el ratón." -#: option.c:5947 +#: option.c:5950 msgid "E540: Unclosed expression sequence" msgstr "E540: SEcuencia de expresión sin cerrar." -#: option.c:5951 +#: option.c:5954 msgid "E541: too many items" msgstr "E541: Demasiados ítems." -#: option.c:5953 +#: option.c:5956 msgid "E542: unbalanced groups" msgstr "E542: Grupos desbalanceados." -#: option.c:6193 +#: option.c:6196 msgid "E590: A preview window already exists" msgstr "E590: Ya existe una ventana de visualización previa." -#: option.c:6450 +#: option.c:6453 msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "" "W17: El uso de árabe requiere la codificación UTF-8, use «:set encoding=utf-" "8» primero." -#: option.c:6783 +#: option.c:6786 #, c-format msgid "E593: Need at least %d lines" msgstr "E593: Necesita al menos %d líneas." -#: option.c:6793 +#: option.c:6796 #, c-format msgid "E594: Need at least %d columns" msgstr "E594: Necesita al menos %d columnas." -#: option.c:7100 +#: option.c:7103 #, c-format msgid "E355: Unknown option: %s" msgstr "E355: Opción desconocida: %s" -#: option.c:7220 +#: option.c:7223 msgid "" "\n" "--- Terminal codes ---" @@ -4789,7 +4801,7 @@ msgstr "" "\n" "--- Códigos de terminal ---" -#: option.c:7222 +#: option.c:7225 msgid "" "\n" "--- Global option values ---" @@ -4797,7 +4809,7 @@ msgstr "" "\n" "--- Valores de las opciones globales ---" -#: option.c:7224 +#: option.c:7227 msgid "" "\n" "--- Local option values ---" @@ -4805,7 +4817,7 @@ msgstr "" "\n" "--- Valores de las opciones locales ---" -#: option.c:7226 +#: option.c:7229 msgid "" "\n" "--- Options ---" @@ -4813,16 +4825,16 @@ msgstr "" "\n" "--- Opciones ---" -#: option.c:7932 +#: option.c:7935 msgid "E356: get_varp ERROR" msgstr "E356: ERROR de «get_varp»" -#: option.c:8903 +#: option.c:8906 #, c-format msgid "E357: 'langmap': Matching character missing for %s" msgstr "E357: «langmap»: falta carácter coincidente para %s" -#: option.c:8937 +#: option.c:8940 #, c-format msgid "E358: 'langmap': Extra characters after semicolon: %s" msgstr "E358: «langmap»: caracteres extra después del punto y coma: %s" @@ -4857,84 +4869,84 @@ msgstr "No puedo crear " msgid "Vim exiting with %d\n" msgstr "Saliendo de Vim con %d\n" -#: os_amiga.c:937 +#: os_amiga.c:941 msgid "cannot change console mode ?!\n" msgstr "¡¿No puedo cambiar el modo de la consola?!\n" -#: os_amiga.c:1003 +#: os_amiga.c:1012 msgid "mch_get_shellsize: not a console??\n" msgstr "«mch_get_shellsize»: ¿No es una consola?\n" # if Vim opened a window: Executing a shell may cause crashes #. if Vim opened a window: Executing a shell may cause crashes -#: os_amiga.c:1152 +#: os_amiga.c:1161 msgid "E360: Cannot execute shell with -f option" msgstr "E360: No se puede ejecutar la «shell» con la opción -f" -#: os_amiga.c:1193 os_amiga.c:1283 +#: os_amiga.c:1202 os_amiga.c:1292 msgid "Cannot execute " msgstr "No puedo ejecutarlo " -#: os_amiga.c:1196 os_amiga.c:1293 +#: os_amiga.c:1205 os_amiga.c:1302 msgid "shell " msgstr "«shell» " -#: os_amiga.c:1216 os_amiga.c:1318 +#: os_amiga.c:1225 os_amiga.c:1327 msgid " returned\n" msgstr " devuelto\n" -#: os_amiga.c:1459 +#: os_amiga.c:1468 msgid "ANCHOR_BUF_SIZE too small." msgstr "«ANCHOR_BUF_SIZE» demasiado pequeño" -#: os_amiga.c:1463 +#: os_amiga.c:1472 msgid "I/O ERROR" msgstr "ERROR E/S" -#: os_mswin.c:539 +#: os_mswin.c:548 msgid "...(truncated)" msgstr "...(truncado)" -#: os_mswin.c:641 +#: os_mswin.c:650 msgid "'columns' is not 80, cannot execute external commands" msgstr "'columns' no es 80, no se pueden ejecutar comandos externos" -#: os_mswin.c:1973 +#: os_mswin.c:1982 msgid "E237: Printer selection failed" msgstr "E237: FAlló la selectión de impresora." -#: os_mswin.c:2013 +#: os_mswin.c:2022 #, c-format msgid "to %s on %s" msgstr "para %s en %s" -#: os_mswin.c:2028 +#: os_mswin.c:2037 #, c-format msgid "E613: Unknown printer font: %s" msgstr "E613: Fuente de impresión desconocida en la impresora: %s" -#: os_mswin.c:2077 os_mswin.c:2087 +#: os_mswin.c:2086 os_mswin.c:2096 #, c-format msgid "E238: Print error: %s" msgstr "E238: Error de impresión: %s" -#: os_mswin.c:2088 +#: os_mswin.c:2097 msgid "Unknown" msgstr "Desconocido" -#: os_mswin.c:2115 +#: os_mswin.c:2124 #, c-format msgid "Printing '%s'" msgstr "Imprimiendo «%s»" -#: os_mswin.c:3204 +#: os_mswin.c:3213 #, c-format msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" msgstr "" "E244: El nombre del conjunto de caracteres «%s» no es válido en el nombre de " "la fuente de impresión «%s»" -#: os_mswin.c:3212 +#: os_mswin.c:3221 #, c-format msgid "E245: Illegal char '%c' in font name \"%s\"" msgstr "E245: Carácter «%c» ilegal en el nombre de la fuente de impresión «%s»" @@ -4969,15 +4981,15 @@ msgstr "" "\n" "Vim: Hay un error de X11\n" -#: os_unix.c:1334 +#: os_unix.c:1338 msgid "Testing the X display failed" msgstr "Falló la prueba del sistema X11" -#: os_unix.c:1473 +#: os_unix.c:1477 msgid "Opening the X display timed out" msgstr "El «display» de X no abrió a tiempo." -#: os_unix.c:3230 os_unix.c:3910 +#: os_unix.c:3234 os_unix.c:3914 msgid "" "\n" "Cannot execute shell " @@ -4985,7 +4997,7 @@ msgstr "" "\n" "No puedo ejecutar la «shell» " -#: os_unix.c:3278 +#: os_unix.c:3282 msgid "" "\n" "Cannot execute shell sh\n" @@ -4993,7 +5005,7 @@ msgstr "" "\n" "No puedo ejecutar la «shell» «sh»\n" -#: os_unix.c:3282 os_unix.c:3916 +#: os_unix.c:3286 os_unix.c:3920 msgid "" "\n" "shell returned " @@ -5001,7 +5013,7 @@ msgstr "" "\n" "La «shell» ha devuelto " -#: os_unix.c:3417 +#: os_unix.c:3421 msgid "" "\n" "Cannot create pipes\n" @@ -5009,7 +5021,7 @@ msgstr "" "\n" "No puedo crear «pipes»\n" -#: os_unix.c:3432 +#: os_unix.c:3436 msgid "" "\n" "Cannot fork\n" @@ -5017,7 +5029,7 @@ msgstr "" "\n" "No puedo usar «fork»\n" -#: os_unix.c:3923 +#: os_unix.c:3927 msgid "" "\n" "Command terminated\n" @@ -5025,27 +5037,27 @@ msgstr "" "\n" "Comando finalizado\n" -#: os_unix.c:4187 os_unix.c:4312 os_unix.c:5978 +#: os_unix.c:4191 os_unix.c:4316 os_unix.c:5982 msgid "XSMP lost ICE connection" msgstr "XSMP perdió la conexión ICE." -#: os_unix.c:5561 +#: os_unix.c:5565 msgid "Opening the X display failed" msgstr "Falló la apertura de la pantalla X11" -#: os_unix.c:5883 +#: os_unix.c:5887 msgid "XSMP handling save-yourself request" msgstr "XSMP está manejando una solicitud de «guardelo usted mismo»." -#: os_unix.c:6002 +#: os_unix.c:6006 msgid "XSMP opening connection" msgstr "XSMP está abriendo una conexión." -#: os_unix.c:6021 +#: os_unix.c:6025 msgid "XSMP ICE connection watch failed" msgstr "XSMP Falló el monitoreo de la conexión ICE." -#: os_unix.c:6041 +#: os_unix.c:6045 #, c-format msgid "XSMP SmcOpenConnection failed: %s" msgstr "XSMP SmcOpenConnection ha fallado: %s." @@ -5312,75 +5324,75 @@ msgstr "Subcoincidencias externas:\n" msgid "+--%3ld lines folded " msgstr "+--%3ld líneas plegadas" -#: screen.c:7996 +#: screen.c:8000 msgid " VREPLACE" msgstr " REEMPLAZAMIENTO VIRTUAL" -#: screen.c:8000 +#: screen.c:8004 msgid " REPLACE" msgstr " REEMPLAZAR" -#: screen.c:8005 +#: screen.c:8009 msgid " REVERSE" msgstr " INVERTIR" -#: screen.c:8007 +#: screen.c:8011 msgid " INSERT" msgstr " INSERTAR" -#: screen.c:8010 +#: screen.c:8014 msgid " (insert)" msgstr " (insertar)" -#: screen.c:8012 +#: screen.c:8016 msgid " (replace)" msgstr " (reemplazar)" -#: screen.c:8014 +#: screen.c:8018 msgid " (vreplace)" msgstr " (reemplazamiento virtual)" -#: screen.c:8017 +#: screen.c:8021 msgid " Hebrew" msgstr " Hebreo" -#: screen.c:8028 +#: screen.c:8032 msgid " Arabic" msgstr " árabe" -#: screen.c:8031 +#: screen.c:8035 msgid " (lang)" msgstr " (idioma)" -#: screen.c:8035 +#: screen.c:8039 msgid " (paste)" msgstr " (pegar)" -#: screen.c:8048 +#: screen.c:8052 msgid " VISUAL" msgstr " VISUAL" -#: screen.c:8049 +#: screen.c:8053 msgid " VISUAL LINE" msgstr " LÍNEA VISUAL" -#: screen.c:8050 +#: screen.c:8054 msgid " VISUAL BLOCK" msgstr " BLOQUE VISUAL" -#: screen.c:8051 +#: screen.c:8055 msgid " SELECT" msgstr " SELECCIONAR" -#: screen.c:8052 +#: screen.c:8056 msgid " SELECT LINE" msgstr " SELECCIONAR LÍNEA" -#: screen.c:8053 +#: screen.c:8057 msgid " SELECT BLOCK" msgstr " SELECCIONAR BLOQUE" -#: screen.c:8068 screen.c:8131 +#: screen.c:8072 screen.c:8135 msgid "recording" msgstr "grabando" @@ -5407,58 +5419,58 @@ msgstr "E384: La búsqueda ha llegado al PRINCIPIO sin coincidencias con: %s" msgid "E385: search hit BOTTOM without match for: %s" msgstr "E385: La búsqueda ha llegado al FINAL sin coincidencias con: %s" -#: search.c:1249 +#: search.c:1250 msgid "E386: Expected '?' or '/' after ';'" msgstr "E386: Esperaba «?» o «/» después de «;»" -#: search.c:3759 +#: search.c:3769 msgid " (includes previously listed match)" msgstr " (incluye la coincidencia mostrada previamente)." # cursor at status line #. cursor at status line -#: search.c:3779 +#: search.c:3789 msgid "--- Included files " msgstr "--- Ficheros incluidos " -#: search.c:3781 +#: search.c:3791 msgid "not found " msgstr "no lo encontré" -#: search.c:3782 +#: search.c:3792 msgid "in path ---\n" msgstr "en la ruta ---\n" -#: search.c:3839 +#: search.c:3849 msgid " (Already listed)" msgstr " (Ya lo enumeré)" -#: search.c:3841 +#: search.c:3851 msgid " NOT FOUND" msgstr " NO SE ENCONTRÓ" -#: search.c:3893 +#: search.c:3903 #, c-format msgid "Scanning included file: %s" msgstr "Explorando el fichero incluido: %s" -#: search.c:4111 +#: search.c:4121 msgid "E387: Match is on current line" msgstr "E387: La coincidencia está en la línea en curso." -#: search.c:4254 +#: search.c:4264 msgid "All included files were found" msgstr "Se han encontrado todos los ficheros incluidos" -#: search.c:4256 +#: search.c:4266 msgid "No included files" msgstr "No hay ficheros incluidos" -#: search.c:4272 +#: search.c:4282 msgid "E388: Couldn't find definition" msgstr "E388: No se pudo encontrar la definición" -#: search.c:4274 +#: search.c:4284 msgid "E389: Couldn't find pattern" msgstr "E389: No se pudo encontrar el patrón" @@ -5898,7 +5910,7 @@ msgstr "E440: falta la línea deshacer." # Only MS VC 4.1 and earlier can do Win32s #. Only MS VC 4.1 and earlier can do Win32s -#: version.c:739 +#: version.c:721 msgid "" "\n" "MS-Windows 16/32 bit GUI version" @@ -5906,7 +5918,7 @@ msgstr "" "\n" "Versión GUI de 16/32 bits para MS-Windows" -#: version.c:741 +#: version.c:723 msgid "" "\n" "MS-Windows 32 bit GUI version" @@ -5914,15 +5926,15 @@ msgstr "" "\n" "Versión GUI de 32 bits para MS-Windows" -#: version.c:744 +#: version.c:726 msgid " in Win32s mode" msgstr " en modo Win32s" -#: version.c:746 +#: version.c:728 msgid " with OLE support" msgstr " con soporte para OLE" -#: version.c:749 +#: version.c:731 msgid "" "\n" "MS-Windows 32 bit console version" @@ -5930,7 +5942,7 @@ msgstr "" "\n" "Versión de 32 bits para consola de MS-Windows" -#: version.c:753 +#: version.c:735 msgid "" "\n" "MS-Windows 16 bit version" @@ -5938,7 +5950,7 @@ msgstr "" "\n" "Versión de 16 bits para MS-Windows" -#: version.c:757 +#: version.c:739 msgid "" "\n" "32 bit MS-DOS version" @@ -5946,7 +5958,7 @@ msgstr "" "\n" "Versión de 32 bits para MS-DOS" -#: version.c:759 +#: version.c:741 msgid "" "\n" "16 bit MS-DOS version" @@ -5954,7 +5966,7 @@ msgstr "" "\n" "Versión de 16 bits para MS-DOS" -#: version.c:765 +#: version.c:747 msgid "" "\n" "MacOS X (unix) version" @@ -5962,7 +5974,7 @@ msgstr "" "\n" "Versión X (unix) para MacOS" -#: version.c:767 +#: version.c:749 msgid "" "\n" "MacOS X version" @@ -5970,7 +5982,7 @@ msgstr "" "\n" "Versión X para MacOS" -#: version.c:770 +#: version.c:752 msgid "" "\n" "MacOS version" @@ -5978,7 +5990,7 @@ msgstr "" "\n" "Versión para MacOS" -#: version.c:775 +#: version.c:757 msgid "" "\n" "RISC OS version" @@ -5986,7 +5998,7 @@ msgstr "" "\n" "Versión para RISC OS" -#: version.c:785 +#: version.c:767 msgid "" "\n" "Included patches: " @@ -5994,11 +6006,11 @@ msgstr "" "\n" "Parches incluidos: " -#: version.c:811 version.c:1179 +#: version.c:793 version.c:1161 msgid "Modified by " msgstr "Modificado por " -#: version.c:818 +#: version.c:800 msgid "" "\n" "Compiled " @@ -6006,11 +6018,11 @@ msgstr "" "\n" "Compilado " -#: version.c:821 +#: version.c:803 msgid "by " msgstr "por " -#: version.c:833 +#: version.c:815 msgid "" "\n" "Huge version " @@ -6018,7 +6030,7 @@ msgstr "" "\n" "Versión «enorme» " -#: version.c:836 +#: version.c:818 msgid "" "\n" "Big version " @@ -6026,7 +6038,7 @@ msgstr "" "\n" "Versión «grande» " -#: version.c:839 +#: version.c:821 msgid "" "\n" "Normal version " @@ -6034,7 +6046,7 @@ msgstr "" "\n" "Versión «normal» " -#: version.c:842 +#: version.c:824 msgid "" "\n" "Small version " @@ -6042,7 +6054,7 @@ msgstr "" "\n" "Versión «pequeña» " -#: version.c:844 +#: version.c:826 msgid "" "\n" "Tiny version " @@ -6050,233 +6062,233 @@ msgstr "" "\n" "Versión «diminuta» " -#: version.c:850 +#: version.c:832 msgid "without GUI." msgstr "sin GUI." -#: version.c:855 +#: version.c:837 msgid "with GTK2-GNOME GUI." msgstr "con GUI GTK2-GNOME." -#: version.c:857 +#: version.c:839 msgid "with GTK-GNOME GUI." msgstr "con GUI GTK-GNOME." -#: version.c:861 +#: version.c:843 msgid "with GTK2 GUI." msgstr "con GUI GTK2." -#: version.c:863 +#: version.c:845 msgid "with GTK GUI." msgstr "con GUI GTK." -#: version.c:868 +#: version.c:850 msgid "with X11-Motif GUI." msgstr "con GUI X11-Motif." -#: version.c:872 +#: version.c:854 msgid "with X11-neXtaw GUI." msgstr "con GUI X11-neXtaw." -#: version.c:874 +#: version.c:856 msgid "with X11-Athena GUI." msgstr "con GUI X11-Athena." -#: version.c:878 +#: version.c:860 msgid "with BeOS GUI." msgstr "con GUI para BeOS." -#: version.c:881 +#: version.c:863 msgid "with Photon GUI." msgstr "con GUI para Photon." -#: version.c:884 +#: version.c:866 msgid "with GUI." msgstr "con GUI." -#: version.c:887 +#: version.c:869 msgid "with Carbon GUI." msgstr "con Carbon GUI." -#: version.c:890 +#: version.c:872 msgid "with Cocoa GUI." msgstr "con Cocoa GUI." -#: version.c:893 +#: version.c:875 msgid "with (classic) GUI." msgstr "con GUI (clásico)." -#: version.c:904 +#: version.c:886 msgid " Features included (+) or not (-):\n" msgstr " Aspectos incluidos (+) o no (-):\n" -#: version.c:916 +#: version.c:898 msgid " system vimrc file: \"" msgstr " fichero «vimrc» del sistema: \"" -#: version.c:921 +#: version.c:903 msgid " user vimrc file: \"" msgstr " fichero «vimrc» del usuario: \"" -#: version.c:926 +#: version.c:908 msgid " 2nd user vimrc file: \"" msgstr " 2º fichero «vimrc» del usuario: \"" -#: version.c:931 +#: version.c:913 msgid " 3rd user vimrc file: \"" msgstr " 3er fichero «vimrc» del usuario: \"" -#: version.c:936 +#: version.c:918 msgid " user exrc file: \"" msgstr " fichero «exrc» del usuario: \"" -#: version.c:941 +#: version.c:923 msgid " 2nd user exrc file: \"" msgstr " 2º fichero «exrc» del usuario: \"" -#: version.c:947 +#: version.c:929 msgid " system gvimrc file: \"" msgstr " fichero «gvimrc» del sistema: \"" -#: version.c:951 +#: version.c:933 msgid " user gvimrc file: \"" msgstr " fichero «gvimrc» del usuario: \"" -#: version.c:955 +#: version.c:937 msgid "2nd user gvimrc file: \"" msgstr " 2º fichero «gvimrc» del usuario: \"" -#: version.c:960 +#: version.c:942 msgid "3rd user gvimrc file: \"" msgstr "3er fichero «gvimrc» del usuario: \"" -#: version.c:967 +#: version.c:949 msgid " system menu file: \"" msgstr " fichero de menú del sistema: \"" -#: version.c:975 +#: version.c:957 msgid " fall-back for $VIM: \"" msgstr " localización de $VIM: \"" -#: version.c:981 +#: version.c:963 msgid " f-b for $VIMRUNTIME: \"" msgstr " localización de $VIMRUNTIME: \"" -#: version.c:985 +#: version.c:967 msgid "Compilation: " msgstr "Compilación: " -#: version.c:991 +#: version.c:973 msgid "Compiler: " msgstr "Compilador: " -#: version.c:996 +#: version.c:978 msgid "Linking: " msgstr "Enlazado: " -#: version.c:1001 +#: version.c:983 msgid " DEBUG BUILD" msgstr " COMPILACIÓN CON SÍMBOLOS DE DEPURACIÓN" -#: version.c:1040 +#: version.c:1022 msgid "VIM - Vi IMproved" msgstr "VIM - VI Mejorado" -#: version.c:1042 +#: version.c:1024 msgid "version " msgstr "versión " -#: version.c:1043 +#: version.c:1025 msgid "by Bram Moolenaar et al." msgstr "por Bram Moolenaar et al." -#: version.c:1047 +#: version.c:1029 msgid "Vim is open source and freely distributable" msgstr "Vim es código abierto y se puede distribuir libremente" -#: version.c:1049 +#: version.c:1031 msgid "Help poor children in Uganda!" msgstr "¡Ayude a los niños pobres de Uganda!" -#: version.c:1050 +#: version.c:1032 msgid "type :help iccf<Enter> for information " msgstr "escriba «:help iccf<Intro>» para más información " -#: version.c:1052 +#: version.c:1034 msgid "type :q<Enter> to exit " msgstr "escriba «:q<Intro>» para salir " -#: version.c:1053 +#: version.c:1035 msgid "type :help<Enter> or <F1> for on-line help" msgstr "escriba «:help<Intro> o <F1>» para obtener ayuda " -#: version.c:1054 +#: version.c:1036 msgid "type :help version6<Enter> for version info" msgstr "escriba «:help version6<Intro>» para información de la versión" -#: version.c:1057 +#: version.c:1039 msgid "Running in Vi compatible mode" msgstr "Ejecutando en modo compatible con Vi" -#: version.c:1058 +#: version.c:1040 msgid "type :set nocp<Enter> for Vim defaults" msgstr "escriba «:set nocp<Intro>» para los valores predefinidos de Vim" -#: version.c:1059 +#: version.c:1041 msgid "type :help cp-default<Enter> for info on this" msgstr "escriba «:help cp-default<Intro>» para más información" -#: version.c:1074 +#: version.c:1056 msgid "menu Help->Orphans for information " msgstr "menú Ayuda->Ayude a los niños huérfanos para más información " -#: version.c:1076 +#: version.c:1058 msgid "Running modeless, typed text is inserted" msgstr "Ejecución no modal, el texto escrito se inserta directamente" -#: version.c:1077 +#: version.c:1059 msgid "menu Edit->Global Settings->Toggle Insert Mode " msgstr "menu Editar->Opciones globales->Activar/Desactivar modo de inserción" -#: version.c:1078 +#: version.c:1060 msgid " for two modes " msgstr " para dos modos " -#: version.c:1082 +#: version.c:1064 msgid "menu Edit->Global Settings->Toggle Vi Compatible" msgstr "" "menu Editar->Opciones globales->Activar/Desactivar compatibilidad con Vi" -#: version.c:1083 +#: version.c:1065 msgid " for Vim defaults " msgstr "" " para los valores predeterminados de Vim" -#: version.c:1130 +#: version.c:1112 msgid "Sponsor Vim development!" msgstr "¡Patrocine el desarrollo de Vim!" -#: version.c:1131 +#: version.c:1113 msgid "Become a registered Vim user!" msgstr "¡Conviertase en un usuario registrado de Vim!" -#: version.c:1134 +#: version.c:1116 msgid "type :help sponsor<Enter> for information " msgstr "escriba :help sponsor<Intro> para más información " -#: version.c:1135 +#: version.c:1117 msgid "type :help register<Enter> for information " msgstr "escriba «:help register<Intro>» para más información " -#: version.c:1137 +#: version.c:1119 msgid "menu Help->Sponsor/Register for information " msgstr "menu Ayuda->Benefactor/Regístrese para más información." -#: version.c:1147 +#: version.c:1129 msgid "WARNING: Windows 95/98/ME detected" msgstr "AVISO: se ha detectado Windows 95/98/ME" -#: version.c:1150 +#: version.c:1132 msgid "type :help windows95<Enter> for info on this" msgstr "escriba: «:help windows95<Intro>» para más información" @@ -6313,7 +6325,7 @@ msgstr "E446: No hay un nombre de fichero bajo el cursor" msgid "E447: Can't find file \"%s\" in path" msgstr "E447: No se puede encontrar el fichero «%s» en la ruta" -#: if_perl.xs:326 globals.h:1236 +#: if_perl.xs:326 globals.h:1241 #, c-format msgid "E370: Could not load library %s" msgstr "E370: No se pudo cargar la biblioteca dinámica %s." @@ -6368,7 +6380,7 @@ msgstr "error en gvimext.dll" msgid "Path length too long!" msgstr "¡La ruta de acceso es demasiado larga!" -#: globals.h:1026 +#: globals.h:1031 msgid "--No lines in buffer--" msgstr "--No hay líneas en el buffer--" @@ -6378,395 +6390,395 @@ msgstr "--No hay líneas en el buffer--" #. * The error messages that can be shared are included here. #. * Excluded are errors that are only used once and debugging messages. #. -#: globals.h:1189 +#: globals.h:1194 msgid "E470: Command aborted" msgstr "E470: El comando abortó." -#: globals.h:1190 +#: globals.h:1195 msgid "E471: Argument required" msgstr "E471: Se requiere un argumento." -#: globals.h:1191 +#: globals.h:1196 msgid "E10: \\ should be followed by /, ? or &" msgstr "E10: \\ debería ir seguido de /, ? o &." -#: globals.h:1193 +#: globals.h:1198 msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits" msgstr "" "E11: No es válido en la ventana de la línea de comandos: <CR> ejecuta, CTRL-" "C sale." -#: globals.h:1195 +#: globals.h:1200 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search" msgstr "" "E12: Comando no permitido desde exrc/vimrc en el dir en curso o al buscar " "«tags»" -#: globals.h:1197 +#: globals.h:1202 msgid "E171: Missing :endif" msgstr "E171: Falta «:endif»" -#: globals.h:1198 +#: globals.h:1203 msgid "E600: Missing :endtry" msgstr "E600: Falta «:endtry»" -#: globals.h:1199 +#: globals.h:1204 msgid "E170: Missing :endwhile" msgstr "E170: Falta «:endwhile»" -#: globals.h:1200 +#: globals.h:1205 msgid "E588: :endwhile without :while" msgstr "E588: «:endwhile» sin «:while»." -#: globals.h:1202 +#: globals.h:1207 msgid "E13: File exists (add ! to override)" msgstr "E13: El fichero ya existe (use ! para sobreescribir)" -#: globals.h:1203 +#: globals.h:1208 msgid "E472: Command failed" msgstr "E472: Falló el comando" -#: globals.h:1205 +#: globals.h:1210 #, c-format msgid "E234: Unknown fontset: %s" msgstr "E234: Conjunto de fuentes de impresión desconocido: %s" -#: globals.h:1209 +#: globals.h:1214 #, c-format msgid "E235: Unknown font: %s" msgstr "E235: Fuente de impresión desconocida: %s" -#: globals.h:1212 +#: globals.h:1217 #, c-format msgid "E236: Font \"%s\" is not fixed-width" msgstr "E236: La fuente de impresión «%s» no es de ancho fijo" -#: globals.h:1214 +#: globals.h:1219 msgid "E473: Internal error" msgstr "E473: Error interno." -#: globals.h:1215 +#: globals.h:1220 msgid "Interrupted" msgstr "Interrumpido" -#: globals.h:1216 +#: globals.h:1221 msgid "E14: Invalid address" msgstr "E14: Dirección no válida" -#: globals.h:1217 +#: globals.h:1222 msgid "E474: Invalid argument" msgstr "E474: argumento no válido" -#: globals.h:1218 +#: globals.h:1223 #, c-format msgid "E475: Invalid argument: %s" msgstr "E475: Argumento no válido: %s." -#: globals.h:1220 +#: globals.h:1225 #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: Expresión no válida: %s" -#: globals.h:1222 +#: globals.h:1227 msgid "E16: Invalid range" msgstr "E16: Rango no válido" -#: globals.h:1223 +#: globals.h:1228 msgid "E476: Invalid command" msgstr "E476: Nombre de comando no válido" -#: globals.h:1225 +#: globals.h:1230 #, c-format msgid "E17: \"%s\" is a directory" msgstr "E17: «%s» es un directorio" -#: globals.h:1228 +#: globals.h:1233 msgid "E18: Unexpected characters before '='" msgstr "E18: Caracteres inesperados delante de «=»" -#: globals.h:1231 +#: globals.h:1236 #, c-format msgid "E364: Library call failed for \"%s()\"" msgstr "E364: Falló la llamada a biblioteca para «%s»()" -#: globals.h:1237 +#: globals.h:1242 #, c-format msgid "E448: Could not load library function %s" msgstr "E448: Could not load library function %s" -#: globals.h:1239 +#: globals.h:1244 msgid "E19: Mark has invalid line number" msgstr "E19: La marca tiene un número de línea no válido" -#: globals.h:1240 +#: globals.h:1245 msgid "E20: Mark not set" msgstr "E20: Marca sin poner" -#: globals.h:1241 +#: globals.h:1246 msgid "E21: Cannot make changes, 'modifiable' is off" msgstr "E21: No se pueden hacer cambios, «modifiable» está desactivado" -#: globals.h:1242 +#: globals.h:1247 msgid "E22: Scripts nested too deep" msgstr "E22: Demasiados «scripts» anidados" -#: globals.h:1243 +#: globals.h:1248 msgid "E23: No alternate file" msgstr "E23: No hay un fichero alternativo" -#: globals.h:1244 +#: globals.h:1249 msgid "E24: No such abbreviation" msgstr "E24: Tal abreviatura no existe" -#: globals.h:1245 +#: globals.h:1250 msgid "E477: No ! allowed" msgstr "E477: «!» no está permitido." -#: globals.h:1247 +#: globals.h:1252 msgid "E25: GUI cannot be used: Not enabled at compile time" msgstr "E25: No se puede usar el GUI: no se ha activado al compilar." -#: globals.h:1250 +#: globals.h:1255 msgid "E26: Hebrew cannot be used: Not enabled at compile time\n" msgstr "E26: No se puede usar el hebreo: no se ha activado al compilar\n" -#: globals.h:1253 +#: globals.h:1258 msgid "E27: Farsi cannot be used: Not enabled at compile time\n" msgstr "" "E27: No se puede usar el persa (farsi): no se ha activado al compilar\n" -#: globals.h:1256 +#: globals.h:1261 msgid "E800: Arabic cannot be used: Not enabled at compile time\n" msgstr "E800: No se puede usar el árabe: no se ha activado al compilar\n" -#: globals.h:1259 +#: globals.h:1264 #, c-format msgid "E28: No such highlight group name: %s" msgstr "E28: No existe el grupo de realzado con ese nombre: %s" -#: globals.h:1261 +#: globals.h:1266 msgid "E29: No inserted text yet" msgstr "E29: Aún no ha insertado texto." -#: globals.h:1262 +#: globals.h:1267 msgid "E30: No previous command line" msgstr "E30: No hay una línea de comandos previa" -#: globals.h:1263 +#: globals.h:1268 msgid "E31: No such mapping" msgstr "E31: No existe tal asociación." -#: globals.h:1264 +#: globals.h:1269 msgid "E479: No match" msgstr "E479: No hay coincidencia." -#: globals.h:1265 +#: globals.h:1270 #, c-format msgid "E480: No match: %s" msgstr "E480: No coincide: %s" -#: globals.h:1266 +#: globals.h:1271 msgid "E32: No file name" msgstr "E32: No hay un nombre de fichero." -#: globals.h:1267 +#: globals.h:1272 msgid "E33: No previous substitute regular expression" msgstr "E33: No existe una expresión regular de sustitución previa." -#: globals.h:1268 +#: globals.h:1273 msgid "E34: No previous command" msgstr "E34: No existe un comando previo." -#: globals.h:1269 +#: globals.h:1274 msgid "E35: No previous regular expression" msgstr "E35: No existe una expresión regular previa." -#: globals.h:1270 +#: globals.h:1275 msgid "E481: No range allowed" msgstr "E481: El rango no está permitido." -#: globals.h:1272 +#: globals.h:1277 msgid "E36: Not enough room" msgstr "E36: No hay espacio suficiente." -#: globals.h:1275 +#: globals.h:1280 #, c-format msgid "E247: no registered server named \"%s\"" msgstr "E247: El servidor «%s» no está registrado." -#: globals.h:1277 +#: globals.h:1282 #, c-format msgid "E482: Can't create file %s" msgstr "E482: No se puede crear el fichero «%s»" -#: globals.h:1278 +#: globals.h:1283 msgid "E483: Can't get temp file name" msgstr "E483: No puedo obtener el nombre del fichero temporal." -#: globals.h:1279 +#: globals.h:1284 #, c-format msgid "E484: Can't open file %s" msgstr "E484: No puedo abrir el fichero «%s»" -#: globals.h:1280 +#: globals.h:1285 #, c-format msgid "E485: Can't read file %s" msgstr "E485: No puedo leer el fichero «%s»." -#: globals.h:1281 +#: globals.h:1286 msgid "E37: No write since last change (add ! to override)" msgstr "" "E37: No se ha guardado el fichero desde el último cambio (añada ! para " "forzar)." -#: globals.h:1282 +#: globals.h:1287 msgid "E38: Null argument" msgstr "E38: Argumento nulo." -#: globals.h:1284 +#: globals.h:1289 msgid "E39: Number expected" msgstr "E39: Esperaba un número." -#: globals.h:1287 +#: globals.h:1292 #, c-format msgid "E40: Can't open errorfile %s" msgstr "E40: No puedo abrir el fichero de errores %s." -#: globals.h:1290 +#: globals.h:1295 msgid "E233: cannot open display" msgstr "E233: No se puede abrir la pantalla." -#: globals.h:1292 +#: globals.h:1297 msgid "E41: Out of memory!" msgstr "E41: ¡Memoria agotada!" -#: globals.h:1294 +#: globals.h:1299 msgid "Pattern not found" msgstr "No se encontró el patrón de búsqueda." -#: globals.h:1296 +#: globals.h:1301 #, c-format msgid "E486: Pattern not found: %s" msgstr "E486: No se encontró el patrón de búsqueda: %s" -#: globals.h:1297 +#: globals.h:1302 msgid "E487: Argument must be positive" msgstr "E487: El argumento debe ser positivo." -#: globals.h:1299 +#: globals.h:1304 msgid "E459: Cannot go back to previous directory" msgstr "E459: No puedo regresar al directorio previo." -#: globals.h:1303 +#: globals.h:1308 msgid "E42: No Errors" msgstr "E42: No hay errores" -#: globals.h:1305 +#: globals.h:1310 msgid "E43: Damaged match string" msgstr "E43: Cadena de concidencia dañada." -#: globals.h:1306 +#: globals.h:1311 msgid "E44: Corrupted regexp program" msgstr "E44: El programa «regexp» está corrupto." -#: globals.h:1307 +#: globals.h:1312 msgid "E45: 'readonly' option is set (add ! to override)" msgstr "E45: Está activa la opción «readonly» (añada «!» para forzar)." -#: globals.h:1309 +#: globals.h:1314 #, c-format msgid "E46: Cannot set read-only variable \"%s\"" msgstr "E46: No se puede definir la variable de sólo lectura «%s»." -#: globals.h:1312 +#: globals.h:1317 msgid "E47: Error while reading errorfile" msgstr "E47: Error al leer el fichero de errores." -#: globals.h:1315 +#: globals.h:1320 msgid "E48: Not allowed in sandbox" msgstr "E48: No se permite en el ambiente protegido." -#: globals.h:1317 +#: globals.h:1322 msgid "E523: Not allowed here" msgstr "E523: No se permite aquí." -#: globals.h:1320 +#: globals.h:1325 msgid "E359: Screen mode setting not supported" msgstr "E359: La configuración de la pantalla no es válida." -#: globals.h:1322 +#: globals.h:1327 msgid "E49: Invalid scroll size" msgstr "E49: El tamaño de desplazamiento no válido." -#: globals.h:1323 +#: globals.h:1328 msgid "E91: 'shell' option is empty" msgstr "E91: La opción «shell» está vacía." -#: globals.h:1325 +#: globals.h:1330 msgid "E255: Couldn't read in sign data!" msgstr "E255: ¡No se pudo leer los datos de los signos!" -#: globals.h:1327 +#: globals.h:1332 msgid "E72: Close error on swap file" msgstr "E72: Error de cierre en el fichero de intercambio" -#: globals.h:1328 +#: globals.h:1333 msgid "E73: tag stack empty" msgstr "E73: La pila de «tags» está vacía." -#: globals.h:1329 +#: globals.h:1334 msgid "E74: Command too complex" msgstr "E74: El comando es demasiado complejo." -#: globals.h:1330 +#: globals.h:1335 msgid "E75: Name too long" msgstr "E75: El nombre es demasiado largo." -#: globals.h:1331 +#: globals.h:1336 msgid "E76: Too many [" msgstr "E76: Hay demasiados [" -#: globals.h:1332 +#: globals.h:1337 msgid "E77: Too many file names" msgstr "E77: Hay demasiados nombres de ficheros." -#: globals.h:1333 +#: globals.h:1338 msgid "E488: Trailing characters" msgstr "E488: Caracteres en exceso al final de la línea." -#: globals.h:1334 +#: globals.h:1339 msgid "E78: Unknown mark" msgstr "E78: Marca desconocida." -#: globals.h:1335 +#: globals.h:1340 msgid "E79: Cannot expand wildcards" msgstr "E79: No puedo expandir los comodines." -#: globals.h:1337 +#: globals.h:1342 msgid "E591: 'winheight' cannot be smaller than 'winminheight'" msgstr "E591: «winheight» no puede ser más pequeño que «winminheight»." -#: globals.h:1339 +#: globals.h:1344 msgid "E592: 'winwidth' cannot be smaller than 'winminwidth'" msgstr "E592: «winwidth» no puede ser más pequeño que «winminwidth»." -#: globals.h:1342 +#: globals.h:1347 msgid "E80: Error while writing" msgstr "E80: Error al escribir el fichero." -#: globals.h:1343 +#: globals.h:1348 msgid "Zero count" msgstr "El recuento es cero." -#: globals.h:1345 +#: globals.h:1350 msgid "E81: Using <SID> not in a script context" msgstr "E81: Usando <SID> en un contexto que no es de «script»" -#: globals.h:1348 +#: globals.h:1353 msgid "E449: Invalid expression received" msgstr "E449: Recibí una expresión inválida." -#: globals.h:1351 +#: globals.h:1356 msgid "E463: Region is guarded, cannot modify" msgstr "E463: La región está protegida, no puedo modificarla." @@ -726,6 +726,7 @@ extern char* (*dyn_libintl_textdomain)(const char* domainname); #define REMAP_YES 0 /* allow remapping */ #define REMAP_NONE -1 /* no remapping */ #define REMAP_SCRIPT -2 /* remap script-local mappings only */ +#define REMAP_SKIP -3 /* no remapping for first char */ /* Values for mch_call_shell() second argument */ #define SHELL_FILTER 1 /* filtering text */ |