Merge #6364 'command-line color hook'

This commit is contained in:
Justin M. Keyes
2017-08-16 00:20:37 +02:00
16 changed files with 1526 additions and 96 deletions

View File

@@ -4703,6 +4703,7 @@ input({opts})
cancelreturn "" Same as {cancelreturn} from
|inputdialog()|. Also works with
input().
highlight nothing Highlight handler: |Funcref|.
The highlighting set with |:echohl| is used for the prompt.
The input is entered just like a command-line, with the same
@@ -4725,7 +4726,35 @@ input({opts})
"-complete=" argument. Refer to |:command-completion| for
more information. Example: >
let fname = input("File: ", "", "file")
<
< *E5400* *E5402*
The optional `highlight` key allows specifying function which
will be used for highlighting user input. This function
receives user input as its only argument and must return
a list of 3-tuples [hl_start_col, hl_end_col + 1, hl_group]
where
hl_start_col is the first highlighted column,
hl_end_col is the last highlighted column (+ 1!),
hl_group is |:hl| group used for highlighting.
*E5403* *E5404* *E5405* *E5406*
Both hl_start_col and hl_end_col + 1 must point to the start
of the multibyte character (highlighting must not break
multibyte characters), hl_end_col + 1 may be equal to the
input length. Start column must be in range [0, len(input)),
end column must be in range (hl_start_col, len(input)],
sections must be ordered so that next hl_start_col is greater
then or equal to previous hl_end_col.
Highlight function is called at least once for each new
displayed input string, before command-line is redrawn. It is
expected that function is pure for the duration of one input()
call, i.e. it produces the same output for the same input, so
output may be memoized. Function is run like under |:silent|
modifier. If the function causes any errors, it will be
skipped for the duration of the current input() call.
Currently coloring is disabled when command-line contains
arabic characters.
NOTE: This function must not be used in a startup file, for
the versions that only run in GUI mode (e.g., the Win32 GUI).
Note: When input() is called from within a mapping it will

View File

@@ -129,7 +129,6 @@ Commands:
Functions:
|dictwatcheradd()| notifies a callback whenever a |Dict| is modified
|dictwatcherdel()|
|execute()| works with |:redir|
|menu_get()|
|msgpackdump()|, |msgpackparse()| provide msgpack de/serialization
@@ -147,6 +146,14 @@ Highlight groups:
|hl-TermCursorNC|
|hl-Whitespace| highlights 'listchars' whitespace
UI:
*E5408* *E5409* *g:Nvim_color_expr* *g:Nvim_color_cmdline*
Command-line coloring is supported. Only |input()| and |inputdialog()| may
be colored. For testing purposes expressions (e.g. |i_CTRL-R_=|) and regular
command-line (|:|) are colored by callbacks defined in `g:Nvim_color_expr`
and `g:Nvim_color_cmdline` respectively (these callbacks are for testing
only, and will be removed in a future version).
==============================================================================
4. Changed features *nvim-features-changed*
@@ -174,6 +181,8 @@ one. It does not attempt to mix data from the two.
|system()| does not support writing/reading "backgrounded" commands. |E5677|
|:redir| nested in |execute()| works.
Nvim may throttle (skip) messages from shell commands (|:!|, |:grep|, |:make|)
if there is too much output. No data is lost, this only affects display and
makes things faster. |:terminal| output is never throttled.
@@ -265,6 +274,8 @@ Lua interface (|if_lua.txt|):
on cancel and completion respectively) via dictionary argument (replaces all
other arguments if used).
|input()| and |inputdialog()| now support user-defined cmdline highlighting.
==============================================================================
5. Missing legacy features *nvim-features-missing*