summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0036
diff options
context:
space:
mode:
authorSam Bingner <sam@bingner.com>2018-08-03 15:06:38 -1000
committerSam Bingner <sam@bingner.com>2018-08-03 15:06:38 -1000
commit135b410607f008d3709a7b1374f3f37924eb9fe4 (patch)
treef4756ef3a354f6001360db894db010df85177f76 /data/vim/patches/8.1.0036
parentbd1eb51da0d3f250793e1868d73babdf495c921f (diff)
Update vim
Diffstat (limited to 'data/vim/patches/8.1.0036')
-rw-r--r--data/vim/patches/8.1.0036145
1 files changed, 145 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0036 b/data/vim/patches/8.1.0036
new file mode 100644
index 000000000..4162ef227
--- /dev/null
+++ b/data/vim/patches/8.1.0036
@@ -0,0 +1,145 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0036
+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.0036
+Problem: Not restoring Insert mode if leaving a prompt buffer by using a
+ mouse click.
+Solution: Set b_prompt_insert appropriately. Also correct cursor position
+ when moving cursor to last line.
+Files: src/buffer.c, src/edit.c, src/window.c
+
+
+*** ../vim-8.1.0035/src/buffer.c 2018-06-03 14:42:17.840505115 +0200
+--- src/buffer.c 2018-06-06 17:51:25.004337836 +0200
+***************
+*** 5733,5738 ****
+--- 5733,5742 ----
+ #endif
+ if (buf->b_fname != NULL)
+ return buf->b_fname;
++ #ifdef FEAT_JOB_CHANNEL
++ if (bt_prompt(buf))
++ return (char_u *)_("[Prompt]");
++ #endif
+ return (char_u *)_("[Scratch]");
+ }
+
+*** ../vim-8.1.0035/src/edit.c 2018-06-06 09:11:07.253357321 +0200
+--- src/edit.c 2018-06-06 17:51:25.004337836 +0200
+***************
+*** 1411,1421 ****
+ #ifdef FEAT_JOB_CHANNEL
+ if (bt_prompt(curbuf))
+ {
+- buf_T *buf = curbuf;
+-
+ invoke_prompt_callback();
+! if (curbuf != buf)
+! // buffer changed, get out of Insert mode
+ goto doESCkey;
+ break;
+ }
+--- 1411,1420 ----
+ #ifdef FEAT_JOB_CHANNEL
+ if (bt_prompt(curbuf))
+ {
+ invoke_prompt_callback();
+! if (!bt_prompt(curbuf))
+! // buffer changed to a non-prompt buffer, get out of
+! // Insert mode
+ goto doESCkey;
+ break;
+ }
+***************
+*** 1906,1911 ****
+--- 1905,1912 ----
+ coladvance((colnr_T)MAXCOL);
+ if (cmdchar_todo == 'I' || curwin->w_cursor.col <= (int)STRLEN(prompt))
+ curwin->w_cursor.col = STRLEN(prompt);
++ /* Make sure the cursor is in a valid position. */
++ check_cursor();
+ }
+
+ /*
+***************
+*** 9467,9473 ****
+
+ /* If deleted before the insertion point, adjust it */
+ if (curwin->w_cursor.lnum == Insstart_orig.lnum
+! && curwin->w_cursor.col < Insstart_orig.col)
+ Insstart_orig.col = curwin->w_cursor.col;
+
+ /* vi behaviour: the cursor moves backward but the character that
+--- 9468,9474 ----
+
+ /* If deleted before the insertion point, adjust it */
+ if (curwin->w_cursor.lnum == Insstart_orig.lnum
+! && curwin->w_cursor.col < Insstart_orig.col)
+ Insstart_orig.col = curwin->w_cursor.col;
+
+ /* vi behaviour: the cursor moves backward but the character that
+***************
+*** 9517,9522 ****
+--- 9518,9528 ----
+ * previous one to stop insert there properly. */
+ curwin = old_curwin;
+ curbuf = curwin->w_buffer;
++ #ifdef FEAT_JOB_CHANNEL
++ if (bt_prompt(curbuf))
++ // Restart Insert mode when re-entering the prompt buffer.
++ curbuf->b_prompt_insert = 'A';
++ #endif
+ }
+ start_arrow(curwin == old_curwin ? &tpos : NULL);
+ if (curwin != new_curwin && win_valid(new_curwin))
+*** ../vim-8.1.0035/src/window.c 2018-06-06 09:11:07.257357317 +0200
+--- src/window.c 2018-06-06 17:51:25.012337813 +0200
+***************
+*** 2115,2126 ****
+--- 2115,2135 ----
+ // 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;
++ if (bt_prompt(win->w_buffer) && win->w_buffer->b_prompt_insert == NUL)
++ win->w_buffer->b_prompt_insert = 'A';
++ }
+ }
+
+ static void
+ entering_window(win_T *win)
+ {
++ // When switching to a prompt buffer that was in Insert mode, don't stop
++ // Insert mode, it may have been set in leaving_window().
++ if (bt_prompt(win->w_buffer) && win->w_buffer->b_prompt_insert != NUL)
++ stop_insert_mode = FALSE;
++
+ // When entering the prompt window may restart Insert mode.
+ restart_edit = win->w_buffer->b_prompt_insert;
+ }
+*** ../vim-8.1.0035/src/version.c 2018-06-06 09:11:07.261357314 +0200
+--- src/version.c 2018-06-06 17:55:55.983628274 +0200
+***************
+*** 763,764 ****
+--- 763,766 ----
+ { /* Add new patch number below this line */
++ /**/
++ 36,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+ party because you're not in the mood.
+
+ /// 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 ///