home *** CD-ROM | disk | FTP | other *** search
- To: vim-dev@vim.org
- Subject: Patch 6.0.096
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- MIME-Version: 1.0
- Content-Type: text/plain; charset=ISO-8859-1
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 6.0.096
- Problem: When ":saveas fname" fails because the file already exists, the
- file name is changed anyway and a following ":w" will overwrite
- the file. (Eric Carlier)
- Solution: Don't change the file name if the file already exists.
- Files: src/ex_cmds.c
-
-
- *** ../vim60.95/src/ex_cmds.c Mon Nov 5 21:24:46 2001
- --- src/ex_cmds.c Wed Dec 12 21:32:55 2001
- ***************
- *** 2140,2191 ****
- }
- }
-
- ! if (eap->cmdidx == CMD_saveas && alt_buf != NULL)
- {
- #ifdef FEAT_AUTOCMD
- ! buf_T *was_curbuf = curbuf;
-
- ! apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf);
- ! if (curbuf != was_curbuf)
- ! {
- ! /* buffer changed, don't change name now */
- ! retval = FAIL;
- ! goto theend;
- ! }
- #endif
- ! /* Exchange the file names for the current and the alternate buffer.
- ! * This makes it look like we are now editing the buffer under the new
- ! * name. Must be done before buf_write(), because if there is no file
- ! * name and 'cpo' contains 'F', it will set the file name. */
- ! fname = alt_buf->b_fname;
- ! alt_buf->b_fname = curbuf->b_fname;
- ! curbuf->b_fname = fname;
- ! fname = alt_buf->b_ffname;
- ! alt_buf->b_ffname = curbuf->b_ffname;
- ! curbuf->b_ffname = fname;
- ! fname = alt_buf->b_sfname;
- ! alt_buf->b_sfname = curbuf->b_sfname;
- ! curbuf->b_sfname = fname;
- ! buf_name_changed();
- #ifdef FEAT_AUTOCMD
- ! apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, FALSE, curbuf);
- ! if (!alt_buf->b_p_bl)
- ! {
- ! alt_buf->b_p_bl = TRUE;
- ! apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, alt_buf);
- ! }
- ! if (curbuf != was_curbuf)
- ! {
- ! /* buffer changed, don't write the file */
- ! retval = FAIL;
- ! goto theend;
- ! }
- #endif
- ! }
-
- - if (check_overwrite(eap, curbuf, fname, ffname, other) == OK)
- retval = buf_write(curbuf, ffname, fname, eap->line1, eap->line2,
- eap, eap->append, eap->forceit, TRUE, FALSE);
-
- theend:
- #ifdef FEAT_BROWSE
- --- 2140,2194 ----
- }
- }
-
- ! if (check_overwrite(eap, curbuf, fname, ffname, other) == OK)
- {
- + if (eap->cmdidx == CMD_saveas && alt_buf != NULL)
- + {
- #ifdef FEAT_AUTOCMD
- ! buf_T *was_curbuf = curbuf;
-
- ! apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf);
- ! if (curbuf != was_curbuf)
- ! {
- ! /* buffer changed, don't change name now */
- ! retval = FAIL;
- ! goto theend;
- ! }
- #endif
- ! /* Exchange the file names for the current and the alternate
- ! * buffer. This makes it look like we are now editing the buffer
- ! * under the new name. Must be done before buf_write(), because
- ! * if there is no file name and 'cpo' contains 'F', it will set
- ! * the file name. */
- ! fname = alt_buf->b_fname;
- ! alt_buf->b_fname = curbuf->b_fname;
- ! curbuf->b_fname = fname;
- ! fname = alt_buf->b_ffname;
- ! alt_buf->b_ffname = curbuf->b_ffname;
- ! curbuf->b_ffname = fname;
- ! fname = alt_buf->b_sfname;
- ! alt_buf->b_sfname = curbuf->b_sfname;
- ! curbuf->b_sfname = fname;
- ! buf_name_changed();
- #ifdef FEAT_AUTOCMD
- ! apply_autocmds(EVENT_BUFFILEPOST, NULL, NULL, FALSE, curbuf);
- ! if (!alt_buf->b_p_bl)
- ! {
- ! alt_buf->b_p_bl = TRUE;
- ! apply_autocmds(EVENT_BUFADD, NULL, NULL, FALSE, alt_buf);
- ! }
- ! if (curbuf != was_curbuf)
- ! {
- ! /* buffer changed, don't write the file */
- ! retval = FAIL;
- ! goto theend;
- ! }
- #endif
- ! }
-
- retval = buf_write(curbuf, ffname, fname, eap->line1, eap->line2,
- eap, eap->append, eap->forceit, TRUE, FALSE);
- + }
-
- theend:
- #ifdef FEAT_BROWSE
- *** ../vim60.95/src/version.c Wed Dec 12 21:05:43 2001
- --- src/version.c Wed Dec 12 21:37:50 2001
- ***************
- *** 608,609 ****
- --- 608,611 ----
- { /* Add new patch number below this line */
- + /**/
- + 96,
- /**/
-
- --
- hundred-and-one symptoms of being an internet addict:
- 51. You put a pillow case over your laptop so your lover doesn't see it while
- you are pretending to catch your breath.
-
- /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net \\\
- ((( Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim )))
- \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///
-