aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-01-19 09:57:18 +0000
committerLewis Russell <lewis6991@gmail.com>2023-01-25 11:48:52 +0000
commit47145eb3cd1f120515b9531181f9db177a80fad3 (patch)
treec213250019afd481ef78323e12ab002b15b5d888
parenta22702b5d551a5be0e656282e168f3ba2efeb552 (diff)
downloadrneovim-47145eb3cd1f120515b9531181f9db177a80fad3.tar.gz
rneovim-47145eb3cd1f120515b9531181f9db177a80fad3.tar.bz2
rneovim-47145eb3cd1f120515b9531181f9db177a80fad3.zip
refactor(optionstr.c): break up did_set_string_option 8
-rw-r--r--src/nvim/optionstr.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c
index b8b098d826..bb83cabb73 100644
--- a/src/nvim/optionstr.c
+++ b/src/nvim/optionstr.c
@@ -810,6 +810,25 @@ static void did_set_keymap(buf_T *buf, char **varp, int opt_flags, int *value_ch
}
}
+static void did_set_fileformat(buf_T *buf, char **varp, const char *oldval, int opt_flags,
+ char **errmsg)
+{
+ if (!MODIFIABLE(buf) && !(opt_flags & OPT_GLOBAL)) {
+ *errmsg = e_modifiable;
+ } else if (check_opt_strings(*varp, p_ff_values, false) != OK) {
+ *errmsg = e_invarg;
+ } else {
+ redraw_titles();
+ // update flag in swap file
+ ml_setflags(buf);
+ // Redraw needed when switching to/from "mac": a CR in the text
+ // will be displayed differently.
+ if (get_fileformat(buf) == EOL_MAC || *oldval == 'm') {
+ redraw_buf_later(buf, UPD_NOT_VALID);
+ }
+ }
+}
+
/// Handle string options that need some action to perform when changed.
/// The new value must be allocated.
///
@@ -944,20 +963,7 @@ char *did_set_string_option(int opt_idx, char **varp, char *oldval, char *errbuf
} else if (varp == &curbuf->b_p_keymap) {
did_set_keymap(curbuf, varp, opt_flags, value_checked, &errmsg);
} else if (gvarp == &p_ff) { // 'fileformat'
- if (!MODIFIABLE(curbuf) && !(opt_flags & OPT_GLOBAL)) {
- errmsg = e_modifiable;
- } else if (check_opt_strings(*varp, p_ff_values, false) != OK) {
- errmsg = e_invarg;
- } else {
- redraw_titles();
- // update flag in swap file
- ml_setflags(curbuf);
- // Redraw needed when switching to/from "mac": a CR in the text
- // will be displayed differently.
- if (get_fileformat(curbuf) == EOL_MAC || *oldval == 'm') {
- redraw_curbuf_later(UPD_NOT_VALID);
- }
- }
+ did_set_fileformat(curbuf, varp, oldval, opt_flags, &errmsg);
} else if (varp == &p_ffs) { // 'fileformats'
if (check_opt_strings(p_ffs, p_ff_values, true) != OK) {
errmsg = e_invarg;