mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
+41
@@ -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:
|
||||
@@ -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 \
|
||||
|
||||
@@ -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.
|
||||
|
||||
[](https://travis-ci.org/vim/vim)
|
||||
[](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:
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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}
|
||||
|
||||
|
||||
@@ -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*
|
||||
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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)
|
||||
"{{{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
@@ -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
@@ -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
|
||||
|
||||
@@ -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,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'
|
||||
|
||||
@@ -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
|
||||
|
||||
Vendored
+32
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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).], ,
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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 : */
|
||||
|
||||
@@ -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 : */
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -49,3 +49,6 @@ A
|
||||
Test 10: using normal commands after block-visual
|
||||
|
||||
abcdpqrs
|
||||
Test 11: using block replace mode after wrapping
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa
|
||||
|
||||
@@ -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,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user