To: vim_dev@googlegroups.com Subject: Patch 9.0.0988 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0988 Problem: Using feedkeys() does not show up in a channel log. Solution: Add ch_log() calls and clean up the code. Files: src/evalfunc.c *** ../vim-9.0.0987/src/evalfunc.c 2022-11-30 18:11:52.690904297 +0000 --- src/evalfunc.c 2022-12-02 13:36:40.294568848 +0000 *************** *** 4343,4349 **** 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, --- 4343,4348 ---- *************** *** 4379,4451 **** 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) - { #ifdef USE_INPUT_BUF ! 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)); #endif ! } ! else ! { ! ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE), ! insert ? 0 : typebuf.tb_len, !typed, FALSE); ! if (vgetc_busy #ifdef FEAT_TIMERS ! || timer_busy #endif ! || input_busy) ! typebuf_was_filled = TRUE; ! } vim_free(keys_esc); ! if (execute) ! { ! int save_msg_scroll = msg_scroll; ! sctx_T save_sctx; ! // Avoid a 1 second delay when the keys start Insert mode. ! msg_scroll = FALSE; ! if (context) ! { ! save_sctx = current_sctx; ! current_sctx.sc_sid = 0; ! current_sctx.sc_version = 0; ! } ! ! 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; } } } } --- 4378,4456 ---- if (*keys != NUL || execute) { ! if (lowlevel) { #ifdef USE_INPUT_BUF ! ch_log(NULL, "feedkeys() lowlevel: %s", keys); ! 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)); #endif ! } ! 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 #endif ! || input_busy) ! typebuf_was_filled = TRUE; ! vim_free(keys_esc); + } ! if (execute) ! { ! int save_msg_scroll = msg_scroll; ! sctx_T save_sctx; ! // Avoid a 1 second delay when the keys start Insert mode. ! msg_scroll = FALSE; ! ch_log(NULL, "feedkeys() executing"); ! if (context) ! { ! save_sctx = current_sctx; ! current_sctx.sc_sid = 0; ! current_sctx.sc_version = 0; ! } ! 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; } } } *** ../vim-9.0.0987/src/version.c 2022-12-02 13:20:16.464758265 +0000 --- src/version.c 2022-12-02 13:26:00.589664052 +0000 *************** *** 697,698 **** --- 697,700 ---- { /* Add new patch number below this line */ + /**/ + 988, /**/ -- panic("Foooooooood fight!"); -- In the kernel source aha1542.c, after detecting a bad segment list /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///