| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.103 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.103 |
| Problem: Changing 'fileformat' and then using ":w" in an empty file sets |
| the 'modified' option. |
| Solution: In unchanged() don't ignore 'ff' for an empty file. |
| Files: src/misc1.c, src/option.c, src/proto/option.pro, src/undo.c |
| |
| |
| |
| |
| |
| *** 2919,2925 **** |
| buf_T *buf; |
| int ff; /* also reset 'fileformat' */ |
| { |
| ! if (buf->b_changed || (ff && file_ff_differs(buf))) |
| { |
| buf->b_changed = 0; |
| ml_setflags(buf); |
| --- 2919,2925 ---- |
| buf_T *buf; |
| int ff; /* also reset 'fileformat' */ |
| { |
| ! if (buf->b_changed || (ff && file_ff_differs(buf, FALSE))) |
| { |
| buf->b_changed = 0; |
| ml_setflags(buf); |
| |
| |
| |
| *** 11296,11311 **** |
| * from when editing started (save_file_ff() called). |
| * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was |
| * changed and 'binary' is not set. |
| ! * Don't consider a new, empty buffer to be changed. |
| */ |
| int |
| ! file_ff_differs(buf) |
| buf_T *buf; |
| { |
| /* In a buffer that was never loaded the options are not valid. */ |
| if (buf->b_flags & BF_NEVERLOADED) |
| return FALSE; |
| ! if ((buf->b_flags & BF_NEW) |
| && buf->b_ml.ml_line_count == 1 |
| && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL) |
| return FALSE; |
| --- 11296,11314 ---- |
| * from when editing started (save_file_ff() called). |
| * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was |
| * changed and 'binary' is not set. |
| ! * When "ignore_empty" is true don't consider a new, empty buffer to be |
| ! * changed. |
| */ |
| int |
| ! file_ff_differs(buf, ignore_empty) |
| buf_T *buf; |
| + int ignore_empty; |
| { |
| /* In a buffer that was never loaded the options are not valid. */ |
| if (buf->b_flags & BF_NEVERLOADED) |
| return FALSE; |
| ! if (ignore_empty |
| ! && (buf->b_flags & BF_NEW) |
| && buf->b_ml.ml_line_count == 1 |
| && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL) |
| return FALSE; |
| |
| |
| |
| *** 54,59 **** |
| int option_was_set __ARGS((char_u *name)); |
| int can_bs __ARGS((int what)); |
| void save_file_ff __ARGS((buf_T *buf)); |
| ! int file_ff_differs __ARGS((buf_T *buf)); |
| int check_ff_value __ARGS((char_u *p)); |
| /* vim: set ft=c : */ |
| --- 54,59 ---- |
| int option_was_set __ARGS((char_u *name)); |
| int can_bs __ARGS((int what)); |
| void save_file_ff __ARGS((buf_T *buf)); |
| ! int file_ff_differs __ARGS((buf_T *buf, int ignore_empty)); |
| int check_ff_value __ARGS((char_u *p)); |
| /* vim: set ft=c : */ |
| |
| |
| |
| *** 3304,3310 **** |
| #ifdef FEAT_QUICKFIX |
| !bt_dontwrite(buf) && |
| #endif |
| ! (buf->b_changed || file_ff_differs(buf)); |
| } |
| |
| int |
| --- 3304,3310 ---- |
| #ifdef FEAT_QUICKFIX |
| !bt_dontwrite(buf) && |
| #endif |
| ! (buf->b_changed || file_ff_differs(buf, TRUE)); |
| } |
| |
| int |
| |
| *** 3314,3320 **** |
| #ifdef FEAT_QUICKFIX |
| !bt_dontwrite(curbuf) && |
| #endif |
| ! (curbuf->b_changed || file_ff_differs(curbuf)); |
| } |
| |
| #if defined(FEAT_EVAL) || defined(PROTO) |
| --- 3314,3320 ---- |
| #ifdef FEAT_QUICKFIX |
| !bt_dontwrite(curbuf) && |
| #endif |
| ! (curbuf->b_changed || file_ff_differs(curbuf, TRUE)); |
| } |
| |
| #if defined(FEAT_EVAL) || defined(PROTO) |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 103, |
| /**/ |
| |
| -- |
| In a world without fences, who needs Gates and Windows? |
| |
| /// 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 /// |