patch 7.4.1435
Problem: It is confusing that ch_sendexpr() and ch_sendraw() wait for a
response.
Solution: Add ch_evalexpr() and ch_evalraw().
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 1a1da6e..6a41c5f 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1818,6 +1818,10 @@
any call {func} with arguments {arglist}
ceil( {expr}) Float round {expr} up
ch_close( {channel}) none close {channel}
+ch_evalexpr( {channel}, {expr} [, {options}])
+ any evaluate {expr} on JSON {channel}
+ch_evalraw( {channel}, {string} [, {options}])
+ any evaluate {string} on raw {channel}
ch_getjob( {channel}) Job get the Job of {channel}
ch_log( {msg} [, {channel}]) none write {msg} in the channel log file
ch_logfile( {fname} [, {mode}]) none start logging channel activity
@@ -2692,6 +2696,31 @@
Close {channel}. See |channel-close|.
{only available when compiled with the |+channel| feature}
+ch_evalexpr({channel}, {expr} [, {options}]) *ch_evalexpr()*
+ Send {expr} over {channel}. The {expr} is encoded
+ according to the type of channel. The function cannot be used
+ with a raw channel. See |channel-use|. *E912*
+ *E917*
+ {options} must be a Dictionary. It must not have a "callback"
+ entry.
+
+ 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({channel}, {string} [, {options}]) *ch_evalraw()*
+ Send {string} over {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.
+ See |channel-use|.
+
+ {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
@@ -2769,16 +2798,11 @@
according to the type of channel. The function cannot be used
with a raw channel. See |channel-use|. *E912*
- {options} must be a Dictionary.
- When "callback" is a Funcref or the name of a function,
- ch_sendexpr() returns immediately. The callback is invoked
- when the response is received. See |channel-callback|.
-
- Without "callback" ch_sendexpr() waits for a response and
- returns the decoded expression. When there is an error or
- timeout it returns an empty string.
-
- When "callback" is zero no response is expected.
+ {options} must be a Dictionary. The "callback" item is a
+ Funcref or the name of a function it is invoked when the
+ response is received. See |channel-callback|.
+ Without "callback" the channel handler is invoked, otherwise
+ any received message is dropped.
{only available when compiled with the |+channel| feature}
@@ -7391,7 +7415,6 @@
showcmd Compiled with 'showcmd' support.
signs Compiled with |:sign| support.
smartindent Compiled with 'smartindent' support.
-sniff Compiled with SNiFF interface support.
spell Compiled with spell checking support |spell|.
startuptime Compiled with |--startuptime| support.
statusline Compiled with support for 'statusline', 'rulerformat'