summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-12-02 13:37:36 +0000
committerBram Moolenaar <Bram@vim.org>2022-12-02 13:37:36 +0000
commitb55ae8ce42c8a83d14bfde2c138fcc74f447de68 (patch)
tree04293cc9ec6e29ae42c044247dadeaceb74b7b9b
parentcf650b7c9bf8310e2d5b04edced6f7290b759044 (diff)
downloadvim-git-b55ae8ce42c8a83d14bfde2c138fcc74f447de68.tar.gz
patch 9.0.0988: using feedkeys() does not show up in a channel logv9.0.0988
Problem: Using feedkeys() does not show up in a channel log. Solution: Add ch_log() calls and clean up the code.
-rw-r--r--src/evalfunc.c113
-rw-r--r--src/version.c2
2 files changed, 61 insertions, 54 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index e72f8610f..fa63ab2e2 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -4343,7 +4343,6 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED)
int context = FALSE;
int dangerous = FALSE;
int lowlevel = FALSE;
- char_u *keys_esc;
// This is not allowed in the sandbox. If the commands would still be
// executed in the sandbox it would be OK, but it probably happens later,
@@ -4379,73 +4378,79 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED)
if (*keys != NUL || execute)
{
- // Need to escape K_SPECIAL and CSI before putting the string in the
- // typeahead buffer.
- keys_esc = vim_strsave_escape_csi(keys);
- if (keys_esc != NULL)
+ if (lowlevel)
{
- if (lowlevel)
- {
#ifdef USE_INPUT_BUF
- int len = (int)STRLEN(keys);
+ ch_log(NULL, "feedkeys() lowlevel: %s", keys);
- for (int idx = 0; idx < len; ++idx)
- {
- // if a CTRL-C was typed, set got_int, similar to what
- // happens in fill_input_buf()
- if (keys[idx] == 3 && ctrl_c_interrupts && typed)
- got_int = TRUE;
- add_to_input_buf(keys + idx, 1);
- }
+ int len = (int)STRLEN(keys);
+ for (int idx = 0; idx < len; ++idx)
+ {
+ // if a CTRL-C was typed, set got_int, similar to what
+ // happens in fill_input_buf()
+ if (keys[idx] == 3 && ctrl_c_interrupts && typed)
+ got_int = TRUE;
+ add_to_input_buf(keys + idx, 1);
+ }
#else
- emsg(_(e_lowlevel_input_not_supported));
+ emsg(_(e_lowlevel_input_not_supported));
#endif
- }
- else
- {
- ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
- insert ? 0 : typebuf.tb_len, !typed, FALSE);
- if (vgetc_busy
+ }
+ else
+ {
+ // Need to escape K_SPECIAL and CSI before putting the string in
+ // the typeahead buffer.
+ char_u *keys_esc = vim_strsave_escape_csi(keys);
+ if (keys_esc == NULL)
+ return;
+
+ ch_log(NULL, "feedkeys(%s): %s", typed ? "typed" : "", keys);
+
+ ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
+ insert ? 0 : typebuf.tb_len, !typed, FALSE);
+ if (vgetc_busy
#ifdef FEAT_TIMERS
- || timer_busy
+ || timer_busy
#endif
- || input_busy)
- typebuf_was_filled = TRUE;
- }
- vim_free(keys_esc);
+ || input_busy)
+ typebuf_was_filled = TRUE;
- if (execute)
- {
- int save_msg_scroll = msg_scroll;
- sctx_T save_sctx;
+ vim_free(keys_esc);
+ }
- // Avoid a 1 second delay when the keys start Insert mode.
- msg_scroll = FALSE;
+ if (execute)
+ {
+ int save_msg_scroll = msg_scroll;
+ sctx_T save_sctx;
- if (context)
- {
- save_sctx = current_sctx;
- current_sctx.sc_sid = 0;
- current_sctx.sc_version = 0;
- }
+ // Avoid a 1 second delay when the keys start Insert mode.
+ msg_scroll = FALSE;
- if (!dangerous)
- {
- ++ex_normal_busy;
- ++in_feedkeys;
- }
- exec_normal(TRUE, lowlevel, TRUE);
- if (!dangerous)
- {
- --ex_normal_busy;
- --in_feedkeys;
- }
+ ch_log(NULL, "feedkeys() executing");
- msg_scroll |= save_msg_scroll;
+ if (context)
+ {
+ save_sctx = current_sctx;
+ current_sctx.sc_sid = 0;
+ current_sctx.sc_version = 0;
+ }
- if (context)
- current_sctx = save_sctx;
+ if (!dangerous)
+ {
+ ++ex_normal_busy;
+ ++in_feedkeys;
}
+ exec_normal(TRUE, lowlevel, TRUE);
+ if (!dangerous)
+ {
+ --ex_normal_busy;
+ --in_feedkeys;
+ }
+
+ msg_scroll |= save_msg_scroll;
+
+ if (context)
+ current_sctx = save_sctx;
}
}
}
diff --git a/src/version.c b/src/version.c
index 93e35f622..4cb746e18 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 988,
+/**/
987,
/**/
986,