diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-05-29 16:24:50 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-05-29 16:24:50 +0200 |
commit | b127cfd75f59e82580df395b6e2c009774644b16 (patch) | |
tree | 866c78d66b02901c6a13f96db41313d35f00994d | |
parent | 9f5842e63fc63d438cbffcec503e072a06f74dc2 (diff) | |
download | vim-git-b127cfd75f59e82580df395b6e2c009774644b16.tar.gz |
patch 7.4.1858v7.4.1858
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.
-rw-r--r-- | src/buffer.c | 3 | ||||
-rw-r--r-- | src/channel.c | 6 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim.h | 7 |
4 files changed, 13 insertions, 5 deletions
diff --git a/src/buffer.c b/src/buffer.c index b0e3a22b5..0bbb1f467 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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 diff --git a/src/channel.c b/src/channel.c index 973d234ea..b1f7f1a60 100644 --- a/src/channel.c +++ b/src/channel.c @@ -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); diff --git a/src/version.c b/src/version.c index c3afbad85..85f57e58b 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1858, +/**/ 1857, /**/ 1856, @@ -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 |