summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0061
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0061')
-rw-r--r--data/vim/patches/8.1.0061420
1 files changed, 420 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0061 b/data/vim/patches/8.1.0061
new file mode 100644
index 000000000..e9c537e67
--- /dev/null
+++ b/data/vim/patches/8.1.0061
@@ -0,0 +1,420 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0061
+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.0061
+Problem: Window title is wrong after resetting and setting 'title'.
+Solution: Move resetting the title into maketitle(). (Jason Franklin)
+Files: src/option.c, src/buffer.c
+
+
+*** ../vim-8.1.0060/src/option.c 2018-06-12 16:49:26.366028607 +0200
+--- src/option.c 2018-06-16 22:36:07.814142229 +0200
+***************
+*** 3256,3264 ****
+ #ifdef FEAT_CMDWIN
+ static char_u *check_cedit(void);
+ #endif
+- #ifdef FEAT_TITLE
+- static void did_set_title(int icon);
+- #endif
+ static char_u *option_expand(int opt_idx, char_u *val);
+ static void didset_options(void);
+ static void didset_options2(void);
+--- 3256,3261 ----
+***************
+*** 5374,5400 ****
+ * the old value back.
+ */
+ static void
+! did_set_title(
+! int icon) /* Did set icon instead of title */
+ {
+ if (starting != NO_SCREEN
+ #ifdef FEAT_GUI
+ && !gui.starting
+ #endif
+ )
+- {
+ maketitle();
+- if (icon)
+- {
+- if (!p_icon)
+- mch_restore_title(2);
+- }
+- else
+- {
+- if (!p_title)
+- mch_restore_title(1);
+- }
+- }
+ }
+ #endif
+
+--- 5371,5384 ----
+ * the old value back.
+ */
+ static void
+! did_set_title(void)
+ {
+ if (starting != NO_SCREEN
+ #ifdef FEAT_GUI
+ && !gui.starting
+ #endif
+ )
+ maketitle();
+ }
+ #endif
+
+***************
+*** 6949,6956 ****
+ else
+ stl_syntax &= ~flagval;
+ # endif
+! did_set_title(varp == &p_iconstring);
+!
+ }
+ #endif
+
+--- 6933,6939 ----
+ else
+ stl_syntax &= ~flagval;
+ # endif
+! did_set_title();
+ }
+ #endif
+
+***************
+*** 8401,8414 ****
+
+ #ifdef FEAT_TITLE
+ /* when 'title' changed, may need to change the title; same for 'icon' */
+! else if ((int *)varp == &p_title)
+! {
+! did_set_title(FALSE);
+! }
+!
+! else if ((int *)varp == &p_icon)
+ {
+! did_set_title(TRUE);
+ }
+ #endif
+
+--- 8384,8392 ----
+
+ #ifdef FEAT_TITLE
+ /* when 'title' changed, may need to change the title; same for 'icon' */
+! else if ((int *)varp == &p_title || (int *)varp == &p_icon)
+ {
+! did_set_title();
+ }
+ #endif
+
+*** ../vim-8.1.0060/src/buffer.c 2018-06-06 18:02:31.402773772 +0200
+--- src/buffer.c 2018-06-16 22:57:08.067368623 +0200
+***************
+*** 38,44 ****
+ static int otherfile_buf(buf_T *buf, char_u *ffname);
+ #endif
+ #ifdef FEAT_TITLE
+! static int ti_change(char_u *str, char_u **last);
+ #endif
+ static int append_arg_number(win_T *wp, char_u *buf, int buflen, int add_file);
+ static void free_buffer(buf_T *);
+--- 38,44 ----
+ static int otherfile_buf(buf_T *buf, char_u *ffname);
+ #endif
+ #ifdef FEAT_TITLE
+! static int value_changed(char_u *str, char_u **last);
+ #endif
+ static int append_arg_number(win_T *wp, char_u *buf, int buflen, int add_file);
+ static void free_buffer(buf_T *);
+***************
+*** 3545,3564 ****
+ }
+
+ #if defined(FEAT_TITLE) || defined(PROTO)
+- /*
+- * put file name in title bar of window and in icon title
+- */
+-
+ static char_u *lasttitle = NULL;
+ static char_u *lasticon = NULL;
+
+ void
+ maketitle(void)
+ {
+ char_u *p;
+! char_u *t_str = NULL;
+! char_u *i_name;
+! char_u *i_str = NULL;
+ int maxlen = 0;
+ int len;
+ int mustset;
+--- 3545,3562 ----
+ }
+
+ #if defined(FEAT_TITLE) || defined(PROTO)
+ static char_u *lasttitle = NULL;
+ static char_u *lasticon = NULL;
+
++ /*
++ * Put the file name in the title bar and icon of the window.
++ */
+ void
+ maketitle(void)
+ {
+ char_u *p;
+! char_u *title_str = NULL;
+! char_u *icon_str = NULL;
+ int maxlen = 0;
+ int len;
+ int mustset;
+***************
+*** 3574,3580 ****
+
+ need_maketitle = FALSE;
+ if (!p_title && !p_icon && lasttitle == NULL && lasticon == NULL)
+! return;
+
+ if (p_title)
+ {
+--- 3572,3578 ----
+
+ need_maketitle = FALSE;
+ if (!p_title && !p_icon && lasttitle == NULL && lasticon == NULL)
+! return; // nothing to do
+
+ if (p_title)
+ {
+***************
+*** 3585,3591 ****
+ maxlen = 10;
+ }
+
+! t_str = buf;
+ if (*p_titlestring != NUL)
+ {
+ #ifdef FEAT_STL_OPT
+--- 3583,3589 ----
+ maxlen = 10;
+ }
+
+! title_str = buf;
+ if (*p_titlestring != NUL)
+ {
+ #ifdef FEAT_STL_OPT
+***************
+*** 3598,3604 ****
+ use_sandbox = was_set_insecurely((char_u *)"titlestring", 0);
+ # endif
+ called_emsg = FALSE;
+! build_stl_str_hl(curwin, t_str, sizeof(buf),
+ p_titlestring, use_sandbox,
+ 0, maxlen, NULL, NULL);
+ if (called_emsg)
+--- 3596,3602 ----
+ use_sandbox = was_set_insecurely((char_u *)"titlestring", 0);
+ # endif
+ called_emsg = FALSE;
+! build_stl_str_hl(curwin, title_str, sizeof(buf),
+ p_titlestring, use_sandbox,
+ 0, maxlen, NULL, NULL);
+ if (called_emsg)
+***************
+*** 3608,3614 ****
+ }
+ else
+ #endif
+! t_str = p_titlestring;
+ }
+ else
+ {
+--- 3606,3612 ----
+ }
+ else
+ #endif
+! title_str = p_titlestring;
+ }
+ else
+ {
+***************
+*** 3714,3724 ****
+ }
+ }
+ }
+! mustset = ti_change(t_str, &lasttitle);
+
+ if (p_icon)
+ {
+! i_str = buf;
+ if (*p_iconstring != NUL)
+ {
+ #ifdef FEAT_STL_OPT
+--- 3712,3722 ----
+ }
+ }
+ }
+! mustset = value_changed(title_str, &lasttitle);
+
+ if (p_icon)
+ {
+! icon_str = buf;
+ if (*p_iconstring != NUL)
+ {
+ #ifdef FEAT_STL_OPT
+***************
+*** 3731,3737 ****
+ use_sandbox = was_set_insecurely((char_u *)"iconstring", 0);
+ # endif
+ called_emsg = FALSE;
+! build_stl_str_hl(curwin, i_str, sizeof(buf),
+ p_iconstring, use_sandbox,
+ 0, 0, NULL, NULL);
+ if (called_emsg)
+--- 3729,3735 ----
+ use_sandbox = was_set_insecurely((char_u *)"iconstring", 0);
+ # endif
+ called_emsg = FALSE;
+! build_stl_str_hl(curwin, icon_str, sizeof(buf),
+ p_iconstring, use_sandbox,
+ 0, 0, NULL, NULL);
+ if (called_emsg)
+***************
+*** 3741,3772 ****
+ }
+ else
+ #endif
+! i_str = p_iconstring;
+ }
+ else
+ {
+ if (buf_spname(curbuf) != NULL)
+! i_name = buf_spname(curbuf);
+ else /* use file name only in icon */
+! i_name = gettail(curbuf->b_ffname);
+! *i_str = NUL;
+ /* Truncate name at 100 bytes. */
+! len = (int)STRLEN(i_name);
+ if (len > 100)
+ {
+ len -= 100;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+! len += (*mb_tail_off)(i_name, i_name + len) + 1;
+ #endif
+! i_name += len;
+ }
+! STRCPY(i_str, i_name);
+! trans_characters(i_str, IOSIZE);
+ }
+ }
+
+! mustset |= ti_change(i_str, &lasticon);
+
+ if (mustset)
+ resettitle();
+--- 3739,3770 ----
+ }
+ else
+ #endif
+! icon_str = p_iconstring;
+ }
+ else
+ {
+ if (buf_spname(curbuf) != NULL)
+! p = buf_spname(curbuf);
+ else /* use file name only in icon */
+! p = gettail(curbuf->b_ffname);
+! *icon_str = NUL;
+ /* Truncate name at 100 bytes. */
+! len = (int)STRLEN(p);
+ if (len > 100)
+ {
+ len -= 100;
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+! len += (*mb_tail_off)(p, p + len) + 1;
+ #endif
+! p += len;
+ }
+! STRCPY(icon_str, p);
+! trans_characters(icon_str, IOSIZE);
+ }
+ }
+
+! mustset |= value_changed(icon_str, &lasticon);
+
+ if (mustset)
+ resettitle();
+***************
+*** 3775,3794 ****
+ /*
+ * Used for title and icon: Check if "str" differs from "*last". Set "*last"
+ * from "str" if it does.
+! * Return TRUE when "*last" changed.
+ */
+ static int
+! ti_change(char_u *str, char_u **last)
+ {
+ if ((str == NULL) != (*last == NULL)
+ || (str != NULL && *last != NULL && STRCMP(str, *last) != 0))
+ {
+ vim_free(*last);
+ if (str == NULL)
+ *last = NULL;
+ else
+ *last = vim_strsave(str);
+! return TRUE;
+ }
+ return FALSE;
+ }
+--- 3773,3797 ----
+ /*
+ * Used for title and icon: Check if "str" differs from "*last". Set "*last"
+ * from "str" if it does.
+! * Return TRUE if resettitle() is to be called.
+ */
+ static int
+! value_changed(char_u *str, char_u **last)
+ {
+ if ((str == NULL) != (*last == NULL)
+ || (str != NULL && *last != NULL && STRCMP(str, *last) != 0))
+ {
+ vim_free(*last);
+ if (str == NULL)
++ {
+ *last = NULL;
++ mch_restore_title(last == &lasttitle ? 1 : 2);
++ }
+ else
++ {
+ *last = vim_strsave(str);
+! return TRUE;
+! }
+ }
+ return FALSE;
+ }
+*** ../vim-8.1.0060/src/version.c 2018-06-16 22:16:43.232576946 +0200
+--- src/version.c 2018-06-16 22:48:20.082215622 +0200
+***************
+*** 763,764 ****
+--- 763,766 ----
+ { /* Add new patch number below this line */
++ /**/
++ 61,
+ /**/
+
+--
+"I don’t know how to make a screenshot" - Richard Stallman, July 2002
+(when asked to send a screenshot of his desktop for unix.se)
+
+ /// 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 ///