summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Filelist14
-rw-r--r--runtime/doc/eval.txt19
-rw-r--r--runtime/doc/filetype.txt4
-rw-r--r--runtime/doc/insert.txt7
-rw-r--r--runtime/doc/options.txt292
-rw-r--r--runtime/doc/repeat.txt12
-rw-r--r--runtime/doc/todo.txt32
-rw-r--r--runtime/doc/usr_05.txt12
-rw-r--r--runtime/doc/version7.txt73
-rw-r--r--runtime/plugin/explorer.vim8
-rw-r--r--runtime/plugin/netrw.vim2038
-rw-r--r--runtime/syntax/logtalk.vim102
-rw-r--r--runtime/syntax/texinfo.vim4
-rw-r--r--src/GvimExt/GvimExt.reg20
-rw-r--r--src/GvimExt/Make_bc5.mak43
-rw-r--r--src/GvimExt/Make_ming.mak63
-rw-r--r--src/GvimExt/Makefile35
-rw-r--r--src/GvimExt/README.txt94
-rw-r--r--src/GvimExt/gvimext.cpp979
-rw-r--r--src/GvimExt/gvimext.def8
-rw-r--r--src/GvimExt/gvimext.h164
-rw-r--r--src/GvimExt/gvimext.inf22
-rw-r--r--src/GvimExt/gvimext.rc111
-rw-r--r--src/GvimExt/gvimext_ming.def10
-rw-r--r--src/GvimExt/gvimext_ming.rc45
-rw-r--r--src/GvimExt/resource.h15
-rw-r--r--src/GvimExt/uninst.bat1
-rw-r--r--src/edit.c34
-rw-r--r--src/eval.c2
-rw-r--r--src/ex_cmds2.c20
-rw-r--r--src/ex_getln.c4
-rw-r--r--src/fileio.c6
-rw-r--r--src/getchar.c25
-rw-r--r--src/misc1.c3
-rw-r--r--src/option.c2
-rw-r--r--src/option.h3
-rw-r--r--src/os_win32.c44
-rw-r--r--src/po/es.po1698
-rw-r--r--src/vim.h1
39 files changed, 3944 insertions, 2125 deletions
diff --git a/Filelist b/Filelist
index 6048ee20d..45014a906 100644
--- a/Filelist
+++ b/Filelist
@@ -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."
diff --git a/src/vim.h b/src/vim.h
index d85aa0719..c3482017e 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -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 */