]> granicus.if.org Git - vim/commitdiff
patch 7.4.1858 v7.4.1858
authorBram Moolenaar <Bram@vim.org>
Sun, 29 May 2016 14:24:50 +0000 (16:24 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 29 May 2016 14:24:50 +0000 (16:24 +0200)
Problem:    When a channel writes to a buffer it doesn't find a buffer by the
            short name but re-uses it anyway.
Solution:   Find buffer also by the short name.

src/buffer.c
src/channel.c
src/version.c
src/vim.h

index b0e3a22b507419c7da4b581a5ba11709a0416c8b..0bbb1f467a5a45ab3ec01dbea089eff47d1d7b3c 100644 (file)
@@ -1649,6 +1649,7 @@ do_autochdir(void)
  * If (flags & BLN_CURBUF) is TRUE, may use current buffer.
  * If (flags & BLN_LISTED) is TRUE, add new buffer to buffer list.
  * If (flags & BLN_DUMMY) is TRUE, don't count it as a real buffer.
+ * If (flags & BLN_NEW) is TRUE, don't use an existing buffer.
  * This is the ONLY way to create a new buffer.
  */
 static int  top_file_num = 1;          /* highest file number */
@@ -1676,7 +1677,7 @@ buflist_new(
     if (sfname == NULL || mch_stat((char *)sfname, &st) < 0)
        st.st_dev = (dev_T)-1;
 #endif
-    if (ffname != NULL && !(flags & BLN_DUMMY) && (buf =
+    if (ffname != NULL && !(flags & (BLN_DUMMY | BLN_NEW)) && (buf =
 #ifdef UNIX
                buflist_findname_stat(ffname, &st)
 #else
index 973d234eac549db0e03ab170b24c2cd99b44222d..b1f7f1a605dad3b3f29b2027a2a484662afdf432 100644 (file)
@@ -1079,11 +1079,15 @@ find_buffer(char_u *name, int err)
     buf_T *save_curbuf = curbuf;
 
     if (name != NULL && *name != NUL)
+    {
        buf = buflist_findname(name);
+       if (buf == NULL)
+           buf = buflist_findname_exp(name);
+    }
     if (buf == NULL)
     {
        buf = buflist_new(name == NULL || *name == NUL ? NULL : name,
-                                              NULL, (linenr_T)0, BLN_LISTED);
+                                    NULL, (linenr_T)0, BLN_LISTED | BLN_NEW);
        if (buf == NULL)
            return NULL;
        buf_copy_options(buf, BCO_ENTER);
index c3afbad85b40d2b0f2b9e5be657541e4b0834820..85f57e58b79689ab6d851de24fe93257a62bd178 100644 (file)
@@ -753,6 +753,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1858,
 /**/
     1857,
 /**/
index a5d05a15f828749c056add7229fd60b20056d959..8ce11d684cda7f3ef2a258e3539f76fb490c0bc3 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -907,9 +907,10 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
 #define GETF_SWITCH    0x04    /* respect 'switchbuf' settings when jumping */
 
 /* Values for buflist_new() flags */
-#define BLN_CURBUF     1       /* May re-use curbuf for new buffer */
-#define BLN_LISTED     2       /* Put new buffer in buffer list */
-#define BLN_DUMMY      4       /* Allocating dummy buffer */
+#define BLN_CURBUF     1       /* may re-use curbuf for new buffer */
+#define BLN_LISTED     2       /* put new buffer in buffer list */
+#define BLN_DUMMY      4       /* allocating dummy buffer */
+#define BLN_NEW                8       /* create a new buffer */
 
 /* Values for in_cinkeys() */
 #define KEY_OPEN_FORW  0x101