summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0035
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0035')
-rw-r--r--data/vim/patches/8.1.0035237
1 files changed, 237 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0035 b/data/vim/patches/8.1.0035
new file mode 100644
index 000000000..329d2c528
--- /dev/null
+++ b/data/vim/patches/8.1.0035
@@ -0,0 +1,237 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0035
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0035
+Problem: Not easy to switch between prompt buffer and other windows.
+Solution: Accept CTRL-W commands in Insert mode. Start and stop Insert mode
+ as one would expect.
+Files: src/edit.c, src/ex_docmd.c, src/structs.h, src/window.c
+
+
+*** ../vim-8.1.0034/src/edit.c 2018-06-03 14:42:17.840505115 +0200
+--- src/edit.c 2018-06-06 09:06:43.329569894 +0200
+***************
+*** 811,816 ****
+--- 811,824 ----
+ do
+ {
+ c = safe_vgetc();
++
++ if (stop_insert_mode)
++ {
++ // Insert mode ended, possibly from a callback.
++ count = 0;
++ nomove = TRUE;
++ goto doESCkey;
++ }
+ } while (c == K_IGNORE || c == K_NOP);
+
+ /* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */
+***************
+*** 1165,1170 ****
+--- 1173,1190 ----
+ break;
+
+ case Ctrl_W: /* delete word before the cursor */
++ #ifdef FEAT_JOB_CHANNEL
++ if (bt_prompt(curbuf) && (mod_mask & MOD_MASK_SHIFT) == 0)
++ {
++ // In a prompt window CTRL-W is used for window commands.
++ // Use Shift-CTRL-W to delete a word.
++ stuffcharReadbuff(Ctrl_W);
++ restart_edit = 'i';
++ nomove = TRUE;
++ count = 0;
++ goto doESCkey;
++ }
++ #endif
+ did_backspace = ins_bs(c, BACKSPACE_WORD, &inserted_space);
+ auto_format(FALSE, TRUE);
+ break;
+***************
+*** 1869,1874 ****
+--- 1889,1907 ----
+ coladvance((colnr_T)MAXCOL);
+ changed_bytes(curbuf->b_ml.ml_line_count, 0);
+ }
++
++ // Insert always starts after the prompt, allow editing text after it.
++ if (Insstart_orig.lnum != curwin->w_cursor.lnum
++ || Insstart_orig.col != (int)STRLEN(prompt))
++ {
++ Insstart.lnum = curwin->w_cursor.lnum;
++ Insstart.col = STRLEN(prompt);
++ Insstart_orig = Insstart;
++ Insstart_textlen = Insstart.col;
++ Insstart_blank_vcol = MAXCOL;
++ arrow_used = FALSE;
++ }
++
+ if (cmdchar_todo == 'A')
+ coladvance((colnr_T)MAXCOL);
+ if (cmdchar_todo == 'I' || curwin->w_cursor.col <= (int)STRLEN(prompt))
+*** ../vim-8.1.0034/src/ex_docmd.c 2018-05-08 21:57:39.000000000 +0200
+--- src/ex_docmd.c 2018-06-06 08:58:58.317930716 +0200
+***************
+*** 7341,7347 ****
+ {
+ if (eap->addr_count == 0)
+ ex_win_close(eap->forceit, curwin, NULL);
+! else {
+ FOR_ALL_WINDOWS(win)
+ {
+ winnr++;
+--- 7341,7348 ----
+ {
+ if (eap->addr_count == 0)
+ ex_win_close(eap->forceit, curwin, NULL);
+! else
+! {
+ FOR_ALL_WINDOWS(win)
+ {
+ winnr++;
+*** ../vim-8.1.0034/src/structs.h 2018-06-03 14:42:17.848505102 +0200
+--- src/structs.h 2018-06-06 08:58:58.317930716 +0200
+***************
+*** 2360,2365 ****
+--- 2360,2367 ----
+ char_u *b_prompt_text; // set by prompt_setprompt()
+ char_u *b_prompt_callback; // set by prompt_setcallback()
+ partial_T *b_prompt_partial; // set by prompt_setcallback()
++ int b_prompt_insert; // value for restart_edit when entering
++ // a prompt buffer window.
+ #endif
+ #ifdef FEAT_MZSCHEME
+ void *b_mzscheme_ref; /* The MzScheme reference to this buffer */
+*** ../vim-8.1.0034/src/window.c 2018-05-04 20:09:46.000000000 +0200
+--- src/window.c 2018-06-06 08:58:58.321930713 +0200
+***************
+*** 2103,2108 ****
+--- 2103,2131 ----
+ }
+ }
+
++ #ifdef FEAT_JOB_CHANNEL
++ static void
++ leaving_window(win_T *win)
++ {
++ // When leaving a prompt window stop Insert mode and perhaps restart
++ // it when entering that window again.
++ win->w_buffer->b_prompt_insert = restart_edit;
++ restart_edit = NUL;
++
++ // When leaving the window (or closing the window) was done from a
++ // callback we need to break out of the Insert mode loop.
++ if (State & INSERT)
++ stop_insert_mode = TRUE;
++ }
++
++ static void
++ entering_window(win_T *win)
++ {
++ // When entering the prompt window may restart Insert mode.
++ restart_edit = win->w_buffer->b_prompt_insert;
++ }
++ #endif
++
+ /*
+ * Close all windows for buffer "buf".
+ */
+***************
+*** 2231,2236 ****
+--- 2254,2262 ----
+ if (h != tabline_height())
+ shell_new_rows();
+ }
++ #ifdef FEAT_JOB_CHANNEL
++ entering_window(curwin);
++ #endif
+ /* Since goto_tabpage_tp above did not trigger *Enter autocommands, do
+ * that now. */
+ apply_autocmds(EVENT_TABCLOSED, NULL, NULL, FALSE, curbuf);
+***************
+*** 2296,2301 ****
+--- 2322,2330 ----
+
+ if (win == curwin)
+ {
++ #ifdef FEAT_JOB_CHANNEL
++ leaving_window(curwin);
++ #endif
+ /*
+ * Guess which window is going to be the new current window.
+ * This may change because of the autocommands (sigh).
+***************
+*** 3649,3654 ****
+--- 3678,3686 ----
+ * scrollbars. Have to update them anyway. */
+ gui_may_update_scrollbars();
+ #endif
++ #ifdef FEAT_JOB_CHANNEL
++ entering_window(curwin);
++ #endif
+
+ redraw_all_later(CLEAR);
+ apply_autocmds(EVENT_WINNEW, NULL, NULL, FALSE, curbuf);
+***************
+*** 3822,3827 ****
+--- 3854,3862 ----
+ {
+ tabpage_T *tp = curtab;
+
++ #ifdef FEAT_JOB_CHANNEL
++ leaving_window(curwin);
++ #endif
+ reset_VIsual_and_resel(); /* stop Visual mode */
+ if (trigger_leave_autocmds)
+ {
+***************
+*** 4318,4323 ****
+--- 4353,4363 ----
+ if (wp == curwin && !curwin_invalid) /* nothing to do */
+ return;
+
++ #ifdef FEAT_JOB_CHANNEL
++ if (!curwin_invalid)
++ leaving_window(curwin);
++ #endif
++
+ if (!curwin_invalid && trigger_leave_autocmds)
+ {
+ /*
+***************
+*** 4389,4394 ****
+--- 4429,4437 ----
+ shorten_fnames(TRUE);
+ }
+
++ #ifdef FEAT_JOB_CHANNEL
++ entering_window(curwin);
++ #endif
+ if (trigger_new_autocmds)
+ apply_autocmds(EVENT_WINNEW, NULL, NULL, FALSE, curbuf);
+ if (trigger_enter_autocmds)
+*** ../vim-8.1.0034/src/version.c 2018-06-04 20:34:07.607373577 +0200
+--- src/version.c 2018-06-06 09:01:35.521811501 +0200
+***************
+*** 763,764 ****
+--- 763,766 ----
+ { /* Add new patch number below this line */
++ /**/
++ 35,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+12. Sing along at the opera.
+
+ /// 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 ///