summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0466
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0466')
-rw-r--r--data/vim/patches/8.1.0466264
1 files changed, 264 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0466 b/data/vim/patches/8.1.0466
new file mode 100644
index 000000000..414d1073e
--- /dev/null
+++ b/data/vim/patches/8.1.0466
@@ -0,0 +1,264 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0466
+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.0466 (after 8.1.0463)
+Problem: Autocmd test fails.
+Solution: Do call inchar() when flushing typeahead.
+Files: src/vim.h, src/getchar.c, src/proto/getchar.pro, src/memline.c,
+ src/message.c, src/misc1.c
+
+
+*** ../vim-8.1.0465/src/vim.h 2018-09-18 22:29:59.888041388 +0200
+--- src/vim.h 2018-10-07 23:01:47.537604844 +0200
+***************
+*** 2108,2113 ****
+--- 2108,2120 ----
+ PASTE_ONE_CHAR /* return first character */
+ } paste_mode_T;
+
++ // Argument for flush_buffers().
++ typedef enum {
++ FLUSH_MINIMAL,
++ FLUSH_TYPEAHEAD, // flush current typebuf contents
++ FLUSH_INPUT // flush typebuf and inchar() input
++ } flush_buffers_T;
++
+ #include "ex_cmds.h" /* Ex command defines */
+ #include "spell.h" /* spell checking stuff */
+
+*** ../vim-8.1.0465/src/getchar.c 2018-09-30 21:43:17.187693348 +0200
+--- src/getchar.c 2018-10-07 23:05:48.079859873 +0200
+***************
+*** 438,444 ****
+ * flush all typeahead characters (used when interrupted by a CTRL-C).
+ */
+ void
+! flush_buffers(int flush_typeahead)
+ {
+ init_typebuf();
+
+--- 438,444 ----
+ * flush all typeahead characters (used when interrupted by a CTRL-C).
+ */
+ void
+! flush_buffers(flush_buffers_T flush_typeahead)
+ {
+ init_typebuf();
+
+***************
+*** 446,460 ****
+ while (read_readbuffers(TRUE) != NUL)
+ ;
+
+! if (flush_typeahead) /* remove all typeahead */
+ {
+! /*
+! * We have to get all characters, because we may delete the first part
+! * of an escape sequence.
+! * In an xterm we get one char at a time and we have to get them all.
+! */
+! while (inchar(typebuf.tb_buf, typebuf.tb_buflen - 1, 10L) != 0)
+! ;
+ typebuf.tb_off = MAXMAPLEN;
+ typebuf.tb_len = 0;
+ #if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
+--- 446,466 ----
+ while (read_readbuffers(TRUE) != NUL)
+ ;
+
+! if (flush_typeahead == FLUSH_MINIMAL)
+ {
+! // remove mapped characters at the start only
+! typebuf.tb_off += typebuf.tb_maplen;
+! typebuf.tb_len -= typebuf.tb_maplen;
+! }
+! else
+! {
+! // remove typeahead
+! if (flush_typeahead == FLUSH_INPUT)
+! // We have to get all characters, because we may delete the first
+! // part of an escape sequence. In an xterm we get one char at a
+! // time and we have to get them all.
+! while (inchar(typebuf.tb_buf, typebuf.tb_buflen - 1, 10L) != 0)
+! ;
+ typebuf.tb_off = MAXMAPLEN;
+ typebuf.tb_len = 0;
+ #if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
+***************
+*** 463,473 ****
+ typebuf_was_filled = FALSE;
+ #endif
+ }
+- else /* remove mapped characters at the start only */
+- {
+- typebuf.tb_off += typebuf.tb_maplen;
+- typebuf.tb_len -= typebuf.tb_maplen;
+- }
+ typebuf.tb_maplen = 0;
+ typebuf.tb_silent = 0;
+ cmd_silent = FALSE;
+--- 469,474 ----
+***************
+*** 1858,1863 ****
+--- 1859,1865 ----
+ * Check if a character is available, such that vgetc() will not block.
+ * If the next character is a special character or multi-byte, the returned
+ * character is not valid!.
++ * Returns NUL if no character is available.
+ */
+ int
+ vpeekc(void)
+***************
+*** 1956,1962 ****
+ * KeyTyped is set to TRUE in the case the user typed the key.
+ * KeyStuffed is TRUE if the character comes from the stuff buffer.
+ * if "advance" is FALSE (vpeekc()):
+! * just look whether there is a character available.
+ *
+ * When "no_mapping" is zero, checks for mappings in the current mode.
+ * Only returns one byte (of a multi-byte character).
+--- 1958,1965 ----
+ * KeyTyped is set to TRUE in the case the user typed the key.
+ * KeyStuffed is TRUE if the character comes from the stuff buffer.
+ * if "advance" is FALSE (vpeekc()):
+! * Just look whether there is a character available.
+! * Return NUL if not.
+ *
+ * When "no_mapping" is zero, checks for mappings in the current mode.
+ * Only returns one byte (of a multi-byte character).
+***************
+*** 2084,2090 ****
+ c = ESC;
+ else
+ c = Ctrl_C;
+! flush_buffers(TRUE); /* flush all typeahead */
+
+ if (advance)
+ {
+--- 2087,2093 ----
+ c = ESC;
+ else
+ c = Ctrl_C;
+! flush_buffers(FLUSH_INPUT); // flush all typeahead
+
+ if (advance)
+ {
+***************
+*** 2510,2516 ****
+ redrawcmdline();
+ else
+ setcursor();
+! flush_buffers(FALSE);
+ mapdepth = 0; /* for next one */
+ c = -1;
+ break;
+--- 2513,2519 ----
+ redrawcmdline();
+ else
+ setcursor();
+! flush_buffers(FLUSH_MINIMAL);
+ mapdepth = 0; /* for next one */
+ c = -1;
+ break;
+*** ../vim-8.1.0465/src/proto/getchar.pro 2018-05-17 13:52:36.000000000 +0200
+--- src/proto/getchar.pro 2018-10-07 23:07:15.159189769 +0200
+***************
+*** 5,11 ****
+ int stuff_empty(void);
+ int readbuf1_empty(void);
+ void typeahead_noflush(int c);
+! void flush_buffers(int flush_typeahead);
+ void ResetRedobuff(void);
+ void CancelRedo(void);
+ void saveRedobuff(save_redo_T *save_redo);
+--- 5,11 ----
+ int stuff_empty(void);
+ int readbuf1_empty(void);
+ void typeahead_noflush(int c);
+! void flush_buffers(flush_buffers_T flush_typeahead);
+ void ResetRedobuff(void);
+ void CancelRedo(void);
+ void saveRedobuff(save_redo_T *save_redo);
+*** ../vim-8.1.0465/src/memline.c 2018-10-07 20:48:33.941433087 +0200
+--- src/memline.c 2018-10-07 23:06:02.015753778 +0200
+***************
+*** 4522,4528 ****
+
+ // If vimrc has "simalt ~x" we don't want it to
+ // interfere with the prompt here.
+! flush_buffers(TRUE);
+ }
+
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+--- 4522,4528 ----
+
+ // If vimrc has "simalt ~x" we don't want it to
+ // interfere with the prompt here.
+! flush_buffers(FLUSH_TYPEAHEAD);
+ }
+
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+*** ../vim-8.1.0465/src/message.c 2018-09-30 21:43:17.195693290 +0200
+--- src/message.c 2018-10-07 23:06:29.651542067 +0200
+***************
+*** 688,695 ****
+ if (p_eb)
+ beep_flush(); /* also includes flush_buffers() */
+ else
+! flush_buffers(FALSE); /* flush internal buffers */
+! did_emsg = TRUE; /* flag for DoOneCmd() */
+ #ifdef FEAT_EVAL
+ did_uncaught_emsg = TRUE;
+ #endif
+--- 688,695 ----
+ if (p_eb)
+ beep_flush(); /* also includes flush_buffers() */
+ else
+! flush_buffers(FLUSH_MINIMAL); // flush internal buffers
+! did_emsg = TRUE; // flag for DoOneCmd()
+ #ifdef FEAT_EVAL
+ did_uncaught_emsg = TRUE;
+ #endif
+*** ../vim-8.1.0465/src/misc1.c 2018-09-30 21:43:17.195693290 +0200
+--- src/misc1.c 2018-10-07 23:07:05.159267560 +0200
+***************
+*** 3825,3831 ****
+ {
+ if (emsg_silent == 0)
+ {
+! flush_buffers(FALSE);
+ vim_beep(BO_ERROR);
+ }
+ }
+--- 3825,3831 ----
+ {
+ if (emsg_silent == 0)
+ {
+! flush_buffers(FLUSH_MINIMAL);
+ vim_beep(BO_ERROR);
+ }
+ }
+*** ../vim-8.1.0465/src/version.c 2018-10-07 22:47:03.633199859 +0200
+--- src/version.c 2018-10-07 23:04:59.372226904 +0200
+***************
+*** 794,795 ****
+--- 794,797 ----
+ { /* Add new patch number below this line */
++ /**/
++ 466,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+174. You know what a listserv is.
+
+ /// 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 ///