Mercurial > vim
diff src/fileio.c @ 10575:01a5f64a7a20 v8.0.0177
patch 8.0.0177: BufEnter autocommand not fired for a directory
commit https://github.com/vim/vim/commit/e13b9afe1283f5ae43232b5992372a0eb570666c
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 13 22:01:02 2017 +0100
patch 8.0.0177: BufEnter autocommand not fired for a directory
Problem: When opening a buffer on a directory and inside a try/catch then
the BufEnter event is not triggered.
Solution: Return NOTDONE from readfile() for a directory and deal with the
three possible return values. (Justin M. Keyes, closes #1375,
closes #1353)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 13 Jan 2017 22:15:03 +0100 |
parents | fb1fde4fcff7 |
children | 6a252c6afd5b |
line wrap: on
line diff
--- a/src/fileio.c +++ b/src/fileio.c @@ -210,7 +210,7 @@ filemess( * READ_KEEP_UNDO don't clear undo info or read it from a file * READ_FIFO read from fifo/socket instead of a file * - * return FAIL for failure, OK otherwise + * return FAIL for failure, NOTDONE for directory (failure), or OK */ int readfile( @@ -450,13 +450,18 @@ readfile( # endif ) { + int retval = FAIL; + if (S_ISDIR(perm)) + { filemess(curbuf, fname, (char_u *)_("is a directory"), 0); + retval = NOTDONE; + } else filemess(curbuf, fname, (char_u *)_("is not a file"), 0); msg_end(); msg_scroll = msg_save; - return FAIL; + return retval; } #endif #if defined(MSWIN) @@ -7136,7 +7141,7 @@ buf_reload(buf_T *buf, int orig_mode) #endif if (readfile(buf->b_ffname, buf->b_fname, (linenr_T)0, (linenr_T)0, - (linenr_T)MAXLNUM, &ea, flags) == FAIL) + (linenr_T)MAXLNUM, &ea, flags) != OK) { #if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL) if (!aborting())