Problem: ModifyOtherKeys cannot be temporarily disabled.
Solution: Add echoraw() with an example for modifyOtherKeys.
-*eval.txt* For Vim version 8.2. Last change: 2020 Feb 03
+*eval.txt* For Vim version 8.2. Last change: 2020 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
did_filetype() Number |TRUE| if FileType autocmd event used
diff_filler({lnum}) Number diff filler lines about {lnum}
diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col}
+echoraw({expr}) none output {expr} as-is
empty({expr}) Number |TRUE| if {expr} is empty
environ() Dict return environment variables
escape({string}, {chars}) String escape {chars} in {string} with '\'
win_screenpos({nr}) List get screen position of window {nr}
win_splitmove({nr}, {target} [, {options}])
Number move window {nr} to split of {target}
+win_type([{nr}]) String type of window {nr}
winbufnr({nr}) Number buffer number of window {nr}
wincol() Number window column of the cursor
winheight({nr}) Number height of window {nr}
Can also be used as a |method|: >
GetLnum()->diff_hlID(col)
+
+echoraw({expr}) *echoraw()*
+ Output {expr} as-is, including unprintable characters. This
+ can be used to output a terminal code. For example, to disable
+ modifyOtherKeys: >
+ call echoraw(&t_TE)
+< and to enable it again: >
+ call echoraw(&t_TI)
+< Use with care, you can mess up the terminal this way.
+
+
empty({expr}) *empty()*
Return the Number 1 if {expr} is empty, zero otherwise.
- A |List| or |Dictionary| is empty when it does not have any
Can also be used as a |method|: >
GetWinid()->win_splitmove(target)
<
+
*winbufnr()*
winbufnr({nr}) The result is a Number, which is the number of the buffer
associated with window {nr}. {nr} can be the window number or
#endif
static void f_deepcopy(typval_T *argvars, typval_T *rettv);
static void f_did_filetype(typval_T *argvars, typval_T *rettv);
+static void f_echoraw(typval_T *argvars, typval_T *rettv);
static void f_empty(typval_T *argvars, typval_T *rettv);
static void f_environ(typval_T *argvars, typval_T *rettv);
static void f_escape(typval_T *argvars, typval_T *rettv);
{"did_filetype", 0, 0, 0, &t_number, f_did_filetype},
{"diff_filler", 1, 1, FEARG_1, &t_number, f_diff_filler},
{"diff_hlID", 2, 2, FEARG_1, &t_number, f_diff_hlID},
+ {"echoraw", 1, 1, FEARG_1, &t_number, f_echoraw},
{"empty", 1, 1, FEARG_1, &t_number, f_empty},
{"environ", 0, 0, 0, &t_dict_string, f_environ},
{"escape", 2, 2, FEARG_1, &t_string, f_escape},
rettv->vval.v_number = did_filetype;
}
+/*
+ * "echoraw({expr})" function
+ */
+ static void
+f_echoraw(typval_T *argvars, typval_T *rettv UNUSED)
+{
+ char_u *str = tv_get_string_chk(&argvars[0]);
+
+ if (str != NULL && *str != NUL)
+ {
+ out_str(str);
+ out_flush();
+ }
+}
+
/*
* "empty({expr})" function
*/
--- /dev/null
+>x+0&#ffffff0|e|l@1|o| @34
+|~+0#4040ff13&| @38
+|~| @38
+|~| @38
+| +0#0000000&@21|0|,|0|-|1| @8|A|l@1|
source shared.vim
source check.vim
source term_util.vim
+source screendump.vim
" Must be done first, since the alternate buffer must be unset.
func Test_00_bufexists()
" uniq()
call assert_equal([0, 1, 2, 3, 4], uniq(range(5)))
endfunc
+
+func Test_echoraw()
+ CheckScreendump
+
+ " Normally used for escape codes, but let's test with a CR.
+ let lines =<< trim END
+ call echoraw("hello\<CR>x")
+ END
+ call writefile(lines, 'XTest_echoraw')
+ let buf = RunVimInTerminal('-S XTest_echoraw', {'rows': 5, 'cols': 40})
+ call VerifyScreenDump(buf, 'Test_functions_echoraw', {})
+
+ " clean up
+ call StopVimInTerminal(buf)
+ call delete('XTest_echoraw')
+endfunc
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 258,
/**/
257,
/**/