Merge remote-tracking branch 'vim/master'

This commit is contained in:
Kazuki Sakamoto
2016-04-21 21:27:31 -07:00
56 changed files with 1562 additions and 596 deletions
+243 -259
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 7.4. Last change: 2016 Mar 26
*autocmd.txt* For Vim version 7.4. Last change: 2016 Apr 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -539,6 +539,9 @@ CursorHold When the user doesn't press a key for the time
versions}
*CursorHoldI*
CursorHoldI Just like CursorHold, but in Insert mode.
Not triggered when waiting for another key,
e.g. after CTRL-V, and not when in CTRL-X mode
|insert_expand|.
*CursorMoved*
CursorMoved After the cursor was moved in Normal or Visual
+3 -3
View File
@@ -1,4 +1,4 @@
*change.txt* For Vim version 7.4. Last change: 2016 Mar 08
*change.txt* For Vim version 7.4. Last change: 2016 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -852,7 +852,7 @@ Examples: >
:s/abcde/abc^Mde/ modifies "abcde" to "abc", "de" (two lines)
:s/$/\^M/ modifies "abcde" to "abcde^M"
:s/\w\+/\u\0/g modifies "bla bla" to "Bla Bla"
:s/\w\+/\L\u/g modifies "BLA bla" to "Bla Bla"
:s/\w\+/\L\u\0/g modifies "BLA bla" to "Bla Bla"
Note: "\L\u" can be used to capitalize the first letter of a word. This is
not compatible with Vi and older versions of Vim, where the "\u" would cancel
@@ -1205,7 +1205,7 @@ name '"'. This means you have to type two double quotes. Writing to the ""
register writes to register "0.
{Vi: register contents are lost when changing files, no '"'}
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
*quote2* *quote3* *quote4* *quote9*
Vim fills these registers with text from yank and delete commands.
Numbered register 0 contains the text from the most recent yank command,
+2 -2
View File
@@ -200,10 +200,10 @@ Note that a channel is closed in three stages:
When the channel can't be opened you will get an error message. There is a
difference between MS-Windows and Unix: On Unix when the port doesn't exist
ch_open() fails quickly. On MS-Windows "waittime" applies.
*E898* *E899* *E900* *E901* *E902*
*E898* *E901* *E902*
If there is an error reading or writing a channel it will be closed.
*E896* *E630* *E631*
*E630* *E631*
==============================================================================
4. Using a JSON or JS channel *channel-use*
+1 -1
View File
@@ -1221,7 +1221,7 @@ Examples: >
If you want to always use ":confirm", set the 'confirm' option.
*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
*:browse* *:bro* *E338* *E614* *E615* *E616*
:bro[wse] {command} Open a file selection dialog for an argument to
{command}. At present this works for |:e|, |:w|,
|:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|,
+40 -20
View File
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.4. Last change: 2016 Apr 14
*eval.txt* For Vim version 7.4. Last change: 2016 Apr 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -752,7 +752,7 @@ A |Dictionary| can only be compared with a |Dictionary| and only "equal", "not
equal" and "is" can be used. This compares the key/values of the |Dictionary|
recursively. Ignoring case means case is ignored when comparing item values.
*E693* *E694*
*E694*
A |Funcref| can only be compared with a |Funcref| and only "equal" and "not
equal" can be used. Case is never ignored. Whether arguments or a Dictionary
are bound (with a partial) is ignored. This is so that when a function is
@@ -2127,14 +2127,17 @@ sqrt({expr}) Float square root of {expr}
str2float({expr}) Float convert String to Float
str2nr({expr} [, {base}]) Number convert String to Number
strchars({expr} [, {skipcc}]) Number character length of the String {expr}
strcharpart({str}, {start}[, {len}])
String {len} characters of {str} at {start}
strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
strftime({format}[, {time}]) String time in specified format
strgetchar({str}, {index}) Number get char {index} from {str}
stridx({haystack}, {needle}[, {start}])
Number index of {needle} in {haystack}
string({expr}) String String representation of {expr} value
strlen({expr}) Number length of the String {expr}
strpart({src}, {start}[, {len}])
String {len} characters of {src} at {start}
strpart({str}, {start}[, {len}])
String {len} characters of {str} at {start}
strridx({haystack}, {needle} [, {start}])
Number last index of {needle} in {haystack}
strtrans({expr}) String translate string to make it printable
@@ -2551,7 +2554,9 @@ byteidx({expr}, {nr}) *byteidx()*
same: >
let s = strpart(str, byteidx(str, 3))
echo strpart(s, 0, byteidx(s, 1))
< If there are less than {nr} characters -1 is returned.
< Also see |strgetchar()| and |strcharpart()|.
If there are less than {nr} characters -1 is returned.
If there are exactly {nr} characters the length of the string
in bytes is returned.
@@ -3418,6 +3423,10 @@ feedkeys({string} [, {mode}]) *feedkeys()*
will behave as if <Esc> is typed, to avoid getting
stuck, waiting for a character to be typed before the
script continues.
'!' When used with 'x' will not end Insert mode. Can be
used in a test when a timer is set to exit Insert mode
a little later. Useful for testing CursorHoldI.
Return value is always 0.
filereadable({file}) *filereadable()*
@@ -4100,16 +4109,21 @@ getreg([{regname} [, 1 [, {list}]]]) *getreg()*
The result is a String, which is the contents of register
{regname}. Example: >
:let cliptext = getreg('*')
< getreg('=') returns the last evaluated value of the expression
< When {regname} was not set the result is a empty string.
getreg('=') returns the last evaluated value of the expression
register. (For use in maps.)
getreg('=', 1) returns the expression itself, so that it can
be restored with |setreg()|. For other registers the extra
argument is ignored, thus you can always give it.
If {list} is present and non-zero result type is changed to
|List|. Each list item is one text line. Use it if you care
If {list} is present and non-zero, the result type is changed
to |List|. Each list item is one text line. Use it if you care
about zero bytes possibly present inside register: without
third argument both NLs and zero bytes are represented as NLs
(see |NL-used-for-Nul|).
When the register was not set an empty list is returned.
If {regname} is not specified, |v:register| is used.
@@ -5590,7 +5604,6 @@ pumvisible() *pumvisible()*
This can be used to avoid some things that would remove the
popup menu.
*E860*
py3eval({expr}) *py3eval()*
Evaluate Python expression {expr} and return its result
converted to Vim data structures.
@@ -6652,7 +6665,6 @@ strchars({expr} [, {skipcc}]) *strchars()*
counted separately.
When {skipcc} set to 1, Composing characters are ignored.
Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
{skipcc} is only available after 7.4.755. For backward
compatibility, you can define a wrapper function: >
@@ -6670,6 +6682,13 @@ strchars({expr} [, {skipcc}]) *strchars()*
endfunction
endif
<
strcharpart({src}, {start}[, {len}]) *strcharpart()*
Like |strpart()| but using character index and length instead
of byte index and length.
When a character index is used where a character does not
exist it is assumed to be one byte. For example: >
strcharpart('abc', -1, 2)
< results in 'a'.
strdisplaywidth({expr}[, {col}]) *strdisplaywidth()*
The result is a Number, which is the number of display cells
@@ -6703,6 +6722,12 @@ strftime({format} [, {time}]) *strftime()*
< Not available on all systems. To check use: >
:if exists("*strftime")
strgetchar({str}, {index}) *strgetchar()*
Get character {index} from {str}. This uses a character
index, not a byte index. Composing characters are considered
separate characters here.
Also see |strcharpart()| and |strchars()|.
stridx({haystack}, {needle} [, {start}]) *stridx()*
The result is a Number, which gives the byte index in
{haystack} of the first occurrence of the String {needle}.
@@ -6752,14 +6777,17 @@ strlen({expr}) The result is a Number, which is the length of the String
strpart({src}, {start}[, {len}]) *strpart()*
The result is a String, which is part of {src}, starting from
byte {start}, with the byte length {len}.
When non-existing bytes are included, this doesn't result in
an error, the bytes are simply omitted.
To count characters instead of bytes use |strcharpart()|.
When bytes are selected which do not exist, this doesn't
result in an error, the bytes are simply omitted.
If {len} is missing, the copy continues from {start} till the
end of the {src}. >
strpart("abcdefg", 3, 2) == "de"
strpart("abcdefg", -2, 4) == "ab"
strpart("abcdefg", 5, 4) == "fg"
strpart("abcdefg", 3) == "defg"
< Note: To get the first character, {start} must be 0. For
example, to get three bytes under and after the cursor: >
strpart(getline("."), col(".") - 1, 3)
@@ -8426,14 +8454,6 @@ This does NOT work: >
endfor
< Note that reordering the list (e.g., with sort() or
reverse()) may have unexpected effects.
Note that the type of each list item should be
identical to avoid errors for the type of {var}
changing. Unlet the variable at the end of the loop
to allow multiple item types: >
for item in ["foo", ["bar"]]
echo item
unlet item " E706 without this
endfor
:for [{var1}, {var2}, ...] in {listlist}
:endfo[r]
+2 -2
View File
@@ -97,8 +97,8 @@ command does the same and also splits the window (short: "scs").
The available subcommands are:
*E563* *E564* *E566* *E568* *E569* *E622* *E623*
*E625* *E626* *E609*
*E563* *E564* *E566* *E568* *E622* *E623* *E625*
*E626* *E609*
add : Add a new cscope database/connection.
USAGE :cs add {file|dir} [pre-path] [flags]
+1 -1
View File
@@ -734,7 +734,7 @@ if the `:py3` command is working: >
:py3 print("Hello")
< *:py3file*
The `:py3file` command works similar to `:pyfile`.
*:py3do* *E863*
*:py3do*
The `:py3do` command works similar to `:pydo`.
+1 -1
View File
@@ -16,7 +16,7 @@ The Tcl Interface to Vim *tcl* *Tcl* *TCL*
8. Examples |tcl-examples|
9. Dynamic loading |tcl-dynamic|
{Vi does not have any of these commands} *E280* *E281*
{Vi does not have any of these commands} *E280*
The Tcl interface only works when Vim was compiled with the |+tcl| feature.
+6 -1
View File
@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.4. Last change: 2016 Mar 12
*index.txt* For Vim version 7.4. Last change: 2016 Apr 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -49,6 +49,7 @@ tag char action in Insert mode ~
|i_CTRL-G_k| CTRL-G k line up, to column where inserting started
|i_CTRL-G_k| CTRL-G <Up> line up, to column where inserting started
|i_CTRL-G_u| CTRL-G u start new undoable edit
|i_CTRL-G_U| CTRL-G U don't break undo with next cursor movement
|i_<BS>| <BS> delete character before the cursor
|i_digraph| {char1}<BS>{char2}
enter digraph (only when 'digraph' option set)
@@ -859,6 +860,7 @@ tag command note action in Visual mode ~
------------------------------------------------------------------------------
|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N stop Visual mode
|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode'
|v_CTRL-A| CTRL-A 2 add N to number in highlighted text
|v_CTRL-C| CTRL-C stop Visual mode
|v_CTRL-G| CTRL-G toggle between Visual mode and Select mode
|v_<BS>| <BS> 2 Select mode: delete highlighted area
@@ -867,6 +869,7 @@ tag command note action in Visual mode ~
command
|v_CTRL-V| CTRL-V make Visual mode blockwise or stop Visual
mode
|v_CTRL-X| CTRL-X 2 subtract N from number in highlighted text
|v_<Esc>| <Esc> stop Visual mode
|v_CTRL-]| CTRL-] jump to highlighted tag
|v_!| !{filter} 2 filter the highlighted lines through the
@@ -923,6 +926,8 @@ tag command note action in Visual mode ~
|v_a}| a} same as aB
|v_c| c 2 delete highlighted area and start insert
|v_d| d 2 delete highlighted area
|v_g_CTRL-A| g CTRL-A 2 add N to number in highlighted text
|v_g_CTRL-X| g CTRL-X 2 subtract N from number in highlighted text
|v_gJ| gJ 2 join the highlighted lines without
inserting spaces
|v_gq| gq 2 format the highlighted lines
+1 -1
View File
@@ -1358,7 +1358,7 @@ Possible attributes are:
Note that -range=N and -count=N are mutually exclusive - only one should be
specified.
*E889* *:command-addr*
*:command-addr*
It is possible that the special characters in the range like ., $ or % which
by default correspond to the current line, last line and the whole buffer,
relate to arguments, (loaded) buffers, windows or tab pages.
+1 -1
View File
@@ -827,7 +827,7 @@ REJECT Not used.
These errors occur when a message violates the protocol:
*E627* *E628* *E629* *E632* *E633* *E634* *E635* *E636*
*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
*E647* *E648* *E649* *E650* *E651* *E652*
==============================================================================
+20 -2
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.4. Last change: 2016 Apr 12
*options.txt* For Vim version 7.4. Last change: 2016 Apr 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3572,6 +3572,18 @@ A jump table for the options with a short description can be found at |Q_op|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'guicolors'* *'gcol'*
'guicolors' 'gcol' boolean (default off)
global
{not in Vi}
{not available when compiled without the
|+termtruecolor| feature}
When on, uses |highlight-guifg| and |highlight-guibg| attributes in
the terminal (thus using 24-bit color). Requires a ISO-8613-3
compatible terminal.
If setting this option does not work (produces a colorless UI)
reading |xterm-true-color| might help.
*'guicursor'* *'gcr'* *E545* *E546* *E548* *E549*
'guicursor' 'gcr' string (default "n-v-c:block-Cursor/lCursor,
ve:ver35-Cursor,
@@ -4973,6 +4985,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Lua shared library. The default is
DYNAMIC_LUA_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5166,7 +5179,7 @@ A jump table for the options with a short description can be found at |Q_op|.
without a limit.
On 64 bit machines higher values might work. But hey, do you really
need more than 2 Gbyte for text editing? Keep in mind that text is
stored in the swap file, one can edit files > 2 Gbyte anyay. We do
stored in the swap file, one can edit files > 2 Gbyte anyway. We do
need the memory to store undo info.
Also see 'maxmem'.
@@ -5726,6 +5739,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Perl shared library. The default is
DYNAMIC_PERL_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5863,6 +5877,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Python 2.x shared library. The default is
DYNAMIC_PYTHON_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -5874,6 +5889,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Python 3 shared library. The default is
DYNAMIC_PYTHON3_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -6104,6 +6120,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Ruby shared library. The default is
DYNAMIC_RUBY_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -7598,6 +7615,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Specifies the name of the Tcl shared library. The default is
DYNAMIC_TCL_DLL, which was specified at compile time.
Environment variables are expanded |:set_env|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
+3 -3
View File
@@ -576,7 +576,7 @@ An atom can be followed by an indication of how many times the atom can be
matched and in what way. This is called a multi. See |/multi| for an
overview.
*/star* */\star* *E56*
*/star* */\star*
* (use \* when 'magic' is not set)
Matches 0 or more of the preceding atom, as many as possible.
Example 'nomagic' matches ~
@@ -596,7 +596,7 @@ overview.
the end of the file and then tries matching "END", backing up one
character at a time.
*/\+* *E57*
*/\+*
\+ Matches 1 or more of the preceding atom, as many as possible. {not in
Vi}
Example matches ~
@@ -612,7 +612,7 @@ overview.
\? Just like \=. Cannot be used when searching backwards with the "?"
command. {not in Vi}
*/\{* *E58* *E60* *E554* *E870*
*/\{* *E60* *E554* *E870*
\{n,m} Matches n to m of the preceding atom, as many as possible
\{n} Matches n of the preceding atom
\{n,} Matches at least n of the preceding atom, as many as possible
+26 -1
View File
@@ -1,4 +1,4 @@
*pi_netrw.txt* For Vim version 7.4. Last change: 2016 Feb 16
*pi_netrw.txt* For Vim version 7.4. Last change: 2016 Apr 20
------------------------------------------------
NETRW REFERENCE MANUAL by Charles E. Campbell
@@ -1525,6 +1525,7 @@ the |'isfname'| option (which is global, so netrw doesn't modify it).
Associated setting variables:
|g:netrw_gx| control how gx picks up the text under the cursor
|g:netrw_nogx| prevent gx map while editing
|g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages
*netrw_filehandler*
@@ -2931,6 +2932,13 @@ your browsing preferences. (see also: |netrw-settings|)
such as listing, file removal, etc.
default: ssh
*g:netrw_suppress_gx_mesg* =1 : browsers sometimes produce messages
which are normally unwanted intermixed
with the page.
However, when using links, for example,
those messages are what the browser produces.
By setting this option to 0, netrw will not
suppress browser messages.
*g:netrw_tmpfile_escape* =' &;'
escape() is applied to all temporary files
@@ -3757,6 +3765,23 @@ netrw:
==============================================================================
12. History *netrw-history* {{{1
v156: Feb 18, 2016 * Changed =~ to =~# where appropriate
Feb 23, 2016 * s:ComposePath(base,subdir) now uses
fnameescape() on the base portion
Mar 01, 2016 * (gt_macki) reported where :Explore would
make file unlisted. Fixed (tst943)
Apr 04, 2016 * (reported by John Little) netrw normally
suppresses browser messages, but sometimes
those "messages" are what is wanted.
See |g:netrw_suppress_gx_mesg|
Apr 06, 2016 * (reported by Carlos Pita) deleting a remote
file was giving an error message. Fixed.
Apr 08, 2016 * (Charles Cooper) had a problem with an
undefined b:netrw_curdir. He also provided
a fix.
Apr 20, 2016 * Changed s:NetrwGetBuffer(); now uses
dictionaries. Also fixed the "No Name"
buffer problem.
v155: Oct 29, 2015 * (Timur Fayzrakhmanov) reported that netrw's
mapping of ctrl-l was not allowing refresh of
other windows when it was done in a netrw
+7 -16
View File
@@ -3593,6 +3593,7 @@ CTRL-] tagsrch.txt /*CTRL-]*
CTRL-^ editing.txt /*CTRL-^*
CTRL-{char} intro.txt /*CTRL-{char}*
Channel eval.txt /*Channel*
Channels eval.txt /*Channels*
Chinese mbyte.txt /*Chinese*
Cmd-. gui_mac.txt /*Cmd-.*
Cmd-Down gui_mac.txt /*Cmd-Down*
@@ -3818,7 +3819,6 @@ E273 if_ruby.txt /*E273*
E277 remote.txt /*E277*
E28 syntax.txt /*E28*
E280 if_tcl.txt /*E280*
E281 if_tcl.txt /*E281*
E282 starting.txt /*E282*
E283 motion.txt /*E283*
E284 mbyte.txt /*E284*
@@ -3903,7 +3903,6 @@ E358 options.txt /*E358*
E359 term.txt /*E359*
E36 windows.txt /*E36*
E360 various.txt /*E360*
E362 term.txt /*E362*
E363 options.txt /*E363*
E364 eval.txt /*E364*
E365 print.txt /*E365*
@@ -4111,7 +4110,6 @@ E556 tagsrch.txt /*E556*
E557 term.txt /*E557*
E558 term.txt /*E558*
E559 term.txt /*E559*
E56 pattern.txt /*E56*
E560 if_cscop.txt /*E560*
E561 if_cscop.txt /*E561*
E562 if_cscop.txt /*E562*
@@ -4120,8 +4118,6 @@ E564 if_cscop.txt /*E564*
E566 if_cscop.txt /*E566*
E567 if_cscop.txt /*E567*
E568 if_cscop.txt /*E568*
E569 if_cscop.txt /*E569*
E57 pattern.txt /*E57*
E570 message.txt /*E570*
E571 if_tcl.txt /*E571*
E572 if_tcl.txt /*E572*
@@ -4130,9 +4126,7 @@ E574 starting.txt /*E574*
E575 starting.txt /*E575*
E576 starting.txt /*E576*
E577 starting.txt /*E577*
E578 editing.txt /*E578*
E579 eval.txt /*E579*
E58 pattern.txt /*E58*
E580 eval.txt /*E580*
E581 eval.txt /*E581*
E582 eval.txt /*E582*
@@ -4211,8 +4205,6 @@ E65 pattern.txt /*E65*
E650 netbeans.txt /*E650*
E651 netbeans.txt /*E651*
E652 netbeans.txt /*E652*
E653 netbeans.txt /*E653*
E654 netbeans.txt /*E654*
E655 eval.txt /*E655*
E656 netbeans.txt /*E656*
E657 netbeans.txt /*E657*
@@ -4255,7 +4247,6 @@ E69 pattern.txt /*E69*
E690 eval.txt /*E690*
E691 eval.txt /*E691*
E692 eval.txt /*E692*
E693 eval.txt /*E693*
E694 eval.txt /*E694*
E695 eval.txt /*E695*
E696 eval.txt /*E696*
@@ -4436,9 +4427,7 @@ E855 autocmd.txt /*E855*
E858 eval.txt /*E858*
E859 eval.txt /*E859*
E86 windows.txt /*E86*
E860 eval.txt /*E860*
E862 eval.txt /*E862*
E863 if_pyth.txt /*E863*
E864 pattern.txt /*E864*
E865 pattern.txt /*E865*
E866 pattern.txt /*E866*
@@ -4466,7 +4455,6 @@ E885 sign.txt /*E885*
E886 starting.txt /*E886*
E887 if_pyth.txt /*E887*
E888 pattern.txt /*E888*
E889 map.txt /*E889*
E89 message.txt /*E89*
E890 syntax.txt /*E890*
E891 eval.txt /*E891*
@@ -4474,11 +4462,8 @@ E892 eval.txt /*E892*
E893 eval.txt /*E893*
E894 eval.txt /*E894*
E895 if_mzsch.txt /*E895*
E896 channel.txt /*E896*
E898 channel.txt /*E898*
E899 channel.txt /*E899*
E90 message.txt /*E90*
E900 channel.txt /*E900*
E901 channel.txt /*E901*
E902 channel.txt /*E902*
E903 channel.txt /*E903*
@@ -4576,6 +4561,7 @@ InsertLeave autocmd.txt /*InsertLeave*
J change.txt /*J*
Japanese mbyte.txt /*Japanese*
Job eval.txt /*Job*
Jobs eval.txt /*Jobs*
K various.txt /*K*
KDE gui_x11.txt /*KDE*
KVim gui_x11.txt /*KVim*
@@ -6412,6 +6398,7 @@ g` motion.txt /*g`*
g`a motion.txt /*g`a*
ga various.txt /*ga*
garbagecollect() eval.txt /*garbagecollect()*
garbagecollect_for_testing() eval.txt /*garbagecollect_for_testing()*
gd pattern.txt /*gd*
gdb debug.txt /*gdb*
ge motion.txt /*ge*
@@ -8354,11 +8341,13 @@ statusmsg-variable eval.txt /*statusmsg-variable*
str2float() eval.txt /*str2float()*
str2nr() eval.txt /*str2nr()*
strcasestr() eval.txt /*strcasestr()*
strcharpart() eval.txt /*strcharpart()*
strchars() eval.txt /*strchars()*
strchr() eval.txt /*strchr()*
strcspn() eval.txt /*strcspn()*
strdisplaywidth() eval.txt /*strdisplaywidth()*
strftime() eval.txt /*strftime()*
strgetchar() eval.txt /*strgetchar()*
stridx() eval.txt /*stridx()*
string eval.txt /*string*
string() eval.txt /*string()*
@@ -8703,6 +8692,7 @@ terminal-options term.txt /*terminal-options*
terminfo term.txt /*terminfo*
termresponse-variable eval.txt /*termresponse-variable*
test-functions usr_41.txt /*test-functions*
testing-variable eval.txt /*testing-variable*
tex-cchar syntax.txt /*tex-cchar*
tex-cole syntax.txt /*tex-cole*
tex-conceal syntax.txt /*tex-conceal*
@@ -8899,6 +8889,7 @@ v:swapchoice eval.txt /*v:swapchoice*
v:swapcommand eval.txt /*v:swapcommand*
v:swapname eval.txt /*v:swapname*
v:termresponse eval.txt /*v:termresponse*
v:testing eval.txt /*v:testing*
v:this_session eval.txt /*v:this_session*
v:throwpoint eval.txt /*v:throwpoint*
v:true eval.txt /*v:true*
+22 -2
View File
@@ -1,4 +1,4 @@
*term.txt* For Vim version 7.4. Last change: 2015 Nov 24
*term.txt* For Vim version 7.4. Last change: 2016 Apr 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -303,6 +303,10 @@ Added by Vim (there are no standard codes for these):
see |'ambiwidth'|
t_RB request terminal background color *t_RB* *'t_RB'*
see |'ambiwidth'|
t_8f set foreground color (R, G, B) *t_8f* *'t_8f'*
|xterm-true-color|
t_8b set background color (R, G, B) *t_8b* *'t_8b'*
|xterm-true-color|
KEY CODES
Note: Use the <> form if possible
@@ -419,6 +423,22 @@ VT220, etc.). The result is that codes like <xF1> are no longer needed.
Note: This is only done on startup. If the xterm options are changed after
Vim has started, the escape sequences may not be recognized anymore.
*xterm-true-color*
Vim supports using true colors in the terminal (taken from |highlight-guifg|
and |highlight-guibg|), given that terminal supports this. To make this
work, 'guicolors' option needs to be set.
Sometimes setting 'guicolors' is not enough and one has to set the |t_8f| and
|t_8b| options explicitly. Default values of these options are
`^[[38;2;%lu;%lu;%lum` and `^[[48;2;%lu;%lu;%lum` (replace `^[` with real
escape) respectively, but it is only set when `$TERM` is `xterm`. Some
terminals accept the same sequences, but with all semicolons replaced by
colons (this is actually more compatible, but less widely supported). These
options contain printf strings, with |printf()| (actually, its C equivalent
hence `l` modifier) invoked with the t_ option value and three unsigned long
integers that may have any value between 0 and 255 (inclusive) representing
red, green and blue colors respectively.
*xterm-resize*
Window resizing with xterm only works if the allowWindowOps resource is
enabled. On some systems and versions of xterm it's disabled by default
@@ -542,7 +562,7 @@ correct values.
One command can be used to set the screen size:
*:mod* *:mode* *E359* *E362*
*:mod* *:mode* *E359*
:mod[e] [mode]
Without argument this only detects the screen size and redraws the screen.
+49 -62
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.4. Last change: 2016 Apr 11
*todo.txt* For Vim version 7.4. Last change: 2016 Apr 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,26 +34,19 @@ not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Crash in garbagecollect() after starting a job. (Yasuhiro Matsumoto)
:let g:a = job_start(['ls'])
:call garbagecollect()
-> Need to find a way to call garbagecollect() in a test.
Channel closes unexpectedly. (Christian Robinson, 2016 Apr 10)
Log file later.
Remarks from Kazunobu Kuriyama. Fix from Hirohito, suggested by Ozaki Kiichi.
When test_partial start_job() has a non-existing command memory leaks.
Vim 8 features to mention:
* TabNew, TabNewEntered and TabClosed autocommand events.
Also keep a list of loaded plugins, skip when encountered again?
In test_partial when start_job() has a non-existing command memory leaks.
Memory leak in test49
Memory leak in test_alot, with matchstrpos()
Also keep a list of loaded plugins, skip when encountered again?
Vim.org: when a user already has a homepage, do show the field so that it can
be deleted.
+channel:
- GUI:cursor blinking is irregular when invoking callbacks. (Ramel Eshed, 2016
Apr 16) somehow remember the previous state?
- When a message in the queue but there is no callback, drop it after a while?
Add timestamp to queued messages and callbacks with ID, remove after a
minute. Option to set the droptime.
@@ -67,17 +60,10 @@ Later
- job_start(): run job in a newly opened terminal.
With xterm could use -S{pty}.
Test for try/catch in 'tabline'. #746, Haya, 2016 Apr 10.
Make it so that the window ID can be used where currently a window nr is used
Patch to make tag jump work on function({expr}). (Hirohito Higashi, 2016 Mar
25)
Patch to improve I/O for Perl. (Damien, 2016 Jan 9, update Jan 22 2nd one)
Add strgetchar(): get a character by index from a string.
using [] is a byte index.
Patch to fix invalid behavior with NULL list. (Nikolai Pavlov, #768)
Also check :for.
Regexp problems:
- The regexp engines are not reentrant, causing havoc when interrupted by a
@@ -124,26 +110,23 @@ Regexp problems:
Using freed memory in quickfix code. (Dominique, 2016 Mar 21)
Patch 7.4.1401 caused autochdir not to work on startup. (Rob Hoelz, #704)
jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
What if there is an invalid character?
Patch to support partions for Python, #734. Nikolai Pavlov, 2017 Apr 6
Once .exe with updated installer is available: Add remark to download page
about /S and /D options (Ken Takata, 2016 Apr 13)
Patch to fix that folds close with autocomplete. #643
Christian Brabandt, 2016 Feb 18.
Patch to make cursor blinking work better with GTK3. (Kazunobu Kuriyama, 2016
Apr 19) Need to check this works on Linux.
Also include update_curswant() fix for getcurpos(). (Christian Brabandt, 2016
Feb 9)
When cross-compiling skip generating the tags file (and moving it out of the
way). (Christian Neukirchen, 2016 Apr 7) #740
Patch to list some messages and clear messages. (Yasuhiro Matsumoto, 2016 Mar
12)
Use ADDR_OTHER instead of ADDR_LINES for many more commands.
Add tests for using number larger than number of lines in buffer.
Patch to fix escaping special characters for delete(). (tc-0, 2016 Mar 20,
#700) Test fails on MS-Windows.
Patch to have complete() not set 'modified'. (Shougo, 2016 Apr 9, #745)
ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
Also with latest version.
Patch to put undo options together in undo window.
(Gary Johnson, 2016 Jan 28)
@@ -151,9 +134,11 @@ Patch to put undo options together in undo window.
Still problems with 'emoji'. See issue #721. Patch 7.4.1697 half-fixes it.
Avoid PLAN_WRITE in windgoto() ?
AVR assembler syntax file. (Marius Ghita, #439)
Patch to have better check for {action} argument of setqflist().
Nikolai Pavlov, Feb 25, #661. Can be even more strict.
Also see patch from Hirohito Higash, Feb 25.
Also see patch from Hirohito Higashi, Feb 25.
Updated patch, 2016 Mar 25.
Patch to update the GTK icon cache when installing. (Kazunobu Kuriyama, 2016
@@ -163,13 +148,22 @@ Patch for test86 and test87. (Roland Puntaier, #622)
Cannot delete a file with square brackets with delete(). (#696)
Patch to add GUI colors to the terminal, when 'guicolors' is set. (ZyX, 2013
Jan 26, update 2013 Dec 14, another 2014 Nov 22)
Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
(Felipe Morales, 2015 Feb 1)
Patch on issue #728 by Christian Brabandt, 2016 Apr 7. Update with test: Apr 8.
Explanation Apr 12.
Might be related to:
Test 44 fails when [[=A=]] is changed to [[=À=]]. Caused by getcmdline() not
handling the 0x80 as a second byte correctly? (Dominique Pelle, 2015 Jun 10)
Patch to add 'topbot' to 'belloff' option. (Coot, 2016 Mar 18, #695)
Patch for C syntax HL. (Bradley Garagan, 2016 Apr 17) #763
Patch to make matchit work better, respect 'matchpairs'. (Ken Takata, 2016 Mar
25)
@@ -196,6 +190,9 @@ Update 2016 Apr 4.
Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12)
Updated 2016 Feb 10
Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
No test, needs some work to include.
>
Patch to improve indenting for C++ constructor with initializer list.
(Hirohito Higashi, 2016 Mar 31)
@@ -228,8 +225,13 @@ Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
What if there is an invalid character?
When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
Apr 17) #762
Patch to support expression argument to sort() instead of a function name.
Yasuhiro Matsumoto, 2013 May 31.
Or should we add a more general mechanism, like a lambda() function?
Patch by Yasuhiro Matsumoto, 2014 Sep 16, update 2016 Apr 17.
Should jsonencode()/jsondecode() restrict recursiveness?
Or avoid recursiveness.
@@ -266,7 +268,7 @@ directory exists. (Sergio Gallelli, 2013 Dec 29)
Patch by Christian Brabandt, 2016 Feb 1.
Patch to discard remainder of long error messages in quickfix, avoid using
them as separate messages. (Anton Lindqvist, 2016 Apr 9)
them as separate messages. (Anton Lindqvist, 2016 Apr 9, update Apr 13)
Patch to avoid redrawing tabline when the popup menu is visible.
(Christian Brabandt, 2016 Jan 28)
@@ -279,6 +281,10 @@ Patch from Christian Brabandt, 2016 Mar 30, #712.
Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
Update Sep 7. Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
restore the mode properly. (Andrew Stewart, 2016 Apr 20)
Do not trigger the event?
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.
@@ -297,7 +303,7 @@ https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
Patch to make the behavior of "w" more straightforward, but not Vi compatible.
With a 'cpo' flag. (Christian Brabandt, 2016 Feb 8)
Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27)
Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13)
Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)
@@ -374,9 +380,6 @@ is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)
Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
30)
Weird encryption problems on Windows. (Ben Fritz, 2015 Feb 13)
Goes away when disabling the swap file. (might1, Feb 16)
MS-Windows: Crash opening very long file name starting with "\\".
(Christian Brock, 2012 Jun 29)
@@ -405,9 +408,6 @@ Crash in :cnext on MS-Windows. (Ben Fritz, 2015 Oct 27)
When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
Patch to add GUI colors to the terminal, when 'guicolors' is set. (ZyX, 2013
Jan 26, update 2013 Dec 14, another 2014 Nov 22)
Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
Sep 10)
@@ -428,8 +428,6 @@ Patch to fix checking global option value when not using it.
When 'showbreak' is set repeating a Visual operation counts the size of the
'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)
Patch for matchit plugin related to multibyte chars. (Ken Takata, 2015 Jul 22)
Patch for multi-byte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
Is this the right solution? Need to cleanup langmap behavior:
@@ -609,9 +607,6 @@ What for systems that don't have unsetenv()?
Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
(Felipe Morales, 2015 Feb 1)
This does not give an error: (Andre Sihera, 2014 Mar 21)
vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
This neither: (ZyX)
@@ -678,14 +673,6 @@ various other commands. (ZyX, 2014 Mar 30)
Patch to skip sort if no line matches the expression.
(Christian Brabandt, 2014 Jun 25)
Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
Or add uniq() instead? Patch by lcd47, but it has problems.
Patch to support expression argument to sort() instead of a function name.
Yasuhiro Matsumoto, 2013 May 31.
Or should we add a more general mechanism, like a lambda() function?
Patch by Yasuhiro Matsumoto, 2014 Sep 16.
VMS: Select() doesn't work properly, typing ESC may hang Vim. Use sys$qiow
instead. (Samuel Ferencik, 2013 Sep 28)
+1
View File
@@ -426,6 +426,7 @@ m *+tcl* Tcl interface |tcl|
m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn|
*+terminfo* uses |terminfo| instead of termcap
N *+termresponse* support for |t_RV| and |v:termresponse|
m *+termtruecolor* 24-bit color in xterm-compatible terminals support
N *+textobjects* |text-objects| selection
*+tgetent* non-Unix only: able to use external termcap
N *+timers* the |timer_start()| function
+11 -9
View File
@@ -1,4 +1,4 @@
*version8.txt* For Vim version 8.0. Last change: 2016 Apr 12
*version8.txt* For Vim version 8.0. Last change: 2016 Apr 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -37,8 +37,10 @@ INCOMPATIBLE CHANGES *incompatible-8*
These changes are incompatible with previous releases. Check this list if you
run into a problem when upgrading from Vim 7.4 to 8.0.
The support for MS-DOS has been removed.
The support for MS-DOS has been removed. It hasn't been working for a while
and removing it cleans up the code quite a bit.
The support for Windows 16 bit (Windows 95 and older) has been removed.
Minor incompatibilities:
@@ -47,13 +49,13 @@ For filetype detection: ...
==============================================================================
NEW FEATURES *new-8*
First a list to the bigger new features. A comprehensive list is below.
First a list of the bigger new features. A comprehensive list is below.
Asynchronous I/O support, channels ~
Vim can now exchange messages with another process in the background. The
message are received and handled while Vim is waiting for a character. See
Vim can now exchange messages with another process in the background. The
messages are received and handled while Vim is waiting for a character. See
|channel-demo| for an example, communicating with a Python server.
Closely related to channels is JSON support. JSON is widely supported and can
@@ -74,7 +76,7 @@ Timers ~
Also asynchronous are timers. They can fire once or repeatedly and invoke a
function to do any work. For example: >
let tempTimer = timer_start(4000, 'CheckTemp')
This will make call 4 seconds later, like: >
This will make a call four seconds (4000 milli seconds) later, like: >
call CheckTemp()
@@ -85,13 +87,13 @@ to a function, and additionally binds arguments and/or a dictionary. This is
especially useful for callbacks on channels and timers. E.g., for the timer
example above, to pass an argument to the function: >
let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
This will make call 4 seconds later, like: >
This will a make call four seconds later, like: >
call CheckTemp('out')
Packages ~
Plugins keep growing and more of them are available then ever before. To keep
Plugins keep growing and more of them are available than ever before. To keep
the collection of plugins manageable package support has been added. This is
a convenient way to get one or more plugins, drop them in a directory and
possibly keep them updated. Vim will load them automatically, or only when
@@ -145,7 +147,7 @@ works quite well, mostly just like GTK+ 2.
Vim script enhancements *new-vim-script-8*
-----------------------
In Vim scripts the following types have been added:
In Vim script the following types have been added:
|Special| |v:false|, |v:true|, |v:none| and |v:null|
|Channel| connection to another process for asynchronous I/O
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Jan 24
" Last Change: 2016 Apr 19
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -60,7 +60,7 @@ function GetVimIndentIntern()
else
let ind = ind + shiftwidth() * 3
endif
elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+END'
elseif prev_text =~ '^\s*aug\%[roup]' && prev_text !~ '^\s*aug\%[roup]\s*!\=\s\+[eE][nN][dD]'
let ind = ind + shiftwidth()
else
" A line starting with :au does not increment/decrement indent.
+5 -5
View File
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Mar 19
" Last Change: 2016 Apr 21
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
@@ -753,6 +753,10 @@ call <SID>Header("editing text")
call append("$", "undolevels\tmaximum number of changes that can be undone")
call append("$", "\t(global or local to buffer)")
call append("$", " \tset ul=" . &ul)
call append("$", "undofile\tautomatically save and restore undo history")
call <SID>BinOptionG("udf", &udf)
call append("$", "undodir\tlist of directories for undo files")
call <SID>OptionG("udir", &udir)
call append("$", "undoreload\tmaximum number lines to save for undo on a buffer reload")
call append("$", " \tset ur=" . &ur)
call append("$", "modified\tchanges have been made and not written to a file")
@@ -1089,10 +1093,6 @@ if has("vertsplit")
call append("$", "cmdwinheight\theight of the command-line window")
call <SID>OptionG("cwh", &cwh)
endif
call append("$", "undofile\tautomatically save and restore undo history")
call <SID>BinOptionG("udf", &udf)
call append("$", "undodir\tlist of directories for undo files")
call <SID>OptionG("udir", &udir)
call <SID>Header("executing external commands")
+1 -1
View File
@@ -20,7 +20,7 @@
if &cp || exists("g:loaded_netrwPlugin")
finish
endif
let g:loaded_netrwPlugin = "v155"
let g:loaded_netrwPlugin = "v156"
let s:keepcpo = &cpo
set cpo&vim
"DechoRemOn
+1
View File
@@ -61,6 +61,7 @@ an 50.10.320 &Syntax.AB.Ascii\ Doc :cal SetSyn("asciidoc")<CR>
an 50.10.330 &Syntax.AB.ASP\ with\ VBScript :cal SetSyn("aspvbs")<CR>
an 50.10.340 &Syntax.AB.ASP\ with\ Perl :cal SetSyn("aspperl")<CR>
an 50.10.350 &Syntax.AB.Assembly.680x0 :cal SetSyn("asm68k")<CR>
an 50.10.355 &Syntax.AB.Assembly.AVR :cal SetSyn("avra")<CR>
an 50.10.360 &Syntax.AB.Assembly.Flat :cal SetSyn("fasm")<CR>
an 50.10.370 &Syntax.AB.Assembly.GNU :cal SetSyn("asm")<CR>
an 50.10.380 &Syntax.AB.Assembly.GNU\ H-8300 :cal SetSyn("asmh8300")<CR>
+73
View File
@@ -0,0 +1,73 @@
" Vim syntax file
" Language: AVR Assembler (AVRA)
" AVRA Home: http://avra.sourceforge.net/index.html
" AVRA Version: 1.3.0
" Maintainer: Marius Ghita <mhitza@gmail.com>
let s:cpo_save = &cpo
set cpo&vim
setlocal iskeyword=a-z,A-Z,48-57,.,_
" 'isident' is a global option, better not set it
" setlocal isident=a-z,A-Z,48-57,.,_
syn case ignore
syn keyword avraRegister r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14
syn keyword avraRegister r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27
syn keyword avraRegister r28 r29 r30 r31
syn keyword avraInstr add adc adiw sub subi sbc sbci sbiw and andi or ori eor
syn keyword avraInstr com neg sbr cbr inc dec tst clr ser mul muls mulsu fmul
syn keyword avraInstr fmuls fmulsu des rjmp ijmp eijmp jmp rcall icall eicall
syn keyword avraInstr call ret reti cpse cp cpc cpi sbrc sbrs sbic sbis brbs
syn keyword avraInstr brbc breq brne brcs brcc brsh brlo brmi brpl brge brlt
syn keyword avraInstr brhs brhc brts brtc brvs brvc brie brid mov movw ldi lds
syn keyword avraInstr ld ldd sts st std lpm elpm spm in out push pop xch las
syn keyword avraInstr lac lat lsl lsr rol ror asr swap bset bclr sbi cbi bst bld
syn keyword avraInstr sec clc sen cln sez clz sei cli ses cls sev clv set clt
syn keyword avraInstr seh clh break nop sleep wdr
syn keyword avraDirective .byte .cseg .db .def .device .dseg .dw .endmacro .equ
syn keyword avraDirective .eseg .exit .include .list .listmac .macro .nolist
syn keyword avraDirective .org .set .define .undef .ifdef .ifndef .if .else
syn keyword avraDirective .elif .elseif .warning
syn keyword avraOperator low high byte2 byte3 byte4 lwrd hwrd page exp2 log2
syn match avraNumericOperator "[-*/+]"
syn match avraUnaryOperator "!"
syn match avraBinaryOperator "<<\|>>\|<\|<=\|>\|>=\|==\|!="
syn match avraBitwiseOperator "[~&^|]\|&&\|||"
syn match avraBinaryNumber "\<0[bB][0-1]*\>"
syn match avraHexNumber "\<0[xX][0-9a-fA-F]\+\>"
syn match avraDecNumber "\<\(0\|[1-9]\d*\)\>"
syn region avraComment start=";" end="$"
syn region avraString start="\"" end="\"\|$"
syn match avraLabel "^\s*[^; \t]\+:"
hi def link avraBinaryNumber avraNumber
hi def link avraHexNumber avraNumber
hi def link avraDecNumber avraNumber
hi def link avraNumericOperator avraOperator
hi def link avraUnaryOperator avraOperator
hi def link avraBinaryOperator avraOperator
hi def link avraBitwiseOperator avraOperator
hi def link avraOperator operator
hi def link avraComment comment
hi def link avraDirective preproc
hi def link avraRegister type
hi def link avraNumber constant
hi def link avraString String
hi def link avraInstr keyword
hi def link avraLabel label
let b:current_syntax = "avra"
let &cpo = s:cpo_save
unlet s:cpo_save
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: php PHP 3/4/5
" Maintainer: Jason Woofenden <jason@jasonwoof.com>
" Last Change: Dec 26, 2015
" Last Change: Apr 18, 2016
" URL: https://jasonwoof.com/gitweb/?p=vim-syntax.git;a=blob;f=php.vim;hb=HEAD
" Former Maintainers: Peter Hodge <toomuchphp-vim@yahoo.com>
" Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
@@ -136,7 +136,7 @@ syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __D
" Function and Methods ripped from php_manual_de.tar.gz Jan 2003
syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained
syn keyword phpFunctions array_change_key_case array_chunk array_combine array_count_values array_diff_assoc array_diff_uassoc array_diff array_fill array_filter array_flip array_intersect_assoc array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_push array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_unique array_unshift array_values array_walk array arsort asort compact count current each end extract in_array key krsort ksort list natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained
syn keyword phpFunctions array_change_key_case array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk arsort asort count current each end in_array key_exists key krsort ksort natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained
syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained
syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained
syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained
+79 -60
View File
@@ -11,9 +11,9 @@ The file "feature.h" can be edited to match your preferences. You can skip
this, then you will get the default behavior as is documented, which should
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/8/10)
This document assumes that you are building Vim for Win32 or later (Windows
XP/2003/Vista/7/8/10). There are also instructions for pre-XP systems, but
they might no longer work.
Contents:
@@ -36,9 +36,7 @@ Contents:
The currently preferred method is using the free Visual C++ Toolkit 2008
|msvc-2008-express|, the produced binary runs on most MS-Windows systems. If
you need the executable to run on Windows 98 or ME, use the 2003 one
|msvc-2003-toolkit|.
|msvc-2008-express|, the produced binary runs on most MS-Windows systems.
1. Microsoft Visual C++
@@ -87,6 +85,69 @@ These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
Ron Aaron; they have been tested.
Visual C++ 2008 Express Edition *msvc-2008-express*
-------------------------------
Visual C++ 2008 Express Edition can be downloaded for free from:
http://www.microsoft.com/express/downloads/
This includes the IDE and the debugger.
To set the environment execute the msvc2008.bat script. You can then build
Vim with Make_mvc.mak.
For building 64 bit binaries you also need to install the SDK:
"Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1"
You don't need the examples and documentation.
If you get an error that Win32.mak can't be found, you have to set the
variable SDK_INCLUDE_DIR. For example, on Windows 10, installation of MSVC
puts include files in the following directory:
set SDK_INCLUDE_DIR=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
Visual C++ 2010 Express Edition *msvc-2010-express*
-------------------------------
Visual C++ 2010 Express Edition can be downloaded for free from:
http://www.microsoft.com/express/vc/Default.aspx
This includes the IDE and the debugger.
To set the environment execute the msvc2010.bat script. You can then build
Vim with Make_mvc.mak.
Targeting Windows XP with new MSVC *new-msvc-windows-xp*
----------------------------------
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:
LINK ... /subsystem:console,5.01
Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version.
Use lines like follows to target Windows XP (assuming using Visual C++ 2012
under 64-bit Windows):
set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A
set SDK_INCLUDE_DIR=%WinSdk71%\Include
set INCLUDE=%WinSdk71%\Include;%INCLUDE%
set LIB=%WinSdk71%\Lib;%LIB%
set PATH=%WinSdk71%\Bin;%PATH%
set CL=/D_USING_V110_SDK71_
nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01
The following Visual C++ team blog can serve as a reference page:
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
OLDER VERSIONS
The minimal supported version is Windows XP. Building with older compilers
might still work, but these instructions might be outdated.
If you need the executable to run on Windows 98 or ME, use the 2003 one
|msvc-2003-toolkit|.
Visual C++ Toolkit 2003 *msvc-2003-toolkit*
-----------------------
@@ -172,55 +233,6 @@ Instructions for integrating the Platform SDK into VC Express:
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
Visual C++ 2008 Express Edition *msvc-2008-express*
-------------------------------
Visual C++ 2008 Express Edition can be downloaded for free from:
http://www.microsoft.com/express/downloads/
This includes the IDE and the debugger.
To set the environment execute the msvc2008.bat script. You can then build
Vim with Make_mvc.mak.
For building 64 bit binaries you also need to install the SDK:
"Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1"
You don't need the examples and documentation.
Visual C++ 2010 Express Edition *msvc-2010-express*
-------------------------------
Visual C++ 2010 Express Edition can be downloaded for free from:
http://www.microsoft.com/express/vc/Default.aspx
This includes the IDE and the debugger.
To set the environment execute the msvc2010.bat script. You can then build
Vim with Make_mvc.mak.
Targeting Windows XP with new MSVC *new-msvc-windows-xp*
----------------------------------
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:
LINK ... /subsystem:console,5.01
Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version.
Use lines like follows to target Windows XP (assuming using Visual C++ 2012
under 64-bit Windows):
set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A
set SDK_INCLUDE_DIR=%WinSdk71%\Include
set INCLUDE=%WinSdk71%\Include;%INCLUDE%
set LIB=%WinSdk71%\Lib;%LIB%
set PATH=%WinSdk71%\Bin;%PATH%
set CL=/D_USING_V110_SDK71_
nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01
The following Visual C++ team blog can serve as a reference page:
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
2. MinGW
========
@@ -253,10 +265,14 @@ System, Advanced, and edit the environment from there. If you use msys2
compilers, set your installed paths:
C:\msys2\mingw32\bin
or
C:\msys64\mingw32\bin
for 32bit. And 64bit:
C:\msys2\mingw64\bin
or
C:\msys64\mingw64\bin
Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window:
@@ -605,7 +621,7 @@ 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:
RubyInstaller. If you use a different compiler, 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.
@@ -639,9 +655,10 @@ config.h and Ruby's DLL name. Here are the steps for working around them:
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=0x501
WINVER must be set to >=0x500, when building with Ruby 2.1 or later.
If you set WINVER explicitly, it must be set to >=0x500, when building
with Ruby 2.1 or later. (Default is 0x501.)
When using this trick, you also need to set RUBY_MSVCRT_NAME to msvcrt
which is used for the Ruby's DLL name.
@@ -652,9 +669,11 @@ 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=0x501
If you set WINVER explicitly, it must be set to >=0x500, when building with
Ruby 2.1 or later. (Default is 0x501.)
WINVER must be set to >=0x500, when building with Ruby 2.1 or later.
12. Building with Tcl support
+16 -1
View File
@@ -1994,7 +1994,6 @@ test1 \
test_listlbr_utf8 \
test_mapping \
test_marks \
test_match_conceal \
test_nested_function \
test_options \
test_ruby \
@@ -2030,11 +2029,14 @@ test_arglist \
test_delete \
test_ex_undo \
test_expand \
test_expand_dllpath \
test_expr \
test_expr_utf8 \
test_feedkeys \
test_file_perm \
test_fnamemodify \
test_glob2regpat \
test_goto \
test_hardcopy \
test_help_tagjump \
test_history \
@@ -2043,8 +2045,11 @@ test_arglist \
test_json \
test_langmap \
test_lispwords \
test_matchadd_conceal \
test_matchadd_conceal_utf8 \
test_matchstrpos \
test_menu \
test_messages \
test_packadd \
test_partial \
test_perl \
@@ -2059,6 +2064,7 @@ test_arglist \
test_syn_attr \
test_syntax \
test_tabline \
test_tagjump \
test_timers \
test_undolevels \
test_unlet \
@@ -2367,12 +2373,18 @@ install-languages: languages $(DEST_LANG) $(DEST_KMAP)
ICON48PATH = $(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps
ICON32PATH = $(DESTDIR)$(DATADIR)/icons/locolor/32x32/apps
ICON16PATH = $(DESTDIR)$(DATADIR)/icons/locolor/16x16/apps
ICONTHEMEPATH = $(DATADIR)/icons/hicolor
DESKTOPPATH = $(DESTDIR)$(DATADIR)/applications
KDEPATH = $(HOME)/.kde/share/icons
install-icons:
if test -d $(ICON48PATH) -a -w $(ICON48PATH) \
-a ! -f $(ICON48PATH)/gvim.png; then \
$(INSTALL_DATA) $(SCRIPTSOURCE)/vim48x48.png $(ICON48PATH)/gvim.png; \
if test -z "$(DESTDIR)" -a -x $(GTK_UPDATE_ICON_CACHE) \
-a -w $(ICONTHEMEPATH) \
-a -f $(ICONTHEMEPATH)/index.theme; then \
$(GTK_UPDATE_ICON_CACHE) -q $(ICONTHEMEPATH); \
fi \
fi
if test -d $(ICON32PATH) -a -w $(ICON32PATH) \
-a ! -f $(ICON32PATH)/gvim.png; then \
@@ -2386,6 +2398,9 @@ install-icons:
$(INSTALL_DATA) $(SCRIPTSOURCE)/vim.desktop \
$(SCRIPTSOURCE)/gvim.desktop \
$(DESKTOPPATH); \
if test -z "$(DESTDIR)" -a -x $(UPDATE_DESKTOP_DATABASE); then \
$(UPDATE_DESKTOP_DATABASE) -q $(DESKTOPPATH); \
fi \
fi
$(HELPSOURCE)/vim.1 $(MACROSOURCE) $(TOOLSSOURCE):
+150
View File
@@ -639,6 +639,8 @@ NARROW_PROTO
MOTIF_LIBNAME
GRESOURCE_OBJ
GRESOURCE_SRC
UPDATE_DESKTOP_DATABASE
GTK_UPDATE_ICON_CACHE
GLIB_COMPILE_RESOURCES
GNOME_INCLUDEDIR
GNOME_LIBDIR
@@ -812,6 +814,7 @@ with_tclsh
enable_rubyinterp
with_ruby_command
enable_cscope
enable_termtruecolor
enable_workshop
enable_netbeans
enable_channel
@@ -833,6 +836,8 @@ enable_gtktest
with_gnome_includes
with_gnome_libs
with_gnome
enable_icon_cache_update
enable_desktop_database_update
with_motif_lib
with_tlib
enable_largefile
@@ -1478,6 +1483,7 @@ Optional Features:
--enable-tclinterp=OPTS Include Tcl interpreter. default=no OPTS=no/yes/dynamic
--enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic
--enable-cscope Include cscope interface.
--enable-termtruecolor Include support for 24-bit colors in ISO-8613-3 compatible terminals
--enable-workshop Include Sun Visual Workshop support.
--disable-netbeans Disable NetBeans integration support.
--disable-channel Disable process communication support.
@@ -1495,6 +1501,8 @@ Optional Features:
--enable-carbon-check If auto-select GUI, check for Carbon default=yes
--enable-macvim-check If auto-select GUI, check for MacVim default=yes
--disable-gtktest Do not try to compile and run a test GTK program
--disable-icon-cache-update update disabled
--disable-desktop-database-update update disabled
--disable-largefile omit support for large files
--disable-acl Don't check for ACL support.
--disable-gpm Don't use gpm (Linux mouse daemon).
@@ -7294,6 +7302,22 @@ if test "$enable_cscope" = "yes"; then
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-termtruecolor argument" >&5
$as_echo_n "checking --enable-termtruecolor argument... " >&6; }
# Check whether --enable-termtruecolor was given.
if test "${enable_termtruecolor+set}" = set; then :
enableval=$enable_termtruecolor;
else
enable_termtruecolor="no"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_termtruecolor" >&5
$as_echo "$enable_termtruecolor" >&6; }
if test "$enable_termtruecolor" = "yes"; then
$as_echo "#define FEAT_TERMTRUECOLOR 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-workshop argument" >&5
$as_echo_n "checking --enable-workshop argument... " >&6; }
# Check whether --enable-workshop was given.
@@ -9462,8 +9486,134 @@ $as_echo "not usable." >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot obtain from pkg_config." >&5
$as_echo "cannot obtain from pkg_config." >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-icon-cache-update argument" >&5
$as_echo_n "checking --disable-icon-cache-update argument... " >&6; }
# Check whether --enable-icon_cache_update was given.
if test "${enable_icon_cache_update+set}" = set; then :
enableval=$enable_icon_cache_update;
else
enable_icon_cache_update="yes"
fi
if test "$enable_icon_cache_update" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5
$as_echo "not set" >&6; }
# Extract the first word of "gtk-update-icon-cache", so it can be a program name with args.
set dummy gtk-update-icon-cache; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_GTK_UPDATE_ICON_CACHE+:} false; then :
$as_echo_n "(cached) " >&6
else
case $GTK_UPDATE_ICON_CACHE in
[\\/]* | ?:[\\/]*)
ac_cv_path_GTK_UPDATE_ICON_CACHE="$GTK_UPDATE_ICON_CACHE" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GTK_UPDATE_ICON_CACHE="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
test -z "$ac_cv_path_GTK_UPDATE_ICON_CACHE" && ac_cv_path_GTK_UPDATE_ICON_CACHE="no"
;;
esac
fi
GTK_UPDATE_ICON_CACHE=$ac_cv_path_GTK_UPDATE_ICON_CACHE
if test -n "$GTK_UPDATE_ICON_CACHE"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_UPDATE_ICON_CACHE" >&5
$as_echo "$GTK_UPDATE_ICON_CACHE" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found in PATH." >&5
$as_echo "not found in PATH." >&6; }
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: update disabled" >&5
$as_echo "update disabled" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-desktop-database-update argument" >&5
$as_echo_n "checking --disable-desktop-database-update argument... " >&6; }
# Check whether --enable-desktop_database_update was given.
if test "${enable_desktop_database_update+set}" = set; then :
enableval=$enable_desktop_database_update;
else
enable_desktop_database_update="yes"
fi
if test "$enable_desktop_database_update" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5
$as_echo "not set" >&6; }
# Extract the first word of "update-desktop-database", so it can be a program name with args.
set dummy update-desktop-database; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_UPDATE_DESKTOP_DATABASE+:} false; then :
$as_echo_n "(cached) " >&6
else
case $UPDATE_DESKTOP_DATABASE in
[\\/]* | ?:[\\/]*)
ac_cv_path_UPDATE_DESKTOP_DATABASE="$UPDATE_DESKTOP_DATABASE" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_UPDATE_DESKTOP_DATABASE="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
test -z "$ac_cv_path_UPDATE_DESKTOP_DATABASE" && ac_cv_path_UPDATE_DESKTOP_DATABASE="no"
;;
esac
fi
UPDATE_DESKTOP_DATABASE=$ac_cv_path_UPDATE_DESKTOP_DATABASE
if test -n "$UPDATE_DESKTOP_DATABASE"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UPDATE_DESKTOP_DATABASE" >&5
$as_echo "$UPDATE_DESKTOP_DATABASE" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found in PATH." >&5
$as_echo "not found in PATH." >&6; }
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: update disabled" >&5
$as_echo "update disabled" >&6; }
fi
fi
+3
View File
@@ -362,6 +362,9 @@
/* Define for linking via dlopen() or LoadLibrary() */
#undef DYNAMIC_TCL
/* Define if you want 24-bit colors in ISO-8613-3 compatible terminals. */
#undef FEAT_TERMTRUECOLOR
/* Define if you want to add support for ACL */
#undef HAVE_POSIX_ACL
#undef HAVE_SOLARIS_ZFS_ACL
+3
View File
@@ -164,6 +164,9 @@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
GRESOURCE_SRC = @GRESOURCE_SRC@
GRESOURCE_OBJ = @GRESOURCE_OBJ@
GTK_UPDATE_ICON_CACHE = @GTK_UPDATE_ICON_CACHE@
UPDATE_DESKTOP_DATABASE = @UPDATE_DESKTOP_DATABASE@
### Any OS dependent extra source and object file
OS_EXTRA_SRC = @OS_EXTRA_SRC@
OS_EXTRA_OBJ = @OS_EXTRA_OBJ@
+41
View File
@@ -1979,6 +1979,15 @@ if test "$enable_cscope" = "yes"; then
AC_DEFINE(FEAT_CSCOPE)
fi
AC_MSG_CHECKING(--enable-termtruecolor argument)
AC_ARG_ENABLE(termtruecolor,
[ --enable-termtruecolor Include support for 24-bit colors in ISO-8613-3 compatible terminals], ,
[enable_termtruecolor="no"])
AC_MSG_RESULT($enable_termtruecolor)
if test "$enable_termtruecolor" = "yes"; then
AC_DEFINE(FEAT_TERMTRUECOLOR)
fi
AC_MSG_CHECKING(--enable-workshop argument)
AC_ARG_ENABLE(workshop,
[ --enable-workshop Include Sun Visual Workshop support.], ,
@@ -2762,10 +2771,42 @@ if test "x$GUITYPE" = "xGTK"; then
else
AC_MSG_RESULT([cannot obtain from pkg_config.])
fi
AC_MSG_CHECKING([--disable-icon-cache-update argument])
AC_ARG_ENABLE(icon_cache_update,
[ --disable-icon-cache-update update disabled],
[],
[enable_icon_cache_update="yes"])
if test "$enable_icon_cache_update" = "yes"; then
AC_MSG_RESULT([not set])
AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
AC_MSG_RESULT([not found in PATH.])
fi
else
AC_MSG_RESULT([update disabled])
fi
AC_MSG_CHECKING([--disable-desktop-database-update argument])
AC_ARG_ENABLE(desktop_database_update,
[ --disable-desktop-database-update update disabled],
[],
[enable_desktop_database_update="yes"])
if test "$enable_desktop_database_update" = "yes"; then
AC_MSG_RESULT([not set])
AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
AC_MSG_RESULT([not found in PATH.])
fi
else
AC_MSG_RESULT([update disabled])
fi
fi
AC_SUBST(GLIB_COMPILE_RESOURCES)
AC_SUBST(GRESOURCE_SRC)
AC_SUBST(GRESOURCE_OBJ)
AC_SUBST(GTK_UPDATE_ICON_CACHE)
AC_SUBST(UPDATE_DESKTOP_DATABASE)
dnl Check for Motif include files location.
dnl The LAST one found is used, this makes the highest version to be used,
+15 -4
View File
@@ -98,6 +98,7 @@ static char *e_listarg = N_("E686: Argument of %s must be a List");
static char *e_listdictarg = N_("E712: Argument of %s must be a List or Dictionary");
static char *e_listreq = N_("E714: List required");
static char *e_dictreq = N_("E715: Dictionary required");
static char *e_stringreq = N_("E928: String required");
static char *e_toomanyarg = N_("E118: Too many arguments for function: %s");
static char *e_dictkey = N_("E716: Key not present in Dictionary: %s");
static char *e_funcexts = N_("E122: Function %s already exists, add ! to replace it");
@@ -13185,7 +13186,7 @@ f_getreg(typval_T *argvars, typval_T *rettv)
rettv->vval.v_list = (list_T *)get_reg_contents(regname,
(arg2 ? GREG_EXPR_SRC : 0) | GREG_LIST);
if (rettv->vval.v_list == NULL)
rettv_list_alloc(rettv);
(void)rettv_list_alloc(rettv);
else
++rettv->vval.v_list->lv_refcount;
}
@@ -14059,6 +14060,9 @@ f_has(typval_T *argvars, typval_T *rettv)
#ifdef FEAT_TERMRESPONSE
"termresponse",
#endif
#ifdef FEAT_TERMTRUECOLOR
"termtruecolor",
#endif
#ifdef FEAT_TEXTOBJ
"textobjects",
#endif
@@ -18307,8 +18311,9 @@ set_qf_ll_list(
typval_T *rettv)
{
#ifdef FEAT_QUICKFIX
static char *e_invact = N_("E927: Invalid action: '%s'");
char_u *act;
int action = ' ';
int action = 0;
#endif
rettv->vval.v_number = -1;
@@ -18325,11 +18330,17 @@ set_qf_ll_list(
act = get_tv_string_chk(action_arg);
if (act == NULL)
return; /* type error; errmsg already given */
if (*act == 'a' || *act == 'r')
if ((*act == 'a' || *act == 'r' || *act == ' ') && act[1] == NUL)
action = *act;
else
EMSG2(_(e_invact), act);
}
else if (action_arg->v_type == VAR_UNKNOWN)
action = ' ';
else
EMSG(_(e_stringreq));
if (l != NULL && set_errorlist(wp, l, action,
if (l != NULL && action && set_errorlist(wp, l, action,
(char_u *)(wp == NULL ? "setqflist()" : "setloclist()")) == OK)
rettv->vval.v_number = 0;
}
+4
View File
@@ -369,6 +369,10 @@ EXTERN char_u *use_gvimrc INIT(= NULL); /* "-U" cmdline argument */
EXTERN int cterm_normal_fg_color INIT(= 0);
EXTERN int cterm_normal_fg_bold INIT(= 0);
EXTERN int cterm_normal_bg_color INIT(= 0);
#ifdef FEAT_TERMTRUECOLOR
EXTERN long_u cterm_normal_fg_gui_color INIT(= INVALCOLOR);
EXTERN long_u cterm_normal_bg_gui_color INIT(= INVALCOLOR);
#endif
#ifdef FEAT_AUTOCMD
EXTERN int autocmd_busy INIT(= FALSE); /* Is apply_autocmds() busy? */
+3 -3
View File
@@ -164,7 +164,7 @@ parse_printoptions(void)
#if (defined(FEAT_MBYTE) && defined(FEAT_POSTSCRIPT)) || defined(PROTO)
/*
* Parse 'printoptions' and set the flags in "printer_opts".
* Parse 'printmbfont' and set the flags in "mbfont_opts".
* Returns an error message or NULL;
*/
char_u *
@@ -307,8 +307,8 @@ prt_get_attr(
pattr->underline = (highlight_has_attr(hl_id, HL_UNDERLINE, modec) != NULL);
pattr->undercurl = (highlight_has_attr(hl_id, HL_UNDERCURL, modec) != NULL);
# ifdef FEAT_GUI
if (gui.in_use)
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
if (USE_24BIT)
{
bg_color = highlight_gui_color_rgb(hl_id, FALSE);
if (bg_color == PRCOLOR_BLACK)
+1
View File
@@ -503,6 +503,7 @@ static struct PyMethodDef OutputMethods[] = {
{"readable", (PyCFunction)AlwaysFalse, METH_NOARGS, ""},
{"seekable", (PyCFunction)AlwaysFalse, METH_NOARGS, ""},
{"writable", (PyCFunction)AlwaysTrue, METH_NOARGS, ""},
{"closed", (PyCFunction)AlwaysFalse, METH_NOARGS, ""},
{"__dir__", (PyCFunction)OutputDir, METH_NOARGS, ""},
{ NULL, NULL, 0, NULL}
};
+4 -1
View File
@@ -1199,7 +1199,10 @@ OutputGetattr(PyObject *self, char *name)
return PyInt_FromLong(((OutputObject *)(self))->softspace);
else if (strcmp(name, "__members__") == 0)
return ObjectDir(NULL, OutputAttrs);
else if (strcmp(name, "errors") == 0)
return PyString_FromString("strict");
else if (strcmp(name, "encoding") == 0)
return PyString_FromString(ENC_OPT);
return Py_FindMethod(OutputMethods, self, name);
}
+4
View File
@@ -1100,6 +1100,10 @@ OutputGetattro(PyObject *self, PyObject *nameobj)
if (strcmp(name, "softspace") == 0)
return PyLong_FromLong(((OutputObject *)(self))->softspace);
else if (strcmp(name, "errors") == 0)
return PyString_FromString("strict");
else if (strcmp(name, "encoding") == 0)
return PyString_FromString(ENC_OPT);
return PyObject_GenericGetAttr(self, nameobj);
}
+23 -1
View File
@@ -1333,7 +1333,16 @@ static struct vimoption options[] =
{(char_u *)NULL, (char_u *)0L}
#endif
SCRIPTID_INIT},
{"guicursor", "gcr", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
{"guicolors", "gcol", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
#ifdef FEAT_TERMTRUECOLOR
(char_u *)&p_guicolors, PV_NONE,
{(char_u *)FALSE, (char_u *)FALSE}
#else
(char_u*)NULL, PV_NONE,
{(char_u *)FALSE, (char_u *)FALSE}
#endif
SCRIPTID_INIT},
{"guicursor", "gcr", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef CURSOR_SHAPE
(char_u *)&p_guicursor, PV_NONE,
{
@@ -3066,6 +3075,8 @@ static struct vimoption options[] =
p_term("t_xs", T_XS)
p_term("t_ZH", T_CZH)
p_term("t_ZR", T_CZR)
p_term("t_8f", T_8F)
p_term("t_8b", T_8B)
/* terminal key codes are not in here */
@@ -8492,6 +8503,17 @@ set_bool_option(
#endif
#ifdef FEAT_TERMTRUECOLOR
/* 'guicolors' */
else if ((int *)varp == &p_guicolors)
{
# ifdef FEAT_GUI
if (!gui.in_use && !gui.starting)
# endif
highlight_gui_started();
}
#endif
/*
* End of handling side effects for bool options.
*/
+3
View File
@@ -539,6 +539,9 @@ EXTERN char_u *p_popt; /* 'printoptions' */
EXTERN char_u *p_header; /* 'printheader' */
#endif
EXTERN int p_prompt; /* 'prompt' */
#ifdef FEAT_TERMTRUECOLOR
EXTERN int p_guicolors; /* 'guicolors' */
#endif
#ifdef FEAT_GUI
EXTERN char_u *p_guifont; /* 'guifont' */
# ifdef FEAT_XFONTSET
+5 -2
View File
@@ -5160,7 +5160,8 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
if (pid == 0)
{
int null_fd = -1;
int null_fd = -1;
int stderr_works = TRUE;
/* child */
reset_signals(); /* handle signals normally */
@@ -5197,6 +5198,7 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
{
close(2);
ignored = dup(null_fd);
stderr_works = FALSE;
}
else if (use_out_for_err)
{
@@ -5232,7 +5234,8 @@ mch_start_job(char **argv, job_T *job, jobopt_T *options UNUSED)
/* See above for type of argv. */
execvp(argv[0], argv);
// perror("executing job failed");
if (stderr_works)
perror("executing job failed");
_exit(EXEC_FAILED); /* exec failed, return failure code */
}
+5
View File
@@ -1,4 +1,7 @@
/* term.c */
guicolor_T termtrue_mch_get_color(char_u *name);
guicolor_T termtrue_get_color(char_u *name);
long_u termtrue_mch_get_rgb(guicolor_T color);
int set_termname(char_u *term);
void set_mouse_termcode(int n, char_u *s);
void del_mouse_termcode(int n);
@@ -22,6 +25,8 @@ void term_set_winpos(int x, int y);
void term_set_winsize(int width, int height);
void term_fg_color(int n);
void term_bg_color(int n);
void term_fg_rgb_color(long_u rgb);
void term_bg_rgb_color(long_u rgb);
void term_settitle(char_u *title);
void ttest(int pairs);
void add_long_to_buf(long_u val, char_u *dst);
+77 -23
View File
@@ -7841,7 +7841,7 @@ screen_start_highlight(int attr)
{
if (attr > HL_ALL) /* special HL attr. */
{
if (t_colors > 1)
if (IS_CTERM)
aep = syn_cterm_attr2entry(attr);
else
aep = syn_term_attr2entry(attr);
@@ -7852,8 +7852,16 @@ screen_start_highlight(int attr)
}
if ((attr & HL_BOLD) && T_MD != NULL) /* bold */
out_str(T_MD);
else if (aep != NULL && t_colors > 1 && aep->ae_u.cterm.fg_color
&& cterm_normal_fg_bold)
else if (aep != NULL && cterm_normal_fg_bold &&
#ifdef FEAT_TERMTRUECOLOR
(p_guicolors ?
(aep->ae_u.cterm.fg_rgb != INVALCOLOR):
#endif
(t_colors > 1 && aep->ae_u.cterm.fg_color)
#ifdef FEAT_TERMTRUECOLOR
)
#endif
)
/* If the Normal FG color has BOLD attribute and the new HL
* has a FG color defined, clear BOLD. */
out_str(T_ME);
@@ -7873,17 +7881,29 @@ screen_start_highlight(int attr)
*/
if (aep != NULL)
{
if (t_colors > 1)
#ifdef FEAT_TERMTRUECOLOR
if (p_guicolors)
{
if (aep->ae_u.cterm.fg_color)
term_fg_color(aep->ae_u.cterm.fg_color - 1);
if (aep->ae_u.cterm.bg_color)
term_bg_color(aep->ae_u.cterm.bg_color - 1);
if (aep->ae_u.cterm.fg_rgb != INVALCOLOR)
term_fg_rgb_color(aep->ae_u.cterm.fg_rgb);
if (aep->ae_u.cterm.bg_rgb != INVALCOLOR)
term_bg_rgb_color(aep->ae_u.cterm.bg_rgb);
}
else
#endif
{
if (aep->ae_u.term.start != NULL)
out_str(aep->ae_u.term.start);
if (t_colors > 1)
{
if (aep->ae_u.cterm.fg_color)
term_fg_color(aep->ae_u.cterm.fg_color - 1);
if (aep->ae_u.cterm.bg_color)
term_bg_color(aep->ae_u.cterm.bg_color - 1);
}
else
{
if (aep->ae_u.term.start != NULL)
out_str(aep->ae_u.term.start);
}
}
}
}
@@ -7917,14 +7937,23 @@ screen_stop_highlight(void)
{
attrentry_T *aep;
if (t_colors > 1)
if (IS_CTERM)
{
/*
* Assume that t_me restores the original colors!
*/
aep = syn_cterm_attr2entry(screen_attr);
if (aep != NULL && (aep->ae_u.cterm.fg_color
|| aep->ae_u.cterm.bg_color))
if (aep != NULL &&
#ifdef FEAT_TERMTRUECOLOR
(p_guicolors ?
(aep->ae_u.cterm.fg_rgb != INVALCOLOR ||
aep->ae_u.cterm.bg_rgb != INVALCOLOR):
#endif
(aep->ae_u.cterm.fg_color || aep->ae_u.cterm.bg_color)
#ifdef FEAT_TERMTRUECOLOR
)
#endif
)
do_ME = TRUE;
}
else
@@ -7972,15 +8001,27 @@ screen_stop_highlight(void)
if (do_ME || (screen_attr & (HL_BOLD | HL_INVERSE)))
out_str(T_ME);
if (t_colors > 1)
#ifdef FEAT_TERMTRUECOLOR
if (p_guicolors)
{
/* set Normal cterm colors */
if (cterm_normal_fg_color != 0)
term_fg_color(cterm_normal_fg_color - 1);
if (cterm_normal_bg_color != 0)
term_bg_color(cterm_normal_bg_color - 1);
if (cterm_normal_fg_bold)
out_str(T_MD);
if (cterm_normal_fg_gui_color != INVALCOLOR)
term_fg_rgb_color(cterm_normal_fg_gui_color);
if (cterm_normal_bg_gui_color != INVALCOLOR)
term_bg_rgb_color(cterm_normal_bg_gui_color);
}
else
#endif
{
if (t_colors > 1)
{
/* set Normal cterm colors */
if (cterm_normal_fg_color != 0)
term_fg_color(cterm_normal_fg_color - 1);
if (cterm_normal_bg_color != 0)
term_bg_color(cterm_normal_bg_color - 1);
if (cterm_normal_fg_bold)
out_str(T_MD);
}
}
}
}
@@ -7994,10 +8035,17 @@ screen_stop_highlight(void)
void
reset_cterm_colors(void)
{
if (t_colors > 1)
if (IS_CTERM)
{
/* set Normal cterm colors */
#ifdef FEAT_TERMTRUECOLOR
if (p_guicolors ?
(cterm_normal_fg_gui_color != INVALCOLOR
|| cterm_normal_bg_gui_color != INVALCOLOR):
(cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0))
#else
if (cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0)
#endif
{
out_str(T_OP);
screen_attr = -1;
@@ -8241,7 +8289,7 @@ screen_fill(
#ifdef FEAT_GUI
!gui.in_use &&
#endif
t_colors <= 1);
!IS_CTERM);
for (row = start_row; row < end_row; ++row)
{
#ifdef FEAT_MBYTE
@@ -8938,6 +8986,9 @@ can_clear(char_u *p)
return (*p != NUL && (t_colors <= 1
#ifdef FEAT_GUI
|| gui.in_use
#endif
#ifdef FEAT_TERMTRUECOLOR
|| (p_guicolors && cterm_normal_bg_gui_color != INVALCOLOR)
#endif
|| cterm_normal_bg_color == 0 || *T_UT != NUL));
}
@@ -10270,6 +10321,9 @@ draw_tabline(void)
int use_sep_chars = (t_colors < 8
#ifdef FEAT_GUI
&& !gui.in_use
#endif
#ifdef FEAT_TERMTRUECOLOR
&& !p_guicolors
#endif
);
+1 -2
View File
@@ -4603,7 +4603,6 @@ current_search(
orig_pos = curwin->w_cursor;
pos = curwin->w_cursor;
start_pos = VIsual;
/* make sure, searching further will extend the match */
if (VIsual_active)
@@ -4615,7 +4614,7 @@ current_search(
}
}
else
orig_pos = pos = start_pos = curwin->w_cursor;
orig_pos = pos = curwin->w_cursor;
/* Is the pattern is zero-width? */
one_char = is_one_char(spats[last_idx].pat, TRUE);
+2
View File
@@ -1649,7 +1649,9 @@ find_word(matchinf_T *mip, int mode)
}
}
#endif
#if 0 /* Disabled, see below */
c = mip->mi_compoff;
#endif
++mip->mi_complen;
if (flags & WF_COMPROOT)
++mip->mi_compextra;
+7 -1
View File
@@ -84,7 +84,9 @@ typedef struct file_buffer buf_T; /* forward declaration */
# ifdef FEAT_XCLIPBOARD
# include <X11/Intrinsic.h>
# endif
# define guicolor_T int /* avoid error in prototypes */
# define guicolor_T long_u /* avoid error in prototypes and
* make FEAT_TERMTRUECOLOR work */
# define INVALCOLOR ((guicolor_T)0x1ffffff)
#endif
/*
@@ -911,6 +913,10 @@ typedef struct attr_entry
/* These colors need to be > 8 bits to hold 256. */
short_u fg_color; /* foreground color number */
short_u bg_color; /* background color number */
# ifdef FEAT_TERMTRUECOLOR
long_u fg_rgb; /* foreground color RGB */
long_u bg_rgb; /* background color RGB */
# endif
} cterm;
# ifdef FEAT_GUI
struct
+211 -85
View File
@@ -33,10 +33,12 @@ struct hl_group
int sg_cterm_fg; /* terminal fg color number + 1 */
int sg_cterm_bg; /* terminal bg color number + 1 */
int sg_cterm_attr; /* Screen attr for color term mode */
#ifdef FEAT_GUI
/* for when using the GUI */
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
guicolor_T sg_gui_fg; /* GUI foreground color handle */
guicolor_T sg_gui_bg; /* GUI background color handle */
#endif
#ifdef FEAT_GUI
guicolor_T sg_gui_sp; /* GUI special color handle */
GuiFont sg_font; /* GUI font handle */
#ifdef FEAT_XFONTSET
@@ -97,10 +99,12 @@ static int syn_list_header(int did_header, int outlen, int id);
static int hl_has_settings(int idx, int check_link);
static void highlight_clear(int idx);
#ifdef FEAT_GUI
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
static void gui_do_one_color(int idx, int do_menu, int do_tooltip);
static int set_group_colors(char_u *name, guicolor_T *fgp, guicolor_T *bgp, int do_menu, int use_norm, int do_tooltip);
static guicolor_T color_name2handle(char_u *name);
#endif
#ifdef FEAT_GUI
static int set_group_colors(char_u *name, guicolor_T *fgp, guicolor_T *bgp, int do_menu, int use_norm, int do_tooltip);
static GuiFont font_name2handle(char_u *name);
# ifdef FEAT_XFONTSET
static GuiFontset fontset_name2handle(char_u *name, int fixed_width);
@@ -7334,8 +7338,8 @@ do_highlight(
for (idx = 0; idx < highlight_ga.ga_len; ++idx)
highlight_clear(idx);
init_highlight(TRUE, TRUE);
#ifdef FEAT_GUI
if (gui.in_use)
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
if (USE_24BIT)
highlight_gui_started();
#endif
highlight_changed();
@@ -7789,10 +7793,16 @@ do_highlight(
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
# ifdef FEAT_GUI
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
/* In GUI guifg colors are only used when recognized */
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !gui.in_use)
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0
# ifdef FEAT_GUI
|| !(USE_24BIT)
# else
|| !p_guicolors
# endif
)
{
HL_TABLE()[idx].sg_gui_fg = i;
# endif
@@ -7801,7 +7811,7 @@ do_highlight(
HL_TABLE()[idx].sg_gui_fg_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_fg_name = NULL;
# ifdef FEAT_GUI
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
# ifdef FEAT_GUI_X11
if (is_menu_group)
gui.menu_fg_pixel = i;
@@ -7826,10 +7836,10 @@ do_highlight(
if (!init)
HL_TABLE()[idx].sg_set |= SG_GUI;
# ifdef FEAT_GUI
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
/* In GUI guifg colors are only used when recognized */
i = color_name2handle(arg);
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !gui.in_use)
if (i != INVALCOLOR || STRCMP(arg, "NONE") == 0 || !USE_24BIT)
{
HL_TABLE()[idx].sg_gui_bg = i;
# endif
@@ -7838,7 +7848,7 @@ do_highlight(
HL_TABLE()[idx].sg_gui_bg_name = vim_strsave(arg);
else
HL_TABLE()[idx].sg_gui_bg_name = NULL;
# ifdef FEAT_GUI
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
# ifdef FEAT_GUI_X11
if (is_menu_group)
gui.menu_bg_pixel = i;
@@ -7998,7 +8008,9 @@ do_highlight(
* Need to update all groups, because they might be using "bg"
* and/or "fg", which have been changed now.
*/
if (gui.in_use)
#endif
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
if (USE_24BIT)
highlight_gui_started();
#endif
}
@@ -8069,6 +8081,10 @@ restore_cterm_colors(void)
cterm_normal_fg_color = 0;
cterm_normal_fg_bold = 0;
cterm_normal_bg_color = 0;
# ifdef FEAT_TERMTRUECOLOR
cterm_normal_fg_gui_color = INVALCOLOR;
cterm_normal_bg_gui_color = INVALCOLOR;
# endif
#endif
}
@@ -8119,9 +8135,11 @@ highlight_clear(int idx)
vim_free(HL_TABLE()[idx].sg_gui_sp_name);
HL_TABLE()[idx].sg_gui_sp_name = NULL;
#endif
#ifdef FEAT_GUI
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
HL_TABLE()[idx].sg_gui_fg = INVALCOLOR;
HL_TABLE()[idx].sg_gui_bg = INVALCOLOR;
#endif
#ifdef FEAT_GUI
HL_TABLE()[idx].sg_gui_sp = INVALCOLOR;
gui_mch_free_font(HL_TABLE()[idx].sg_font);
HL_TABLE()[idx].sg_font = NOFONT;
@@ -8141,7 +8159,7 @@ highlight_clear(int idx)
#endif
}
#if defined(FEAT_GUI) || defined(PROTO)
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR) || defined(PROTO)
/*
* Set the normal foreground and background colors according to the "Normal"
* highlighting group. For X11 also set "Menu", "Scrollbar", and
@@ -8150,44 +8168,78 @@ highlight_clear(int idx)
void
set_normal_colors(void)
{
if (set_group_colors((char_u *)"Normal",
&gui.norm_pixel, &gui.back_pixel,
FALSE, TRUE, FALSE))
{
gui_mch_new_colors();
must_redraw = CLEAR;
}
#ifdef FEAT_GUI_X11
if (set_group_colors((char_u *)"Menu",
&gui.menu_fg_pixel, &gui.menu_bg_pixel,
TRUE, FALSE, FALSE))
{
# ifdef FEAT_MENU
gui_mch_new_menu_colors();
#ifdef FEAT_GUI
# ifdef FEAT_TERMTRUECOLOR
if (gui.in_use)
# endif
must_redraw = CLEAR;
}
# ifdef FEAT_BEVAL
if (set_group_colors((char_u *)"Tooltip",
&gui.tooltip_fg_pixel, &gui.tooltip_bg_pixel,
FALSE, FALSE, TRUE))
{
# ifdef FEAT_TOOLBAR
gui_mch_new_tooltip_colors();
if (set_group_colors((char_u *)"Normal",
&gui.norm_pixel, &gui.back_pixel,
FALSE, TRUE, FALSE))
{
gui_mch_new_colors();
must_redraw = CLEAR;
}
# ifdef FEAT_GUI_X11
if (set_group_colors((char_u *)"Menu",
&gui.menu_fg_pixel, &gui.menu_bg_pixel,
TRUE, FALSE, FALSE))
{
# ifdef FEAT_MENU
gui_mch_new_menu_colors();
# endif
must_redraw = CLEAR;
}
# ifdef FEAT_BEVAL
if (set_group_colors((char_u *)"Tooltip",
&gui.tooltip_fg_pixel, &gui.tooltip_bg_pixel,
FALSE, FALSE, TRUE))
{
# ifdef FEAT_TOOLBAR
gui_mch_new_tooltip_colors();
# endif
must_redraw = CLEAR;
}
# endif
if (set_group_colors((char_u *)"Scrollbar",
&gui.scroll_fg_pixel, &gui.scroll_bg_pixel,
FALSE, FALSE, FALSE))
{
gui_new_scrollbar_colors();
must_redraw = CLEAR;
}
# endif
must_redraw = CLEAR;
}
#endif
if (set_group_colors((char_u *)"Scrollbar",
&gui.scroll_fg_pixel, &gui.scroll_bg_pixel,
FALSE, FALSE, FALSE))
#ifdef FEAT_TERMTRUECOLOR
# ifdef FEAT_GUI
else
# endif
{
gui_new_scrollbar_colors();
must_redraw = CLEAR;
int idx;
idx = syn_name2id((char_u *)"Normal") - 1;
if (idx >= 0)
{
gui_do_one_color(idx, FALSE, FALSE);
if (HL_TABLE()[idx].sg_gui_fg != INVALCOLOR)
{
cterm_normal_fg_gui_color = HL_TABLE()[idx].sg_gui_fg;
must_redraw = CLEAR;
}
if (HL_TABLE()[idx].sg_gui_bg != INVALCOLOR)
{
cterm_normal_bg_gui_color = HL_TABLE()[idx].sg_gui_bg;
must_redraw = CLEAR;
}
}
}
#endif
}
#endif
#if defined(FEAT_GUI) || defined(PROTO)
/*
* Set the colors for "Normal", "Menu", "Tooltip" or "Scrollbar".
*/
@@ -8299,24 +8351,6 @@ hl_set_fg_color_name(
}
}
/*
* Return the handle for a color name.
* Returns INVALCOLOR when failed.
*/
static guicolor_T
color_name2handle(char_u *name)
{
if (STRCMP(name, "NONE") == 0)
return INVALCOLOR;
if (STRICMP(name, "fg") == 0 || STRICMP(name, "foreground") == 0)
return gui.norm_pixel;
if (STRICMP(name, "bg") == 0 || STRICMP(name, "background") == 0)
return gui.back_pixel;
return gui_get_color(name);
}
/*
* Return the handle for a font name.
* Returns NOFONT when failed.
@@ -8440,6 +8474,52 @@ hl_do_font(
#endif /* FEAT_GUI */
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR) || defined(PROTO)
/*
* Return the handle for a color name.
* Returns INVALCOLOR when failed.
*/
static guicolor_T
color_name2handle(char_u *name)
{
if (STRCMP(name, "NONE") == 0)
return INVALCOLOR;
if (STRICMP(name, "fg") == 0 || STRICMP(name, "foreground") == 0)
{
#if defined(FEAT_TERMTRUECOLOR) && defined(FEAT_GUI)
if (gui.in_use)
#endif
#ifdef FEAT_GUI
return gui.norm_pixel;
#endif
#if defined(FEAT_TERMTRUECOLOR) && defined(FEAT_GUI)
else
#endif
#ifdef FEAT_TERMTRUECOLOR
return cterm_normal_fg_gui_color;
#endif
}
if (STRICMP(name, "bg") == 0 || STRICMP(name, "background") == 0)
{
#if defined(FEAT_TERMTRUECOLOR) && defined(FEAT_GUI)
if (gui.in_use)
#endif
#ifdef FEAT_GUI
return gui.back_pixel;
#endif
#if defined(FEAT_TERMTRUECOLOR) && defined(FEAT_GUI)
else
#endif
#ifdef FEAT_TERMTRUECOLOR
return cterm_normal_bg_gui_color;
#endif
}
return GUI_GET_COLOR(name);
}
#endif
/*
* Table with the specifications for an attribute number.
* Note that this table is used by ALL buffers. This is required because the
@@ -8515,8 +8595,15 @@ get_attr_entry(garray_T *table, attrentry_T *aep)
&& aep->ae_u.cterm.fg_color
== taep->ae_u.cterm.fg_color
&& aep->ae_u.cterm.bg_color
== taep->ae_u.cterm.bg_color)
))
== taep->ae_u.cterm.bg_color
#ifdef FEAT_TERMTRUECOLOR
&& aep->ae_u.cterm.fg_rgb
== taep->ae_u.cterm.fg_rgb
&& aep->ae_u.cterm.bg_rgb
== taep->ae_u.cterm.bg_rgb
#endif
)))
return i + ATTR_OFF;
}
@@ -8581,6 +8668,10 @@ get_attr_entry(garray_T *table, attrentry_T *aep)
{
taep->ae_u.cterm.fg_color = aep->ae_u.cterm.fg_color;
taep->ae_u.cterm.bg_color = aep->ae_u.cterm.bg_color;
#ifdef FEAT_TERMTRUECOLOR
taep->ae_u.cterm.fg_rgb = aep->ae_u.cterm.fg_rgb;
taep->ae_u.cterm.bg_rgb = aep->ae_u.cterm.bg_rgb;
#endif
}
++table->ga_len;
return (table->ga_len - 1 + ATTR_OFF);
@@ -8672,7 +8763,7 @@ hl_combine_attr(int char_attr, int prim_attr)
}
#endif
if (t_colors > 1)
if (IS_CTERM)
{
if (char_attr > HL_ALL)
char_aep = syn_cterm_attr2entry(char_attr);
@@ -8697,6 +8788,12 @@ hl_combine_attr(int char_attr, int prim_attr)
new_en.ae_u.cterm.fg_color = spell_aep->ae_u.cterm.fg_color;
if (spell_aep->ae_u.cterm.bg_color > 0)
new_en.ae_u.cterm.bg_color = spell_aep->ae_u.cterm.bg_color;
#ifdef FEAT_TERMTRUECOLOR
if (spell_aep->ae_u.cterm.fg_rgb != INVALCOLOR)
new_en.ae_u.cterm.fg_rgb = spell_aep->ae_u.cterm.fg_rgb;
if (spell_aep->ae_u.cterm.bg_rgb != INVALCOLOR)
new_en.ae_u.cterm.bg_rgb = spell_aep->ae_u.cterm.bg_rgb;
#endif
}
}
return get_attr_entry(&cterm_attr_table, &new_en);
@@ -8758,10 +8855,10 @@ syn_attr2attr(int attr)
aep = syn_gui_attr2entry(attr);
else
#endif
if (t_colors > 1)
aep = syn_cterm_attr2entry(attr);
else
aep = syn_term_attr2entry(attr);
if (IS_CTERM)
aep = syn_cterm_attr2entry(attr);
else
aep = syn_term_attr2entry(attr);
if (aep == NULL) /* highlighting not set */
return 0;
@@ -8960,13 +9057,15 @@ highlight_color(
return NULL;
if (modec == 'g')
{
# ifdef FEAT_GUI
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
# ifdef FEAT_GUI
/* return font name */
if (font)
return HL_TABLE()[id - 1].sg_font_name;
# endif
/* return #RRGGBB form (only possible when GUI is running) */
if (gui.in_use && what[2] == '#')
if ((USE_24BIT) && what[2] == '#')
{
guicolor_T color;
long_u rgb;
@@ -8975,19 +9074,23 @@ highlight_color(
if (fg)
color = HL_TABLE()[id - 1].sg_gui_fg;
else if (sp)
# ifdef FEAT_GUI
color = HL_TABLE()[id - 1].sg_gui_sp;
# else
color = INVALCOLOR;
# endif
else
color = HL_TABLE()[id - 1].sg_gui_bg;
if (color == INVALCOLOR)
return NULL;
rgb = gui_mch_get_rgb(color);
rgb = GUI_MCH_GET_RGB(color);
sprintf((char *)buf, "#%02x%02x%02x",
(unsigned)(rgb >> 16),
(unsigned)(rgb >> 8) & 255,
(unsigned)rgb & 255);
return buf;
}
#endif
# endif
if (fg)
return (HL_TABLE()[id - 1].sg_gui_fg_name);
if (sp)
@@ -9012,8 +9115,9 @@ highlight_color(
}
#endif
#if (defined(FEAT_SYN_HL) && defined(FEAT_GUI) && defined(FEAT_PRINTER)) \
|| defined(PROTO)
#if (defined(FEAT_SYN_HL) \
&& (defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)) \
&& defined(FEAT_PRINTER)) || defined(PROTO)
/*
* Return color name of highlight group "id" as RGB value.
*/
@@ -9035,7 +9139,7 @@ highlight_gui_color_rgb(
if (color == INVALCOLOR)
return 0L;
return gui_mch_get_rgb(color);
return GUI_MCH_GET_RGB(color);
}
#endif
@@ -9151,13 +9255,22 @@ set_hl_attr(
* For the color term mode: If there are other than "normal"
* highlighting attributes, need to allocate an attr number.
*/
if (sgp->sg_cterm_fg == 0 && sgp->sg_cterm_bg == 0)
if (sgp->sg_cterm_fg == 0 && sgp->sg_cterm_bg == 0
# ifdef FEAT_TERMTRUECOLOR
&& sgp->sg_gui_fg == INVALCOLOR
&& sgp->sg_gui_bg == INVALCOLOR
# endif
)
sgp->sg_cterm_attr = sgp->sg_cterm;
else
{
at_en.ae_attr = sgp->sg_cterm;
at_en.ae_u.cterm.fg_color = sgp->sg_cterm_fg;
at_en.ae_u.cterm.bg_color = sgp->sg_cterm_bg;
# ifdef FEAT_TERMTRUECOLOR
at_en.ae_u.cterm.fg_rgb = GUI_MCH_GET_RGB(sgp->sg_gui_fg);
at_en.ae_u.cterm.bg_rgb = GUI_MCH_GET_RGB(sgp->sg_gui_bg);
# endif
sgp->sg_cterm_attr = get_attr_entry(&cterm_attr_table, &at_en);
}
}
@@ -9308,10 +9421,12 @@ syn_add_group(char_u *name)
vim_memset(&(HL_TABLE()[highlight_ga.ga_len]), 0, sizeof(struct hl_group));
HL_TABLE()[highlight_ga.ga_len].sg_name = name;
HL_TABLE()[highlight_ga.ga_len].sg_name_u = vim_strsave_up(name);
#ifdef FEAT_GUI
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
HL_TABLE()[highlight_ga.ga_len].sg_gui_bg = INVALCOLOR;
HL_TABLE()[highlight_ga.ga_len].sg_gui_fg = INVALCOLOR;
# ifdef FEAT_GUI
HL_TABLE()[highlight_ga.ga_len].sg_gui_sp = INVALCOLOR;
# endif
#endif
++highlight_ga.ga_len;
@@ -9350,7 +9465,7 @@ syn_id2attr(int hl_id)
attr = sgp->sg_gui_attr;
else
#endif
if (t_colors > 1)
if (IS_CTERM)
attr = sgp->sg_cterm_attr;
else
attr = sgp->sg_term_attr;
@@ -9404,7 +9519,7 @@ syn_get_final_id(int hl_id)
return hl_id;
}
#ifdef FEAT_GUI
#if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
/*
* Call this function just after the GUI has started.
* It finds the font and color handles for the highlighting groups.
@@ -9415,7 +9530,12 @@ highlight_gui_started(void)
int idx;
/* First get the colors from the "Normal" and "Menu" group, if set */
set_normal_colors();
# if defined(FEAT_GUI) || defined(FEAT_TERMTRUECOLOR)
# ifdef FEAT_TERMTRUECOLOR
if (USE_24BIT)
# endif
set_normal_colors();
# endif
for (idx = 0; idx < highlight_ga.ga_len; ++idx)
gui_do_one_color(idx, FALSE, FALSE);
@@ -9431,12 +9551,17 @@ gui_do_one_color(
{
int didit = FALSE;
if (HL_TABLE()[idx].sg_font_name != NULL)
{
hl_do_font(idx, HL_TABLE()[idx].sg_font_name, FALSE, do_menu,
# ifdef FEAT_GUI
# ifdef FEAT_TERMTRUECOLOR
if (gui.in_use)
# endif
if (HL_TABLE()[idx].sg_font_name != NULL)
{
hl_do_font(idx, HL_TABLE()[idx].sg_font_name, FALSE, do_menu,
do_tooltip, TRUE);
didit = TRUE;
}
didit = TRUE;
}
# endif
if (HL_TABLE()[idx].sg_gui_fg_name != NULL)
{
HL_TABLE()[idx].sg_gui_fg =
@@ -9449,16 +9574,17 @@ gui_do_one_color(
color_name2handle(HL_TABLE()[idx].sg_gui_bg_name);
didit = TRUE;
}
# ifdef FEAT_GUI
if (HL_TABLE()[idx].sg_gui_sp_name != NULL)
{
HL_TABLE()[idx].sg_gui_sp =
color_name2handle(HL_TABLE()[idx].sg_gui_sp_name);
didit = TRUE;
}
# endif
if (didit) /* need to get a new attr number */
set_hl_attr(idx);
}
#endif
/*
+205 -3
View File
@@ -77,6 +77,9 @@ struct builtin_term
static struct builtin_term *find_builtin_term(char_u *name);
static void parse_builtin_tcap(char_u *s);
static void term_color(char_u *s, int n);
#ifdef FEAT_TERMTRUECOLOR
static void term_rgb_color(char_u *s, long_u rgb);
#endif
static void gather_termleader(void);
#ifdef FEAT_TERMRESPONSE
static void req_codes_from_term(void);
@@ -382,9 +385,9 @@ static struct builtin_term builtin_termcaps[] =
# else
{(int)KS_CRI, "\033[%dC"},
# endif
#if defined(BEOS_DR8)
# if defined(BEOS_DR8)
{(int)KS_DB, ""}, /* hack! see screen.c */
#endif
# endif
{K_UP, "\033[A"},
{K_DOWN, "\033[B"},
@@ -790,8 +793,10 @@ static struct builtin_term builtin_termcaps[] =
# endif
# endif
# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS) || defined(SOME_BUILTIN_TCAPS) || defined(__EMX__)
# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS) || defined(SOME_BUILTIN_TCAPS) || defined(__EMX__) || defined(FEAT_TERMTRUECOLOR)
{(int)KS_NAME, "xterm"},
# endif
# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS) || defined(SOME_BUILTIN_TCAPS) || defined(__EMX__)
{(int)KS_CE, IF_EB("\033[K", ESC_STR "[K")},
{(int)KS_AL, IF_EB("\033[L", ESC_STR "[L")},
# ifdef TERMINFO
@@ -939,6 +944,10 @@ static struct builtin_term builtin_termcaps[] =
{TERMCAP2KEY('F', 'Q'), IF_EB("\033[57;*~", ESC_STR "[57;*~")}, /* F36 */
{TERMCAP2KEY('F', 'R'), IF_EB("\033[58;*~", ESC_STR "[58;*~")}, /* F37 */
# endif
# ifdef FEAT_TERMTRUECOLOR
{(int)KS_8F, IF_EB("\033[38;2;%lu;%lu;%lum", ESC_STR "[38;2;%lu;%lu;%lum")},
{(int)KS_8B, IF_EB("\033[48;2;%lu;%lu;%lum", ESC_STR "[48;2;%lu;%lu;%lum")},
# endif
# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS)
/*
@@ -1257,6 +1266,171 @@ static struct builtin_term builtin_termcaps[] =
}; /* end of builtin_termcaps */
#if defined(FEAT_TERMTRUECOLOR) || defined(PROTO)
# define RGB(r, g, b) ((r<<16) | (g<<8) | (b))
struct rgbcolor_table_S {
char_u *color_name;
guicolor_T color;
};
static struct rgbcolor_table_S rgb_table[] = {
{(char_u *)"black", RGB(0x00, 0x00, 0x00)},
{(char_u *)"blue", RGB(0x00, 0x00, 0xD4)},
{(char_u *)"brown", RGB(0x80, 0x40, 0x40)},
{(char_u *)"cyan", RGB(0x02, 0xAB, 0xEA)},
{(char_u *)"darkblue", RGB(0x00, 0x00, 0x80)},
{(char_u *)"darkcyan", RGB(0x00, 0x80, 0x80)},
{(char_u *)"darkgray", RGB(0x80, 0x80, 0x80)},
{(char_u *)"darkgreen", RGB(0x00, 0x80, 0x00)},
{(char_u *)"darkgrey", RGB(0x80, 0x80, 0x80)},
{(char_u *)"darkmagenta", RGB(0x80, 0x00, 0x80)},
{(char_u *)"darkred", RGB(0x80, 0x00, 0x00)},
{(char_u *)"darkyellow", RGB(0xBB, 0xBB, 0x00)},
{(char_u *)"gray", RGB(0xC0, 0xC0, 0xC0)},
{(char_u *)"gray10", RGB(0x1A, 0x1A, 0x1A)},
{(char_u *)"gray20", RGB(0x33, 0x33, 0x33)},
{(char_u *)"gray30", RGB(0x4D, 0x4D, 0x4D)},
{(char_u *)"gray40", RGB(0x66, 0x66, 0x66)},
{(char_u *)"gray50", RGB(0x7F, 0x7F, 0x7F)},
{(char_u *)"gray60", RGB(0x99, 0x99, 0x99)},
{(char_u *)"gray70", RGB(0xB3, 0xB3, 0xB3)},
{(char_u *)"gray80", RGB(0xCC, 0xCC, 0xCC)},
{(char_u *)"gray90", RGB(0xE5, 0xE5, 0xE5)},
{(char_u *)"green", RGB(0x00, 0x64, 0x11)},
{(char_u *)"grey", RGB(0xC0, 0xC0, 0xC0)},
{(char_u *)"grey10", RGB(0x1A, 0x1A, 0x1A)},
{(char_u *)"grey20", RGB(0x33, 0x33, 0x33)},
{(char_u *)"grey30", RGB(0x4D, 0x4D, 0x4D)},
{(char_u *)"grey40", RGB(0x66, 0x66, 0x66)},
{(char_u *)"grey50", RGB(0x7F, 0x7F, 0x7F)},
{(char_u *)"grey60", RGB(0x99, 0x99, 0x99)},
{(char_u *)"grey70", RGB(0xB3, 0xB3, 0xB3)},
{(char_u *)"grey80", RGB(0xCC, 0xCC, 0xCC)},
{(char_u *)"grey90", RGB(0xE5, 0xE5, 0xE5)},
{(char_u *)"lightblue", RGB(0xA0, 0xA0, 0xFF)},
{(char_u *)"lightcyan", RGB(0xA0, 0xFF, 0xFF)},
{(char_u *)"lightgray", RGB(0xE0, 0xE0, 0xE0)},
{(char_u *)"lightgreen", RGB(0xA0, 0xFF, 0xA0)},
{(char_u *)"lightgrey", RGB(0xE0, 0xE0, 0xE0)},
{(char_u *)"lightmagenta",RGB(0xF0, 0xA0, 0xF0)},
{(char_u *)"lightred", RGB(0xFF, 0xA0, 0xA0)},
{(char_u *)"lightyellow", RGB(0xFF, 0xFF, 0xA0)},
{(char_u *)"magenta", RGB(0xF2, 0x08, 0x84)},
{(char_u *)"orange", RGB(0xFC, 0x80, 0x00)},
{(char_u *)"purple", RGB(0xA0, 0x20, 0xF0)},
{(char_u *)"red", RGB(0xDD, 0x08, 0x06)},
{(char_u *)"seagreen", RGB(0x2E, 0x8B, 0x57)},
{(char_u *)"slateblue", RGB(0x6A, 0x5A, 0xCD)},
{(char_u *)"violet", RGB(0x8D, 0x38, 0xC9)},
{(char_u *)"white", RGB(0xFF, 0xFF, 0xFF)},
{(char_u *)"yellow", RGB(0xFC, 0xF3, 0x05)},
};
static int
hex_digit(int c)
{
if (isdigit(c))
return c - '0';
c = TOLOWER_ASC(c);
if (c >= 'a' && c <= 'f')
return c - 'a' + 10;
return 0x1ffffff;
}
guicolor_T
termtrue_mch_get_color(char_u *name)
{
guicolor_T color;
int i;
if (*name == '#' && strlen((char *) name) == 7)
{
color = RGB(((hex_digit(name[1])<<4) + hex_digit(name[2])),
((hex_digit(name[3])<<4) + hex_digit(name[4])),
((hex_digit(name[5])<<4) + hex_digit(name[6])));
if (color > 0xffffff)
return INVALCOLOR;
return color;
}
else
{
/* Check if the name is one of the colors we know */
for (i = 0; i < sizeof(rgb_table) / sizeof(rgb_table[0]); i++)
if (STRICMP(name, rgb_table[i].color_name) == 0)
return rgb_table[i].color;
}
/*
* Last attempt. Look in the file "$VIM/rgb.txt".
*/
{
#define LINE_LEN 100
FILE *fd;
char line[LINE_LEN];
char_u *fname;
int r, g, b;
fname = expand_env_save((char_u *)"$VIMRUNTIME/rgb.txt");
if (fname == NULL)
return INVALCOLOR;
fd = fopen((char *)fname, "rt");
vim_free(fname);
if (fd == NULL)
return INVALCOLOR;
while (!feof(fd))
{
int len;
int pos;
char *color;
fgets(line, LINE_LEN, fd);
len = strlen(line);
if (len <= 1 || line[len-1] != '\n')
continue;
line[len-1] = '\0';
i = sscanf(line, "%d %d %d %n", &r, &g, &b, &pos);
if (i != 3)
continue;
color = line + pos;
if (STRICMP(color, name) == 0)
{
fclose(fd);
return (guicolor_T) RGB(r, g, b);
}
}
fclose(fd);
}
return INVALCOLOR;
}
guicolor_T
termtrue_get_color(char_u *name)
{
guicolor_T t;
if (*name == NUL)
return INVALCOLOR;
t = termtrue_mch_get_color(name);
if (t == INVALCOLOR)
EMSG2(_("E254: Cannot allocate color %s"), name);
return t;
}
long_u
termtrue_mch_get_rgb(guicolor_T color)
{
return (long_u) color;
}
#endif
/*
* DEFAULT_TERM is used, when no terminal is specified with -T option or $TERM.
*/
@@ -1512,6 +1686,7 @@ set_termname(char_u *term)
{KS_CWP, "WP"}, {KS_CWS, "WS"},
{KS_CSI, "SI"}, {KS_CEI, "EI"},
{KS_U7, "u7"}, {KS_RBG, "RB"},
{KS_8F, "8f"}, {KS_8B, "8b"},
{(enum SpecialKey)0, NULL}
};
@@ -2608,6 +2783,33 @@ term_color(char_u *s, int n)
OUT_STR(tgoto((char *)s, 0, n));
}
#if defined(FEAT_TERMTRUECOLOR) || defined(PROTO)
void
term_fg_rgb_color(long_u rgb)
{
term_rgb_color(T_8F, rgb);
}
void
term_bg_rgb_color(long_u rgb)
{
term_rgb_color(T_8B, rgb);
}
#define RED(rgb) ((rgb>>16)&0xFF)
#define GREEN(rgb) ((rgb>> 8)&0xFF)
#define BLUE(rgb) ((rgb )&0xFF)
static void
term_rgb_color(char_u *s, long_u rgb)
{
char buf[7+3*3+2+1+1];
sprintf(buf, (char *)s, RED(rgb), GREEN(rgb), BLUE(rgb));
OUT_STR(buf);
}
#endif
#if (defined(FEAT_TITLE) && (defined(UNIX) || defined(VMS) \
|| defined(MACOS_X))) || defined(PROTO)
/*
+6 -2
View File
@@ -87,10 +87,12 @@ enum SpecialKey
KS_CSV, /* scroll region vertical */
#endif
KS_OP, /* original color pair */
KS_U7 /* request cursor position */
KS_U7, /* request cursor position */
KS_8F, /* set foreground color (RGB) */
KS_8B /* set background color (RGB) */
};
#define KS_LAST KS_U7
#define KS_LAST KS_8B
/*
* the terminal capabilities are stored in this array
@@ -166,6 +168,8 @@ extern char_u *(term_strings[]); /* current terminal strings */
#define T_RBG (term_str(KS_RBG)) /* request background RGB */
#define T_OP (term_str(KS_OP)) /* original color pair */
#define T_U7 (term_str(KS_U7)) /* request cursor position */
#define T_8F (term_str(KS_8F)) /* set foreground color (RGB) */
#define T_8B (term_str(KS_8B)) /* set background color (RGB) */
#define TMODE_COOK 0 /* terminal mode for external cmds and Ex mode */
#define TMODE_SLEEP 1 /* terminal mode for sleeping (cooked but no echo) */
+5
View File
@@ -1289,6 +1289,11 @@ ee('assert sys.stdout.writable()==True')
ee('assert sys.stdout.readable()==False')
ee('assert sys.stderr.writable()==True')
ee('assert sys.stderr.readable()==False')
ee('assert sys.stdout.closed()==False')
ee('assert sys.stderr.closed()==False')
ee('assert sys.stdout.errors=="strict"')
ee('assert sys.stderr.errors=="strict"')
ee('assert sys.stdout.encoding==sys.stderr.encoding')
ee('sys.stdout.write(None)')
cb.append(">> OutputWriteLines")
ee('sys.stdout.writelines(None)')
+6 -1
View File
@@ -449,7 +449,7 @@ range:__dir__,__members__,append,end,start
dictionary:__dir__,__members__,get,has_key,items,keys,locked,pop,popitem,scope,update,values
list:__dir__,__members__,extend,locked
function:__dir__,__members__,args,self,softspace
output:__dir__,__members__,close,flush,isatty,readable,seekable,softspace,writable,write,writelines
output:__dir__,__members__,close,closed,flush,isatty,readable,seekable,softspace,writable,write,writelines
{}
{'a': 1}
{'a': 1}
@@ -600,6 +600,11 @@ assert sys.stdout.writable()==True:NOT FAILED
assert sys.stdout.readable()==False:NOT FAILED
assert sys.stderr.writable()==True:NOT FAILED
assert sys.stderr.readable()==False:NOT FAILED
assert sys.stdout.closed()==False:NOT FAILED
assert sys.stderr.closed()==False:NOT FAILED
assert sys.stdout.errors=="strict":NOT FAILED
assert sys.stderr.errors=="strict":NOT FAILED
assert sys.stdout.encoding==sys.stderr.encoding:NOT FAILED
sys.stdout.write(None):TypeError:('coercing to Unicode: need string or buffer, NoneType found',)
>> OutputWriteLines
sys.stdout.writelines(None):TypeError:("'NoneType' object is not iterable",)
+5
View File
@@ -1283,6 +1283,11 @@ ee('assert sys.stdout.writable()==True')
ee('assert sys.stdout.readable()==False')
ee('assert sys.stderr.writable()==True')
ee('assert sys.stderr.readable()==False')
ee('assert sys.stdout.closed()==False')
ee('assert sys.stderr.closed()==False')
ee('assert sys.stdout.errors=="strict"')
ee('assert sys.stderr.errors=="strict"')
ee('assert sys.stdout.encoding==sys.stderr.encoding')
ee('sys.stdout.write(None)')
cb.append(">> OutputWriteLines")
ee('sys.stdout.writelines(None)')
+6 -1
View File
@@ -449,7 +449,7 @@ range:__dir__,append,end,start
dictionary:__dir__,get,has_key,items,keys,locked,pop,popitem,scope,update,values
list:__dir__,extend,locked
function:__dir__,args,self,softspace
output:__dir__,close,flush,isatty,readable,seekable,softspace,writable,write,writelines
output:__dir__,close,closed,flush,isatty,readable,seekable,softspace,writable,write,writelines
{}
{'a': 1}
{'a': 1}
@@ -600,6 +600,11 @@ assert sys.stdout.writable()==True:NOT FAILED
assert sys.stdout.readable()==False:NOT FAILED
assert sys.stderr.writable()==True:NOT FAILED
assert sys.stderr.readable()==False:NOT FAILED
assert sys.stdout.closed()==False:NOT FAILED
assert sys.stderr.closed()==False:NOT FAILED
assert sys.stdout.errors=="strict":NOT FAILED
assert sys.stderr.errors=="strict":NOT FAILED
assert sys.stdout.encoding==sys.stderr.encoding:NOT FAILED
sys.stdout.write(None):(<class 'TypeError'>, TypeError("Can't convert 'NoneType' object to str implicitly",))
>> OutputWriteLines
sys.stdout.writelines(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
+94 -8
View File
@@ -501,7 +501,7 @@ endfunction
function Test_locationlist_curwin_was_closed()
augroup testgroup
au!
autocmd BufReadCmd t call R(expand("<amatch>"))
autocmd BufReadCmd test_curwin.txt call R(expand("<amatch>"))
augroup END
function! R(n)
@@ -510,7 +510,7 @@ function Test_locationlist_curwin_was_closed()
new
let q = []
call add(q, {'filename': 't' })
call add(q, {'filename': 'test_curwin.txt' })
call setloclist(0, q)
call assert_fails('lrewind', 'E924:')
@@ -643,14 +643,14 @@ function XquickfixChangedByAutocmd(cchar)
let Xgetexpr = a:cchar . 'getexpr'
let Xrewind = a:cchar . 'rewind'
if a:cchar == 'c'
let Xsetlist = 'setqflist('
let Xsetlist = function('setqflist')
let ErrorNr = 'E925'
function! ReadFunc()
colder
cgetexpr []
endfunc
else
let Xsetlist = 'setloclist(0,'
let Xsetlist = function('setloclist', [0])
let ErrorNr = 'E926'
function! ReadFunc()
lolder
@@ -660,15 +660,15 @@ function XquickfixChangedByAutocmd(cchar)
augroup testgroup
au!
autocmd BufReadCmd t call ReadFunc()
autocmd BufReadCmd test_changed.txt call ReadFunc()
augroup END
bwipe!
new | only
let words = [ "a", "b" ]
let qflist = []
for word in words
call add(qflist, {'filename': 't'})
exec "call " . Xsetlist . "qflist, '')"
call add(qflist, {'filename': 'test_changed.txt'})
call Xsetlist(qflist, ' ')
endfor
exec "call assert_fails('" . Xrewind . "', '" . ErrorNr . ":')"
@@ -745,3 +745,89 @@ function Test_setqflist()
call delete('Xtestfile')
endfunction
function! XquickfixSetListWithAct(cchar)
let Xolder = a:cchar . 'older'
let Xnewer = a:cchar . 'newer'
if a:cchar == 'c'
let Xsetlist = function('setqflist')
let Xgetlist = function('getqflist')
else
let Xsetlist = function('setloclist', [0])
let Xgetlist = function('getloclist', [0])
endif
let list1 = [{'filename': 'fnameA', 'text': 'A'},
\ {'filename': 'fnameB', 'text': 'B'}]
let list2 = [{'filename': 'fnameC', 'text': 'C'},
\ {'filename': 'fnameD', 'text': 'D'},
\ {'filename': 'fnameE', 'text': 'E'}]
" {action} is unspecified. Same as specifing ' '.
new | only
exec "silent! " . Xnewer . "99"
call Xsetlist(list1)
call Xsetlist(list2)
let li = Xgetlist()
call assert_equal(3, len(li))
call assert_equal('C', li[0]['text'])
call assert_equal('D', li[1]['text'])
call assert_equal('E', li[2]['text'])
exec "silent! " . Xolder
let li = Xgetlist()
call assert_equal(2, len(li))
call assert_equal('A', li[0]['text'])
call assert_equal('B', li[1]['text'])
" {action} is specified ' '.
new | only
exec "silent! " . Xnewer . "99"
call Xsetlist(list1)
call Xsetlist(list2, ' ')
let li = Xgetlist()
call assert_equal(3, len(li))
call assert_equal('C', li[0]['text'])
call assert_equal('D', li[1]['text'])
call assert_equal('E', li[2]['text'])
exec "silent! " . Xolder
let li = Xgetlist()
call assert_equal(2, len(li))
call assert_equal('A', li[0]['text'])
call assert_equal('B', li[1]['text'])
" {action} is specified 'a'.
new | only
exec "silent! " . Xnewer . "99"
call Xsetlist(list1)
call Xsetlist(list2, 'a')
let li = Xgetlist()
call assert_equal(5, len(li))
call assert_equal('A', li[0]['text'])
call assert_equal('B', li[1]['text'])
call assert_equal('C', li[2]['text'])
call assert_equal('D', li[3]['text'])
call assert_equal('E', li[4]['text'])
" {action} is specified 'r'.
new | only
exec "silent! " . Xnewer . "99"
call Xsetlist(list1)
call Xsetlist(list2, 'r')
let li = Xgetlist()
call assert_equal(3, len(li))
call assert_equal('C', li[0]['text'])
call assert_equal('D', li[1]['text'])
call assert_equal('E', li[2]['text'])
" Test for wrong value.
new | only
call assert_fails("call Xsetlist(0)", 'E714:')
call assert_fails("call Xsetlist(list1, '')", 'E927:')
call assert_fails("call Xsetlist(list1, 'aa')", 'E927:')
call assert_fails("call Xsetlist(list1, ' a')", 'E927:')
call assert_fails("call Xsetlist(list1, 0)", 'E928:')
endfunc
function Test_quickfix_set_list_with_act()
call XquickfixSetListWithAct('c')
call XquickfixSetListWithAct('l')
endfunction
+25
View File
@@ -631,6 +631,11 @@ static char *(features[]) =
#else
"-termresponse",
#endif
#ifdef FEAT_TERMTRUECOLOR
"+termtruecolor",
#else
"-termtruecolor",
#endif
#ifdef FEAT_TEXTOBJ
"+textobjects",
#else
@@ -763,6 +768,26 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1770,
/**/
1769,
/**/
1768,
/**/
1767,
/**/
1766,
/**/
1765,
/**/
1764,
/**/
1763,
/**/
1762,
/**/
1761,
/**/
1760,
/**/
+25
View File
@@ -1561,6 +1561,31 @@ typedef UINT32_TYPEDEF UINT32_T;
#define MSG_PUTS_LONG(s) msg_puts_long_attr((char_u *)(s), 0)
#define MSG_PUTS_LONG_ATTR(s, a) msg_puts_long_attr((char_u *)(s), (a))
#ifdef FEAT_GUI
# ifdef FEAT_TERMTRUECOLOR
# define GUI_FUNCTION(f) (gui.in_use ? gui_##f : termtrue_##f)
# define USE_24BIT (gui.in_use || p_guicolors)
# else
# define GUI_FUNCTION(f) gui_##f
# define USE_24BIT gui.in_use
# endif
#else
# ifdef FEAT_TERMTRUECOLOR
# define GUI_FUNCTION(f) termtrue_##f
# define USE_24BIT p_guicolors
# endif
#endif
#ifdef FEAT_TERMTRUECOLOR
# define IS_CTERM (t_colors > 1 || p_guicolors)
#else
# define IS_CTERM (t_colors > 1)
#endif
#ifdef GUI_FUNCTION
# define GUI_MCH_GET_RGB GUI_FUNCTION(mch_get_rgb)
# define GUI_MCH_GET_COLOR GUI_FUNCTION(mch_get_color)
# define GUI_GET_COLOR GUI_FUNCTION(get_color)
#endif
/* Prefer using emsg3(), because perror() may send the output to the wrong
* destination and mess up the screen. */
#ifdef HAVE_STRERROR