Mercurial > vim
diff src/fileio.c @ 19836:c32b295af9c5 v8.2.0474
patch 8.2.0474: cannot use :write when using a plugin with BufWriteCmd
Commit: https://github.com/vim/vim/commit/0fff44152d06e6b662ad4bef172af07a041d2f3f
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Mar 29 16:06:29 2020 +0200
patch 8.2.0474: cannot use :write when using a plugin with BufWriteCmd
Problem: Cannot use :write when using a plugin with BufWriteCmd.
Solution: Reset BF_NOTEDITED after BufWriteCmd. (closes https://github.com/vim/vim/issues/5807)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 29 Mar 2020 16:15:03 +0200 |
parents | 22f0dda71638 |
children | 05b4efb062a7 |
line wrap: on
line diff
--- a/src/fileio.c +++ b/src/fileio.c @@ -261,11 +261,21 @@ readfile( { if (apply_autocmds_exarg(EVENT_BUFREADCMD, NULL, sfname, FALSE, curbuf, eap)) + { + int status = OK; #ifdef FEAT_EVAL - return aborting() ? FAIL : OK; -#else - return OK; + if (aborting()) + status = FAIL; #endif + // The BufReadCmd code usually uses ":read" to get the text and + // perhaps ":file" to change the buffer name. But we should + // consider this to work like ":edit", thus reset the + // BF_NOTEDITED flag. Then ":write" will work to overwrite the + // same file. + if (status == OK) + curbuf->b_flags &= ~BF_NOTEDITED; + return status; + } } else if (apply_autocmds_exarg(EVENT_FILEREADCMD, sfname, sfname, FALSE, NULL, eap))