mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
+243
-259
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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`.
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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
@@ -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):
|
||||
|
||||
Vendored
+150
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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@
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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) */
|
||||
|
||||
@@ -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)')
|
||||
|
||||
@@ -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",)
|
||||
|
||||
@@ -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)')
|
||||
|
||||
@@ -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",))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
/**/
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user