mirror of
https://github.com/vim/vim.git
synced 2025-07-04 23:07:33 -04:00
updated for version 7.0017
This commit is contained in:
parent
e5f258eb4c
commit
3fdfa4a9a5
@ -1,4 +1,4 @@
|
||||
*autocmd.txt* For Vim version 7.0aa. Last change: 2004 Aug 30
|
||||
*autocmd.txt* For Vim version 7.0aa. Last change: 2004 Sep 17
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -234,22 +234,26 @@ BufWriteCmd Before writing the whole buffer to a file.
|
||||
should not be changed. |Cmd-event|
|
||||
*FileWritePre*
|
||||
FileWritePre Before writing to a file, when not writing the
|
||||
whole buffer.
|
||||
whole buffer. Use the '[ and '] marks for the
|
||||
range of lines.
|
||||
*FileWritePost*
|
||||
FileWritePost After writing to a file, when not writing the
|
||||
whole buffer.
|
||||
*FileWriteCmd*
|
||||
FileWriteCmd Before writing to a file, when not writing the
|
||||
whole buffer. Should do the writing to the
|
||||
file. Should not change the buffer.
|
||||
file. Should not change the buffer. Use the
|
||||
'[ and '] marks for the range of lines.
|
||||
|Cmd-event|
|
||||
*FileAppendPre*
|
||||
FileAppendPre Before appending to a file.
|
||||
FileAppendPre Before appending to a file. Use the '[ and ']
|
||||
marks for the range of lines.
|
||||
*FileAppendPost*
|
||||
FileAppendPost After appending to a file.
|
||||
*FileAppendCmd*
|
||||
FileAppendCmd Before appending to a file. Should do the
|
||||
appending to the file. |Cmd-event|
|
||||
appending to the file. Use the '[ and ']
|
||||
marks for the range of lines.|Cmd-event|
|
||||
*FilterWritePre*
|
||||
FilterWritePre Before writing a file for a filter command or
|
||||
making a diff.
|
||||
@ -738,8 +742,9 @@ The '[ and '] marks have a special position:
|
||||
the new lines will be inserted.
|
||||
- Before the *ReadPost event the '[ mark is set to the first line that was
|
||||
just read, the '] mark to the last line.
|
||||
- Before executing the *WritePre and *AppendPre autocommands the '[ mark is
|
||||
set to the first line that will be written, the '] mark to the last line.
|
||||
- Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[
|
||||
mark is set to the first line that will be written, the '] mark to the last
|
||||
line.
|
||||
Careful: '[ and '] change when using commands that change the buffer.
|
||||
|
||||
In commands which expect a file name, you can use "<afile>" for the file name
|
||||
|
@ -1,4 +1,4 @@
|
||||
*change.txt* For Vim version 7.0aa. Last change: 2004 Jun 16
|
||||
*change.txt* For Vim version 7.0aa. Last change: 2004 Sep 16
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -659,7 +659,7 @@ magic nomagic action ~
|
||||
\0 replaced with the whole matched pattern *\0* *s/\0*
|
||||
\1 replaced with the matched pattern in the first
|
||||
pair of () *s/\1*
|
||||
\2 replaced with the matched pattern in the first
|
||||
\2 replaced with the matched pattern in the second
|
||||
pair of () *s/\2*
|
||||
.. .. *s/\3*
|
||||
\9 replaced with the matched pattern in the ninth
|
||||
|
@ -1,4 +1,4 @@
|
||||
*digraph.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
|
||||
*digraph.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -28,7 +28,8 @@ An alternative is using the 'keymap' option.
|
||||
*E104* *E39*
|
||||
:dig[raphs] {char1}{char2} {number} ...
|
||||
Add digraph {char1}{char2} to the list. {number} is
|
||||
the decimal representation of the character.
|
||||
the decimal representation of the character. Normally
|
||||
it is the Unicode character, see |digraph-encoding|.
|
||||
Example: >
|
||||
:digr e: 235 a: 228
|
||||
< Avoid defining a digraph with '_' (underscore) as the
|
||||
@ -48,7 +49,24 @@ In the middle of each column is the resulting character. This may be mangled
|
||||
if you look at it on a system that does not support digraphs or if you print
|
||||
this file.
|
||||
|
||||
The decimal number is the number of the character.
|
||||
*digraph-encoding*
|
||||
The decimal number normally is the Unicode number of the character. Note that
|
||||
the meaning doesn't change when 'encoding' changes. The character will be
|
||||
converted from Unicode to 'encoding' when needed. This does require the
|
||||
conversion to be available, it might fail.
|
||||
|
||||
When Vim was compiled without the +multi_byte feature, you need to specify the
|
||||
character in the encoding given with 'encoding'. You might want to use
|
||||
something like this: >
|
||||
|
||||
if has("multi_byte")
|
||||
digraph oe 339
|
||||
elseif &encoding == "iso-8859-15"
|
||||
digraph oe 189
|
||||
endif
|
||||
|
||||
This defines the "oe" digraph for a character that is number 339 in Unicode
|
||||
and 189 in latin9 (iso-8859-15).
|
||||
|
||||
==============================================================================
|
||||
2. Using digraphs *digraphs-use*
|
||||
@ -142,6 +160,9 @@ Example: a: is
|
||||
These are the RFC1345 digraphs for the one-byte characters. See the output of
|
||||
":digraphs" for the others. The characters above 255 are only available when
|
||||
Vim was compiled with the |+multi_byte| feature.
|
||||
|
||||
Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was
|
||||
added for this.
|
||||
*digraph-table*
|
||||
char digraph hex dec official name ~
|
||||
^@ NU 0x00 0 NULL (NUL)
|
||||
|
@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
|
||||
*eval.txt* For Vim version 7.0aa. Last change: 2004 Oct 06
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -125,8 +125,8 @@ Expression syntax summary, from least to most significant:
|
||||
|expr8| expr9[expr1] index in String
|
||||
|
||||
|expr9| number number constant
|
||||
"string" string constant
|
||||
'string' literal string constant
|
||||
"string" string constant, backslash is special
|
||||
'string' string constant
|
||||
&option option value
|
||||
(expr1) nested expression
|
||||
variable internal variable
|
||||
@ -355,13 +355,18 @@ Note that "\000" and "\x00" force the end of the string.
|
||||
|
||||
literal-string *literal-string* *E115*
|
||||
---------------
|
||||
'string' literal string constant *expr-'*
|
||||
'string' string constant *expr-'*
|
||||
|
||||
Note that single quotes are used.
|
||||
|
||||
This string is taken literally. No backslashes are removed or have a special
|
||||
meaning. A literal-string cannot contain a single quote. Use a normal string
|
||||
for that.
|
||||
This string is taken as it is. No backslashes are removed or have a special
|
||||
meaning. A literal-string cannot contain a single quote. Use a normal,
|
||||
double-quoted string for that.
|
||||
|
||||
Single quoted strings are useful for patterns, so that backslashes do not need
|
||||
to be doubled. These two commands are equivalent: >
|
||||
if a =~ "\\s*"
|
||||
if a =~ '\s*'
|
||||
|
||||
|
||||
option *expr-option* *E112* *E113*
|
||||
|
@ -79,9 +79,33 @@ All the examples below assume this naming scheme. Note that you need to do
|
||||
this again for every buffer.
|
||||
|
||||
The auto-instantiation can be achieved with autocommands, e.g. you can put
|
||||
something like this in your .vimrc: >
|
||||
au VimEnter,BufNew,BufNewFile,BufAdd,BufReadPre *
|
||||
\:mz (require (prefix vim- vimext)
|
||||
something like this in your .vimrc (EOFs should not have indentation): >
|
||||
function s:MzRequire()
|
||||
if has("mzscheme")
|
||||
:mz << EOF
|
||||
(require (prefix vim- vimext))
|
||||
(let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
|
||||
(when (and buf (not (eq? buf (vim-curr-buff))))
|
||||
(parameterize ((current-namespace (vim-get-buff-namespace buf)))
|
||||
(namespace-attach-module vim-global-namespace 'vimext)
|
||||
(namespace-require '(prefix vim vimext)))))
|
||||
EOF
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function s:MzStartup()
|
||||
if has("mzscheme")
|
||||
au BufNew,BufNewFile,BufAdd,BufReadPre * :call s:MzRequire()
|
||||
:mz << EOF
|
||||
(current-library-collection-paths
|
||||
(cons
|
||||
(build-path (find-system-path 'addon-dir) (version) "collects")
|
||||
(current-library-collection-paths)))
|
||||
EOF
|
||||
endif
|
||||
endfunction
|
||||
|
||||
call s:MzStartup()
|
||||
<
|
||||
|
||||
The global namespace just instantiated this module with the prefix "vimext:".
|
||||
|
@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 7.0aa. Last change: 2004 Sep 04
|
||||
*options.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -954,6 +954,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
prefer using ".bak", but make sure that you don't have files with
|
||||
".bak" that you want to keep.
|
||||
|
||||
If you like to keep a lot of backups, you could use a BufWritePre
|
||||
autocommand to change 'backupext' just before writing the file to
|
||||
include a timestamp. >
|
||||
:au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~'
|
||||
< Use 'backupdir' to put the backup in a different directory.
|
||||
|
||||
*'backupskip'* *'bsk'*
|
||||
'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
|
||||
global
|
||||
|
@ -1,4 +1,4 @@
|
||||
*pi_netrw.txt For Vim version 6.2. Last change: Sep 10, 2004
|
||||
*pi_netrw.txt For Vim version 6.2. Last change: Sep 13, 2004
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Charles E. Campbell, Jr.
|
||||
@ -587,10 +587,14 @@ NETRW BROWSER VARIABLES *netrw-browse-var*
|
||||
"directories" and "files" in the
|
||||
listing. This pattern is used to
|
||||
remove such embedded messages.
|
||||
g:netrw_keepdir keep current directory immune from the
|
||||
browsing directory. The browsing
|
||||
directory is contained in b:netrw_curdir
|
||||
g:netrw_keepdir =1 (default) keep current directory
|
||||
immune from the browsing directory.
|
||||
=0 keep the current directory the
|
||||
same as the browsing directory.
|
||||
The browsing directory is contained in
|
||||
b:netrw_curdir
|
||||
g:netrw_list_cmd command for listing remote directories
|
||||
g:netrw_longlist if =1, then long listing will be default
|
||||
g:netrw_ftp_list_cmd options for passing along to ftp for
|
||||
directory listing. Defaults:
|
||||
unix or g:netrw_cygwin set: : "ls -lF"
|
||||
@ -601,6 +605,12 @@ NETRW BROWSER VARIABLES *netrw-browse-var*
|
||||
g:netrw_local_rmdir remove directory command (rmdir)
|
||||
g:netrw_local_rename rename file/directory command
|
||||
unix-default: rm win32-default: ren
|
||||
g:netrw_maxfilenamelen =32 by default, selected so as to make
|
||||
long listings fit on 80 column displays.
|
||||
If your screen is wider, and you have
|
||||
file/directory names longer than 32 bytes,
|
||||
you may set this option to keep listings
|
||||
columnar.
|
||||
g:netrw_mkdir_cmd command for making a remote directory
|
||||
g:netrw_rm_cmd command for removing files
|
||||
g:netrw_rmdir_cmd command for removing directories
|
||||
@ -825,22 +835,26 @@ See the <plugin/NetrwFileHandlers.vim> for an example of how to handle an html
|
||||
file with mozilla.
|
||||
|
||||
|
||||
MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c*
|
||||
MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* *netrw-curdir*
|
||||
|
||||
By default, g:netrw_keepdir is 0. This setting means that the current
|
||||
directory will track the browsing directory. However, setting g:netrw_keepdir
|
||||
to 1 (say, in your <.vimrc>) will keep the current directory independent
|
||||
of the browsing directory. In that case, in order to make the two
|
||||
directories the same, use the "c" map (just type c).
|
||||
By default, g:netrw_keepdir is 1. This setting means that the current
|
||||
directory will not track the browsing directory. However, setting
|
||||
g:netrw_keepdir to 0 (say, in your <.vimrc>) will tell netrw to have the
|
||||
currently browsed directory be the current directory.
|
||||
|
||||
With the default setting for g:netrw_keepdir, in order to make the two
|
||||
directories the same, use the "c" map (just type c). That map will set
|
||||
the current directory to the current browsing directory.
|
||||
|
||||
|
||||
BOOKMARKING A DIRECTORY *netrw-b*
|
||||
BOOKMARKING A DIRECTORY *netrw-b* *netrw-bookmark* *netrw-bookmarks*
|
||||
|
||||
One may easily "bookmark" a directory by using
|
||||
|
||||
{cnt}b
|
||||
|
||||
Any count may be used.
|
||||
Any count may be used. One may use viminfo's "!" option to retain bookmarks
|
||||
between vim sessions.
|
||||
|
||||
|
||||
CHANGING TO A BOOKMARKED DIRECTORY *netrw-B*
|
||||
@ -913,7 +927,10 @@ the associated security issues.
|
||||
|
||||
P4. I would like long listings to be the default.
|
||||
|
||||
let g:netrw_longlist=1
|
||||
let g:netrw_longlist=1
|
||||
|
||||
Check out |netrw-browse-var| for more customizations that
|
||||
you can set.
|
||||
|
||||
P5. My times come up oddly in local browsing
|
||||
|
||||
@ -923,10 +940,10 @@ the associated security issues.
|
||||
your <.vimrc>:
|
||||
let g:netrw_timefmt= "%X" (where X is the option)
|
||||
|
||||
P6. I don't want my current directory changing just because I'm
|
||||
browsing somewhere.
|
||||
P6. I want my current directory to track my browsing.
|
||||
How do I do that?
|
||||
|
||||
let g:netrw_keepdir= 1
|
||||
let g:netrw_keepdir= 0
|
||||
|
||||
|
||||
==============================================================================
|
||||
@ -979,60 +996,65 @@ which is loaded automatically at startup (assuming :set nocp).
|
||||
==============================================================================
|
||||
10. History *netrw-history*
|
||||
|
||||
v48: * One may use ftp to do remote host file browsing
|
||||
v50: * directories now displayed using buftype=nofile; should keep the
|
||||
directory names as-is
|
||||
* attempts to remove empty "[No File]" buffers leftover
|
||||
from :file ..name.. commands
|
||||
* bugfix: a "caps-lock" editing difficulty left in v49 was fixed
|
||||
* syntax highlighting for "Showing:" the hiding list included
|
||||
* bookmarks can now be retained if "!" is in the viminfo option
|
||||
v49: * will use ftp for http://.../ browsing v48: * One may use ftp to
|
||||
do remote host file browsing
|
||||
* (windows and !cygwin) remote browsing with ftp can now use
|
||||
the "dir" command internally to provide listings
|
||||
* g:netrw_keepdir now allows one to keep the initial current
|
||||
directory as the current directory (normally the local
|
||||
file browser makes the currently viewed directory the
|
||||
current directory)
|
||||
directory as the current directory (normally the local file
|
||||
browser makes the currently viewed directory the current
|
||||
directory)
|
||||
* g:netrw_alto and g:netrw_altv now support alternate placement
|
||||
of windows started with o or v
|
||||
* Nread ? and Nwrite ? now uses echomsg (instead of echo) so
|
||||
:messages can repeat showing the help
|
||||
* bugfix: avoids problems with partial matches of directory names
|
||||
to prior buffers with longer names
|
||||
* one can suppress error messages with g:netrw_quiet
|
||||
* ctrl-h used instead of <Leader>h for editing hiding list
|
||||
* one may edit the sorting sequence with the S map
|
||||
* now allows confirmation of deletion with [y(es) n(o) a(ll) q(uit)]
|
||||
* the "x" map now handles special file viewing with:
|
||||
(windows) rundll32 url.dll
|
||||
(gnome) gnome-open
|
||||
(kde) kfmclient
|
||||
If none of these are on the executable path, then
|
||||
* one can suppress error messages with g:netrw_quiet ctrl-h used
|
||||
* instead of <Leader>h for editing hiding list one may edit the
|
||||
* sorting sequence with the S map now allows confirmation of
|
||||
* deletion with [y(es) n(o) a(ll) q(uit)] the "x" map now handles
|
||||
* special file viewing with:
|
||||
(windows) rundll32 url.dll (gnome) gnome-open (kde)
|
||||
kfmclient If none of these are on the executable path, then
|
||||
NetrwFileHandlers.vim is used.
|
||||
* directory bookmarking during both local and remote browsing
|
||||
implemented
|
||||
* one may view all, use the hiding list to suppress, or use the
|
||||
hiding list to show-only remote and local file/directory listings
|
||||
* improved unusual file and directory name handling
|
||||
* preview window support
|
||||
v47: * now handles local directory browsing.
|
||||
v46: * now handles remote directory browsing
|
||||
hiding list to show-only remote and local file/directory
|
||||
listings
|
||||
* improved unusual file and directory name handling preview
|
||||
* window support
|
||||
v47: * now handles local directory browsing. v46: * now handles
|
||||
remote directory browsing
|
||||
* g:netrw_silent (if 1) will cause all transfers to be silent'd
|
||||
v45: * made the [user@]hostname:path form a bit more restrictive
|
||||
to better handle errors in using protocols
|
||||
(e.g. scp:usr@host:file was being recognized as an rcp request)
|
||||
v44: * changed from "rsync -a" to just "rsync"
|
||||
v45: * made the [user@]hostname:path form a bit more restrictive to
|
||||
better handle errors in using protocols (e.g. scp:usr@host:file
|
||||
was being recognized as an rcp request) v44: * changed from
|
||||
"rsync -a" to just "rsync"
|
||||
* somehow an editing error messed up the test to recognize
|
||||
use of the fetch method for NetRead.
|
||||
* more debugging statements included
|
||||
v43: * moved "Explanation" comments to <pi_netrw.txt> help file
|
||||
as "Network Reference" (|netrw-ref|)
|
||||
v43: * moved "Explanation" comments to <pi_netrw.txt> help file as
|
||||
"Network Reference" (|netrw-ref|)
|
||||
* <netrw.vim> now uses Dfunc() Decho() and Dret() for debugging
|
||||
* removed superfluous NetRestorePosn() calls
|
||||
v42: * now does BufReadPre and BufReadPost events on file:///*
|
||||
and file://localhost/*
|
||||
v41: * installed file:///* and file://localhost/* handling
|
||||
v40: * prevents redraw when a protocol error occurs so that the
|
||||
user may see it
|
||||
v39: * sftp support
|
||||
v38: * Now uses NetRestorePosn() calls with Nread/Nwrite commands
|
||||
v42: * now does BufReadPre and BufReadPost events on file:///* and
|
||||
file://localhost/* v41: * installed file:///* and
|
||||
file://localhost/* handling v40: * prevents redraw when a
|
||||
protocol error occurs so that the user may see it v39: * sftp
|
||||
support v38: * Now uses NetRestorePosn() calls with
|
||||
Nread/Nwrite commands
|
||||
* Temporary files now removed via bwipe! instead of bwipe
|
||||
(thanks to Dave Roberts)
|
||||
v37: * Claar's modifications which test if ftp is successful, otherwise
|
||||
give an error message
|
||||
(thanks to Dave Roberts) v37: * Claar's modifications which
|
||||
test if ftp is successful, otherwise give an error message
|
||||
* After a read, the alternate file was pointing to the temp file.
|
||||
The temp file buffer is now wiped out.
|
||||
* removed silent from transfer methods so user can see what's
|
||||
|
@ -1,4 +1,4 @@
|
||||
*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
|
||||
*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 18
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -1799,7 +1799,7 @@ If you do not want complex things like '@{${"foo"}}' to be parsed: >
|
||||
|
||||
:let perl_no_extended_vars = 1
|
||||
|
||||
{In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.)
|
||||
(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.)
|
||||
|
||||
The coloring strings can be changed. By default strings and qq friends will be
|
||||
highlighted like the first line. If you set the variable
|
||||
|
@ -3542,6 +3542,7 @@ E675 print.txt /*E675*
|
||||
E676 options.txt /*E676*
|
||||
E677 eval.txt /*E677*
|
||||
E678 pattern.txt /*E678*
|
||||
E679 syntax.txt /*E679*
|
||||
E68 pattern.txt /*E68*
|
||||
E69 pattern.txt /*E69*
|
||||
E70 pattern.txt /*E70*
|
||||
@ -4414,6 +4415,7 @@ diff-options diff.txt /*diff-options*
|
||||
diff-patchexpr diff.txt /*diff-patchexpr*
|
||||
diff.txt diff.txt /*diff.txt*
|
||||
digraph-arg change.txt /*digraph-arg*
|
||||
digraph-encoding digraph.txt /*digraph-encoding*
|
||||
digraph-table digraph.txt /*digraph-table*
|
||||
digraph.txt digraph.txt /*digraph.txt*
|
||||
digraphs digraph.txt /*digraphs*
|
||||
@ -4920,7 +4922,6 @@ hebrew hebrew.txt /*hebrew*
|
||||
hebrew.txt hebrew.txt /*hebrew.txt*
|
||||
help various.txt /*help*
|
||||
help-context help.txt /*help-context*
|
||||
help-tags tags 1
|
||||
help-translated various.txt /*help-translated*
|
||||
help-xterm-window various.txt /*help-xterm-window*
|
||||
help.txt help.txt /*help.txt*
|
||||
@ -5454,6 +5455,8 @@ netrw-R pi_netrw.txt /*netrw-R*
|
||||
netrw-S pi_netrw.txt /*netrw-S*
|
||||
netrw-activate pi_netrw.txt /*netrw-activate*
|
||||
netrw-b pi_netrw.txt /*netrw-b*
|
||||
netrw-bookmark pi_netrw.txt /*netrw-bookmark*
|
||||
netrw-bookmarks pi_netrw.txt /*netrw-bookmarks*
|
||||
netrw-browse pi_netrw.txt /*netrw-browse*
|
||||
netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds*
|
||||
netrw-browse-var pi_netrw.txt /*netrw-browse-var*
|
||||
@ -5463,6 +5466,7 @@ netrw-contents pi_netrw.txt /*netrw-contents*
|
||||
netrw-cr pi_netrw.txt /*netrw-cr*
|
||||
netrw-credits pi_netrw.txt /*netrw-credits*
|
||||
netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l*
|
||||
netrw-curdir pi_netrw.txt /*netrw-curdir*
|
||||
netrw-d pi_netrw.txt /*netrw-d*
|
||||
netrw-debug pi_netrw.txt /*netrw-debug*
|
||||
netrw-delete pi_netrw.txt /*netrw-delete*
|
||||
|
@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
|
||||
*todo.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -30,18 +30,15 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
Endless loop when "syntax reset" in ~/.vim/after/syntax/syncolor.vim.
|
||||
Crash when using ":set background=dark". Solved!
|
||||
Limit init_highlight() to five recursive calls?
|
||||
patch for Vim 6.3 for free_oldval and init_highlight()?
|
||||
Add browsedir(): like browse() but for directories.
|
||||
For GTK it already sort-of works when the default name is empty.
|
||||
|
||||
Crash with long line. (Walter Briscoe, Sep 13)
|
||||
When ":file" sets the alternate file name and it's empty this doesn't make
|
||||
sense. Could skip it, but would that break scripts that rely on the buffer to
|
||||
exist?
|
||||
|
||||
Add fix for appending BOM to 6.3? Reported by Alex Jakushev.
|
||||
|
||||
Win32 console doesn't compile. Does GetCommandLineW() work for non-GUI?
|
||||
(Dave Roberts) If yes, then move the functions to another file.
|
||||
link with kernel32.lib?
|
||||
Folding support for 2html. (Carl Osterwisch, Oct 4)
|
||||
How to evaluate an expression in the sandbox?
|
||||
|
||||
Aborting at the ATTENTION prompt causes trouble:
|
||||
buffer remains active, nwindows isn't closed (fixed in buffer.c)
|
||||
@ -59,7 +56,44 @@ Win32: When the path to a file has Russian characters, ":cd %:p:h" doesn't
|
||||
work. (Valery Kondakoff)
|
||||
Solved in os_mswin.c. Add to 6.3?
|
||||
|
||||
Patch for Win32 textdomain: NAKADAIRA Yukihiro, Sept 17.
|
||||
|
||||
GTK 2 error message with this sequence (Namsh Oct 7):
|
||||
- start gvim with French locale
|
||||
- set enc=utf-8
|
||||
- :aunmenu *
|
||||
- :unlet did_install_default_menus
|
||||
- :source $VIMRUNTIME/menu.vim
|
||||
|
||||
Valencia: executable("xxd.exe") returns true while "!xxd" doesn't work.
|
||||
Works fine for me. Only in specific environment?
|
||||
|
||||
netrw plugin: When coming back to the same directory a scratch buffer appears.
|
||||
Only on Win32. (Charles Campbell, Sept 15)
|
||||
|
||||
New Eiffel indent script from Jocelyn Fiat. OK with David Clarke.
|
||||
|
||||
Win32: not using 'tenc' in GUI causes problems on Win 98? (Jiri Jezdinsky)
|
||||
Try out with Russian input method.
|
||||
|
||||
After "Y" '[ and '] are not at start/end of the yanked text. (Ken Clark)
|
||||
|
||||
Patch for adding 'fsync' option: disable using fsync() on file write. (Sept.
|
||||
26, Ciaran McCreesh)
|
||||
|
||||
Folding for C syntax: (Olaf Dabrunz 27 sept 2004)
|
||||
|
||||
Add remark about using Vim with VS .net to Visvim docs. (David Fishburn, Sept
|
||||
27)
|
||||
|
||||
Vim icon for documents associated with Vim? (Rahul Kulkarni, sept 28)
|
||||
|
||||
Add a function to test if a font name actually works.
|
||||
|
||||
When using "set laststatus=2 cmdheight=2" in the .gvimrc you only get one line
|
||||
for the cmdline. (Christian Robinson) When the Vim window is resized (e.g.,
|
||||
xterm with many lines) it's OK.
|
||||
|
||||
|
||||
For version 7.0:
|
||||
|
||||
@ -70,6 +104,7 @@ For version 7.0:
|
||||
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. 2004 Jul 11
|
||||
When more than two lines: perform a search in the Visual area only.
|
||||
8 Make 'statusline' local, so that each window can have a different
|
||||
value. But should it also be local to a buffer? (Yegappan Lakshmanan
|
||||
has a patch, 2004 Jul 11)
|
||||
@ -168,6 +203,12 @@ For version 7.0:
|
||||
- findmatch() should be adjusted for Lisp. See remark at
|
||||
get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram,
|
||||
incomplete patch Mar 18)
|
||||
- Set user variables to the names of the actually used user vimrc file,
|
||||
the first directory looked for user plugins/syntax files.
|
||||
$MYVIMRC for .vimrc, $MYGVIMRC for .gvimrc, $MYRUNTIME/plugin for
|
||||
runtime files?
|
||||
Also: when the environment variable exists, use it. If it doesn't
|
||||
exist, set it. Requires good names: $VIM_USER_VIMRC $VIM_USER_DIR
|
||||
|
||||
|
||||
- In the kvim/KDE source files fix the formatting.
|
||||
@ -192,6 +233,8 @@ For version 7.0:
|
||||
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.
|
||||
- Use wordlists from openoffice (myspell). Work together with them to
|
||||
update the wordlist. (Adri Verhoef, Aad Nales)
|
||||
- REFACTORING: The main() function is very long. Move parts to separate
|
||||
functions, especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004
|
||||
Feb 9).
|
||||
@ -205,9 +248,33 @@ For version 7.0:
|
||||
http://sourceforge.net/projects/insenvim
|
||||
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
|
||||
Ivan Villanueva has something for Java.
|
||||
Can't call it Intellisense, it is a trademark by Microsoft.
|
||||
Ideas from the Vim 7 BOF at SANE:
|
||||
- It's not possible to have one solution for all languages. Design an
|
||||
interface for completion plugins. The matches can be done in a
|
||||
Vim-script list.
|
||||
- For interpreted languages, use the interpreter to obtain information.
|
||||
Should work for Java (Eclipse does this), Python, Tcl, etc.
|
||||
- Check Readline for its completion interface.
|
||||
- Use ctags for other languages. Writing a file could trigger running
|
||||
ctags, merging the tags of the changed file.
|
||||
- UNDO TREE: keep all states of the text, don't delete undo info.
|
||||
When making a change, instead of clearing any future undo (thus redo)
|
||||
info, make a new branch.
|
||||
To navigate through the undo tree number the states of the text
|
||||
sequentially and make it possible to go through the tree in that order.
|
||||
Could also use timestamps (to show the time and/or jump to a state five
|
||||
minutes ago). (David Schweikert)
|
||||
To go from one state to another: backtrack to a common state, then forward
|
||||
again.
|
||||
Only difficult thing: When going back in time, how to find the previous
|
||||
text state in the tree?
|
||||
Show the list of changes in a window to be able to select a version?
|
||||
- PERSISTENT UNDO: store undo in a file.
|
||||
Support multiple threads. Show the list of changes in a window to be able
|
||||
to select a version.
|
||||
Use timestamps, so that a version a certain time ago can be found and info
|
||||
before some time/date can be flushed. 'undopersist' gives maximum time to
|
||||
keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and
|
||||
extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
|
||||
7 SWAP FILE CHANGE: When a dos format file was edited with ":e ++ff=unix",
|
||||
Vim is killed and trying to recover the file, 'ff' will be dos. Same for
|
||||
non-default fileencoding. (Miroslaw Dobrzanski-Neumann, Jul 17)
|
||||
@ -235,8 +302,12 @@ For version 7.0:
|
||||
- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
|
||||
Especially when using the scrollbar. Typing a cursor-movement command
|
||||
scrolls back to where the cursor is.
|
||||
- Execute a function with standard option values. No need to save and
|
||||
restore option values. Especially useful for new options. Problem: how
|
||||
to avoid a performance penalty (esp. for string options)?
|
||||
8 Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
|
||||
Add the 'maxcombining' option to set the nr. of composing characters.
|
||||
At the same time support more colors (use two bytes when necessary).
|
||||
- Add a few more things to 'diffopt': "horizontal", "vertical",
|
||||
"foldcolumn". (Benji Fisher, 2004 Jun 21)
|
||||
- FileChangedShellPost autocommand event: after (not) reloading a changed
|
||||
@ -265,6 +336,9 @@ For version 7.0:
|
||||
- "onemore" flag in 'virtualedit': move cursor past end of line. Patch by
|
||||
Mattias Flodin (2004 Jul 30)
|
||||
|
||||
The fsync() in buf_write() causes laptop harddisk spinup. Add an option to
|
||||
avoid it?
|
||||
|
||||
Support ":set syntax=cpp.doxygen"? Suggested patch by Michael Geddes (9 Aug
|
||||
2004). Should also work for 'filetype'.
|
||||
|
||||
@ -274,6 +348,9 @@ Smilauer, 2004 Sep 13)
|
||||
Win32: In 'fileencodings' allow using "acp" for the active codepage. Useful
|
||||
value: "ucs-bom,utf-8,acp,latin1"
|
||||
|
||||
Win32: Cannot edit a file starting with # with --remote. (Giuseppe Bilotta,
|
||||
Oct 6 2004)
|
||||
|
||||
For manipulating buffers without opening a new window, support Virtual
|
||||
windows. Example:
|
||||
:virtwin let l = GetBufLine(4, 10)
|
||||
@ -291,6 +368,10 @@ Win32: In the generated batch files, use $VIMRUNTIME if it's set. Examples by
|
||||
Mathias Michaelis (2004 Sep 6)
|
||||
Also place vimtutor.bat in %windir%?
|
||||
|
||||
Support ":enew filename" to edit a new buffer with a name. It's like "enew |
|
||||
file filename" but without setting the alternate file to a buffer without a
|
||||
name. (Charles Campbell)
|
||||
|
||||
|
||||
Vi incompatibility:
|
||||
9 In Ex mode, "u" undoes all changes, not just the last one. (John Cowan)
|
||||
@ -386,6 +467,7 @@ GTK+ GUI known bugs:
|
||||
|
||||
KDE GUI known bugs:
|
||||
- The default font is ugly. bold text isn't displayed correctly.
|
||||
(bold characters are half the width of normal characters)
|
||||
- Error messages when starting up. The "tip of the day" box is empty.
|
||||
- Encoding of menu items needs to be converted. (Yasuhiro Matsumoto)
|
||||
|
||||
@ -2041,6 +2123,7 @@ Autocommands:
|
||||
*Leave - Leaving a mode (in pair with the above *Enter)
|
||||
VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled
|
||||
when exiting isn't a good idea.
|
||||
WinMoved - when windows have been moved around, e.g, ":wincmd J"
|
||||
CmdUndefined - Like FuncUndefined but for user commands.
|
||||
SearchPost - After doing a search command (e.g. to do "M")
|
||||
PreDirChanged/PostDirChanged
|
||||
@ -2511,8 +2594,6 @@ Mappings and Abbreviations:
|
||||
- Add command to repeat a whole mapping ("." only repeats the last change in
|
||||
a mapping). Also: Repeat a whole insert command, including any mappings
|
||||
that it included. Sort-of automatic recording?
|
||||
- Make it possible to undo all the commands from a mapping, including a
|
||||
trailing unfinished command, e.g. for ":map K iX^[r".
|
||||
- Add an option to ":map" that makes it display the special keys in
|
||||
<> notation (e.g. <CR> instead of ^M). Or just always do this?
|
||||
- Include an option (or flag to 'cpoptions') that makes errors in mappings
|
||||
@ -2663,6 +2744,8 @@ item stack to allow matching (). One side is "push X on
|
||||
|
||||
|
||||
Undo:
|
||||
- Make it possible to undo all the commands from a mapping, including a
|
||||
trailing unfinished command, e.g. for ":map K iX^[r".
|
||||
- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
|
||||
possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a",
|
||||
etc. Postpone saving for undo until something is really inserted?
|
||||
@ -2676,9 +2759,6 @@ Undo:
|
||||
version without changing the rest of the file. Stop doing this when a
|
||||
change includes only some of these lines and changes the line count. Need
|
||||
to store these undo actions as a separate change that can be undone.
|
||||
7 Add an undo tree: When making a change, instead of clearing any future
|
||||
undo (thus redo) info, make a new branch. How to navigate through the
|
||||
undo tree?
|
||||
- For u_save() include the column number. This can be used to set '[ and '].
|
||||
And in the future the undo can be made more efficient (Webb).
|
||||
- In out-of-memory situations: Free allocated space in undo, and reduce the
|
||||
@ -2897,7 +2977,7 @@ Digraphs:
|
||||
below/above).
|
||||
- Use digraph table to tell Vim about the collating sequence of special
|
||||
characters?
|
||||
8 Add command to remove (all) digraphs. (Brown)
|
||||
8 Add command to remove one or more (all) digraphs. (Brown)
|
||||
7 Support different sets of digraphs (depending on the character set?). At
|
||||
least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
*usr_41.txt* For Vim version 7.0aa. Last change: 2004 Aug 28
|
||||
*usr_41.txt* For Vim version 7.0aa. Last change: 2004 Oct 06
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@ -218,9 +218,9 @@ To avoid the need for a backslash, you can use a string in single quotes: >
|
||||
:echo name
|
||||
< "peter" ~
|
||||
|
||||
Inside a single-quote string all the characters are taken literally. The
|
||||
drawback is that it's impossible to include a single quote. A backslash is
|
||||
taken literally as well, thus you can't use it to change the meaning of the
|
||||
Inside a single-quote string all the characters are as they are. The drawback
|
||||
is that it's impossible to include a single quote. A backslash is taken
|
||||
literally as well, thus you can't use it to change the meaning of the
|
||||
character after it.
|
||||
In double-quote strings it is possible to use special characters. Here are
|
||||
a few useful ones:
|
||||
|
@ -1,4 +1,4 @@
|
||||
*version7.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
|
||||
*version7.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -243,6 +243,12 @@ upper case. Add color support to the builtin vt320 terminal codes.
|
||||
For the '%' item in 'viminfo', allow a number to set a maximum for the number
|
||||
of buffers.
|
||||
|
||||
When a file looks like a shell script, check for an "exec" command that starts
|
||||
the tcl interpreter. (suggested by Alexios Zavras)
|
||||
|
||||
Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that
|
||||
digraphs still work when iconv is not available.
|
||||
|
||||
==============================================================================
|
||||
COMPILE TIME CHANGES *compile-changes-7*
|
||||
|
||||
@ -373,4 +379,21 @@ When an error message is given while waiting for a character (e.g., when an
|
||||
xterm reports the number of colors), the hit-enter prompt overwrote the last
|
||||
line. Don't reset msg_didout in normal_cmd() for K_IGNORE.
|
||||
|
||||
Mac GUI: Shift-Tab didn't work.
|
||||
|
||||
When defining tooltip text, don't translate terminal codes, since it's not
|
||||
going to be used like a command.
|
||||
|
||||
GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a
|
||||
GTK error. Invalid characters may appear when 'encoding' is changed.
|
||||
|
||||
GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango.
|
||||
|
||||
Win32: When 'encoding' is changed while starting up, use the Unicode command
|
||||
line to convert the file arguments to 'encoding'. Both for the GUI and the
|
||||
console version.
|
||||
|
||||
Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
|
||||
there is no codepage for latin9. Do our own conversion from latin9 to UCS2.
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2004 Sep 11
|
||||
" Last Change: 2004 Oct 02
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@ -1339,22 +1339,41 @@ fun! SetFileTypeSH(name)
|
||||
unlet b:is_bash
|
||||
endif
|
||||
endif
|
||||
setf sh
|
||||
call SetFileTypeShell("sh")
|
||||
endfun
|
||||
|
||||
" For shell-like file types, check for an "exec" command hidden in a comment,
|
||||
" as used for Tcl.
|
||||
fun! SetFileTypeShell(name)
|
||||
let l = 2
|
||||
while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
|
||||
" Skip empty and comment lines.
|
||||
let l = l + 1
|
||||
endwhile
|
||||
if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
|
||||
" Found an "exec" line after a comment with continuation
|
||||
let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
|
||||
if n =~ '\<tclsh\|\<wish'
|
||||
setf tcl
|
||||
return
|
||||
endif
|
||||
endif
|
||||
exe "setf " . a:name
|
||||
endfun
|
||||
|
||||
" tcsh scripts
|
||||
au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login setf tcsh
|
||||
au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login call SetFileTypeShell("tcsh")
|
||||
|
||||
" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
|
||||
au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias call SetFileTypeCSH()
|
||||
|
||||
fun! SetFileTypeCSH()
|
||||
if exists("g:filetype_csh")
|
||||
exe "setf " . g:filetype_csh
|
||||
call SetFileTypeShell(g:filetype_csh)
|
||||
elseif &shell =~ "tcsh"
|
||||
setf tcsh
|
||||
call SetFileTypeShell("tcsh")
|
||||
else
|
||||
setf csh
|
||||
call SetFileTypeShell("csh")
|
||||
endif
|
||||
endfun
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
" Vim indent file
|
||||
" Language: Eiffel
|
||||
" Maintainer: David Clarke <gadicath@dishevelled.net>
|
||||
" Maintainer: Jocelyn Fiat <eiffel@djoce.net>
|
||||
" Previous-Maintainer: David Clarke <gadicath@dishevelled.net>
|
||||
" $Date$
|
||||
" $Revision$
|
||||
" URL: http://gadicath.webhop.net/other/eiffel.vim
|
||||
" URL: http://www.djoce.net/page/vim/
|
||||
" Last Change: 2004 Sep 14
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
@ -20,8 +22,6 @@ setlocal comments=:--
|
||||
setlocal indentkeys+==end,=else,=ensure,=require,=check,=loop,=until
|
||||
setlocal indentkeys+==creation,=feature,=inherit,=class,=is,=redefine,=rename,=variant
|
||||
setlocal indentkeys+==invariant,=do,=local,=export
|
||||
setlocal sw=3
|
||||
setlocal tw=78
|
||||
|
||||
" Define some stuff
|
||||
" keywords grouped by indenting
|
||||
@ -96,7 +96,7 @@ function GetEiffelIndent()
|
||||
|
||||
" set indent of zero end statements that are at an indent of 3, this should
|
||||
" only ever be the class's end.
|
||||
if getline(v:lnum) =~ '^\s*end\>' && ind == 3
|
||||
if getline(v:lnum) =~ '^\s*end\>' && ind == &sw
|
||||
let ind = 0
|
||||
endif
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim indent file
|
||||
" Language: Java
|
||||
" Maintainer: Toby Allsopp <toby.allsopp@peace.com>
|
||||
" Last Change: 2003 Oct 21
|
||||
" Maintainer: Toby Allsopp <toby.allsopp@peace.com> (resigned)
|
||||
" Last Change: 2004 Oct 05
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
|
@ -2,7 +2,7 @@
|
||||
" You can also use this as a start for your own set of menus.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2004 May 26
|
||||
" Last Change: 2004 Sep 16
|
||||
|
||||
" Note that ":an" (short for ":anoremenu") is often used to make a menu work
|
||||
" in all modes and avoid side effects from mappings defined by the user.
|
||||
@ -382,7 +382,7 @@ if has("keymap")
|
||||
endif
|
||||
unlet s:n
|
||||
endif
|
||||
if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon")
|
||||
if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
|
||||
an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
|
||||
endif
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
" netrw.vim: Handles file transfer and remote directory listing across a network
|
||||
" Last Change: Sep 10, 2004
|
||||
" Last Change: Sep 14, 2004
|
||||
" Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz>
|
||||
" Version: 48
|
||||
" Version: 51a NOT RELEASED
|
||||
" License: Vim License (see vim's :help license)
|
||||
"
|
||||
" But be doers of the Word, and not only hearers, deluding your own selves
|
||||
@ -14,7 +14,7 @@
|
||||
if exists("g:loaded_netrw") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_netrw = "v48"
|
||||
let g:loaded_netrw = "v51a"
|
||||
let s:save_cpo = &cpo
|
||||
let loaded_explorer = 1
|
||||
set cpo&vim
|
||||
@ -115,7 +115,7 @@ if !exists("g:netrw_hide")
|
||||
let g:netrw_hide= 1
|
||||
endif
|
||||
if !exists("g:netrw_ftp_browse_reject")
|
||||
let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not'
|
||||
let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
|
||||
endif
|
||||
if !exists("g:netrw_keepdir")
|
||||
let g:netrw_keepdir= 1
|
||||
@ -140,6 +140,9 @@ endif
|
||||
if !exists("g:netrw_altv")
|
||||
let g:netrw_altv= 0
|
||||
endif
|
||||
if !exists("g:netrw_maxfilenamelen")
|
||||
let g:netrw_maxfilenamelen= 32
|
||||
endif
|
||||
|
||||
" BufEnter event ignored by decho when following variable is true
|
||||
" Has a side effect that doau BufReadPost doesn't work, so
|
||||
@ -211,9 +214,11 @@ if version >= 600
|
||||
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 "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 "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".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 "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
|
||||
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
|
||||
" au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* if exists("vcount")|call Decho("vcount=".vcount)|else|call Decho("no vcount")|endif
|
||||
augroup END
|
||||
endif
|
||||
|
||||
@ -1025,7 +1030,8 @@ fun! <SID>NetBrowse(dirname)
|
||||
" call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist)
|
||||
|
||||
" sanity check
|
||||
if exists("b:netrw_method") && b:netrw_method =~ '[23]'
|
||||
if exists("b:netrw_method") && b:netrw_method =~ '[235]'
|
||||
" call Decho("b:netrw_method=".b:netrw_method)
|
||||
if !executable("ftp")
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "***netrw*** this system doesn't support remote directory listing via ftp"
|
||||
@ -1066,11 +1072,13 @@ fun! <SID>NetBrowse(dirname)
|
||||
" call Decho("set up path <".path .">")
|
||||
" call Decho("set up fname <".fname .">")
|
||||
|
||||
if method == "ftp"
|
||||
if method == "ftp" || method == "http"
|
||||
let method = "ftp"
|
||||
let listcmd = g:netrw_ftp_list_cmd
|
||||
else
|
||||
let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'')
|
||||
endif
|
||||
|
||||
if exists("b:netrw_method")
|
||||
" call Decho("setting s:netrw_method<".b:netrw_method.">")
|
||||
let s:netrw_method= b:netrw_method
|
||||
@ -1144,11 +1152,12 @@ fun! <SID>NetBrowse(dirname)
|
||||
endif
|
||||
|
||||
" rename file to reflect where its from
|
||||
setlocal ts=32 bt=nofile bh=wipe nobl
|
||||
setlocal bt=nofile bh=wipe nobl noswf
|
||||
exe "setlocal ts=".g:netrw_maxfilenamelen
|
||||
" call Decho("exe file ".escape(bufname,s:netrw_cd_escape))
|
||||
exe 'file '.escape(bufname,s:netrw_cd_escape)
|
||||
" call Decho("renaming file to bufname<".bufname.">")
|
||||
setlocal bt=nowrite bh=hide nobl
|
||||
setlocal bh=hide nobl
|
||||
|
||||
" set up buffer-local mappings
|
||||
" call Decho("set up buffer-local mappings")
|
||||
@ -1338,7 +1347,6 @@ fun! <SID>NetBrowseChgDir(dirname,newdir)
|
||||
else
|
||||
" strip off a directory name from dirname
|
||||
let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','')
|
||||
exe "silent! keepjumps ".curline.",$d"
|
||||
endif
|
||||
" call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">")
|
||||
|
||||
@ -1573,7 +1581,7 @@ fun! <SID>NetBrowseX(fname,remote)
|
||||
|
||||
if a:remote == 1
|
||||
let eikeep= &ei
|
||||
set ei=all bh=delete bt=nofile
|
||||
set ei=all bh=delete bt=nofile noswf
|
||||
exe "norm! \<c-o>"
|
||||
let &ei= eikeep
|
||||
redraw!
|
||||
@ -1601,15 +1609,13 @@ fun! NetBrowseFtpCmd(path,cmd)
|
||||
exe "silent! keepjumps ".curline.",$d"
|
||||
|
||||
".........................................
|
||||
if s:netrw_method == 2
|
||||
if s:netrw_method == 2 || s:netrw_method == 5
|
||||
" ftp + <.netrc>: Method #2
|
||||
if a:path != ""
|
||||
put ='cd '.a:path
|
||||
endif
|
||||
exe "put ='".a:cmd."'"
|
||||
|
||||
|
||||
" redraw!|call inputsave()|call input("Pausing...")|call inputrestore() "Decho
|
||||
" redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
|
||||
if exists("g:netrw_port") && g:netrw_port != ""
|
||||
" call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
|
||||
exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
|
||||
@ -1875,29 +1881,29 @@ fun! <SID>NetBookmarkDir(chg,curdir)
|
||||
|
||||
if a:chg == 0
|
||||
" bookmark the current directory
|
||||
let s:netrw_bookmarkdir_{v:count}= a:curdir
|
||||
if !exists("s:bookmarkmax")
|
||||
let s:bookmarkmax= v:count
|
||||
elseif v:count > s:bookmarkmax
|
||||
let s:bookmarkmax= v:count
|
||||
let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
|
||||
if !exists("g:NETRW_BOOKMARKMAX")
|
||||
let g:NETRW_BOOKMARKMAX= v:count
|
||||
elseif v:count > g:NETRW_BOOKMARKMAX
|
||||
let g:NETRW_BOOKMARKMAX= v:count
|
||||
endif
|
||||
|
||||
elseif a:chg == 1
|
||||
" change to the bookmarked directory
|
||||
if exists("s:netrw_bookmarkdir_{v:count}")
|
||||
exe "e ".s:netrw_bookmarkdir_{v:count}
|
||||
if exists("g:NETRW_BOOKMARKDIR_{v:count}")
|
||||
exe "e ".g:NETRW_BOOKMARKDIR_{v:count}
|
||||
else
|
||||
echomsg "Sorry, bookmark#".v:count." doesn't exist!"
|
||||
endif
|
||||
|
||||
elseif exists("s:bookmarkmax")
|
||||
elseif exists("g:NETRW_BOOKMARKMAX")
|
||||
" list bookmarks
|
||||
" call Decho("list bookmarks [0,".s:bookmarkmax."]")
|
||||
" call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
|
||||
let cnt= 0
|
||||
while cnt <= s:bookmarkmax
|
||||
if exists("s:netrw_bookmarkdir_{cnt}")
|
||||
echo "Netrw Bookmark#".cnt.": ".s:netrw_bookmarkdir_{cnt}
|
||||
" call Decho("Netrw Bookmark#".cnt.": ".s:netrw_bookmarkdir_{cnt})
|
||||
while cnt <= g:NETRW_BOOKMARKMAX
|
||||
if exists("g:NETRW_BOOKMARKDIR_{cnt}")
|
||||
echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
|
||||
" call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
|
||||
endif
|
||||
let cnt= cnt + 1
|
||||
endwhile
|
||||
@ -1905,7 +1911,6 @@ fun! <SID>NetBookmarkDir(chg,curdir)
|
||||
" call Dret("NetBookmarkDir")
|
||||
endfun
|
||||
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Browsing Support For Local Directories And Files: {{{1
|
||||
|
||||
@ -1972,20 +1977,32 @@ fun! <SID>LocalBrowse(dirname)
|
||||
endif
|
||||
endif
|
||||
" call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")")
|
||||
" call Decho("buffer name<".bufname("%")."> dirname<".dirname.">")
|
||||
setlocal ma
|
||||
keepjumps %d
|
||||
if expand("%:p") != dirname
|
||||
if expand("%") != dirname
|
||||
" set standard browser options on buffer
|
||||
setlocal bt=nofile bh=hide nobl noswf
|
||||
exe "setlocal ts=".g:netrw_maxfilenamelen
|
||||
exe 'silent! file '.escape(dirname,s:netrw_cd_escape)
|
||||
" call Decho("renamed file to<".escape(dirname,' #').">")
|
||||
" call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
|
||||
" call Decho("yielding actual bufname<".bufname("%").">")
|
||||
endif
|
||||
else
|
||||
" call Decho("generate new buffer named<".escape(dirname,' #').">")
|
||||
silent! enew!
|
||||
" set standard browser options on buffer
|
||||
setlocal bt=nofile bh=hide nobl noswf
|
||||
exe "setlocal ts=".g:netrw_maxfilenamelen
|
||||
exe 'silent! file '.substitute(escape(dirname,s:netrw_cd_escape),'/$','','e')
|
||||
" call Decho("renamed file to<".escape(dirname,s:netrw_cd_escape).">")
|
||||
" call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'/$','','e').">")
|
||||
" call Decho("yielding actual bufname<".bufname("%").">")
|
||||
endif
|
||||
if bufname("#") == "" && bufnr("#") != -1
|
||||
" the file command produces a lot of [No File] buffers
|
||||
" call Decho("wiping out nofile buffer#".bufnr("#"))
|
||||
exe bufnr("#")."bwipe"
|
||||
endif
|
||||
" set standard browser options on buffer
|
||||
setlocal ts=32 bt=nowrite bh=hide nobl
|
||||
|
||||
" set up all the maps
|
||||
" call Decho("Setting up local browser maps")
|
||||
@ -2076,7 +2093,7 @@ fun! <SID>LocalBrowse(dirname)
|
||||
setlocal noma nomod
|
||||
if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
|
||||
|
||||
" call Dret("LocalBrowse : file<".expand("%:p").">")
|
||||
" call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@ -2123,7 +2140,7 @@ fun! LocalBrowseList(dirname)
|
||||
let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
|
||||
else
|
||||
let file = filelist
|
||||
let filelist= ""
|
||||
let filelist = ""
|
||||
endif
|
||||
let pfile= file
|
||||
if isdirectory(file)
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types in scripts
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last change: 2004 Sep 02
|
||||
" Last change: 2004 Oct 02
|
||||
|
||||
" This file is called by an autocommand for every file that has just been
|
||||
" loaded into a buffer. It checks if the type of file can be recognized by
|
||||
@ -57,14 +57,14 @@ if s:line1 =~ "^#!"
|
||||
" csh scripts
|
||||
elseif s:name =~ '^csh\>'
|
||||
if exists("g:filetype_csh")
|
||||
let &ft = g:filetype_csh
|
||||
call SetFileTypeShell(g:filetype_csh)
|
||||
else
|
||||
set ft=csh
|
||||
call SetFileTypeShell("csh")
|
||||
endif
|
||||
|
||||
" tcsh scripts
|
||||
elseif s:name =~ '^tcsh\>'
|
||||
set ft=tcsh
|
||||
call SetFileTypeShell("tcsh")
|
||||
|
||||
" Z shell scripts
|
||||
elseif s:name =~ '^zsh\>'
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Lynx 2.7.1 style file
|
||||
" Maintainer: Scott Bigham <dsb@cs.duke.edu>
|
||||
" Last Change: 2001 May 09
|
||||
" Maintainer: Scott Bigham <dsb@killerbunnies.org>
|
||||
" Last Change: 2004 Oct 06
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
|
@ -1,6 +1,6 @@
|
||||
" Vim syntax file
|
||||
" Language: PCCTS
|
||||
" Maintainer: Scott Bigham <dsb@cs.duke.edu>
|
||||
" Maintainer: Scott Bigham <dsb@killerbunnies.org>
|
||||
" Last Change: 10 Aug 1999
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: Perl POD format
|
||||
" Maintainer: Scott Bigham <dsb@cs.duke.edu>
|
||||
" Last Change: 2001 May 09
|
||||
" Maintainer: Scott Bigham <dsb@killerbunnies.org>
|
||||
" Last Change: 2004 Oct 05
|
||||
|
||||
" To add embedded POD documentation highlighting to your syntax file, add
|
||||
" the commands:
|
||||
@ -25,7 +25,7 @@ elseif exists("b:current_syntax")
|
||||
endif
|
||||
|
||||
" POD commands
|
||||
syn match podCommand "^=head[12]" nextgroup=podCmdText
|
||||
syn match podCommand "^=head[1234]" nextgroup=podCmdText
|
||||
syn match podCommand "^=item" nextgroup=podCmdText
|
||||
syn match podCommand "^=over" nextgroup=podOverIndent skipwhite
|
||||
syn match podCommand "^=back"
|
||||
@ -52,7 +52,11 @@ syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)"
|
||||
syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>"
|
||||
|
||||
" Special formatting sequences
|
||||
syn region podFormat start="[IBSCLFXEZ]<" end=">" oneline contains=podFormat
|
||||
syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat
|
||||
syn match podFormat "Z<>"
|
||||
syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2
|
||||
syn match podEscape "\I\i*>"me=e-1 contained
|
||||
syn match podEscape2 "\d\+>"me=e-1 contained
|
||||
|
||||
" Define the default highlighting.
|
||||
" For version 5.7 and earlier: only when not done already
|
||||
@ -72,6 +76,8 @@ if version >= 508 || !exists("did_pod_syntax_inits")
|
||||
HiLink podFormat Identifier
|
||||
HiLink podVerbatimLine PreProc
|
||||
HiLink podSpecial Identifier
|
||||
HiLink podEscape String
|
||||
HiLink podEscape2 Number
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
@ -2,7 +2,7 @@
|
||||
" Language: samba configuration files (smb.conf)
|
||||
" Maintainer: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
|
||||
" URL: http://rgarciasuarez.free.fr/vim/syntax/samba.vim
|
||||
" Last change: 2002 May 06
|
||||
" Last change: 2004 September 21
|
||||
|
||||
" Don't forget to run your config file through testparm(1)!
|
||||
|
||||
@ -17,8 +17,8 @@ endif
|
||||
syn case ignore
|
||||
|
||||
syn match sambaParameter /^[a-zA-Z \t]\+=/ contains=sambaKeyword
|
||||
syn match sambaSection /^\s*\[[a-zA-Z0-9_\-. ]\+\]/
|
||||
syn match sambaMacro /%[SPugUGHvhmLMNpRdaIT]/
|
||||
syn match sambaSection /^\s*\[[a-zA-Z0-9_\-.$ ]\+\]/
|
||||
syn match sambaMacro /%[SPugUGHvhmLMNpRdaITD]/
|
||||
syn match sambaMacro /%$([a-zA-Z0-9_]\+)/
|
||||
syn match sambaComment /^\s*[;#].*/
|
||||
syn match sambaContinue /\\$/
|
||||
@ -92,6 +92,18 @@ syn keyword sambaKeyword contained acls allocate bytes count csc devmode
|
||||
syn keyword sambaKeyword contained disable dn egd entropy enum extensions mmap
|
||||
syn keyword sambaKeyword contained policy spin spoolss
|
||||
|
||||
" Since Samba 3.0.2
|
||||
syn keyword sambaKeyword contained abort afs algorithmic backend
|
||||
syn keyword sambaKeyword contained charset cups defer display
|
||||
syn keyword sambaKeyword contained enable idmap kerberos lookups
|
||||
syn keyword sambaKeyword contained methods modules nested NIS ntlm NTLMv2
|
||||
syn keyword sambaKeyword contained objects paranoid partners passdb
|
||||
syn keyword sambaKeyword contained plaintext prefix primary private
|
||||
syn keyword sambaKeyword contained profile quota realm replication
|
||||
syn keyword sambaKeyword contained reported rid schannel sendfile sharing
|
||||
syn keyword sambaKeyword contained shutdown signing special spnego
|
||||
syn keyword sambaKeyword contained store unknown unwriteable
|
||||
|
||||
" Define the default highlighting.
|
||||
" For version 5.7 and earlier: only when not done already
|
||||
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
||||
|
@ -194,7 +194,6 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
|
||||
syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature
|
||||
syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export
|
||||
syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax
|
||||
hi def link schemeExtSyntax Type
|
||||
|
||||
syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker
|
||||
syn keyword schemeExtFunc use-standard-linker use-standard-compiler
|
||||
@ -217,7 +216,6 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
|
||||
syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch?
|
||||
" Command-line parsing
|
||||
syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each
|
||||
hi def link schemeExtFunc PreProc
|
||||
|
||||
" syntax quoting, unquoting and quasiquotation
|
||||
syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL
|
||||
@ -230,6 +228,37 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
|
||||
syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL
|
||||
endif
|
||||
|
||||
|
||||
if exists("b:is_chicken") || exists("is_chicken")
|
||||
syn match schemeOther oneline "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
|
||||
syn match schemeExtSyntax oneline "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
|
||||
|
||||
syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
|
||||
syn keyword schemeExtSyntax foreign-lambda foreign-lambda*
|
||||
syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable
|
||||
syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno
|
||||
|
||||
" here-string
|
||||
syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+
|
||||
|
||||
if filereadable(expand("<sfile>:p:h")."/cpp.vim")
|
||||
unlet! b:current_syntax
|
||||
syn include @ChickenC <sfile>:p:h/cpp.vim
|
||||
syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC
|
||||
syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
" Synchronization and the wrapping up...
|
||||
|
||||
syn sync match matchPlace grouphere NONE "^[^ \t]"
|
||||
@ -255,12 +284,14 @@ if version >= 508 || !exists("did_scheme_syntax_inits")
|
||||
HiLink schemeBoolean Boolean
|
||||
|
||||
HiLink schemeDelimiter Delimiter
|
||||
HiLink schemeConstant Constant
|
||||
HiLink schemeConstant Constant
|
||||
|
||||
HiLink schemeComment Comment
|
||||
HiLink schemeMultilineComment Comment
|
||||
HiLink schemeError Error
|
||||
|
||||
HiLink schemeExtSyntax Type
|
||||
HiLink schemeExtFunc PreProc
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
|
@ -630,7 +630,7 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
|
||||
*pos = 0;
|
||||
}
|
||||
// Now concatenate
|
||||
strncpy(temp, _("Edit with existing Vim - &"), MAX_PATH - 1);
|
||||
strncpy(temp, _("Edit with existing Vim - "), MAX_PATH - 1);
|
||||
strncat(temp, title, MAX_PATH - 1);
|
||||
InsertMenu(hMenu,
|
||||
indexMenu++,
|
||||
|
@ -1202,7 +1202,7 @@ CARBONGUI_TESTARG = VIMPROG=../$(CARBONGUI_BUNDLE)/Contents/MacOS/$(VIMTARGET)
|
||||
|
||||
# All GUI files
|
||||
ALL_GUI_SRC = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_wid.cc gui_kde_x11.cc gui_kde_wid_moc.cc
|
||||
ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro gui_kde.pro gui_kde_x11.pro
|
||||
ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro
|
||||
|
||||
# }}}
|
||||
|
||||
|
@ -1428,6 +1428,7 @@ digr_T digraphdefault[] =
|
||||
{'L', 'i', 0x20a4},
|
||||
{'P', 't', 0x20a7},
|
||||
{'W', '=', 0x20a9},
|
||||
{'=', 'e', 0x20ac}, /* euro */
|
||||
{'o', 'C', 0x2103},
|
||||
{'c', 'o', 0x2105},
|
||||
{'o', 'F', 0x2109},
|
||||
|
74
src/eval.c
74
src/eval.c
@ -8526,46 +8526,46 @@ set_cmdarg(eap, oldarg)
|
||||
unsigned len;
|
||||
|
||||
oldval = vimvars[VV_CMDARG].val;
|
||||
if (eap != NULL)
|
||||
if (eap == NULL)
|
||||
{
|
||||
if (eap->force_bin == FORCE_BIN)
|
||||
len = 6;
|
||||
else if (eap->force_bin == FORCE_NOBIN)
|
||||
len = 8;
|
||||
else
|
||||
len = 0;
|
||||
if (eap->force_ff != 0)
|
||||
len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6;
|
||||
# ifdef FEAT_MBYTE
|
||||
if (eap->force_enc != 0)
|
||||
len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
|
||||
# endif
|
||||
|
||||
newval = alloc(len + 1);
|
||||
if (newval == NULL)
|
||||
return NULL;
|
||||
|
||||
if (eap->force_bin == FORCE_BIN)
|
||||
sprintf((char *)newval, " ++bin");
|
||||
else if (eap->force_bin == FORCE_NOBIN)
|
||||
sprintf((char *)newval, " ++nobin");
|
||||
else
|
||||
*newval = NUL;
|
||||
if (eap->force_ff != 0)
|
||||
sprintf((char *)newval + STRLEN(newval), " ++ff=%s",
|
||||
eap->cmd + eap->force_ff);
|
||||
# ifdef FEAT_MBYTE
|
||||
if (eap->force_enc != 0)
|
||||
sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
|
||||
eap->cmd + eap->force_enc);
|
||||
# endif
|
||||
vimvars[VV_CMDARG].val = newval;
|
||||
return oldval;
|
||||
vim_free(oldval);
|
||||
vimvars[VV_CMDARG].val = oldarg;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vim_free(oldval);
|
||||
vimvars[VV_CMDARG].val = oldarg;
|
||||
return NULL;
|
||||
if (eap->force_bin == FORCE_BIN)
|
||||
len = 6;
|
||||
else if (eap->force_bin == FORCE_NOBIN)
|
||||
len = 8;
|
||||
else
|
||||
len = 0;
|
||||
if (eap->force_ff != 0)
|
||||
len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6;
|
||||
# ifdef FEAT_MBYTE
|
||||
if (eap->force_enc != 0)
|
||||
len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
|
||||
# endif
|
||||
|
||||
newval = alloc(len + 1);
|
||||
if (newval == NULL)
|
||||
return NULL;
|
||||
|
||||
if (eap->force_bin == FORCE_BIN)
|
||||
sprintf((char *)newval, " ++bin");
|
||||
else if (eap->force_bin == FORCE_NOBIN)
|
||||
sprintf((char *)newval, " ++nobin");
|
||||
else
|
||||
*newval = NUL;
|
||||
if (eap->force_ff != 0)
|
||||
sprintf((char *)newval + STRLEN(newval), " ++ff=%s",
|
||||
eap->cmd + eap->force_ff);
|
||||
# ifdef FEAT_MBYTE
|
||||
if (eap->force_enc != 0)
|
||||
sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
|
||||
eap->cmd + eap->force_enc);
|
||||
# endif
|
||||
vimvars[VV_CMDARG].val = newval;
|
||||
return oldval;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -4066,7 +4066,7 @@ restore_backup:
|
||||
{
|
||||
#ifdef FEAT_MBYTE
|
||||
if (write_info.bw_conv_error)
|
||||
errmsg = (char_u *)_("E513: write error, conversion failed");
|
||||
errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
|
||||
else
|
||||
#endif
|
||||
if (got_int)
|
||||
|
@ -677,6 +677,7 @@ EXTERN int enc_utf8 INIT(= FALSE); /* UTF-8 encoded Unicode */
|
||||
/* Codepage nr of 'encoding'. Negative means it's not been set yet, zero
|
||||
* means 'encoding' is not a valid codepage. */
|
||||
EXTERN int enc_codepage INIT(= -1);
|
||||
EXTERN int enc_latin9 INIT(= FALSE); /* 'encoding' is latin9 */
|
||||
# endif
|
||||
EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */
|
||||
|
||||
|
@ -749,6 +749,10 @@ gui_mch_add_menu_item(vimmenu_T *menu, int idx)
|
||||
|
||||
text = CONVERT_TO_UTF8(menu->dname);
|
||||
tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
|
||||
if (tooltip != NULL && !utf_valid_string(tooltip, NULL))
|
||||
/* Invalid text, can happen when 'encoding' is changed. Avoid
|
||||
* a nasty GTK error message, skip the tooltip. */
|
||||
CONVERT_TO_UTF8_FREE(tooltip);
|
||||
|
||||
menu->id = gtk_toolbar_insert_item(
|
||||
toolbar,
|
||||
@ -993,6 +997,8 @@ gui_mch_menu_set_tip(vimmenu_T *menu)
|
||||
|
||||
# ifdef HAVE_GTK2
|
||||
tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
|
||||
if (tooltip == NULL || utf_valid_string(tooltip, NULL))
|
||||
/* Only set the tooltip when it's valid utf-8. */
|
||||
# else
|
||||
tooltip = menu->strings[MENU_INDEX_TIP];
|
||||
# endif
|
||||
|
@ -5239,6 +5239,14 @@ not_ascii:
|
||||
int last_glyph_rbearing;
|
||||
int cells = 0; /* cells occupied by current cluster */
|
||||
|
||||
/* Safety check: pango crashes when invoked with invalid utf-8
|
||||
* characters. */
|
||||
if (!utf_valid_string(s, s + len))
|
||||
{
|
||||
column_offset = len;
|
||||
goto skipitall;
|
||||
}
|
||||
|
||||
/* original width of the current cluster */
|
||||
cluster_width = PANGO_SCALE * gui.char_width;
|
||||
|
||||
@ -5372,6 +5380,7 @@ not_ascii:
|
||||
pango_attr_list_unref(attr_list);
|
||||
}
|
||||
|
||||
skipitall:
|
||||
if (flags & DRAW_UNDERL)
|
||||
gdk_draw_line(gui.drawarea->window,
|
||||
gui.text_gc,
|
||||
|
@ -2200,6 +2200,7 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
|
||||
KeySym key_sym;
|
||||
int key_char;
|
||||
int modifiers;
|
||||
int simplify = FALSE;
|
||||
|
||||
/* Mask the mouse (as per user setting) */
|
||||
if (p_mh)
|
||||
@ -2253,7 +2254,7 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
|
||||
|
||||
/* Handle special keys. */
|
||||
#if 0
|
||||
/* Why have this been removed? */
|
||||
/* Why has this been removed? */
|
||||
if (!(theEvent->modifiers & (cmdKey | controlKey | rightControlKey)))
|
||||
#endif
|
||||
{
|
||||
@ -2270,11 +2271,14 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
|
||||
# endif
|
||||
key_char = TO_SPECIAL(special_keys[i].vim_code0,
|
||||
special_keys[i].vim_code1);
|
||||
key_char = simplify_key(key_char,&modifiers);
|
||||
simplify = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* For some keys the modifier is included in the char itself. */
|
||||
if (simplify || key_char == TAB || key_char == ' ')
|
||||
key_char = simplify_key(key_char, &modifiers);
|
||||
|
||||
/* Add the modifier to the input bu if needed */
|
||||
/* Do not want SHIFT-A or CTRL-A with modifier */
|
||||
|
@ -1709,6 +1709,33 @@ im_get_status()
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
/*
|
||||
* Convert latin9 text to ucs-2.
|
||||
*/
|
||||
static void
|
||||
latin9_to_ucs(char_u *text, int len, WCHAR *unicodebuf)
|
||||
{
|
||||
int c;
|
||||
|
||||
while (len-- >= 0)
|
||||
{
|
||||
c = *text++;
|
||||
switch (c)
|
||||
{
|
||||
case 0xa4: c = 0x20ac; break; /* euro */
|
||||
case 0xa6: c = 0x0160; break; /* S hat */
|
||||
case 0xa8: c = 0x0161; break; /* S -hat */
|
||||
case 0xb4: c = 0x017d; break; /* Z hat */
|
||||
case 0xb8: c = 0x017e; break; /* Z -hat */
|
||||
case 0xbc: c = 0x0152; break; /* OE */
|
||||
case 0xbd: c = 0x0153; break; /* oe */
|
||||
case 0xbe: c = 0x0178; break; /* Y */
|
||||
}
|
||||
*unicodebuf++ = c;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
/*
|
||||
@ -1907,7 +1934,9 @@ gui_mch_draw_string(
|
||||
/* Check if the Unicode buffer exists and is big enough. Create it
|
||||
* with the same lengt as the multi-byte string, the number of wide
|
||||
* characters is always equal or smaller. */
|
||||
if ((enc_utf8 || (enc_codepage > 0 && (int)GetACP() != enc_codepage))
|
||||
if ((enc_utf8
|
||||
|| (enc_codepage > 0 && (int)GetACP() != enc_codepage)
|
||||
|| enc_latin9)
|
||||
&& (unicodebuf == NULL || len > unibuflen))
|
||||
{
|
||||
vim_free(unicodebuf);
|
||||
@ -1950,13 +1979,16 @@ gui_mch_draw_string(
|
||||
foptions, pcliprect, unicodebuf, clen, unicodepdy);
|
||||
len = cells; /* used for underlining */
|
||||
}
|
||||
else if (enc_codepage > 0 && (int)GetACP() != enc_codepage)
|
||||
else if ((enc_codepage > 0 && (int)GetACP() != enc_codepage) || enc_latin9)
|
||||
{
|
||||
/* If we want to display codepage data, and the current CP is not the
|
||||
* ANSI one, we need to go via Unicode. */
|
||||
if (unicodebuf != NULL)
|
||||
{
|
||||
len = MultiByteToWideChar(enc_codepage,
|
||||
if (enc_latin9)
|
||||
latin9_to_ucs(text, len, unicodebuf);
|
||||
else
|
||||
len = MultiByteToWideChar(enc_codepage,
|
||||
MB_PRECOMPOSED,
|
||||
(char *)text, len,
|
||||
(LPWSTR)unicodebuf, unibuflen);
|
||||
|
@ -3277,6 +3277,7 @@ _OnScroll(
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get command line arguments.
|
||||
* Use "prog" as the name of the program and "cmdline" as the arguments.
|
||||
@ -3299,6 +3300,14 @@ get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
|
||||
char **argv = NULL;
|
||||
int round;
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
/* Try using the Unicode version first, it takes care of conversion when
|
||||
* 'encoding' is changed. */
|
||||
argc = get_cmd_argsW(&argv);
|
||||
if (argc != 0)
|
||||
goto done;
|
||||
#endif
|
||||
|
||||
/* Handle the program name. Remove the ".exe" extension, and find the 1st
|
||||
* non-space. */
|
||||
p = strrchr(prog, '.');
|
||||
@ -3405,8 +3414,9 @@ get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
|
||||
}
|
||||
}
|
||||
|
||||
argv[argc] = NULL; /* NULL-terminated list */
|
||||
done:
|
||||
|
||||
argv[argc] = NULL; /* NULL-terminated list */
|
||||
*argvp = argv;
|
||||
return argc;
|
||||
}
|
||||
|
100
src/mbyte.c
100
src/mbyte.c
@ -216,7 +216,7 @@ enc_canon_table[] =
|
||||
#define IDX_ISO_14 13
|
||||
{"iso-8859-14", ENC_8BIT, 0},
|
||||
#define IDX_ISO_15 14
|
||||
{"iso-8859-15", ENC_8BIT, 0},
|
||||
{"iso-8859-15", ENC_8BIT + ENC_LATIN9, 0},
|
||||
#define IDX_KOI8_R 15
|
||||
{"koi8-r", ENC_8BIT, 0},
|
||||
#define IDX_KOI8_U 16
|
||||
@ -534,6 +534,7 @@ codepage_invalid:
|
||||
|
||||
#ifdef WIN3264
|
||||
enc_codepage = encname2codepage(p_enc);
|
||||
enc_latin9 = (STRCMP(p_enc, "iso-8859-15") == 0);
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -2486,6 +2487,36 @@ mb_tail_off(base, p)
|
||||
return 1 - dbcs_head_off(base, p);
|
||||
}
|
||||
|
||||
#if defined(HAVE_GTK2) || defined(PROTO)
|
||||
/*
|
||||
* Return TRUE if string "s" is a valid utf-8 string.
|
||||
* When "end" is NULL stop at the first NUL.
|
||||
* When "end" is positive stop there.
|
||||
*/
|
||||
int
|
||||
utf_valid_string(s, end)
|
||||
char_u *s;
|
||||
char_u *end;
|
||||
{
|
||||
int l;
|
||||
char_u *p = s;
|
||||
|
||||
while (end == NULL ? *p != NUL : p < end)
|
||||
{
|
||||
if ((*p & 0xc0) == 0x80)
|
||||
return FALSE; /* invalid lead byte */
|
||||
l = utf8len_tab[*p];
|
||||
if (end != NULL && p + l > end)
|
||||
return FALSE; /* incomplete byte sequence */
|
||||
++p;
|
||||
while (--l > 0)
|
||||
if ((*p++ & 0xc0) != 0x80)
|
||||
return FALSE; /* invalid trail byte */
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(FEAT_GUI) || defined(PROTO)
|
||||
/*
|
||||
* Special version of mb_tail_off() for use in ScreenLines[].
|
||||
@ -5453,11 +5484,22 @@ convert_setup(vcp, from, to)
|
||||
vcp->vc_type = CONV_TO_UTF8;
|
||||
vcp->vc_factor = 2; /* up to twice as long */
|
||||
}
|
||||
else if ((from_prop & ENC_LATIN9) && (to_prop & ENC_UNICODE))
|
||||
{
|
||||
/* Internal latin9 -> utf-8 conversion. */
|
||||
vcp->vc_type = CONV_9_TO_UTF8;
|
||||
vcp->vc_factor = 3; /* up to three as long (euro sign) */
|
||||
}
|
||||
else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN1))
|
||||
{
|
||||
/* Internal utf-8 -> latin1 conversion. */
|
||||
vcp->vc_type = CONV_TO_LATIN1;
|
||||
}
|
||||
else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN9))
|
||||
{
|
||||
/* Internal utf-8 -> latin9 conversion. */
|
||||
vcp->vc_type = CONV_TO_LATIN9;
|
||||
}
|
||||
#ifdef WIN3264
|
||||
/* Win32-specific codepage <-> codepage conversion without iconv. */
|
||||
else if (((from_prop & ENC_UNICODE) || encname2codepage(from) > 0)
|
||||
@ -5622,12 +5664,13 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
|
||||
d = retval;
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
if (ptr[i] < 0x80)
|
||||
*d++ = ptr[i];
|
||||
c = ptr[i];
|
||||
if (c < 0x80)
|
||||
*d++ = c;
|
||||
else
|
||||
{
|
||||
*d++ = 0xc0 + ((unsigned)ptr[i] >> 6);
|
||||
*d++ = 0x80 + (ptr[i] & 0x3f);
|
||||
*d++ = 0xc0 + ((unsigned)c >> 6);
|
||||
*d++ = 0x80 + (c & 0x3f);
|
||||
}
|
||||
}
|
||||
*d = NUL;
|
||||
@ -5635,7 +5678,34 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
|
||||
*lenp = (int)(d - retval);
|
||||
break;
|
||||
|
||||
case CONV_9_TO_UTF8: /* latin9 to utf-8 conversion */
|
||||
retval = alloc(len * 3 + 1);
|
||||
if (retval == NULL)
|
||||
break;
|
||||
d = retval;
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
c = ptr[i];
|
||||
switch (c)
|
||||
{
|
||||
case 0xa4: c = 0x20ac; break; /* euro */
|
||||
case 0xa6: c = 0x0160; break; /* S hat */
|
||||
case 0xa8: c = 0x0161; break; /* S -hat */
|
||||
case 0xb4: c = 0x017d; break; /* Z hat */
|
||||
case 0xb8: c = 0x017e; break; /* Z -hat */
|
||||
case 0xbc: c = 0x0152; break; /* OE */
|
||||
case 0xbd: c = 0x0153; break; /* oe */
|
||||
case 0xbe: c = 0x0178; break; /* Y */
|
||||
}
|
||||
d += utf_char2bytes(c, d);
|
||||
}
|
||||
*d = NUL;
|
||||
if (lenp != NULL)
|
||||
*lenp = (int)(d - retval);
|
||||
break;
|
||||
|
||||
case CONV_TO_LATIN1: /* utf-8 to latin1 conversion */
|
||||
case CONV_TO_LATIN9: /* utf-8 to latin9 conversion */
|
||||
retval = alloc(len + 1);
|
||||
if (retval == NULL)
|
||||
break;
|
||||
@ -5658,6 +5728,26 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
|
||||
else
|
||||
{
|
||||
c = utf_ptr2char(ptr + i);
|
||||
if (vcp->vc_type == CONV_TO_LATIN9)
|
||||
switch (c)
|
||||
{
|
||||
case 0x20ac: c = 0xa4; break; /* euro */
|
||||
case 0x0160: c = 0xa6; break; /* S hat */
|
||||
case 0x0161: c = 0xa8; break; /* S -hat */
|
||||
case 0x017d: c = 0xb4; break; /* Z hat */
|
||||
case 0x017e: c = 0xb8; break; /* Z -hat */
|
||||
case 0x0152: c = 0xbc; break; /* OE */
|
||||
case 0x0153: c = 0xbd; break; /* oe */
|
||||
case 0x0178: c = 0xbe; break; /* Y */
|
||||
case 0xa4:
|
||||
case 0xa6:
|
||||
case 0xa8:
|
||||
case 0xb4:
|
||||
case 0xb8:
|
||||
case 0xbc:
|
||||
case 0xbd:
|
||||
case 0xbe: c = 0x100; break; /* not in latin9 */
|
||||
}
|
||||
if (!utf_iscomposing(c)) /* skip composing chars */
|
||||
{
|
||||
if (c < 0x100)
|
||||
|
@ -392,6 +392,8 @@ ex_menu(eap)
|
||||
map_to = (char_u *)"";
|
||||
map_buf = NULL;
|
||||
}
|
||||
else if (modes & MENU_TIP_MODE)
|
||||
map_buf = NULL; /* Menu tips are plain text. */
|
||||
else
|
||||
map_to = replace_termcodes(map_to, &map_buf, FALSE, TRUE);
|
||||
menuarg.modes = modes;
|
||||
|
@ -267,6 +267,10 @@ mch_early_init(void)
|
||||
AnsiUpperBuff(toupper_tab, 256);
|
||||
AnsiLowerBuff(tolower_tab, 256);
|
||||
#endif
|
||||
|
||||
#if defined(FEAT_MBYTE) && !defined(FEAT_GUI)
|
||||
(void)get_cmd_argsW(NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -298,7 +302,25 @@ mch_settitle(
|
||||
gui_mch_settitle(title, icon);
|
||||
# else
|
||||
if (title != NULL)
|
||||
{
|
||||
# ifdef FEAT_MBYTE
|
||||
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
|
||||
{
|
||||
/* Convert the title from 'encoding' to the active codepage. */
|
||||
WCHAR *wp = enc_to_ucs2(title, NULL);
|
||||
int n;
|
||||
|
||||
if (wp != NULL)
|
||||
{
|
||||
n = SetConsoleTitleW(wp);
|
||||
vim_free(wp);
|
||||
if (n != 0 || GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
|
||||
return;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
SetConsoleTitle(title);
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
|
169
src/os_w32exe.c
169
src/os_w32exe.c
@ -30,24 +30,6 @@ VimMain
|
||||
__ARGS((int argc, char **argv));
|
||||
int (_cdecl *pmain)(int, char **);
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
/* The commandline arguments in UCS2. */
|
||||
static DWORD nArgsW = 0;
|
||||
static LPWSTR *ArglistW = NULL;
|
||||
static int global_argc;
|
||||
static char **global_argv;
|
||||
|
||||
static int used_file_argc = 0; /* last argument in global_argv[] used
|
||||
for the argument list. */
|
||||
static int *used_file_indexes = NULL; /* indexes in global_argv[] for
|
||||
command line arguments added to
|
||||
the argument list */
|
||||
static int used_file_count = 0; /* nr of entries in used_file_indexes */
|
||||
static int used_file_literal = FALSE; /* take file names literally */
|
||||
static int used_file_full_path = FALSE; /* file name was full path */
|
||||
static int used_alist_count = 0;
|
||||
#endif
|
||||
|
||||
#ifndef PROTO
|
||||
#ifdef FEAT_GUI
|
||||
#ifndef VIMDLL
|
||||
@ -76,56 +58,14 @@ WinMain(
|
||||
* startup path (so the .vimrc file can be found w/o a VIM env. var.) */
|
||||
GetModuleFileName(NULL, prog, 255);
|
||||
|
||||
/* Separate the command line into arguments. Use the Unicode functions
|
||||
* when possible. When 'encoding' is later changed these are used to
|
||||
* recode the arguments. */
|
||||
#ifdef FEAT_MBYTE
|
||||
ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
|
||||
if (ArglistW != NULL)
|
||||
{
|
||||
argv = malloc((nArgsW + 1) * sizeof(char *));
|
||||
if (argv != NULL)
|
||||
{
|
||||
int i;
|
||||
|
||||
argv[argc] = NULL;
|
||||
argc = nArgsW;
|
||||
for (i = 0; i < argc; ++i)
|
||||
{
|
||||
int len;
|
||||
|
||||
WideCharToMultiByte_alloc(GetACP(), 0,
|
||||
ArglistW[i], wcslen(ArglistW[i]) + 1,
|
||||
(LPSTR *)&argv[i], &len, 0, 0);
|
||||
if (argv[i] == NULL)
|
||||
{
|
||||
while (i > 0)
|
||||
free(argv[--i]);
|
||||
free(argv);
|
||||
argc = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
|
||||
if (argc == 0)
|
||||
#endif
|
||||
{
|
||||
argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
|
||||
if (argc == 0)
|
||||
{
|
||||
MessageBox(0, "Could not allocate memory for command line.",
|
||||
"VIM Error", 0);
|
||||
return 0;
|
||||
}
|
||||
MessageBox(0, "Could not allocate memory for command line.",
|
||||
"VIM Error", 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
global_argc = argc;
|
||||
global_argv = argv;
|
||||
used_file_indexes = malloc(argc * sizeof(int));
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_GETTEXT
|
||||
/* Initialize gettext library */
|
||||
dyn_libintl_init(NULL);
|
||||
@ -190,108 +130,9 @@ errout:
|
||||
free(argv);
|
||||
free(tofree);
|
||||
#ifdef FEAT_MBYTE
|
||||
if (ArglistW != NULL)
|
||||
GlobalFree(ArglistW);
|
||||
free_cmd_argsW();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
/*
|
||||
* Remember "name" is an argument that was added to the argument list.
|
||||
* This avoids that we have to re-parse the argument list when fix_arg_enc()
|
||||
* is called.
|
||||
*/
|
||||
void
|
||||
used_file_arg(name, literal, full_path)
|
||||
char *name;
|
||||
int literal;
|
||||
int full_path;
|
||||
{
|
||||
int i;
|
||||
|
||||
if (used_file_indexes == NULL)
|
||||
return;
|
||||
for (i = used_file_argc + 1; i < global_argc; ++i)
|
||||
if (STRCMP(global_argv[i], name) == 0)
|
||||
{
|
||||
used_file_argc = i;
|
||||
used_file_indexes[used_file_count++] = i;
|
||||
break;
|
||||
}
|
||||
used_file_literal = literal;
|
||||
used_file_full_path = full_path;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remember the length of the argument list as it was. If it changes then we
|
||||
* leave it alone when 'encoding' is set.
|
||||
*/
|
||||
void
|
||||
set_alist_count(void)
|
||||
{
|
||||
used_alist_count = GARGCOUNT;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fix the encoding of the command line arguments. Invoked when 'encoding'
|
||||
* has been changed while starting up. Use the UCS-2 command line arguments
|
||||
* and convert them to 'encoding'.
|
||||
*/
|
||||
void
|
||||
fix_arg_enc()
|
||||
{
|
||||
int i;
|
||||
int idx;
|
||||
char_u *str;
|
||||
|
||||
/* Safety checks:
|
||||
* - if argument count differs between the wide and non-wide argument
|
||||
* list, something must be wrong.
|
||||
* - the file name arguments must have been located.
|
||||
* - the length of the argument list wasn't changed by the user.
|
||||
*/
|
||||
if (global_argc != (int)nArgsW
|
||||
|| ArglistW == NULL
|
||||
|| used_file_indexes == NULL
|
||||
|| used_file_count == 0
|
||||
|| used_alist_count != GARGCOUNT)
|
||||
return;
|
||||
|
||||
/* Clear the argument list. Make room for the new arguments. */
|
||||
alist_clear(&global_alist);
|
||||
if (ga_grow(&global_alist.al_ga, used_file_count) == FAIL)
|
||||
return; /* out of memory */
|
||||
|
||||
for (i = 0; i < used_file_count; ++i)
|
||||
{
|
||||
idx = used_file_indexes[i];
|
||||
str = ucs2_to_enc(ArglistW[idx], NULL);
|
||||
if (str != NULL)
|
||||
alist_add(&global_alist, str, used_file_literal ? 2 : 0);
|
||||
}
|
||||
|
||||
if (!used_file_literal)
|
||||
{
|
||||
/* Now expand wildcards in the arguments. */
|
||||
/* Temporarily add '(' and ')' to 'isfname'. These are valid
|
||||
* filename characters but are excluded from 'isfname' to make
|
||||
* "gf" work on a file name in parenthesis (e.g.: see vim.h). */
|
||||
do_cmdline_cmd((char_u *)":let SaVe_ISF = &isf|set isf+=(,)");
|
||||
alist_expand();
|
||||
do_cmdline_cmd((char_u *)":let &isf = SaVe_ISF|unlet SaVe_ISF");
|
||||
}
|
||||
|
||||
/* If wildcard expansion failed, we are editing the first file of the
|
||||
* arglist and there is no file name: Edit the first argument now. */
|
||||
if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL)
|
||||
{
|
||||
do_cmdline_cmd((char_u *)":rewind");
|
||||
if (GARGCOUNT == 1 && used_file_full_path)
|
||||
(void)vim_chdirfile(alist_name(&GARGLIST[0]));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
329
src/os_win32.c
329
src/os_win32.c
@ -92,6 +92,7 @@ FILE* fdDump = NULL;
|
||||
#define WINAPI
|
||||
#define WINBASEAPI
|
||||
typedef char * LPCSTR;
|
||||
typedef char * LPWSTR;
|
||||
typedef int ACCESS_MASK;
|
||||
typedef int BOOL;
|
||||
typedef int COLORREF;
|
||||
@ -301,19 +302,19 @@ dyn_libintl_end()
|
||||
}
|
||||
|
||||
static char *
|
||||
null_libintl_gettext(const char* msgid)
|
||||
null_libintl_gettext(const char *msgid)
|
||||
{
|
||||
return (char*)msgid;
|
||||
}
|
||||
|
||||
static char *
|
||||
null_libintl_bindtextdomain(const char* domainname, const char* dirname)
|
||||
null_libintl_bindtextdomain(const char *domainname, const char *dirname)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char *
|
||||
null_libintl_textdomain(const char* domainname)
|
||||
null_libintl_textdomain(const char *domainname)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@ -530,7 +531,7 @@ const static struct
|
||||
__stdcall
|
||||
#endif
|
||||
win32_kbd_patch_key(
|
||||
KEY_EVENT_RECORD* pker)
|
||||
KEY_EVENT_RECORD *pker)
|
||||
{
|
||||
UINT uMods = pker->dwControlKeyState;
|
||||
static int s_iIsDead = 0;
|
||||
@ -734,8 +735,7 @@ decode_key_event(
|
||||
*/
|
||||
# ifdef FEAT_GUI_W32
|
||||
void
|
||||
mch_setmouse(
|
||||
int on)
|
||||
mch_setmouse(int on)
|
||||
{
|
||||
}
|
||||
# else
|
||||
@ -749,8 +749,7 @@ static int g_yMouse; /* mouse y coordinate */
|
||||
* Enable or disable mouse input
|
||||
*/
|
||||
void
|
||||
mch_setmouse(
|
||||
int on)
|
||||
mch_setmouse(int on)
|
||||
{
|
||||
DWORD cmodein;
|
||||
|
||||
@ -798,7 +797,7 @@ mch_setmouse(
|
||||
*/
|
||||
static BOOL
|
||||
decode_mouse_event(
|
||||
MOUSE_EVENT_RECORD* pmer)
|
||||
MOUSE_EVENT_RECORD *pmer)
|
||||
{
|
||||
static int s_nOldButton = -1;
|
||||
static int s_nOldMouseClick = -1;
|
||||
@ -1214,7 +1213,7 @@ WaitForChar(long msec)
|
||||
* return non-zero if a character is available
|
||||
*/
|
||||
int
|
||||
mch_char_avail()
|
||||
mch_char_avail(void)
|
||||
{
|
||||
return WaitForChar(0L);
|
||||
}
|
||||
@ -1579,7 +1578,7 @@ executable_exists(char *name)
|
||||
* GUI version of mch_init().
|
||||
*/
|
||||
void
|
||||
mch_init()
|
||||
mch_init(void)
|
||||
{
|
||||
#ifndef __MINGW32__
|
||||
extern int _fmode;
|
||||
@ -1746,10 +1745,10 @@ FitConsoleWindow(
|
||||
|
||||
typedef struct ConsoleBufferStruct
|
||||
{
|
||||
BOOL IsValid;
|
||||
CONSOLE_SCREEN_BUFFER_INFO Info;
|
||||
PCHAR_INFO Buffer;
|
||||
COORD BufferSize;
|
||||
BOOL IsValid;
|
||||
CONSOLE_SCREEN_BUFFER_INFO Info;
|
||||
PCHAR_INFO Buffer;
|
||||
COORD BufferSize;
|
||||
} ConsoleBuffer;
|
||||
|
||||
/*
|
||||
@ -1853,8 +1852,8 @@ SaveConsoleBuffer(
|
||||
*/
|
||||
static BOOL
|
||||
RestoreConsoleBuffer(
|
||||
ConsoleBuffer *cb,
|
||||
BOOL RestoreScreen)
|
||||
ConsoleBuffer *cb,
|
||||
BOOL RestoreScreen)
|
||||
{
|
||||
COORD BufferCoord;
|
||||
SMALL_RECT WriteRegion;
|
||||
@ -1949,23 +1948,19 @@ static BOOL g_fCanChangeIcon = FALSE;
|
||||
*/
|
||||
static BOOL
|
||||
GetConsoleIcon(
|
||||
HWND hWnd,
|
||||
HICON *phIconSmall,
|
||||
HICON *phIcon)
|
||||
HWND hWnd,
|
||||
HICON *phIconSmall,
|
||||
HICON *phIcon)
|
||||
{
|
||||
if (hWnd == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (phIconSmall != NULL)
|
||||
{
|
||||
*phIconSmall = (HICON) SendMessage(hWnd, WM_GETICON,
|
||||
(WPARAM) ICON_SMALL, (LPARAM) 0);
|
||||
}
|
||||
*phIconSmall = (HICON)SendMessage(hWnd, WM_GETICON,
|
||||
(WPARAM)ICON_SMALL, (LPARAM)0);
|
||||
if (phIcon != NULL)
|
||||
{
|
||||
*phIcon = (HICON) SendMessage(hWnd, WM_GETICON,
|
||||
(WPARAM) ICON_BIG, (LPARAM) 0);
|
||||
}
|
||||
*phIcon = (HICON)SendMessage(hWnd, WM_GETICON,
|
||||
(WPARAM)ICON_BIG, (LPARAM)0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1979,26 +1974,22 @@ GetConsoleIcon(
|
||||
*/
|
||||
static BOOL
|
||||
SetConsoleIcon(
|
||||
HWND hWnd,
|
||||
HICON hIconSmall,
|
||||
HICON hIcon)
|
||||
HWND hWnd,
|
||||
HICON hIconSmall,
|
||||
HICON hIcon)
|
||||
{
|
||||
HICON hPrevIconSmall;
|
||||
HICON hPrevIcon;
|
||||
HICON hPrevIconSmall;
|
||||
HICON hPrevIcon;
|
||||
|
||||
if (hWnd == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (hIconSmall != NULL)
|
||||
{
|
||||
hPrevIconSmall = (HICON) SendMessage(hWnd, WM_SETICON,
|
||||
(WPARAM) ICON_SMALL, (LPARAM) hIconSmall);
|
||||
}
|
||||
hPrevIconSmall = (HICON)SendMessage(hWnd, WM_SETICON,
|
||||
(WPARAM)ICON_SMALL, (LPARAM)hIconSmall);
|
||||
if (hIcon != NULL)
|
||||
{
|
||||
hPrevIcon = (HICON) SendMessage(hWnd, WM_SETICON,
|
||||
(WPARAM) ICON_BIG, (LPARAM) hIcon);
|
||||
}
|
||||
hPrevIcon = (HICON)SendMessage(hWnd, WM_SETICON,
|
||||
(WPARAM)ICON_BIG,(LPARAM) hIcon);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -2059,7 +2050,7 @@ static DWORD g_cmodeout = 0;
|
||||
* non-GUI version of mch_init().
|
||||
*/
|
||||
void
|
||||
mch_init()
|
||||
mch_init(void)
|
||||
{
|
||||
#ifndef FEAT_RESTORE_ORIG_SCREEN
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
@ -2341,8 +2332,8 @@ fname_case(
|
||||
*/
|
||||
int
|
||||
mch_get_user_name(
|
||||
char_u *s,
|
||||
int len)
|
||||
char_u *s,
|
||||
int len)
|
||||
{
|
||||
char szUserName[MAX_COMPUTERNAME_LENGTH + 1];
|
||||
DWORD cch = sizeof szUserName;
|
||||
@ -2379,7 +2370,7 @@ mch_get_host_name(
|
||||
* return process ID
|
||||
*/
|
||||
long
|
||||
mch_get_pid()
|
||||
mch_get_pid(void)
|
||||
{
|
||||
return (long)GetCurrentProcessId();
|
||||
}
|
||||
@ -2429,8 +2420,7 @@ mch_dirname(
|
||||
* else FILE_ATTRIBUTE_* defined in winnt.h
|
||||
*/
|
||||
long
|
||||
mch_getperm(
|
||||
char_u *name)
|
||||
mch_getperm(char_u *name)
|
||||
{
|
||||
#ifdef FEAT_MBYTE
|
||||
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
|
||||
@ -2457,8 +2447,8 @@ mch_getperm(
|
||||
*/
|
||||
int
|
||||
mch_setperm(
|
||||
char_u *name,
|
||||
long perm)
|
||||
char_u *name,
|
||||
long perm)
|
||||
{
|
||||
perm |= FILE_ATTRIBUTE_ARCHIVE; /* file has changed, set archive bit */
|
||||
#ifdef FEAT_MBYTE
|
||||
@ -2656,8 +2646,7 @@ struct my_acl
|
||||
* Return NULL if the ACL is not available for whatever reason.
|
||||
*/
|
||||
vim_acl_T
|
||||
mch_get_acl(fname)
|
||||
char_u *fname;
|
||||
mch_get_acl(char_u *fname)
|
||||
{
|
||||
#ifndef HAVE_ACL
|
||||
return (vim_acl_T)NULL;
|
||||
@ -2701,9 +2690,7 @@ mch_get_acl(fname)
|
||||
* This must only be called with "acl" equal to what mch_get_acl() returned.
|
||||
*/
|
||||
void
|
||||
mch_set_acl(fname, acl)
|
||||
char_u *fname;
|
||||
vim_acl_T acl;
|
||||
mch_set_acl(char_u *fname, vim_acl_T acl)
|
||||
{
|
||||
#ifdef HAVE_ACL
|
||||
struct my_acl *p = (struct my_acl *)acl;
|
||||
@ -2726,8 +2713,7 @@ mch_set_acl(fname, acl)
|
||||
}
|
||||
|
||||
void
|
||||
mch_free_acl(acl)
|
||||
vim_acl_T acl;
|
||||
mch_free_acl(vim_acl_T acl)
|
||||
{
|
||||
#ifdef HAVE_ACL
|
||||
struct my_acl *p = (struct my_acl *)acl;
|
||||
@ -2791,8 +2777,7 @@ handler_routine(
|
||||
* set the tty in (raw) ? "raw" : "cooked" mode
|
||||
*/
|
||||
void
|
||||
mch_settmode(
|
||||
int tmode)
|
||||
mch_settmode(int tmode)
|
||||
{
|
||||
DWORD cmodein;
|
||||
DWORD cmodeout;
|
||||
@ -2840,7 +2825,7 @@ mch_settmode(
|
||||
* Return OK when size could be determined, FAIL otherwise.
|
||||
*/
|
||||
int
|
||||
mch_get_shellsize()
|
||||
mch_get_shellsize(void)
|
||||
{
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
|
||||
@ -2873,9 +2858,9 @@ mch_get_shellsize()
|
||||
*/
|
||||
static void
|
||||
ResizeConBufAndWindow(
|
||||
HANDLE hConsole,
|
||||
int xSize,
|
||||
int ySize)
|
||||
HANDLE hConsole,
|
||||
int xSize,
|
||||
int ySize)
|
||||
{
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi; /* hold current console buffer info */
|
||||
SMALL_RECT srWindowRect; /* hold the new console size */
|
||||
@ -2955,7 +2940,7 @@ ResizeConBufAndWindow(
|
||||
* Set the console window to `Rows' * `Columns'
|
||||
*/
|
||||
void
|
||||
mch_set_shellsize()
|
||||
mch_set_shellsize(void)
|
||||
{
|
||||
COORD coordScreen;
|
||||
|
||||
@ -2984,7 +2969,7 @@ mch_set_shellsize()
|
||||
* Rows and/or Columns has changed.
|
||||
*/
|
||||
void
|
||||
mch_new_shellsize()
|
||||
mch_new_shellsize(void)
|
||||
{
|
||||
set_scroll_region(0, 0, Columns - 1, Rows - 1);
|
||||
}
|
||||
@ -2994,7 +2979,7 @@ mch_new_shellsize()
|
||||
* Called when started up, to set the winsize that was delayed.
|
||||
*/
|
||||
void
|
||||
mch_set_winsize_now()
|
||||
mch_set_winsize_now(void)
|
||||
{
|
||||
if (suppress_winsize == 2)
|
||||
{
|
||||
@ -3134,8 +3119,8 @@ mch_system(char *cmd, int options)
|
||||
*/
|
||||
int
|
||||
mch_call_shell(
|
||||
char_u *cmd,
|
||||
int options) /* SHELL_*, see vim.h */
|
||||
char_u *cmd,
|
||||
int options) /* SHELL_*, see vim.h */
|
||||
{
|
||||
int x = 0;
|
||||
int tmode = cur_tmode;
|
||||
@ -3510,8 +3495,7 @@ clear_to_end_of_line(void)
|
||||
* Scroll the scroll region up by `cLines' lines
|
||||
*/
|
||||
static void
|
||||
scroll(
|
||||
unsigned cLines)
|
||||
scroll(unsigned cLines)
|
||||
{
|
||||
COORD oldcoord = g_coord;
|
||||
|
||||
@ -3549,8 +3533,7 @@ set_scroll_region(
|
||||
* Insert `cLines' lines at the current cursor position
|
||||
*/
|
||||
static void
|
||||
insert_lines(
|
||||
unsigned cLines)
|
||||
insert_lines(unsigned cLines)
|
||||
{
|
||||
SMALL_RECT source;
|
||||
COORD dest;
|
||||
@ -3591,8 +3574,7 @@ insert_lines(
|
||||
* Delete `cLines' lines at the current cursor position
|
||||
*/
|
||||
static void
|
||||
delete_lines(
|
||||
unsigned cLines)
|
||||
delete_lines(unsigned cLines)
|
||||
{
|
||||
SMALL_RECT source;
|
||||
COORD dest;
|
||||
@ -3655,8 +3637,7 @@ gotoxy(
|
||||
* See ../doc/os_win32.txt for the numbers.
|
||||
*/
|
||||
static void
|
||||
textattr(
|
||||
WORD wAttr)
|
||||
textattr(WORD wAttr)
|
||||
{
|
||||
g_attrCurrent = wAttr;
|
||||
|
||||
@ -3665,8 +3646,7 @@ textattr(
|
||||
|
||||
|
||||
static void
|
||||
textcolor(
|
||||
WORD wAttr)
|
||||
textcolor(WORD wAttr)
|
||||
{
|
||||
g_attrCurrent = (g_attrCurrent & 0xf0) + wAttr;
|
||||
|
||||
@ -3675,8 +3655,7 @@ textcolor(
|
||||
|
||||
|
||||
static void
|
||||
textbackground(
|
||||
WORD wAttr)
|
||||
textbackground(WORD wAttr)
|
||||
{
|
||||
g_attrCurrent = (g_attrCurrent & 0x0f) + (wAttr << 4);
|
||||
|
||||
@ -3688,7 +3667,7 @@ textbackground(
|
||||
* restore the default text attribute (whatever we started with)
|
||||
*/
|
||||
static void
|
||||
normvideo()
|
||||
normvideo(void)
|
||||
{
|
||||
textattr(g_attrDefault);
|
||||
}
|
||||
@ -3711,7 +3690,7 @@ standout(void)
|
||||
* Turn off standout mode
|
||||
*/
|
||||
static void
|
||||
standend()
|
||||
standend(void)
|
||||
{
|
||||
if (g_attrPreStandout)
|
||||
{
|
||||
@ -3725,7 +3704,7 @@ standend()
|
||||
* Set normal fg/bg color, based on T_ME. Called whem t_me has been set.
|
||||
*/
|
||||
void
|
||||
mch_set_normal_colors()
|
||||
mch_set_normal_colors(void)
|
||||
{
|
||||
char_u *p;
|
||||
int n;
|
||||
@ -3749,7 +3728,7 @@ mch_set_normal_colors()
|
||||
* visual bell: flash the screen
|
||||
*/
|
||||
static void
|
||||
visual_bell()
|
||||
visual_bell(void)
|
||||
{
|
||||
COORD coordOrigin = {0, 0};
|
||||
WORD attrFlash = ~g_attrCurrent & 0xff;
|
||||
@ -3775,8 +3754,7 @@ visual_bell()
|
||||
* Make the cursor visible or invisible
|
||||
*/
|
||||
static void
|
||||
cursor_visible(
|
||||
BOOL fVisible)
|
||||
cursor_visible(BOOL fVisible)
|
||||
{
|
||||
s_cursor_visible = fVisible;
|
||||
#ifdef MCH_CURSOR_SHAPE
|
||||
@ -4178,7 +4156,7 @@ mch_remove(char_u *name)
|
||||
* check for an "interrupt signal": CTRL-break or CTRL-C
|
||||
*/
|
||||
void
|
||||
mch_breakcheck()
|
||||
mch_breakcheck(void)
|
||||
{
|
||||
#ifndef FEAT_GUI_W32 /* never used */
|
||||
if (g_fCtrlCPressed || g_fCBrkPressed)
|
||||
@ -4195,8 +4173,7 @@ mch_breakcheck()
|
||||
* Return sum of available physical and page file memory.
|
||||
*/
|
||||
long_u
|
||||
mch_avail_mem(
|
||||
int special)
|
||||
mch_avail_mem(int special)
|
||||
{
|
||||
MEMORYSTATUS ms;
|
||||
|
||||
@ -4382,7 +4359,7 @@ mch_rename(
|
||||
* Get the default shell for the current hardware platform
|
||||
*/
|
||||
char *
|
||||
default_shell()
|
||||
default_shell(void)
|
||||
{
|
||||
char* psz = NULL;
|
||||
|
||||
@ -4867,5 +4844,177 @@ myresetstkoflw(void)
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(FEAT_MBYTE) || defined(PROTO)
|
||||
/*
|
||||
* The command line arguments in UCS2
|
||||
*/
|
||||
static DWORD nArgsW = 0;
|
||||
static LPWSTR *ArglistW = NULL;
|
||||
static int global_argc = 0;
|
||||
static char **global_argv;
|
||||
|
||||
static int used_file_argc = 0; /* last argument in global_argv[] used
|
||||
for the argument list. */
|
||||
static int *used_file_indexes = NULL; /* indexes in global_argv[] for
|
||||
command line arguments added to
|
||||
the argument list */
|
||||
static int used_file_count = 0; /* nr of entries in used_file_indexes */
|
||||
static int used_file_literal = FALSE; /* take file names literally */
|
||||
static int used_file_full_path = FALSE; /* file name was full path */
|
||||
static int used_alist_count = 0;
|
||||
|
||||
|
||||
/*
|
||||
* Get the command line arguments. Unicode version.
|
||||
* Returns argc. Zero when something fails.
|
||||
*/
|
||||
int
|
||||
get_cmd_argsW(char ***argvp)
|
||||
{
|
||||
char **argv = NULL;
|
||||
int argc = 0;
|
||||
int i;
|
||||
|
||||
ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
|
||||
if (ArglistW != NULL)
|
||||
{
|
||||
argv = malloc((nArgsW + 1) * sizeof(char *));
|
||||
if (argv != NULL)
|
||||
{
|
||||
argc = nArgsW;
|
||||
argv[argc] = NULL;
|
||||
for (i = 0; i < argc; ++i)
|
||||
{
|
||||
int len;
|
||||
|
||||
/* Convert each Unicode argument to the current codepage. */
|
||||
WideCharToMultiByte_alloc(GetACP(), 0,
|
||||
ArglistW[i], wcslen(ArglistW[i]) + 1,
|
||||
(LPSTR *)&argv[i], &len, 0, 0);
|
||||
if (argv[i] == NULL)
|
||||
{
|
||||
/* Out of memory, clear everything. */
|
||||
while (i > 0)
|
||||
free(argv[--i]);
|
||||
free(argv);
|
||||
argc = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
global_argc = argc;
|
||||
global_argv = argv;
|
||||
if (argc > 0)
|
||||
used_file_indexes = malloc(argc * sizeof(int));
|
||||
|
||||
if (argvp != NULL)
|
||||
*argvp = argv;
|
||||
return argc;
|
||||
}
|
||||
|
||||
void
|
||||
free_cmd_argsW(void)
|
||||
{
|
||||
if (ArglistW != NULL)
|
||||
{
|
||||
GlobalFree(ArglistW);
|
||||
ArglistW = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Remember "name" is an argument that was added to the argument list.
|
||||
* This avoids that we have to re-parse the argument list when fix_arg_enc()
|
||||
* is called.
|
||||
*/
|
||||
void
|
||||
used_file_arg(char *name, int literal, int full_path)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (used_file_indexes == NULL)
|
||||
return;
|
||||
for (i = used_file_argc + 1; i < global_argc; ++i)
|
||||
if (STRCMP(global_argv[i], name) == 0)
|
||||
{
|
||||
used_file_argc = i;
|
||||
used_file_indexes[used_file_count++] = i;
|
||||
break;
|
||||
}
|
||||
used_file_literal = literal;
|
||||
used_file_full_path = full_path;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remember the length of the argument list as it was. If it changes then we
|
||||
* leave it alone when 'encoding' is set.
|
||||
*/
|
||||
void
|
||||
set_alist_count(void)
|
||||
{
|
||||
used_alist_count = GARGCOUNT;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fix the encoding of the command line arguments. Invoked when 'encoding'
|
||||
* has been changed while starting up. Use the UCS-2 command line arguments
|
||||
* and convert them to 'encoding'.
|
||||
*/
|
||||
void
|
||||
fix_arg_enc(void)
|
||||
{
|
||||
int i;
|
||||
int idx;
|
||||
char_u *str;
|
||||
|
||||
/* Safety checks:
|
||||
* - if argument count differs between the wide and non-wide argument
|
||||
* list, something must be wrong.
|
||||
* - the file name arguments must have been located.
|
||||
* - the length of the argument list wasn't changed by the user.
|
||||
*/
|
||||
if (global_argc != (int)nArgsW
|
||||
|| ArglistW == NULL
|
||||
|| used_file_indexes == NULL
|
||||
|| used_file_count == 0
|
||||
|| used_alist_count != GARGCOUNT)
|
||||
return;
|
||||
|
||||
/* Clear the argument list. Make room for the new arguments. */
|
||||
alist_clear(&global_alist);
|
||||
if (ga_grow(&global_alist.al_ga, used_file_count) == FAIL)
|
||||
return; /* out of memory */
|
||||
|
||||
for (i = 0; i < used_file_count; ++i)
|
||||
{
|
||||
idx = used_file_indexes[i];
|
||||
str = ucs2_to_enc(ArglistW[idx], NULL);
|
||||
if (str != NULL)
|
||||
alist_add(&global_alist, str, used_file_literal ? 2 : 0);
|
||||
}
|
||||
|
||||
if (!used_file_literal)
|
||||
{
|
||||
/* Now expand wildcards in the arguments. */
|
||||
/* Temporarily add '(' and ')' to 'isfname'. These are valid
|
||||
* filename characters but are excluded from 'isfname' to make
|
||||
* "gf" work on a file name in parenthesis (e.g.: see vim.h). */
|
||||
do_cmdline_cmd((char_u *)":let SaVe_ISF = &isf|set isf+=(,)");
|
||||
alist_expand();
|
||||
do_cmdline_cmd((char_u *)":let &isf = SaVe_ISF|unlet SaVe_ISF");
|
||||
}
|
||||
|
||||
/* If wildcard expansion failed, we are editing the first file of the
|
||||
* arglist and there is no file name: Edit the first argument now. */
|
||||
if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL)
|
||||
{
|
||||
do_cmdline_cmd((char_u *)":rewind");
|
||||
if (GARGCOUNT == 1 && used_file_full_path)
|
||||
(void)vim_chdirfile(alist_name(&GARGLIST[0]));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* gui_kde.c */
|
||||
/* gui_kde.cc */
|
||||
void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
|
||||
void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
|
||||
void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
|
||||
@ -16,4 +16,4 @@ void gui_mch_find_dialog __ARGS((exarg_T *eap));
|
||||
void gui_mch_replace_dialog __ARGS((exarg_T *eap));
|
||||
void ex_helpfind __ARGS((exarg_T *eap));
|
||||
void gui_make_popup __ARGS((char_u *path_name));
|
||||
/* vim: set ft=c : */
|
||||
/* vim: set ft=cpp : */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* gui_kde_x11.c */
|
||||
/* gui_kde_x11.cc */
|
||||
void gui_mch_prepare __ARGS((int *argc, char **argv));
|
||||
void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
|
||||
void gui_mch_stop_blink __ARGS((void));
|
||||
@ -59,4 +59,4 @@ void mch_set_mouse_shape __ARGS((int shape));
|
||||
char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
|
||||
void gui_mch_settitle __ARGS((char_u *title,char_u *icon));
|
||||
void gui_mch_update_codec __ARGS((void));
|
||||
/* vim: set ft=c : */
|
||||
/* vim: set ft=cpp : */
|
||||
|
@ -47,6 +47,7 @@ int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
|
||||
int utf_head_off __ARGS((char_u *base, char_u *p));
|
||||
int mb_off_next __ARGS((char_u *base, char_u *p));
|
||||
int mb_tail_off __ARGS((char_u *base, char_u *p));
|
||||
int utf_valid_string __ARGS((char_u *s, char_u *end));
|
||||
int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
|
||||
void mb_adjust_cursor __ARGS((void));
|
||||
void mb_adjustpos __ARGS((pos_T *lp));
|
||||
|
@ -45,4 +45,9 @@ int mch_open __ARGS((char *name, int flags, int mode));
|
||||
FILE *mch_fopen __ARGS((char *name, char *mode));
|
||||
int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
|
||||
int myresetstkoflw __ARGS((void));
|
||||
int get_cmd_argsW __ARGS((char ***argvp));
|
||||
void free_cmd_argsW __ARGS((void));
|
||||
void used_file_arg __ARGS((char *name, int literal, int full_path));
|
||||
void set_alist_count __ARGS((void));
|
||||
void fix_arg_enc __ARGS((void));
|
||||
/* vim: set ft=c : */
|
||||
|
@ -13,7 +13,7 @@ char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
|
||||
int syn_get_id __ARGS((long lnum, long col, int trans));
|
||||
int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
|
||||
void init_highlight __ARGS((int both, int reset));
|
||||
int load_colors __ARGS((char_u *p));
|
||||
int load_colors __ARGS((char_u *name));
|
||||
void do_highlight __ARGS((char_u *line, int forceit, int init));
|
||||
void restore_cterm_colors __ARGS((void));
|
||||
void set_normal_colors __ARGS((void));
|
||||
|
@ -1124,6 +1124,7 @@ qf_jump(dir, errornr, forceit)
|
||||
# endif
|
||||
if (win_split(0, n) == FAIL)
|
||||
goto theend;
|
||||
opened_window = TRUE; /* close it when fail */
|
||||
|
||||
if (curwin->w_height < p_hh)
|
||||
win_setheight((int)p_hh);
|
||||
@ -1137,7 +1138,7 @@ qf_jump(dir, errornr, forceit)
|
||||
* If currently in the quickfix window, find another window to show the
|
||||
* file in.
|
||||
*/
|
||||
if (bt_quickfix(curbuf))
|
||||
if (bt_quickfix(curbuf) && !opened_window)
|
||||
{
|
||||
/*
|
||||
* If there is no file specified, we don't know where to go.
|
||||
|
11
src/screen.c
11
src/screen.c
@ -6651,9 +6651,14 @@ screenalloc(clear)
|
||||
len = screen_Columns;
|
||||
else
|
||||
len = Columns;
|
||||
mch_memmove(new_ScreenLines + new_LineOffset[new_row],
|
||||
ScreenLines + LineOffset[old_row],
|
||||
(size_t)len * sizeof(schar_T));
|
||||
#ifdef FEAT_MBYTE
|
||||
/* When switching to utf-8 dont copy characters, they
|
||||
* may be invalid now. */
|
||||
if (!(enc_utf8 && ScreenLinesUC == NULL))
|
||||
#endif
|
||||
mch_memmove(new_ScreenLines + new_LineOffset[new_row],
|
||||
ScreenLines + LineOffset[old_row],
|
||||
(size_t)len * sizeof(schar_T));
|
||||
#ifdef FEAT_MBYTE
|
||||
if (enc_utf8 && ScreenLinesUC != NULL)
|
||||
{
|
||||
|
@ -854,16 +854,18 @@ typedef struct
|
||||
|
||||
#define CONV_NONE 0
|
||||
#define CONV_TO_UTF8 1
|
||||
#define CONV_TO_LATIN1 2
|
||||
#define CONV_ICONV 3
|
||||
#define CONV_9_TO_UTF8 2
|
||||
#define CONV_TO_LATIN1 3
|
||||
#define CONV_TO_LATIN9 4
|
||||
#define CONV_ICONV 5
|
||||
#ifdef WIN3264
|
||||
# define CONV_CODEPAGE 4 /* codepage -> codepage */
|
||||
# define CONV_CODEPAGE 10 /* codepage -> codepage */
|
||||
#endif
|
||||
#ifdef MACOS_X
|
||||
# define CONV_MAC_LATIN1 5
|
||||
# define CONV_LATIN1_MAC 6
|
||||
# define CONV_MAC_UTF8 7
|
||||
# define CONV_UTF8_MAC 8
|
||||
# define CONV_MAC_LATIN1 20
|
||||
# define CONV_LATIN1_MAC 21
|
||||
# define CONV_MAC_UTF8 22
|
||||
# define CONV_UTF8_MAC 23
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -437,17 +437,21 @@ syntax_start(wp, lnum)
|
||||
linenr_T parsed_lnum;
|
||||
linenr_T first_stored;
|
||||
int dist;
|
||||
static int changedtick = 0; /* remember the last change ID */
|
||||
|
||||
reg_syn = TRUE; /* let vim_regexec() know we're using syntax */
|
||||
|
||||
/*
|
||||
* After switching buffers, invalidate current_state.
|
||||
* Also do this when a change was made, the current state may be invalid
|
||||
* then.
|
||||
*/
|
||||
if (syn_buf != wp->w_buffer)
|
||||
if (syn_buf != wp->w_buffer || changedtick != syn_buf->b_changedtick)
|
||||
{
|
||||
invalidate_current_state();
|
||||
syn_buf = wp->w_buffer;
|
||||
}
|
||||
changedtick = syn_buf->b_changedtick;
|
||||
syn_win = wp;
|
||||
|
||||
/*
|
||||
@ -7392,7 +7396,7 @@ get_attr_entry(table, aep)
|
||||
return i + ATTR_OFF;
|
||||
}
|
||||
|
||||
if (table->ga_len + ATTR_OFF == 256)
|
||||
if (table->ga_len + ATTR_OFF >= 256)
|
||||
{
|
||||
/*
|
||||
* Running out of attribute entries! remove all attributes, and
|
||||
|
@ -1,92 +0,0 @@
|
||||
Results of test49.vim:
|
||||
*** Test 1: OK (34695)
|
||||
*** Test 2: OK (34695)
|
||||
*** Test 3: OK (1384648195)
|
||||
*** Test 4: OK (32883)
|
||||
*** Test 5: OK (32883)
|
||||
*** Test 6: OK (603978947)
|
||||
*** Test 7: OK (90563)
|
||||
*** Test 8: OK (562493431)
|
||||
*** Test 9: OK (363)
|
||||
*** Test 10: OK (559615)
|
||||
*** Test 11: OK (2049)
|
||||
*** Test 12: OK (352256)
|
||||
*** Test 13: OK (145)
|
||||
*** Test 14: OK (42413)
|
||||
*** Test 15: OK (42413)
|
||||
*** Test 16: OK (8722)
|
||||
*** Test 17: OK (285127993)
|
||||
*** Test 18: OK (67224583)
|
||||
*** Test 19: OK (69275973)
|
||||
*** Test 20: OK (1874575085)
|
||||
*** Test 21: OK (147932225)
|
||||
*** Test 22: OK (4161)
|
||||
*** Test 23: OK (49)
|
||||
*** Test 24: OK (41)
|
||||
*** Test 25: OK (260177811)
|
||||
*** Test 26: OK (1681500476)
|
||||
*** Test 27: OK (1996459)
|
||||
*** Test 28: OK (1996459)
|
||||
*** Test 29: OK (170428555)
|
||||
*** Test 30: OK (190905173)
|
||||
*** Test 31: OK (190905173)
|
||||
*** Test 32: OK (354833067)
|
||||
--- Test 33: sum = 178275600 (ok)
|
||||
*** Test 33: OK (1216907538)
|
||||
*** Test 34: OK (2146584868)
|
||||
*** Test 35: OK (2146584868)
|
||||
*** Test 36: OK (1071644672)
|
||||
*** Test 37: OK (1071644672)
|
||||
*** Test 38: OK (357908480)
|
||||
*** Test 39: OK (357908480)
|
||||
*** Test 40: OK (357908480)
|
||||
*** Test 41: OK (3076095)
|
||||
*** Test 42: OK (1505155949)
|
||||
*** Test 43: OK (1157763329)
|
||||
*** Test 44: OK (1031761407)
|
||||
*** Test 45: OK (1157763329)
|
||||
*** Test 46: OK (739407)
|
||||
*** Test 47: OK (371213935)
|
||||
*** Test 48: OK (756255461)
|
||||
*** Test 49: OK (179000669)
|
||||
*** Test 50: OK (363550045)
|
||||
*** Test 51: OK (40744667)
|
||||
*** Test 52: OK (1247112011)
|
||||
*** Test 53: OK (131071)
|
||||
*** Test 54: OK (2047)
|
||||
*** Test 55: OK (1023)
|
||||
*** Test 56: OK (511)
|
||||
*** Test 57: OK (2147450880)
|
||||
*** Test 58: OK (624945)
|
||||
*** Test 59: OK (2038431743)
|
||||
*** Test 60: OK (311511339)
|
||||
*** Test 61: OK (374889517)
|
||||
*** Test 62: OK (286331153)
|
||||
*** Test 63: OK (236978127)
|
||||
*** Test 64: OK (1499645335)
|
||||
*** Test 65: OK (70187)
|
||||
*** Test 66: OK (5464)
|
||||
*** Test 67: OK (212514423)
|
||||
*** Test 68: OK (212514423)
|
||||
*** Test 69: OK (8995471)
|
||||
*** Test 70: OK (69544277)
|
||||
*** Test 71: OK (34886997)
|
||||
*** Test 72: OK (1789569365)
|
||||
*** Test 73: OK (9032615)
|
||||
*** Test 74: OK (224907669)
|
||||
*** Test 75: OK (2000403408)
|
||||
*** Test 76: OK (1610087935)
|
||||
*** Test 77: OK (1388671)
|
||||
*** Test 78: OK (134217728)
|
||||
*** Test 79: OK (70288929)
|
||||
*** Test 80: OK (17895765)
|
||||
*** Test 81: OK (387)
|
||||
*** Test 82: OK (8454401)
|
||||
*** Test 83: OK (2835)
|
||||
*** Test 84: OK (934782101)
|
||||
*** Test 85: OK (198689)
|
||||
--- Test 86: All tests were run with throwing exceptions on error.
|
||||
The $VIMNOERRTHROW control is not configured.
|
||||
--- Test 86: All tests were run with throwing exceptions on interrupt.
|
||||
The $VIMNOINTTHROW control is not configured.
|
||||
*** Test 86: OK (50443995)
|
@ -17,6 +17,7 @@
|
||||
* Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
|
||||
* It has been changed beyond recognition since then.
|
||||
*
|
||||
* Differences between version 6.x and 7.x can be found with ":help version7".
|
||||
* Differences between version 5.x and 6.x can be found with ":help version6".
|
||||
* Differences between version 4.x and 5.x can be found with ":help version5".
|
||||
* Differences between version 3.0 and 4.x can be found with ":help version4".
|
||||
@ -1028,7 +1029,7 @@ intro_message(colon)
|
||||
"",
|
||||
N_("type :q<Enter> to exit "),
|
||||
N_("type :help<Enter> or <F1> for on-line help"),
|
||||
N_("type :help version6<Enter> for version info"),
|
||||
N_("type :help version7<Enter> for version info"),
|
||||
NULL,
|
||||
"",
|
||||
N_("Running in Vi compatible mode"),
|
||||
|
@ -36,5 +36,5 @@
|
||||
#define VIM_VERSION_NODOT "vim70aa"
|
||||
#define VIM_VERSION_SHORT "7.0aa"
|
||||
#define VIM_VERSION_MEDIUM "7.0aa ALPHA"
|
||||
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2004 June 30)"
|
||||
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2004 June 30, compiled "
|
||||
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2004 Oct 4)"
|
||||
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2004 Oct 4, compiled "
|
||||
|
@ -1715,7 +1715,8 @@ typedef int VimClipboard; /* This is required for the prototypes. */
|
||||
# define ENC_2WORD 0x100 /* Unicode: UTF-16 */
|
||||
|
||||
# define ENC_LATIN1 0x200 /* Latin1 */
|
||||
# define ENC_MACROMAN 0x400 /* Mac Roman (not Macro Man! :-) */
|
||||
# define ENC_LATIN9 0x400 /* Latin9 */
|
||||
# define ENC_MACROMAN 0x800 /* Mac Roman (not Macro Man! :-) */
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
|
Loading…
x
Reference in New Issue
Block a user