summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0069
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0069')
-rw-r--r--data/vim/patches/8.1.0069301
1 files changed, 301 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0069 b/data/vim/patches/8.1.0069
new file mode 100644
index 000000000..f3f67bdc7
--- /dev/null
+++ b/data/vim/patches/8.1.0069
@@ -0,0 +1,301 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0069
+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.0069
+Problem: Cannot handle pressing CTRL-C in a prompt buffer.
+Solution: Add prompt_setinterrupt().
+Files: runtime/doc/eval.txt, src/edit.c, src/evalfunc.c, src/channel.c,
+ src/proto/channel.pro
+
+
+*** ../vim-8.1.0068/runtime/doc/eval.txt 2018-06-07 18:17:42.274227515 +0200
+--- runtime/doc/eval.txt 2018-06-17 18:12:12.760548966 +0200
+***************
+*** 2297,2304 ****
+ prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
+ printf({fmt}, {expr1}...) String format text
+ prompt_addtext({buf}, {expr}) none add text to a prompt buffer
+- prompt_setprompt({buf}, {text}) none set prompt text
+ prompt_setcallback({buf}, {expr}) none set prompt callback function
+ pumvisible() Number whether popup menu is visible
+ pyeval({expr}) any evaluate |Python| expression
+ py3eval({expr}) any evaluate |python3| expression
+--- 2297,2305 ----
+ prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
+ printf({fmt}, {expr1}...) String format text
+ prompt_addtext({buf}, {expr}) none add text to a prompt buffer
+ prompt_setcallback({buf}, {expr}) none set prompt callback function
++ prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
++ prompt_setprompt({buf}, {text}) none set prompt text
+ pumvisible() Number whether popup menu is visible
+ pyeval({expr}) any evaluate |Python| expression
+ py3eval({expr}) any evaluate |python3| expression
+***************
+*** 6506,6522 ****
+ arguments an error is given. Up to 18 arguments can be used.
+
+
+- prompt_setprompt({buf}, {text}) *prompt_setprompt()*
+- Set prompt for buffer {buf} to {text}. You most likely want
+- {text} to end in a space.
+- The result is only visible if {buf} has 'buftype' set to
+- "prompt". Example: >
+- call prompt_setprompt(bufnr(''), 'command: ')
+-
+-
+ prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
+! Set prompt callback for buffer {buf} to {expr}. This has only
+ effect if {buf} has 'buftype' set to "prompt".
+ The callback is invoked when pressing Enter. The current
+ buffer will always be the prompt buffer. A new line for a
+ prompt is added before invoking the callback, thus the prompt
+--- 6507,6517 ----
+ arguments an error is given. Up to 18 arguments can be used.
+
+
+ prompt_setcallback({buf}, {expr}) *prompt_setcallback()*
+! Set prompt callback for buffer {buf} to {expr}. When {expr}
+! is an empty string the callback is removed. This has only
+ effect if {buf} has 'buftype' set to "prompt".
++
+ The callback is invoked when pressing Enter. The current
+ buffer will always be the prompt buffer. A new line for a
+ prompt is added before invoking the callback, thus the prompt
+***************
+*** 6541,6546 ****
+--- 6536,6557 ----
+ endif
+ endfunc
+
++ prompt_setinterrupt({buf}, {expr}) *prompt_setinterrupt()*
++ Set a callback for buffer {buf} to {expr}. When {expr} is an
++ empty string the callback is removed. This has only effect if
++ {buf} has 'buftype' set to "prompt".
++
++ This callback will be invoked when pressing CTRL-C in Insert
++ mode. Without setting a callback Vim will exit Insert mode,
++ as in any buffer.
++
++ prompt_setprompt({buf}, {text}) *prompt_setprompt()*
++ Set prompt for buffer {buf} to {text}. You most likely want
++ {text} to end in a space.
++ The result is only visible if {buf} has 'buftype' set to
++ "prompt". Example: >
++ call prompt_setprompt(bufnr(''), 'command: ')
++
+
+ pumvisible() *pumvisible()*
+ Returns non-zero when the popup menu is visible, zero
+***************
+*** 8563,8569 ****
+ instead of using 'termwinsize'
+ "term_cols" horizontal size to use for the terminal,
+ instead of using 'termwinsize'
+! "vertical" split the window vertically
+ "curwin" use the current window, do not split the
+ window; fails if the current buffer
+ cannot be |abandon|ed
+--- 8574,8582 ----
+ instead of using 'termwinsize'
+ "term_cols" horizontal size to use for the terminal,
+ instead of using 'termwinsize'
+! "vertical" split the window vertically; note that
+! other window position can be defined with
+! command modifiers, such as |:belowright|.
+ "curwin" use the current window, do not split the
+ window; fails if the current buffer
+ cannot be |abandon|ed
+***************
+*** 9392,9402 ****
+ out if it works in the current console).
+ wildignore Compiled with 'wildignore' option.
+ wildmenu Compiled with 'wildmenu' option.
+ win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
+ 64 bits)
+ win32unix Win32 version of Vim, using Unix files (Cygwin)
+ win64 Win64 version of Vim (MS-Windows 64 bit).
+! win95 Win32 version for MS-Windows 95/98/ME.
+ winaltkeys Compiled with 'winaltkeys' option.
+ windows Compiled with support for more than one window.
+ writebackup Compiled with 'writebackup' default on.
+--- 9405,9416 ----
+ out if it works in the current console).
+ wildignore Compiled with 'wildignore' option.
+ wildmenu Compiled with 'wildmenu' option.
++ win16 old version for MS-Windows 3.1 (always False)
+ win32 Win32 version of Vim (MS-Windows 95 and later, 32 or
+ 64 bits)
+ win32unix Win32 version of Vim, using Unix files (Cygwin)
+ win64 Win64 version of Vim (MS-Windows 64 bit).
+! win95 Win32 version for MS-Windows 95/98/ME (always False)
+ winaltkeys Compiled with 'winaltkeys' option.
+ windows Compiled with support for more than one window.
+ writebackup Compiled with 'writebackup' default on.
+*** ../vim-8.1.0068/src/edit.c 2018-06-17 16:23:29.337140663 +0200
+--- src/edit.c 2018-06-17 19:32:54.656479224 +0200
+***************
+*** 1016,1021 ****
+--- 1016,1034 ----
+ goto doESCkey;
+ }
+ #endif
++ #ifdef FEAT_JOB_CHANNEL
++ if (c == Ctrl_C && bt_prompt(curbuf))
++ {
++ if (invoke_prompt_interrupt())
++ {
++ if (!bt_prompt(curbuf))
++ // buffer changed to a non-prompt buffer, get out of
++ // Insert mode
++ goto doESCkey;
++ break;
++ }
++ }
++ #endif
+
+ #ifdef UNIX
+ do_intr:
+*** ../vim-8.1.0068/src/evalfunc.c 2018-06-17 19:22:48.343603795 +0200
+--- src/evalfunc.c 2018-06-17 19:16:21.949606435 +0200
+***************
+*** 298,303 ****
+--- 298,304 ----
+ static void f_printf(typval_T *argvars, typval_T *rettv);
+ #ifdef FEAT_JOB_CHANNEL
+ static void f_prompt_setcallback(typval_T *argvars, typval_T *rettv);
++ static void f_prompt_setinterrupt(typval_T *argvars, typval_T *rettv);
+ static void f_prompt_setprompt(typval_T *argvars, typval_T *rettv);
+ #endif
+ static void f_pumvisible(typval_T *argvars, typval_T *rettv);
+***************
+*** 754,759 ****
+--- 755,761 ----
+ {"printf", 1, 19, f_printf},
+ #ifdef FEAT_JOB_CHANNEL
+ {"prompt_setcallback", 2, 2, f_prompt_setcallback},
++ {"prompt_setinterrupt", 2, 2, f_prompt_setinterrupt},
+ {"prompt_setprompt", 2, 2, f_prompt_setprompt},
+ #endif
+ {"pumvisible", 0, 0, f_pumvisible},
+***************
+*** 8622,8627 ****
+--- 8624,8658 ----
+ }
+
+ /*
++ * "prompt_setinterrupt({buffer}, {callback})" function
++ */
++ static void
++ f_prompt_setinterrupt(typval_T *argvars, typval_T *rettv UNUSED)
++ {
++ buf_T *buf;
++ char_u *callback;
++ partial_T *partial;
++
++ if (check_secure())
++ return;
++ buf = get_buf_tv(&argvars[0], FALSE);
++ if (buf == NULL)
++ return;
++
++ callback = get_callback(&argvars[1], &partial);
++ if (callback == NULL)
++ return;
++
++ free_callback(buf->b_prompt_interrupt, buf->b_prompt_int_partial);
++ if (partial == NULL)
++ buf->b_prompt_interrupt = vim_strsave(callback);
++ else
++ /* pointer into the partial */
++ buf->b_prompt_interrupt = callback;
++ buf->b_prompt_int_partial = partial;
++ }
++
++ /*
+ * "prompt_setprompt({buffer}, {text})" function
+ */
+ static void
+*** ../vim-8.1.0068/src/channel.c 2018-06-12 20:25:47.883923416 +0200
+--- src/channel.c 2018-06-17 19:33:49.264186387 +0200
+***************
+*** 5856,5862 ****
+ curwin->w_cursor.lnum = lnum + 1;
+ curwin->w_cursor.col = 0;
+
+! if (curbuf->b_prompt_callback == NULL)
+ return;
+ text = ml_get(lnum);
+ prompt = prompt_text();
+--- 5856,5862 ----
+ curwin->w_cursor.lnum = lnum + 1;
+ curwin->w_cursor.col = 0;
+
+! if (curbuf->b_prompt_callback == NULL || *curbuf->b_prompt_callback == NUL)
+ return;
+ text = ml_get(lnum);
+ prompt = prompt_text();
+***************
+*** 5874,5877 ****
+--- 5874,5901 ----
+ clear_tv(&rettv);
+ }
+
++ /*
++ * Return TRUE when the interrupt callback was invoked.
++ */
++ int
++ invoke_prompt_interrupt(void)
++ {
++ typval_T rettv;
++ int dummy;
++ typval_T argv[1];
++
++ if (curbuf->b_prompt_interrupt == NULL
++ || *curbuf->b_prompt_interrupt == NUL)
++ return FALSE;
++ argv[0].v_type = VAR_UNKNOWN;
++
++ got_int = FALSE; // don't skip executing commands
++ call_func(curbuf->b_prompt_interrupt,
++ (int)STRLEN(curbuf->b_prompt_interrupt),
++ &rettv, 0, argv, NULL, 0L, 0L, &dummy, TRUE,
++ curbuf->b_prompt_int_partial, NULL);
++ clear_tv(&rettv);
++ return TRUE;
++ }
++
+ #endif /* FEAT_JOB_CHANNEL */
+*** ../vim-8.1.0068/src/proto/channel.pro 2018-06-12 20:25:47.883923416 +0200
+--- src/proto/channel.pro 2018-06-17 19:34:32.267954974 +0200
+***************
+*** 72,75 ****
+--- 72,76 ----
+ void job_info_all(list_T *l);
+ int job_stop(job_T *job, typval_T *argvars, char *type);
+ void invoke_prompt_callback(void);
++ int invoke_prompt_interrupt(void);
+ /* vim: set ft=c : */
+*** ../vim-8.1.0068/src/version.c 2018-06-17 19:22:48.343603795 +0200
+--- src/version.c 2018-06-17 19:34:40.111912692 +0200
+***************
+*** 763,764 ****
+--- 763,766 ----
+ { /* Add new patch number below this line */
++ /**/
++ 69,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+64. The remote to the T.V. is missing...and you don't even care.
+
+ /// 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 ///