diff options
author | Daniel Hahler <git@thequod.de> | 2019-06-09 15:37:34 +0200 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2019-08-07 14:21:23 +0200 |
commit | 2a421e52e48299dab6272cbac559c1b636e9337e (patch) | |
tree | 00200663dd1454b6c79600fc62b7d52722b7a798 /src/nvim/change.c | |
parent | e8cd2bcf3711498cb09b97df8be7566bace29003 (diff) | |
download | rneovim-2a421e52e48299dab6272cbac559c1b636e9337e.tar.gz rneovim-2a421e52e48299dab6272cbac559c1b636e9337e.tar.bz2 rneovim-2a421e52e48299dab6272cbac559c1b636e9337e.zip |
move change_warning
Diffstat (limited to 'src/nvim/change.c')
-rw-r--r-- | src/nvim/change.c | 75 |
1 files changed, 33 insertions, 42 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c index 0147ab41be..3604c96944 100644 --- a/src/nvim/change.c +++ b/src/nvim/change.c @@ -11,54 +11,45 @@ * If the file is readonly, give a warning message with the first change. * Don't do this for autocommands. * Doesn't use emsg(), because it flushes the macro buffer. - * If we have undone all changes b_changed will be FALSE, but "b_did_warn" - * will be TRUE. + * If we have undone all changes b_changed will be false, but "b_did_warn" + * will be true. * "col" is the column for the message; non-zero when in insert mode and * 'showmode' is on. * Careful: may trigger autocommands that reload the buffer. */ - void -change_warning(int col) +void change_warning(int col) { - static char *w_readonly = N_("W10: Warning: Changing a readonly file"); - - if (curbuf->b_did_warn == FALSE - && curbufIsChanged() == 0 - && !autocmd_busy - && curbuf->b_p_ro) - { - ++curbuf_lock; - apply_autocmds(EVENT_FILECHANGEDRO, NULL, NULL, FALSE, curbuf); - --curbuf_lock; - if (!curbuf->b_p_ro) - return; - - // Do what msg() does, but with a column offset if the warning should - // be after the mode message. - msg_start(); - if (msg_row == Rows - 1) - msg_col = col; - msg_source(HL_ATTR(HLF_W)); - msg_puts_attr(_(w_readonly), HL_ATTR(HLF_W) | MSG_HIST); -#ifdef FEAT_EVAL - set_vim_var_string(VV_WARNINGMSG, (char_u *)_(w_readonly), -1); -#endif - msg_clr_eos(); - (void)msg_end(); - if (msg_silent == 0 && !silent_mode -#ifdef FEAT_EVAL - && time_for_testing != 1 -#endif - ) - { - out_flush(); - ui_delay(1000L, TRUE); // give the user time to think about it - } - curbuf->b_did_warn = TRUE; - redraw_cmdline = FALSE; // don't redraw and erase the message - if (msg_row < Rows - 1) - showmode(); + static char *w_readonly = N_("W10: Warning: Changing a readonly file"); + + if (curbuf->b_did_warn == false + && curbufIsChanged() == 0 + && !autocmd_busy + && curbuf->b_p_ro) { + ++curbuf_lock; + apply_autocmds(EVENT_FILECHANGEDRO, NULL, NULL, FALSE, curbuf); + --curbuf_lock; + if (!curbuf->b_p_ro) + return; + // Do what msg() does, but with a column offset if the warning should + // be after the mode message. + msg_start(); + if (msg_row == Rows - 1) + msg_col = col; + msg_source(HL_ATTR(HLF_W)); + msg_ext_set_kind("wmsg"); + MSG_PUTS_ATTR(_(w_readonly), HL_ATTR(HLF_W) | MSG_HIST); + set_vim_var_string(VV_WARNINGMSG, _(w_readonly), -1); + msg_clr_eos(); + (void)msg_end(); + if (msg_silent == 0 && !silent_mode && ui_active()) { + ui_flush(); + os_delay(1000L, true); // give the user time to think about it } + curbuf->b_did_warn = true; + redraw_cmdline = FALSE; // don't redraw and erase the message + if (msg_row < Rows - 1) + showmode(); + } } /* |