Merge remote-tracking branch 'vim/master'

This commit is contained in:
Kazuki Sakamoto
2015-10-07 10:56:47 -07:00
78 changed files with 1471 additions and 343 deletions
+41
View File
@@ -0,0 +1,41 @@
language: c
compiler:
- clang
- gcc
env:
- COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge
"CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp'"
- COVERAGE=no FEATURES=small CONFOPT=
- COVERAGE=no FEATURES=tiny CONFOPT=
sudo: false
branches:
except:
- /^v[0-9]/
addons:
apt:
packages:
- lcov
- libperl-dev
- python-dev
- python3-dev
- liblua5.1-0-dev
- lua5.1
before_install:
- pip install --user cpp-coveralls
script:
- NPROC=$(getconf _NPROCESSORS_ONLN)
- ./configure --with-features=$FEATURES $CONFOPT --enable-fail-if-missing && make -j$NPROC
- ./src/vim --version
- make test
after_success:
- if [ x"$COVERAGE" = "xyes" ]; then ~/.local/bin/coveralls -b src -x .xs -e src/xxd -e src/if_perl.c --encodings utf-8 latin-1 EUC-KR; fi
# vim:set sts=2 sw=2 tw=0 et:
+2
View File
@@ -4,6 +4,8 @@
# source files for all source archives
SRC_ALL = \
.hgignore \
.travis.yml \
appveyor.yml \
src/README.txt \
src/arabic.c \
src/arabic.h \
+8
View File
@@ -29,6 +29,9 @@ Which one you need depends on the system you want to run it on and whether you
want or must compile it yourself. Check http://www.vim.org/download.php for
an overview of currently available distributions.
[![Build Status](https://travis-ci.org/vim/vim.svg?branch=master)](https://travis-ci.org/vim/vim)
[![Coverage Status](https://coveralls.io/repos/vim/vim/badge.svg?branch=master&service=github)](https://coveralls.io/github/vim/vim?branch=master)
## Documentation ##
@@ -89,6 +92,11 @@ See one of these files for system-specific instructions:
There are more `README_*.txt` files, depending on the distribution you used.
## Contributing ##
If you would like to help making Vim better, see the `CONTRIBUTING.md` file.
## Information ##
The latest news about Vim can be found on the Vim home page:
+15
View File
@@ -0,0 +1,15 @@
version: "{build}"
before_build:
- '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release'
build_script:
- cd src
- sed -e "s/\$(LINKARGS2)/\$(LINKARGS2) | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
- nmake -f Make_mvc2.mak CPU=AMD64 GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=34 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python34-x64
- .\gvim -u NONE -c "redir @a | ver | 0put a | wq!" ver.txt
- type ver.txt
test_script:
- cd testdir
- nmake -f Make_dos.mak VIMPROG=..\gvim
+2 -1
View File
@@ -1,7 +1,7 @@
"python3complete.vim - Omni Completion for python
" Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.9
" Last Updated: 18 Jun 2009
" Last Updated: 18 Jun 2009 (small fix 2015 Sep 14 from Debian)
"
" Roland Puntaier: this file contains adaptations for python3 and is parallel to pythoncomplete.vim
"
@@ -359,6 +359,7 @@ class PyParser:
def __init__(self):
self.top = Scope('global',0)
self.scope = self.top
self.parserline = 0
def _parsedotname(self,pre=None):
#returns (dottedname, nexttoken)
+2 -2
View File
@@ -1,4 +1,4 @@
*change.txt* For Vim version 7.4. Last change: 2015 Aug 04
*change.txt* For Vim version 7.4. Last change: 2015 Sep 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1135,7 +1135,7 @@ Rationale: In Vi the "y" command followed by a backwards motion would
With a linewise yank command the cursor is put in the first line, but the
column is unmodified, thus it may not be on the first yanked character.
There are nine types of registers: *registers* *E354*
There are ten types of registers: *registers* *E354*
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
+11 -7
View File
@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 7.4. Last change: 2015 Jul 28
*cmdline.txt* For Vim version 7.4. Last change: 2015 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -511,6 +511,8 @@ followed by another Vim command:
:argdo
:autocmd
:bufdo
:cdo
:cfdo
:command
:cscope
:debug
@@ -521,6 +523,8 @@ followed by another Vim command:
:help
:helpfind
:lcscope
:ldo
:lfdo
:make
:normal
:perl
@@ -814,12 +818,12 @@ Note: these are typed literally, they are not special keys!
(for FileType, Syntax and SpellFileMissing events).
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file. *E498*
When executing a function, is replaced with
"function {function-name}"; function call nesting is
indicated like this:
"function {function-name1}..{function-name2}". Note that
filename-modifiers are useless when <sfile> is used inside
a function.
When executing a function, is replaced with:
"function {function-name}[{lnum}]"
function call nesting is indicated like this:
"function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
Note that filename-modifiers are useless when <sfile> is
used inside a function.
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
+2 -1
View File
@@ -868,7 +868,8 @@ USING THE ARGUMENT LIST
each file.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
Also see |:windo|, |:tabdo| and |:bufdo|.
Also see |:windo|, |:tabdo|, |:bufdo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo|
Example: >
:args *.c
+8 -4
View File
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.4. Last change: 2015 Jul 21
*eval.txt* For Vim version 7.4. Last change: 2015 Sep 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1747,7 +1747,7 @@ bufexists( {expr}) Number TRUE if buffer {expr} exists
buflisted( {expr}) Number TRUE if buffer {expr} is listed
bufloaded( {expr}) Number TRUE if buffer {expr} is loaded
bufname( {expr}) String Name of the buffer {expr}
bufnr( {expr}) Number Number of the buffer {expr}
bufnr( {expr} [, {create}]) Number Number of the buffer {expr}
bufwinnr( {expr}) Number window number of buffer {expr}
byte2line( {byte}) Number line number at byte count {byte}
byteidx( {expr}, {nr}) Number byte index of {nr}'th char in {expr}
@@ -5419,7 +5419,7 @@ setbufvar({expr}, {varname}, {val}) *setbufvar()*
:call setbufvar("todo", "myvar", "foobar")
< This function is not available in the |sandbox|.
setcharsearch() *setcharsearch()*
setcharsearch({dict}) *setcharsearch()*
Set the current character search information to {dict},
which contains one or more of the following entries:
@@ -5861,7 +5861,8 @@ split({expr} [, {pattern} [, {keepempty}]]) *split()*
:let words = split(getline('.'), '\W\+')
< To split a string in individual characters: >
:for c in split(mystring, '\zs')
< If you want to keep the separator you can also use '\zs': >
< If you want to keep the separator you can also use '\zs' at
the end of the pattern: >
:echo split('abc:def:ghi', ':\zs')
< ['abc:', 'def:', 'ghi'] ~
Splitting a table where the first element can be empty: >
@@ -6121,6 +6122,9 @@ synID({lnum}, {col}, {trans}) *synID()*
{col} is 1 for the leftmost column, {lnum} is 1 for the first
line. 'synmaxcol' applies, in a longer line zero is returned.
Note that when the position is after the last character,
that's where the cursor can be in Insert mode, synID() returns
zero.
When {trans} is non-zero, transparent items are reduced to the
item that they reveal. This is useful when wanting to know
+2 -2
View File
@@ -1,4 +1,4 @@
*farsi.txt* For Vim version 7.4. Last change: 2010 Aug 07
*farsi.txt* For Vim version 7.4. Last change: 2015 Aug 29
VIM REFERENCE MANUAL by Mortaza Ghassab Shiran
@@ -59,7 +59,7 @@ o Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9
right-to-left mode, this function is also supported only in right-to-left
mode.
Farsi Fonts *farsi fonts*
Farsi Fonts *farsi-fonts*
-----------
The following files are found in the subdirectories of the '$VIM/farsi/fonts'
+5 -1
View File
@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.4. Last change: 2015 Feb 12
*index.txt* For Vim version 7.4. Last change: 2015 Sep 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1138,6 +1138,8 @@ tag command action ~
|:cc| :cc go to specific error
|:cclose| :ccl[ose] close quickfix window
|:cd| :cd change directory
|:cdo| :cdo execute command in each valid error list entry
|:cfdo| :cfd[o] execute command in each file in error list
|:center| :ce[nter] format lines at the center
|:cexpr| :cex[pr] read errors from expr and jump to first
|:cfile| :cf[ile] read file with error messages and jump to first
@@ -1296,6 +1298,8 @@ tag command action ~
|:lchdir| :lch[dir] change directory locally
|:lclose| :lcl[ose] close location window
|:lcscope| :lcs[cope] like ":cscope" but uses location list
|:ldo| :ld[o] execute command in valid location list entries
|:lfdo| :lfd[o] execute command in each file in location list
|:left| :le[ft] left align lines
|:leftabove| :lefta[bove] make split window appear left or above
|:let| :let assign a value to a variable or option
+2 -2
View File
@@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.4. Last change: 2015 Jun 20
*insert.txt* For Vim version 7.4. Last change: 2015 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -152,7 +152,7 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
CTRL-R a results in "ac".
CTRL-R CTRL-R a results in "ab^Hc".
< Options 'textwidth', 'formatoptions', etc. still apply. If
you also want to avoid these, use "<C-R><C-O>r", see below.
you also want to avoid these, use CTRL-R CTRL-O, see below.
The '.' register (last inserted text) is still inserted as
typed. {not in Vi}
+35 -17
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.4. Last change: 2015 Aug 25
*options.txt* For Vim version 7.4. Last change: 2015 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -801,7 +801,8 @@ A jump table for the options with a short description can be found at |Q_op|.
line.
When 'smartindent' or 'cindent' is on the indent is changed in
a different way.
The 'autoindent' option is reset when the 'paste' option is set.
The 'autoindent' option is reset when the 'paste' option is set and
restored when 'paste' is reset.
{small difference from Vi: After the indent is deleted when typing
<Esc> or <CR>, the cursor position when moving up or down is after the
deleted indent; Vi puts the cursor somewhere in the deleted indent}.
@@ -2848,6 +2849,8 @@ A jump table for the options with a short description can be found at |Q_op|.
<Tab>. Spaces are used in indents with the '>' and '<' commands and
when 'autoindent' is on. To insert a real tab when 'expandtab' is
on, use CTRL-V<Tab>. See also |:retab| and |ins-expandtab|.
This option is reset when the 'paste' option is set and restored when
the 'paste' option is reset.
NOTE: This option is reset when 'compatible' is set.
*'exrc'* *'ex'* *'noexrc'* *'noex'*
@@ -5535,19 +5538,21 @@ A jump table for the options with a short description can be found at |Q_op|.
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
- abbreviations are disabled
- 'textwidth' is set to 0
- 'wrapmargin' is set to 0
- 'autoindent' is reset
- 'smartindent' is reset
- 'softtabstop' is set to 0
- 'expandtab' is reset
- 'formatoptions' is used like it is empty
- 'revins' is reset
- 'ruler' is reset
- 'showmatch' is reset
- 'formatoptions' is used like it is empty
- 'smartindent' is reset
- 'smarttab' is reset
- 'softtabstop' is set to 0
- 'textwidth' is set to 0
- 'wrapmargin' is set to 0
These options keep their value, but their effect is disabled:
- 'lisp'
- 'indentexpr'
- 'cindent'
- 'indentexpr'
- 'lisp'
NOTE: When you start editing another file while the 'paste' option is
on, settings from the modelines or autocommands may change the
settings again, causing trouble when pasting text. You might want to
@@ -5980,7 +5985,9 @@ A jump table for the options with a short description can be found at |Q_op|.
Inserting characters in Insert mode will work backwards. See "typing
backwards" |ins-reverse|. This option can be toggled with the CTRL-_
command in Insert mode, when 'allowrevins' is set.
NOTE: This option is reset when 'compatible' or 'paste' is set.
NOTE: This option is reset when 'compatible' is set.
This option is reset when 'paste' is set and restored when 'paste' is
reset.
*'rightleft'* *'rl'* *'norightleft'* *'norl'*
'rightleft' 'rl' boolean (default off)
@@ -6036,7 +6043,8 @@ A jump table for the options with a short description can be found at |Q_op|.
separated with a dash.
For an empty line "0-1" is shown.
For an empty buffer the line number will also be zero: "0,0-1".
This option is reset when the 'paste' option is set.
This option is reset when 'paste' is set and restored when 'paste' is
reset.
If you don't want to see the ruler all the time but want to know where
you are, use "g CTRL-G" |g_CTRL-G|.
NOTE: This option is reset when 'compatible' is set.
@@ -6675,7 +6683,9 @@ A jump table for the options with a short description can be found at |Q_op|.
jump is only done if the match can be seen on the screen. The time to
show the match can be set with 'matchtime'.
A Beep is given if there is no match (no matter if the match can be
seen or not). This option is reset when the 'paste' option is set.
seen or not).
This option is reset when 'paste' is set and restored when 'paste' is
reset.
When the 'm' flag is not included in 'cpoptions', typing a character
will immediately move the cursor back to where it belongs.
See the "sm" field in 'guicursor' for setting the cursor shape and
@@ -6784,8 +6794,9 @@ A jump table for the options with a short description can be found at |Q_op|.
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
When using the ">>" command, lines starting with '#' are not shifted
right.
NOTE: 'smartindent' is reset when 'compatible' is set. When 'paste'
is set smart indenting is disabled.
NOTE: 'smartindent' is reset when 'compatible' is set.
This option is reset when 'paste' is set and restored when 'paste' is
reset.
*'smarttab'* *'sta'* *'nosmarttab'* *'nosta'*
'smarttab' 'sta' boolean (default off)
@@ -6801,6 +6812,8 @@ A jump table for the options with a short description can be found at |Q_op|.
What gets inserted (a <Tab> or spaces) depends on the 'expandtab'
option. Also see |ins-expandtab|. When 'expandtab' is not set, the
number of spaces is minimized by using <Tab>s.
This option is reset when 'paste' is set and restored when 'paste' is
reset.
NOTE: This option is reset when 'compatible' is set.
*'softtabstop'* *'sts'*
@@ -6815,7 +6828,8 @@ A jump table for the options with a short description can be found at |Q_op|.
commands like "x" still work on the actual characters.
When 'sts' is zero, this feature is off.
When 'sts' is negative, the value of 'shiftwidth' is used.
'softtabstop' is set to 0 when the 'paste' option is set.
'softtabstop' is set to 0 when the 'paste' option is set and restored
when 'paste' is reset.
See also |ins-expandtab|. When 'expandtab' is not set, the number of
spaces is minimized by using <Tab>s.
The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is
@@ -7577,8 +7591,10 @@ A jump table for the options with a short description can be found at |Q_op|.
{not in Vi}
Maximum width of text that is being inserted. A longer line will be
broken after white space to get this width. A zero value disables
this. 'textwidth' is set to 0 when the 'paste' option is set. When
'textwidth' is zero, 'wrapmargin' may be used. See also
this.
'textwidth' is set to 0 when the 'paste' option is set and restored
when 'paste' is reset.
When 'textwidth' is zero, 'wrapmargin' may be used. See also
'formatoptions' and |ins-textwidth|.
When 'formatexpr' is set it will be used to break the line.
NOTE: This option is set to 0 when 'compatible' is set.
@@ -8611,6 +8627,8 @@ A jump table for the options with a short description can be found at |Q_op|.
Options that add a margin, such as 'number' and 'foldcolumn', cause
the text width to be further reduced. This is Vi compatible.
When 'textwidth' is non-zero, this option is not used.
This option is set to 0 when 'paste' is set and restored when 'paste'
is reset.
See also 'formatoptions' and |ins-textwidth|. {Vi: works differently
and less usefully}
+70 -1
View File
@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 7.4. Last change: 2014 Mar 27
*quickfix.txt* For Vim version 7.4. Last change: 2015 Sep 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -299,6 +299,75 @@ use this code: >
au QuickfixCmdPost make call QfMakeConv()
EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
*:cdo*
:cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix list.
It works like doing this: >
:cfirst
:{cmd}
:cnext
:{cmd}
etc.
< When the current file can't be |abandon|ed and the [!]
is not present, the command fails.
When an error is detected excecution stops.
The last buffer (or where an error occurred) becomes
the current buffer.
{cmd} can contain '|' to concatenate several commands.
Only valid entries in the quickfix list are used.
A range can be used to select entries, e.g.: >
:10,$cdo cmd
< To skip entries 1 to 9.
Note: While this command is executing, the Syntax
autocommand event is disabled by adding it to
'eventignore'. This considerably speeds up editing
each buffer.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
Also see |:bufdo|, |:tabdo|, |:argdo|, |:windo|,
|:ldo|, |:cfdo| and |:lfdo|.
*:cfdo*
:cfdo[!] {cmd} Execute {cmd} in each file in the quickfix list.
It works like doing this: >
:cfirst
:{cmd}
:cnfile
:{cmd}
etc.
< Otherwise it works the same as `:cdo`.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
*:ldo*
:ld[o][!] {cmd} Execute {cmd} in each valid entry in the location list
for the current window.
It works like doing this: >
:lfirst
:{cmd}
:lnext
:{cmd}
etc.
< Only valid entries in the location list are used.
Otherwise it works the same as `:cdo`.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
*:lfdo*
:lfdo[!] {cmd} Execute {cmd} in each file in the location list for
the current window.
It works like doing this: >
:lfirst
:{cmd}
:lnfile
:{cmd}
etc.
< Otherwise it works the same as `:ldo`.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
=============================================================================
2. The error window *quickfix-window*
+2 -1
View File
@@ -248,7 +248,8 @@ LOOPING OVER TAB PAGES:
{cmd} must not open or close tab pages or reorder them.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
Also see |:windo|, |:argdo| and |:bufdo|.
Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo|
and |:lfdo|
==============================================================================
3. Other items *tab-page-other*
+6
View File
@@ -2032,11 +2032,13 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:cclose quickfix.txt /*:cclose*
:cd editing.txt /*:cd*
:cd- editing.txt /*:cd-*
:cdo quickfix.txt /*:cdo*
:ce change.txt /*:ce*
:center change.txt /*:center*
:cex quickfix.txt /*:cex*
:cexpr quickfix.txt /*:cexpr*
:cf quickfix.txt /*:cf*
:cfdo quickfix.txt /*:cfdo*
:cfile quickfix.txt /*:cfile*
:cfir quickfix.txt /*:cfir*
:cfirst quickfix.txt /*:cfirst*
@@ -2383,6 +2385,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:lclose quickfix.txt /*:lclose*
:lcs if_cscop.txt /*:lcs*
:lcscope if_cscop.txt /*:lcscope*
:ldo quickfix.txt /*:ldo*
:le change.txt /*:le*
:left change.txt /*:left*
:lefta windows.txt /*:lefta*
@@ -2401,6 +2404,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:lex quickfix.txt /*:lex*
:lexpr quickfix.txt /*:lexpr*
:lf quickfix.txt /*:lf*
:lfdo quickfix.txt /*:lfdo*
:lfile quickfix.txt /*:lfile*
:lfir quickfix.txt /*:lfir*
:lfirst quickfix.txt /*:lfirst*
@@ -5710,6 +5714,7 @@ external-editor gui_mac.txt /*external-editor*
f motion.txt /*f*
faq intro.txt /*faq*
farsi farsi.txt /*farsi*
farsi-fonts farsi.txt /*farsi-fonts*
farsi.txt farsi.txt /*farsi.txt*
fasm.vim syntax.txt /*fasm.vim*
fcs_choice-variable eval.txt /*fcs_choice-variable*
@@ -6599,6 +6604,7 @@ i_CTRL-G_<Down> insert.txt /*i_CTRL-G_<Down>*
i_CTRL-G_<Up> insert.txt /*i_CTRL-G_<Up>*
i_CTRL-G_CTRL-J insert.txt /*i_CTRL-G_CTRL-J*
i_CTRL-G_CTRL-K insert.txt /*i_CTRL-G_CTRL-K*
i_CTRL-G_U insert.txt /*i_CTRL-G_U*
i_CTRL-G_j insert.txt /*i_CTRL-G_j*
i_CTRL-G_k insert.txt /*i_CTRL-G_k*
i_CTRL-G_u insert.txt /*i_CTRL-G_u*
+21 -26
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.4. Last change: 2015 Aug 25
*todo.txt* For Vim version 7.4. Last change: 2015 Sep 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -91,20 +91,17 @@ Perhaps we can use ":silent window"?
Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
Crash when changing the 'tags' option from a remote command.
(Benjamin Fritz, 2015 Mar 18, stack trace Mar 20)
Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
Updated Breton spell script. (pull request 396, Dominique)
Unexpected delay when using CTRL-O u. It's not timeoutlen.
(Gary Johnson, 2015 Aug 28)
Can src/GvimExt/Make_cyg.mak be removed?
Same for src/xxd/Make_cyg.mak
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
Patch to add CTRL-g U to not break undo for the following cursor movement
command. (Christian Brabandt, 2015 Aug 4)
2html update. (Ben Fritz, 2015 Sep 9)
MS-Windows: When editing a file with a leading space, writing it uses the
wrong name. (Aram, 2014 Nov 7) Vim 7.4.
@@ -115,8 +112,6 @@ specifically? First try with the parens, then without.
Value returned by virtcol() changes depending on how lines wrap. This is
inconsistent with the documentation.
Better greek spell checking. Issue 299.
Add bzl filetype support. (David Barnett, 2015 Aug 11)
When complete() first argument is before where insert started and 'backspace'
@@ -131,11 +126,8 @@ Goes away when disabling the swap file. (might1, Feb 16)
MS-Windows: Crash opening very long file name starting with "\\".
(Christian Brock, 2012 Jun 29)
Patch to improve IME handling in the MS-Windows console.
(Ken Takata, 2015 Aug 8)
Patch to support Unicode I/O in the MS-Windows console.
(Ken Takata, 2015 Aug 8) Also by Yasuhiro Matsumoto.
The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep
24): setwinvar(), :diffthis, :diffoff.
The argument for "-S" is not taken literally, the ":so" command expands
wildcards. Add a ":nowild" command modifier? (ZyX, 2015 March 4)
@@ -146,6 +138,12 @@ effects for when set by the user, on init and when reset to default.
Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5)
Update Aug 14.
Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
Sep 10)
Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
Update Sep 7. Update by Christian Brabandt, 2015 Sep 8.
Build with Python on Mac does not always use the right library.
(Kazunobu Kuriyama, 2015 Mar 28)
@@ -156,10 +154,6 @@ inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
ml_updatechunk() is slow when retrying for another encoding. (John Little,
2014 Sep 11)
Patch to fix that "zt" in diff mode doesn't always work properly.
(Christian Brabandt, 2015 Aug 6) Need to uncomment a line to not have filler
lines.
Patch to fix checking global option value when not using it.
(Arnaud Decara, 2015 Jul 23)
@@ -217,11 +211,17 @@ Patch on Issue 72: 'autochdir' causes problems for :vimgrep.
When 'balloonexpr' returns a list the result has a trailing newline.
Just remove one trailing newline. (lcd, 2014 Oct 17)
When two SIGWINCH arrive very quickly, the second one may be lost.
(Josh Triplett, 2015 Sep 17)
Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24)
Patch to add GUI colors to the terminal, when it supports it. (ZyX, 2013 Jan
26, update 2013 Dec 14, another 2014 Nov 22)
Patch to improve behavior of dead keys on MS-Windows. (John Wellesz, 2015 Aug
25) https://github.com/vim/vim/pull/399.diff
Result of systemlist() does not show whether text ended in line break.
(Bjorn Linse, 2014 Nov 27)
@@ -238,11 +238,6 @@ Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19)
Should be easy to highlight all matches with 'incsearch'. Idea by Itchyny,
2015 Feb 6.
Patch to add ":ldo" and ":cdo", execute commands over quickfix list and
location list. (Yegappan Lakshmanan, 2013 Jun 2, update 2015 Mar 21)
Update by Florian Walch, 2015 Jul 1.
Update by Yegappan, 2015 Jul 24.
Plugins need to make a lot of effort, lots of mappings, to know what happened
before pressing the key that triggers a plugin action. How about keeping the
last N pressed keys, so that they do not need to be mapped?
@@ -289,6 +284,9 @@ Delete old code in os_msdos.c, mch_FullName().
Patch: On MS-Windows shellescape() may have to triple double quotes.
(Ingo Karkat, 2015 Jan 16)
Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15)
Update 2015 Jul 25 (email).
Redo only remembers the last change. Could use "{count}g." to redo an older
change. How does the user know which change? At least have a way to list
them: ":repeats".
@@ -829,9 +827,6 @@ Patch to make "z=" work when 'spell' is off. Does this have nasty side
effects? (Christian Brabandt, 2012 Aug 5, Update 2013 Aug 12)
Would also need to do this for spellbadword() and spellsuggest().
Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15)
Update 2015 Jul 25 (email).
On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
64 bits value. Change all number options to use nropt_T and define it to the
right type.
+13 -11
View File
@@ -1,4 +1,4 @@
*windows.txt* For Vim version 7.4. Last change: 2015 Jul 21
*windows.txt* For Vim version 7.4. Last change: 2015 Aug 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -715,7 +715,8 @@ can also get to them with the buffer list commands, like ":bnext".
{cmd} must not open or close windows or reorder them.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
Also see |:tabdo|, |:argdo| and |:bufdo|.
Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo|
*:bufdo*
:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if
@@ -743,7 +744,8 @@ can also get to them with the buffer list commands, like ":bnext".
each buffer.
{not in Vi} {not available when compiled without the
|+listcmds| feature}
Also see |:tabdo|, |:argdo| and |:windo|.
Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|,
|:cfdo| and |:lfdo|
Examples: >
@@ -1115,13 +1117,13 @@ list of buffers. |unlisted-buffer|
the current buffer remains being edited. See |:buffer-!| for
[!]. This will also edit a buffer that is not in the buffer
list, without setting the 'buflisted' flag.
Also see ||+cmd|.
Also see |+cmd|.
:[N]b[uffer][!] [+cmd] {bufname}
Edit buffer for {bufname} from the buffer list. See
|:buffer-!| for [!]. This will also edit a buffer that is not
in the buffer list, without setting the 'buflisted' flag.
Also see ||+cmd|.
Also see |+cmd|.
:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer*
Split window and edit buffer [N] from the buffer list. If [N]
@@ -1129,7 +1131,7 @@ list of buffers. |unlisted-buffer|
"useopen" setting of 'switchbuf' when splitting. This will
also edit a buffer that is not in the buffer list, without
setting the 'buflisted' flag.
Also see ||+cmd|.
Also see |+cmd|.
:[N]sb[uffer] [+cmd] {bufname}
Split window and edit buffer for {bufname} from the buffer
@@ -1138,13 +1140,13 @@ list of buffers. |unlisted-buffer|
Note: If what you want to do is split the buffer, make a copy
under another name, you can do it this way: >
:w foobar | sp #
< Also see ||+cmd|.
< Also see |+cmd|.
:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87*
Go to [N]th next buffer in buffer list. [N] defaults to one.
Wraps around the end of the buffer list.
See |:buffer-!| for [!].
Also see ||+cmd|.
Also see |+cmd|.
If you are in a help buffer, this takes you to the next help
buffer (if there is one). Similarly, if you are in a normal
(non-help) buffer, this takes you to the next normal buffer.
@@ -1157,21 +1159,21 @@ list of buffers. |unlisted-buffer|
:[N]sbn[ext] [+cmd] [N]
Split window and go to [N]th next buffer in buffer list.
Wraps around the end of the buffer list. Uses 'switchbuf'
Also see ||+cmd|.
Also see |+cmd|.
:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88*
:[N]bp[revious][!] [+cmd] [N]
Go to [N]th previous buffer in buffer list. [N] defaults to
one. Wraps around the start of the buffer list.
See |:buffer-!| for [!] and 'switchbuf'.
Also see ||+cmd|.
Also see |+cmd|.
:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious*
:[N]sbp[revious] [+cmd] [N]
Split window and go to [N]th previous buffer in buffer list.
Wraps around the start of the buffer list.
Uses 'switchbuf'.
Also see ||+cmd|.
Also see |+cmd|.
:br[ewind][!] [+cmd] *:br* *:brewind*
Go to first buffer in buffer list. If the buffer list is
+4 -4
View File
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2015 Aug 11
" Last Change: 2015 Sep 22
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -143,7 +143,7 @@ au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch
au BufNewFile,BufRead *.art setf art
" AsciiDoc
au BufNewFile,BufRead *.asciidoc setf asciidoc
au BufNewFile,BufRead *.asciidoc,*.adoc setf asciidoc
" ASN.1
au BufNewFile,BufRead *.asn,*.asn1 setf asn
@@ -826,7 +826,7 @@ au BufNewFile,BufRead *.gs setf grads
au BufNewFile,BufRead *.gretl setf gretl
" Groovy
au BufNewFile,BufRead *.groovy setf groovy
au BufNewFile,BufRead *.gradle,*.groovy setf groovy
" GNU Server Pages
au BufNewFile,BufRead *.gsp setf gsp
@@ -872,7 +872,7 @@ func! s:FThtml()
setf xhtml
return
endif
if getline(n) =~ '{%\s*\(extends\|block\|load\)\>'
if getline(n) =~ '{%\s*\(extends\|block\|load\)\>\|{#\s\+'
setf htmldjango
return
endif
+40 -14
View File
@@ -2,7 +2,7 @@
" Header: "{{{
" Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2015 Jun 12
" Last Change: 2015 Sep 25
" Version: 1.0
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.
@@ -178,13 +178,15 @@ let s:countonly = 0
" 3 "script"
" 4 "style"
" 5 comment start
" 6 conditional comment start
" -1 closing tag
" -2 "/pre"
" -3 "/script"
" -4 "/style"
" -5 comment end
" -6 conditional comment end
let s:indent_tags = {}
let s:endtags = [0,0,0,0,0,0] " long enough for the highest index
let s:endtags = [0,0,0,0,0,0,0] " long enough for the highest index
"}}}
" Add a list of tag names for a pair of <tag> </tag> to "tags".
@@ -257,6 +259,7 @@ call s:AddBlockTag('pre', 2)
call s:AddBlockTag('script', 3)
call s:AddBlockTag('style', 4)
call s:AddBlockTag('<!--', 5, '-->')
call s:AddBlockTag('<!--[', 6, '![endif]-->')
"}}}
" Return non-zero when "tagname" is an opening tag, not being a block tag, for
@@ -291,7 +294,7 @@ func! s:CountITags(text)
let s:nextrel = 0 " relative indent steps for next line [unit &sw]:
let s:block = 0 " assume starting outside of a block
let s:countonly = 1 " don't change state
call substitute(a:text, '<\zs/\=\w\+\(-\w\+\)*\>\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
call substitute(a:text, '<\zs/\=\w\+\(-\w\+\)*\>\|<!--\[\|\[endif\]-->\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
let s:countonly = 0
endfunc "}}}
@@ -303,7 +306,7 @@ func! s:CountTagsAndState(text)
let s:nextrel = 0 " relative indent steps for next line [unit &sw]:
let s:block = b:hi_newstate.block
let tmp = substitute(a:text, '<\zs/\=\w\+\(-\w\+\)*\>\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
let tmp = substitute(a:text, '<\zs/\=\w\+\(-\w\+\)*\>\|<!--\[\|\[endif\]-->\|<!--\|-->', '\=s:CheckTag(submatch(0))', 'g')
if s:block == 3
let b:hi_newstate.scripttype = s:GetScriptType(matchstr(tmp, '\C.*<SCRIPT\>\zs[^>]*'))
endif
@@ -425,7 +428,7 @@ func! s:FreshState(lnum)
" State:
" lnum last indented line == prevnonblank(a:lnum - 1)
" block = 0 a:lnum located within special tag: 0:none, 2:<pre>,
" 3:<script>, 4:<style>, 5:<!--
" 3:<script>, 4:<style>, 5:<!--, 6:<!--[
" baseindent use this indent for line a:lnum as a start - kind of
" autoindent (if block==0)
" scripttype = '' type attribute of a script tag (if block==3)
@@ -464,10 +467,13 @@ func! s:FreshState(lnum)
" FI
" look back for a blocktag
call cursor(a:lnum, 1)
let [stopline, stopcol] = searchpos('\c<\zs\/\=\%(pre\>\|script\>\|style\>\)', "bW")
if stopline > 0
" fugly ... why isn't there searchstr()
let stopline2 = v:lnum + 1
if has_key(b:hi_indent, 'block') && b:hi_indent.block > 5
let [stopline2, stopcol2] = searchpos('<!--', 'bnW')
endif
let [stopline, stopcol] = searchpos('\c<\zs\/\=\%(pre\>\|script\>\|style\>\)', "bnW")
if stopline > 0 && stopline < stopline2
" ugly ... why isn't there searchstr()
let tagline = tolower(getline(stopline))
let blocktag = matchstr(tagline, '\/\=\%(pre\>\|script\>\|style\>\)', stopcol - 1)
if blocktag[0] != "/"
@@ -487,23 +493,29 @@ func! s:FreshState(lnum)
" blocktag == "/..."
let swendtag = match(tagline, '^\s*</') >= 0
if !swendtag
let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bW")
let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW")
call s:CountITags(tolower(getline(bline)[: bcol-2]))
let state.baseindent = indent(bline) + (s:curind + s:nextrel) * s:ShiftWidth()
return state
endif
endif
endif
if stopline > stopline2
let stopline = stopline2
let stopcol = stopcol2
endif
" else look back for comment
call cursor(a:lnum, 1)
let [comlnum, comcol, found] = searchpos('\(<!--\)\|-->', 'bpW', stopline)
if found == 2
let [comlnum, comcol, found] = searchpos('\(<!--\[\)\|\(<!--\)\|-->', 'bpnW', stopline)
if found == 2 || found == 3
" comment opener found, assume a:lnum within comment
let state.block = 5
let state.block = (found == 3 ? 5 : 6)
let state.blocklnr = comlnum
" check preceding tags in the line:
call s:CountITags(tolower(getline(comlnum)[: comcol-2]))
if found == 2
let state.baseindent = b:hi_indent.baseindent
endif
let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
return state
endif
@@ -819,6 +831,20 @@ func! s:Alien5()
return indent(prevlnum)
endfunc "}}}
" Return the indent for conditional comment: <!--[ ![endif]-->
func! s:Alien6()
"{{{
let curtext = getline(v:lnum)
if curtext =~ '\s*\zs<!\[endif\]-->'
" current line starts with end of comment, line up with comment start.
let lnum = search('<!--', 'bn')
if lnum > 0
return indent(lnum)
endif
endif
return b:hi_indent.baseindent + s:ShiftWidth()
endfunc "}}}
" When the "lnum" line ends in ">" find the line containing the matching "<".
func! HtmlIndent_FindTagStart(lnum)
"{{{
+8 -2
View File
@@ -1,6 +1,7 @@
" Vim indent file
" Language: YAML
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
" Last Change: 2015 Sep 25
" Only load this indent file when no other was loaded.
if exists('b:did_indent')
@@ -115,8 +116,13 @@ function GetYAMLIndent(lnum)
\ s:liststartregex))
elseif line =~# s:mapkeyregex
" Same for line containing mapping key
return indent(s:FindPrevLEIndentedLineMatchingRegex(a:lnum,
\ s:mapkeyregex))
let prevmapline = s:FindPrevLEIndentedLineMatchingRegex(a:lnum,
\ s:mapkeyregex)
if getline(prevmapline) =~# '^\s*- '
return indent(prevmapline) + 2
else
return indent(prevmapline)
endif
elseif prevline =~# '^\s*- '
" - List with
" multiline scalar
+8 -8
View File
@@ -25,16 +25,16 @@ $SPELLDIR/br.utf-8.spl : $FILES
#
# Fetching the files from OpenOffice.org.
#
OODIR = http://extensions.libreoffice.org/extension-center/an-drouizig-breton-spellchecker/releases/0.11/
:attr {fetch = $OODIR/%file%} dict-br-0.11.oxt
OODIR = http://extensions.libreoffice.org/extension-center/an-drouizig-breton-spellchecker/releases/0.13/
:attr {fetch = $OODIR/%file%} difazier-an-drouizig-0_13.oxt
# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
br_FR.aff br_FR.dic: {buildcheck=}
:assertpkg unzip patch
:fetch dict-br-0.11.oxt
:sys $UNZIP dict-br-0.11.oxt
:delete dict-br-0.11.oxt
:fetch difazier-an-drouizig-0_13.oxt
:sys $UNZIP difazier-an-drouizig-0_13.oxt
:delete difazier-an-drouizig-0_13.oxt
:copy dictionaries/br_FR.aff br_FR.aff
:copy dictionaries/br_FR.dic br_FR.dic
# The br_FR.aff file contains a BOM, remove it.
@@ -65,12 +65,12 @@ diff:
check:
:assertpkg unzip diff
:fetch dict-br-0.11.oxt
:fetch difazier-an-drouizig-0_13.oxt
:mkdir tmp
:cd tmp
@try:
@import stat
:sys $UNZIP ../dict-br-0.11.oxt
:sys $UNZIP ../difazier-an-drouizig-0_13.oxt
:sys {force} diff ../dictionaries/br_FR.aff br_FR.aff >d
@if os.stat('d')[stat.ST_SIZE] > 0:
:copy br_FR.aff ../br_FR.new.aff
@@ -80,7 +80,7 @@ check:
@finally:
:cd ..
:delete {r}{f}{q} tmp
:delete dict-br-0.11.oxt
:delete difazier-an-drouizig-0_13.oxt
# vim: set sts=4 sw=4 :
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6 -6
View File
@@ -4,7 +4,7 @@
" Language: CMake
" Author: Andy Cedilnik <andy.cedilnik@kitware.com>
" Maintainer: Karthik Krishnan <karthik.krishnan@kitware.com>
" Last Change: 2012 Jun 01
" Last Change: 2015 Sep 25
" (Dominique Pelle added @Spell)
" Version: $Revision: 1.10 $
"
@@ -31,9 +31,9 @@ syn region cmakeVariableValue start=/\${/ end=/}/
\ contained oneline contains=CONTAINED,cmakeTodo
syn region cmakeEnvironment start=/\$ENV{/ end=/}/
\ contained oneline contains=CONTAINED,cmakeTodo
syn region cmakeString start=/"/ end=/"/
syn region cmakeString start=/"/ end=/"/
\ contains=CONTAINED,cmakeTodo,cmakeOperators
syn region cmakeArguments start=/(/ end=/)/
syn region cmakeArguments start=/(/ end=/)/
\ contains=ALLBUT,cmakeArguments,cmakeTodo
syn keyword cmakeSystemVariables
\ WIN32 UNIX APPLE CYGWIN BORLAND MINGW MSVC MSVC_IDE MSVC60 MSVC70 MSVC71 MSVC80 MSVC90
@@ -44,11 +44,11 @@ syn keyword cmakeDeprecated ABSTRACT_FILES BUILD_NAME SOURCE_FILES SOURCE_FILES_
\ nextgroup=cmakeArguments
" The keywords are generated as: cmake --help-command-list | tr "\n" " "
syn keyword cmakeStatement
syn keyword cmakeStatement
\ ADD_CUSTOM_COMMAND ADD_CUSTOM_TARGET ADD_DEFINITIONS ADD_DEPENDENCIES ADD_EXECUTABLE ADD_LIBRARY ADD_SUBDIRECTORY ADD_TEST AUX_SOURCE_DIRECTORY BUILD_COMMAND BUILD_NAME CMAKE_MINIMUM_REQUIRED CONFIGURE_FILE CREATE_TEST_SOURCELIST ELSE ELSEIF ENABLE_LANGUAGE ENABLE_TESTING ENDFOREACH ENDFUNCTION ENDIF ENDMACRO ENDWHILE EXEC_PROGRAM EXECUTE_PROCESS EXPORT_LIBRARY_DEPENDENCIES FILE FIND_FILE FIND_LIBRARY FIND_PACKAGE FIND_PATH FIND_PROGRAM FLTK_WRAP_UI FOREACH FUNCTION GET_CMAKE_PROPERTY GET_DIRECTORY_PROPERTY GET_FILENAME_COMPONENT GET_SOURCE_FILE_PROPERTY GET_TARGET_PROPERTY GET_TEST_PROPERTY IF INCLUDE INCLUDE_DIRECTORIES INCLUDE_EXTERNAL_MSPROJECT INCLUDE_REGULAR_EXPRESSION INSTALL INSTALL_FILES INSTALL_PROGRAMS INSTALL_TARGETS LINK_DIRECTORIES LINK_LIBRARIES LIST LOAD_CACHE LOAD_COMMAND MACRO MAKE_DIRECTORY MARK_AS_ADVANCED MATH MESSAGE OPTION OUTPUT_REQUIRED_FILES PROJECT QT_WRAP_CPP QT_WRAP_UI REMOVE REMOVE_DEFINITIONS SEPARATE_ARGUMENTS SET SET_DIRECTORY_PROPERTIES SET_SOURCE_FILES_PROPERTIES SET_TARGET_PROPERTIES SET_TESTS_PROPERTIES SITE_NAME SOURCE_GROUP STRING SUBDIR_DEPENDS SUBDIRS TARGET_LINK_LIBRARIES TRY_COMPILE TRY_RUN UNSET USE_MANGLED_MESA UTILITY_SOURCE VARIABLE_REQUIRES VTK_MAKE_INSTANTIATOR VTK_WRAP_JAVA VTK_WRAP_PYTHON VTK_WRAP_TCL WHILE WRITE_FILE
\ nextgroup=cmakeArguments
syn keyword cmakeTodo
\ TODO FIXME XXX
syn keyword cmakeTodo
\ TODO FIXME XXX
\ contained
" Define the default highlighting.
+17 -16
View File
@@ -1,8 +1,9 @@
" Vim syntax file
" Language: gnuplot 4.7.0
" Maintainer: Andrew Rasmussen andyras@users.sourceforge.net
" Maintainer: Josh Wainwright <wainwright DOT ja AT gmail DOT com>
" Last Maintainer: Andrew Rasmussen andyras@users.sourceforge.net
" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
" Last Change: 2014-02-24
" Last Change: 2015-08-25
" Filenames: *.gnu *.plt *.gpi *.gih *.gp *.gnuplot scripts: #!*gnuplot
" URL: http://www.vim.org/scripts/script.php?script_id=4873
" Original URL: http://johnh51.get.to/vim/syntax/gnuplot.vim
@@ -364,18 +365,18 @@ syn keyword gnuplotKeyword samples
" set size
syn keyword gnuplotKeyword size square nosquare ratio noratio
" set style
syn keyword gnuplotKeyword style function data noborder rectangle arrow
syn keyword gnuplotKeyword default nohead head heads size filled empty
syn keyword gnuplotKeyword nofilled front back boxplot range fraction
syn keyword gnuplotKeyword outliers nooutliers pointtype candlesticks
syn keyword gnuplotKeyword separation labels off auto x x2 sorted unsorted
syn keyword gnuplotKeyword fill empty transparent solid pattern border
syn keyword gnuplotKeyword increment userstyles financebars line default
syn keyword gnuplotKeyword linetype lt linecolor lc linewidth lw pointtype
syn keyword gnuplotKeyword pt pointsize ps pointinterval pi palette circle
syn keyword gnuplotKeyword radius graph screen wedge nowedge ellipse size
syn keyword gnuplotKeyword units xx xy yy histogram line textbox opaque
syn keyword gnuplotKeyword border noborder
syn keyword gnuplotKeyword style arrow auto back border boxplot
syn keyword gnuplotKeyword candlesticks circle clustered columnstacked data
syn keyword gnuplotKeyword default ellipse empty fill[ed] financebars
syn keyword gnuplotKeyword fraction front function gap graph head[s]
syn keyword gnuplotKeyword histogram increment labels lc line linecolor
syn keyword gnuplotKeyword linetype linewidth lt lw noborder nofilled
syn keyword gnuplotKeyword nohead nooutliers nowedge off opaque outliers
syn keyword gnuplotKeyword palette pattern pi pointinterval pointsize
syn keyword gnuplotKeyword pointtype ps pt radius range rectangle
syn keyword gnuplotKeyword rowstacked screen separation size solid sorted
syn keyword gnuplotKeyword textbox transparent units unsorted userstyles
syn keyword gnuplotKeyword wedge x x2 xx xy yy
" set surface
syn keyword gnuplotKeyword surface implicit explicit
" set table
@@ -496,8 +497,8 @@ syn keyword gnuplotTodo contained TODO FIXME XXX
syn keyword gnuplotStatement cd call clear evaluate exit fit help history
syn keyword gnuplotStatement load lower pause plot p print pwd quit raise
syn keyword gnuplotStatement refresh replot rep reread reset save set show
syn keyword gnuplotStatement shell splot spstats system test undefine unset
syn keyword gnuplotStatement update
syn keyword gnuplotStatement shell splot spstats stats system test undefine
syn keyword gnuplotStatement unset update
" ---- Define the default highlighting ---- "
" For version 5.7 and earlier: only when not done already
+5 -1
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Python
" Maintainer: Zvezdan Petkovic <zpetkovic@acm.org>
" Last Change: 2015 Jul 14
" Last Change: 2015 Sep 15
" Credits: Neil Schemenauer <nas@python.ca>
" Dmitry Vasiliev
"
@@ -70,6 +70,7 @@ set cpo&vim
" - 'nonlocal' is a keyword in Python 3 and will be highlighted.
" - 'print' is a built-in in Python 3 and will be highlighted as
" built-in below (use 'from __future__ import print_function' in 2)
" - async and await were added in Python 3.5 and are soft keywords.
"
syn keyword pythonStatement False, None, True
syn keyword pythonStatement as assert break continue del exec global
@@ -80,6 +81,7 @@ syn keyword pythonRepeat for while
syn keyword pythonOperator and in is not or
syn keyword pythonException except finally raise try
syn keyword pythonInclude from import
syn keyword pythonAsync async await
" Decorators (new in Python 2.4)
syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite
@@ -230,6 +232,7 @@ if !exists("python_no_exception_highlight")
syn keyword pythonExceptions FileNotFoundError InterruptedError
syn keyword pythonExceptions IsADirectoryError NotADirectoryError
syn keyword pythonExceptions PermissionError ProcessLookupError
syn keyword pythonExceptions RecursionError StopAsyncIteration
syn keyword pythonExceptions TimeoutError
" builtin exceptions deprecated/removed in Python 3
syn keyword pythonExceptions IOError VMSError WindowsError
@@ -286,6 +289,7 @@ if version >= 508 || !exists("did_python_syn_inits")
HiLink pythonOperator Operator
HiLink pythonException Exception
HiLink pythonInclude Include
HiLink pythonAsync Statement
HiLink pythonDecorator Define
HiLink pythonFunction Function
HiLink pythonComment Comment
+2 -2
View File
@@ -2,7 +2,7 @@
" Language: reStructuredText documentation format
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2014-10-03
" Latest Revision: 2015-09-07
if exists("b:current_syntax")
finish
@@ -81,7 +81,7 @@ syn region rstHyperlinkTarget matchgroup=rstDirective
execute 'syn region rstExDirective contained matchgroup=rstDirective' .
\ ' start=+' . s:ReferenceName . '::\_s+' .
\ ' skip=+^$+' .
\ ' end=+^\s\@!+ contains=@rstCruft'
\ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock'
execute 'syn match rstSubstitutionDefinition contained' .
\ ' /|' . s:ReferenceName . '|\_s\+/ nextgroup=@rstDirectives'
+17 -3
View File
@@ -1,7 +1,8 @@
" Vim syntax file
" Language: screen(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-01-03
" Language: screen(1) configuration file
" Maintainer: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2015-09-24
if exists("b:current_syntax")
finish
@@ -76,12 +77,16 @@ syn keyword screenCommands
\ break
\ breaktype
\ bufferfile
\ bumpleft
\ bumpright
\ c1
\ caption
\ chacl
\ charset
\ chdir
\ cjkwidth
\ clear
\ collapse
\ colon
\ command
\ compacthist
@@ -104,6 +109,7 @@ syn keyword screenCommands
\ deflogin
\ defmode
\ defmonitor
\ defmousetrack
\ defnonblock
\ defobuflimit
\ defscrollback
@@ -113,6 +119,7 @@ syn keyword screenCommands
\ defutf8
\ defwrap
\ defwritelock
\ defzombie
\ detach
\ digraph
\ dinfo
@@ -126,7 +133,9 @@ syn keyword screenCommands
\ fit
\ flow
\ focus
\ focusminsize
\ gr
\ group
\ hardcopy
\ hardcopy_append
\ hardcopydir
@@ -155,6 +164,7 @@ syn keyword screenCommands
\ maxwin
\ meta
\ monitor
\ mousetrack
\ msgminwait
\ msgwait
\ multiuser
@@ -182,6 +192,7 @@ syn keyword screenCommands
\ register
\ remove
\ removebuf
\ rendition
\ reset
\ resize
\ screen
@@ -197,6 +208,7 @@ syn keyword screenCommands
\ sleep
\ slowpaste
\ sorendition
\ sort
\ source
\ split
\ startup_message
@@ -210,6 +222,7 @@ syn keyword screenCommands
\ time
\ title
\ umask
\ unbindall
\ unsetenv
\ utf8
\ vbell
@@ -228,6 +241,7 @@ syn keyword screenCommands
\ xon
\ zmodem
\ zombie
\ zombie_timeout
hi def link screenEscape Special
hi def link screenComment Comment
+32
View File
@@ -12268,6 +12268,38 @@ else
$as_echo "yes" >&6; }
fi
if test "x$GTK_CFLAGS" != "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pango_shape_full" >&5
$as_echo_n "checking for pango_shape_full... " >&6; }
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <gtk/gtk.h>
int
main ()
{
pango_shape_full(NULL, 0, NULL, 0, NULL, NULL);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }; $as_echo "#define HAVE_PANGO_SHAPE_FULL 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-gpm argument" >&5
$as_echo_n "checking --disable-gpm argument... " >&6; }
# Check whether --enable-gpm was given.
+3
View File
@@ -369,6 +369,9 @@
#undef HAVE_SOLARIS_ACL
#undef HAVE_AIX_ACL
/* Define if pango_shape_full() is available. */
#undef HAVE_PANGO_SHAPE_FULL
/* Define if you want to add support of GPM (Linux console mouse daemon) */
#undef HAVE_GPM
+16
View File
@@ -3600,6 +3600,22 @@ else
AC_MSG_RESULT(yes)
fi
if test "x$GTK_CFLAGS" != "x"; then
dnl pango_shape_full() is new, fall back to pango_shape().
AC_MSG_CHECKING(for pango_shape_full)
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
AC_TRY_LINK(
[#include <gtk/gtk.h>],
[ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
AC_MSG_RESULT(no))
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
AC_MSG_CHECKING(--disable-gpm argument)
AC_ARG_ENABLE(gpm,
[ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
+6
View File
@@ -3917,6 +3917,12 @@ ins_compl_prep(c)
showmode();
}
#ifdef FEAT_CMDWIN
if (c == Ctrl_C && cmdwin_type != 0)
/* Avoid the popup menu remains displayed when leaving the
* command line window. */
update_screen(0);
#endif
#ifdef FEAT_CINDENT
/*
* Indent now if a key was typed that is in 'cinkeys'.
+31 -11
View File
@@ -12428,12 +12428,16 @@ getwinvar(argvars, rettv, off)
typval_T *rettv;
int off; /* 1 for gettabwinvar() */
{
win_T *win, *oldcurwin;
win_T *win;
char_u *varname;
dictitem_T *v;
tabpage_T *tp = NULL;
tabpage_T *oldtabpage;
int done = FALSE;
#ifdef FEAT_WINDOWS
win_T *oldcurwin;
tabpage_T *oldtabpage;
int need_switch_win;
#endif
#ifdef FEAT_WINDOWS
if (off == 1)
@@ -12450,9 +12454,14 @@ getwinvar(argvars, rettv, off)
if (win != NULL && varname != NULL)
{
#ifdef FEAT_WINDOWS
/* Set curwin to be our win, temporarily. Also set the tabpage,
* otherwise the window is not valid. */
if (switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE) == OK)
* otherwise the window is not valid. Only do this when needed,
* autocommands get blocked. */
need_switch_win = !(tp == curtab && win == curwin);
if (!need_switch_win
|| switch_win(&oldcurwin, &oldtabpage, win, tp, TRUE) == OK)
#endif
{
if (*varname == '&') /* window-local-option */
{
@@ -12473,8 +12482,11 @@ getwinvar(argvars, rettv, off)
}
}
/* restore previous notion of curwin */
restore_win(oldcurwin, oldtabpage, TRUE);
#ifdef FEAT_WINDOWS
if (need_switch_win)
/* restore previous notion of curwin */
restore_win(oldcurwin, oldtabpage, TRUE);
#endif
}
if (!done && argvars[off + 2].v_type != VAR_UNKNOWN)
@@ -17625,6 +17637,7 @@ setwinvar(argvars, rettv, off)
#ifdef FEAT_WINDOWS
win_T *save_curwin;
tabpage_T *save_curtab;
int need_switch_win;
#endif
char_u *varname, *winvarname;
typval_T *varp;
@@ -17647,7 +17660,9 @@ setwinvar(argvars, rettv, off)
if (win != NULL && varname != NULL && varp != NULL)
{
#ifdef FEAT_WINDOWS
if (switch_win(&save_curwin, &save_curtab, win, tp, TRUE) == OK)
need_switch_win = !(tp == curtab && win == curwin);
if (!need_switch_win
|| switch_win(&save_curwin, &save_curtab, win, tp, TRUE) == OK)
#endif
{
if (*varname == '&')
@@ -17675,7 +17690,8 @@ setwinvar(argvars, rettv, off)
}
}
#ifdef FEAT_WINDOWS
restore_win(save_curwin, save_curtab, TRUE);
if (need_switch_win)
restore_win(save_curwin, save_curtab, TRUE);
#endif
}
}
@@ -23845,6 +23861,7 @@ call_user_func(fp, argcount, argvars, rettv, firstline, lastline, selfdict)
int ai;
char_u numbuf[NUMBUFLEN];
char_u *name;
size_t len;
#ifdef FEAT_PROFILE
proftime_T wait_start;
proftime_T call_start;
@@ -23976,13 +23993,16 @@ call_user_func(fp, argcount, argvars, rettv, firstline, lastline, selfdict)
save_sourcing_name = sourcing_name;
save_sourcing_lnum = sourcing_lnum;
sourcing_lnum = 1;
sourcing_name = alloc((unsigned)((save_sourcing_name == NULL ? 0
: STRLEN(save_sourcing_name)) + STRLEN(fp->uf_name) + 13));
/* need space for function name + ("function " + 3) or "[number]" */
len = (save_sourcing_name == NULL ? 0 : STRLEN(save_sourcing_name))
+ STRLEN(fp->uf_name) + 20;
sourcing_name = alloc((unsigned)len);
if (sourcing_name != NULL)
{
if (save_sourcing_name != NULL
&& STRNCMP(save_sourcing_name, "function ", 9) == 0)
sprintf((char *)sourcing_name, "%s..", save_sourcing_name);
sprintf((char *)sourcing_name, "%s[%d]..",
save_sourcing_name, (int)save_sourcing_lnum);
else
STRCPY(sourcing_name, "function ");
cat_func_name(sourcing_name + STRLEN(sourcing_name), fp);
+13
View File
@@ -65,6 +65,7 @@
#define ADDR_LOADED_BUFFERS 3
#define ADDR_BUFFERS 4
#define ADDR_TABS 5
#define ADDR_QUICKFIX 6
#ifndef DO_DECLARE_EXCMD
typedef struct exarg exarg_T;
@@ -270,6 +271,9 @@ EX(CMD_cclose, "cclose", ex_cclose,
EX(CMD_cd, "cd", ex_cd,
BANG|FILE1|TRLBAR|CMDWIN,
ADDR_LINES),
EX(CMD_cdo, "cdo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL,
ADDR_QUICKFIX),
EX(CMD_center, "center", ex_align,
TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
ADDR_LINES),
@@ -279,6 +283,9 @@ EX(CMD_cexpr, "cexpr", ex_cexpr,
EX(CMD_cfile, "cfile", ex_cfile,
TRLBAR|FILE1|BANG,
ADDR_LINES),
EX(CMD_cfdo, "cfdo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL,
ADDR_QUICKFIX),
EX(CMD_cfirst, "cfirst", ex_cc,
RANGE|NOTADR|COUNT|TRLBAR|BANG,
ADDR_LINES),
@@ -729,6 +736,9 @@ EX(CMD_lclose, "lclose", ex_cclose,
EX(CMD_lcscope, "lcscope", do_cscope,
EXTRA|NOTRLCOM|XFILE,
ADDR_LINES),
EX(CMD_ldo, "ldo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL,
ADDR_QUICKFIX),
EX(CMD_left, "left", ex_align,
TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY,
ADDR_LINES),
@@ -744,6 +754,9 @@ EX(CMD_lexpr, "lexpr", ex_cexpr,
EX(CMD_lfile, "lfile", ex_cfile,
TRLBAR|FILE1|BANG,
ADDR_LINES),
EX(CMD_lfdo, "lfdo", ex_listdo,
BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL,
ADDR_QUICKFIX),
EX(CMD_lfirst, "lfirst", ex_cc,
RANGE|NOTADR|COUNT|TRLBAR|BANG,
ADDR_LINES),
+46 -6
View File
@@ -2502,7 +2502,7 @@ ex_argdelete(eap)
}
/*
* ":argdo", ":windo", ":bufdo", ":tabdo"
* ":argdo", ":windo", ":bufdo", ":tabdo", ":cdo", ":ldo", ":cfdo" and ":lfdo"
*/
void
ex_listdo(eap)
@@ -2519,6 +2519,10 @@ ex_listdo(eap)
char_u *save_ei = NULL;
#endif
char_u *p_shm_save;
#ifdef FEAT_QUICKFIX
int qf_size = 0;
int qf_idx;
#endif
#ifndef FEAT_WINDOWS
if (eap->cmdidx == CMD_windo)
@@ -2571,18 +2575,37 @@ ex_listdo(eap)
}
/* set pcmark now */
if (eap->cmdidx == CMD_bufdo)
{
{
/* Advance to the first listed buffer after "eap->line1". */
for (buf = firstbuf; buf != NULL && (buf->b_fnum < eap->line1
for (buf = firstbuf; buf != NULL && (buf->b_fnum < eap->line1
|| !buf->b_p_bl); buf = buf->b_next)
if (buf->b_fnum > eap->line2)
{
buf = NULL;
break;
}
if (buf != NULL)
if (buf != NULL)
goto_buffer(eap, DOBUF_FIRST, FORWARD, buf->b_fnum);
}
}
#ifdef FEAT_QUICKFIX
else if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo
|| eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
{
qf_size = qf_get_size(eap);
if (qf_size <= 0 || eap->line1 > qf_size)
buf = NULL;
else
{
ex_cc(eap);
buf = curbuf;
i = eap->line1 - 1;
if (eap->addr_count <= 0)
/* default is all the quickfix/location list entries */
eap->line2 = qf_size;
}
}
#endif
else
setpcmark();
listcmd_busy = TRUE; /* avoids setting pcmark below */
@@ -2668,11 +2691,28 @@ ex_listdo(eap)
set_option_value((char_u *)"shm", 0L, p_shm_save, 0);
vim_free(p_shm_save);
/* If autocommands took us elsewhere, quit here */
/* If autocommands took us elsewhere, quit here. */
if (curbuf->b_fnum != next_fnum)
break;
}
#ifdef FEAT_QUICKFIX
if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo
|| eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
{
if (i >= qf_size || i >= eap->line2)
break;
qf_idx = qf_get_cur_idx(eap);
ex_cnext(eap);
/* If jumping to the next quickfix entry fails, quit here */
if (qf_get_cur_idx(eap) == qf_idx)
break;
}
#endif
if (eap->cmdidx == CMD_windo)
{
validate_cursor(); /* cursor may have moved */
+59 -10
View File
@@ -135,7 +135,7 @@ static int getargopt __ARGS((exarg_T *eap));
#endif
static int check_more __ARGS((int, int));
static linenr_T get_address __ARGS((char_u **, int addr_type, int skip, int to_other_file));
static linenr_T get_address __ARGS((exarg_T *, char_u **, int addr_type, int skip, int to_other_file));
static void get_flags __ARGS((exarg_T *eap));
#if !defined(FEAT_PERL) \
|| !defined(FEAT_PYTHON) || !defined(FEAT_PYTHON3) \
@@ -878,7 +878,7 @@ do_cmdline(cmdline, fgetline, cookie, flags)
if (flags & DOCMD_EXCRESET)
save_dbg_stuff(&debug_saved);
else
vim_memset(&debug_saved, 0, 1);
vim_memset(&debug_saved, 0, sizeof(debug_saved));
initial_trylevel = trylevel;
@@ -2180,9 +2180,14 @@ do_one_cmd(cmdlinep, sourcing,
lnum = CURRENT_TAB_NR;
ea.line2 = lnum;
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
ea.line2 = qf_get_cur_valid_idx(&ea);
break;
#endif
}
ea.cmd = skipwhite(ea.cmd);
lnum = get_address(&ea.cmd, ea.addr_type, ea.skip, ea.addr_count == 0);
lnum = get_address(&ea, &ea.cmd, ea.addr_type, ea.skip, ea.addr_count == 0);
if (ea.cmd == NULL) /* error detected */
goto doend;
if (lnum == MAXLNUM)
@@ -2240,6 +2245,14 @@ do_one_cmd(cmdlinep, sourcing,
ea.line2 = ARGCOUNT;
}
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
ea.line1 = 1;
ea.line2 = qf_get_size(&ea);
if (ea.line2 == 0)
ea.line2 = 1;
break;
#endif
}
++ea.addr_count;
}
@@ -2700,6 +2713,13 @@ do_one_cmd(cmdlinep, sourcing,
else
ea.line2 = ARGCOUNT;
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
ea.line2 = qf_get_size(&ea);
if (ea.line2 == 0)
ea.line2 = 1;
break;
#endif
}
}
@@ -3846,6 +3866,8 @@ set_one_cmd_context(xp, buff)
case CMD_botright:
case CMD_browse:
case CMD_bufdo:
case CMD_cdo:
case CMD_cfdo:
case CMD_confirm:
case CMD_debug:
case CMD_folddoclosed:
@@ -3855,7 +3877,9 @@ set_one_cmd_context(xp, buff)
case CMD_keepjumps:
case CMD_keepmarks:
case CMD_keeppatterns:
case CMD_ldo:
case CMD_leftabove:
case CMD_lfdo:
case CMD_lockmarks:
case CMD_noautocmd:
case CMD_noswapfile:
@@ -4338,7 +4362,8 @@ skip_range(cmd, ctx)
* Return MAXLNUM when no Ex address was found.
*/
static linenr_T
get_address(ptr, addr_type, skip, to_other_file)
get_address(eap, ptr, addr_type, skip, to_other_file)
exarg_T *eap UNUSED;
char_u **ptr;
int addr_type; /* flag: one of ADDR_LINES, ... */
int skip; /* only skip the address, don't use it */
@@ -4379,6 +4404,11 @@ get_address(ptr, addr_type, skip, to_other_file)
case ADDR_TABS:
lnum = CURRENT_TAB_NR;
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
lnum = qf_get_cur_valid_idx(eap);
break;
#endif
}
break;
@@ -4411,6 +4441,13 @@ get_address(ptr, addr_type, skip, to_other_file)
case ADDR_TABS:
lnum = LAST_TAB_NR;
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
lnum = qf_get_size(eap);
if (lnum == 0)
lnum = 1;
break;
#endif
}
break;
@@ -4586,6 +4623,11 @@ get_address(ptr, addr_type, skip, to_other_file)
case ADDR_TABS:
lnum = CURRENT_TAB_NR;
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
lnum = qf_get_cur_valid_idx(eap);
break;
#endif
}
}
@@ -4724,6 +4766,12 @@ invalid_range(eap)
if (eap->line2 > LAST_TAB_NR)
return (char_u *)_(e_invrange);
break;
#ifdef FEAT_QUICKFIX
case ADDR_QUICKFIX:
if (eap->line2 != 1 && eap->line2 > qf_get_size(eap))
return (char_u *)_(e_invrange);
break;
#endif
}
}
return NULL;
@@ -5834,6 +5882,7 @@ static struct
{ADDR_TABS, "tabs"},
{ADDR_BUFFERS, "buffers"},
{ADDR_WINDOWS, "windows"},
{ADDR_QUICKFIX, "quickfix"},
{-1, NULL}
};
#endif
@@ -9003,11 +9052,11 @@ do_sleep(msec)
{
ui_delay(msec - done > 1000L ? 1000L : msec - done, TRUE);
ui_breakcheck();
#ifdef FEAT_NETBEANS_INTG
/* Process the netbeans messages that may have been received in the
* call to ui_breakcheck() when the GUI is in use. This may occur when
* running a test case. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
/* Process the netbeans and clientserver messages that may have been
* received in the call to ui_breakcheck() when the GUI is in use. This
* may occur when running a test case. */
parse_queued_messages();
#endif
}
}
@@ -9243,7 +9292,7 @@ ex_copymove(eap)
{
long n;
n = get_address(&eap->arg, eap->addr_type, FALSE, FALSE);
n = get_address(eap, &eap->arg, eap->addr_type, FALSE, FALSE);
if (eap->arg == NULL) /* error detected */
{
eap->nextcmd = NULL;
+6 -4
View File
@@ -1630,13 +1630,16 @@ vgetc()
last_recorded_len = 0;
for (;;) /* this is done twice if there are modifiers */
{
int did_inc = FALSE;
if (mod_mask) /* no mapping after modifier has been read */
{
++no_mapping;
++allow_keys;
did_inc = TRUE; /* mod_mask may change value */
}
c = vgetorpeek(TRUE);
if (mod_mask)
if (did_inc)
{
--no_mapping;
--allow_keys;
@@ -3034,9 +3037,8 @@ inchar(buf, maxlen, wait_time, tb_change_cnt)
)
{
#if defined(FEAT_NETBEANS_INTG)
/* Process the queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
if (got_int || (script_char = getc(scriptin[curscript])) < 0)
+8 -4
View File
@@ -650,7 +650,7 @@ property_event(GtkWidget *widget,
xev.xproperty.atom = commProperty;
xev.xproperty.window = commWindow;
xev.xproperty.state = PropertyNewValue;
serverEventProc(GDK_WINDOW_XDISPLAY(widget->window), &xev);
serverEventProc(GDK_WINDOW_XDISPLAY(widget->window), &xev, 0);
}
return FALSE;
}
@@ -5063,8 +5063,13 @@ not_ascii:
* done, because drawing the cursor would change the display. */
item->analysis.shape_engine = default_shape_engine;
#ifdef HAVE_PANGO_SHAPE_FULL
pango_shape_full((const char *)s + item->offset, item->length,
(const char *)s, len, &item->analysis, glyphs);
#else
pango_shape((const char *)s + item->offset, item->length,
&item->analysis, glyphs);
#endif
/*
* Fixed-width hack: iterate over the array and assign a fixed
* width to each glyph, thus overriding the choice made by the
@@ -5471,9 +5476,8 @@ gui_mch_wait_for_chars(long wtime)
focus = gui.in_focus;
}
#if defined(FEAT_NETBEANS_INTG)
/* Process any queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
/*
+44 -14
View File
@@ -2016,9 +2016,8 @@ gui_mch_wait_for_chars(int wtime)
s_need_activate = FALSE;
}
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
/*
@@ -2390,7 +2389,7 @@ show_tabline_popup_menu(void)
return;
if (first_tabpage->tp_next != NULL)
add_tabline_popup_menu_entry(tab_pmenu,
add_tabline_popup_menu_entry(tab_pmenu,
TABLINE_MENU_CLOSE, _("Close tab"));
add_tabline_popup_menu_entry(tab_pmenu, TABLINE_MENU_NEW, _("New tab"));
add_tabline_popup_menu_entry(tab_pmenu, TABLINE_MENU_OPEN,
@@ -2932,10 +2931,10 @@ gui_mswin_get_valid_dimensions(
base_width = gui_get_base_width()
+ (GetSystemMetrics(SM_CXFRAME) +
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2;
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2;
base_height = gui_get_base_height()
+ (GetSystemMetrics(SM_CYFRAME) +
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2
+ GetSystemMetrics(SM_CYCAPTION)
#ifdef FEAT_MENU
+ gui_mswin_get_menu_height(FALSE)
@@ -2997,6 +2996,20 @@ get_scroll_flags(void)
return 0;
}
/*
* On some Intel GPUs, the regions drawn just prior to ScrollWindowEx()
* may not be scrolled out properly.
* For gVim, when _OnScroll() is repeated, the character at the
* previous cursor position may be left drawn after scroll.
* The problem can be avoided by calling GetPixel() to get a pixel in
* the region before ScrollWindowEx().
*/
static void
intel_gpu_workaround(void)
{
GetPixel(s_hdc, FILL_X(gui.col), FILL_Y(gui.row));
}
/*
* Delete the given number of lines from the given row, scrolling up any
* text further down within the scroll region.
@@ -3008,6 +3021,8 @@ gui_mch_delete_lines(
{
RECT rc;
intel_gpu_workaround();
rc.left = FILL_X(gui.scroll_region_left);
rc.right = FILL_X(gui.scroll_region_right + 1);
rc.top = FILL_Y(row);
@@ -3039,6 +3054,8 @@ gui_mch_insert_lines(
{
RECT rc;
intel_gpu_workaround();
rc.left = FILL_X(gui.scroll_region_left);
rc.right = FILL_X(gui.scroll_region_right + 1);
rc.top = FILL_Y(row);
@@ -3318,17 +3335,30 @@ gui_mch_newfont()
RECT rect;
GetWindowRect(s_hwnd, &rect);
gui_resize_shell(rect.right - rect.left
- (GetSystemMetrics(SM_CXFRAME) +
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2,
rect.bottom - rect.top
- (GetSystemMetrics(SM_CYFRAME) +
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2
- GetSystemMetrics(SM_CYCAPTION)
if (win_socket_id == 0)
{
gui_resize_shell(rect.right - rect.left
- (GetSystemMetrics(SM_CXFRAME) +
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2,
rect.bottom - rect.top
- (GetSystemMetrics(SM_CYFRAME) +
GetSystemMetrics(SM_CXPADDEDBORDER)) * 2
- GetSystemMetrics(SM_CYCAPTION)
#ifdef FEAT_MENU
- gui_mswin_get_menu_height(FALSE)
#endif
);
}
else
{
/* Inside another window, don't use the frame and border. */
gui_resize_shell(rect.right - rect.left,
rect.bottom - rect.top
#ifdef FEAT_MENU
- gui_mswin_get_menu_height(FALSE)
#endif
);
);
}
}
/*
+3 -4
View File
@@ -2895,9 +2895,8 @@ gui_mch_wait_for_chars(wtime)
focus = gui.in_focus;
}
#if defined(FEAT_NETBEANS_INTG)
/* Process any queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
/*
@@ -3199,7 +3198,7 @@ gui_x11_send_event_handler(w, client_data, event, dum)
if (e->type == PropertyNotify && e->window == commWindow
&& e->atom == commProperty && e->state == PropertyNewValue)
{
serverEventProc(gui.dpy, event);
serverEventProc(gui.dpy, event, 0);
}
}
#endif
+1 -1
View File
@@ -828,7 +828,7 @@ python3_end()
--recurse;
}
#if (defined(DYNAMIC_PYTHON) && defined(FEAT_PYTHON)) || defined(PROTO)
#if (defined(DYNAMIC_PYTHON3) && defined(DYNAMIC_PYTHON) && defined(FEAT_PYTHON) && defined(UNIX)) || defined(PROTO)
int
python3_loaded()
{
+118 -20
View File
@@ -170,6 +170,19 @@ enum ServerReplyOp { SROP_Find, SROP_Add, SROP_Delete };
typedef int (*EndCond) __ARGS((void *));
struct x_cmdqueue
{
char_u *propInfo;
long_u len;
struct x_cmdqueue *next;
struct x_cmdqueue *prev;
};
typedef struct x_cmdqueue x_queue_T;
/* dummy node, header for circular queue */
static x_queue_T head = {NULL, 0, NULL, NULL};
/*
* Forward declarations for procedures defined later in this file:
*/
@@ -187,6 +200,8 @@ static struct ServerReply *ServerReplyFind __ARGS((Window w, enum ServerReplyOp
static int AppendPropCarefully __ARGS((Display *display, Window window, Atom property, char_u *value, int length));
static int x_error_check __ARGS((Display *dpy, XErrorEvent *error_event));
static int IsSerialName __ARGS((char_u *name));
static void save_in_queue __ARGS((char_u *buf, long_u len));
static void server_parse_message __ARGS((Display *dpy, char_u *propInfo, long_u numItems));
/* Private variables for the "server" functionality */
static Atom registryProperty = None;
@@ -596,7 +611,7 @@ ServerWait(dpy, w, endCond, endData, localLoop, seconds)
while (TRUE)
{
while (XCheckWindowEvent(dpy, commWindow, PropertyChangeMask, &event))
serverEventProc(dpy, &event);
serverEventProc(dpy, &event, 1);
if (endCond(endData) != 0)
break;
@@ -1128,22 +1143,25 @@ GetRegProp(dpy, regPropp, numItemsp, domsg)
return OK;
}
/*
* This procedure is invoked by the various X event loops throughout Vims when
* a property changes on the communication window. This procedure reads the
* property and handles command requests and responses.
* property and enqueues command requests and responses. If immediate is true,
* it runs the event immediatly instead of enqueuing it. Immediate can cause
* unintended behavior and should only be used for code that blocks for a
* response.
*/
void
serverEventProc(dpy, eventPtr)
serverEventProc(dpy, eventPtr, immediate)
Display *dpy;
XEvent *eventPtr; /* Information about event. */
XEvent *eventPtr; /* Information about event. */
int immediate; /* Run event immediately. Should mostly be 0. */
{
char_u *propInfo;
char_u *p;
int result, actualFormat, code;
int result, actualFormat;
long_u numItems, bytesAfter;
Atom actualType;
char_u *tofree;
if (eventPtr != NULL)
{
@@ -1169,6 +1187,86 @@ serverEventProc(dpy, eventPtr)
XFree(propInfo);
return;
}
if (immediate)
server_parse_message(dpy, propInfo, numItems);
else
save_in_queue(propInfo, numItems);
}
/*
* Saves x clientserver commands in a queue so that they can be called when
* vim is idle.
*/
static void
save_in_queue(propInfo, len)
char_u *propInfo;
long_u len;
{
x_queue_T *node;
node = (x_queue_T *)alloc(sizeof(x_queue_T));
if (node == NULL)
return; /* out of memory */
node->propInfo = propInfo;
node->len = len;
if (head.next == NULL) /* initialize circular queue */
{
head.next = &head;
head.prev = &head;
}
/* insert node at tail of queue */
node->next = &head;
node->prev = head.prev;
head.prev->next = node;
head.prev = node;
}
/*
* Parses queued clientserver messages.
*/
void
server_parse_messages()
{
x_queue_T *node;
if (!X_DISPLAY)
return; /* cannot happen? */
while (head.next != NULL && head.next != &head)
{
node = head.next;
server_parse_message(X_DISPLAY, node->propInfo, node->len);
head.next = node->next;
node->next->prev = node->prev;
vim_free(node);
}
}
/*
* Returns a non-zero value if there are clientserver messages waiting
* int the queue.
*/
int
server_waiting()
{
return head.next != NULL && head.next != &head;
}
/*
* Prases a single clientserver message. A single message may contain multiple
* commands.
* "propInfo" will be freed.
*/
static void
server_parse_message(dpy, propInfo, numItems)
Display *dpy;
char_u *propInfo; /* A string containing 0 or more X commands */
long_u numItems; /* The size of propInfo in bytes. */
{
char_u *p;
int code;
char_u *tofree;
/*
* Several commands and results could arrive in the property at
@@ -1249,16 +1347,16 @@ serverEventProc(dpy, eventPtr)
if (script == NULL || name == NULL)
continue;
if (serverName != NULL && STRICMP(name, serverName) == 0)
{
script = serverConvert(enc, script, &tofree);
if (asKeys)
server_to_input_buf(script);
else
{
char_u *res;
if (serverName != NULL && STRICMP(name, serverName) == 0)
{
script = serverConvert(enc, script, &tofree);
if (asKeys)
server_to_input_buf(script);
else
{
char_u *res;
res = eval_client_expr_to_string(script);
res = eval_client_expr_to_string(script);
if (resWindow != None)
{
garray_T reply;
@@ -1291,10 +1389,10 @@ serverEventProc(dpy, eventPtr)
reply.ga_data, reply.ga_len);
ga_clear(&reply);
}
vim_free(res);
}
vim_free(tofree);
}
vim_free(res);
}
vim_free(tofree);
}
}
else if (*p == 'r' && p[1] == 0)
{
+10
View File
@@ -315,3 +315,13 @@
# endif
# endif
#endif
#ifdef FEAT_DIFF
# define PLINES_NOFILL(x) plines_nofill(x)
#else
# define PLINES_NOFILL(x) plines(x)
#endif
#if defined(FEAT_NETBEANS_INTG) || defined(FEAT_CLIENTSERVER)
# define MESSAGE_QUEUE
#endif
+47 -24
View File
@@ -5351,8 +5351,19 @@ find_start_comment(ind_maxcomment) /* XXX */
static pos_T *
ind_find_start_CORS() /* XXX */
{
pos_T *comment_pos = find_start_comment(curbuf->b_ind_maxcomment);
pos_T *rs_pos = find_start_rawstring(curbuf->b_ind_maxcomment);
static pos_T comment_pos_copy;
pos_T *comment_pos;
pos_T *rs_pos;
comment_pos = find_start_comment(curbuf->b_ind_maxcomment);
if (comment_pos != NULL)
{
/* Need to make a copy of the static pos in findmatchlimit(),
* calling find_start_rawstring() may change it. */
comment_pos_copy = *comment_pos;
comment_pos = &comment_pos_copy;
}
rs_pos = find_start_rawstring(curbuf->b_ind_maxcomment);
/* If comment_pos is before rs_pos the raw string is inside the comment.
* If rs_pos is before comment_pos the comment is inside the raw string. */
@@ -8340,7 +8351,8 @@ get_c_indent()
if (terminated == 0 || (lookfor != LOOKFOR_UNTERM
&& terminated == ','))
{
if (*skipwhite(l) == '[' || l[STRLEN(l) - 1] == '[')
if (lookfor != LOOKFOR_ENUM_OR_INIT &&
(*skipwhite(l) == '[' || l[STRLEN(l) - 1] == '['))
amount += ind_continuation;
/*
* if we're in the middle of a paren thing,
@@ -8582,7 +8594,10 @@ get_c_indent()
*/
l = ml_get_curline();
amount = cur_amount;
if (*skipwhite(l) == ']' || l[STRLEN(l) - 1] == ']')
n = (int)STRLEN(l);
if (terminated == ',' && (*skipwhite(l) == ']'
|| (n >=2 && l[n - 2] == ']')))
break;
/*
@@ -9703,14 +9718,14 @@ expand_wildcards_eval(pat, num_file, file, flags)
/*
* Expand wildcards. Calls gen_expand_wildcards() and removes files matching
* 'wildignore'.
* Returns OK or FAIL. When FAIL then "num_file" won't be set.
* Returns OK or FAIL. When FAIL then "num_files" won't be set.
*/
int
expand_wildcards(num_pat, pat, num_file, file, flags)
expand_wildcards(num_pat, pat, num_files, files, flags)
int num_pat; /* number of input patterns */
char_u **pat; /* array of input patterns */
int *num_file; /* resulting number of files */
char_u ***file; /* array of resulting files */
int *num_files; /* resulting number of files */
char_u ***files; /* array of resulting files */
int flags; /* EW_DIR, etc. */
{
int retval;
@@ -9718,7 +9733,7 @@ expand_wildcards(num_pat, pat, num_file, file, flags)
char_u *p;
int non_suf_match; /* number without matching suffix */
retval = gen_expand_wildcards(num_pat, pat, num_file, file, flags);
retval = gen_expand_wildcards(num_pat, pat, num_files, files, flags);
/* When keeping all matches, return here */
if ((flags & EW_KEEPALL) || retval == FAIL)
@@ -9732,47 +9747,55 @@ expand_wildcards(num_pat, pat, num_file, file, flags)
{
char_u *ffname;
/* check all files in (*file)[] */
for (i = 0; i < *num_file; ++i)
/* check all files in (*files)[] */
for (i = 0; i < *num_files; ++i)
{
ffname = FullName_save((*file)[i], FALSE);
ffname = FullName_save((*files)[i], FALSE);
if (ffname == NULL) /* out of memory */
break;
# ifdef VMS
vms_remove_version(ffname);
# endif
if (match_file_list(p_wig, (*file)[i], ffname))
if (match_file_list(p_wig, (*files)[i], ffname))
{
/* remove this matching file from the list */
vim_free((*file)[i]);
for (j = i; j + 1 < *num_file; ++j)
(*file)[j] = (*file)[j + 1];
--*num_file;
/* remove this matching files from the list */
vim_free((*files)[i]);
for (j = i; j + 1 < *num_files; ++j)
(*files)[j] = (*files)[j + 1];
--*num_files;
--i;
}
vim_free(ffname);
}
/* If the number of matches is now zero, we fail. */
if (*num_files == 0)
{
vim_free(*files);
*files = NULL;
return FAIL;
}
}
#endif
/*
* Move the names where 'suffixes' match to the end.
*/
if (*num_file > 1)
if (*num_files > 1)
{
non_suf_match = 0;
for (i = 0; i < *num_file; ++i)
for (i = 0; i < *num_files; ++i)
{
if (!match_suffix((*file)[i]))
if (!match_suffix((*files)[i]))
{
/*
* Move the name without matching suffix to the front
* of the list.
*/
p = (*file)[i];
p = (*files)[i];
for (j = i; j > non_suf_match; --j)
(*file)[j] = (*file)[j - 1];
(*file)[non_suf_match++] = p;
(*files)[j] = (*files)[j - 1];
(*files)[non_suf_match++] = p;
}
}
}
+32 -13
View File
@@ -4375,21 +4375,20 @@ vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
temp = alloc((int)(STRLEN(search_ctx->ffsc_wc_path)
+ STRLEN(search_ctx->ffsc_fix_path + len)
+ 1));
}
if (temp == NULL || wc_path == NULL)
{
vim_free(buf);
vim_free(temp);
vim_free(wc_path);
goto error_return;
}
if (temp == NULL || wc_path == NULL)
{
vim_free(buf);
vim_free(temp);
STRCPY(temp, search_ctx->ffsc_fix_path + len);
STRCAT(temp, search_ctx->ffsc_wc_path);
vim_free(search_ctx->ffsc_wc_path);
vim_free(wc_path);
goto error_return;
search_ctx->ffsc_wc_path = temp;
}
STRCPY(temp, search_ctx->ffsc_fix_path + len);
STRCAT(temp, search_ctx->ffsc_wc_path);
vim_free(search_ctx->ffsc_wc_path);
vim_free(wc_path);
search_ctx->ffsc_wc_path = temp;
}
#endif
vim_free(buf);
@@ -5090,7 +5089,7 @@ ff_wc_equal(s1, s2)
i += MB_PTR2LEN(s1 + i);
j += MB_PTR2LEN(s2 + j);
}
return c1 == c2;
return s1[i] == s2[j];
}
#endif
@@ -6334,3 +6333,23 @@ has_non_ascii(s)
return FALSE;
}
#endif
#if defined(MESSAGE_QUEUE) || defined(PROTO)
/*
* Process messages that have been queued for netbeans or clientserver.
* These functions can call arbitrary vimscript and should only be called when
* it is safe to do so.
*/
void
parse_queued_messages()
{
# ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
netbeans_parse_messages();
# endif
# if defined(FEAT_CLIENTSERVER) && defined(FEAT_X11)
/* Process the queued clientserver messages. */
server_parse_messages();
# endif
}
#endif
+11 -38
View File
@@ -1252,11 +1252,7 @@ scrolldown(line_count, byfold)
}
else
#endif
#ifdef FEAT_DIFF
done += plines_nofill(curwin->w_topline);
#else
done += plines(curwin->w_topline);
#endif
done += PLINES_NOFILL(curwin->w_topline);
}
--curwin->w_botline; /* approximate w_botline */
invalidate_botline();
@@ -1609,13 +1605,7 @@ topline_back(lp)
lp->height = 1;
else
#endif
{
#ifdef FEAT_DIFF
lp->height = plines_nofill(lp->lnum);
#else
lp->height = plines(lp->lnum);
#endif
}
lp->height = PLINES_NOFILL(lp->lnum);
}
}
@@ -1653,11 +1643,7 @@ botline_forw(lp)
else
#endif
{
#ifdef FEAT_DIFF
lp->height = plines_nofill(lp->lnum);
#else
lp->height = plines(lp->lnum);
#endif
lp->height = PLINES_NOFILL(lp->lnum);
}
}
}
@@ -1751,12 +1737,10 @@ scroll_cursor_top(min_scroll, always)
new_topline = top + 1;
#ifdef FEAT_DIFF
/* used already contains the number of filler lines above, don't add it
/* "used" already contains the number of filler lines above, don't add it
* again.
* TODO: if filler lines above new top are to be considered as context for
* the current window, leave next statement commented, else hide filler
* lines above cursor line, by adding them to extra */
/* extra += diff_check_fill(curwin, curwin->w_cursor.lnum); */
* Hide filler lines above cursor line by adding them to "extra". */
extra += diff_check_fill(curwin, curwin->w_cursor.lnum);
#endif
/*
@@ -1771,7 +1755,7 @@ scroll_cursor_top(min_scroll, always)
i = 1;
else
#endif
i = plines(top);
i = PLINES_NOFILL(top);
used += i;
if (extra + i <= off && bot < curbuf->b_ml.ml_line_count)
{
@@ -2275,11 +2259,8 @@ cursor_correct()
++above;
else
#endif
#ifndef FEAT_DIFF
above += plines(topline);
#else
above += plines_nofill(topline);
above += PLINES_NOFILL(topline);
#ifdef FEAT_DIFF
/* Count filler lines below this line as context. */
if (topline < botline)
above += diff_check_fill(curwin, topline + 1);
@@ -2668,11 +2649,7 @@ halfpage(flag, Prenum)
else
#endif
{
#ifdef FEAT_DIFF
i = plines_nofill(curwin->w_topline);
#else
i = plines(curwin->w_topline);
#endif
i = PLINES_NOFILL(curwin->w_topline);
n -= i;
if (n < 0 && scrolled > 0)
break;
@@ -2778,11 +2755,7 @@ halfpage(flag, Prenum)
else
#endif
{
#ifdef FEAT_DIFF
i = plines_nofill(curwin->w_topline - 1);
#else
i = plines(curwin->w_topline - 1);
#endif
i = PLINES_NOFILL(curwin->w_topline - 1);
n -= i;
if (n < 0 && scrolled > 0)
break;
+3 -2
View File
@@ -2561,7 +2561,8 @@ do_mouse(oap, c, dir, count, fixindent)
if (in_tab_line)
{
c1 = TabPageIdxs[mouse_col];
tabpage_move(c1 <= 0 ? 9999 : c1 - 1);
tabpage_move(c1 <= 0 ? 9999 : c1 < tabpage_index(curtab)
? c1 - 1 : c1);
}
return FALSE;
}
@@ -9629,7 +9630,7 @@ get_op_vcol(oap, redo_VIsual_vcol, initial)
|| (!initial && oap->end.col < W_WIDTH(curwin)))
return;
oap->block_mode = VIsual_active;
oap->block_mode = TRUE;
#ifdef FEAT_MBYTE
/* prevent from moving onto a trail byte */
+17 -6
View File
@@ -393,10 +393,11 @@ static long p_tw_nobin;
static long p_wm_nobin;
/* Saved values for when 'paste' is set */
static int p_ai_nopaste;
static int p_et_nopaste;
static long p_sts_nopaste;
static long p_tw_nopaste;
static long p_wm_nopaste;
static long p_sts_nopaste;
static int p_ai_nopaste;
struct vimoption
{
@@ -10865,6 +10866,7 @@ buf_copy_options(buf, flags)
buf->b_p_fixeol = p_fixeol;
buf->b_p_et = p_et;
buf->b_p_et_nobin = p_et_nobin;
buf->b_p_et_nopaste = p_et_nopaste;
buf->b_p_ml = p_ml;
buf->b_p_ml_nobin = p_ml_nobin;
buf->b_p_inf = p_inf;
@@ -11806,6 +11808,7 @@ paste_option_changed()
{
static int old_p_paste = FALSE;
static int save_sm = 0;
static int save_sta = 0;
#ifdef FEAT_CMDL_INFO
static int save_ru = 0;
#endif
@@ -11830,10 +11833,12 @@ paste_option_changed()
buf->b_p_wm_nopaste = buf->b_p_wm;
buf->b_p_sts_nopaste = buf->b_p_sts;
buf->b_p_ai_nopaste = buf->b_p_ai;
buf->b_p_et_nopaste = buf->b_p_et;
}
/* save global options */
save_sm = p_sm;
save_sta = p_sta;
#ifdef FEAT_CMDL_INFO
save_ru = p_ru;
#endif
@@ -11842,10 +11847,11 @@ paste_option_changed()
save_hkmap = p_hkmap;
#endif
/* save global values for local buffer options */
p_ai_nopaste = p_ai;
p_et_nopaste = p_et;
p_sts_nopaste = p_sts;
p_tw_nopaste = p_tw;
p_wm_nopaste = p_wm;
p_sts_nopaste = p_sts;
p_ai_nopaste = p_ai;
}
/*
@@ -11859,10 +11865,12 @@ paste_option_changed()
buf->b_p_wm = 0; /* wrapmargin is 0 */
buf->b_p_sts = 0; /* softtabstop is 0 */
buf->b_p_ai = 0; /* no auto-indent */
buf->b_p_et = 0; /* no expandtab */
}
/* set global options */
p_sm = 0; /* no showmatch */
p_sta = 0; /* no smarttab */
#ifdef FEAT_CMDL_INFO
# ifdef FEAT_WINDOWS
if (p_ru)
@@ -11893,10 +11901,12 @@ paste_option_changed()
buf->b_p_wm = buf->b_p_wm_nopaste;
buf->b_p_sts = buf->b_p_sts_nopaste;
buf->b_p_ai = buf->b_p_ai_nopaste;
buf->b_p_et = buf->b_p_et_nopaste;
}
/* restore global options */
p_sm = save_sm;
p_sta = save_sta;
#ifdef FEAT_CMDL_INFO
# ifdef FEAT_WINDOWS
if (p_ru != save_ru)
@@ -11909,10 +11919,11 @@ paste_option_changed()
p_hkmap = save_hkmap;
#endif
/* set global values for local buffer options */
p_ai = p_ai_nopaste;
p_et = p_et_nopaste;
p_sts = p_sts_nopaste;
p_tw = p_tw_nopaste;
p_wm = p_wm_nopaste;
p_sts = p_sts_nopaste;
p_ai = p_ai_nopaste;
}
old_p_paste = p_paste;
+21 -18
View File
@@ -388,9 +388,8 @@ mch_inchar(buf, maxlen, wtime, tb_change_cnt)
{
int len;
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
/* Check if window changed size while we were busy, perhaps the ":set
@@ -405,9 +404,8 @@ mch_inchar(buf, maxlen, wtime, tb_change_cnt)
if (!do_resize) /* return if not interrupted by resize */
return 0;
handle_resize();
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
}
}
@@ -439,9 +437,8 @@ mch_inchar(buf, maxlen, wtime, tb_change_cnt)
while (do_resize) /* window changed size */
handle_resize();
#ifdef FEAT_NETBEANS_INTG
/* Process the queued netbeans messages. */
netbeans_parse_messages();
#ifdef MESSAGE_QUEUE
parse_queued_messages();
#endif
/*
* We want to be interrupted by the winch signal
@@ -5230,6 +5227,7 @@ WaitForChar(msec)
* When a GUI is being used, this will not be used for input -- webb
* Returns also, when a request from Sniff is waiting -- toni.
* Or when a Linux GPM mouse event is waiting.
* Or when a clientserver message is on the queue.
*/
#if defined(__BEOS__)
int
@@ -5623,6 +5621,11 @@ select_eintr:
if (finished || msec == 0)
break;
# ifdef FEAT_CLIENTSERVER
if (server_waiting())
break;
# endif
/* We're going to loop around again, find out for how long */
if (msec > 0)
{
@@ -7128,31 +7131,31 @@ xterm_update()
for (;;)
{
XtInputMask mask = XtAppPending(app_context);
XtInputMask mask = XtAppPending(app_context);
if (mask == 0 || vim_is_input_buf_full())
if (mask == 0 || vim_is_input_buf_full())
break;
if (mask & XtIMXEvent)
if (mask & XtIMXEvent)
{
/* There is an event to process. */
XtAppNextEvent(app_context, &event);
XtAppNextEvent(app_context, &event);
#ifdef FEAT_CLIENTSERVER
{
XPropertyEvent *e = (XPropertyEvent *)&event;
if (e->type == PropertyNotify && e->window == commWindow
&& e->atom == commProperty && e->state == PropertyNewValue)
serverEventProc(xterm_dpy, &event);
serverEventProc(xterm_dpy, &event, 0);
}
#endif
XtDispatchEvent(&event);
}
XtDispatchEvent(&event);
}
else
{
/* There is something else than an event to process. */
XtAppProcessEvent(app_context, mask);
}
XtAppProcessEvent(app_context, mask);
}
}
}
+43 -2
View File
@@ -234,6 +234,7 @@ static int suppress_winsize = 1; /* don't fiddle with console */
static char_u *exe_path = NULL;
static BOOL is_win7 = FALSE;
static BOOL win8_or_later = FALSE;
/*
@@ -680,6 +681,9 @@ PlatformId(void)
g_PlatformId = ovi.dwPlatformId;
if ((ovi.dwMajorVersion == 6 && ovi.dwMinorVersion == 1))
is_win7 = TRUE;
if ((ovi.dwMajorVersion == 6 && ovi.dwMinorVersion >= 2)
|| ovi.dwMajorVersion > 6)
win8_or_later = TRUE;
@@ -4581,11 +4585,12 @@ mch_system(char *cmd, int options)
else
return mch_system_classic(cmd, options);
}
#else
# ifdef FEAT_MBYTE
static int
mch_system(char *cmd, int options)
mch_system1(char *cmd, int options)
{
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
{
@@ -4600,9 +4605,45 @@ mch_system(char *cmd, int options)
return system(cmd);
}
# else
# define mch_system(c, o) system(c)
# define mch_system1(c, o) system(c)
# endif
static int
mch_system(char *cmd, int options)
{
int ret;
HANDLE hTemp = INVALID_HANDLE_VALUE;
/*
* Call DuplicateHandle before executing an external program, because msys
* and msys2's programs will call CreateConsoleScreenBuffer and
* CloseHandle. CreateConsoleScreenBuffer returns the same handle which
* created by vim. This causes a crash. This workaround is required on
* Windows7.
*/
if (is_win7
&& g_fTermcapMode
&& DuplicateHandle(
GetCurrentProcess(),
g_hConOut,
GetCurrentProcess(),
&hTemp,
0,
TRUE,
DUPLICATE_SAME_ACCESS))
SetConsoleActiveScreenBuffer(hTemp);
ret = mch_system1(cmd, options);
if (hTemp != INVALID_HANDLE_VALUE)
{
SetConsoleActiveScreenBuffer(g_hConOut);
CloseHandle(hTemp);
}
return ret;
}
#endif
/*
+2 -1
View File
@@ -4939,7 +4939,8 @@ msgstr ""
"&Abrir para lectura únicamente\n"
"&Editar de todas formas\n"
"&Recuperar\n"
"&Borrar&Salir\n"
"&Borrar\n"
"&Salir\n"
"&Abortar"
#: memline.c:4264
+3 -1
View File
@@ -7,5 +7,7 @@ Window serverStrToWin __ARGS((char_u *str));
int serverSendReply __ARGS((char_u *name, char_u *str));
int serverReadReply __ARGS((Display *dpy, Window win, char_u **str, int localLoop));
int serverPeekReply __ARGS((Display *dpy, Window win, char_u **str));
void serverEventProc __ARGS((Display *dpy, XEvent *eventPtr));
void serverEventProc __ARGS((Display *dpy, XEvent *eventPtr, int immediate));
void server_parse_messages __ARGS((void));
int server_waiting __ARGS((void));
/* vim: set ft=c : */
+1
View File
@@ -106,4 +106,5 @@ int put_bytes __ARGS((FILE *fd, long_u nr, int len));
void put_time __ARGS((FILE *fd, time_t the_time));
void time_to_bytes __ARGS((time_t the_time, char_u *buf));
int has_non_ascii __ARGS((char_u *s));
void parse_queued_messages __ARGS((void));
/* vim: set ft=c : */
+3
View File
@@ -17,6 +17,9 @@ int bt_dontwrite_msg __ARGS((buf_T *buf));
int buf_hide __ARGS((buf_T *buf));
int grep_internal __ARGS((cmdidx_T cmdidx));
void ex_make __ARGS((exarg_T *eap));
int qf_get_size __ARGS((exarg_T *eap));
int qf_get_cur_idx __ARGS((exarg_T *eap));
int qf_get_cur_valid_idx __ARGS((exarg_T *eap));
void ex_cc __ARGS((exarg_T *eap));
void ex_cnext __ARGS((exarg_T *eap));
void ex_cfile __ARGS((exarg_T *eap));
+206 -16
View File
@@ -1373,7 +1373,7 @@ qf_clean_dir_stack(stackptr)
/*
* Check in which directory of the directory stack the given file can be
* found.
* Returns a pointer to the directory name or NULL if not found
* Returns a pointer to the directory name or NULL if not found.
* Cleans up intermediate directory entries.
*
* TODO: How to solve the following problem?
@@ -2989,20 +2989,184 @@ get_mef_name()
return name;
}
/*
* Returns the number of valid entries in the current quickfix/location list.
*/
int
qf_get_size(eap)
exarg_T *eap;
{
qf_info_T *qi = &ql_info;
qfline_T *qfp;
int i, sz = 0;
int prev_fnum = 0;
if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo)
{
/* Location list */
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
return 0;
}
for (i = 0, qfp = qi->qf_lists[qi->qf_curlist].qf_start;
(i < qi->qf_lists[qi->qf_curlist].qf_count) && (qfp != NULL);
++i, qfp = qfp->qf_next)
{
if (qfp->qf_valid)
{
if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo)
sz++; /* Count all valid entries */
else if (qfp->qf_fnum > 0 && qfp->qf_fnum != prev_fnum)
{
/* Count the number of files */
sz++;
prev_fnum = qfp->qf_fnum;
}
}
}
return sz;
}
/*
* Returns the current index of the quickfix/location list.
* Returns 0 if there is an error.
*/
int
qf_get_cur_idx(eap)
exarg_T *eap;
{
qf_info_T *qi = &ql_info;
if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo)
{
/* Location list */
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
return 0;
}
return qi->qf_lists[qi->qf_curlist].qf_index;
}
/*
* Returns the current index in the quickfix/location list (counting only valid
* entries). If no valid entries are in the list, then returns 1.
*/
int
qf_get_cur_valid_idx(eap)
exarg_T *eap;
{
qf_info_T *qi = &ql_info;
qf_list_T *qfl;
qfline_T *qfp;
int i, eidx = 0;
int prev_fnum = 0;
if (eap->cmdidx == CMD_ldo || eap->cmdidx == CMD_lfdo)
{
/* Location list */
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
return 1;
}
qfl = &qi->qf_lists[qi->qf_curlist];
qfp = qfl->qf_start;
/* check if the list has valid errors */
if (qfl->qf_count <= 0 || qfl->qf_nonevalid)
return 1;
for (i = 1; i <= qfl->qf_index && qfp!= NULL; i++, qfp = qfp->qf_next)
{
if (qfp->qf_valid)
{
if (eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
{
if (qfp->qf_fnum > 0 && qfp->qf_fnum != prev_fnum)
{
/* Count the number of files */
eidx++;
prev_fnum = qfp->qf_fnum;
}
}
else
eidx++;
}
}
return eidx ? eidx : 1;
}
/*
* Get the 'n'th valid error entry in the quickfix or location list.
* Used by :cdo, :ldo, :cfdo and :lfdo commands.
* For :cdo and :ldo returns the 'n'th valid error entry.
* For :cfdo and :lfdo returns the 'n'th valid file entry.
*/
static int
qf_get_nth_valid_entry(qi, n, fdo)
qf_info_T *qi;
int n;
int fdo;
{
qf_list_T *qfl = &qi->qf_lists[qi->qf_curlist];
qfline_T *qfp = qfl->qf_start;
int i, eidx;
int prev_fnum = 0;
/* check if the list has valid errors */
if (qfl->qf_count <= 0 || qfl->qf_nonevalid)
return 1;
for (i = 1, eidx = 0; i <= qfl->qf_count && qfp!= NULL;
i++, qfp = qfp->qf_next)
{
if (qfp->qf_valid)
{
if (fdo)
{
if (qfp->qf_fnum > 0 && qfp->qf_fnum != prev_fnum)
{
/* Count the number of files */
eidx++;
prev_fnum = qfp->qf_fnum;
}
}
else
eidx++;
}
if (eidx == n)
break;
}
if (i <= qfl->qf_count)
return i;
else
return 1;
}
/*
* ":cc", ":crewind", ":cfirst" and ":clast".
* ":ll", ":lrewind", ":lfirst" and ":llast".
* ":cdo", ":ldo", ":cfdo" and ":lfdo"
*/
void
ex_cc(eap)
exarg_T *eap;
{
qf_info_T *qi = &ql_info;
int errornr;
if (eap->cmdidx == CMD_ll
|| eap->cmdidx == CMD_lrewind
|| eap->cmdidx == CMD_lfirst
|| eap->cmdidx == CMD_llast)
|| eap->cmdidx == CMD_llast
|| eap->cmdidx == CMD_ldo
|| eap->cmdidx == CMD_lfdo)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
@@ -3012,34 +3176,51 @@ ex_cc(eap)
}
}
qf_jump(qi, 0,
eap->addr_count > 0
? (int)eap->line2
: (eap->cmdidx == CMD_cc || eap->cmdidx == CMD_ll)
? 0
: (eap->cmdidx == CMD_crewind || eap->cmdidx == CMD_lrewind
|| eap->cmdidx == CMD_cfirst || eap->cmdidx == CMD_lfirst)
? 1
: 32767,
eap->forceit);
if (eap->addr_count > 0)
errornr = (int)eap->line2;
else
{
if (eap->cmdidx == CMD_cc || eap->cmdidx == CMD_ll)
errornr = 0;
else if (eap->cmdidx == CMD_crewind || eap->cmdidx == CMD_lrewind
|| eap->cmdidx == CMD_cfirst || eap->cmdidx == CMD_lfirst)
errornr = 1;
else
errornr = 32767;
}
/* For cdo and ldo commands, jump to the nth valid error.
* For cfdo and lfdo commands, jump to the nth valid file entry.
*/
if (eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo ||
eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
errornr = qf_get_nth_valid_entry(qi,
eap->addr_count > 0 ? (int)eap->line1 : 1,
eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo);
qf_jump(qi, 0, errornr, eap->forceit);
}
/*
* ":cnext", ":cnfile", ":cNext" and ":cprevious".
* ":lnext", ":lNext", ":lprevious", ":lnfile", ":lNfile" and ":lpfile".
* Also, used by ":cdo", ":ldo", ":cfdo" and ":lfdo" commands.
*/
void
ex_cnext(eap)
exarg_T *eap;
{
qf_info_T *qi = &ql_info;
int errornr;
if (eap->cmdidx == CMD_lnext
|| eap->cmdidx == CMD_lNext
|| eap->cmdidx == CMD_lprevious
|| eap->cmdidx == CMD_lnfile
|| eap->cmdidx == CMD_lNfile
|| eap->cmdidx == CMD_lpfile)
|| eap->cmdidx == CMD_lpfile
|| eap->cmdidx == CMD_ldo
|| eap->cmdidx == CMD_lfdo)
{
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
@@ -3049,15 +3230,24 @@ ex_cnext(eap)
}
}
qf_jump(qi, (eap->cmdidx == CMD_cnext || eap->cmdidx == CMD_lnext)
if (eap->addr_count > 0 &&
(eap->cmdidx != CMD_cdo && eap->cmdidx != CMD_ldo &&
eap->cmdidx != CMD_cfdo && eap->cmdidx != CMD_lfdo))
errornr = (int)eap->line2;
else
errornr = 1;
qf_jump(qi, (eap->cmdidx == CMD_cnext || eap->cmdidx == CMD_lnext
|| eap->cmdidx == CMD_cdo || eap->cmdidx == CMD_ldo)
? FORWARD
: (eap->cmdidx == CMD_cnfile || eap->cmdidx == CMD_lnfile)
: (eap->cmdidx == CMD_cnfile || eap->cmdidx == CMD_lnfile
|| eap->cmdidx == CMD_cfdo || eap->cmdidx == CMD_lfdo)
? FORWARD_FILE
: (eap->cmdidx == CMD_cpfile || eap->cmdidx == CMD_lpfile
|| eap->cmdidx == CMD_cNfile || eap->cmdidx == CMD_lNfile)
? BACKWARD_FILE
: BACKWARD,
eap->addr_count > 0 ? (int)eap->line2 : 1, eap->forceit);
errornr, eap->forceit);
}
/*
+1
View File
@@ -4523,6 +4523,7 @@ skip_add:
sub->list.multi[subidx].start_col =
(colnr_T)(reginput - regline + off);
}
sub->list.multi[subidx].end_lnum = -1;
}
else
{
+1
View File
@@ -1589,6 +1589,7 @@ struct file_buffer
int b_p_fixeol; /* 'fixendofline' */
int b_p_et; /* 'expandtab' */
int b_p_et_nobin; /* b_p_et saved for binary mode */
int b_p_et_nopaste; /* b_p_et saved for paste mode */
#ifdef FEAT_MBYTE
char_u *b_p_fenc; /* 'fileencoding' */
#endif
+2
View File
@@ -41,6 +41,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test_autocmd_option.out \
test_autoformat_join.out \
test_breakindent.out \
test_cdo.out \
test_changelist.out \
test_charsearch.out \
test_close_count.out \
@@ -195,6 +196,7 @@ test_argument_count.out: test_argument_count.in
test_autocmd_option.out: test_autocmd_option.in
test_autoformat_join.out: test_autoformat_join.in
test_breakindent.out: test_breakindent.in
test_cdo.out: test_cdo.in
test_changelist.out: test_changelist.in
test_charsearch.out: test_charsearch.in
test_close_count.out: test_close_count.in
+1
View File
@@ -40,6 +40,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test_autocmd_option.out \
test_autoformat_join.out \
test_breakindent.out \
test_cdo.out \
test_changelist.out \
test_charsearch.out \
test_close_count.out \
+1
View File
@@ -62,6 +62,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test_autocmd_option.out \
test_autoformat_join.out \
test_breakindent.out \
test_cdo.out \
test_changelist.out \
test_charsearch.out \
test_close_count.out \
+1
View File
@@ -42,6 +42,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test_autocmd_option.out \
test_autoformat_join.out \
test_breakindent.out \
test_cdo.out \
test_changelist.out \
test_charsearch.out \
test_close_count.out \
+2 -1
View File
@@ -4,7 +4,7 @@
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
# Last change: 2015 Sep 01
# Last change: 2015 Sep 08
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
@@ -101,6 +101,7 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
test_autocmd_option.out \
test_autoformat_join.out \
test_breakindent.out \
test_cdo.out \
test_changelist.out \
test_charsearch.out \
test_close_count.out \
+1
View File
@@ -38,6 +38,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
test_autocmd_option.out \
test_autoformat_join.out \
test_breakindent.out \
test_cdo.out \
test_changelist.out \
test_charsearch.out \
test_close_count.out \
+22
View File
@@ -910,6 +910,28 @@ const char* s = R"foo(
)foo";
}
{
int a[4] = {
[0] = 0,
[1] = 1,
[2] = 2,
[3] = 3,
};
}
{
a = b[2]
+ 3;
}
{
if (1)
/* aaaaa
* bbbbb
*/
a = 1;
}
/* end of AUTO */
STARTTEST
+22
View File
@@ -898,6 +898,28 @@ void getstring() {
)foo";
}
{
int a[4] = {
[0] = 0,
[1] = 1,
[2] = 2,
[3] = 3,
};
}
{
a = b[2]
+ 3;
}
{
if (1)
/* aaaaa
* bbbbb
*/
a = 1;
}
/* end of AUTO */
+13 -13
View File
@@ -1,6 +1,6 @@
" Vim script language tests
" Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
" Last Change: 2013 Jun 06
" Last Change: 2015 Sep 25
"-------------------------------------------------------------------------------
" Test environment {{{1
@@ -5188,19 +5188,19 @@ catch /.*/
Xpath 65536 " X: 65536
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(1, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(1, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
exec "let exception = v:exception"
exec "let throwpoint = v:throwpoint"
call CHECK(2, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(2, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
CmdException
CmdThrowpoint
call CHECK(3, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(3, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
call FuncException()
call FuncThrowpoint()
call CHECK(4, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(4, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
exec "source" scriptException
exec "source" scriptThrowPoint
call CHECK(5, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(5, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
try
Xpath 131072 " X: 131072
call G("arrgh", 4)
@@ -5208,7 +5208,7 @@ catch /.*/
Xpath 262144 " X: 262144
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(6, "arrgh", '\<G\.\.T\>', '\<4\>')
call CHECK(6, "arrgh", '\<G\[1]\.\.T\>', '\<4\>')
try
Xpath 524288 " X: 524288
let g:arg = "autsch"
@@ -5226,7 +5226,7 @@ catch /.*/
Xpath 2097152 " X: 2097152
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(8, "arrgh", '\<G\.\.T\>', '\<4\>')
call CHECK(8, "arrgh", '\<G\[1]\.\.T\>', '\<4\>')
try
Xpath 4194304 " X: 4194304
let g:arg = "brrrr"
@@ -5242,27 +5242,27 @@ catch /.*/
Xpath 16777216 " X: 16777216
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(10, "arrgh", '\<G\.\.T\>', '\<4\>')
call CHECK(10, "arrgh", '\<G\[1]\.\.T\>', '\<4\>')
endtry
Xpath 33554432 " X: 33554432
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(11, "arrgh", '\<G\.\.T\>', '\<4\>')
call CHECK(11, "arrgh", '\<G\[1]\.\.T\>', '\<4\>')
endtry
Xpath 67108864 " X: 67108864
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(12, "arrgh", '\<G\.\.T\>', '\<4\>')
call CHECK(12, "arrgh", '\<G\[1]\.\.T\>', '\<4\>')
finally
Xpath 134217728 " X: 134217728
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(13, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(13, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
endtry
Xpath 268435456 " X: 268435456
let exception = v:exception
let throwpoint = v:throwpoint
call CHECK(14, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
call CHECK(14, "oops", '\<F\[1]\.\.G\[1]\.\.T\>', '\<2\>')
finally
Xpath 536870912 " X: 536870912
let exception = v:exception
+5 -1
View File
@@ -59,14 +59,18 @@ STARTTEST
:call setbufvar(1, '&l:bk', 1)
: "should trigger, use correct option name
:call setbufvar(1, '&backup', 1)
:let g:testcase="14: Setting number option using setwinvar\n"
:let g:options=[['number', 0, 1, 'local']]
:call setwinvar(0, '&number', 1)
:" Write register now, because next test shouldn't output anything.
:$put r
:let @r=''
:let g:testcase="\n14: Setting key option, shouldn't trigger\n"
:let g:testcase="\n15: Setting key option, shouldn't trigger\n"
:let g:options=[['key', 'invalid', 'invalid1', 'invalid']]
:setlocal key=blah
:setlocal key=
:$put =g:testcase
:$put r
:/^dummy text/,$w! test.out
:qa!
ENDTEST
+6 -1
View File
@@ -56,4 +56,9 @@ Autocmd Option: <backspace>, OldVal: <>, NewVal: <eol,indent,start>, Scope: <glo
Expected: Name: <backup>, Oldval: <>, NewVal: <1>, Scope: <local>
Autocmd Option: <backup>, OldVal: <0>, NewVal: <1>, Scope: <local>
14: Setting key option, shouldn't trigger
14: Setting number option using setwinvar
Expected: Name: <number>, Oldval: <0>, NewVal: <1>, Scope: <local>
Autocmd Option: <number>, OldVal: <0>, NewVal: <1>, Scope: <local>
15: Setting key option, shouldn't trigger
+107
View File
@@ -0,0 +1,107 @@
Tests for the :cdo, :cfdo, :ldo and :lfdo commands
STARTTEST
:so small.vim
:if !has('quickfix') | e! test.ok | wq! test.out | endif
:call writefile(["Line1", "Line2", "Line3"], 'Xtestfile1')
:call writefile(["Line1", "Line2", "Line3"], 'Xtestfile2')
:call writefile(["Line1", "Line2", "Line3"], 'Xtestfile3')
:function RunTests(cchar)
: let nl="\n"
: enew
: " Try with an empty list
: exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Populate the list and then try
: exe a:cchar . "getexpr ['non-error 1', 'Xtestfile1:1:3:Line1', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:3:1:Line3']"
: exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Run command only on selected error lines
: enew
: exe "2,3" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Boundary condition tests
: enew
: exe "1,1" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: enew
: exe "3" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Range test commands
: enew
: exe "%" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: enew
: exe "1,$" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: enew
: exe a:cchar . 'prev'
: exe "." . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Invalid error lines test
: enew
: exe "27" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "4,5" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Run commands from an unsaved buffer
: let v:errmsg=''
: enew
: setlocal modified
: exe "2,2" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: if v:errmsg =~# 'No write since last change'
: let g:result .= 'Unsaved file change test passed' . nl
: else
: let g:result .= 'Unsaved file change test failed' . nl
: endif
: " If the executed command fails, then the operation should be aborted
: enew!
: let subst_count = 0
: exe a:cchar . "do s/Line/xLine/ | let subst_count += 1"
: if subst_count == 1 && getline('.') == 'xLine1'
: let g:result .= 'Abort command on error test passed' . nl
: else
: let g:result .= 'Abort command on error test failed' . nl
: endif
: exe "2,2" . a:cchar . "do! let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " List with no valid error entries
: edit! +2 Xtestfile1
: exe a:cchar . "getexpr ['non-error 1', 'non-error 2', 'non-error 3']"
: exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "2" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: let v:errmsg=''
: exe "%" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "1,$" . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "." . a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: let g:result .= v:errmsg
: " List with only one valid entry
: exe a:cchar . "getexpr ['Xtestfile3:3:1:Line3']"
: exe a:cchar . "do let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " Tests for :cfdo and :lfdo commands
: exe a:cchar . "getexpr ['non-error 1', 'Xtestfile1:1:3:Line1', 'Xtestfile1:2:1:Line2', 'non-error 2', 'Xtestfile2:2:2:Line2', 'non-error 3', 'Xtestfile3:2:3:Line2', 'Xtestfile3:3:1:Line3']"
: exe a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "3" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "2,3" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "%" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe "1,$" . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: exe a:cchar . 'pfile'
: exe "." . a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
: " List with only one valid entry
: exe a:cchar . "getexpr ['Xtestfile2:2:5:Line2']"
: exe a:cchar . "fdo let g:result .= expand('%') . ' ' . line('.') . 'L' . ' ' . col('.') . 'C' . nl"
:endfunction
:let result=''
:" Tests for the :cdo quickfix list command
:call RunTests('c')
:let result .= "\n"
:" Tests for the :ldo location list command
:call RunTests('l')
:edit! test.out
:0put =result
:wq!
ENDTEST
+66
View File
@@ -0,0 +1,66 @@
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile2 2L 2C
Unsaved file change test passed
Abort command on error test passed
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile3 2L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile2 2L 2C
Xtestfile2 2L 5C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile2 2L 2C
Unsaved file change test passed
Abort command on error test passed
Xtestfile2 2L 2C
Xtestfile3 3L 1C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile3 2L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile1 1L 3C
Xtestfile2 2L 2C
Xtestfile3 2L 3C
Xtestfile2 2L 2C
Xtestfile2 2L 5C
+4
View File
@@ -87,6 +87,10 @@ Go
abcd{ef
ghijklm
no}pqrs2k0f{c%
:let g:test ="Test 11: using block replace mode after wrapping"
:$put =g:test
:set linebreak wrap
Go150aayypk147|jr0
:%w! test.out
:qa!
ENDTEST
+3
View File
@@ -49,3 +49,6 @@ A
Test 10: using normal commands after block-visual
abcdpqrs
Test 11: using block replace mode after wrapping
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa
+74
View File
@@ -756,6 +756,80 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
891,
/**/
890,
/**/
889,
/**/
888,
/**/
887,
/**/
886,
/**/
885,
/**/
884,
/**/
883,
/**/
882,
/**/
881,
/**/
880,
/**/
879,
/**/
878,
/**/
877,
/**/
876,
/**/
875,
/**/
874,
/**/
873,
/**/
872,
/**/
871,
/**/
870,
/**/
869,
/**/
868,
/**/
867,
/**/
866,
/**/
865,
/**/
864,
/**/
863,
/**/
862,
/**/
861,
/**/
860,
/**/
859,
/**/
858,
/**/
857,
/**/
856,
/**/
855,
/**/
854,
/**/