To: vim_dev@googlegroups.com Subject: Patch 8.1.1726 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.1726 Problem: The eval.txt help file is too big. Solution: Split off testing support to testing.txt. Move function details to where the functionality is explained. Files: runtime/doc/Makefile, runtime/doc/eval.txt, runtime/doc/testing.txt, runtime/doc/sign.txt, runtime/doc/textprop.txt, runtime/doc/help.txt, runtime/doc/channel.txt, runtime/doc/tags *** ../vim-8.1.1725/runtime/doc/Makefile 2019-05-12 21:43:24.626559005 +0200 --- runtime/doc/Makefile 2019-07-21 16:14:05.897985841 +0200 *************** *** 103,108 **** --- 103,109 ---- tagsrch.txt \ term.txt \ terminal.txt \ + testing.txt \ textprop.txt \ tips.txt \ todo.txt \ *************** *** 241,246 **** --- 242,248 ---- tagsrch.html \ term.html \ terminal.html \ + testing.html \ textprop.html \ tips.html \ todo.html \ *** ../vim-8.1.1725/runtime/doc/eval.txt 2019-07-21 14:14:22.792237715 +0200 --- runtime/doc/eval.txt 2019-07-21 16:33:01.193863191 +0200 *************** *** 31,37 **** 11. No +eval feature |no-eval-feature| 12. The sandbox |eval-sandbox| 13. Textlock |textlock| ! 14. Testing |testing| ============================================================================== 1. Variables *variables* --- 31,39 ---- 11. No +eval feature |no-eval-feature| 12. The sandbox |eval-sandbox| 13. Textlock |textlock| ! ! Testing support is documented in |testing.txt|. ! Profiling is documented at |profiling|. ============================================================================== 1. Variables *variables* *************** *** 1198,1205 **** Examples: > :let dict = {"one": 1, 2: "two"} ! :echo dict.one ! :echo dict .2 Note that the dot is also used for String concatenation. To avoid confusion always put spaces around the dot for String concatenation. --- 1200,1208 ---- Examples: > :let dict = {"one": 1, 2: "two"} ! :echo dict.one " shows "1" ! :echo dict.2 " shows "two" ! :echo dict .2 " error because of space before the dot Note that the dot is also used for String concatenation. To avoid confusion always put spaces around the dot for String concatenation. *************** *** 2115,2126 **** *v:termresponse* *termresponse-variable* v:termresponse The escape sequence returned by the terminal for the |t_RV| termcap entry. It is set when Vim receives an escape sequence ! that starts with ESC [ or CSI and ends in a 'c', with only ! digits, ';' and '.' in between. When this option is set, the TermResponse autocommand event is fired, so that you can react to the response from the terminal. ! The response from a new xterm is: "[ Pp ; Pv ; Pc c". Pp is the terminal type: 0 for vt100 and 1 for vt220. Pv is the patch level (since this was introduced in patch 95, it's always 95 or bigger). Pc is always zero. --- 2118,2129 ---- *v:termresponse* *termresponse-variable* v:termresponse The escape sequence returned by the terminal for the |t_RV| termcap entry. It is set when Vim receives an escape sequence ! that starts with ESC [ or CSI, then '>' or '?' and ends in a ! 'c', with only digits and ';' in between. When this option is set, the TermResponse autocommand event is fired, so that you can react to the response from the terminal. ! The response from a new xterm is: "[> Pp ; Pv ; Pc c". Pp is the terminal type: 0 for vt100 and 1 for vt220. Pv is the patch level (since this was introduced in patch 95, it's always 95 or bigger). Pc is always zero. *************** *** 2190,2196 **** *v:version* *version-variable* v:version Version number of Vim: Major version number times 100 plus ! minor version number. Version 5.0 is 500. Version 5.1 (5.01) is 501. Read-only. "version" also works, for backwards compatibility, unless |scriptversion| is 3 or higher. Use |has()| to check if a certain patch was included, e.g.: > --- 2193,2199 ---- *v:version* *version-variable* v:version Version number of Vim: Major version number times 100 plus ! minor version number. Version 5.0 is 500. Version 5.1 is 501. Read-only. "version" also works, for backwards compatibility, unless |scriptversion| is 3 or higher. Use |has()| to check if a certain patch was included, e.g.: > *************** *** 2200,2209 **** completely different. *v:versionlong* *versionlong-variable* ! v:versionlong Like v:version, but also including the patchlevel. Version ! 8.1 with patch 1234 has value 8011234. This can be used like ! this: > ! if v:versionlong >= 8011234 < However, if there are gaps in the list of patches included this will not work well. This can happen if a recent patch was included into an older version, e.g. for a security fix. --- 2203,2212 ---- completely different. *v:versionlong* *versionlong-variable* ! v:versionlong Like v:version, but also including the patchlevel in the last ! four digits. Version 8.1 with patch 123 has value 8010123. ! This can be used like this: > ! if v:versionlong >= 8010123 < However, if there are gaps in the list of patches included this will not work well. This can happen if a recent patch was included into an older version, e.g. for a security fix. *************** *** 2951,3067 **** The {winid} argument specifies the window ID, see |argc()|. - assert_beeps({cmd}) *assert_beeps()* - Run {cmd} and add an error message to |v:errors| if it does - NOT produce a beep or visual bell. - Also see |assert_fails()| and |assert-return|. - - *assert_equal()* - assert_equal({expected}, {actual} [, {msg}]) - When {expected} and {actual} are not equal an error message is - added to |v:errors| and 1 is returned. Otherwise zero is - returned |assert-return|. - There is no automatic conversion, the String "4" is different - from the Number 4. And the number 4 is different from the - Float 4.0. The value of 'ignorecase' is not used here, case - always matters. - When {msg} is omitted an error in the form "Expected - {expected} but got {actual}" is produced. - Example: > - assert_equal('foo', 'bar') - < Will result in a string to be added to |v:errors|: - test.vim line 12: Expected 'foo' but got 'bar' ~ ! *assert_equalfile()* ! assert_equalfile({fname-one}, {fname-two}) ! When the files {fname-one} and {fname-two} do not contain ! exactly the same text an error message is added to |v:errors|. ! Also see |assert-return|. ! When {fname-one} or {fname-two} does not exist the error will ! mention that. ! Mainly useful with |terminal-diff|. ! ! assert_exception({error} [, {msg}]) *assert_exception()* ! When v:exception does not contain the string {error} an error ! message is added to |v:errors|. Also see |assert-return|. ! This can be used to assert that a command throws an exception. ! Using the error number, followed by a colon, avoids problems ! with translations: > ! try ! commandthatfails ! call assert_false(1, 'command should have failed') ! catch ! call assert_exception('E492:') ! endtry ! ! assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()* ! Run {cmd} and add an error message to |v:errors| if it does ! NOT produce an error. Also see |assert-return|. ! When {error} is given it must match in |v:errmsg|. ! Note that beeping is not considered an error, and some failing ! commands only beep. Use |assert_beeps()| for those. ! ! assert_false({actual} [, {msg}]) *assert_false()* ! When {actual} is not false an error message is added to ! |v:errors|, like with |assert_equal()|. ! Also see |assert-return|. ! A value is false when it is zero. When {actual} is not a ! number the assert fails. ! When {msg} is omitted an error in the form ! "Expected False but got {actual}" is produced. ! ! assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* ! This asserts number and |Float| values. When {actual} is lower ! than {lower} or higher than {upper} an error message is added ! to |v:errors|. Also see |assert-return|. ! When {msg} is omitted an error in the form ! "Expected range {lower} - {upper}, but got {actual}" is ! produced. ! ! *assert_match()* ! assert_match({pattern}, {actual} [, {msg}]) ! When {pattern} does not match {actual} an error message is ! added to |v:errors|. Also see |assert-return|. ! ! {pattern} is used as with |=~|: The matching is always done ! like 'magic' was set and 'cpoptions' is empty, no matter what ! the actual value of 'magic' or 'cpoptions' is. ! ! {actual} is used as a string, automatic conversion applies. ! Use "^" and "$" to match with the start and end of the text. ! Use both to match the whole text. ! ! When {msg} is omitted an error in the form ! "Pattern {pattern} does not match {actual}" is produced. ! Example: > ! assert_match('^f.*o$', 'foobar') ! < Will result in a string to be added to |v:errors|: ! test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ ! ! *assert_notequal()* ! assert_notequal({expected}, {actual} [, {msg}]) ! The opposite of `assert_equal()`: add an error message to ! |v:errors| when {expected} and {actual} are equal. ! Also see |assert-return|. ! ! *assert_notmatch()* ! assert_notmatch({pattern}, {actual} [, {msg}]) ! The opposite of `assert_match()`: add an error message to ! |v:errors| when {pattern} matches {actual}. ! Also see |assert-return|. ! ! assert_report({msg}) *assert_report()* ! Report a test failure directly, using {msg}. ! Always returns one. ! ! assert_true({actual} [, {msg}]) *assert_true()* ! When {actual} is not true an error message is added to ! |v:errors|, like with |assert_equal()|. ! Also see |assert-return|. ! A value is TRUE when it is a non-zero number. When {actual} ! is not a number the assert fails. ! When {msg} is omitted an error in the form "Expected True but ! got {actual}" is produced. asin({expr}) *asin()* Return the arc sine of {expr} measured in radians, as a |Float| --- 2954,2962 ---- The {winid} argument specifies the window ID, see |argc()|. ! assert_ functions are documented here: |assert-functions| ! asin({expr}) *asin()* Return the arc sine of {expr} measured in radians, as a |Float| *************** *** 3357,3569 **** < 4.0 {only available when compiled with the |+float| feature} - ch_canread({handle}) *ch_canread()* - Return non-zero when there is something to read from {handle}. - {handle} can be a Channel or a Job that has a Channel. - - This is useful to read from a channel at a convenient time, - e.g. from a timer. - - Note that messages are dropped when the channel does not have - a callback. Add a close callback to avoid that. - - {only available when compiled with the |+channel| feature} - - ch_close({handle}) *ch_close()* - Close {handle}. See |channel-close|. - {handle} can be a Channel or a Job that has a Channel. - A close callback is not invoked. - - {only available when compiled with the |+channel| feature} - - ch_close_in({handle}) *ch_close_in()* - Close the "in" part of {handle}. See |channel-close-in|. - {handle} can be a Channel or a Job that has a Channel. - A close callback is not invoked. - - {only available when compiled with the |+channel| feature} - - ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()* - Send {expr} over {handle}. The {expr} is encoded - according to the type of channel. The function cannot be used - with a raw channel. See |channel-use|. - {handle} can be a Channel or a Job that has a Channel. - *E917* - {options} must be a Dictionary. It must not have a "callback" - entry. It can have a "timeout" entry to specify the timeout - for this specific request. ! ch_evalexpr() waits for a response and returns the decoded ! expression. When there is an error or timeout it returns an ! empty string. ! ! {only available when compiled with the |+channel| feature} - ch_evalraw({handle}, {string} [, {options}]) *ch_evalraw()* - Send {string} over {handle}. - {handle} can be a Channel or a Job that has a Channel. - - Works like |ch_evalexpr()|, but does not encode the request or - decode the response. The caller is responsible for the - correct contents. Also does not add a newline for a channel - in NL mode, the caller must do that. The NL in the response - is removed. - Note that Vim does not know when the text received on a raw - channel is complete, it may only return the first part and you - need to use |ch_readraw()| to fetch the rest. - See |channel-use|. - - {only available when compiled with the |+channel| feature} - - ch_getbufnr({handle}, {what}) *ch_getbufnr()* - Get the buffer number that {handle} is using for {what}. - {handle} can be a Channel or a Job that has a Channel. - {what} can be "err" for stderr, "out" for stdout or empty for - socket output. - Returns -1 when there is no buffer. - {only available when compiled with the |+channel| feature} - - ch_getjob({channel}) *ch_getjob()* - Get the Job associated with {channel}. - If there is no job calling |job_status()| on the returned Job - will result in "fail". - - {only available when compiled with the |+channel| and - |+job| features} - - ch_info({handle}) *ch_info()* - Returns a Dictionary with information about {handle}. The - items are: - "id" number of the channel - "status" "open", "buffered" or "closed", like - ch_status() - When opened with ch_open(): - "hostname" the hostname of the address - "port" the port of the address - "sock_status" "open" or "closed" - "sock_mode" "NL", "RAW", "JSON" or "JS" - "sock_io" "socket" - "sock_timeout" timeout in msec - When opened with job_start(): - "out_status" "open", "buffered" or "closed" - "out_mode" "NL", "RAW", "JSON" or "JS" - "out_io" "null", "pipe", "file" or "buffer" - "out_timeout" timeout in msec - "err_status" "open", "buffered" or "closed" - "err_mode" "NL", "RAW", "JSON" or "JS" - "err_io" "out", "null", "pipe", "file" or "buffer" - "err_timeout" timeout in msec - "in_status" "open" or "closed" - "in_mode" "NL", "RAW", "JSON" or "JS" - "in_io" "null", "pipe", "file" or "buffer" - "in_timeout" timeout in msec - - ch_log({msg} [, {handle}]) *ch_log()* - Write {msg} in the channel log file, if it was opened with - |ch_logfile()|. - When {handle} is passed the channel number is used for the - message. - {handle} can be a Channel or a Job that has a Channel. The - Channel must be open for the channel number to be used. - - ch_logfile({fname} [, {mode}]) *ch_logfile()* - Start logging channel activity to {fname}. - When {fname} is an empty string: stop logging. - - When {mode} is omitted or "a" append to the file. - When {mode} is "w" start with an empty file. - - Use |ch_log()| to write log messages. The file is flushed - after every message, on Unix you can use "tail -f" to see what - is going on in real time. - This function is not available in the |sandbox|. - NOTE: the channel communication is stored in the file, be - aware that this may contain confidential and privacy sensitive - information, e.g. a password you type in a terminal window. - - - ch_open({address} [, {options}]) *ch_open()* - Open a channel to {address}. See |channel|. - Returns a Channel. Use |ch_status()| to check for failure. - - {address} has the form "hostname:port", e.g., - "localhost:8765". - - If {options} is given it must be a |Dictionary|. - See |channel-open-options|. - - {only available when compiled with the |+channel| feature} - - ch_read({handle} [, {options}]) *ch_read()* - Read from {handle} and return the received message. - {handle} can be a Channel or a Job that has a Channel. - For a NL channel this waits for a NL to arrive, except when - there is nothing more to read (channel was closed). - See |channel-more|. - {only available when compiled with the |+channel| feature} - - ch_readblob({handle} [, {options}]) *ch_readblob()* - Like ch_read() but reads binary data and returns a |Blob|. - See |channel-more|. - {only available when compiled with the |+channel| feature} - - ch_readraw({handle} [, {options}]) *ch_readraw()* - Like ch_read() but for a JS and JSON channel does not decode - the message. For a NL channel it does not block waiting for - the NL to arrive, but otherwise works like ch_read(). - See |channel-more|. - {only available when compiled with the |+channel| feature} - - ch_sendexpr({handle}, {expr} [, {options}]) *ch_sendexpr()* - Send {expr} over {handle}. The {expr} is encoded - according to the type of channel. The function cannot be used - with a raw channel. - See |channel-use|. *E912* - {handle} can be a Channel or a Job that has a Channel. - - {only available when compiled with the |+channel| feature} - - ch_sendraw({handle}, {expr} [, {options}]) *ch_sendraw()* - Send |String| or |Blob| {expr} over {handle}. - Works like |ch_sendexpr()|, but does not encode the request or - decode the response. The caller is responsible for the - correct contents. Also does not add a newline for a channel - in NL mode, the caller must do that. The NL in the response - is removed. - See |channel-use|. - - {only available when compiled with the |+channel| feature} - - ch_setoptions({handle}, {options}) *ch_setoptions()* - Set options on {handle}: - "callback" the channel callback - "timeout" default read timeout in msec - "mode" mode for the whole channel - See |ch_open()| for more explanation. - {handle} can be a Channel or a Job that has a Channel. - - Note that changing the mode may cause queued messages to be - lost. - - These options cannot be changed: - "waittime" only applies to |ch_open()| - - ch_status({handle} [, {options}]) *ch_status()* - Return the status of {handle}: - "fail" failed to open the channel - "open" channel can be used - "buffered" channel can be read, not written to - "closed" channel can not be used - {handle} can be a Channel or a Job that has a Channel. - "buffered" is used when the channel was closed but there is - still data that can be obtained with |ch_read()|. - - If {options} is given it can contain a "part" entry to specify - the part of the channel to return the status for: "out" or - "err". For example, to get the error status: > - ch_status(job, {"part": "err"}) - < changenr() *changenr()* Return the number of the most recent change. This is the same number as what is displayed with |:undolist| and can be used --- 3252,3261 ---- < 4.0 {only available when compiled with the |+float| feature} ! ch_ functions are documented here: |channel-functions-details| changenr() *changenr()* Return the number of the most recent change. This is the same number as what is displayed with |:undolist| and can be used *************** *** 3604,3610 **** Example: > let save_dir = chdir(newdir) ! if save_dir " ... do some work call chdir(save_dir) endif --- 3296,3302 ---- Example: > let save_dir = chdir(newdir) ! if save_dir != "" " ... do some work call chdir(save_dir) endif *************** *** 5236,5242 **** In addition to the items supported by |getqflist()| in {what}, the following item is supported by |getloclist()|: ! filewinid id of the window used to display files from the location list. This field is applicable only when called from a location list window. See --- 4928,4934 ---- In addition to the items supported by |getqflist()| in {what}, the following item is supported by |getloclist()|: ! filewinid id of the window used to display files from the location list. This field is applicable only when called from a location list window. See *************** *** 6043,6203 **** echo key . ': ' . value endfor - job_getchannel({job}) *job_getchannel()* - Get the channel handle that {job} is using. - To check if the job has no channel: > - if string(job_getchannel()) == 'channel fail' - < - {only available when compiled with the |+job| feature} - - job_info([{job}]) *job_info()* - Returns a Dictionary with information about {job}: - "status" what |job_status()| returns - "channel" what |job_getchannel()| returns - "cmd" List of command arguments used to start the job - "process" process ID - "tty_in" terminal input name, empty when none - "tty_out" terminal output name, empty when none - "exitval" only valid when "status" is "dead" - "exit_cb" function to be called on exit - "stoponexit" |job-stoponexit| - - Only in Unix: - "termsig" the signal which terminated the process - (See |job_stop()| for the values) - only valid when "status" is "dead" - - Only in MS-Windows: - "tty_type" Type of virtual console in use. - Values are "winpty" or "conpty". - See 'termwintype'. - - Without any arguments, returns a List with all Job objects. - - job_setoptions({job}, {options}) *job_setoptions()* - Change options for {job}. Supported are: - "stoponexit" |job-stoponexit| - "exit_cb" |job-exit_cb| - - job_start({command} [, {options}]) *job_start()* - Start a job and return a Job object. Unlike |system()| and - |:!cmd| this does not wait for the job to finish. - To start a job in a terminal window see |term_start()|. - - If the job fails to start then |job_status()| on the returned - Job object results in "fail" and none of the callbacks will be - invoked. - - {command} can be a String. This works best on MS-Windows. On - Unix it is split up in white-separated parts to be passed to - execvp(). Arguments in double quotes can contain white space. - - {command} can be a List, where the first item is the executable - and further items are the arguments. All items are converted - to String. This works best on Unix. - - On MS-Windows, job_start() makes a GUI application hidden. If - want to show it, Use |:!start| instead. - - The command is executed directly, not through a shell, the - 'shell' option is not used. To use the shell: > - let job = job_start(["/bin/sh", "-c", "echo hello"]) - < Or: > - let job = job_start('/bin/sh -c "echo hello"') - < Note that this will start two processes, the shell and the - command it executes. If you don't want this use the "exec" - shell command. - - On Unix $PATH is used to search for the executable only when - the command does not contain a slash. - - The job will use the same terminal as Vim. If it reads from - stdin the job and Vim will be fighting over input, that - doesn't work. Redirect stdin and stdout to avoid problems: > - let job = job_start(['sh', '-c', "myserver /dev/null"]) - < - The returned Job object can be used to get the status with - |job_status()| and stop the job with |job_stop()|. - - Note that the job object will be deleted if there are no - references to it. This closes the stdin and stderr, which may - cause the job to fail with an error. To avoid this keep a - reference to the job. Thus instead of: > - call job_start('my-command') - < use: > - let myjob = job_start('my-command') - < and unlet "myjob" once the job is not needed or is past the - point where it would fail (e.g. when it prints a message on - startup). Keep in mind that variables local to a function - will cease to exist if the function returns. Use a - script-local variable if needed: > - let s:myjob = job_start('my-command') - < - {options} must be a Dictionary. It can contain many optional - items, see |job-options|. - - {only available when compiled with the |+job| feature} - - job_status({job}) *job_status()* *E916* - Returns a String with the status of {job}: - "run" job is running - "fail" job failed to start - "dead" job died or was stopped after running - - On Unix a non-existing command results in "dead" instead of - "fail", because a fork happens before the failure can be - detected. - - If an exit callback was set with the "exit_cb" option and the - job is now detected to be "dead" the callback will be invoked. - - For more information see |job_info()|. - - {only available when compiled with the |+job| feature} - - job_stop({job} [, {how}]) *job_stop()* - Stop the {job}. This can also be used to signal the job. - - When {how} is omitted or is "term" the job will be terminated. - For Unix SIGTERM is sent. On MS-Windows the job will be - terminated forcedly (there is no "gentle" way). - This goes to the process group, thus children may also be - affected. - - Effect for Unix: - "term" SIGTERM (default) - "hup" SIGHUP - "quit" SIGQUIT - "int" SIGINT - "kill" SIGKILL (strongest way to stop) - number signal with that number - - Effect for MS-Windows: - "term" terminate process forcedly (default) - "hup" CTRL_BREAK - "quit" CTRL_BREAK - "int" CTRL_C - "kill" terminate process forcedly - Others CTRL_BREAK - - On Unix the signal is sent to the process group. This means - that when the job is "sh -c command" it affects both the shell - and the command. - - The result is a Number: 1 if the operation could be executed, - 0 if "how" is not supported on the system. - Note that even when the operation was executed, whether the - job was actually stopped needs to be checked with - |job_status()|. - - If the status of the job is "dead", the signal will not be - sent. This is to avoid to stop the wrong job (esp. on Unix, - where process numbers are recycled). ! When using "kill" Vim will assume the job will die and close ! the channel. - {only available when compiled with the |+job| feature} join({list} [, {sep}]) *join()* Join the items in {list} together into one String. --- 5735,5743 ---- echo key . ': ' . value endfor ! job_ functions are documented here: |job-functions-details| join({list} [, {sep}]) *join()* Join the items in {list} together into one String. *************** *** 6459,6465 **** was affected; this is a byte index, first character has a value of one. When lines are inserted the values are: ! lnum line below which the new line is added end equal to "lnum" added number of lines inserted col 1 --- 5999,6005 ---- was affected; this is a byte index, first character has a value of one. When lines are inserted the values are: ! lnum line above which the new line is added end equal to "lnum" added number of lines inserted col 1 *************** *** 6505,6510 **** --- 6045,6052 ---- listener_remove({id}) *listener_remove()* Remove a listener previously added with listener_add(). + Returns zero when {id} could not be found, one when {id} was + removed. localtime() *localtime()* Return the current time, measured as seconds since 1st Jan *************** *** 7330,7530 **** "prompt". Example: > call prompt_setprompt(bufnr(''), 'command: ') < ! *prop_add()* *E965* ! prop_add({lnum}, {col}, {props}) ! Attach a text property at position {lnum}, {col}. {col} is ! counted in bytes, use one for the first column. ! If {lnum} is invalid an error is given. *E966* ! If {col} is invalid an error is given. *E964* ! ! {props} is a dictionary with these fields: ! length length of text in bytes, can only be used ! for a property that does not continue in ! another line; can be zero ! end_lnum line number for the end of text ! end_col column just after the text; not used when ! "length" is present; when {col} and "end_col" ! are equal, and "end_lnum" is omitted or equal ! to {lnum}, this is a zero-width text property ! bufnr buffer to add the property to; when omitted ! the current buffer is used ! id user defined ID for the property; when omitted ! zero is used ! type name of the text property type ! All fields except "type" are optional. ! ! It is an error when both "length" and "end_lnum" or "end_col" ! are given. Either use "length" or "end_col" for a property ! within one line, or use "end_lnum" and "end_col" for a ! property that spans more than one line. ! When neither "length" nor "end_col" are given the property ! will be zero-width. That means it will not be highlighted but ! will move with the text, as a kind of mark. ! The property can end exactly at the last character of the ! text, or just after it. In the last case, if text is appended ! to the line, the text property size will increase, also when ! the property type does not have "end_incl" set. ! ! "type" will first be looked up in the buffer the property is ! added to. When not found, the global property types are used. ! If not found an error is given. ! ! See |text-properties| for information about text properties. ! ! ! prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()* ! Remove all text properties from line {lnum}. ! When {lnum-end} is given, remove all text properties from line ! {lnum} to {lnum-end} (inclusive). ! ! When {props} contains a "bufnr" item use this buffer, ! otherwise use the current buffer. ! ! See |text-properties| for information about text properties. ! ! *prop_find()* ! prop_find({props} [, {direction}]) ! NOT IMPLEMENTED YET ! Search for a text property as specified with {props}: ! id property with this ID ! type property with this type name ! bufnr buffer to search in; when present a ! start position with "lnum" and "col" ! must be given; when omitted the ! current buffer is used ! lnum start in this line (when omitted start ! at the cursor) ! col start at this column (when omitted ! and "lnum" is given: use column 1, ! otherwise start at the cursor) ! skipstart do not look for a match at the start ! position ! ! {direction} can be "f" for forward and "b" for backward. When ! omitted forward search is performed. ! ! If a match is found then a Dict is returned with the entries ! as with prop_list(), and additionally an "lnum" entry. ! If no match is found then an empty Dict is returned. ! ! See |text-properties| for information about text properties. ! ! ! prop_list({lnum} [, {props}]) *prop_list()* ! Return a List with all text properties in line {lnum}. ! ! When {props} contains a "bufnr" item, use this buffer instead ! of the current buffer. ! ! The properties are ordered by starting column and priority. ! Each property is a Dict with these entries: ! col starting column ! length length in bytes, one more if line break is ! included ! id property ID ! type name of the property type, omitted if ! the type was deleted ! start when TRUE property starts in this line ! end when TRUE property ends in this line ! ! When "start" is zero the property started in a previous line, ! the current one is a continuation. ! When "end" is zero the property continues in the next line. ! The line break after this line is included. ! ! See |text-properties| for information about text properties. ! ! ! *prop_remove()* *E968* ! prop_remove({props} [, {lnum} [, {lnum-end}]]) ! Remove a matching text property from line {lnum}. When ! {lnum-end} is given, remove matching text properties from line ! {lnum} to {lnum-end} (inclusive). ! When {lnum} is omitted remove matching text properties from ! all lines. ! ! {props} is a dictionary with these fields: ! id remove text properties with this ID ! type remove text properties with this type name ! bufnr use this buffer instead of the current one ! all when TRUE remove all matching text properties, ! not just the first one ! A property matches when either "id" or "type" matches. ! If buffer "bufnr" does not exist you get an error message. ! If buffer 'bufnr" is not loaded then nothing happens. ! ! Returns the number of properties that were removed. ! ! See |text-properties| for information about text properties. ! ! ! prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970* ! Add a text property type {name}. If a property type with this ! name already exists an error is given. ! {props} is a dictionary with these optional fields: ! bufnr define the property only for this buffer; this ! avoids name collisions and automatically ! clears the property types when the buffer is ! deleted. ! highlight name of highlight group to use ! priority when a character has multiple text ! properties the one with the highest priority ! will be used; negative values can be used, the ! default priority is zero ! combine when TRUE combine the highlight with any ! syntax highlight; when omitted of FALSE syntax ! highlight will not be used ! start_incl when TRUE inserts at the start position will ! be included in the text property ! end_incl when TRUE inserts at the end position will be ! included in the text property ! ! See |text-properties| for information about text properties. ! ! ! prop_type_change({name}, {props}) *prop_type_change()* ! Change properties of an existing text property type. If a ! property with this name does not exist an error is given. ! The {props} argument is just like |prop_type_add()|. ! ! See |text-properties| for information about text properties. ! ! ! prop_type_delete({name} [, {props}]) *prop_type_delete()* ! Remove the text property type {name}. When text properties ! using the type {name} are still in place, they will not have ! an effect and can no longer be removed by name. ! ! {props} can contain a "bufnr" item. When it is given, delete ! a property type from this buffer instead of from the global ! property types. ! ! When text property type {name} is not found there is no error. ! ! See |text-properties| for information about text properties. ! ! ! prop_type_get([{name} [, {props}]) *prop_type_get()* ! Returns the properties of property type {name}. This is a ! dictionary with the same fields as was given to ! prop_type_add(). ! When the property type {name} does not exist, an empty ! dictionary is returned. ! ! {props} can contain a "bufnr" item. When it is given, use ! this buffer instead of the global property types. ! ! See |text-properties| for information about text properties. ! ! ! prop_type_list([{props}]) *prop_type_list()* ! Returns a list with all property type names. ! ! {props} can contain a "bufnr" item. When it is given, use ! this buffer instead of the global property types. ! ! See |text-properties| for information about text properties. ! pumvisible() *pumvisible()* Returns non-zero when the popup menu is visible, zero --- 6872,6878 ---- "prompt". Example: > call prompt_setprompt(bufnr(''), 'command: ') < ! prop_ functions are documented here: |text-prop-functions|. pumvisible() *pumvisible()* Returns non-zero when the popup menu is visible, zero *************** *** 8201,8210 **** {lnum} is used like with |setline()|. This works like |setline()| for the specified buffer. - On success 0 is returned, on failure 1 is returned. ! If {expr} is not a valid buffer or {lnum} is not valid, an ! error message is given. setbufvar({expr}, {varname}, {val}) *setbufvar()* Set option or local variable {varname} in buffer {expr} to --- 7549,7558 ---- {lnum} is used like with |setline()|. This works like |setline()| for the specified buffer. ! When {expr} is not a valid buffer, the buffer is not loaded or ! {lnum} is not valid then 1 is returned. On success 0 is ! returned. setbufvar({expr}, {varname}, {val}) *setbufvar()* Set option or local variable {varname} in buffer {expr} to *************** *** 8634,8982 **** 'vartabstop' feature. If the 'vartabstop' setting is enabled and no {col} argument is given, column 1 will be assumed. ! sign_define({name} [, {dict}]) *sign_define()* ! sign_define({list}) ! Define a new sign named {name} or modify the attributes of an ! existing sign. This is similar to the |:sign-define| command. ! ! Prefix {name} with a unique text to avoid name collisions. ! There is no {group} like with placing signs. ! ! The {name} can be a String or a Number. The optional {dict} ! argument specifies the sign attributes. The following values ! are supported: ! icon full path to the bitmap file for the sign. ! linehl highlight group used for the whole line the ! sign is placed in. ! text text that is displayed when there is no icon ! or the GUI is not being used. ! texthl highlight group used for the text item ! ! If the sign named {name} already exists, then the attributes ! of the sign are updated. ! ! The one argument {list} can be used to define a list of signs. ! Each list item is a dictionary with the above items in {dict} ! and a 'name' item for the sign name. ! ! Returns 0 on success and -1 on failure. When the one argument ! {list} is used, then returns a List of values one for each ! defined sign. ! ! Examples: > ! call sign_define("mySign", { ! \ "text" : "=>", ! \ "texthl" : "Error", ! \ "linehl" : "Search"}) ! call sign_define([ ! \ {'name' : 'sign1', ! \ 'text' : '=>'}, ! \ {'name' : 'sign2', ! \ 'text' : '!!'} ! \ ]) ! < ! sign_getdefined([{name}]) *sign_getdefined()* ! Get a list of defined signs and their attributes. ! This is similar to the |:sign-list| command. ! ! If the {name} is not supplied, then a list of all the defined ! signs is returned. Otherwise the attribute of the specified ! sign is returned. ! ! Each list item in the returned value is a dictionary with the ! following entries: ! icon full path to the bitmap file of the sign ! linehl highlight group used for the whole line the ! sign is placed in. ! name name of the sign ! text text that is displayed when there is no icon ! or the GUI is not being used. ! texthl highlight group used for the text item ! ! Returns an empty List if there are no signs and when {name} is ! not found. ! ! Examples: > ! " Get a list of all the defined signs ! echo sign_getdefined() ! ! " Get the attribute of the sign named mySign ! echo sign_getdefined("mySign") ! < ! sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()* ! Return a list of signs placed in a buffer or all the buffers. ! This is similar to the |:sign-place-list| command. ! ! If the optional buffer name {expr} is specified, then only the ! list of signs placed in that buffer is returned. For the use ! of {expr}, see |bufname()|. The optional {dict} can contain ! the following entries: ! group select only signs in this group ! id select sign with this identifier ! lnum select signs placed in this line. For the use ! of {lnum}, see |line()|. ! If {group} is '*', then signs in all the groups including the ! global group are returned. If {group} is not supplied or is an ! empty string, then only signs in the global group are ! returned. If no arguments are supplied, then signs in the ! global group placed in all the buffers are returned. ! See |sign-group|. ! ! Each list item in the returned value is a dictionary with the ! following entries: ! bufnr number of the buffer with the sign ! signs list of signs placed in {bufnr}. Each list ! item is a dictionary with the below listed ! entries ! ! The dictionary for each sign contains the following entries: ! group sign group. Set to '' for the global group. ! id identifier of the sign ! lnum line number where the sign is placed ! name name of the defined sign ! priority sign priority ! ! The returned signs in a buffer are ordered by their line ! number and priority. ! ! Returns an empty list on failure or if there are no placed ! signs. ! ! Examples: > ! " Get a List of signs placed in eval.c in the ! " global group ! echo sign_getplaced("eval.c") ! ! " Get a List of signs in group 'g1' placed in eval.c ! echo sign_getplaced("eval.c", {'group' : 'g1'}) ! ! " Get a List of signs placed at line 10 in eval.c ! echo sign_getplaced("eval.c", {'lnum' : 10}) ! ! " Get sign with identifier 10 placed in a.py ! echo sign_getplaced("a.py", {'id' : 10}) ! ! " Get sign with id 20 in group 'g1' placed in a.py ! echo sign_getplaced("a.py", {'group' : 'g1', ! \ 'id' : 20}) - " Get a List of all the placed signs - echo sign_getplaced() - < - *sign_jump()* - sign_jump({id}, {group}, {expr}) - Open the buffer {expr} or jump to the window that contains - {expr} and position the cursor at sign {id} in group {group}. - This is similar to the |:sign-jump| command. - For the use of {expr}, see |bufname()|. - - Returns the line number of the sign. Returns -1 if the - arguments are invalid. - - Example: > - " Jump to sign 10 in the current buffer - call sign_jump(10, '', '') - < - *sign_place()* - sign_place({id}, {group}, {name}, {expr} [, {dict}]) - Place the sign defined as {name} at line {lnum} in file or - buffer {expr} and assign {id} and {group} to sign. This is - similar to the |:sign-place| command. - - If the sign identifier {id} is zero, then a new identifier is - allocated. Otherwise the specified number is used. {group} is - the sign group name. To use the global sign group, use an - empty string. {group} functions as a namespace for {id}, thus - two groups can use the same IDs. Refer to |sign-identifier| - and |sign-group| for more information. - - {name} refers to a defined sign. - {expr} refers to a buffer name or number. For the accepted - values, see |bufname()|. - - The optional {dict} argument supports the following entries: - lnum line number in the file or buffer - {expr} where the sign is to be placed. - For the accepted values, see |line()|. - priority priority of the sign. See - |sign-priority| for more information. - - If the optional {dict} is not specified, then it modifies the - placed sign {id} in group {group} to use the defined sign - {name}. - - Returns the sign identifier on success and -1 on failure. - - Examples: > - " Place a sign named sign1 with id 5 at line 20 in - " buffer json.c - call sign_place(5, '', 'sign1', 'json.c', - \ {'lnum' : 20}) - - " Updates sign 5 in buffer json.c to use sign2 - call sign_place(5, '', 'sign2', 'json.c') - - " Place a sign named sign3 at line 30 in - " buffer json.c with a new identifier - let id = sign_place(0, '', 'sign3', 'json.c', - \ {'lnum' : 30}) - - " Place a sign named sign4 with id 10 in group 'g3' - " at line 40 in buffer json.c with priority 90 - call sign_place(10, 'g3', 'sign4', 'json.c', - \ {'lnum' : 40, 'priority' : 90}) - < - *sign_placelist()* - sign_placelist({list}) - Place one or more signs. This is similar to the - |sign_place()| function. The {list} argument specifies the - List of signs to place. Each list item is a dict with the - following sign attributes: - buffer buffer name or number. For the accepted - values, see |bufname()|. - group sign group. {group} functions as a namespace - for {id}, thus two groups can use the same - IDs. If not specified or set to an empty - string, then the global group is used. See - |sign-group| for more information. - id sign identifier. If not specified or zero, - then a new unique identifier is allocated. - Otherwise the specified number is used. See - |sign-identifier| for more information. - lnum line number in the buffer {expr} where the - sign is to be placed. For the accepted values, - see |line()|. - name name of the sign to place. See |sign_define()| - for more information. - priority priority of the sign. When multiple signs are - placed on a line, the sign with the highest - priority is used. If not specified, the - default value of 10 is used. See - |sign-priority| for more information. - - If {id} refers to an existing sign, then the existing sign is - modified to use the specified {name} and/or {priority}. - - Returns a List of sign identifiers. If failed to place a - sign, the corresponding list item is set to -1. - - Examples: > - " Place sign s1 with id 5 at line 20 and id 10 at line - " 30 in buffer a.c - let [n1, n2] = sign_place([ - \ {'id' : 5, - \ 'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 20}, - \ {'id' : 10, - \ 'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 30} - \ ]) - - " Place sign s1 in buffer a.c at line 40 and 50 - " with auto-generated identifiers - let [n1, n2] = sign_place([ - \ {'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 40}, - \ {'name' : 's1', - \ 'buffer' : 'a.c', - \ 'lnum' : 50} - \ ]) - < - sign_undefine([{name}]) *sign_undefine()* - sign_undefine({list}) - Deletes a previously defined sign {name}. This is similar to - the |:sign-undefine| command. If {name} is not supplied, then - deletes all the defined signs. - - The one argument {list} can be used to undefine a list of - signs. Each list item is the name of a sign. - - Returns 0 on success and -1 on failure. For the one argument - {list} call, returns a list of values one for each undefined - sign. - - Examples: > - " Delete a sign named mySign - call sign_undefine("mySign") - - " Delete signs 'sign1' and 'sign2' - call sign_undefine(["sign1", "sign2"]) - - " Delete all the signs - call sign_undefine() - < - sign_unplace({group} [, {dict}]) *sign_unplace()* - Remove a previously placed sign in one or more buffers. This - is similar to the |:sign-unplace| command. - - {group} is the sign group name. To use the global sign group, - use an empty string. If {group} is set to '*', then all the - groups including the global group are used. - The signs in {group} are selected based on the entries in - {dict}. The following optional entries in {dict} are - supported: - buffer buffer name or number. See |bufname()|. - id sign identifier - If {dict} is not supplied, then all the signs in {group} are - removed. - - Returns 0 on success and -1 on failure. - - Examples: > - " Remove sign 10 from buffer a.vim - call sign_unplace('', {'buffer' : "a.vim", 'id' : 10}) - - " Remove sign 20 in group 'g1' from buffer 3 - call sign_unplace('g1', {'buffer' : 3, 'id' : 20}) - - " Remove all the signs in group 'g2' from buffer 10 - call sign_unplace('g2', {'buffer' : 10}) - - " Remove sign 30 in group 'g3' from all the buffers - call sign_unplace('g3', {'id' : 30}) - - " Remove all the signs placed in buffer 5 - call sign_unplace('*', {'buffer' : 5}) - - " Remove the signs in group 'g4' from all the buffers - call sign_unplace('g4') - - " Remove sign 40 from all the buffers - call sign_unplace('*', {'id' : 40}) - - " Remove all the placed signs from all the buffers - call sign_unplace('*') - < - sign_unplacelist({list}) *sign_unplacelist()* - Remove previously placed signs from one or more buffers. This - is similar to the |sign_unplace()| function. - - The {list} argument specifies the List of signs to remove. - Each list item is a dict with the following sign attributes: - buffer buffer name or number. For the accepted - values, see |bufname()|. If not specified, - then the specified sign is removed from all - the buffers. - group sign group name. If not specified or set to an - empty string, then the global sign group is - used. If set to '*', then all the groups - including the global group are used. - id sign identifier. If not specified, then all - the signs in the specified group are removed. - - Returns a List where an entry is set to 0 if the corresponding - sign was successfully removed or -1 on failure. - - Example: > - " Remove sign with id 10 from buffer a.vim and sign - " with id 20 from buffer b.vim - call sign_unplace([{'id' : 10, 'buffer' : "a.vim"}, - \ {'id' : 20, 'buffer' : 'b.vim'}]) - < simplify({filename}) *simplify()* Simplify the file name as much as possible without changing the meaning. Shortcuts (on MS-Windows) or symbolic links (on --- 7982,7990 ---- 'vartabstop' feature. If the 'vartabstop' setting is enabled and no {col} argument is given, column 1 will be assumed. ! sign_ functions are documented here: |sign-functions-details| simplify({filename}) *simplify()* Simplify the file name as much as possible without changing the meaning. Shortcuts (on MS-Windows) or symbolic links (on *************** *** 9089,9095 **** argument is the status: 0 sound was played to the end 1 sound was interrupted ! 2 error occured after sound started Example: > func Callback(id, status) echomsg "sound " .. a:id .. " finished with " .. a:status --- 8097,8103 ---- argument is the status: 0 sound was played to the end 1 sound was interrupted ! 2 error occurred after sound started Example: > func Callback(id, status) echomsg "sound " .. a:id .. " finished with " .. a:status *************** *** 9817,9963 **** For MS-Windows forward slashes are used when the 'shellslash' option is set or when 'shellcmdflag' starts with '-'. term_ functions are documented here: |terminal-function-details| ! test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()* ! This is for testing: If the memory allocation with {id} is ! called, then decrement {countdown}, and when it reaches zero ! let memory allocation fail {repeat} times. When {repeat} is ! smaller than one it fails one time. ! ! test_autochdir() *test_autochdir()* ! Set a flag to enable the effect of 'autochdir' before Vim ! startup has finished. - test_feedinput({string}) *test_feedinput()* - Characters in {string} are queued for processing as if they - were typed by the user. This uses a low level input buffer. - This function works only when with |+unix| or GUI is running. - - test_garbagecollect_now() *test_garbagecollect_now()* - Like garbagecollect(), but executed right away. This must - only be called directly to avoid any structure to exist - internally, and |v:testing| must have been set before calling - any function. - - test_garbagecollect_soon() *test_garbagecollect_soon()* - Set the flag to call the garbagecollector as if in the main - loop. Only to be used in tests. - - test_getvalue({name}) *test_getvalue()* - Get the value of an internal variable. These values for - {name} are supported: - need_fileinfo - - test_ignore_error({expr}) *test_ignore_error()* - Ignore any error containing {expr}. A normal message is given - instead. - This is only meant to be used in tests, where catching the - error with try/catch cannot be used (because it skips over - following code). - {expr} is used literally, not as a pattern. - When the {expr} is the string "RESET" then the list of ignored - errors is made empty. - - test_null_blob() *test_null_blob()* - Return a |Blob| that is null. Only useful for testing. - - test_null_channel() *test_null_channel()* - Return a |Channel| that is null. Only useful for testing. - {only available when compiled with the +channel feature} - - test_null_dict() *test_null_dict()* - Return a |Dict| that is null. Only useful for testing. - - test_null_job() *test_null_job()* - Return a |Job| that is null. Only useful for testing. - {only available when compiled with the +job feature} - - test_null_list() *test_null_list()* - Return a |List| that is null. Only useful for testing. - - test_null_partial() *test_null_partial()* - Return a |Partial| that is null. Only useful for testing. - - test_null_string() *test_null_string()* - Return a |String| that is null. Only useful for testing. - - test_option_not_set({name}) *test_option_not_set()* - Reset the flag that indicates option {name} was set. Thus it - looks like it still has the default value. Use like this: > - set ambiwidth=double - call test_option_not_set('ambiwidth') - < Now the 'ambiwidth' option behaves like it was never changed, - even though the value is "double". - Only to be used for testing! - - test_override({name}, {val}) *test_override()* - Overrides certain parts of Vim's internal processing to be able - to run tests. Only to be used for testing Vim! - The override is enabled when {val} is non-zero and removed - when {val} is zero. - Current supported values for name are: - - name effect when {val} is non-zero ~ - redraw disable the redrawing() function - redraw_flag ignore the RedrawingDisabled flag - char_avail disable the char_avail() function - starting reset the "starting" variable, see below - nfa_fail makes the NFA regexp engine fail to force a - fallback to the old engine - no_query_mouse do not query the mouse position for "dec" - terminals - no_wait_return set the "no_wait_return" flag. Not restored - with "ALL". - ALL clear all overrides ({val} is not used) - - "starting" is to be used when a test should behave like - startup was done. Since the tests are run by sourcing a - script the "starting" variable is non-zero. This is usually a - good thing (tests run faster), but sometimes changes behavior - in a way that the test doesn't work properly. - When using: > - call test_override('starting', 1) - < The value of "starting" is saved. It is restored by: > - call test_override('starting', 0) - - test_refcount({expr}) *test_refcount()* - Return the reference count of {expr}. When {expr} is of a - type that does not have a reference count, returns -1. Only - to be used for testing. - - test_scrollbar({which}, {value}, {dragging}) *test_scrollbar()* - Pretend using scrollbar {which} to move it to position - {value}. {which} can be: - left Left scrollbar of the current window - right Right scrollbar of the current window - hor Horizontal scrollbar - - For the vertical scrollbars {value} can be 1 to the - line-count of the buffer. For the horizontal scrollbar the - {value} can be between 1 and the maximum line length, assuming - 'wrap' is not set. - - When {dragging} is non-zero it's like dragging the scrollbar, - otherwise it's like clicking in the scrollbar. - Only works when the {which} scrollbar actually exists, - obviously only when using the GUI. - - test_setmouse({row}, {col}) *test_setmouse()* - Set the mouse position to be used for the next mouse action. - {row} and {col} are one based. - For example: > - call test_setmouse(4, 20) - call feedkeys("\", "xt") - - test_settime({expr}) *test_settime()* - Set the time Vim uses internally. Currently only used for - timestamps in the history, as they are used in viminfo, and - for undo. - Using a value of 1 makes Vim not sleep after a warning or - error message. - {expr} must evaluate to a number. When the value is zero the - normal behavior is restored. *timer_info()* timer_info([{id}]) --- 8825,8835 ---- For MS-Windows forward slashes are used when the 'shellslash' option is set or when 'shellcmdflag' starts with '-'. + term_ functions are documented here: |terminal-function-details| ! test_ functions are documented here: |test-functions| *timer_info()* timer_info([{id}]) *************** *** 10025,10030 **** --- 8897,8903 ---- < This will invoke MyHandler() three times at 500 msec intervals. + Not available in the |sandbox|. {only available when compiled with the |+timers| feature} timer_stop({timer}) *timer_stop()* *************** *** 10036,10043 **** timer_stopall() *timer_stopall()* Stop all timers. The timer callbacks will no longer be ! invoked. Useful if some timers is misbehaving. If there are ! no timers there is no error. {only available when compiled with the |+timers| feature} --- 8909,8916 ---- timer_stopall() *timer_stopall()* Stop all timers. The timer callbacks will no longer be ! invoked. Useful if a timer is misbehaving. If there are no ! timers there is no error. {only available when compiled with the |+timers| feature} *************** *** 10983,10989 **** You can provide default values for positional named arguments. This makes them optional for function calls. When a positional argument is not specified at a call, the default expression is used to initialize it. ! This only works for functions declared with |function|, not for lambda expressions |expr-lambda|. Example: > --- 9856,9862 ---- You can provide default values for positional named arguments. This makes them optional for function calls. When a positional argument is not specified at a call, the default expression is used to initialize it. ! This only works for functions declared with `:function`, not for lambda expressions |expr-lambda|. Example: > *************** *** 10995,11001 **** The argument default expressions are evaluated at the time of the function call, not definition. Thus it is possible to use an expression which is ! invalid the moment the function is defined. The expressions are are also only evaluated when arguments are not specified during a call. You can pass |v:none| to use the default expression. Note that this means you --- 9868,9874 ---- The argument default expressions are evaluated at the time of the function call, not definition. Thus it is possible to use an expression which is ! invalid the moment the function is defined. The expressions are also only evaluated when arguments are not specified during a call. You can pass |v:none| to use the default expression. Note that this means you *************** *** 11062,11068 **** *:cal* *:call* *E107* *E117* :[range]cal[l] {name}([arguments]) Call a function. The name of the function and its arguments ! are as specified with |:function|. Up to 20 arguments can be used. The returned value is discarded. Without a range and for functions that accept a range, the function is called once. When a range is given the cursor is --- 9935,9941 ---- *:cal* *:call* *E107* *E117* :[range]cal[l] {name}([arguments]) Call a function. The name of the function and its arguments ! are as specified with `:function`. Up to 20 arguments can be used. The returned value is discarded. Without a range and for functions that accept a range, the function is called once. When a range is given the cursor is *************** *** 11116,11124 **** This is introduced in the user manual, section |41.14|. The autocommand is useful if you have a plugin that is a long Vim script file. ! You can define the autocommand and quickly quit the script with |:finish|. That makes Vim startup faster. The autocommand should then load the same file ! again, setting a variable to skip the |:finish| command. Use the FuncUndefined autocommand event with a pattern that matches the function(s) to be defined. Example: > --- 9989,9997 ---- This is introduced in the user manual, section |41.14|. The autocommand is useful if you have a plugin that is a long Vim script file. ! You can define the autocommand and quickly quit the script with `:finish`. That makes Vim startup faster. The autocommand should then load the same file ! again, setting a variable to skip the `:finish` command. Use the FuncUndefined autocommand event with a pattern that matches the function(s) to be defined. Example: > *************** *** 11447,11453 **** # Number * Funcref - :unl[et][!] {name} ... *:unlet* *:unl* *E108* *E795* Remove the internal variable {name}. Several variable names can be given, they are all removed. The name --- 10320,10325 ---- *************** *** 11492,11498 **** < This is useful if you want to make sure the variable is not modified. *E995* ! |:const| does not allow to for changing a variable. > :let x = 1 :const x = 2 " Error! < *E996* --- 10364,10370 ---- < This is useful if you want to make sure the variable is not modified. *E995* ! |:const| does not allow to for changing a variable: > :let x = 1 :const x = 2 " Error! < *E996* *************** *** 11500,11505 **** --- 10372,10382 ---- register values cannot be used here, since they cannot be locked. + :cons[t] + :cons[t] {var-name} + If no argument is given or only {var-name} is given, + the behavior is the same as |:let|. + :lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv* Lock the internal variable {name}. Locking means that it can no longer be changed (until it is unlocked). *************** *** 11551,11557 **** opposite of |:lockvar|. ! :if {expr1} *:if* *:endif* *:en* *E171* *E579* *E580* :en[dif] Execute the commands until the next matching ":else" or ":endif" if {expr1} evaluates to non-zero. --- 10428,10434 ---- opposite of |:lockvar|. ! :if {expr1} *:if* *:end* *:endif* *:en* *E171* *E579* *E580* :en[dif] Execute the commands until the next matching ":else" or ":endif" if {expr1} evaluates to non-zero. *************** *** 12993,13011 **** When support is taken away this will break older Vim scripts. To make this explicit the |:scriptversion| command can be used. When a Vim script is not compatible with older versions of Vim this will give an explicit error, ! instead of failing in mysterious ways. > :scriptversion 1 < This is the original Vim script, same as not using a |:scriptversion| command. Can be used to go back to old syntax for a range of lines. Test for support with: > has('vimscript-1') :scriptversion 2 ! < String concatenation with "." is not supported, use ".." instead. This avoids the ambiguity using "." for Dict member access and floating point numbers. Now ".5" means the number 0.5. ! > :scriptversion 3 < All |vim-variable|s must be prefixed by "v:". E.g. "version" doesn't work as |v:version| anymore, it can be used as a normal variable. --- 11870,11891 ---- When support is taken away this will break older Vim scripts. To make this explicit the |:scriptversion| command can be used. When a Vim script is not compatible with older versions of Vim this will give an explicit error, ! instead of failing in mysterious ways. + *scriptversion-1* > :scriptversion 1 < This is the original Vim script, same as not using a |:scriptversion| command. Can be used to go back to old syntax for a range of lines. Test for support with: > has('vimscript-1') + < *scriptversion-2* > :scriptversion 2 ! < String concatenation with "." is not supported, use ".." instead. This avoids the ambiguity using "." for Dict member access and floating point numbers. Now ".5" means the number 0.5. ! ! *scriptversion-3* > :scriptversion 3 < All |vim-variable|s must be prefixed by "v:". E.g. "version" doesn't work as |v:version| anymore, it can be used as a normal variable. *************** *** 13034,13041 **** : echo "You will _never_ see this message" :endif ! To execute a command only when the |+eval| feature is disabled requires a trick, ! as this example shows: > silent! while 0 set history=111 --- 11914,11929 ---- : echo "You will _never_ see this message" :endif ! To execute a command only when the |+eval| feature is disabled can be done in ! two ways. The simplest is to exit the script (or Vim) prematurely: > ! if 1 ! echo "commands executed with +eval" ! finish ! endif ! args " command executed without +eval ! ! If you do not want to abort loading the script you can use a trick, as this ! example shows: > silent! while 0 set history=111 *************** *** 13100,13125 **** - closing a window or quitting Vim - etc. - ============================================================================== - 14. Testing *testing* - - Vim can be tested after building it, usually with "make test". - The tests are located in the directory "src/testdir". - - There are several types of tests added over time: - test33.in oldest, don't add any more - test_something.in old style tests - test_something.vim new style tests - - *new-style-testing* - New tests should be added as new style tests. These use functions such as - |assert_equal()| to keep the test commands and the expected result in one - place. - *old-style-testing* - In some cases an old style test needs to be used. E.g. when testing Vim - without the |+eval| feature. - - Find more information in the file src/testdir/README.txt. - vim:tw=78:ts=8:noet:ft=help:norl: --- 11988,11992 ---- *** ../vim-8.1.1725/runtime/doc/testing.txt 2019-07-21 16:39:05.220315287 +0200 --- runtime/doc/testing.txt 2019-07-21 16:24:14.195990708 +0200 *************** *** 0 **** --- 1,317 ---- + *testing.txt* For Vim version 8.1. Last change: 2019 Jul 21 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + Testing Vim and Vim script *testing-support* + + Expression evaluation is explained in |eval.txt|. This file goes into details + about writing tests in Vim script. This can be used for testing Vim itself + and for testing plugins. + + 1. Testing Vim |testing| + 2. Test functions |test-functions| + 3. Assert funtions |assert-functions| + + ============================================================================== + 1. Testing Vim *testing* + + Vim can be tested after building it, usually with "make test". + The tests are located in the directory "src/testdir". + + There are several types of tests added over time: + test33.in oldest, don't add any of these + test_something.in old style tests + test_something.vim new style tests + + *new-style-testing* + New tests should be added as new style tests. These use functions such as + |assert_equal()| to keep the test commands and the expected result in one + place. + *old-style-testing* + In some cases an old style test needs to be used. E.g. when testing Vim + without the |+eval| feature. + + Find more information in the file src/testdir/README.txt. + + ============================================================================== + 2. Test functions *test-functions* + + test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()* + This is for testing: If the memory allocation with {id} is + called, then decrement {countdown}, and when it reaches zero + let memory allocation fail {repeat} times. When {repeat} is + smaller than one it fails one time. + + + test_autochdir() *test_autochdir()* + Set a flag to enable the effect of 'autochdir' before Vim + startup has finished. + + + test_feedinput({string}) *test_feedinput()* + Characters in {string} are queued for processing as if they + were typed by the user. This uses a low level input buffer. + This function works only when with |+unix| or GUI is running. + + + test_garbagecollect_now() *test_garbagecollect_now()* + Like garbagecollect(), but executed right away. This must + only be called directly to avoid any structure to exist + internally, and |v:testing| must have been set before calling + any function. + + + test_garbagecollect_soon() *test_garbagecollect_soon()* + Set the flag to call the garbagecollector as if in the main + loop. Only to be used in tests. + + + test_getvalue({name}) *test_getvalue()* + Get the value of an internal variable. These values for + {name} are supported: + need_fileinfo + + + test_ignore_error({expr}) *test_ignore_error()* + Ignore any error containing {expr}. A normal message is given + instead. + This is only meant to be used in tests, where catching the + error with try/catch cannot be used (because it skips over + following code). + {expr} is used literally, not as a pattern. + When the {expr} is the string "RESET" then the list of ignored + errors is made empty. + + + test_null_blob() *test_null_blob()* + Return a |Blob| that is null. Only useful for testing. + + + test_null_channel() *test_null_channel()* + Return a |Channel| that is null. Only useful for testing. + {only available when compiled with the +channel feature} + + + test_null_dict() *test_null_dict()* + Return a |Dict| that is null. Only useful for testing. + + + test_null_job() *test_null_job()* + Return a |Job| that is null. Only useful for testing. + {only available when compiled with the +job feature} + + + test_null_list() *test_null_list()* + Return a |List| that is null. Only useful for testing. + + + test_null_partial() *test_null_partial()* + Return a |Partial| that is null. Only useful for testing. + + + test_null_string() *test_null_string()* + Return a |String| that is null. Only useful for testing. + + + test_option_not_set({name}) *test_option_not_set()* + Reset the flag that indicates option {name} was set. Thus it + looks like it still has the default value. Use like this: > + set ambiwidth=double + call test_option_not_set('ambiwidth') + < Now the 'ambiwidth' option behaves like it was never changed, + even though the value is "double". + Only to be used for testing! + + + test_override({name}, {val}) *test_override()* + Overrides certain parts of Vim's internal processing to be able + to run tests. Only to be used for testing Vim! + The override is enabled when {val} is non-zero and removed + when {val} is zero. + Current supported values for name are: + + name effect when {val} is non-zero ~ + redraw disable the redrawing() function + redraw_flag ignore the RedrawingDisabled flag + char_avail disable the char_avail() function + starting reset the "starting" variable, see below + nfa_fail makes the NFA regexp engine fail to force a + fallback to the old engine + no_query_mouse do not query the mouse position for "dec" + terminals + no_wait_return set the "no_wait_return" flag. Not restored + with "ALL". + ALL clear all overrides ({val} is not used) + + "starting" is to be used when a test should behave like + startup was done. Since the tests are run by sourcing a + script the "starting" variable is non-zero. This is usually a + good thing (tests run faster), but sometimes changes behavior + in a way that the test doesn't work properly. + When using: > + call test_override('starting', 1) + < The value of "starting" is saved. It is restored by: > + call test_override('starting', 0) + + + test_refcount({expr}) *test_refcount()* + Return the reference count of {expr}. When {expr} is of a + type that does not have a reference count, returns -1. Only + to be used for testing. + + + test_scrollbar({which}, {value}, {dragging}) *test_scrollbar()* + Pretend using scrollbar {which} to move it to position + {value}. {which} can be: + left Left scrollbar of the current window + right Right scrollbar of the current window + hor Horizontal scrollbar + + For the vertical scrollbars {value} can be 1 to the + line-count of the buffer. For the horizontal scrollbar the + {value} can be between 1 and the maximum line length, assuming + 'wrap' is not set. + + When {dragging} is non-zero it's like dragging the scrollbar, + otherwise it's like clicking in the scrollbar. + Only works when the {which} scrollbar actually exists, + obviously only when using the GUI. + + + test_setmouse({row}, {col}) *test_setmouse()* + Set the mouse position to be used for the next mouse action. + {row} and {col} are one based. + For example: > + call test_setmouse(4, 20) + call feedkeys("\", "xt") + + + test_settime({expr}) *test_settime()* + Set the time Vim uses internally. Currently only used for + timestamps in the history, as they are used in viminfo, and + for undo. + Using a value of 1 makes Vim not sleep after a warning or + error message. + {expr} must evaluate to a number. When the value is zero the + normal behavior is restored. + + ============================================================================== + 3. Assert functions *assert-functions* + + + assert_beeps({cmd}) *assert_beeps()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce a beep or visual bell. + Also see |assert_fails()| and |assert-return|. + + *assert_equal()* + assert_equal({expected}, {actual} [, {msg}]) + When {expected} and {actual} are not equal an error message is + added to |v:errors| and 1 is returned. Otherwise zero is + returned |assert-return|. + There is no automatic conversion, the String "4" is different + from the Number 4. And the number 4 is different from the + Float 4.0. The value of 'ignorecase' is not used here, case + always matters. + When {msg} is omitted an error in the form "Expected + {expected} but got {actual}" is produced. + Example: > + assert_equal('foo', 'bar') + < Will result in a string to be added to |v:errors|: + test.vim line 12: Expected 'foo' but got 'bar' ~ + + *assert_equalfile()* + assert_equalfile({fname-one}, {fname-two}) + When the files {fname-one} and {fname-two} do not contain + exactly the same text an error message is added to |v:errors|. + Also see |assert-return|. + When {fname-one} or {fname-two} does not exist the error will + mention that. + Mainly useful with |terminal-diff|. + + assert_exception({error} [, {msg}]) *assert_exception()* + When v:exception does not contain the string {error} an error + message is added to |v:errors|. Also see |assert-return|. + This can be used to assert that a command throws an exception. + Using the error number, followed by a colon, avoids problems + with translations: > + try + commandthatfails + call assert_false(1, 'command should have failed') + catch + call assert_exception('E492:') + endtry + + assert_fails({cmd} [, {error} [, {msg}]]) *assert_fails()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce an error. Also see |assert-return|. + When {error} is given it must match in |v:errmsg|. + Note that beeping is not considered an error, and some failing + commands only beep. Use |assert_beeps()| for those. + + assert_false({actual} [, {msg}]) *assert_false()* + When {actual} is not false an error message is added to + |v:errors|, like with |assert_equal()|. + Also see |assert-return|. + A value is false when it is zero. When {actual} is not a + number the assert fails. + When {msg} is omitted an error in the form + "Expected False but got {actual}" is produced. + + assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* + This asserts number and |Float| values. When {actual} is lower + than {lower} or higher than {upper} an error message is added + to |v:errors|. Also see |assert-return|. + When {msg} is omitted an error in the form + "Expected range {lower} - {upper}, but got {actual}" is + produced. + + *assert_match()* + assert_match({pattern}, {actual} [, {msg}]) + When {pattern} does not match {actual} an error message is + added to |v:errors|. Also see |assert-return|. + + {pattern} is used as with |=~|: The matching is always done + like 'magic' was set and 'cpoptions' is empty, no matter what + the actual value of 'magic' or 'cpoptions' is. + + {actual} is used as a string, automatic conversion applies. + Use "^" and "$" to match with the start and end of the text. + Use both to match the whole text. + + When {msg} is omitted an error in the form + "Pattern {pattern} does not match {actual}" is produced. + Example: > + assert_match('^f.*o$', 'foobar') + < Will result in a string to be added to |v:errors|: + test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ + + *assert_notequal()* + assert_notequal({expected}, {actual} [, {msg}]) + The opposite of `assert_equal()`: add an error message to + |v:errors| when {expected} and {actual} are equal. + Also see |assert-return|. + + *assert_notmatch()* + assert_notmatch({pattern}, {actual} [, {msg}]) + The opposite of `assert_match()`: add an error message to + |v:errors| when {pattern} matches {actual}. + Also see |assert-return|. + + assert_report({msg}) *assert_report()* + Report a test failure directly, using {msg}. + Always returns one. + + assert_true({actual} [, {msg}]) *assert_true()* + When {actual} is not true an error message is added to + |v:errors|, like with |assert_equal()|. + Also see |assert-return|. + A value is TRUE when it is a non-zero number. When {actual} + is not a number the assert fails. + When {msg} is omitted an error in the form "Expected True but + got {actual}" is produced. + + + vim:tw=78:ts=8:noet:ft=help:norl: *** ../vim-8.1.1725/runtime/doc/sign.txt 2019-06-04 22:48:11.441416200 +0200 --- runtime/doc/sign.txt 2019-07-21 16:08:30.095340164 +0200 *************** *** 1,4 **** ! *sign.txt* For Vim version 8.1. Last change: 2019 May 05 VIM REFERENCE MANUAL by Gordon Prieur --- 1,4 ---- ! *sign.txt* For Vim version 8.1. Last change: 2019 Jul 21 VIM REFERENCE MANUAL by Gordon Prieur *************** *** 9,14 **** --- 9,15 ---- 1. Introduction |sign-intro| 2. Commands |sign-commands| + 3. Functions |sign-functions-details| {only available when compiled with the |+signs| feature} *************** *** 344,347 **** --- 345,701 ---- Same but jump to the sign in group {group} + ============================================================================== + 3. Functions *sign-functions-details* + + sign_define({name} [, {dict}]) *sign_define()* + sign_define({list}) + Define a new sign named {name} or modify the attributes of an + existing sign. This is similar to the |:sign-define| command. + + Prefix {name} with a unique text to avoid name collisions. + There is no {group} like with placing signs. + + The {name} can be a String or a Number. The optional {dict} + argument specifies the sign attributes. The following values + are supported: + icon full path to the bitmap file for the sign. + linehl highlight group used for the whole line the + sign is placed in. + text text that is displayed when there is no icon + or the GUI is not being used. + texthl highlight group used for the text item + + If the sign named {name} already exists, then the attributes + of the sign are updated. + + The one argument {list} can be used to define a list of signs. + Each list item is a dictionary with the above items in {dict} + and a 'name' item for the sign name. + + Returns 0 on success and -1 on failure. When the one argument + {list} is used, then returns a List of values one for each + defined sign. + + Examples: > + call sign_define("mySign", { + \ "text" : "=>", + \ "texthl" : "Error", + \ "linehl" : "Search"}) + call sign_define([ + \ {'name' : 'sign1', + \ 'text' : '=>'}, + \ {'name' : 'sign2', + \ 'text' : '!!'} + \ ]) + < + sign_getdefined([{name}]) *sign_getdefined()* + Get a list of defined signs and their attributes. + This is similar to the |:sign-list| command. + + If the {name} is not supplied, then a list of all the defined + signs is returned. Otherwise the attribute of the specified + sign is returned. + + Each list item in the returned value is a dictionary with the + following entries: + icon full path to the bitmap file of the sign + linehl highlight group used for the whole line the + sign is placed in. + name name of the sign + text text that is displayed when there is no icon + or the GUI is not being used. + texthl highlight group used for the text item + + Returns an empty List if there are no signs and when {name} is + not found. + + Examples: > + " Get a list of all the defined signs + echo sign_getdefined() + + " Get the attribute of the sign named mySign + echo sign_getdefined("mySign") + < + sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()* + Return a list of signs placed in a buffer or all the buffers. + This is similar to the |:sign-place-list| command. + + If the optional buffer name {expr} is specified, then only the + list of signs placed in that buffer is returned. For the use + of {expr}, see |bufname()|. The optional {dict} can contain + the following entries: + group select only signs in this group + id select sign with this identifier + lnum select signs placed in this line. For the use + of {lnum}, see |line()|. + If {group} is '*', then signs in all the groups including the + global group are returned. If {group} is not supplied or is an + empty string, then only signs in the global group are + returned. If no arguments are supplied, then signs in the + global group placed in all the buffers are returned. + See |sign-group|. + + Each list item in the returned value is a dictionary with the + following entries: + bufnr number of the buffer with the sign + signs list of signs placed in {bufnr}. Each list + item is a dictionary with the below listed + entries + + The dictionary for each sign contains the following entries: + group sign group. Set to '' for the global group. + id identifier of the sign + lnum line number where the sign is placed + name name of the defined sign + priority sign priority + + The returned signs in a buffer are ordered by their line + number and priority. + + Returns an empty list on failure or if there are no placed + signs. + + Examples: > + " Get a List of signs placed in eval.c in the + " global group + echo sign_getplaced("eval.c") + + " Get a List of signs in group 'g1' placed in eval.c + echo sign_getplaced("eval.c", {'group' : 'g1'}) + + " Get a List of signs placed at line 10 in eval.c + echo sign_getplaced("eval.c", {'lnum' : 10}) + + " Get sign with identifier 10 placed in a.py + echo sign_getplaced("a.py", {'id' : 10}) + + " Get sign with id 20 in group 'g1' placed in a.py + echo sign_getplaced("a.py", {'group' : 'g1', + \ 'id' : 20}) + + " Get a List of all the placed signs + echo sign_getplaced() + < + *sign_jump()* + sign_jump({id}, {group}, {expr}) + Open the buffer {expr} or jump to the window that contains + {expr} and position the cursor at sign {id} in group {group}. + This is similar to the |:sign-jump| command. + + For the use of {expr}, see |bufname()|. + + Returns the line number of the sign. Returns -1 if the + arguments are invalid. + + Example: > + " Jump to sign 10 in the current buffer + call sign_jump(10, '', '') + < + + *sign_place()* + sign_place({id}, {group}, {name}, {expr} [, {dict}]) + Place the sign defined as {name} at line {lnum} in file or + buffer {expr} and assign {id} and {group} to sign. This is + similar to the |:sign-place| command. + + If the sign identifier {id} is zero, then a new identifier is + allocated. Otherwise the specified number is used. {group} is + the sign group name. To use the global sign group, use an + empty string. {group} functions as a namespace for {id}, thus + two groups can use the same IDs. Refer to |sign-identifier| + and |sign-group| for more information. + + {name} refers to a defined sign. + {expr} refers to a buffer name or number. For the accepted + values, see |bufname()|. + + The optional {dict} argument supports the following entries: + lnum line number in the file or buffer + {expr} where the sign is to be placed. + For the accepted values, see |line()|. + priority priority of the sign. See + |sign-priority| for more information. + + If the optional {dict} is not specified, then it modifies the + placed sign {id} in group {group} to use the defined sign + {name}. + + Returns the sign identifier on success and -1 on failure. + + Examples: > + " Place a sign named sign1 with id 5 at line 20 in + " buffer json.c + call sign_place(5, '', 'sign1', 'json.c', + \ {'lnum' : 20}) + + " Updates sign 5 in buffer json.c to use sign2 + call sign_place(5, '', 'sign2', 'json.c') + + " Place a sign named sign3 at line 30 in + " buffer json.c with a new identifier + let id = sign_place(0, '', 'sign3', 'json.c', + \ {'lnum' : 30}) + + " Place a sign named sign4 with id 10 in group 'g3' + " at line 40 in buffer json.c with priority 90 + call sign_place(10, 'g3', 'sign4', 'json.c', + \ {'lnum' : 40, 'priority' : 90}) + < + + *sign_placelist()* + sign_placelist({list}) + Place one or more signs. This is similar to the + |sign_place()| function. The {list} argument specifies the + List of signs to place. Each list item is a dict with the + following sign attributes: + buffer buffer name or number. For the accepted + values, see |bufname()|. + group sign group. {group} functions as a namespace + for {id}, thus two groups can use the same + IDs. If not specified or set to an empty + string, then the global group is used. See + |sign-group| for more information. + id sign identifier. If not specified or zero, + then a new unique identifier is allocated. + Otherwise the specified number is used. See + |sign-identifier| for more information. + lnum line number in the buffer {expr} where the + sign is to be placed. For the accepted values, + see |line()|. + name name of the sign to place. See |sign_define()| + for more information. + priority priority of the sign. When multiple signs are + placed on a line, the sign with the highest + priority is used. If not specified, the + default value of 10 is used. See + |sign-priority| for more information. + + If {id} refers to an existing sign, then the existing sign is + modified to use the specified {name} and/or {priority}. + + Returns a List of sign identifiers. If failed to place a + sign, the corresponding list item is set to -1. + + Examples: > + " Place sign s1 with id 5 at line 20 and id 10 at line + " 30 in buffer a.c + let [n1, n2] = sign_placelist([ + \ {'id' : 5, + \ 'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 20}, + \ {'id' : 10, + \ 'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 30} + \ ]) + + " Place sign s1 in buffer a.c at line 40 and 50 + " with auto-generated identifiers + let [n1, n2] = sign_placelist([ + \ {'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 40}, + \ {'name' : 's1', + \ 'buffer' : 'a.c', + \ 'lnum' : 50} + \ ]) + < + + sign_undefine([{name}]) *sign_undefine()* + sign_undefine({list}) + Deletes a previously defined sign {name}. This is similar to + the |:sign-undefine| command. If {name} is not supplied, then + deletes all the defined signs. + + The one argument {list} can be used to undefine a list of + signs. Each list item is the name of a sign. + + Returns 0 on success and -1 on failure. For the one argument + {list} call, returns a list of values one for each undefined + sign. + + Examples: > + " Delete a sign named mySign + call sign_undefine("mySign") + + " Delete signs 'sign1' and 'sign2' + call sign_undefine(["sign1", "sign2"]) + + " Delete all the signs + call sign_undefine() + < + + sign_unplace({group} [, {dict}]) *sign_unplace()* + Remove a previously placed sign in one or more buffers. This + is similar to the |:sign-unplace| command. + + {group} is the sign group name. To use the global sign group, + use an empty string. If {group} is set to '*', then all the + groups including the global group are used. + The signs in {group} are selected based on the entries in + {dict}. The following optional entries in {dict} are + supported: + buffer buffer name or number. See |bufname()|. + id sign identifier + If {dict} is not supplied, then all the signs in {group} are + removed. + + Returns 0 on success and -1 on failure. + + Examples: > + " Remove sign 10 from buffer a.vim + call sign_unplace('', {'buffer' : "a.vim", 'id' : 10}) + + " Remove sign 20 in group 'g1' from buffer 3 + call sign_unplace('g1', {'buffer' : 3, 'id' : 20}) + + " Remove all the signs in group 'g2' from buffer 10 + call sign_unplace('g2', {'buffer' : 10}) + + " Remove sign 30 in group 'g3' from all the buffers + call sign_unplace('g3', {'id' : 30}) + + " Remove all the signs placed in buffer 5 + call sign_unplace('*', {'buffer' : 5}) + + " Remove the signs in group 'g4' from all the buffers + call sign_unplace('g4') + + " Remove sign 40 from all the buffers + call sign_unplace('*', {'id' : 40}) + + " Remove all the placed signs from all the buffers + call sign_unplace('*') + < + sign_unplacelist({list}) *sign_unplacelist()* + Remove previously placed signs from one or more buffers. This + is similar to the |sign_unplace()| function. + + The {list} argument specifies the List of signs to remove. + Each list item is a dict with the following sign attributes: + buffer buffer name or number. For the accepted + values, see |bufname()|. If not specified, + then the specified sign is removed from all + the buffers. + group sign group name. If not specified or set to an + empty string, then the global sign group is + used. If set to '*', then all the groups + including the global group are used. + id sign identifier. If not specified, then all + the signs in the specified group are removed. + + Returns a List where an entry is set to 0 if the corresponding + sign was successfully removed or -1 on failure. + + Example: > + " Remove sign with id 10 from buffer a.vim and sign + " with id 20 from buffer b.vim + call sign_unplacelist([ + \ {'id' : 10, 'buffer' : "a.vim"}, + \ {'id' : 20, 'buffer' : 'b.vim'}, + \ ]) + < + vim:tw=78:ts=8:noet:ft=help:norl: *** ../vim-8.1.1725/runtime/doc/textprop.txt 2019-05-05 18:11:46.324590615 +0200 --- runtime/doc/textprop.txt 2019-07-20 15:20:59.167929928 +0200 *************** *** 1,10 **** ! *textprop.txt* For Vim version 8.1. Last change: 2019 May 05 VIM REFERENCE MANUAL by Bram Moolenaar ! Displaying text with properties attached. *text-properties* THIS IS UNDER DEVELOPMENT - ANYTHING MAY STILL CHANGE *E967* --- 1,10 ---- ! *textprop.txt* For Vim version 8.1. Last change: 2019 Jul 20 VIM REFERENCE MANUAL by Bram Moolenaar ! Displaying text with properties attached. *textprop* *text-properties* THIS IS UNDER DEVELOPMENT - ANYTHING MAY STILL CHANGE *E967* *************** *** 12,18 **** - Adjusting column/length when inserting text - Text properties spanning more than one line - prop_find() - - callbacks when text properties are outdated 1. Introduction |text-prop-intro| --- 12,17 ---- *************** *** 57,63 **** how to highlight the text. The property type can have these entries: "highlight" name of the highlight group to use "combine" when TRUE the text property highlighting is combined ! with any syntax highligting, when omitted or FALSE the text property highlighting replaces the syntax highlighting "priority" when properties overlap, the one with the highest --- 56,62 ---- how to highlight the text. The property type can have these entries: "highlight" name of the highlight group to use "combine" when TRUE the text property highlighting is combined ! with any syntax highlighting, when omitted or FALSE the text property highlighting replaces the syntax highlighting "priority" when properties overlap, the one with the highest *************** *** 117,122 **** --- 116,317 ---- prop_remove({props} [, {lnum} [, {lnum-end}]]) remove a text property + *prop_add()* *E965* + prop_add({lnum}, {col}, {props}) + Attach a text property at position {lnum}, {col}. {col} is + counted in bytes, use one for the first column. + If {lnum} is invalid an error is given. *E966* + If {col} is invalid an error is given. *E964* + + {props} is a dictionary with these fields: + length length of text in bytes, can only be used + for a property that does not continue in + another line; can be zero + end_lnum line number for the end of text + end_col column just after the text; not used when + "length" is present; when {col} and "end_col" + are equal, and "end_lnum" is omitted or equal + to {lnum}, this is a zero-width text property + bufnr buffer to add the property to; when omitted + the current buffer is used + id user defined ID for the property; when omitted + zero is used + type name of the text property type + All fields except "type" are optional. + + It is an error when both "length" and "end_lnum" or "end_col" + are given. Either use "length" or "end_col" for a property + within one line, or use "end_lnum" and "end_col" for a + property that spans more than one line. + When neither "length" nor "end_col" are given the property + will be zero-width. That means it will not be highlighted but + will move with the text, as a kind of mark. + The property can end exactly at the last character of the + text, or just after it. In the last case, if text is appended + to the line, the text property size will increase, also when + the property type does not have "end_incl" set. + + "type" will first be looked up in the buffer the property is + added to. When not found, the global property types are used. + If not found an error is given. + + See |text-properties| for information about text properties. + + + prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()* + Remove all text properties from line {lnum}. + When {lnum-end} is given, remove all text properties from line + {lnum} to {lnum-end} (inclusive). + + When {props} contains a "bufnr" item use this buffer, + otherwise use the current buffer. + + See |text-properties| for information about text properties. + + *prop_find()* + prop_find({props} [, {direction}]) + NOT IMPLEMENTED YET + Search for a text property as specified with {props}: + id property with this ID + type property with this type name + bufnr buffer to search in; when present a + start position with "lnum" and "col" + must be given; when omitted the + current buffer is used + lnum start in this line (when omitted start + at the cursor) + col start at this column (when omitted + and "lnum" is given: use column 1, + otherwise start at the cursor) + skipstart do not look for a match at the start + position + + {direction} can be "f" for forward and "b" for backward. When + omitted forward search is performed. + + If a match is found then a Dict is returned with the entries + as with prop_list(), and additionally an "lnum" entry. + If no match is found then an empty Dict is returned. + + See |text-properties| for information about text properties. + + + prop_list({lnum} [, {props}]) *prop_list()* + Return a List with all text properties in line {lnum}. + + When {props} contains a "bufnr" item, use this buffer instead + of the current buffer. + + The properties are ordered by starting column and priority. + Each property is a Dict with these entries: + col starting column + length length in bytes, one more if line break is + included + id property ID + type name of the property type, omitted if + the type was deleted + start when TRUE property starts in this line + end when TRUE property ends in this line + + When "start" is zero the property started in a previous line, + the current one is a continuation. + When "end" is zero the property continues in the next line. + The line break after this line is included. + + See |text-properties| for information about text properties. + + + *prop_remove()* *E968* + prop_remove({props} [, {lnum} [, {lnum-end}]]) + Remove a matching text property from line {lnum}. When + {lnum-end} is given, remove matching text properties from line + {lnum} to {lnum-end} (inclusive). + When {lnum} is omitted remove matching text properties from + all lines. + + {props} is a dictionary with these fields: + id remove text properties with this ID + type remove text properties with this type name + bufnr use this buffer instead of the current one + all when TRUE remove all matching text properties, + not just the first one + A property matches when either "id" or "type" matches. + If buffer "bufnr" does not exist you get an error message. + If buffer "bufnr" is not loaded then nothing happens. + + Returns the number of properties that were removed. + + See |text-properties| for information about text properties. + + + prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970* + Add a text property type {name}. If a property type with this + name already exists an error is given. + {props} is a dictionary with these optional fields: + bufnr define the property only for this buffer; this + avoids name collisions and automatically + clears the property types when the buffer is + deleted. + highlight name of highlight group to use + priority when a character has multiple text + properties the one with the highest priority + will be used; negative values can be used, the + default priority is zero + combine when TRUE combine the highlight with any + syntax highlight; when omitted or FALSE syntax + highlight will not be used + start_incl when TRUE inserts at the start position will + be included in the text property + end_incl when TRUE inserts at the end position will be + included in the text property + + See |text-properties| for information about text properties. + + + prop_type_change({name}, {props}) *prop_type_change()* + Change properties of an existing text property type. If a + property with this name does not exist an error is given. + The {props} argument is just like |prop_type_add()|. + + See |text-properties| for information about text properties. + + + prop_type_delete({name} [, {props}]) *prop_type_delete()* + Remove the text property type {name}. When text properties + using the type {name} are still in place, they will not have + an effect and can no longer be removed by name. + + {props} can contain a "bufnr" item. When it is given, delete + a property type from this buffer instead of from the global + property types. + + When text property type {name} is not found there is no error. + + See |text-properties| for information about text properties. + + + prop_type_get([{name} [, {props}]) *prop_type_get()* + Returns the properties of property type {name}. This is a + dictionary with the same fields as was given to + prop_type_add(). + When the property type {name} does not exist, an empty + dictionary is returned. + + {props} can contain a "bufnr" item. When it is given, use + this buffer instead of the global property types. + + See |text-properties| for information about text properties. + + + prop_type_list([{props}]) *prop_type_list()* + Returns a list with all property type names. + + {props} can contain a "bufnr" item. When it is given, use + this buffer instead of the global property types. + + See |text-properties| for information about text properties. + + ============================================================================== 3. When text changes *text-prop-changes* *************** *** 131,141 **** When using replace mode, the text properties stay on the same character positions, even though the characters themselves change. ! When text property columns are not updated ~ - When setting the line with |setline()| or through an interface, such as Lua, ! Tcl or Python. vim:tw=78:ts=8:noet:ft=help:norl: --- 326,342 ---- When using replace mode, the text properties stay on the same character positions, even though the characters themselves change. + To update text properties after the text was changed, install a callback with + `listener_add()`. E.g, if your plugin does spell checking, you can have the + callback update spelling mistakes in the changed text. Vim will move the + properties below the changed text, so that they still highlight the same text, + thus you don't need to update these. + ! Text property columns are not updated: ~ - When setting the line with |setline()| or through an interface, such as Lua, ! Tcl or Python. Vim does not know what text got inserted or deleted. vim:tw=78:ts=8:noet:ft=help:norl: *** ../vim-8.1.1725/runtime/doc/help.txt 2019-05-12 21:43:24.626559005 +0200 --- runtime/doc/help.txt 2019-07-21 16:13:01.242138197 +0200 *************** *** 1,4 **** ! *help.txt* For Vim version 8.1. Last change: 2019 Jan 17 VIM - main help file k --- 1,4 ---- ! *help.txt* For Vim version 8.1. Last change: 2019 Jul 21 VIM - main help file k *************** *** 139,144 **** --- 139,145 ---- |fold.txt| hide (fold) ranges of lines Special issues ~ + |testing.txt| testing Vim and Vim scripts |print.txt| printing |remote.txt| using Vim as a server or client |term.txt| using different terminals and mice *** ../vim-8.1.1725/runtime/doc/channel.txt 2019-05-05 18:11:46.308590707 +0200 --- runtime/doc/channel.txt 2019-07-21 16:05:37.396126039 +0200 *************** *** 1,4 **** ! *channel.txt* For Vim version 8.1. Last change: 2019 May 05 VIM REFERENCE MANUAL by Bram Moolenaar --- 1,4 ---- ! *channel.txt* For Vim version 8.1. Last change: 2019 Jul 21 VIM REFERENCE MANUAL by Bram Moolenaar *************** *** 18,28 **** 5. Channel commands |channel-commands| 6. Using a RAW or NL channel |channel-raw| 7. More channel functions |channel-more| ! 8. Starting a job with a channel |job-start| ! 9. Starting a job without a channel |job-start-nochannel| ! 10. Job options |job-options| ! 11. Controlling a job |job-control| ! 12. Using a prompt buffer |prompt-buffer| {only when compiled with the |+channel| feature for channel stuff} You can check this with: `has('channel')` --- 18,30 ---- 5. Channel commands |channel-commands| 6. Using a RAW or NL channel |channel-raw| 7. More channel functions |channel-more| ! 8. channel functions details |channel-functions-details| ! 9. Starting a job with a channel |job-start| ! 10. Starting a job without a channel |job-start-nochannel| ! 11. Job functions |job-functions-details| ! 12. Job options |job-options| ! 13. Controlling a job |job-control| ! 14. Using a prompt buffer |prompt-buffer| {only when compiled with the |+channel| feature for channel stuff} You can check this with: `has('channel')` *************** *** 155,161 **** func MyCloseHandler(channel) < Vim will invoke callbacks that handle data before invoking close_cb, thus when this function is called no more data will ! be passed to the callbacks. *channel-drop* "drop" Specifies when to drop messages: "auto" When there is no callback to handle a message. --- 157,166 ---- func MyCloseHandler(channel) < Vim will invoke callbacks that handle data before invoking close_cb, thus when this function is called no more data will ! be passed to the callbacks. However, if a callback causes Vim ! to check for messages, the close_cb may be invoked while still ! in the callback. The plugin must handle this somehow, it can ! be useful to know that no more data is coming. *channel-drop* "drop" Specifies when to drop messages: "auto" When there is no callback to handle a message. *************** *** 457,463 **** This includes any sequence number. ============================================================================== ! 8. Starting a job with a channel *job-start* *job* To start a job and open a channel for stdin/stdout/stderr: > let job = job_start(command, {options}) --- 462,672 ---- This includes any sequence number. ============================================================================== ! 8. channel functions details *channel-functions-details* ! ! ch_canread({handle}) *ch_canread()* ! Return non-zero when there is something to read from {handle}. ! {handle} can be a Channel or a Job that has a Channel. ! ! This is useful to read from a channel at a convenient time, ! e.g. from a timer. ! ! Note that messages are dropped when the channel does not have ! a callback. Add a close callback to avoid that. ! ! ! ch_close({handle}) *ch_close()* ! Close {handle}. See |channel-close|. ! {handle} can be a Channel or a Job that has a Channel. ! A close callback is not invoked. ! ! ! ch_close_in({handle}) *ch_close_in()* ! Close the "in" part of {handle}. See |channel-close-in|. ! {handle} can be a Channel or a Job that has a Channel. ! A close callback is not invoked. ! ! ! ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()* ! Send {expr} over {handle}. The {expr} is encoded ! according to the type of channel. The function cannot be used ! with a raw channel. See |channel-use|. ! {handle} can be a Channel or a Job that has a Channel. ! *E917* ! {options} must be a Dictionary. It must not have a "callback" ! entry. It can have a "timeout" entry to specify the timeout ! for this specific request. ! ! ch_evalexpr() waits for a response and returns the decoded ! expression. When there is an error or timeout it returns an ! empty string. ! ! ! ch_evalraw({handle}, {string} [, {options}]) *ch_evalraw()* ! Send {string} over {handle}. ! {handle} can be a Channel or a Job that has a Channel. ! ! Works like |ch_evalexpr()|, but does not encode the request or ! decode the response. The caller is responsible for the ! correct contents. Also does not add a newline for a channel ! in NL mode, the caller must do that. The NL in the response ! is removed. ! Note that Vim does not know when the text received on a raw ! channel is complete, it may only return the first part and you ! need to use |ch_readraw()| to fetch the rest. ! See |channel-use|. ! ! ! ch_getbufnr({handle}, {what}) *ch_getbufnr()* ! Get the buffer number that {handle} is using for {what}. ! {handle} can be a Channel or a Job that has a Channel. ! {what} can be "err" for stderr, "out" for stdout or empty for ! socket output. ! Returns -1 when there is no buffer. ! ! ! ch_getjob({channel}) *ch_getjob()* ! Get the Job associated with {channel}. ! If there is no job calling |job_status()| on the returned Job ! will result in "fail". ! ! ! ch_info({handle}) *ch_info()* ! Returns a Dictionary with information about {handle}. The ! items are: ! "id" number of the channel ! "status" "open", "buffered" or "closed", like ! ch_status() ! When opened with ch_open(): ! "hostname" the hostname of the address ! "port" the port of the address ! "sock_status" "open" or "closed" ! "sock_mode" "NL", "RAW", "JSON" or "JS" ! "sock_io" "socket" ! "sock_timeout" timeout in msec ! When opened with job_start(): ! "out_status" "open", "buffered" or "closed" ! "out_mode" "NL", "RAW", "JSON" or "JS" ! "out_io" "null", "pipe", "file" or "buffer" ! "out_timeout" timeout in msec ! "err_status" "open", "buffered" or "closed" ! "err_mode" "NL", "RAW", "JSON" or "JS" ! "err_io" "out", "null", "pipe", "file" or "buffer" ! "err_timeout" timeout in msec ! "in_status" "open" or "closed" ! "in_mode" "NL", "RAW", "JSON" or "JS" ! "in_io" "null", "pipe", "file" or "buffer" ! "in_timeout" timeout in msec ! ! ! ch_log({msg} [, {handle}]) *ch_log()* ! Write {msg} in the channel log file, if it was opened with ! |ch_logfile()|. ! When {handle} is passed the channel number is used for the ! message. ! {handle} can be a Channel or a Job that has a Channel. The ! Channel must be open for the channel number to be used. ! ! ! ch_logfile({fname} [, {mode}]) *ch_logfile()* ! Start logging channel activity to {fname}. ! When {fname} is an empty string: stop logging. ! ! When {mode} is omitted or "a" append to the file. ! When {mode} is "w" start with an empty file. ! ! Use |ch_log()| to write log messages. The file is flushed ! after every message, on Unix you can use "tail -f" to see what ! is going on in real time. ! ! This function is not available in the |sandbox|. ! NOTE: the channel communication is stored in the file, be ! aware that this may contain confidential and privacy sensitive ! information, e.g. a password you type in a terminal window. ! ! ! ch_open({address} [, {options}]) *ch_open()* ! Open a channel to {address}. See |channel|. ! Returns a Channel. Use |ch_status()| to check for failure. ! ! {address} has the form "hostname:port", e.g., ! "localhost:8765". ! ! If {options} is given it must be a |Dictionary|. ! See |channel-open-options|. ! ! ! ch_read({handle} [, {options}]) *ch_read()* ! Read from {handle} and return the received message. ! {handle} can be a Channel or a Job that has a Channel. ! For a NL channel this waits for a NL to arrive, except when ! there is nothing more to read (channel was closed). ! See |channel-more|. ! ! ! ch_readblob({handle} [, {options}]) *ch_readblob()* ! Like ch_read() but reads binary data and returns a |Blob|. ! See |channel-more|. ! ! ! ch_readraw({handle} [, {options}]) *ch_readraw()* ! Like ch_read() but for a JS and JSON channel does not decode ! the message. For a NL channel it does not block waiting for ! the NL to arrive, but otherwise works like ch_read(). ! See |channel-more|. ! ! ! ch_sendexpr({handle}, {expr} [, {options}]) *ch_sendexpr()* ! Send {expr} over {handle}. The {expr} is encoded ! according to the type of channel. The function cannot be used ! with a raw channel. ! See |channel-use|. *E912* ! {handle} can be a Channel or a Job that has a Channel. ! ! ! ch_sendraw({handle}, {expr} [, {options}]) *ch_sendraw()* ! Send |String| or |Blob| {expr} over {handle}. ! Works like |ch_sendexpr()|, but does not encode the request or ! decode the response. The caller is responsible for the ! correct contents. Also does not add a newline for a channel ! in NL mode, the caller must do that. The NL in the response ! is removed. ! See |channel-use|. ! ! ! ch_setoptions({handle}, {options}) *ch_setoptions()* ! Set options on {handle}: ! "callback" the channel callback ! "timeout" default read timeout in msec ! "mode" mode for the whole channel ! See |ch_open()| for more explanation. ! {handle} can be a Channel or a Job that has a Channel. ! ! Note that changing the mode may cause queued messages to be ! lost. ! ! These options cannot be changed: ! "waittime" only applies to |ch_open()| ! ! ! ch_status({handle} [, {options}]) *ch_status()* ! Return the status of {handle}: ! "fail" failed to open the channel ! "open" channel can be used ! "buffered" channel can be read, not written to ! "closed" channel can not be used ! {handle} can be a Channel or a Job that has a Channel. ! "buffered" is used when the channel was closed but there is ! still data that can be obtained with |ch_read()|. ! ! If {options} is given it can contain a "part" entry to specify ! the part of the channel to return the status for: "out" or ! "err". For example, to get the error status: > ! ch_status(job, {"part": "err"}) ! < ! ! ============================================================================== ! 9. Starting a job with a channel *job-start* *job* To start a job and open a channel for stdin/stdout/stderr: > let job = job_start(command, {options}) *************** *** 549,555 **** You will want to do something more useful than "echomsg". ============================================================================== ! 9. Starting a job without a channel *job-start-nochannel* To start another process without creating a channel: > let job = job_start(command, --- 758,764 ---- You will want to do something more useful than "echomsg". ============================================================================== ! 10. Starting a job without a channel *job-start-nochannel* To start another process without creating a channel: > let job = job_start(command, *************** *** 576,582 **** available. ============================================================================== ! 10. Job options *job-options* The {options} argument in job_start() is a dictionary. All entries are optional. Some options can be used after the job has started, using --- 785,948 ---- available. ============================================================================== ! 11. Job functions *job-functions-details* ! ! job_getchannel({job}) *job_getchannel()* ! Get the channel handle that {job} is using. ! To check if the job has no channel: > ! if string(job_getchannel()) == 'channel fail' ! < ! ! job_info([{job}]) *job_info()* ! Returns a Dictionary with information about {job}: ! "status" what |job_status()| returns ! "channel" what |job_getchannel()| returns ! "cmd" List of command arguments used to start the job ! "process" process ID ! "tty_in" terminal input name, empty when none ! "tty_out" terminal output name, empty when none ! "exitval" only valid when "status" is "dead" ! "exit_cb" function to be called on exit ! "stoponexit" |job-stoponexit| ! ! Only in Unix: ! "termsig" the signal which terminated the process ! (See |job_stop()| for the values) ! only valid when "status" is "dead" ! ! Only in MS-Windows: ! "tty_type" Type of virtual console in use. ! Values are "winpty" or "conpty". ! See 'termwintype'. ! ! Without any arguments, returns a List with all Job objects. ! ! ! job_setoptions({job}, {options}) *job_setoptions()* ! Change options for {job}. Supported are: ! "stoponexit" |job-stoponexit| ! "exit_cb" |job-exit_cb| ! ! ! job_start({command} [, {options}]) *job_start()* ! Start a job and return a Job object. Unlike |system()| and ! |:!cmd| this does not wait for the job to finish. ! To start a job in a terminal window see |term_start()|. ! ! If the job fails to start then |job_status()| on the returned ! Job object results in "fail" and none of the callbacks will be ! invoked. ! ! {command} can be a String. This works best on MS-Windows. On ! Unix it is split up in white-separated parts to be passed to ! execvp(). Arguments in double quotes can contain white space. ! ! {command} can be a List, where the first item is the executable ! and further items are the arguments. All items are converted ! to String. This works best on Unix. ! ! On MS-Windows, job_start() makes a GUI application hidden. If ! want to show it, Use |:!start| instead. ! ! The command is executed directly, not through a shell, the ! 'shell' option is not used. To use the shell: > ! let job = job_start(["/bin/sh", "-c", "echo hello"]) ! < Or: > ! let job = job_start('/bin/sh -c "echo hello"') ! < Note that this will start two processes, the shell and the ! command it executes. If you don't want this use the "exec" ! shell command. ! ! On Unix $PATH is used to search for the executable only when ! the command does not contain a slash. ! ! The job will use the same terminal as Vim. If it reads from ! stdin the job and Vim will be fighting over input, that ! doesn't work. Redirect stdin and stdout to avoid problems: > ! let job = job_start(['sh', '-c', "myserver /dev/null"]) ! < ! The returned Job object can be used to get the status with ! |job_status()| and stop the job with |job_stop()|. ! ! Note that the job object will be deleted if there are no ! references to it. This closes the stdin and stderr, which may ! cause the job to fail with an error. To avoid this keep a ! reference to the job. Thus instead of: > ! call job_start('my-command') ! < use: > ! let myjob = job_start('my-command') ! < and unlet "myjob" once the job is not needed or is past the ! point where it would fail (e.g. when it prints a message on ! startup). Keep in mind that variables local to a function ! will cease to exist if the function returns. Use a ! script-local variable if needed: > ! let s:myjob = job_start('my-command') ! < ! {options} must be a Dictionary. It can contain many optional ! items, see |job-options|. ! ! ! job_status({job}) *job_status()* *E916* ! Returns a String with the status of {job}: ! "run" job is running ! "fail" job failed to start ! "dead" job died or was stopped after running ! ! On Unix a non-existing command results in "dead" instead of ! "fail", because a fork happens before the failure can be ! detected. ! ! If an exit callback was set with the "exit_cb" option and the ! job is now detected to be "dead" the callback will be invoked. ! ! For more information see |job_info()|. ! ! ! job_stop({job} [, {how}]) *job_stop()* ! Stop the {job}. This can also be used to signal the job. ! ! When {how} is omitted or is "term" the job will be terminated. ! For Unix SIGTERM is sent. On MS-Windows the job will be ! terminated forcedly (there is no "gentle" way). ! This goes to the process group, thus children may also be ! affected. ! ! Effect for Unix: ! "term" SIGTERM (default) ! "hup" SIGHUP ! "quit" SIGQUIT ! "int" SIGINT ! "kill" SIGKILL (strongest way to stop) ! number signal with that number ! ! Effect for MS-Windows: ! "term" terminate process forcedly (default) ! "hup" CTRL_BREAK ! "quit" CTRL_BREAK ! "int" CTRL_C ! "kill" terminate process forcedly ! Others CTRL_BREAK ! ! On Unix the signal is sent to the process group. This means ! that when the job is "sh -c command" it affects both the shell ! and the command. ! ! The result is a Number: 1 if the operation could be executed, ! 0 if "how" is not supported on the system. ! Note that even when the operation was executed, whether the ! job was actually stopped needs to be checked with ! |job_status()|. ! ! If the status of the job is "dead", the signal will not be ! sent. This is to avoid to stop the wrong job (esp. on Unix, ! where process numbers are recycled). ! ! When using "kill" Vim will assume the job will die and close ! the channel. ! ! ! ============================================================================== ! 12. Job options *job-options* The {options} argument in job_start() is a dictionary. All entries are optional. Some options can be used after the job has started, using *************** *** 770,776 **** If the file already exists it is truncated. ============================================================================== ! 11. Controlling a job *job-control* To get the status of a job: > echo job_status(job) --- 1136,1142 ---- If the file already exists it is truncated. ============================================================================== ! 13. Controlling a job *job-control* To get the status of a job: > echo job_status(job) *************** *** 786,792 **** For more options see |job_stop()|. ============================================================================== ! 12. Using a prompt buffer *prompt-buffer* If you want to type input for the job in a Vim window you have a few options: - Use a normal buffer and handle all possible commands yourself. --- 1152,1158 ---- For more options see |job_stop()|. ============================================================================== ! 14. Using a prompt buffer *prompt-buffer* If you want to type input for the job in a Vim window you have a few options: - Use a normal buffer and handle all possible commands yourself. *** ../vim-8.1.1725/runtime/doc/tags 2019-05-05 18:11:46.336590548 +0200 --- runtime/doc/tags 2019-07-21 16:33:02.837856296 +0200 *************** *** 455,460 **** --- 455,461 ---- 'mis' options.txt /*'mis'* 'mkspellmem' options.txt /*'mkspellmem'* 'ml' options.txt /*'ml'* + 'mle' options.txt /*'mle'* 'mls' options.txt /*'mls'* 'mm' options.txt /*'mm'* 'mmd' options.txt /*'mmd'* *************** *** 462,467 **** --- 463,469 ---- 'mmt' options.txt /*'mmt'* 'mod' options.txt /*'mod'* 'modeline' options.txt /*'modeline'* + 'modelineexpr' options.txt /*'modelineexpr'* 'modelines' options.txt /*'modelines'* 'modifiable' options.txt /*'modifiable'* 'modified' options.txt /*'modified'* *************** *** 617,624 **** --- 619,628 ---- 'nomagic' options.txt /*'nomagic'* 'nomh' options.txt /*'nomh'* 'noml' options.txt /*'noml'* + 'nomle' options.txt /*'nomle'* 'nomod' options.txt /*'nomod'* 'nomodeline' options.txt /*'nomodeline'* + 'nomodelineexpr' options.txt /*'nomodelineexpr'* 'nomodifiable' options.txt /*'nomodifiable'* 'nomodified' options.txt /*'nomodified'* 'nomore' options.txt /*'nomore'* *************** *** 771,776 **** --- 775,781 ---- 'pp' options.txt /*'pp'* 'preserveindent' options.txt /*'preserveindent'* 'previewheight' options.txt /*'previewheight'* + 'previewpopup' options.txt /*'previewpopup'* 'previewwindow' options.txt /*'previewwindow'* 'printdevice' options.txt /*'printdevice'* 'printencoding' options.txt /*'printencoding'* *************** *** 785,790 **** --- 790,796 ---- 'pumheight' options.txt /*'pumheight'* 'pumwidth' options.txt /*'pumwidth'* 'pvh' options.txt /*'pvh'* + 'pvp' options.txt /*'pvp'* 'pvw' options.txt /*'pvw'* 'pw' options.txt /*'pw'* 'pythondll' options.txt /*'pythondll'* *************** *** 1181,1186 **** --- 1187,1193 ---- 'wb' options.txt /*'wb'* 'wc' options.txt /*'wc'* 'wcm' options.txt /*'wcm'* + 'wcr' options.txt /*'wcr'* 'wd' options.txt /*'wd'* 'weirdinvert' options.txt /*'weirdinvert'* 'wfh' options.txt /*'wfh'* *************** *** 1199,1204 **** --- 1206,1212 ---- 'wildoptions' options.txt /*'wildoptions'* 'wim' options.txt /*'wim'* 'winaltkeys' options.txt /*'winaltkeys'* + 'wincolor' options.txt /*'wincolor'* 'window' options.txt /*'window'* 'winfixheight' options.txt /*'winfixheight'* 'winfixwidth' options.txt /*'winfixwidth'* *************** *** 1345,1350 **** --- 1353,1360 ---- +scrollbind various.txt /*+scrollbind* +signs various.txt /*+signs* +smartindent various.txt /*+smartindent* + +sound various.txt /*+sound* + +spell various.txt /*+spell* +startuptime various.txt /*+startuptime* +statusline various.txt /*+statusline* +sun_workshop various.txt /*+sun_workshop* *************** *** 2043,2048 **** --- 2053,2059 ---- :abclear map.txt /*:abclear* :abo windows.txt /*:abo* :aboveleft windows.txt /*:aboveleft* + :addd quickfix.txt /*:addd* :al windows.txt /*:al* :all windows.txt /*:all* :am gui.txt /*:am* *************** *** 2051,2056 **** --- 2062,2068 ---- :anoremenu gui.txt /*:anoremenu* :append insert.txt /*:append* :ar editing.txt /*:ar* + :arg editing.txt /*:arg* :arga editing.txt /*:arga* :argadd editing.txt /*:argadd* :argd editing.txt /*:argd* *************** *** 2103,2108 **** --- 2115,2121 ---- :bp windows.txt /*:bp* :bprevious windows.txt /*:bprevious* :br windows.txt /*:br* + :bre windows.txt /*:bre* :brea eval.txt /*:brea* :break eval.txt /*:break* :breaka repeat.txt /*:breaka* *************** *** 2132,2143 **** --- 2145,2158 ---- :cNf quickfix.txt /*:cNf* :cNfile quickfix.txt /*:cNfile* :ca map.txt /*:ca* + :cab map.txt /*:cab* :cabbrev map.txt /*:cabbrev* :cabc map.txt /*:cabc* :cabclear map.txt /*:cabclear* :cabo quickfix.txt /*:cabo* :cabove quickfix.txt /*:cabove* :cad quickfix.txt /*:cad* + :cadd quickfix.txt /*:cadd* :caddbuffer quickfix.txt /*:caddbuffer* :cadde quickfix.txt /*:cadde* :caddexpr quickfix.txt /*:caddexpr* *************** *** 2151,2158 **** :catch eval.txt /*:catch* :cb quickfix.txt /*:cb* :cbe quickfix.txt /*:cbe* - :cbe quickfix.txt /*:cbe* :cbefore quickfix.txt /*:cbefore* :cbelow quickfix.txt /*:cbelow* :cbo quickfix.txt /*:cbo* :cbottom quickfix.txt /*:cbottom* --- 2166,2173 ---- :catch eval.txt /*:catch* :cb quickfix.txt /*:cb* :cbe quickfix.txt /*:cbe* :cbefore quickfix.txt /*:cbefore* + :cbel quickfix.txt /*:cbel* :cbelow quickfix.txt /*:cbelow* :cbo quickfix.txt /*:cbo* :cbottom quickfix.txt /*:cbottom* *************** *** 2184,2189 **** --- 2199,2206 ---- :chd editing.txt /*:chd* :chdir editing.txt /*:chdir* :che tagsrch.txt /*:che* + :chec tagsrch.txt /*:chec* + :check tagsrch.txt /*:check* :checkpath tagsrch.txt /*:checkpath* :checkt editing.txt /*:checkt* :checktime editing.txt /*:checktime* *************** *** 2205,2216 **** --- 2222,2235 ---- :cme gui.txt /*:cme* :cmenu gui.txt /*:cmenu* :cn quickfix.txt /*:cn* + :cne quickfix.txt /*:cne* :cnew quickfix.txt /*:cnew* :cnewer quickfix.txt /*:cnewer* :cnext quickfix.txt /*:cnext* :cnf quickfix.txt /*:cnf* :cnfile quickfix.txt /*:cnfile* :cno map.txt /*:cno* + :cnor map.txt /*:cnor* :cnorea map.txt /*:cnorea* :cnoreabbrev map.txt /*:cnoreabbrev* :cnoremap map.txt /*:cnoremap* *************** *** 2244,2249 **** --- 2263,2270 ---- :con eval.txt /*:con* :conf editing.txt /*:conf* :confirm editing.txt /*:confirm* + :cons eval.txt /*:cons* + :const eval.txt /*:const* :continue eval.txt /*:continue* :cope quickfix.txt /*:cope* :copen quickfix.txt /*:copen* *************** *** 2261,2266 **** --- 2282,2288 ---- :cscope if_cscop.txt /*:cscope* :cstag if_cscop.txt /*:cstag* :cu map.txt /*:cu* + :cun map.txt /*:cun* :cuna map.txt /*:cuna* :cunabbrev map.txt /*:cunabbrev* :cunmap map.txt /*:cunmap* *************** *** 2285,2290 **** --- 2307,2313 ---- :delmarks motion.txt /*:delmarks* :di change.txt /*:di* :dif diff.txt /*:dif* + :diff diff.txt /*:diff* :diffg diff.txt /*:diffg* :diffget diff.txt /*:diffget* :diffo diff.txt /*:diffo* *************** *** 2308,2313 **** --- 2331,2337 ---- :dlist tagsrch.txt /*:dlist* :do autocmd.txt /*:do* :doau autocmd.txt /*:doau* + :doaut autocmd.txt /*:doaut* :doautoa autocmd.txt /*:doautoa* :doautoall autocmd.txt /*:doautoall* :doautocmd autocmd.txt /*:doautocmd* *************** *** 2342,2347 **** --- 2366,2372 ---- :em gui.txt /*:em* :emenu gui.txt /*:emenu* :en eval.txt /*:en* + :end eval.txt /*:end* :endf eval.txt /*:endf* :endfo eval.txt /*:endfo* :endfor eval.txt /*:endfor* *************** *** 2394,2399 **** --- 2419,2425 ---- :foldc fold.txt /*:foldc* :foldclose fold.txt /*:foldclose* :foldd fold.txt /*:foldd* + :folddo fold.txt /*:folddo* :folddoc fold.txt /*:folddoc* :folddoclosed fold.txt /*:folddoclosed* :folddoopen fold.txt /*:folddoopen* *************** *** 2465,2470 **** --- 2491,2497 ---- :in insert.txt /*:in* :index index.txt /*:index* :ino map.txt /*:ino* + :inor map.txt /*:inor* :inorea map.txt /*:inorea* :inoreabbrev map.txt /*:inoreabbrev* :inoremap map.txt /*:inoremap* *************** *** 2488,2493 **** --- 2515,2521 ---- :jumps motion.txt /*:jumps* :k motion.txt /*:k* :kee motion.txt /*:kee* + :keep motion.txt /*:keep* :keepa editing.txt /*:keepa* :keepalt editing.txt /*:keepalt* :keepj motion.txt /*:keepj* *************** *** 2518,2524 **** :lat undo.txt /*:lat* :later undo.txt /*:later* :lb quickfix.txt /*:lb* ! :lbef quickfix.txt /*:lbef* :lbefore quickfix.txt /*:lbefore* :lbel quickfix.txt /*:lbel* :lbelow quickfix.txt /*:lbelow* --- 2546,2552 ---- :lat undo.txt /*:lat* :later undo.txt /*:later* :lb quickfix.txt /*:lb* ! :lbe quickfix.txt /*:lbe* :lbefore quickfix.txt /*:lbefore* :lbel quickfix.txt /*:lbel* :lbelow quickfix.txt /*:lbelow* *************** *** 2546,2566 **** --- 2574,2598 ---- :let-= eval.txt /*:let-=* :let-@ eval.txt /*:let-@* :let-environment eval.txt /*:let-environment* + :let-heredoc eval.txt /*:let-heredoc* :let-option eval.txt /*:let-option* :let-register eval.txt /*:let-register* :let-unpack eval.txt /*:let-unpack* :let..= eval.txt /*:let..=* :let.= eval.txt /*:let.=* :let/= eval.txt /*:let\/=* + :let=<< eval.txt /*:let=<<* :letstar= eval.txt /*:letstar=* :lex quickfix.txt /*:lex* :lexpr quickfix.txt /*:lexpr* :lf quickfix.txt /*:lf* :lfdo quickfix.txt /*:lfdo* + :lfi quickfix.txt /*:lfi* :lfile quickfix.txt /*:lfile* :lfir quickfix.txt /*:lfir* :lfirst quickfix.txt /*:lfirst* :lg quickfix.txt /*:lg* + :lge quickfix.txt /*:lge* :lgetb quickfix.txt /*:lgetb* :lgetbuffer quickfix.txt /*:lgetbuffer* :lgete quickfix.txt /*:lgete* *************** *** 2581,2586 **** --- 2613,2619 ---- :lli quickfix.txt /*:lli* :llist quickfix.txt /*:llist* :lm map.txt /*:lm* + :lma map.txt /*:lma* :lmak quickfix.txt /*:lmak* :lmake quickfix.txt /*:lmake* :lmap map.txt /*:lmap* *************** *** 2600,2605 **** --- 2633,2639 ---- :loadkeymap mbyte.txt /*:loadkeymap* :loadview starting.txt /*:loadview* :loc motion.txt /*:loc* + :lock motion.txt /*:lock* :lockmarks motion.txt /*:lockmarks* :lockv eval.txt /*:lockv* :lockvar eval.txt /*:lockvar* *************** *** 2689,2694 **** --- 2723,2729 ---- :mksp spell.txt /*:mksp* :mkspell spell.txt /*:mkspell* :mkv starting.txt /*:mkv* + :mkvi starting.txt /*:mkvi* :mkvie starting.txt /*:mkvie* :mkview starting.txt /*:mkview* :mkvimrc starting.txt /*:mkvimrc* *************** *** 2983,2988 **** --- 3018,3024 ---- :setl options.txt /*:setl* :setlocal options.txt /*:setlocal* :sf windows.txt /*:sf* + :sfi windows.txt /*:sfi* :sfind windows.txt /*:sfind* :sfir windows.txt /*:sfir* :sfirst windows.txt /*:sfirst* *************** *** 3036,3041 **** --- 3072,3078 ---- :sno change.txt /*:sno* :snomagic change.txt /*:snomagic* :snor map.txt /*:snor* + :snore map.txt /*:snore* :snoremap map.txt /*:snoremap* :snoreme gui.txt /*:snoreme* :snoremenu gui.txt /*:snoremenu* *************** *** 3043,3048 **** --- 3080,3086 ---- :sor change.txt /*:sor* :sort change.txt /*:sort* :source repeat.txt /*:source* + :source! repeat.txt /*:source!* :source_crnl repeat.txt /*:source_crnl* :sp windows.txt /*:sp* :spe spell.txt /*:spe* *************** *** 3137,3143 **** :syn-matchgroup syntax.txt /*:syn-matchgroup* :syn-multi-line syntax.txt /*:syn-multi-line* :syn-nextgroup syntax.txt /*:syn-nextgroup* ! :syn-off usr_06.txt /*:syn-off* :syn-on syntax.txt /*:syn-on* :syn-oneline syntax.txt /*:syn-oneline* :syn-pattern syntax.txt /*:syn-pattern* --- 3175,3181 ---- :syn-matchgroup syntax.txt /*:syn-matchgroup* :syn-multi-line syntax.txt /*:syn-multi-line* :syn-nextgroup syntax.txt /*:syn-nextgroup* ! :syn-off syntax.txt /*:syn-off* :syn-on syntax.txt /*:syn-on* :syn-oneline syntax.txt /*:syn-oneline* :syn-pattern syntax.txt /*:syn-pattern* *************** *** 3166,3171 **** --- 3204,3210 ---- :syncbind scroll.txt /*:syncbind* :syntax syntax.txt /*:syntax* :syntax-enable syntax.txt /*:syntax-enable* + :syntax-off syntax.txt /*:syntax-off* :syntax-on syntax.txt /*:syntax-on* :syntax-reset syntax.txt /*:syntax-reset* :syntime syntax.txt /*:syntime* *************** *** 3282,3287 **** --- 3321,3327 ---- :update editing.txt /*:update* :v repeat.txt /*:v* :ve various.txt /*:ve* + :ver various.txt /*:ver* :verb various.txt /*:verb* :verbose various.txt /*:verbose* :verbose-cmd various.txt /*:verbose-cmd* *************** *** 3367,3372 **** --- 3407,3414 ---- :xnoremap map.txt /*:xnoremap* :xnoreme gui.txt /*:xnoreme* :xnoremenu gui.txt /*:xnoremenu* + :xr various.txt /*:xr* + :xrestore various.txt /*:xrestore* :xu map.txt /*:xu* :xunmap map.txt /*:xunmap* :xunme gui.txt /*:xunme* *************** *** 3441,3446 **** --- 3483,3489 ---- term.txt /** helphelp.txt /** motion.txt /** + eval.txt /** insert.txt /** map.txt /** motion.txt /** *************** *** 3871,3876 **** --- 3914,3920 ---- E17 message.txt /*E17* E170 eval.txt /*E170* E171 eval.txt /*E171* + E172 eval.txt /*E172* E173 message.txt /*E173* E174 map.txt /*E174* E175 map.txt /*E175* *************** *** 3924,3929 **** --- 3968,3974 ---- E219 message.txt /*E219* E22 message.txt /*E22* E220 message.txt /*E220* + E221 eval.txt /*E221* E222 message.txt /*E222* E223 options.txt /*E223* E224 map.txt /*E224* *************** *** 4640,4651 **** E91 options.txt /*E91* E910 eval.txt /*E910* E911 eval.txt /*E911* ! E912 eval.txt /*E912* E913 eval.txt /*E913* E914 eval.txt /*E914* E915 channel.txt /*E915* ! E916 eval.txt /*E916* ! E917 eval.txt /*E917* E918 channel.txt /*E918* E919 repeat.txt /*E919* E92 message.txt /*E92* --- 4685,4696 ---- E91 options.txt /*E91* E910 eval.txt /*E910* E911 eval.txt /*E911* ! E912 channel.txt /*E912* E913 eval.txt /*E913* E914 eval.txt /*E914* E915 channel.txt /*E915* ! E916 channel.txt /*E916* ! E917 channel.txt /*E917* E918 channel.txt /*E918* E919 repeat.txt /*E919* E92 message.txt /*E92* *************** *** 4685,4709 **** E950 message.txt /*E950* E951 pattern.txt /*E951* E952 autocmd.txt /*E952* ! E953 eval.txt /*E953* E954 options.txt /*E954* ! E955 eval.txt /*E955* E956 pattern.txt /*E956* E957 eval.txt /*E957* ! E958 eval.txt /*E958* E96 diff.txt /*E96* E960 options.txt /*E960* E961 cmdline.txt /*E961* E962 eval.txt /*E962* E963 eval.txt /*E963* ! E964 eval.txt /*E964* ! E965 eval.txt /*E965* ! E966 eval.txt /*E966* E967 textprop.txt /*E967* ! E968 eval.txt /*E968* ! E969 eval.txt /*E969* E97 diff.txt /*E97* ! E970 eval.txt /*E970* E971 textprop.txt /*E971* E972 eval.txt /*E972* E973 eval.txt /*E973* --- 4730,4754 ---- E950 message.txt /*E950* E951 pattern.txt /*E951* E952 autocmd.txt /*E952* ! E953 terminal.txt /*E953* E954 options.txt /*E954* ! E955 terminal.txt /*E955* E956 pattern.txt /*E956* E957 eval.txt /*E957* ! E958 terminal.txt /*E958* E96 diff.txt /*E96* E960 options.txt /*E960* E961 cmdline.txt /*E961* E962 eval.txt /*E962* E963 eval.txt /*E963* ! E964 textprop.txt /*E964* ! E965 textprop.txt /*E965* ! E966 textprop.txt /*E966* E967 textprop.txt /*E967* ! E968 textprop.txt /*E968* ! E969 textprop.txt /*E969* E97 diff.txt /*E97* ! E970 textprop.txt /*E970* E971 textprop.txt /*E971* E972 eval.txt /*E972* E973 eval.txt /*E973* *************** *** 4723,4729 **** --- 4768,4783 ---- E986 tagsrch.txt /*E986* E987 tagsrch.txt /*E987* E988 gui_w32.txt /*E988* + E989 eval.txt /*E989* E99 diff.txt /*E99* + E990 eval.txt /*E990* + E991 eval.txt /*E991* + E992 options.txt /*E992* + E993 popup.txt /*E993* + E994 eval.txt /*E994* + E995 eval.txt /*E995* + E996 eval.txt /*E996* + E997 popup.txt /*E997* E999 repeat.txt /*E999* EX intro.txt /*EX* EXINIT starting.txt /*EXINIT* *************** *** 5239,5257 **** asm.vim syntax.txt /*asm.vim* asm68k syntax.txt /*asm68k* asmh8300.vim syntax.txt /*asmh8300.vim* assert-return eval.txt /*assert-return* ! assert_beeps() eval.txt /*assert_beeps()* ! assert_equal() eval.txt /*assert_equal()* ! assert_equalfile() eval.txt /*assert_equalfile()* ! assert_exception() eval.txt /*assert_exception()* ! assert_fails() eval.txt /*assert_fails()* ! assert_false() eval.txt /*assert_false()* ! assert_inrange() eval.txt /*assert_inrange()* ! assert_match() eval.txt /*assert_match()* ! assert_notequal() eval.txt /*assert_notequal()* ! assert_notmatch() eval.txt /*assert_notmatch()* ! assert_report() eval.txt /*assert_report()* ! assert_true() eval.txt /*assert_true()* at motion.txt /*at* atan() eval.txt /*atan()* atan2() eval.txt /*atan2()* --- 5293,5312 ---- asm.vim syntax.txt /*asm.vim* asm68k syntax.txt /*asm68k* asmh8300.vim syntax.txt /*asmh8300.vim* + assert-functions testing.txt /*assert-functions* assert-return eval.txt /*assert-return* ! assert_beeps() testing.txt /*assert_beeps()* ! assert_equal() testing.txt /*assert_equal()* ! assert_equalfile() testing.txt /*assert_equalfile()* ! assert_exception() testing.txt /*assert_exception()* ! assert_fails() testing.txt /*assert_fails()* ! assert_false() testing.txt /*assert_false()* ! assert_inrange() testing.txt /*assert_inrange()* ! assert_match() testing.txt /*assert_match()* ! assert_notequal() testing.txt /*assert_notequal()* ! assert_notmatch() testing.txt /*assert_notmatch()* ! assert_report() testing.txt /*assert_report()* ! assert_true() testing.txt /*assert_true()* at motion.txt /*at* atan() eval.txt /*atan()* atan2() eval.txt /*atan2()* *************** *** 5316,5321 **** --- 5371,5377 ---- backup-extension version4.txt /*backup-extension* backup-table editing.txt /*backup-table* balloon-eval debugger.txt /*balloon-eval* + balloon_gettext() eval.txt /*balloon_gettext()* balloon_show() eval.txt /*balloon_show()* balloon_split() eval.txt /*balloon_split()* bar motion.txt /*bar* *************** *** 5367,5372 **** --- 5423,5429 ---- browse() eval.txt /*browse()* browsedir() eval.txt /*browsedir()* browsefilter editing.txt /*browsefilter* + bufadd() eval.txt /*bufadd()* bufexists() eval.txt /*bufexists()* buffer-functions usr_41.txt /*buffer-functions* buffer-hidden windows.txt /*buffer-hidden* *************** *** 5379,5384 **** --- 5436,5442 ---- buffers windows.txt /*buffers* buffers-menu gui.txt /*buffers-menu* buflisted() eval.txt /*buflisted()* + bufload() eval.txt /*bufload()* bufloaded() eval.txt /*bufloaded()* bufname() eval.txt /*bufname()* bufnr() eval.txt /*bufnr()* *************** *** 5519,5542 **** ceil() eval.txt /*ceil()* cfilter-plugin quickfix.txt /*cfilter-plugin* ch.vim syntax.txt /*ch.vim* ! ch_canread() eval.txt /*ch_canread()* ! ch_close() eval.txt /*ch_close()* ! ch_close_in() eval.txt /*ch_close_in()* ! ch_evalexpr() eval.txt /*ch_evalexpr()* ! ch_evalraw() eval.txt /*ch_evalraw()* ! ch_getbufnr() eval.txt /*ch_getbufnr()* ! ch_getjob() eval.txt /*ch_getjob()* ! ch_info() eval.txt /*ch_info()* ! ch_log() eval.txt /*ch_log()* ! ch_logfile() eval.txt /*ch_logfile()* ! ch_open() eval.txt /*ch_open()* ! ch_read() eval.txt /*ch_read()* ! ch_readblob() eval.txt /*ch_readblob()* ! ch_readraw() eval.txt /*ch_readraw()* ! ch_sendexpr() eval.txt /*ch_sendexpr()* ! ch_sendraw() eval.txt /*ch_sendraw()* ! ch_setoptions() eval.txt /*ch_setoptions()* ! ch_status() eval.txt /*ch_status()* change-list-jumps motion.txt /*change-list-jumps* change-name tips.txt /*change-name* change-tabs change.txt /*change-tabs* --- 5577,5600 ---- ceil() eval.txt /*ceil()* cfilter-plugin quickfix.txt /*cfilter-plugin* ch.vim syntax.txt /*ch.vim* ! ch_canread() channel.txt /*ch_canread()* ! ch_close() channel.txt /*ch_close()* ! ch_close_in() channel.txt /*ch_close_in()* ! ch_evalexpr() channel.txt /*ch_evalexpr()* ! ch_evalraw() channel.txt /*ch_evalraw()* ! ch_getbufnr() channel.txt /*ch_getbufnr()* ! ch_getjob() channel.txt /*ch_getjob()* ! ch_info() channel.txt /*ch_info()* ! ch_log() channel.txt /*ch_log()* ! ch_logfile() channel.txt /*ch_logfile()* ! ch_open() channel.txt /*ch_open()* ! ch_read() channel.txt /*ch_read()* ! ch_readblob() channel.txt /*ch_readblob()* ! ch_readraw() channel.txt /*ch_readraw()* ! ch_sendexpr() channel.txt /*ch_sendexpr()* ! ch_sendraw() channel.txt /*ch_sendraw()* ! ch_setoptions() channel.txt /*ch_setoptions()* ! ch_status() channel.txt /*ch_status()* change-list-jumps motion.txt /*change-list-jumps* change-name tips.txt /*change-name* change-tabs change.txt /*change-tabs* *************** *** 5571,5576 **** --- 5629,5635 ---- channel-demo channel.txt /*channel-demo* channel-drop channel.txt /*channel-drop* channel-functions usr_41.txt /*channel-functions* + channel-functions-details channel.txt /*channel-functions-details* channel-mode channel.txt /*channel-mode* channel-more channel.txt /*channel-more* channel-noblock channel.txt /*channel-noblock* *************** *** 5590,5595 **** --- 5649,5655 ---- charity uganda.txt /*charity* charset mbyte.txt /*charset* charset-conversion mbyte.txt /*charset-conversion* + chdir() eval.txt /*chdir()* chill.vim syntax.txt /*chill.vim* chmod eval.txt /*chmod* cindent() eval.txt /*cindent()* *************** *** 6017,6022 **** --- 6077,6083 ---- end intro.txt /*end* end-of-file pattern.txt /*end-of-file* enlightened-terminal syntax.txt /*enlightened-terminal* + environ() eval.txt /*environ()* erlang.vim syntax.txt /*erlang.vim* err_buf channel.txt /*err_buf* err_cb channel.txt /*err_cb* *************** *** 6090,6095 **** --- 6151,6157 ---- expand() eval.txt /*expand()* expand-env options.txt /*expand-env* expand-environment-var options.txt /*expand-environment-var* + expandcmd() eval.txt /*expandcmd()* expr eval.txt /*expr* expr-! eval.txt /*expr-!* expr-!= eval.txt /*expr-!=* *************** *** 6384,6389 **** --- 6446,6452 ---- ft-python-indent indent.txt /*ft-python-indent* ft-python-plugin filetype.txt /*ft-python-plugin* ft-python-syntax syntax.txt /*ft-python-syntax* + ft-qf-plugin filetype.txt /*ft-qf-plugin* ft-quake-syntax syntax.txt /*ft-quake-syntax* ft-r-indent indent.txt /*ft-r-indent* ft-r-syntax syntax.txt /*ft-r-syntax* *************** *** 6471,6476 **** --- 6534,6540 ---- g:Netrw_corehandler pi_netrw.txt /*g:Netrw_corehandler* g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref* g:actual_curbuf options.txt /*g:actual_curbuf* + g:actual_curwin options.txt /*g:actual_curwin* g:ada#Comment ft_ada.txt /*g:ada#Comment* g:ada#Ctags_Kinds ft_ada.txt /*g:ada#Ctags_Kinds* g:ada#DotWordRegex ft_ada.txt /*g:ada#DotWordRegex* *************** *** 6661,6666 **** --- 6725,6731 ---- g:rustfmt_command ft_rust.txt /*g:rustfmt_command* g:rustfmt_fail_silently ft_rust.txt /*g:rustfmt_fail_silently* g:rustfmt_options ft_rust.txt /*g:rustfmt_options* + g:statusline_winid options.txt /*g:statusline_winid* g:syntax_on syntax.txt /*g:syntax_on* g:tar_browseoptions pi_tar.txt /*g:tar_browseoptions* g:tar_cmd pi_tar.txt /*g:tar_cmd* *************** *** 6756,6761 **** --- 6821,6827 ---- getcompletion() eval.txt /*getcompletion()* getcurpos() eval.txt /*getcurpos()* getcwd() eval.txt /*getcwd()* + getenv() eval.txt /*getenv()* getfontname() eval.txt /*getfontname()* getfperm() eval.txt /*getfperm()* getfsize() eval.txt /*getfsize()* *************** *** 7301,7306 **** --- 7367,7373 ---- job-err_io channel.txt /*job-err_io* job-exit_cb channel.txt /*job-exit_cb* job-functions usr_41.txt /*job-functions* + job-functions-details channel.txt /*job-functions-details* job-in_io channel.txt /*job-in_io* job-noblock channel.txt /*job-noblock* job-options channel.txt /*job-options* *************** *** 7312,7323 **** job-stoponexit channel.txt /*job-stoponexit* job-term channel.txt /*job-term* job-timeout channel.txt /*job-timeout* ! job_getchannel() eval.txt /*job_getchannel()* ! job_info() eval.txt /*job_info()* ! job_setoptions() eval.txt /*job_setoptions()* ! job_start() eval.txt /*job_start()* ! job_status() eval.txt /*job_status()* ! job_stop() eval.txt /*job_stop()* join() eval.txt /*join()* js_decode() eval.txt /*js_decode()* js_encode() eval.txt /*js_encode()* --- 7379,7390 ---- job-stoponexit channel.txt /*job-stoponexit* job-term channel.txt /*job-term* job-timeout channel.txt /*job-timeout* ! job_getchannel() channel.txt /*job_getchannel()* ! job_info() channel.txt /*job_info()* ! job_setoptions() channel.txt /*job_setoptions()* ! job_start() channel.txt /*job_start()* ! job_status() channel.txt /*job_status()* ! job_stop() channel.txt /*job_stop()* join() eval.txt /*join()* js_decode() eval.txt /*js_decode()* js_encode() eval.txt /*js_encode()* *************** *** 7405,7411 **** --- 7472,7482 ---- list-modification eval.txt /*list-modification* list-repeat windows.txt /*list-repeat* list2str() eval.txt /*list2str()* + listener_add() eval.txt /*listener_add()* + listener_flush() eval.txt /*listener_flush()* + listener_remove() eval.txt /*listener_remove()* lite.vim syntax.txt /*lite.vim* + literal-Dict eval.txt /*literal-Dict* literal-string eval.txt /*literal-string* lnum-variable eval.txt /*lnum-variable* load-plugins starting.txt /*load-plugins* *************** *** 7970,7976 **** new-searchpat version6.txt /*new-searchpat* new-session-files version5.txt /*new-session-files* new-spell version7.txt /*new-spell* ! new-style-testing eval.txt /*new-style-testing* new-tab-pages version7.txt /*new-tab-pages* new-terminal-window version8.txt /*new-terminal-window* new-undo-branches version7.txt /*new-undo-branches* --- 8041,8047 ---- new-searchpat version6.txt /*new-searchpat* new-session-files version5.txt /*new-session-files* new-spell version7.txt /*new-spell* ! new-style-testing testing.txt /*new-style-testing* new-tab-pages version7.txt /*new-tab-pages* new-terminal-window version8.txt /*new-terminal-window* new-undo-branches version7.txt /*new-undo-branches* *************** *** 8018,8024 **** octal eval.txt /*octal* octal-nrformats options.txt /*octal-nrformats* octal-number eval.txt /*octal-number* ! old-style-testing eval.txt /*old-style-testing* oldfiles-variable eval.txt /*oldfiles-variable* ole-activation if_ole.txt /*ole-activation* ole-eval if_ole.txt /*ole-eval* --- 8089,8095 ---- octal eval.txt /*octal* octal-nrformats options.txt /*octal-nrformats* octal-number eval.txt /*octal-number* ! old-style-testing testing.txt /*old-style-testing* oldfiles-variable eval.txt /*oldfiles-variable* ole-activation if_ole.txt /*ole-activation* ole-eval if_ole.txt /*ole-eval* *************** *** 8042,8047 **** --- 8113,8119 ---- option-window options.txt /*option-window* option_restore() todo.txt /*option_restore()* option_save() todo.txt /*option_save()* + optional-function-argument eval.txt /*optional-function-argument* options options.txt /*options* options-changed version5.txt /*options-changed* options-in-terminal terminal.txt /*options-in-terminal* *************** *** 8088,8093 **** --- 8160,8166 ---- pascal.vim syntax.txt /*pascal.vim* patches-8 version8.txt /*patches-8* patches-8.1 version8.txt /*patches-8.1* + patches-8.2 version8.txt /*patches-8.2* pathshorten() eval.txt /*pathshorten()* pattern pattern.txt /*pattern* pattern-atoms pattern.txt /*pattern-atoms* *************** *** 8157,8164 **** --- 8230,8276 ---- pmbcs-option print.txt /*pmbcs-option* pmbfn-option print.txt /*pmbfn-option* popt-option print.txt /*popt-option* + popup popup.txt /*popup* + popup-buffer popup.txt /*popup-buffer* + popup-callback popup.txt /*popup-callback* + popup-close popup.txt /*popup-close* + popup-examples popup.txt /*popup-examples* + popup-filter popup.txt /*popup-filter* + popup-function-details popup.txt /*popup-function-details* + popup-functions popup.txt /*popup-functions* + popup-intro popup.txt /*popup-intro* + popup-mask popup.txt /*popup-mask* popup-menu gui.txt /*popup-menu* popup-menu-added version5.txt /*popup-menu-added* + popup-position popup.txt /*popup-position* + popup-props popup.txt /*popup-props* + popup-scrollbar popup.txt /*popup-scrollbar* + popup-usage popup.txt /*popup-usage* + popup-window popup.txt /*popup-window* + popup-window-functions usr_41.txt /*popup-window-functions* + popup.txt popup.txt /*popup.txt* + popup_atcursor() popup.txt /*popup_atcursor()* + popup_beval() popup.txt /*popup_beval()* + popup_beval_example popup.txt /*popup_beval_example* + popup_clear() popup.txt /*popup_clear()* + popup_close() popup.txt /*popup_close()* + popup_create() popup.txt /*popup_create()* + popup_create-arguments popup.txt /*popup_create-arguments* + popup_dialog() popup.txt /*popup_dialog()* + popup_dialog-example popup.txt /*popup_dialog-example* + popup_filter_menu() popup.txt /*popup_filter_menu()* + popup_filter_yesno() popup.txt /*popup_filter_yesno()* + popup_getoptions() popup.txt /*popup_getoptions()* + popup_getpos() popup.txt /*popup_getpos()* + popup_hide() popup.txt /*popup_hide()* + popup_locate() popup.txt /*popup_locate()* + popup_menu() popup.txt /*popup_menu()* + popup_menu-shortcut-example popup.txt /*popup_menu-shortcut-example* + popup_move() popup.txt /*popup_move()* + popup_notification() popup.txt /*popup_notification()* + popup_setoptions() popup.txt /*popup_setoptions()* + popup_settext() popup.txt /*popup_settext()* + popup_show() popup.txt /*popup_show()* popupmenu-completion insert.txt /*popupmenu-completion* popupmenu-keys insert.txt /*popupmenu-keys* ports-5.2 version5.txt /*ports-5.2* *************** *** 8178,8183 **** --- 8290,8296 ---- press-enter message.txt /*press-enter* press-return message.txt /*press-return* prevcount-variable eval.txt /*prevcount-variable* + preview-popup windows.txt /*preview-popup* preview-window windows.txt /*preview-window* prevnonblank() eval.txt /*prevnonblank()* print-intro print.txt /*print-intro* *************** *** 8213,8228 **** prompt_setprompt() eval.txt /*prompt_setprompt()* promptbuffer-functions usr_41.txt /*promptbuffer-functions* pronounce intro.txt /*pronounce* ! prop_add() eval.txt /*prop_add()* ! prop_clear() eval.txt /*prop_clear()* ! prop_find() eval.txt /*prop_find()* ! prop_list() eval.txt /*prop_list()* ! prop_remove() eval.txt /*prop_remove()* ! prop_type_add() eval.txt /*prop_type_add()* ! prop_type_change() eval.txt /*prop_type_change()* ! prop_type_delete() eval.txt /*prop_type_delete()* ! prop_type_get() eval.txt /*prop_type_get()* ! prop_type_list() eval.txt /*prop_type_list()* psql ft_sql.txt /*psql* ptcap.vim syntax.txt /*ptcap.vim* pterm-mouse options.txt /*pterm-mouse* --- 8326,8341 ---- prompt_setprompt() eval.txt /*prompt_setprompt()* promptbuffer-functions usr_41.txt /*promptbuffer-functions* pronounce intro.txt /*pronounce* ! prop_add() textprop.txt /*prop_add()* ! prop_clear() textprop.txt /*prop_clear()* ! prop_find() textprop.txt /*prop_find()* ! prop_list() textprop.txt /*prop_list()* ! prop_remove() textprop.txt /*prop_remove()* ! prop_type_add() textprop.txt /*prop_type_add()* ! prop_type_change() textprop.txt /*prop_type_change()* ! prop_type_delete() textprop.txt /*prop_type_delete()* ! prop_type_get() textprop.txt /*prop_type_get()* ! prop_type_list() textprop.txt /*prop_type_list()* psql ft_sql.txt /*psql* ptcap.vim syntax.txt /*ptcap.vim* pterm-mouse options.txt /*pterm-mouse* *************** *** 8283,8288 **** --- 8396,8402 ---- q/ cmdline.txt /*q\/* q: cmdline.txt /*q:* q? cmdline.txt /*q?* + qf.vim filetype.txt /*qf.vim* qnx os_qnx.txt /*qnx* qnx-compiling os_qnx.txt /*qnx-compiling* qnx-general os_qnx.txt /*qnx-general* *************** *** 8490,8495 **** --- 8604,8610 ---- screenchar() eval.txt /*screenchar()* screenchars() eval.txt /*screenchars()* screencol() eval.txt /*screencol()* + screenpos() eval.txt /*screenpos()* screenrow() eval.txt /*screenrow()* screenstring() eval.txt /*screenstring()* script usr_41.txt /*script* *************** *** 8499,8504 **** --- 8614,8622 ---- scriptnames-dictionary eval.txt /*scriptnames-dictionary* scriptout-changed version4.txt /*scriptout-changed* scriptversion eval.txt /*scriptversion* + scriptversion-1 eval.txt /*scriptversion-1* + scriptversion-2 eval.txt /*scriptversion-2* + scriptversion-3 eval.txt /*scriptversion-3* scroll-binding scroll.txt /*scroll-binding* scroll-cursor scroll.txt /*scroll-cursor* scroll-down scroll.txt /*scroll-down* *************** *** 8544,8549 **** --- 8662,8668 ---- setbufvar() eval.txt /*setbufvar()* setcharsearch() eval.txt /*setcharsearch()* setcmdpos() eval.txt /*setcmdpos()* + setenv() eval.txt /*setenv()* setfperm() eval.txt /*setfperm()* setline() eval.txt /*setline()* setloclist() eval.txt /*setloclist()* *************** *** 8578,8596 **** sign-column sign.txt /*sign-column* sign-commands sign.txt /*sign-commands* sign-functions usr_41.txt /*sign-functions* sign-group sign.txt /*sign-group* sign-identifier sign.txt /*sign-identifier* sign-intro sign.txt /*sign-intro* sign-priority sign.txt /*sign-priority* sign-support sign.txt /*sign-support* sign.txt sign.txt /*sign.txt* ! sign_define() eval.txt /*sign_define()* ! sign_getdefined() eval.txt /*sign_getdefined()* ! sign_getplaced() eval.txt /*sign_getplaced()* ! sign_jump() eval.txt /*sign_jump()* ! sign_place() eval.txt /*sign_place()* ! sign_undefine() eval.txt /*sign_undefine()* ! sign_unplace() eval.txt /*sign_unplace()* signs sign.txt /*signs* simple-change change.txt /*simple-change* simplify() eval.txt /*simplify()* --- 8697,8718 ---- sign-column sign.txt /*sign-column* sign-commands sign.txt /*sign-commands* sign-functions usr_41.txt /*sign-functions* + sign-functions-details sign.txt /*sign-functions-details* sign-group sign.txt /*sign-group* sign-identifier sign.txt /*sign-identifier* sign-intro sign.txt /*sign-intro* sign-priority sign.txt /*sign-priority* sign-support sign.txt /*sign-support* sign.txt sign.txt /*sign.txt* ! sign_define() sign.txt /*sign_define()* ! sign_getdefined() sign.txt /*sign_getdefined()* ! sign_getplaced() sign.txt /*sign_getplaced()* ! sign_jump() sign.txt /*sign_jump()* ! sign_place() sign.txt /*sign_place()* ! sign_placelist() sign.txt /*sign_placelist()* ! sign_undefine() sign.txt /*sign_undefine()* ! sign_unplace() sign.txt /*sign_unplace()* ! sign_unplacelist() sign.txt /*sign_unplacelist()* signs sign.txt /*signs* simple-change change.txt /*simple-change* simplify() eval.txt /*simplify()* *************** *** 8607,8612 **** --- 8729,8738 ---- socket-interface channel.txt /*socket-interface* sort() eval.txt /*sort()* sorting change.txt /*sorting* + sound_clear() eval.txt /*sound_clear()* + sound_playevent() eval.txt /*sound_playevent()* + sound_playfile() eval.txt /*sound_playfile()* + sound_stop() eval.txt /*sound_stop()* soundfold() eval.txt /*soundfold()* space intro.txt /*space* spec-customizing pi_spec.txt /*spec-customizing* *************** *** 9162,9190 **** term-dependent-settings term.txt /*term-dependent-settings* term-list syntax.txt /*term-list* term.txt term.txt /*term.txt* ! term_dumpdiff() eval.txt /*term_dumpdiff()* ! term_dumpload() eval.txt /*term_dumpload()* ! term_dumpwrite() eval.txt /*term_dumpwrite()* ! term_getaltscreen() eval.txt /*term_getaltscreen()* ! term_getansicolors() eval.txt /*term_getansicolors()* ! term_getattr() eval.txt /*term_getattr()* ! term_getcursor() eval.txt /*term_getcursor()* ! term_getjob() eval.txt /*term_getjob()* ! term_getline() eval.txt /*term_getline()* ! term_getscrolled() eval.txt /*term_getscrolled()* ! term_getsize() eval.txt /*term_getsize()* ! term_getstatus() eval.txt /*term_getstatus()* ! term_gettitle() eval.txt /*term_gettitle()* ! term_gettty() eval.txt /*term_gettty()* ! term_list() eval.txt /*term_list()* ! term_scrape() eval.txt /*term_scrape()* ! term_sendkeys() eval.txt /*term_sendkeys()* ! term_setansicolors() eval.txt /*term_setansicolors()* ! term_setkill() eval.txt /*term_setkill()* ! term_setrestore() eval.txt /*term_setrestore()* ! term_setsize() eval.txt /*term_setsize()* ! term_start() eval.txt /*term_start()* ! term_wait() eval.txt /*term_wait()* termcap term.txt /*termcap* termcap-changed version4.txt /*termcap-changed* termcap-colors term.txt /*termcap-colors* --- 9288,9316 ---- term-dependent-settings term.txt /*term-dependent-settings* term-list syntax.txt /*term-list* term.txt term.txt /*term.txt* ! term_dumpdiff() terminal.txt /*term_dumpdiff()* ! term_dumpload() terminal.txt /*term_dumpload()* ! term_dumpwrite() terminal.txt /*term_dumpwrite()* ! term_getaltscreen() terminal.txt /*term_getaltscreen()* ! term_getansicolors() terminal.txt /*term_getansicolors()* ! term_getattr() terminal.txt /*term_getattr()* ! term_getcursor() terminal.txt /*term_getcursor()* ! term_getjob() terminal.txt /*term_getjob()* ! term_getline() terminal.txt /*term_getline()* ! term_getscrolled() terminal.txt /*term_getscrolled()* ! term_getsize() terminal.txt /*term_getsize()* ! term_getstatus() terminal.txt /*term_getstatus()* ! term_gettitle() terminal.txt /*term_gettitle()* ! term_gettty() terminal.txt /*term_gettty()* ! term_list() terminal.txt /*term_list()* ! term_scrape() terminal.txt /*term_scrape()* ! term_sendkeys() terminal.txt /*term_sendkeys()* ! term_setansicolors() terminal.txt /*term_setansicolors()* ! term_setkill() terminal.txt /*term_setkill()* ! term_setrestore() terminal.txt /*term_setrestore()* ! term_setsize() terminal.txt /*term_setsize()* ! term_start() terminal.txt /*term_start()* ! term_wait() terminal.txt /*term_wait()* termcap term.txt /*termcap* termcap-changed version4.txt /*termcap-changed* termcap-colors term.txt /*termcap-colors* *************** *** 9215,9220 **** --- 9341,9347 ---- terminal-diff terminal.txt /*terminal-diff* terminal-diffscreendump terminal.txt /*terminal-diffscreendump* terminal-dumptest terminal.txt /*terminal-dumptest* + terminal-function-details terminal.txt /*terminal-function-details* terminal-functions usr_41.txt /*terminal-functions* terminal-info term.txt /*terminal-info* terminal-job-index index.txt /*terminal-job-index* *************** *** 9236,9262 **** terminal.txt terminal.txt /*terminal.txt* terminfo term.txt /*terminfo* termresponse-variable eval.txt /*termresponse-variable* test-functions usr_41.txt /*test-functions* ! test_alloc_fail() eval.txt /*test_alloc_fail()* ! test_autochdir() eval.txt /*test_autochdir()* ! test_feedinput() eval.txt /*test_feedinput()* ! test_garbagecollect_now() eval.txt /*test_garbagecollect_now()* ! test_ignore_error() eval.txt /*test_ignore_error()* ! test_null_blob() eval.txt /*test_null_blob()* ! test_null_channel() eval.txt /*test_null_channel()* ! test_null_dict() eval.txt /*test_null_dict()* ! test_null_job() eval.txt /*test_null_job()* ! test_null_list() eval.txt /*test_null_list()* ! test_null_partial() eval.txt /*test_null_partial()* ! test_null_string() eval.txt /*test_null_string()* ! test_option_not_set() eval.txt /*test_option_not_set()* ! test_override() eval.txt /*test_override()* ! test_refcount() eval.txt /*test_refcount()* ! test_scrollbar() eval.txt /*test_scrollbar()* ! test_setmouse() eval.txt /*test_setmouse()* ! test_settime() eval.txt /*test_settime()* ! testing eval.txt /*testing* testing-variable eval.txt /*testing-variable* tex-cchar syntax.txt /*tex-cchar* tex-cole syntax.txt /*tex-cole* tex-conceal syntax.txt /*tex-conceal* --- 9363,9394 ---- terminal.txt terminal.txt /*terminal.txt* terminfo term.txt /*terminfo* termresponse-variable eval.txt /*termresponse-variable* + test-functions testing.txt /*test-functions* test-functions usr_41.txt /*test-functions* ! test_alloc_fail() testing.txt /*test_alloc_fail()* ! test_autochdir() testing.txt /*test_autochdir()* ! test_feedinput() testing.txt /*test_feedinput()* ! test_garbagecollect_now() testing.txt /*test_garbagecollect_now()* ! test_garbagecollect_soon() testing.txt /*test_garbagecollect_soon()* ! test_getvalue() testing.txt /*test_getvalue()* ! test_ignore_error() testing.txt /*test_ignore_error()* ! test_null_blob() testing.txt /*test_null_blob()* ! test_null_channel() testing.txt /*test_null_channel()* ! test_null_dict() testing.txt /*test_null_dict()* ! test_null_job() testing.txt /*test_null_job()* ! test_null_list() testing.txt /*test_null_list()* ! test_null_partial() testing.txt /*test_null_partial()* ! test_null_string() testing.txt /*test_null_string()* ! test_option_not_set() testing.txt /*test_option_not_set()* ! test_override() testing.txt /*test_override()* ! test_refcount() testing.txt /*test_refcount()* ! test_scrollbar() testing.txt /*test_scrollbar()* ! test_setmouse() testing.txt /*test_setmouse()* ! test_settime() testing.txt /*test_settime()* ! testing testing.txt /*testing* ! testing-support testing.txt /*testing-support* testing-variable eval.txt /*testing-variable* + testing.txt testing.txt /*testing.txt* tex-cchar syntax.txt /*tex-cchar* tex-cole syntax.txt /*tex-cole* tex-conceal syntax.txt /*tex-conceal* *************** *** 9282,9287 **** --- 9414,9420 ---- text-prop-intro textprop.txt /*text-prop-intro* text-properties textprop.txt /*text-properties* textlock eval.txt /*textlock* + textprop textprop.txt /*textprop* textprop.txt textprop.txt /*textprop.txt* tf.vim syntax.txt /*tf.vim* this_session-variable eval.txt /*this_session-variable* *************** *** 9451,9458 **** --- 9584,9594 ---- v:null eval.txt /*v:null* v:oldfiles eval.txt /*v:oldfiles* v:operator eval.txt /*v:operator* + v:option_command eval.txt /*v:option_command* v:option_new eval.txt /*v:option_new* v:option_old eval.txt /*v:option_old* + v:option_oldglobal eval.txt /*v:option_oldglobal* + v:option_oldlocal eval.txt /*v:option_oldlocal* v:option_type eval.txt /*v:option_type* v:prevcount eval.txt /*v:prevcount* v:profiling eval.txt /*v:profiling* *************** *** 9492,9497 **** --- 9628,9634 ---- v:val eval.txt /*v:val* v:var eval.txt /*v:var* v:version eval.txt /*v:version* + v:versionlong eval.txt /*v:versionlong* v:vim_did_enter eval.txt /*v:vim_did_enter* v:warningmsg eval.txt /*v:warningmsg* v:windowid eval.txt /*v:windowid* *************** *** 9650,9655 **** --- 9787,9793 ---- version8.0 version8.txt /*version8.0* version8.1 version8.txt /*version8.1* version8.txt version8.txt /*version8.txt* + versionlong-variable eval.txt /*versionlong-variable* vi intro.txt /*vi* vi-differences vi_diff.txt /*vi-differences* vi-features vi_diff.txt /*vi-features* *************** *** 9795,9800 **** --- 9933,9939 ---- win32-win3.1 os_win32.txt /*win32-win3.1* win32-win95 os_win32.txt /*win32-win95* win32s os_win32.txt /*win32s* + win_execute() eval.txt /*win_execute()* win_findbuf() eval.txt /*win_findbuf()* win_getid() eval.txt /*win_getid()* win_gotoid() eval.txt /*win_gotoid()* *** ../vim-8.1.1725/src/version.c 2019-07-21 15:23:32.318333807 +0200 --- src/version.c 2019-07-21 16:38:53.344366336 +0200 *************** *** 779,780 **** --- 779,782 ---- { /* Add new patch number below this line */ + /**/ + 1726, /**/ -- Corn oil comes from corn and olive oil comes from olives, so where does baby oil come from? /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///