To: vim_dev@googlegroups.com Subject: Patch 7.4.1858 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.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. Files: src/channel.c, src/buffer.c, src/vim.h *** ../vim-7.4.1857/src/channel.c 2016-05-29 16:16:39.381326993 +0200 --- src/channel.c 2016-05-29 16:18:11.985325720 +0200 *************** *** 1079,1089 **** buf_T *save_curbuf = curbuf; if (name != NULL && *name != NUL) buf = buflist_findname(name); if (buf == NULL) { buf = buflist_new(name == NULL || *name == NUL ? NULL : name, ! NULL, (linenr_T)0, BLN_LISTED); if (buf == NULL) return NULL; buf_copy_options(buf, BCO_ENTER); --- 1079,1093 ---- 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 | BLN_NEW); if (buf == NULL) return NULL; buf_copy_options(buf, BCO_ENTER); *** ../vim-7.4.1857/src/buffer.c 2016-05-24 16:07:35.031276986 +0200 --- src/buffer.c 2016-05-29 15:18:05.789375326 +0200 *************** *** 1649,1654 **** --- 1649,1655 ---- * 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,1682 **** if (sfname == NULL || mch_stat((char *)sfname, &st) < 0) st.st_dev = (dev_T)-1; #endif ! if (ffname != NULL && !(flags & BLN_DUMMY) && (buf = #ifdef UNIX buflist_findname_stat(ffname, &st) #else --- 1677,1683 ---- if (sfname == NULL || mch_stat((char *)sfname, &st) < 0) st.st_dev = (dev_T)-1; #endif ! if (ffname != NULL && !(flags & (BLN_DUMMY | BLN_NEW)) && (buf = #ifdef UNIX buflist_findname_stat(ffname, &st) #else *** ../vim-7.4.1857/src/vim.h 2016-05-01 13:09:53.866174520 +0200 --- src/vim.h 2016-05-29 15:18:58.641374599 +0200 *************** *** 907,915 **** #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 */ /* Values for in_cinkeys() */ #define KEY_OPEN_FORW 0x101 --- 907,916 ---- #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_NEW 8 /* create a new buffer */ /* Values for in_cinkeys() */ #define KEY_OPEN_FORW 0x101 *** ../vim-7.4.1857/src/version.c 2016-05-29 16:16:39.381326993 +0200 --- src/version.c 2016-05-29 16:22:42.437321999 +0200 *************** *** 755,756 **** --- 755,758 ---- { /* Add new patch number below this line */ + /**/ + 1858, /**/ -- How To Keep A Healthy Level Of Insanity: 8. Don't use any punctuation marks. /// 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 ///