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:
@@ -7,6 +7,7 @@ SRC_ALL = \
|
||||
.travis.yml \
|
||||
appveyor.yml \
|
||||
src/README.txt \
|
||||
src/alloc.h \
|
||||
src/arabic.c \
|
||||
src/arabic.h \
|
||||
src/ascii.h \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*eval.txt* For Vim version 7.4. Last change: 2016 Jan 03
|
||||
*eval.txt* For Vim version 7.4. Last change: 2016 Jan 09
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1739,8 +1739,8 @@ USAGE RESULT DESCRIPTION ~
|
||||
abs( {expr}) Float or Number absolute value of {expr}
|
||||
acos( {expr}) Float arc cosine of {expr}
|
||||
add( {list}, {item}) List append {item} to |List| {list}
|
||||
alloc_fail( {countdown}, {when}, {repeat})
|
||||
nothing make memory allocation fail
|
||||
alloc_fail( {id}, {countdown}, {repeat})
|
||||
none make memory allocation fail
|
||||
and( {expr}, {expr}) Number bitwise AND
|
||||
append( {lnum}, {string}) Number append {string} below line {lnum}
|
||||
append( {lnum}, {list}) Number append lines {list} below line {lnum}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*help.txt* For Vim version 7.4. Last change: 2015 Jun 21
|
||||
*help.txt* For Vim version 7.4. Last change: 2016 Jan 09
|
||||
|
||||
VIM - main help file
|
||||
k
|
||||
@@ -25,6 +25,8 @@ Get specific help: It is possible to go directly to whatever you want help
|
||||
Vim command argument - :help -r
|
||||
Option ' :help 'textwidth'
|
||||
Regular expression / :help /[
|
||||
Also see |help-summary| for a verbose explanation.
|
||||
|
||||
Search for help: Type ":help word", then hit CTRL-D to see matching
|
||||
help entries for "word".
|
||||
Or use ":helpgrep word". |:helpgrep|
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*index.txt* For Vim version 7.4. Last change: 2016 Jan 03
|
||||
*index.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1055,7 +1055,7 @@ tag command action in Command-line editing mode ~
|
||||
|c_<Insert>| <Insert> toggle insert/overstrike mode
|
||||
|c_<LeftMouse>| <LeftMouse> cursor at mouse click
|
||||
|
||||
You found it, Arthur! *holy-grail*
|
||||
You found it, Arthur! *holy-grail* *:smile*
|
||||
|
||||
==============================================================================
|
||||
5. EX commands *ex-cmd-index* *:index*
|
||||
@@ -1176,7 +1176,7 @@ tag command action ~
|
||||
|:cpfile| :cpf[ile] go to last error in previous file
|
||||
|:cquit| :cq[uit] quit Vim with an error code
|
||||
|:crewind| :cr[ewind] go to the specified error, default first one
|
||||
|:cscope| :cs[cope] execute cscope command
|
||||
|:cscope| :cs[cope] execute cscope command
|
||||
|:cstag| :cst[ag] use cscope to jump to a tag
|
||||
|:cunmap| :cu[nmap] like ":unmap" but for Command-line mode
|
||||
|:cunabbrev| :cuna[bbrev] like ":unabbrev" but for Command-line mode
|
||||
@@ -1297,7 +1297,7 @@ tag command action ~
|
||||
|:lcd| :lc[d] change directory locally
|
||||
|:lchdir| :lch[dir] change directory locally
|
||||
|:lclose| :lcl[ose] close location window
|
||||
|:lcscope| :lcs[cope] like ":cscope" but uses location list
|
||||
|: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
|
||||
@@ -1353,7 +1353,7 @@ tag command action ~
|
||||
|:marks| :marks list all marks
|
||||
|:match| :mat[ch] define a match to highlight
|
||||
|:menu| :me[nu] enter a new menu item
|
||||
|:menutranslate| :menut[ranslate] add a menu translation item
|
||||
|:menutranslate| :menut[ranslate] add a menu translation item
|
||||
|:messages| :mes[sages] view previously displayed messages
|
||||
|:mkexrc| :mk[exrc] write current mappings and settings to a file
|
||||
|:mksession| :mks[ession] write session info to a file
|
||||
@@ -1497,7 +1497,7 @@ tag command action ~
|
||||
|:smap| :smap like ":map" but for Select mode
|
||||
|:smapclear| :smapc[lear] remove all mappings for Select mode
|
||||
|:smenu| :sme[nu] add menu for Select mode
|
||||
|:smile| :smi[le] make the user happy
|
||||
|:smile| :smi[le] make the user happy
|
||||
|:snext| :sn[ext] split window and go to next file in the
|
||||
argument list
|
||||
|:sniff| :sni[ff] send request to sniff
|
||||
@@ -1520,7 +1520,7 @@ tag command action ~
|
||||
|:stop| :st[op] suspend the editor or escape to a shell
|
||||
|:stag| :sta[g] split window and jump to a tag
|
||||
|:startinsert| :star[tinsert] start Insert mode
|
||||
|:startgreplace| :startg[replace] start Virtual Replace mode
|
||||
|:startgreplace| :startg[replace] start Virtual Replace mode
|
||||
|:startreplace| :startr[eplace] start Replace mode
|
||||
|:stopinsert| :stopi[nsert] stop Insert mode
|
||||
|:stjump| :stj[ump] do ":tjump" and split window
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*spell.txt* For Vim version 7.4. Last change: 2014 Sep 19
|
||||
*spell.txt* For Vim version 7.4. Last change: 2016 Jan 08
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
|
||||
@@ -1048,6 +1048,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
|
||||
'tbis' options.txt /*'tbis'*
|
||||
'tbs' options.txt /*'tbs'*
|
||||
'tc' options.txt /*'tc'*
|
||||
'tcldll' options.txt /*'tcldll'*
|
||||
'tenc' options.txt /*'tenc'*
|
||||
'term' options.txt /*'term'*
|
||||
'termbidi' options.txt /*'termbidi'*
|
||||
@@ -2872,6 +2873,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
|
||||
:smapclear map.txt /*:smapclear*
|
||||
:sme gui.txt /*:sme*
|
||||
:smenu gui.txt /*:smenu*
|
||||
:smile index.txt /*:smile*
|
||||
:sn windows.txt /*:sn*
|
||||
:snext windows.txt /*:snext*
|
||||
:sni if_sniff.txt /*:sni*
|
||||
@@ -4922,6 +4924,7 @@ added-win32-GUI version5.txt /*added-win32-GUI*
|
||||
aff-dic-format spell.txt /*aff-dic-format*
|
||||
after-directory options.txt /*after-directory*
|
||||
aleph options.txt /*aleph*
|
||||
alloc_fail() eval.txt /*alloc_fail()*
|
||||
alt intro.txt /*alt*
|
||||
alt-input debugger.txt /*alt-input*
|
||||
alt-movement gui_mac.txt /*alt-movement*
|
||||
@@ -8077,6 +8080,7 @@ spell-NAME spell.txt /*spell-NAME*
|
||||
spell-NEEDAFFIX spell.txt /*spell-NEEDAFFIX*
|
||||
spell-NEEDCOMPOUND spell.txt /*spell-NEEDCOMPOUND*
|
||||
spell-NOBREAK spell.txt /*spell-NOBREAK*
|
||||
spell-NOCOMPOUNDSUGS spell.txt /*spell-NOCOMPOUNDSUGS*
|
||||
spell-NOSPLITSUGS spell.txt /*spell-NOSPLITSUGS*
|
||||
spell-NOSUGFILE spell.txt /*spell-NOSUGFILE*
|
||||
spell-NOSUGGEST spell.txt /*spell-NOSUGGEST*
|
||||
@@ -9048,6 +9052,7 @@ winwidth() eval.txt /*winwidth()*
|
||||
word motion.txt /*word*
|
||||
word-count editing.txt /*word-count*
|
||||
word-motions motion.txt /*word-motions*
|
||||
wordcount() eval.txt /*wordcount()*
|
||||
workbench starting.txt /*workbench*
|
||||
workshop workshop.txt /*workshop*
|
||||
workshop-commands workshop.txt /*workshop-commands*
|
||||
|
||||
+46
-24
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.4. Last change: 2016 Jan 03
|
||||
*todo.txt* For Vim version 7.4. Last change: 2016 Jan 10
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -34,6 +34,8 @@ not be repeated below, unless there is extra information.
|
||||
*known-bugs*
|
||||
-------------------- Known bugs and current work -----------------------
|
||||
|
||||
/tmp/test_increment_new_style.patch.2
|
||||
|
||||
Regexp problems:
|
||||
- The regexp engines are not reentrant, causing havoc when interrupted by a
|
||||
remote expression or something else. Move global variables onto the stack
|
||||
@@ -76,10 +78,13 @@ Regexp problems:
|
||||
matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
|
||||
- Search for \\~ causes error E874.
|
||||
|
||||
Need better instructions about how to install all interfaces and how to build
|
||||
Vim with them.
|
||||
For Ruby: https://github.com/ruby/ruby/tree/trunk/win32
|
||||
Or use Ken Takata's hack.
|
||||
Help to build with interfaces. (Ken Takata, 2015 Jan 5)
|
||||
|
||||
Need to try out instructions in INSSTALLpc.txt about how to install all
|
||||
interfaces and how to build Vim with them.
|
||||
Appveyor build with self-installing executable, includes getting most
|
||||
interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
|
||||
result: https://ci.appveyor.com/project/k-takata/vim/history
|
||||
|
||||
Still using freed memory after using setloclist(). (lcd, 2014 Jul 23)
|
||||
More info Jul 24. Not clear why.
|
||||
@@ -96,6 +101,10 @@ Should use /usr/local/share/applications or /usr/share/applications.
|
||||
Or use $XDG_DATA_DIRS.
|
||||
Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)
|
||||
|
||||
Patch to update the help summary. (Christian Brabandt, 2015 Jan 10)
|
||||
|
||||
Add has('crypt-blowfish') and has('crypt-blowfish2') (Smu Johnson)
|
||||
|
||||
Access to uninitialized memory in match_backref() regexp_nda.c:4882
|
||||
(Dominique Pelle, 2015 Nov 6)
|
||||
|
||||
@@ -105,12 +114,23 @@ directory exists. (Sergio Gallelli, 2013 Dec 29)
|
||||
Using ":windo" to set options in all windows has the side effect that it
|
||||
changes the window layout and the current window. Make a variant that saves
|
||||
and restores. Use in the matchparen plugin.
|
||||
Perhaps we can use "window <restore> {cmd}"?
|
||||
Perhaps we can use ":windo <restore> {cmd}"?
|
||||
Patch to add <restore> to :windo, :bufdo, etc. (Christian Brabandt, 2015 Jan
|
||||
6, 2nd message)
|
||||
Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}".
|
||||
|
||||
Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
|
||||
|
||||
Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
|
||||
|
||||
Patch to fix "." after CTRL-A in Visual block mode. (Ozaki Kiichi, 2015 Oct
|
||||
24)
|
||||
|
||||
Patch to have CTRL-A and CTRL-X update the '[ and '] marks.
|
||||
(Yukihiro Nakadaira, 2015 Aug 23)
|
||||
|
||||
Patch for GVimExt building with VS2015. (Mike Williams, 2015 Jan 10)
|
||||
|
||||
Unexpected delay when using CTRL-O u. It's not timeoutlen.
|
||||
(Gary Johnson, 2015 Aug 28)
|
||||
|
||||
@@ -128,27 +148,28 @@ set_color_count().
|
||||
|
||||
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
|
||||
|
||||
Patch to add wordcount(). (Christian Brabandt, 2015 Nov 27)
|
||||
|
||||
Plugin to use Vim in MANPAGER. Konfekt, PR #491
|
||||
|
||||
Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
|
||||
|
||||
Patch for explaining the help. (Christian Brabandt, 2015 Jan 8)
|
||||
Should be in the user manual?
|
||||
|
||||
Patch to recognize string slice for variable followed by colon.
|
||||
(Hirohito Higashi, 2015 Nov 24)
|
||||
|
||||
Patch to add debug backtrace. (Alberto Fanjul, 2015 Sep 27)
|
||||
Update 2016 Jan 2. Issue #433
|
||||
|
||||
Patch to make mzscheme (racket) interface work. (Yukihiro Nakadaira, 2015 Jan
|
||||
10) Doesn't work for me, need to build from source.
|
||||
|
||||
MS-Windows: When editing a file with a leading space, writing it uses the
|
||||
wrong name. (Aram, 2014 Nov 7) Vim 7.4.
|
||||
|
||||
Can't recognize the $ProgramFiles(x86) environment variable. Recognize it
|
||||
specifically? First try with the parens, then without.
|
||||
|
||||
Patch to fix "." after CTRL-A in Visual block mode. (Ozaki Kiichi, 2015 Oct
|
||||
24)
|
||||
|
||||
Half-finished patch to fix the Problem using cgn to change a search hit when
|
||||
replacement includes hit. Reported by John Beckett, fix by Christian Brabandt,
|
||||
2015 Dec 14, Update Dec 15.
|
||||
@@ -159,7 +180,7 @@ Patch to make building GVimExt with VS2015. (Mike Williams, 2015 Dec 13)
|
||||
Value returned by virtcol() changes depending on how lines wrap. This is
|
||||
inconsistent with the documentation.
|
||||
|
||||
Patch to add perleval(). (Damien, 2015 Dec 8)
|
||||
Patch to add perleval(). (Damien, 2015 Dec 8, update 2016 Jan 4)
|
||||
|
||||
Can we cache the syntax attributes, so that updates for 'relativenumber' and
|
||||
'cursorline'/'cursorcolumn' are a lot faster?
|
||||
@@ -195,6 +216,11 @@ Nov 29)
|
||||
If libiconv.dll is not found search for libiconv2.dll. (Yasuhiro Matsumoto,
|
||||
2015 Oct 7)
|
||||
|
||||
Using an external diff is inefficient. Not all systems have a good diff
|
||||
program available (esp. MS-Windows). Would be nice to have in internal diff
|
||||
implementation. Can then also use this for displaying changes within a line.
|
||||
Olaf Dabrunz is working on this.
|
||||
|
||||
The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep
|
||||
24): :diffthis, :diffoff.
|
||||
|
||||
@@ -227,12 +253,16 @@ 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.
|
||||
|
||||
Patch to improve I/O for Perl. (Damine, 2015 Jan 9)
|
||||
|
||||
Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
|
||||
Needs a different check for CLEARTYPE_QUALITY.
|
||||
Problem mentioned by Christian Brabandt, 2016 Jan 4.
|
||||
|
||||
Example in editing.txt uses $HOME with the expectating that it ends in a
|
||||
slash. For me it does, but perhaps not for everybody. Add a function that
|
||||
inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
|
||||
|
||||
Patch to load TCL dynamically. (Ken Takata, 2015 Nov 11)
|
||||
|
||||
ml_updatechunk() is slow when retrying for another encoding. (John Little,
|
||||
2014 Sep 11)
|
||||
|
||||
@@ -263,9 +293,6 @@ Work in progress.
|
||||
Patch for global-local options consistency. (Arnaud Decara, 2015 Jul 22)
|
||||
Is this right?
|
||||
|
||||
Patch to have CTRL-A and CTRL-X update the '[ and '] marks.
|
||||
(Yukihiro Nakadaira, 2015 Aug 23)
|
||||
|
||||
Patch to make getregtype() return the right size for non-linux systems.
|
||||
(Yasuhiro Matsumoto, 2014 Jul 8)
|
||||
Breaks test_eval. Inefficient, can we only compute y_width when needed?
|
||||
@@ -359,7 +386,7 @@ Patch for ordered dict. (Ozaki Kiichi, 2015 May 7)
|
||||
Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
|
||||
Remark from Roland Eggner: does it cause crashes? (2014 Dec 12)
|
||||
Updated patch by Roland Eggner, Dec 16
|
||||
Updated patch from Charles, Dec 29.
|
||||
Updated patch from Charles, 2016 Jan 4.
|
||||
|
||||
Patch to open folds for 'incsearch'. (Christian Brabandt, 2015 Jan 6)
|
||||
|
||||
@@ -672,9 +699,6 @@ Patch by Christian Brabandt, 2013 Apr 20, unfinished.
|
||||
|
||||
Bug: findfile("any", "file:///tmp;") does not work.
|
||||
|
||||
Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
|
||||
Needs a different check for CLEARTYPE_QUALITY.
|
||||
|
||||
In the ATTENTION message about an existing swap file, mention the name of the
|
||||
process that is running. It might actually be some other program, e.g. after
|
||||
a reboot.
|
||||
@@ -2746,8 +2770,7 @@ Macintosh:
|
||||
8 On MS-Windows ":make" doesn't show output while it is working. Use the
|
||||
tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the
|
||||
UnxUtils.zip archive.
|
||||
Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
|
||||
Briscoe says it's not as good.
|
||||
Is it better than what we have in src/tee?
|
||||
8 When doing Insert mode completion a mapping cannot recursively call
|
||||
edit(), because the completion information is global. Put everything in
|
||||
an allocated structure?
|
||||
@@ -4632,7 +4655,6 @@ Visual mode:
|
||||
6 ":left" and ":right" should work in Visual block mode.
|
||||
7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
|
||||
current buffer.
|
||||
7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
|
||||
6 In non-Block mode, "I" should insert the same text in front of each line,
|
||||
before the first non-blank, "gI" in column 1.
|
||||
6 In non-Block mode, "A" should append the same text after each line.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_03.txt* For Vim version 7.4. Last change: 2015 Dec 12
|
||||
*usr_03.txt* For Vim version 7.4. Last change: 2016 Jan 05
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -413,8 +413,8 @@ in "the" use: >
|
||||
/the\>
|
||||
|
||||
The "\>" item is a special marker that only matches at the end of a word.
|
||||
Similarly "\<" only matches at the begin of a word. Thus to search for the
|
||||
word "the" only: >
|
||||
Similarly "\<" only matches at the beginning of a word. Thus to search for
|
||||
the word "the" only: >
|
||||
|
||||
/\<the\>
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
" Vim filetype plugin file
|
||||
" Language: hg (Mercurial) commit file
|
||||
" Maintainer: Ken Takata <kentkt at csc dot jp>
|
||||
" Last Change: 2016 Jan 6
|
||||
" Filenames: hg-editor-*.txt
|
||||
" License: VIM License
|
||||
" URL: https://github.com/k-takata/hg-vim
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal nomodeline
|
||||
|
||||
let b:undo_ftplugin = 'setl modeline<'
|
||||
@@ -2,7 +2,7 @@
|
||||
" Language: Lua script
|
||||
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
|
||||
" First Author: Max Ischenko <mfi 'at' ukr.net>
|
||||
" Last Change: 2014 Nov 12
|
||||
" Last Change: 2016 Jan 10
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
@@ -52,9 +52,9 @@ function! GetLuaIndent()
|
||||
endif
|
||||
endif
|
||||
|
||||
" Subtract a 'shiftwidth' on end, else (and elseif), until and '}'
|
||||
" Subtract a 'shiftwidth' on end, else, elseif, until and '}'
|
||||
" This is the part that requires 'indentkeys'.
|
||||
let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|until\>\|}\)')
|
||||
let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)')
|
||||
if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
|
||||
let ind = ind - &shiftwidth
|
||||
endif
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
" Language: shell (sh) Korn shell (ksh) bash (sh)
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
|
||||
" Last Change: Nov 09, 2015
|
||||
" Version: 142
|
||||
" Last Change: Dec 11, 2015
|
||||
" Version: 143
|
||||
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
|
||||
" For options and settings, please use: :help ft-sh-syntax
|
||||
" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr)
|
||||
@@ -119,7 +119,7 @@ syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSu
|
||||
syn cluster shCommandSubList contains=shAlias,shArithmetic,shComment,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shOption,shPosnParm,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable
|
||||
syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial
|
||||
syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial
|
||||
syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPPS
|
||||
syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS
|
||||
syn cluster shDerefVarList contains=shDerefOp,shDerefVarArray,shDerefOpError
|
||||
syn cluster shEchoList contains=shArithmetic,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote
|
||||
syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq
|
||||
@@ -493,6 +493,11 @@ if exists("b:is_bash")
|
||||
syn match shDerefPPS contained '/\{1,2}' nextgroup=shDerefPPSleft
|
||||
syn region shDerefPPSleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList
|
||||
syn region shDerefPPSright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}' contains=@shCommandSubList
|
||||
|
||||
" bash : ${parameter/#substring/replacement}
|
||||
syn match shDerefPSR contained '/#' nextgroup=shDerefPSRleft
|
||||
syn region shDerefPSRleft contained start='.' skip=@\%(\\\\\)*\\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPSRright
|
||||
syn region shDerefPSRright contained start='.' skip=@\%(\\\\\)\+@ end='\ze}'
|
||||
endif
|
||||
|
||||
" Arithmetic Parenthesized Expressions: {{{1
|
||||
@@ -563,6 +568,7 @@ hi def link shColon shComment
|
||||
hi def link shDerefOp shOperator
|
||||
hi def link shDerefPOL shDerefOp
|
||||
hi def link shDerefPPS shDerefOp
|
||||
hi def link shDerefPSR shDerefOp
|
||||
hi def link shDeref shShellVariables
|
||||
hi def link shDerefDelim shOperator
|
||||
hi def link shDerefSimple shDeref
|
||||
|
||||
+21
-21
@@ -1,8 +1,8 @@
|
||||
" Vim syntax file
|
||||
" Language: Vim 7.4 script
|
||||
" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
|
||||
" Last Change: November 30, 2015
|
||||
" Version: 7.4-38
|
||||
" Last Change: January 04, 2016
|
||||
" Version: 7.4-39
|
||||
" Automatically generated keyword lists: {{{1
|
||||
|
||||
" Quit when a syntax file was already loaded {{{2
|
||||
@@ -18,24 +18,24 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
|
||||
syn cluster vimCommentGroup contains=vimTodo,@Spell
|
||||
|
||||
" regular vim commands {{{2
|
||||
syn keyword vimCommand contained a arga[dd] argl[ocal] ba[ll] bn[ext] breakd[el] bufdo cabc[lear] cb[uffer] cf[ile] changes cl[ist] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp diffpu[t] dir doau ea e[dit] endfo[r] ene[w] files fini[sh] foldd[oopen] g h helpt[ags] iabc[lear] intro k l lan lc[d] lefta[bove] lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] nore on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r red[o] retu[rn] rub[y] rv[iminfo] sba[ll] sbN[ext] scripte[ncoding] setf[iletype] sh[ell] sl sme sno[magic] so[urce] spellr[epall] sre[wind] startg[replace] stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tclf[ile] tl[ast] tn[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xprop
|
||||
syn keyword vimCommand contained ab argd ar[gs] bd[elete] bN[ext] breakl[ist] b[uffer] cad[dbuffer] cc cfir[st] chd[ir] clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep diffs[plit] di[splay] dp earlier el[se] endfun ex filet fir[st] foldo[pen] go[to] ha[rdcopy] hi if is[earch] keepa la lan[guage] lch[dir] lex[pr] lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] nos[wapfile] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re redr[aw] rew[ind] rubyd[o] sal[l] sbf[irst] sbp[revious] scr[iptnames] setg[lobal] sig sla[st] smenu snoreme spe spellu[ndo] st star[tinsert] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xunme
|
||||
syn keyword vimCommand contained abc[lear] argd[elete] argu[ment] bel[owright] bo[tright] br[ewind] buffers cadde[xpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cnf com cope[n] cs de delep delf di difft[his] dj[ump] dr[op] ec elsei[f] endf[unction] exi[t] filetype fix[del] for gr[ep] h[elp] hid[e] ij[ump] isp[lit] keepalt lad la[st] lcl[ose] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] lua ma menut[ranslate] mksp[ell] m[ove] nb[key] noa nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q r[ead] redraws[tatus] ri[ght] rubyf[ile] san[dbox] sbl[ast] sbr[ewind] scs setl[ocal] sign sl[eep] sn[ext] snoremenu spelld[ump] spellw[rong] sta[g] startr[eplace] sun[hide] sw[apname] syntime tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xunmenu
|
||||
syn keyword vimCommand contained abo[veleft] argdo as[cii] bf[irst] bp[revious] bro[wse] bun[load] caddf[ile] cd cgete[xpr] checkt[ime] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] diffg[et] diffu[pdate] dl ds[earch] echoe[rr] em[enu] en[dif] exu[sage] fin fo[ld] fu grepa[dd] helpc[lose] his[tory] il[ist] iuna[bbrev] keepj[umps] laddb[uffer] lat lcs lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] luado mak[e] mes mkv mz nbs[tart] noautocmd o ownsyntax perld[o] pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] rec[over] reg[isters] rightb[elow] rundo sa[rgument] sbm[odified] sb[uffer] scscope sf[ind] sil[ent] sm[agic] sN[ext] so spe[llgood] sp[lit] star stj[ump] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] xnoreme xwininfo
|
||||
syn keyword vimCommand contained al[l] arge[dit] au bl[ast] brea[k] bu bw[ipeout] cal[l] ce[nter] cg[etfile] cl cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell diffo[ff] dig dli[st] dsp[lit] echom[sg] en endt[ry] f fina[lly] foldc[lose] fun gui helpf[ind] i imapc[lear] j[oin] kee[pmarks] lad[dexpr] later lcscope lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] luafile ma[rk] messages mkvie[w] mzf[ile] ne noh[lsearch] ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] red res[ize] ru ru[ntime] sav[eas] sbn[ext] scr se[t] sfir[st] sim[alt] sm[ap] sni[ff] sor[t] spelli[nfo] spr[evious] start st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tcld[o] tj[ump] tN tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] xnoremenu y[ank]
|
||||
syn keyword vimCommand contained ar argg[lobal] bad[d] bm[odified] breaka[dd] buf c cat[ch] cex[pr] c[hange] cla[st] cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] diffp[atch] dig[raphs] do e echon endf endw[hile] f[ile] fin[d] folddoc[losed] fu[nction] gvim helpg[rep] ia in ju[mps] keepp[atterns] laddf[ile] lb[uffer] le[ft] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] mz[scheme] new nor omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] redi[r] ret[ab]
|
||||
syn keyword vimCommand contained a arga[dd] argl[ocal] ba[ll] bn[ext] breakd[el] bufdo cabc[lear] cat[ch] ce[nter] cgetb[uffer] che[ckpath] cmapc[lear] cnf com cope[n] cs de delep delf di difft[his] dj[ump] dr[op] ec elsei[f] endf[unction] exi[t] filetype fix[del] for gr[ep] h[elp] hid[e] ij[ump] isp[lit] keepalt lad la[st] lcl[ose] lex[pr] lgete[xpr] ll lne lnf[ile] loc[kmarks] lr[ewind] lv[imgrep] marks mk mkv[imrc] mz[scheme] new noswap[file] o[pen] ped[it] pp[op] profd[el] ptf[irst] ptN[ext] py python3 re redr[aw] rew[ind] rubyf[ile] sa[rgument] sbn[ext] scripte[ncoding] setf[iletype] sh[ell] sim[alt] sm[ap] sni[ff] sor[t] spelli[nfo] spr[evious] start st[op] sunmenu syn ta tabf[ind] tabnew tabr[ewind] tcld[o] tj[ump] tN tr tu[nmenu] undoj[oin] uns[ilent] ve[rsion] vimgrepa[dd] vs[plit] winc[md] wN[ext] ws[verb] x[it] xnoremenu
|
||||
syn keyword vimCommand contained ab argd ar[gs] bd[elete] bN[ext] breakl[ist] b[uffer] cad cb[uffer] cex[pr] cgete[xpr] checkt[ime] cn cNf comc[lear] co[py] cscope debug d[elete] delf[unction] diffg[et] diffu[pdate] dl ds[earch] echoe[rr] em[enu] en[dif] exu[sage] fin fo[ld] fu grepa[dd] helpc[lose] his[tory] il[ist] iuna[bbrev] keepj[umps] laddb[uffer] lat lcs lf lg[etfile] lla[st] lnew[er] lNf[ile] lockv[ar] ls lvimgrepa[dd] mat[ch] mk[exrc] mo n n[ext] nu[mber] opt[ions] pe[rl] pr prof[ile] ptj[ump] ptp[revious] py3 q r[ead] redraws[tatus] ri[ght] rundo sav[eas] sbN[ext] scrip[tnames] setg[lobal] si sl sme sno[magic] so[urce] spellr[epall] sre[wind] startg[replace] stopi[nsert] sus[pend] sync tab tabfir[st] tabn[ext] tabs tclf[ile] tl[ast] tn[ext] tr[ewind] u undol[ist] up[date] vert[ical] vi[sual] w windo wp[revious] wundo xmapc[lear] xunme
|
||||
syn keyword vimCommand contained abc[lear] argd[elete] argu[ment] bel[owright] bo[tright] br[ewind] buffers caddb[uffer] cc cf cg[etfile] cl cN cnf[ile] comp[iler] cpf[ile] cstag debugg[reedy] deletel dell diffo[ff] dig dli[st] dsp[lit] echom[sg] en endt[ry] f fina[lly] foldc[lose] fun gui helpf[ind] i imapc[lear] j[oin] kee[pmarks] lad[dexpr] later lcscope lfdo lgr[ep] lli[st] lne[xt] lo lol[der] lt[ag] lw[indow] menut mks[ession] mod[e] nbc[lose] nmapc[lear] o ownsyntax perld[o] pre[serve] promptf[ind] ptl[ast] ptr[ewind] py3do qa[ll] rec[over] reg[isters] rightb[elow] ru[ntime] sba[ll] sbp[revious] scs setl[ocal] sig sla[st] smenu snoreme spe spellu[ndo] st star[tinsert] sts[elect] sv[iew] syncbind tabc[lose] tabl[ast] tabN[ext] ta[g] te[aroff] tm tN[ext] try un unh[ide] v vi viu[sage] wa[ll] winp[os] wq wv[iminfo] xme xunmenu
|
||||
syn keyword vimCommand contained abo[veleft] argdo as[cii] bf[irst] bp[revious] bro[wse] bun[load] cad[dexpr] ccl[ose] cfdo c[hange] cla[st] cnew[er] cNf[ile] con cp[revious] cuna[bbrev] del deletep delm[arks] diffp[atch] dig[raphs] do e echon endf endw[hile] f[ile] fin[d] folddoc[losed] fu[nction] gvim helpg[rep] ia in ju[mps] keepp[atterns] laddf[ile] lb[uffer] ld[o] lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lop[en] lua ma menut[ranslate] mksp[ell] m[ove] nb[key] noa ol[dfiles] p po[p] prev[ious] promptr[epl] ptn pts[elect] pydo q[uit] red res[ize] ru rv[iminfo] sbf[irst] sbr[ewind] scscope sf[ind] sign sl[eep] sn[ext] snoremenu spelld[ump] spellw[rong] sta[g] startr[eplace] sun[hide] sw[apname] syntime tabd[o] tabm[ove] tabo[nly] tags tf[irst] tm[enu] to[pleft] ts[elect] una[bbreviate] unl ve vie[w] vmapc[lear] wh[ile] win[size] wqa[ll] x xmenu xwininfo
|
||||
syn keyword vimCommand contained al[l] arge[dit] au bl[ast] brea[k] bu bw[ipeout] caddf[ile] cd cf[ile] changes cl[ist] cn[ext] col[der] conf[irm] cq[uit] cw[indow] delc[ommand] deletl delp diffpu[t] dir doau ea e[dit] endfo[r] ene[w] files fini[sh] foldd[oopen] g h helpt[ags] iabc[lear] intro k l lan lc[d] le[ft] lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lpf[ile] luado mak[e] mes mkv mz nbs[tart] noautocmd omapc[lear] pc[lose] popu p[rint] ps[earch] ptN pu[t] pyf[ile] quita[ll] redi[r] ret[ab] rub[y] sal[l] sbl[ast] sb[uffer] se[t] sfir[st] sil[ent] sm[agic] sN[ext] so spe[llgood] sp[lit] star stj[ump] sunme sy t tabe[dit] tabN tabp[revious] tc[l] th[row] tn tp[revious] tu u[ndo] unlo[ckvar] verb[ose] vim[grep] vne[w] win wn[ext] w[rite] xa[ll] xnoreme y[ank]
|
||||
syn keyword vimCommand contained ar argg[lobal] bad[d] bm[odified] breaka[dd] buf c cal[l] cdo cfir[st] chd[ir] clo[se] cN[ext] colo[rscheme] con[tinue] cr[ewind] d delel deletp dep diffs[plit] di[splay] dp earlier el[se] endfun ex filet fir[st] foldo[pen] go[to] ha[rdcopy] hi if is[earch] keepa la lan[guage] lch[dir] lefta[bove] lgetb[uffer] l[ist] lN lNf lo[adview] lp[revious] luafile ma[rk] messages mkvie[w] mzf[ile] ne noh[lsearch] on[ly] pe popu[p] pro pta[g] ptn[ext] pw[d] py[thon] r red[o] retu[rn] rubyd[o] san[dbox] sbm[odified] scrip
|
||||
syn match vimCommand contained "\<z[-+^.=]\=\>"
|
||||
syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns
|
||||
|
||||
" vimOptions are caught only when contained in a vimSet {{{2
|
||||
syn keyword vimOption contained acd ambw arshape background ballooneval bg bl brk buftype cf cinkeys cmdwinheight com concealcursor cp cscopeprg csprg cul def diff display edcompatible endofline errorformat fcl fdm fex fileformats fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pheader previewheight printmbcharset pvw readonly restorescreen rnu ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi termbidi tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan
|
||||
syn keyword vimOption contained ai anti autochdir backspace balloonexpr bh bo browsedir casemap cfu cino cmp comments conceallevel cpo cscopequickfix csqf cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fileignorecase flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pi previewwindow printmbfont pythondll redrawtime revins ro ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termencoding thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write
|
||||
syn keyword vimOption contained akm antialias autoindent backup bdir bin bomb bs cb ch cinoptions cms commentstring confirm cpoptions cscoperelative csre cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs filetype fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste perldll pm printdevice printoptions pythonthreedll regexpengine ri rop rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis terse tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany
|
||||
syn keyword vimOption contained al ar autoread backupcopy bdlay binary breakat bsdir cc charconvert cinw co compatible consk cpt cscopetag cst cursorline dex digraph ead ei equalalways eventignore fde fdt fic fillchars fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pex pmbcs printencoding prompt qe relativenumber rightleft rs runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs textauto timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup
|
||||
syn keyword vimOption contained aleph arab autowrite backupdir belloff biosk breakindent bsk ccv ci cinwords cocu complete conskey crb cscopetagorder csto cwh dg dip eadirection ek equalprg ex fdi fen fileencoding fixendofline fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm luadll makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pexpr pmbfn printexpr pt quoteescape remap rightleftcmd rtp sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc textmode timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay
|
||||
syn keyword vimOption contained allowrevins arabic autowriteall backupext beval bioskey breakindentopt bt cd cin clipboard cole completefunc copyindent cryptmethod cscopeverbose csverb debug dict dir eb enc errorbells expandtab fdl fenc fileencodings fixeol foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode pfn popt printfont pumheight rdt renderoptions rl ru sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tal tenc textwidth title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws
|
||||
syn keyword vimOption contained altkeymap arabicshape aw backupskip bex bk bri bufhidden cdpath cindent cm colorcolumn completeopt cot cscopepathcomp cspc cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformat fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path ph preserveindent printheader pvh re report rlc rubydll sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb term tf titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww
|
||||
syn keyword vimOption contained ambiwidth ari awa balloondelay bexpr bkc briopt buflisted cedit cink cmdheight columns
|
||||
syn keyword vimOption contained acd ambw arshape background ballooneval bg bl brk buftype cf cinkeys cmp com concealcursor cp cscopeprg csprg cul def diff display edcompatible endofline errorformat fcl fdm fex fileformats fkmap foldenable foldminlines formatprg gdefault gp guifontset helpfile hidden hl ignorecase imcmdline imsf indentexpr is isp keywordprg laststatus lisp loadplugins ma matchtime mco ml modeline mousefocus mousetime nrformats ofu para pdev pheader previewheight printmbcharset pvw readonly restorescreen rnu ruf sc scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi termbidi tgst titleold top ttimeoutlen ttyscroll ul ur verbosefile visualbell wcm wi wildmenu winfixwidth wm wrapscan
|
||||
syn keyword vimOption contained ai anti autochdir backspace balloonexpr bh bo browsedir casemap cfu cino cms comments conceallevel cpo cscopequickfix csqf cursorbind define diffexpr dy ef eol esckeys fcs fdn ff fileignorecase flp foldexpr foldnestmax fp gfm grepformat guifontwide helpheight highlight hlg im imd imstatusfunc indentkeys isf isprint km lazyredraw lispwords lpl macatsui maxcombine mef mls modelines mousehide mp nu omnifunc paragraphs penc pi previewwindow printmbfont pythondll redrawtime revins ro ruler scb scs sessionoptions shellquote shiftround showfulltag sidescrolloff smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termencoding thesaurus titlestring tpm ttm ttytype undodir ut vfile vop wd wic wildmode winheight wmh write
|
||||
syn keyword vimOption contained akm antialias autoindent backup bdir bin bomb bs cb ch cinoptions co commentstring confirm cpoptions cscoperelative csre cursorcolumn delcombine diffopt ea efm ep et fdc fdo ffs filetype fml foldignore foldopen fs gfn grepprg guiheadroom helplang history hls imactivatefunc imdisable inc indk isfname joinspaces kmp lbr list ls magic maxfuncdepth menuitems mm modifiable mousem mps number opendevice paste perldll pm printdevice printoptions pythonthreedll regexpengine ri rop rulerformat scr sect sft shellredir shiftwidth showmatch siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis terse tildeop tl tr tty tw undofile vb vi wa weirdinvert wig wildoptions winminheight wmnu writeany
|
||||
syn keyword vimOption contained al ar autoread backupcopy bdlay binary breakat bsdir cc charconvert cinw cocu compatible consk cpt cscopetag cst cursorline dex digraph ead ei equalalways eventignore fde fdt fic fillchars fmr foldlevel foldtext fsync gfs gtl guioptions hf hk hlsearch imactivatekey imi include inex isi js kp lcs listchars lsp makeef maxmapdepth mfd mmd modified mousemodel msm numberwidth operatorfunc pastetoggle pex pmbcs printencoding prompt qe relativenumber rightleft rs runtimepath scroll sections sh shellslash shm showmode sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs textauto timeout tm ts ttybuiltin tx undolevels vbs viewdir wak wfh wildchar wim winminwidth wmw writebackup
|
||||
syn keyword vimOption contained aleph arab autowrite backupdir belloff biosk breakindent bsk ccv ci cinwords cole complete conskey crb cscopetagorder csto cwh dg dip eadirection ek equalprg ex fdi fen fileencoding fixendofline fo foldlevelstart formatexpr ft gfw gtt guipty hh hkmap ic imaf iminsert includeexpr inf isident key langmap linebreak lm luadll makeprg maxmem mh mmp more mouses mzq nuw opfunc patchexpr pexpr pmbfn printexpr pt quoteescape remap rightleftcmd rtp sb scrollbind secure shcf shelltemp shortmess showtabline slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc textmode timeoutlen to tsl ttyfast uc undoreload vdir viewoptions warn wfw wildcharm winaltkeys winwidth wop writedelay
|
||||
syn keyword vimOption contained allowrevins arabic autowriteall backupext beval bioskey breakindentopt bt cd cin clipboard colorcolumn completefunc copyindent cryptmethod cscopeverbose csverb debug dict dir eb enc errorbells expandtab fdl fenc fileencodings fixeol foldclose foldmarker formatlistpat gcr ghr guicursor guitablabel hi hkmapp icon imak ims incsearch infercase isk keymap langmenu lines lmap lw mat maxmempattern mis mmt mouse mouseshape mzquantum odev osfiletype patchmode pfn popt printfont pumheight rdt renderoptions rl ru sbo scrolljump sel shell shelltype shortname shq sm so spellfile spr st sts swapsync syn tag tal tenc textwidth title toolbar tsr ttym udf updatecount ve viminfo wb wh wildignore window wiv wrap ws
|
||||
syn keyword vimOption contained altkeymap arabicshape aw backupskip bex bk bri bufhidden cdpath cindent cmdheight columns completeopt cot cscopepathcomp cspc cuc deco dictionary directory ed encoding errorfile exrc fdls fencs fileformat fk foldcolumn foldmethod formatoptions gd go guifont guitabtooltip hid hkp iconstring imc imsearch inde insertmode iskeyword keymodel langnoremap linespace lnr lz matchpairs maxmemtot mkspellmem mod mousef mouset nf oft pa path ph preserveindent printheader pvh re report rlc rubydll sbr scrolloff selection shellcmdflag shellxescape showbreak si smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb term tf titlelen toolbariconsize ttimeout ttymouse udir updatetime verbose virtualedit wc whichwrap wildignorecase winfixheight wiw wrapmargin ww
|
||||
syn keyword vimOption contained ambiwidth ari awa balloondelay bexpr bkc briopt buflisted cedit cink cmdwinheight
|
||||
|
||||
" vimOptions: These are the turn-off setting variants {{{2
|
||||
syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobk nobuflisted nocin noconfirm nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noendofline noerrorbells noex nofen nofixendofline nofkmap nogdefault nohidden nohkmapp nohlsearch noicon noim noimcmdline noimdisable noinf noinsertmode nojoinspaces nolazyredraw nolinebreak nolist nolpl noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup
|
||||
@@ -48,8 +48,8 @@ syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautoc
|
||||
syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbioskey invbomb invci invcompatible invconskey invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invequalalways invet invexrc invfileignorecase invfk invgd invhid invhkmap invhls
|
||||
|
||||
" termcap codes (which can also be set) {{{2
|
||||
syn keyword vimOption contained t_AB t_al t_bc t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RB t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_SR t_te t_ti t_ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xn t_xs t_ZH t_ZR
|
||||
syn keyword vimOption contained t_AF t_AL t_cd t_Ce t_cm t_cs t_CS t_da t_dl
|
||||
syn keyword vimOption contained t_AB t_al t_bc t_ce t_cl t_Co t_Cs t_CV t_db t_dl t_DL t_EI t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_SR t_te t_ti t_ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xn t_xs t_ZH t_ZR
|
||||
syn keyword vimOption contained t_AF t_AL t_cd t_Ce t_cm t_cs t_CS t_da
|
||||
syn match vimOption contained "t_%1"
|
||||
syn match vimOption contained "t_#2"
|
||||
syn match vimOption contained "t_#4"
|
||||
@@ -75,9 +75,9 @@ syn match vimHLGroup contained "Conceal"
|
||||
syn case match
|
||||
|
||||
" Function Names {{{2
|
||||
syn keyword vimFuncName contained abs and argidx asin browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdline getcmdwintype getfontname getftime getloclist getpos getregtype getwinposx glob has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setloclist setqflist settabwinvar shellescape sin soundfold split str2float strchars strftime string strpart strtrans submatch synconcealed synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview writefile
|
||||
syn keyword vimFuncName contained acos append arglistid atan browsedir bufloaded bufwinnr byteidxcomp changenr clearmatches complete_add copy count deepcopy diff_filler escape executable exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdpos getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy glob2regpat has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt str2nr strdisplaywidth stridx strlen strridx strwidth substitute synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth xor
|
||||
syn keyword vimFuncName contained add argc argv atan2 bufexists bufname byte2line call char2nr col complete_check cos cscope_connection delete diff_hlID eval exepath expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcharsearch getcmdtype getcwd getfsize getline getpid getreg gettabwinvar getwinvar globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setline setpos settabvar sha256 simplify sort spellsuggest
|
||||
syn keyword vimFuncName contained abs and argidx asin assert_true browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdline getcmdwintype getfontname getftime getloclist getpos getregtype getwinposx glob has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setloclist setqflist settabwinvar shellescape sin soundfold split str2nr strftime strlen strridx strwidth substitute synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth writefile
|
||||
syn keyword vimFuncName contained acos append arglistid assert_equal atan browsedir bufloaded bufwinnr byteidxcomp changenr clearmatches complete_add copy count deepcopy diff_filler escape executable exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdpos getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy glob2regpat has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt strchars stridx strpart strtrans submatch synconcealed synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview wordcount xor
|
||||
syn keyword vimFuncName contained add argc argv assert_false atan2 bufexists bufname byte2line call char2nr col complete_check cos cscope_connection delete diff_hlID eval exepath expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcharsearch getcmdtype getcwd getfsize getline getpid getreg gettabwinvar getwinvar globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setline setpos settabvar sha256 simplify sort spellsuggest str2float strdisplaywidth string
|
||||
|
||||
"--- syntax here and above generated by mkvimvim ---
|
||||
" Special Vim Highlighting (not automatic) {{{1
|
||||
|
||||
+24
-8
@@ -12,6 +12,22 @@ APPVER=5.0
|
||||
NODEBUG = 1
|
||||
!endif
|
||||
|
||||
!ifdef PROCESSOR_ARCHITECTURE
|
||||
# On Windows NT
|
||||
! ifndef CPU
|
||||
CPU = i386
|
||||
! ifdef PLATFORM
|
||||
! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64")
|
||||
CPU = AMD64
|
||||
! elseif ("$(PLATFORM)" != "x86") && ("$(PLATFORM)" != "X86")
|
||||
! error *** ERROR Unknown target platform "$(PLATFORM)". Make aborted.
|
||||
! endif
|
||||
! endif
|
||||
! endif
|
||||
!else
|
||||
CPU = i386
|
||||
!endif
|
||||
|
||||
!ifdef SDK_INCLUDE_DIR
|
||||
!include $(SDK_INCLUDE_DIR)\Win32.mak
|
||||
!else
|
||||
@@ -30,15 +46,15 @@ gvimext.dll: gvimext.obj \
|
||||
gvimext.obj: gvimext.h
|
||||
|
||||
.cpp.obj:
|
||||
$(cc) $(cflags) -DFEAT_GETTEXT $(cvarsmt) $*.cpp
|
||||
$(cc) $(cflags) -DFEAT_GETTEXT $(cvarsmt) $*.cpp
|
||||
|
||||
gvimext.res: gvimext.rc
|
||||
$(rc) $(rcflags) $(rcvars) gvimext.rc
|
||||
$(rc) $(rcflags) $(rcvars) gvimext.rc
|
||||
|
||||
clean:
|
||||
- if exist gvimext.dll del gvimext.dll
|
||||
- if exist gvimext.lib del gvimext.lib
|
||||
- if exist gvimext.exp del gvimext.exp
|
||||
- if exist gvimext.obj del gvimext.obj
|
||||
- if exist gvimext.res del gvimext.res
|
||||
- if exist gvimext.dll.manifest del gvimext.dll.manifest
|
||||
- if exist gvimext.dll del gvimext.dll
|
||||
- if exist gvimext.lib del gvimext.lib
|
||||
- if exist gvimext.exp del gvimext.exp
|
||||
- if exist gvimext.obj del gvimext.obj
|
||||
- if exist gvimext.res del gvimext.res
|
||||
- if exist gvimext.dll.manifest del gvimext.dll.manifest
|
||||
|
||||
+249
-29
@@ -13,7 +13,7 @@ be fine for most people.
|
||||
|
||||
With the exception of two sections (Windows 3.1 and MS-DOS), this document
|
||||
assumes that you are building Vim for Win32 or later.
|
||||
(Windows 95/98/Me/NT/2000/XP/2003/Vista/7)
|
||||
(Windows 95/98/Me/NT/2000/XP/2003/Vista/7/8/10)
|
||||
|
||||
|
||||
Contents:
|
||||
@@ -23,11 +23,16 @@ Contents:
|
||||
4. Borland
|
||||
5. Cross compiling for Win32 from a Linux machine
|
||||
6. Building with Python support
|
||||
7. Building with MzScheme support
|
||||
8. Windows 3.1
|
||||
9. MS-DOS
|
||||
7. Building with Python3 support
|
||||
8. Building with MzScheme support
|
||||
9. Building with Lua support
|
||||
10. Building with Perl support
|
||||
11. Building with Ruby support
|
||||
12. Building with Tcl support
|
||||
13. Windows 3.1
|
||||
14. MS-DOS
|
||||
|
||||
10. Installing after building from sources
|
||||
15. Installing after building from sources
|
||||
|
||||
|
||||
The currently preferred method is using the free Visual C++ Toolkit 2008
|
||||
@@ -42,8 +47,9 @@ you need the executable to run on Windows 98 or ME, use the 2003 one
|
||||
Visual Studio
|
||||
-------------
|
||||
|
||||
Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, and VS 2008)
|
||||
is straightforward. (These instructions should also work for VS 4 and VS 5.)
|
||||
Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, VS 2008,
|
||||
VS2010, VS2012, VS2013 and VS2015) is straightforward. (These instructions
|
||||
should also work for VS 4 and VS 5.)
|
||||
|
||||
Using VS C++ 2008 Express is recommended, the binaries build with that run on
|
||||
nearly all platforms. Binaries from later versions may not run on Windows 95
|
||||
@@ -195,7 +201,7 @@ Vim with Make_mvc.mak.
|
||||
Targeting Windows XP with new MSVC *new-msvc-windows-xp*
|
||||
----------------------------------
|
||||
|
||||
Beginning with Visual C++ 2010, Microsoft changed the behavior of LINK.EXE
|
||||
Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE
|
||||
so that it targets Windows 6.0 (Vista) by default. In order to override
|
||||
this, the target Windows version number needs to be passed to LINK like
|
||||
follows:
|
||||
@@ -345,6 +351,17 @@ Now you have created the Windows binary from your Linux box! Have fun...
|
||||
For building with MSVC 2008 the "Windows Installer" from www.python.org
|
||||
works fine.
|
||||
|
||||
When building, you need to set the following variables at least:
|
||||
|
||||
PYTHON: Where Python is installed. E.g. C:\Python27
|
||||
DYNAMIC_PYTHON: Whether dynamic linking is used. Usually, set to yes.
|
||||
PYTHON_VER: Python version. E.g. 27 for Python 2.7.X.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
PYTHON=C:\Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27
|
||||
|
||||
(rest written by Ron Aaron: <ronaharon@yahoo.com>)
|
||||
|
||||
Building with the mingw32 compiler, and the ActiveState ActivePython:
|
||||
@@ -380,7 +397,25 @@ And if you use msys2 to build python support (as one line):
|
||||
You will end up with a Python-enabled, Win32 version. Enjoy!
|
||||
|
||||
|
||||
7. Building with MzScheme support
|
||||
7. Building with Python3 support
|
||||
================================
|
||||
|
||||
For building with MSVC 2008 the "Windows Installer" from www.python.org
|
||||
works fine. Python 3.4 is recommended.
|
||||
|
||||
When building, you need to set the following variables at least:
|
||||
|
||||
PYTHON3: Where Python3 is installed. E.g. C:\Python34
|
||||
DYNAMIC_PYTHON3: Whether dynamic linking is used. Usually, set to yes.
|
||||
PYTHON3_VER: Python3 version. E.g. 34 for Python 3.4.X.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
PYTHON3=C:\Python34 DYNAMIC_PYTHON3=yes PYTHON3_VER=34
|
||||
|
||||
|
||||
8. Building with MzScheme support
|
||||
=================================
|
||||
|
||||
(written by Sergey Khorev <sergey.khorev@gmail.com>)
|
||||
@@ -416,8 +451,193 @@ After a successful build, these dlls can be freely removed, leaving them in
|
||||
%WINDOWS%\System32 only.
|
||||
|
||||
|
||||
8. Windows 3.1x
|
||||
===============
|
||||
9. Building with Lua support
|
||||
============================
|
||||
|
||||
Vim with Lua support can be built with either MSVC or MinGW (or Cygwin).
|
||||
You can use binaries from LuaBinaries.
|
||||
http://luabinaries.sourceforge.net/
|
||||
|
||||
1) Download and install LuaBinaries
|
||||
Go to the Download page of LuaBinaries:
|
||||
http://luabinaries.sourceforge.net/download.html
|
||||
|
||||
Download lua-X.Y.Z_Win32_dllw4_lib.zip for x86 or
|
||||
lua-X.Y.Z_Win64_dllw4_lib.zip for x64. You can use them for both MSVC and
|
||||
MinGW.
|
||||
|
||||
Unpack it to a working directory. E.g. C:\projects\lua53.
|
||||
Lua's header files will be installed under the include directory.
|
||||
|
||||
|
||||
2) Build
|
||||
You need to set the following variables:
|
||||
|
||||
LUA: Where Lua is installed. E.g. C:\projects\lua53.
|
||||
DYNAMIC_LUA: Whether dynamic linking is used. Usually, set to yes.
|
||||
LUA_VER: Lua version. E.g. 53 for Lua 5.3.X.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak
|
||||
LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
|
||||
|
||||
Or when using Cygwin (as one line):
|
||||
|
||||
make -f Make_cyg.mak
|
||||
LUA=/cygdrive/c/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
|
||||
|
||||
|
||||
10. Building with Perl support
|
||||
==============================
|
||||
|
||||
Vim with Perl support can be built with either MSVC or MinGW (or Cygwin).
|
||||
You can use binaries from ActiveState (ActivePerl) or Strawberry Perl.
|
||||
|
||||
http://www.activestate.com/activeperl
|
||||
http://strawberryperl.com/
|
||||
|
||||
When building, you need to set the following variables:
|
||||
|
||||
PERL: Where perl is installed. E.g. C:\Perl, C:\Strawberry\perl
|
||||
DYNAMIC_PERL: Whether dynamic linking is used. Usually, set to yes.
|
||||
PERL_VER: Perl version. E.g. 522 for Perl 5.22.X.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
PERL=C:\Perl DYNAMIC_PERL=yes PERL_VER=522
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak
|
||||
PERL=C:\Perl DYNAMIC_PERL=yes PERL_VER=522
|
||||
|
||||
|
||||
11. Building with Ruby support
|
||||
==============================
|
||||
|
||||
Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin).
|
||||
Ruby doesn't provide the official Windows binaries. The most widely used
|
||||
Windows binaries might be RubyInstaller.
|
||||
|
||||
http://rubyinstaller.org/
|
||||
|
||||
If you use MinGW you can easily build with RubyInstaller, but if you use MSVC
|
||||
you need some tricks described below.
|
||||
(Another binary distribution is ActiveScriptRuby:
|
||||
http://www.artonx.org/data/asr/)
|
||||
|
||||
When building, you need to set the following variables at least:
|
||||
|
||||
RUBY: Where ruby is installed. E.g. C:\Ruby22
|
||||
DYNAMIC_RUBY: Whether dynamic linking is used. Usually, set to yes.
|
||||
RUBY_VER: Ruby version. E.g. 22 for Ruby 2.2.X.
|
||||
RUBY_VER_LONG: Ruby API version in a long format.
|
||||
E.g. 2.2.0 for Ruby 2.2.X.
|
||||
|
||||
Ruby version vs. Ruby API version:
|
||||
|
||||
Ruby ver. | Ruby API ver.
|
||||
=========================
|
||||
1.8.X | 1.8
|
||||
1.9.[1-3] | 1.9.1
|
||||
2.0.0 | 2.0.0
|
||||
2.X.Y | 2.X.0
|
||||
|
||||
(Ruby 1.9.0 is excluded from the table because it is an unstable version.)
|
||||
|
||||
|
||||
A) Using MSVC
|
||||
|
||||
If you want to link with ruby, normally you must use the same compiler as
|
||||
which was used to build the ruby binary. RubyInstaller is built with MinGW,
|
||||
so normally you cannot use MSVC for building Vim if you want to link with
|
||||
RubyInstaller. If you use a different complier, there are mainly two problems:
|
||||
config.h and Ruby's DLL name. Here are the steps for working around them:
|
||||
|
||||
1) Download and Install RubyInstaller.
|
||||
You can install RubyInstaller with the default options and directory.
|
||||
E.g.:
|
||||
C:\Ruby22 (32-bit) or C:\Ruby22-x64 (64-bit)
|
||||
|
||||
Ruby 2.2.X is used in this example.
|
||||
|
||||
2) Download Ruby 2.2.X's source code and generate config.h:
|
||||
|
||||
cd C:\projects
|
||||
git clone https://github.com/ruby/ruby.git -b ruby_2_2
|
||||
cd ruby
|
||||
win32\configure.bat
|
||||
nmake .config.h.time
|
||||
|
||||
Note that ruby_2_2 is the branch name for Ruby 2.2.X's source code.
|
||||
There is no need to build whole Ruby, just config.h is needed.
|
||||
If you use 32-bit MSVC10, the config.h is generated in the
|
||||
.ext\include\i386-mswin32_100 directory.
|
||||
|
||||
3) Install the generated config.h.
|
||||
|
||||
xcopy /s .ext\include C:\Ruby22\include\ruby-2.2.0
|
||||
|
||||
Note that 2.2.0 is Ruby API version of Ruby 2.2.X.
|
||||
|
||||
4) Build Vim. Note that you need to adjust some variables (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
RUBY=C:\Ruby22 DYNAMIC_RUBY=yes RUBY_VER=22 RUBY_VER_LONG=2.2.0
|
||||
RUBY_MSVCRT_NAME=msvcrt
|
||||
WINVER=0x500
|
||||
|
||||
WINVER must be set to >=0x500, when building with Ruby 2.1 or later.
|
||||
When using this trick, you also need to set RUBY_MSVCRT_NAME to msvcrt
|
||||
which is used for the Ruby's DLL name.
|
||||
|
||||
B) Using MinGW
|
||||
|
||||
Using MinGW is easier than using MSVC when linking with RubyInstaller.
|
||||
After you install RubyInstaller, just type this (as one line):
|
||||
|
||||
mingw32-make -f Make_ming.mak
|
||||
RUBY=C:/Ruby22 DYNAMIC_RUBY=yes RUBY_VER=22 RUBY_VER_LONG=2.2.0
|
||||
WINVER=0x500
|
||||
|
||||
WINVER must be set to >=0x500, when building with Ruby 2.1 or later.
|
||||
|
||||
|
||||
12. Building with Tcl support
|
||||
=============================
|
||||
|
||||
Vim with Tcl support can be built with either MSVC or MinGW (or Cygwin).
|
||||
You can use binaries from ActiveState (ActiveTcl).
|
||||
|
||||
http://www.activestate.com/activetcl
|
||||
|
||||
When building, you need to set the following variables:
|
||||
|
||||
TCL: Where tcl is installed. E.g. C:\Tcl86
|
||||
DYNAMIC_TCL: Whether dynamic linking is used. Usually, set to yes.
|
||||
TCL_VER: Tcl version in a short format. E.g. 86 for Tcl 8.6.X.
|
||||
TCL_VER_LONG: Tcl version in a long format. E.g. 8.6 for Tcl 8.6.X.
|
||||
|
||||
E.g. When using MSVC (as one line):
|
||||
|
||||
nmake -f Make_mvc.mak
|
||||
TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
|
||||
|
||||
Or when using MinGW (as one line):
|
||||
|
||||
mingw32-make -f Make_mingw.mak
|
||||
TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
|
||||
|
||||
|
||||
13. Windows 3.1x
|
||||
================
|
||||
|
||||
make -f Make_w16.mak 16 bit, Borland C++ 5.0
|
||||
|
||||
@@ -436,8 +656,8 @@ In MSVC 4.2 support for Win32s was dropped! Use this command:
|
||||
nmake -f Make_mvc.mak GUI=yes
|
||||
|
||||
|
||||
9. MS-DOS
|
||||
=========
|
||||
14. MS-DOS
|
||||
==========
|
||||
|
||||
Summary:
|
||||
ren Make_bc3.mak Makefile; make 16 bit, Borland C++ and Turbo C++
|
||||
@@ -479,48 +699,48 @@ If you get all kinds of strange error messages when compiling, try changing
|
||||
the file format from "unix" to "dos".
|
||||
|
||||
|
||||
10. Installing after building from sources
|
||||
15. Installing after building from sources
|
||||
==========================================
|
||||
|
||||
[provided by Michael Soyka]
|
||||
|
||||
After you've built the Vim binaries as described above, you're ready to
|
||||
install Vim on your system. However, if you've obtained the Vim sources
|
||||
using Mercurial or by downloading them as a unix tar file, you must first
|
||||
create a "vim73" directory. If you instead downloaded the sources as
|
||||
using Git, Mercurial or by downloading them as a unix tar file, you must
|
||||
first create a "vim74" directory. If you instead downloaded the sources as
|
||||
zip files, you can skip this setup as the zip archives already have the
|
||||
correct directory structure.
|
||||
|
||||
A. Create a Vim "runtime" subdirectory named "vim73"
|
||||
A. Create a Vim "runtime" subdirectory named "vim74"
|
||||
-----------------------------------------------------
|
||||
If you obtained your Vim sources as zip files, you can skip this step.
|
||||
Otherwise, continue reading.
|
||||
|
||||
Go to the directory that contains the Vim "src" and "runtime"
|
||||
directories and create a new subdirectory named "vim73".
|
||||
directories and create a new subdirectory named "vim74".
|
||||
|
||||
Copy the "runtime" files into "vim73":
|
||||
copy runtime\* vim73
|
||||
Copy the "runtime" files into "vim74":
|
||||
copy runtime\* vim74
|
||||
|
||||
B. Copy the new binaries into the "vim73" directory
|
||||
B. Copy the new binaries into the "vim74" directory
|
||||
----------------------------------------------------
|
||||
Regardless of how you installed the Vim sources, you need to copy the
|
||||
new binaries you created above into "vim73":
|
||||
new binaries you created above into "vim74":
|
||||
|
||||
copy src\*.exe vim73
|
||||
copy src\GvimExt\gvimext.dll vim73
|
||||
copy src\xxd\xxd.exe vim73
|
||||
copy src\*.exe vim74
|
||||
copy src\GvimExt\gvimext.dll vim74
|
||||
copy src\xxd\xxd.exe vim74
|
||||
|
||||
C. Move the "vim73" directory into the Vim installation subdirectory
|
||||
C. Move the "vim74" directory into the Vim installation subdirectory
|
||||
---------------------------------------------------------------------
|
||||
Move the "vim73" subdirectory into the subdirectory where you want Vim
|
||||
Move the "vim74" subdirectory into the subdirectory where you want Vim
|
||||
to be installed. Typically, this subdirectory will be named "vim".
|
||||
If you already have a "vim73" subdirectory in "vim", delete it first
|
||||
If you already have a "vim74" subdirectory in "vim", delete it first
|
||||
by running its uninstal.exe program.
|
||||
|
||||
D. Install Vim
|
||||
---------------
|
||||
"cd" to your Vim installation subdirectory "vim\vim73" and run the
|
||||
"cd" to your Vim installation subdirectory "vim\vim74" and run the
|
||||
"install.exe" program. It will ask you a number of questions about
|
||||
how you would like to have your Vim setup. Among these are:
|
||||
- You can tell it to write a "_vimrc" file with your preferences in the
|
||||
|
||||
@@ -1060,6 +1060,9 @@ clean:
|
||||
cd xxd
|
||||
$(MAKE) /NOLOGO -f Make_mvc.mak clean
|
||||
cd ..
|
||||
cd tee
|
||||
$(MAKE) /NOLOGO -f Make_mvc.mak clean
|
||||
cd ..
|
||||
cd GvimExt
|
||||
$(MAKE) /NOLOGO -f Makefile clean
|
||||
cd ..
|
||||
|
||||
@@ -2797,6 +2797,8 @@ buflist_list(eap)
|
||||
(buf->b_flags & BF_READERR) ? 'x'
|
||||
: (bufIsChanged(buf) ? '+' : ' '),
|
||||
NameBuff);
|
||||
if (len > IOSIZE - 20)
|
||||
len = IOSIZE - 20;
|
||||
|
||||
/* put "line 999" in column 40 or after the file name */
|
||||
i = 40 - vim_strsize(IObuff);
|
||||
|
||||
+4
-1
@@ -6933,6 +6933,7 @@ parse_addr_type_arg(value, vallen, argt, addr_type_arg)
|
||||
int *addr_type_arg;
|
||||
{
|
||||
int i, a, b;
|
||||
|
||||
for (i = 0; addr_type_complete[i].expand != -1; ++i)
|
||||
{
|
||||
a = (int)STRLEN(addr_type_complete[i].name) == vallen;
|
||||
@@ -6947,7 +6948,9 @@ parse_addr_type_arg(value, vallen, argt, addr_type_arg)
|
||||
if (addr_type_complete[i].expand == -1)
|
||||
{
|
||||
char_u *err = value;
|
||||
for (i=0; err[i] == NUL || !vim_iswhite(err[i]); i++);
|
||||
|
||||
for (i = 0; err[i] != NUL && !vim_iswhite(err[i]); i++)
|
||||
;
|
||||
err[i] = NUL;
|
||||
EMSG2(_("E180: Invalid address type value: %s"), err);
|
||||
return FAIL;
|
||||
|
||||
+1
-1
@@ -686,7 +686,7 @@ DWriteContext::DrawText(HDC hdc, const WCHAR* text, int len,
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
DWRITE_TEXT_RANGE textRange = { 0, len };
|
||||
DWRITE_TEXT_RANGE textRange = { 0, (UINT32)len };
|
||||
textLayout->SetFontWeight(mFontWeight, textRange);
|
||||
textLayout->SetFontStyle(mFontStyle, textRange);
|
||||
}
|
||||
|
||||
+5
-3
@@ -1769,9 +1769,11 @@ gui_mch_init(void)
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
# ifndef HandleToLong
|
||||
/* HandleToLong() only exists in compilers that can do 64 bit builds */
|
||||
# define HandleToLong(h) ((long)(h))
|
||||
# if !defined(_MSC_VER) || (_MSC_VER < 1400)
|
||||
/* Define HandleToLong for old MS and non-MS compilers if not defined. */
|
||||
# ifndef HandleToLong
|
||||
# define HandleToLong(h) ((long)(h))
|
||||
# endif
|
||||
# endif
|
||||
/* set the v:windowid variable */
|
||||
set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
|
||||
|
||||
@@ -2052,9 +2052,11 @@ tcldelallrefs(ref)
|
||||
int err;
|
||||
char *result;
|
||||
|
||||
#ifdef DYNAMIC_TCL
|
||||
/* TODO: this code currently crashes Vim on exit */
|
||||
if (exiting)
|
||||
return;
|
||||
#endif
|
||||
|
||||
while (ref != NULL)
|
||||
{
|
||||
|
||||
+28
-59
@@ -40,7 +40,6 @@ static void find_start_of_word __ARGS((pos_T *));
|
||||
static void find_end_of_word __ARGS((pos_T *));
|
||||
static int get_mouse_class __ARGS((char_u *p));
|
||||
#endif
|
||||
static void prep_redo_visual __ARGS((cmdarg_T *cap));
|
||||
static void prep_redo_cmd __ARGS((cmdarg_T *cap));
|
||||
static void prep_redo __ARGS((int regname, long, int, int, int, int, int));
|
||||
static int checkclearop __ARGS((oparg_T *oap));
|
||||
@@ -1392,6 +1391,7 @@ do_pending_operator(cap, old_col, gui_yank)
|
||||
static linenr_T redo_VIsual_line_count; /* number of lines */
|
||||
static colnr_T redo_VIsual_vcol; /* number of cols or end column */
|
||||
static long redo_VIsual_count; /* count for Visual operator */
|
||||
static int redo_VIsual_arg; /* extra argument */
|
||||
#ifdef FEAT_VIRTUALEDIT
|
||||
int include_line_break = FALSE;
|
||||
#endif
|
||||
@@ -1699,6 +1699,7 @@ do_pending_operator(cap, old_col, gui_yank)
|
||||
redo_VIsual_vcol = resel_VIsual_vcol;
|
||||
redo_VIsual_line_count = resel_VIsual_line_count;
|
||||
redo_VIsual_count = cap->count0;
|
||||
redo_VIsual_arg = cap->arg;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2108,6 +2109,24 @@ do_pending_operator(cap, old_col, gui_yank)
|
||||
oap->op_type == OP_FOLDDELREC, oap->is_VIsual);
|
||||
break;
|
||||
#endif
|
||||
case OP_NR_ADD:
|
||||
case OP_NR_SUB:
|
||||
if (empty_region_error)
|
||||
{
|
||||
vim_beep(BO_OPER);
|
||||
CancelRedo();
|
||||
}
|
||||
else
|
||||
{
|
||||
VIsual_active = TRUE;
|
||||
#ifdef FEAT_LINEBREAK
|
||||
curwin->w_p_lbr = lbr_saved;
|
||||
#endif
|
||||
op_addsub(oap, cap->count1, redo_VIsual_arg);
|
||||
VIsual_active = FALSE;
|
||||
}
|
||||
check_cursor_col();
|
||||
break;
|
||||
default:
|
||||
clearopbeep(oap);
|
||||
}
|
||||
@@ -3604,43 +3623,6 @@ find_ident_at_pos(wp, lnum, startcol, string, find_type)
|
||||
return col;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add commands to reselect Visual mode into the redo buffer.
|
||||
*/
|
||||
static void
|
||||
prep_redo_visual(cap)
|
||||
cmdarg_T *cap;
|
||||
{
|
||||
ResetRedobuff();
|
||||
AppendCharToRedobuff(VIsual_mode);
|
||||
if (VIsual_mode == 'V' && curbuf->b_visual.vi_end.lnum
|
||||
!= curbuf->b_visual.vi_start.lnum)
|
||||
{
|
||||
AppendNumberToRedobuff(curbuf->b_visual.vi_end.lnum
|
||||
- curbuf->b_visual.vi_start.lnum);
|
||||
AppendCharToRedobuff('j');
|
||||
}
|
||||
else if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V)
|
||||
{
|
||||
/* block visual mode or char visual mmode*/
|
||||
if (curbuf->b_visual.vi_end.lnum != curbuf->b_visual.vi_start.lnum)
|
||||
{
|
||||
AppendNumberToRedobuff(curbuf->b_visual.vi_end.lnum -
|
||||
curbuf->b_visual.vi_start.lnum);
|
||||
AppendCharToRedobuff('j');
|
||||
}
|
||||
if (curbuf->b_visual.vi_curswant == MAXCOL)
|
||||
AppendCharToRedobuff('$');
|
||||
else if (curbuf->b_visual.vi_end.col > curbuf->b_visual.vi_start.col)
|
||||
{
|
||||
AppendNumberToRedobuff(curbuf->b_visual.vi_end.col
|
||||
- curbuf->b_visual.vi_start.col - 1);
|
||||
AppendCharToRedobuff(' ');
|
||||
}
|
||||
}
|
||||
AppendNumberToRedobuff(cap->count1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Prepare for redo of a normal command.
|
||||
*/
|
||||
@@ -4248,30 +4230,16 @@ nv_help(cap)
|
||||
nv_addsub(cap)
|
||||
cmdarg_T *cap;
|
||||
{
|
||||
int visual = VIsual_active;
|
||||
|
||||
if (cap->oap->op_type == OP_NOP
|
||||
&& do_addsub((int)cap->cmdchar, cap->count1, cap->arg) == OK)
|
||||
if (!VIsual_active && cap->oap->op_type == OP_NOP)
|
||||
{
|
||||
if (visual)
|
||||
{
|
||||
prep_redo_visual(cap);
|
||||
if (cap->arg)
|
||||
AppendCharToRedobuff('g');
|
||||
AppendCharToRedobuff(cap->cmdchar);
|
||||
}
|
||||
else
|
||||
prep_redo_cmd(cap);
|
||||
cap->oap->op_type = cap->cmdchar == Ctrl_A ? OP_NR_ADD : OP_NR_SUB;
|
||||
op_addsub(cap->oap, cap->count1, cap->arg);
|
||||
cap->oap->op_type = OP_NOP;
|
||||
}
|
||||
else if (VIsual_active)
|
||||
nv_operator(cap);
|
||||
else
|
||||
clearopbeep(cap->oap);
|
||||
if (visual)
|
||||
{
|
||||
VIsual_active = FALSE;
|
||||
redo_VIsual_busy = FALSE;
|
||||
may_clear_cmdline();
|
||||
redraw_later(INVERTED);
|
||||
}
|
||||
clearop(cap->oap);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -7958,6 +7926,7 @@ nv_g_cmd(cap)
|
||||
{
|
||||
cap->arg = TRUE;
|
||||
cap->cmdchar = cap->nchar;
|
||||
cap->nchar = NUL;
|
||||
nv_addsub(cap);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -112,6 +112,7 @@ static void dis_msg __ARGS((char_u *p, int skip_esc));
|
||||
static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
|
||||
#endif
|
||||
static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
|
||||
static int do_addsub __ARGS((int op_type, pos_T *pos, int length, linenr_T Prenum1));
|
||||
#if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL)
|
||||
static void str_to_reg __ARGS((struct yankreg *y_ptr, int yank_type, char_u *str, long len, long blocklen, int str_list));
|
||||
#endif
|
||||
@@ -158,6 +159,8 @@ static char opchars[][3] =
|
||||
{'z', 'D', TRUE}, /* OP_FOLDDELREC */
|
||||
{'g', 'w', TRUE}, /* OP_FORMAT2 */
|
||||
{'g', '@', FALSE}, /* OP_FUNCTION */
|
||||
{Ctrl_A, NUL, FALSE}, /* OP_NR_ADD */
|
||||
{Ctrl_X, NUL, FALSE}, /* OP_NR_SUB */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -175,6 +178,10 @@ get_op_type(char1, char2)
|
||||
return OP_REPLACE;
|
||||
if (char1 == '~') /* when tilde is an operator */
|
||||
return OP_TILDE;
|
||||
if (char1 == 'g' && char2 == Ctrl_A) /* add */
|
||||
return OP_NR_ADD;
|
||||
if (char1 == 'g' && char2 == Ctrl_X) /* subtract */
|
||||
return OP_NR_SUB;
|
||||
for (i = 0; ; ++i)
|
||||
if (opchars[i][0] == char1 && opchars[i][1] == char2)
|
||||
break;
|
||||
@@ -5339,42 +5346,132 @@ block_prep(oap, bdp, lnum, is_del)
|
||||
bdp->textstart = pstart;
|
||||
}
|
||||
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
static void reverse_line __ARGS((char_u *s));
|
||||
|
||||
static void
|
||||
reverse_line(s)
|
||||
char_u *s;
|
||||
/*
|
||||
* Handle the add/subtract operator.
|
||||
*/
|
||||
void
|
||||
op_addsub(oap, Prenum1, g_cmd)
|
||||
oparg_T *oap;
|
||||
linenr_T Prenum1; /* Amount of add/subtract */
|
||||
int g_cmd; /* was g<c-a>/g<c-x> */
|
||||
{
|
||||
int i, j;
|
||||
char_u c;
|
||||
pos_T pos;
|
||||
struct block_def bd;
|
||||
int change_cnt = 0;
|
||||
linenr_T amount = Prenum1;
|
||||
|
||||
if ((i = (int)STRLEN(s) - 1) <= 0)
|
||||
return;
|
||||
|
||||
curwin->w_cursor.col = i - curwin->w_cursor.col;
|
||||
for (j = 0; j < i; j++, i--)
|
||||
if (!VIsual_active)
|
||||
{
|
||||
c = s[i]; s[i] = s[j]; s[j] = c;
|
||||
pos = curwin->w_cursor;
|
||||
if (u_save_cursor() == FAIL)
|
||||
return;
|
||||
change_cnt = do_addsub(oap->op_type, &pos, 0, amount);
|
||||
if (change_cnt)
|
||||
changed_lines(pos.lnum, 0, pos.lnum + 1, 0L);
|
||||
}
|
||||
else
|
||||
{
|
||||
int one_change;
|
||||
int length;
|
||||
pos_T startpos;
|
||||
|
||||
if (u_save((linenr_T)(oap->start.lnum - 1),
|
||||
(linenr_T)(oap->end.lnum + 1)) == FAIL)
|
||||
return;
|
||||
|
||||
pos = oap->start;
|
||||
for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
|
||||
{
|
||||
if (oap->block_mode) /* Visual block mode */
|
||||
{
|
||||
block_prep(oap, &bd, pos.lnum, FALSE);
|
||||
pos.col = bd.textcol;
|
||||
length = bd.textlen;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (oap->motion_type == MLINE)
|
||||
{
|
||||
curwin->w_cursor.col = 0;
|
||||
pos.col = 0;
|
||||
length = (colnr_T)STRLEN(ml_get(pos.lnum));
|
||||
}
|
||||
else if (oap->motion_type == MCHAR)
|
||||
{
|
||||
if (!oap->inclusive)
|
||||
dec(&(oap->end));
|
||||
length = (colnr_T)STRLEN(ml_get(pos.lnum));
|
||||
pos.col = 0;
|
||||
if (pos.lnum == oap->start.lnum)
|
||||
{
|
||||
pos.col += oap->start.col;
|
||||
length -= oap->start.col;
|
||||
}
|
||||
if (pos.lnum == oap->end.lnum)
|
||||
{
|
||||
length = (int)STRLEN(ml_get(oap->end.lnum));
|
||||
if (oap->end.col >= length)
|
||||
oap->end.col = length - 1;
|
||||
length = oap->end.col - pos.col + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
one_change = do_addsub(oap->op_type, &pos, length, amount);
|
||||
if (one_change)
|
||||
{
|
||||
/* Remember the start position of the first change. */
|
||||
if (change_cnt == 0)
|
||||
startpos = curbuf->b_op_start;
|
||||
++change_cnt;
|
||||
}
|
||||
|
||||
#ifdef FEAT_NETBEANS_INTG
|
||||
if (netbeans_active() && one_change)
|
||||
{
|
||||
char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
|
||||
|
||||
netbeans_removed(curbuf, pos.lnum, pos.col, (long)length);
|
||||
netbeans_inserted(curbuf, pos.lnum, pos.col,
|
||||
&ptr[pos.col], length);
|
||||
}
|
||||
#endif
|
||||
if (g_cmd && one_change)
|
||||
amount += Prenum1;
|
||||
}
|
||||
if (change_cnt)
|
||||
changed_lines(oap->start.lnum, 0, oap->end.lnum + 1, 0L);
|
||||
|
||||
if (!change_cnt && oap->is_VIsual)
|
||||
/* No change: need to remove the Visual selection */
|
||||
redraw_curbuf_later(INVERTED);
|
||||
|
||||
/* Set '[ mark if something changed. Keep the last end
|
||||
* position from do_addsub(). */
|
||||
if (change_cnt > 0)
|
||||
curbuf->b_op_start = startpos;
|
||||
|
||||
if (change_cnt > p_report)
|
||||
{
|
||||
if (change_cnt == 1)
|
||||
MSG(_("1 line changed"));
|
||||
else
|
||||
smsg((char_u *)_("%ld lines changed"), change_cnt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# define RLADDSUBFIX(ptr) if (curwin->w_p_rl) reverse_line(ptr);
|
||||
#else
|
||||
# define RLADDSUBFIX(ptr)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* add or subtract 'Prenum1' from a number in a line
|
||||
* 'command' is CTRL-A for add, CTRL-X for subtract
|
||||
* Add or subtract 'Prenum1' from a number in a line
|
||||
* op_type is OP_NR_ADD or OP_NR_SUB
|
||||
*
|
||||
* return FAIL for failure, OK otherwise
|
||||
* Returns TRUE if some character was changed.
|
||||
*/
|
||||
int
|
||||
do_addsub(command, Prenum1, g_cmd)
|
||||
int command;
|
||||
static int
|
||||
do_addsub(op_type, pos, length, Prenum1)
|
||||
int op_type;
|
||||
pos_T *pos;
|
||||
int length;
|
||||
linenr_T Prenum1;
|
||||
int g_cmd; /* was g<c-a>/g<c-x> */
|
||||
{
|
||||
int col;
|
||||
char_u *buf1;
|
||||
@@ -5382,11 +5479,9 @@ do_addsub(command, Prenum1, g_cmd)
|
||||
int pre; /* 'X'/'x': hex; '0': octal; 'B'/'b': bin */
|
||||
static int hexupper = FALSE; /* 0xABC */
|
||||
unsigned long n;
|
||||
unsigned long offset = 0; /* line offset for Ctrl_V mode */
|
||||
long_u oldn;
|
||||
char_u *ptr;
|
||||
int c;
|
||||
int length = 0; /* character length of the number */
|
||||
int todel;
|
||||
int dohex;
|
||||
int dooct;
|
||||
@@ -5397,68 +5492,29 @@ do_addsub(command, Prenum1, g_cmd)
|
||||
int negative = FALSE;
|
||||
int was_positive = TRUE;
|
||||
int visual = VIsual_active;
|
||||
int i;
|
||||
int lnum = curwin->w_cursor.lnum;
|
||||
int lnume = curwin->w_cursor.lnum;
|
||||
int startcol = 0;
|
||||
int did_change = FALSE;
|
||||
pos_T t = curwin->w_cursor;
|
||||
int maxlen = 0;
|
||||
int pos = 0;
|
||||
int bit = 0;
|
||||
int bits = sizeof(unsigned long) * 8;
|
||||
pos_T startpos;
|
||||
pos_T endpos;
|
||||
|
||||
dohex = (vim_strchr(curbuf->b_p_nf, 'x') != NULL); /* "heX" */
|
||||
dooct = (vim_strchr(curbuf->b_p_nf, 'o') != NULL); /* "Octal" */
|
||||
dobin = (vim_strchr(curbuf->b_p_nf, 'b') != NULL); /* "Bin" */
|
||||
doalp = (vim_strchr(curbuf->b_p_nf, 'p') != NULL); /* "alPha" */
|
||||
|
||||
curwin->w_cursor = *pos;
|
||||
ptr = ml_get(pos->lnum);
|
||||
col = pos->col;
|
||||
|
||||
if (*ptr == NUL)
|
||||
goto theend;
|
||||
|
||||
/*
|
||||
* First check if we are on a hexadecimal number, after the "0x".
|
||||
*/
|
||||
col = curwin->w_cursor.col;
|
||||
if (VIsual_active)
|
||||
if (!VIsual_active)
|
||||
{
|
||||
if (lt(curwin->w_cursor, VIsual))
|
||||
{
|
||||
curwin->w_cursor = VIsual;
|
||||
VIsual = t;
|
||||
}
|
||||
|
||||
ptr = ml_get(VIsual.lnum);
|
||||
RLADDSUBFIX(ptr);
|
||||
if (VIsual_mode == 'V')
|
||||
{
|
||||
VIsual.col = 0;
|
||||
curwin->w_cursor.col = (colnr_T)STRLEN(ptr);
|
||||
}
|
||||
else if (VIsual_mode == Ctrl_V && VIsual.col > curwin->w_cursor.col)
|
||||
{
|
||||
t = VIsual;
|
||||
VIsual.col = curwin->w_cursor.col;
|
||||
curwin->w_cursor.col = t.col;
|
||||
}
|
||||
|
||||
/* store visual area for 'gv' */
|
||||
curbuf->b_visual.vi_start = VIsual;
|
||||
curbuf->b_visual.vi_end = curwin->w_cursor;
|
||||
curbuf->b_visual.vi_mode = VIsual_mode;
|
||||
curbuf->b_visual.vi_curswant = curwin->w_curswant;
|
||||
|
||||
if (VIsual_mode != 'v')
|
||||
startcol = VIsual.col < curwin->w_cursor.col ? VIsual.col
|
||||
: curwin->w_cursor.col;
|
||||
else
|
||||
startcol = VIsual.col;
|
||||
col = startcol;
|
||||
lnum = VIsual.lnum;
|
||||
lnume = curwin->w_cursor.lnum;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr = ml_get_curline();
|
||||
RLADDSUBFIX(ptr);
|
||||
|
||||
if (dobin)
|
||||
while (col > 0 && vim_isbdigit(ptr[col]))
|
||||
--col;
|
||||
@@ -5478,7 +5534,7 @@ do_addsub(command, Prenum1, g_cmd)
|
||||
|
||||
/* In case of binary/hexadecimal pattern overlap match, rescan */
|
||||
|
||||
col = curwin->w_cursor.col;
|
||||
col = pos->col;
|
||||
|
||||
while (col > 0 && vim_isdigit(ptr[col]))
|
||||
col--;
|
||||
@@ -5505,7 +5561,7 @@ do_addsub(command, Prenum1, g_cmd)
|
||||
/*
|
||||
* Search forward and then backward to find the start of number.
|
||||
*/
|
||||
col = curwin->w_cursor.col;
|
||||
col = pos->col;
|
||||
|
||||
while (ptr[col] != NUL
|
||||
&& !vim_isdigit(ptr[col])
|
||||
@@ -5519,308 +5575,263 @@ do_addsub(command, Prenum1, g_cmd)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = lnum; i <= lnume; i++)
|
||||
{
|
||||
colnr_T stop = 0;
|
||||
|
||||
t = curwin->w_cursor;
|
||||
curwin->w_cursor.lnum = i;
|
||||
ptr = ml_get_curline();
|
||||
RLADDSUBFIX(ptr);
|
||||
if ((int)STRLEN(ptr) <= col)
|
||||
/* try again on next line */
|
||||
continue;
|
||||
if (visual)
|
||||
{
|
||||
if (VIsual_mode == 'v'
|
||||
&& i == lnume)
|
||||
stop = curwin->w_cursor.col;
|
||||
else if (VIsual_mode == Ctrl_V
|
||||
&& curbuf->b_visual.vi_curswant != MAXCOL)
|
||||
stop = curwin->w_cursor.col;
|
||||
|
||||
while (ptr[col] != NUL
|
||||
&& !vim_isdigit(ptr[col])
|
||||
&& !(doalp && ASCII_ISALPHA(ptr[col])))
|
||||
{
|
||||
if (col > 0 && col == stop)
|
||||
break;
|
||||
++col;
|
||||
}
|
||||
|
||||
if (col > startcol && ptr[col - 1] == '-')
|
||||
{
|
||||
negative = TRUE;
|
||||
was_positive = FALSE;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* If a number was found, and saving for undo works, replace the number.
|
||||
*/
|
||||
firstdigit = ptr[col];
|
||||
if ((!VIM_ISDIGIT(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit)))
|
||||
|| u_save_cursor() != OK)
|
||||
{
|
||||
if (lnum < lnume)
|
||||
{
|
||||
if (visual && VIsual_mode != Ctrl_V)
|
||||
col = 0;
|
||||
else
|
||||
col = startcol;
|
||||
/* Try again on next line */
|
||||
continue;
|
||||
}
|
||||
beep_flush();
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (doalp && ASCII_ISALPHA(firstdigit))
|
||||
{
|
||||
/* decrement or increment alphabetic character */
|
||||
if (command == Ctrl_X)
|
||||
{
|
||||
if (CharOrd(firstdigit) < Prenum1)
|
||||
{
|
||||
if (isupper(firstdigit))
|
||||
firstdigit = 'A';
|
||||
else
|
||||
firstdigit = 'a';
|
||||
}
|
||||
else
|
||||
#ifdef EBCDIC
|
||||
firstdigit = EBCDIC_CHAR_ADD(firstdigit, -Prenum1);
|
||||
#else
|
||||
firstdigit -= Prenum1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
if (26 - CharOrd(firstdigit) - 1 < Prenum1)
|
||||
{
|
||||
if (isupper(firstdigit))
|
||||
firstdigit = 'Z';
|
||||
else
|
||||
firstdigit = 'z';
|
||||
}
|
||||
else
|
||||
#ifdef EBCDIC
|
||||
firstdigit = EBCDIC_CHAR_ADD(firstdigit, Prenum1);
|
||||
#else
|
||||
firstdigit += Prenum1;
|
||||
#endif
|
||||
}
|
||||
curwin->w_cursor.col = col;
|
||||
did_change = TRUE;
|
||||
(void)del_char(FALSE);
|
||||
ins_char(firstdigit);
|
||||
curwin->w_cursor.col = col;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (col > 0 && ptr[col - 1] == '-' && !visual)
|
||||
{
|
||||
/* negative number */
|
||||
--col;
|
||||
negative = TRUE;
|
||||
}
|
||||
/* get the number value (unsigned) */
|
||||
if (visual && VIsual_mode != 'V')
|
||||
{
|
||||
if (VIsual_mode == 'v')
|
||||
{
|
||||
if (i == lnum)
|
||||
maxlen = (lnum == lnume
|
||||
? curwin->w_cursor.col - col + 1
|
||||
: (int)STRLEN(ptr) - col);
|
||||
else
|
||||
maxlen = (i == lnume ? curwin->w_cursor.col - col + 1
|
||||
: (int)STRLEN(ptr) - col);
|
||||
}
|
||||
else if (VIsual_mode == Ctrl_V)
|
||||
maxlen = (curbuf->b_visual.vi_curswant == MAXCOL
|
||||
? (int)STRLEN(ptr) - col
|
||||
: curwin->w_cursor.col - col + 1);
|
||||
}
|
||||
|
||||
vim_str2nr(ptr + col, &pre, &length,
|
||||
0 + (dobin ? STR2NR_BIN : 0)
|
||||
+ (dooct ? STR2NR_OCT : 0)
|
||||
+ (dohex ? STR2NR_HEX : 0),
|
||||
NULL, &n, maxlen);
|
||||
|
||||
/* ignore leading '-' for hex and octal and bin numbers */
|
||||
if (pre && negative)
|
||||
{
|
||||
++col;
|
||||
--length;
|
||||
negative = FALSE;
|
||||
}
|
||||
|
||||
/* add or subtract */
|
||||
subtract = FALSE;
|
||||
if (command == Ctrl_X)
|
||||
subtract ^= TRUE;
|
||||
if (negative)
|
||||
subtract ^= TRUE;
|
||||
|
||||
oldn = n;
|
||||
if (subtract)
|
||||
n -= (unsigned long)Prenum1;
|
||||
else
|
||||
n += (unsigned long)Prenum1;
|
||||
|
||||
/* handle wraparound for decimal numbers */
|
||||
if (!pre)
|
||||
{
|
||||
if (subtract)
|
||||
{
|
||||
if (n > oldn)
|
||||
{
|
||||
n = 1 + (n ^ (unsigned long)-1);
|
||||
negative ^= TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* add */
|
||||
if (n < oldn)
|
||||
{
|
||||
n = (n ^ (unsigned long)-1);
|
||||
negative ^= TRUE;
|
||||
}
|
||||
}
|
||||
if (n == 0)
|
||||
negative = FALSE;
|
||||
}
|
||||
|
||||
if (visual && !was_positive && !negative && col > 0)
|
||||
{
|
||||
/* need to remove the '-' */
|
||||
col--;
|
||||
length++;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Delete the old number.
|
||||
*/
|
||||
curwin->w_cursor.col = col;
|
||||
did_change = TRUE;
|
||||
todel = length;
|
||||
c = gchar_cursor();
|
||||
|
||||
/*
|
||||
* Don't include the '-' in the length, only the length of the
|
||||
* part after it is kept the same.
|
||||
*/
|
||||
if (c == '-')
|
||||
--length;
|
||||
while (todel-- > 0)
|
||||
{
|
||||
if (c < 0x100 && isalpha(c))
|
||||
{
|
||||
if (isupper(c))
|
||||
hexupper = TRUE;
|
||||
else
|
||||
hexupper = FALSE;
|
||||
}
|
||||
/* del_char() will mark line needing displaying */
|
||||
(void)del_char(FALSE);
|
||||
c = gchar_cursor();
|
||||
}
|
||||
|
||||
/*
|
||||
* Prepare the leading characters in buf1[].
|
||||
* When there are many leading zeros it could be very long.
|
||||
* Allocate a bit too much.
|
||||
*/
|
||||
buf1 = alloc((unsigned)length + NUMBUFLEN);
|
||||
if (buf1 == NULL)
|
||||
return FAIL;
|
||||
ptr = buf1;
|
||||
if (negative && (!visual || (visual && was_positive)))
|
||||
{
|
||||
*ptr++ = '-';
|
||||
}
|
||||
if (pre)
|
||||
{
|
||||
*ptr++ = '0';
|
||||
--length;
|
||||
}
|
||||
if (pre == 'b' || pre == 'B' ||
|
||||
pre == 'x' || pre == 'X')
|
||||
{
|
||||
*ptr++ = pre;
|
||||
--length;
|
||||
}
|
||||
|
||||
/*
|
||||
* Put the number characters in buf2[].
|
||||
*/
|
||||
if (pre == 'b' || pre == 'B')
|
||||
{
|
||||
/* leading zeros */
|
||||
for (bit = bits; bit > 0; bit--)
|
||||
if ((n >> (bit - 1)) & 0x1) break;
|
||||
|
||||
for (pos = 0; bit > 0; bit--)
|
||||
buf2[pos++] = ((n >> (bit - 1)) & 0x1) ? '1' : '0';
|
||||
|
||||
buf2[pos] = '\0';
|
||||
}
|
||||
else if (pre == 0)
|
||||
sprintf((char *)buf2, "%lu", n);
|
||||
else if (pre == '0')
|
||||
sprintf((char *)buf2, "%lo", n);
|
||||
else if (pre && hexupper)
|
||||
sprintf((char *)buf2, "%lX", n);
|
||||
else
|
||||
sprintf((char *)buf2, "%lx", n);
|
||||
length -= (int)STRLEN(buf2);
|
||||
|
||||
/*
|
||||
* Adjust number of zeros to the new number of digits, so the
|
||||
* total length of the number remains the same.
|
||||
* Don't do this when
|
||||
* the result may look like an octal number.
|
||||
*/
|
||||
if (firstdigit == '0' && !(dooct && pre == 0))
|
||||
while (length-- > 0)
|
||||
*ptr++ = '0';
|
||||
*ptr = NUL;
|
||||
STRCAT(buf1, buf2);
|
||||
ins_str(buf1); /* insert the new number */
|
||||
vim_free(buf1);
|
||||
if (lnum < lnume)
|
||||
curwin->w_cursor.col = t.col;
|
||||
else if (did_change && curwin->w_cursor.col)
|
||||
--curwin->w_cursor.col;
|
||||
}
|
||||
|
||||
if (g_cmd)
|
||||
{
|
||||
offset = (unsigned long)Prenum1;
|
||||
g_cmd = 0;
|
||||
}
|
||||
/* reset */
|
||||
subtract = FALSE;
|
||||
negative = FALSE;
|
||||
was_positive = TRUE;
|
||||
if (visual && VIsual_mode == Ctrl_V)
|
||||
col = startcol;
|
||||
else
|
||||
col = 0;
|
||||
Prenum1 += offset;
|
||||
curwin->w_set_curswant = TRUE;
|
||||
#ifdef FEAT_RIGHTLEFT
|
||||
ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
|
||||
RLADDSUBFIX(ptr);
|
||||
#endif
|
||||
}
|
||||
if (visual)
|
||||
/* cursor at the top of the selection */
|
||||
curwin->w_cursor = VIsual;
|
||||
return OK;
|
||||
{
|
||||
while (ptr[col] != NUL && length > 0
|
||||
&& !vim_isdigit(ptr[col])
|
||||
&& !(doalp && ASCII_ISALPHA(ptr[col])))
|
||||
{
|
||||
++col;
|
||||
--length;
|
||||
}
|
||||
|
||||
if (length == 0)
|
||||
goto theend;
|
||||
|
||||
if (col > pos->col && ptr[col - 1] == '-')
|
||||
{
|
||||
negative = TRUE;
|
||||
was_positive = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If a number was found, and saving for undo works, replace the number.
|
||||
*/
|
||||
firstdigit = ptr[col];
|
||||
if (!VIM_ISDIGIT(firstdigit) && !(doalp && ASCII_ISALPHA(firstdigit)))
|
||||
{
|
||||
beep_flush();
|
||||
goto theend;
|
||||
}
|
||||
|
||||
if (doalp && ASCII_ISALPHA(firstdigit))
|
||||
{
|
||||
/* decrement or increment alphabetic character */
|
||||
if (op_type == OP_NR_SUB)
|
||||
{
|
||||
if (CharOrd(firstdigit) < Prenum1)
|
||||
{
|
||||
if (isupper(firstdigit))
|
||||
firstdigit = 'A';
|
||||
else
|
||||
firstdigit = 'a';
|
||||
}
|
||||
else
|
||||
#ifdef EBCDIC
|
||||
firstdigit = EBCDIC_CHAR_ADD(firstdigit, -Prenum1);
|
||||
#else
|
||||
firstdigit -= Prenum1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
if (26 - CharOrd(firstdigit) - 1 < Prenum1)
|
||||
{
|
||||
if (isupper(firstdigit))
|
||||
firstdigit = 'Z';
|
||||
else
|
||||
firstdigit = 'z';
|
||||
}
|
||||
else
|
||||
#ifdef EBCDIC
|
||||
firstdigit = EBCDIC_CHAR_ADD(firstdigit, Prenum1);
|
||||
#else
|
||||
firstdigit += Prenum1;
|
||||
#endif
|
||||
}
|
||||
curwin->w_cursor.col = col;
|
||||
if (!did_change)
|
||||
startpos = curwin->w_cursor;
|
||||
did_change = TRUE;
|
||||
(void)del_char(FALSE);
|
||||
ins_char(firstdigit);
|
||||
endpos = curwin->w_cursor;
|
||||
curwin->w_cursor.col = col;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (col > 0 && ptr[col - 1] == '-' && !visual)
|
||||
{
|
||||
/* negative number */
|
||||
--col;
|
||||
negative = TRUE;
|
||||
}
|
||||
/* get the number value (unsigned) */
|
||||
if (visual && VIsual_mode != 'V')
|
||||
maxlen = (curbuf->b_visual.vi_curswant == MAXCOL
|
||||
? (int)STRLEN(ptr) - col
|
||||
: length);
|
||||
|
||||
vim_str2nr(ptr + col, &pre, &length,
|
||||
0 + (dobin ? STR2NR_BIN : 0)
|
||||
+ (dooct ? STR2NR_OCT : 0)
|
||||
+ (dohex ? STR2NR_HEX : 0),
|
||||
NULL, &n, maxlen);
|
||||
|
||||
/* ignore leading '-' for hex and octal and bin numbers */
|
||||
if (pre && negative)
|
||||
{
|
||||
++col;
|
||||
--length;
|
||||
negative = FALSE;
|
||||
}
|
||||
/* add or subtract */
|
||||
subtract = FALSE;
|
||||
if (op_type == OP_NR_SUB)
|
||||
subtract ^= TRUE;
|
||||
if (negative)
|
||||
subtract ^= TRUE;
|
||||
|
||||
oldn = n;
|
||||
if (subtract)
|
||||
n -= (unsigned long)Prenum1;
|
||||
else
|
||||
n += (unsigned long)Prenum1;
|
||||
/* handle wraparound for decimal numbers */
|
||||
if (!pre)
|
||||
{
|
||||
if (subtract)
|
||||
{
|
||||
if (n > oldn)
|
||||
{
|
||||
n = 1 + (n ^ (unsigned long)-1);
|
||||
negative ^= TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* add */
|
||||
if (n < oldn)
|
||||
{
|
||||
n = (n ^ (unsigned long)-1);
|
||||
negative ^= TRUE;
|
||||
}
|
||||
}
|
||||
if (n == 0)
|
||||
negative = FALSE;
|
||||
}
|
||||
|
||||
if (visual && !was_positive && !negative && col > 0)
|
||||
{
|
||||
/* need to remove the '-' */
|
||||
col--;
|
||||
length++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete the old number.
|
||||
*/
|
||||
curwin->w_cursor.col = col;
|
||||
if (!did_change)
|
||||
startpos = curwin->w_cursor;
|
||||
did_change = TRUE;
|
||||
todel = length;
|
||||
c = gchar_cursor();
|
||||
/*
|
||||
* Don't include the '-' in the length, only the length of the
|
||||
* part after it is kept the same.
|
||||
*/
|
||||
if (c == '-')
|
||||
--length;
|
||||
while (todel-- > 0)
|
||||
{
|
||||
if (c < 0x100 && isalpha(c))
|
||||
{
|
||||
if (isupper(c))
|
||||
hexupper = TRUE;
|
||||
else
|
||||
hexupper = FALSE;
|
||||
}
|
||||
/* del_char() will mark line needing displaying */
|
||||
(void)del_char(FALSE);
|
||||
c = gchar_cursor();
|
||||
}
|
||||
|
||||
/*
|
||||
* Prepare the leading characters in buf1[].
|
||||
* When there are many leading zeros it could be very long.
|
||||
* Allocate a bit too much.
|
||||
*/
|
||||
buf1 = alloc((unsigned)length + NUMBUFLEN);
|
||||
if (buf1 == NULL)
|
||||
goto theend;
|
||||
ptr = buf1;
|
||||
if (negative && (!visual || (visual && was_positive)))
|
||||
{
|
||||
*ptr++ = '-';
|
||||
}
|
||||
if (pre)
|
||||
{
|
||||
*ptr++ = '0';
|
||||
--length;
|
||||
}
|
||||
if (pre == 'b' || pre == 'B' ||
|
||||
pre == 'x' || pre == 'X')
|
||||
{
|
||||
*ptr++ = pre;
|
||||
--length;
|
||||
}
|
||||
|
||||
/*
|
||||
* Put the number characters in buf2[].
|
||||
*/
|
||||
if (pre == 'b' || pre == 'B')
|
||||
{
|
||||
int i;
|
||||
int bit = 0;
|
||||
int bits = sizeof(unsigned long) * 8;
|
||||
|
||||
/* leading zeros */
|
||||
for (bit = bits; bit > 0; bit--)
|
||||
if ((n >> (bit - 1)) & 0x1) break;
|
||||
|
||||
for (i = 0; bit > 0; bit--)
|
||||
buf2[i++] = ((n >> (bit - 1)) & 0x1) ? '1' : '0';
|
||||
|
||||
buf2[i] = '\0';
|
||||
}
|
||||
else if (pre == 0)
|
||||
sprintf((char *)buf2, "%lu", n);
|
||||
else if (pre == '0')
|
||||
sprintf((char *)buf2, "%lo", n);
|
||||
else if (pre && hexupper)
|
||||
sprintf((char *)buf2, "%lX", n);
|
||||
else
|
||||
sprintf((char *)buf2, "%lx", n);
|
||||
length -= (int)STRLEN(buf2);
|
||||
|
||||
/*
|
||||
* Adjust number of zeros to the new number of digits, so the
|
||||
* total length of the number remains the same.
|
||||
* Don't do this when
|
||||
* the result may look like an octal number.
|
||||
*/
|
||||
if (firstdigit == '0' && !(dooct && pre == 0))
|
||||
while (length-- > 0)
|
||||
*ptr++ = '0';
|
||||
*ptr = NUL;
|
||||
STRCAT(buf1, buf2);
|
||||
ins_str(buf1); /* insert the new number */
|
||||
vim_free(buf1);
|
||||
endpos = curwin->w_cursor;
|
||||
if (did_change && curwin->w_cursor.col)
|
||||
--curwin->w_cursor.col;
|
||||
}
|
||||
|
||||
theend:
|
||||
if (visual)
|
||||
curwin->w_cursor = t;
|
||||
if (did_change)
|
||||
{
|
||||
/* set the '[ and '] marks */
|
||||
curbuf->b_op_start = startpos;
|
||||
curbuf->b_op_end = endpos;
|
||||
if (curbuf->b_op_end.col > 0)
|
||||
--curbuf->b_op_end.col;
|
||||
}
|
||||
|
||||
return did_change;
|
||||
}
|
||||
|
||||
#ifdef FEAT_VIMINFO
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ void op_formatexpr __ARGS((oparg_T *oap));
|
||||
int fex_format __ARGS((linenr_T lnum, long count, int c));
|
||||
void format_lines __ARGS((linenr_T line_count, int avoid_fex));
|
||||
int paragraph_start __ARGS((linenr_T lnum));
|
||||
int do_addsub __ARGS((int command, linenr_T Prenum1, int g_cmd));
|
||||
void op_addsub __ARGS((oparg_T *oap, linenr_T Prenum1, int g_cmd));
|
||||
int read_viminfo_register __ARGS((vir_T *virp, int force));
|
||||
void write_viminfo_registers __ARGS((FILE *fp));
|
||||
void x11_export_final_selection __ARGS((void));
|
||||
|
||||
+5
-5
@@ -250,9 +250,9 @@ qf_init_ext(qi, efile, buf, tv, errorformat, newlist, lnumfirst, lnumlast,
|
||||
{'s', ".\\+"}
|
||||
};
|
||||
|
||||
namebuf = alloc_id(CMDBUFFSIZE + 1, 3);
|
||||
errmsg = alloc_id(CMDBUFFSIZE + 1, 4);
|
||||
pattern = alloc_id(CMDBUFFSIZE + 1, 5);
|
||||
namebuf = alloc_id(CMDBUFFSIZE + 1, aid_qf_namebuf);
|
||||
errmsg = alloc_id(CMDBUFFSIZE + 1, aid_qf_errmsg);
|
||||
pattern = alloc_id(CMDBUFFSIZE + 1, aid_qf_pattern);
|
||||
if (namebuf == NULL || errmsg == NULL || pattern == NULL)
|
||||
goto qf_init_end;
|
||||
|
||||
@@ -3462,8 +3462,8 @@ ex_vimgrep(eap)
|
||||
goto theend;
|
||||
}
|
||||
|
||||
dirname_start = alloc_id(MAXPATHL, 1);
|
||||
dirname_now = alloc_id(MAXPATHL, 2);
|
||||
dirname_start = alloc_id(MAXPATHL, aid_qf_dirname_start);
|
||||
dirname_now = alloc_id(MAXPATHL, aid_qf_dirname_now);
|
||||
if (dirname_start == NULL || dirname_now == NULL)
|
||||
goto theend;
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ func Test_visual_increment_04()
|
||||
exec "norm! vf-\<C-A>"
|
||||
call assert_equal(["foobar-10"], getline(1, '$'))
|
||||
" NOTE: I think this is correct behavior...
|
||||
"call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" 5) g<Ctrl-A> on letter
|
||||
@@ -556,6 +556,149 @@ func Test_visual_increment_26()
|
||||
exec "norm! \<C-V>$\<C-A>"
|
||||
call assert_equal(["0b11111111111111111111111111111111"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
set nrformats-=alpha
|
||||
endfunc
|
||||
|
||||
" 27) increment with 'rightreft', if supported
|
||||
func Test_visual_increment_27()
|
||||
if exists('+rightleft')
|
||||
set rightleft
|
||||
call setline(1, ["1234 56"])
|
||||
|
||||
exec "norm! $\<C-A>"
|
||||
call assert_equal(["1234 57"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 7, 0], getpos('.'))
|
||||
|
||||
exec "norm! \<C-A>"
|
||||
call assert_equal(["1234 58"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 7, 0], getpos('.'))
|
||||
set norightleft
|
||||
endif
|
||||
endfunc
|
||||
|
||||
" Tab code and linewise-visual inc/dec
|
||||
func Test_visual_increment_28()
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! Vj\<C-A>"
|
||||
call assert_equal(["x\<TAB>11", "\<TAB>0"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! ggVj\<C-X>"
|
||||
call assert_equal(["x\<TAB>9", "\<TAB>-2"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code and linewise-visual inc/dec with 'nrformats'+=alpha
|
||||
func Test_visual_increment_29()
|
||||
set nrformats+=alpha
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! Vj\<C-A>"
|
||||
call assert_equal(["y\<TAB>10", "\<TAB>0"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! ggVj\<C-X>"
|
||||
call assert_equal(["w\<TAB>10", "\<TAB>-2"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code and character-visual inc/dec
|
||||
func Test_visual_increment_30()
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! f1vjf1\<C-A>"
|
||||
call assert_equal(["x\<TAB>11", "\<TAB>0"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 3, 0], getpos('.'))
|
||||
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! ggf1vjf1\<C-X>"
|
||||
call assert_equal(["x\<TAB>9", "\<TAB>-2"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 3, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code and blockwise-visual inc/dec
|
||||
func Test_visual_increment_31()
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! f1\<C-V>jl\<C-A>"
|
||||
call assert_equal(["x\<TAB>11", "\<TAB>0"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 3, 0], getpos('.'))
|
||||
|
||||
call setline(1, ["x\<TAB>10", "\<TAB>-1"])
|
||||
exec "norm! ggf1\<C-V>jl\<C-X>"
|
||||
call assert_equal(["x\<TAB>9", "\<TAB>-2"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 3, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code and blockwise-visual decrement with 'linebreak' and 'showbreak'
|
||||
func Test_visual_increment_32()
|
||||
28vnew dummy_31
|
||||
set linebreak showbreak=+
|
||||
call setline(1, ["x\<TAB>\<TAB>\<TAB>10", "\<TAB>\<TAB>\<TAB>\<TAB>-1"])
|
||||
exec "norm! ggf0\<C-V>jg_\<C-X>"
|
||||
call assert_equal(["x\<TAB>\<TAB>\<TAB>1-1", "\<TAB>\<TAB>\<TAB>\<TAB>-2"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 6, 0], getpos('.'))
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" Tab code and blockwise-visual increment with $
|
||||
func Test_visual_increment_33()
|
||||
call setline(1, ["\<TAB>123", "456"])
|
||||
exec "norm! gg0\<C-V>j$\<C-A>"
|
||||
call assert_equal(["\<TAB>124", "457"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code and blockwise-visual increment and redo
|
||||
func Test_visual_increment_34()
|
||||
call setline(1, ["\<TAB>123", " 456789"])
|
||||
exec "norm! gg0\<C-V>j\<C-A>"
|
||||
call assert_equal(["\<TAB>123", " 457789"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
|
||||
exec "norm! .."
|
||||
call assert_equal(["\<TAB>123", " 459789"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code, spaces and character-visual increment and redo
|
||||
func Test_visual_increment_35()
|
||||
call setline(1, ["\<TAB>123", " 123", "\<TAB>123", "\<TAB>123"])
|
||||
exec "norm! ggvjf3\<C-A>..."
|
||||
call assert_equal(["\<TAB>127", " 127", "\<TAB>123", "\<TAB>123"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 2, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" Tab code, spaces and blockwise-visual increment and redo
|
||||
func Test_visual_increment_36()
|
||||
call setline(1, [" 123", "\<TAB>456789"])
|
||||
exec "norm! G0\<C-V>kl\<C-A>"
|
||||
call assert_equal([" 123", "\<TAB>556789"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
|
||||
exec "norm! ..."
|
||||
call assert_equal([" 123", "\<TAB>856789"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 1, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" block-wise increment and dot-repeat
|
||||
" Text:
|
||||
" 1 23
|
||||
" 4 56
|
||||
"
|
||||
" Expected:
|
||||
" 1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with .
|
||||
" 1 26
|
||||
" 4 59
|
||||
"
|
||||
" Try with and without indent.
|
||||
func Test_visual_increment_37()
|
||||
call setline(1, [" 1 23", " 4 56"])
|
||||
exec "norm! ggf2\<C-V>jl\<C-A>.."
|
||||
call assert_equal([" 1 26", " 4 59"], getline(1, 2))
|
||||
|
||||
call setline(1, ["1 23", "4 56"])
|
||||
exec "norm! ggf2\<C-V>jl\<C-A>.."
|
||||
call assert_equal(["1 26", "4 59"], getline(1, 2))
|
||||
endfunc
|
||||
|
||||
" vim: tabstop=2 shiftwidth=2 expandtab
|
||||
|
||||
@@ -8,11 +8,27 @@ STARTTEST
|
||||
madduu
|
||||
:let a = string(getpos("'a"))
|
||||
:$put ='Mark after delete-undo-redo-undo: '.a
|
||||
:/^\t/,$wq! test.out
|
||||
:''
|
||||
ENDTEST
|
||||
|
||||
textline A
|
||||
textline B
|
||||
textline C
|
||||
|
||||
STARTTEST
|
||||
:" test that CTRL-A and CTRL-X updates last changed mark '[, '].
|
||||
:/^123/
|
||||
:execute "normal! \<C-A>`[v`]rAjwvjw\<C-X>`[v`]rX"
|
||||
ENDTEST
|
||||
|
||||
CTRL-A CTRL-X:
|
||||
123 123 123
|
||||
123 123 123
|
||||
123 123 123
|
||||
|
||||
STARTTEST
|
||||
:g/^STARTTEST/.,/^ENDTEST/d
|
||||
:wq! test.out
|
||||
ENDTEST
|
||||
|
||||
Results:
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
Tests for marks.
|
||||
|
||||
|
||||
textline A
|
||||
textline B
|
||||
textline C
|
||||
|
||||
|
||||
CTRL-A CTRL-X:
|
||||
AAA 123 123
|
||||
123 XXXXXXX
|
||||
XXX 123 123
|
||||
|
||||
|
||||
Results:
|
||||
Mark after delete-undo-redo-undo: [0, 15, 2, 0]
|
||||
|
||||
@@ -7,6 +7,12 @@ func Test_read_only()
|
||||
catch
|
||||
call assert_true(v:exception =~ ':E795:')
|
||||
endtry
|
||||
try
|
||||
" this caused a crash
|
||||
unlet errmsg
|
||||
catch
|
||||
call assert_true(v:exception =~ ':E795:')
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
func Test_existing()
|
||||
|
||||
@@ -756,6 +756,34 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1087,
|
||||
/**/
|
||||
1086,
|
||||
/**/
|
||||
1085,
|
||||
/**/
|
||||
1084,
|
||||
/**/
|
||||
1083,
|
||||
/**/
|
||||
1082,
|
||||
/**/
|
||||
1081,
|
||||
/**/
|
||||
1080,
|
||||
/**/
|
||||
1079,
|
||||
/**/
|
||||
1078,
|
||||
/**/
|
||||
1077,
|
||||
/**/
|
||||
1076,
|
||||
/**/
|
||||
1075,
|
||||
/**/
|
||||
1074,
|
||||
/**/
|
||||
1073,
|
||||
/**/
|
||||
|
||||
@@ -1460,6 +1460,10 @@ typedef UINT32_TYPEDEF UINT32_T;
|
||||
#define OP_FOLDDELREC 25 /* "zD" delete folds recursively */
|
||||
#define OP_FORMAT2 26 /* "gw" format operator, keeps cursor pos */
|
||||
#define OP_FUNCTION 27 /* "g@" call 'operatorfunc' */
|
||||
#define OP_NR_ADD 28 /* "<C-A>" Add to the number or alphabetic
|
||||
character (OP_ADD conflicts with Perl) */
|
||||
#define OP_NR_SUB 29 /* "<C-X>" Subtract from the number or
|
||||
alphabetic character */
|
||||
|
||||
/*
|
||||
* Motion types, used for operators and for yank/delete registers.
|
||||
|
||||
Reference in New Issue
Block a user