summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2023-02-20 12:16:39 +0000
committerBram Moolenaar <Bram@vim.org>2023-02-20 12:16:39 +0000
commitaf93691b53f38784efce0b93fe7644c44a7e382e (patch)
tree74e8f31e222aed907e80c4dc5b0bded5f7400537
parent997b8a015cd39141866e953651d55c705275cbd6 (diff)
downloadvim-git-af93691b53f38784efce0b93fe7644c44a7e382e.tar.gz
patch 9.0.1330: handling new value of an option has a long "else if" chainv9.0.1330
Problem: Handling new value of an option has a long "else if" chain. Solution: Use a function pointer. (Yegappan Lakshmanan, closes #12015)
-rw-r--r--src/buffer.c2
-rw-r--r--src/clipboard.c2
-rw-r--r--src/evalfunc.c4
-rw-r--r--src/ex_cmds.c2
-rw-r--r--src/ex_docmd.c2
-rw-r--r--src/ex_getln.c2
-rw-r--r--src/gui_xim.c16
-rw-r--r--src/hardcopy.c4
-rw-r--r--src/if_mzsch.c6
-rw-r--r--src/insexpand.c6
-rw-r--r--src/map.c14
-rw-r--r--src/ops.c2
-rw-r--r--src/option.c727
-rw-r--r--src/option.h2
-rw-r--r--src/optiondefs.h1198
-rw-r--r--src/optionstr.c819
-rw-r--r--src/proto/clipboard.pro2
-rw-r--r--src/proto/ex_getln.pro2
-rw-r--r--src/proto/gui_xim.pro4
-rw-r--r--src/proto/hardcopy.pro4
-rw-r--r--src/proto/if_mzsch.pro2
-rw-r--r--src/proto/insexpand.pro6
-rw-r--r--src/proto/map.pro2
-rw-r--r--src/proto/ops.pro2
-rw-r--r--src/proto/option.pro65
-rw-r--r--src/proto/optionstr.pro73
-rw-r--r--src/proto/quickfix.pro2
-rw-r--r--src/proto/spell.pro2
-rw-r--r--src/proto/tag.pro2
-rw-r--r--src/quickfix.c2
-rw-r--r--src/spell.c6
-rw-r--r--src/spellfile.c2
-rw-r--r--src/spellsuggest.c2
-rw-r--r--src/structs.h30
-rw-r--r--src/tag.c2
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h6
37 files changed, 1518 insertions, 1510 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 8fd81be86..cb7bdf445 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1971,7 +1971,7 @@ enter_buffer(buf_T *buf)
// May need to set the spell language. Can only do this after the buffer
// has been properly setup.
if (!curbuf->b_help && curwin->w_p_spell && *curwin->w_s->b_p_spl != NUL)
- (void)did_set_spelllang(curwin);
+ (void)parse_spelllang(curwin);
#endif
#ifdef FEAT_VIMINFO
curbuf->b_last_used = vim_time();
diff --git a/src/clipboard.c b/src/clipboard.c
index e140113ff..b09c678c2 100644
--- a/src/clipboard.c
+++ b/src/clipboard.c
@@ -1253,7 +1253,7 @@ clip_gen_owner_exists(Clipboard_T *cbd UNUSED)
* Return an error message or NULL for success.
*/
char *
-check_clipboard_option(void)
+did_set_clipboard(optset_T *args UNUSED)
{
int new_unnamed = 0;
int new_autoselect_star = FALSE;
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 7f6cbac04..cf30ed762 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -9940,7 +9940,7 @@ f_spellbadword(typval_T *argvars UNUSED, typval_T *rettv)
if (!curwin->w_p_spell)
{
- did_set_spelllang(curwin);
+ parse_spelllang(curwin);
curwin->w_p_spell = TRUE;
}
@@ -10030,7 +10030,7 @@ f_spellsuggest(typval_T *argvars UNUSED, typval_T *rettv)
if (!curwin->w_p_spell)
{
- did_set_spelllang(curwin);
+ parse_spelllang(curwin);
curwin->w_p_spell = TRUE;
}
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 7fd095268..0d8398062 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3142,7 +3142,7 @@ do_ecmd(
// If the window options were changed may need to set the spell language.
// Can only do this after the buffer has been properly setup.
if (did_get_winopts && curwin->w_p_spell && *curwin->w_s->b_p_spl != NUL)
- (void)did_set_spelllang(curwin);
+ (void)parse_spelllang(curwin);
#endif
if (command == NULL)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index e51f84997..be0e3465d 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1570,7 +1570,7 @@ getline_cookie(
#endif
}
-#if defined(FEAT_EVAL) || defined(PROT)
+#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Get the next line source line without advancing.
*/
diff --git a/src/ex_getln.c b/src/ex_getln.c
index b2bf4ed32..a938bd6b6 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4366,7 +4366,7 @@ get_list_range(char_u **str, int *num1, int *num2)
* Returns NULL if value is OK, error message otherwise.
*/
char *
-check_cedit(void)
+did_set_cedit(optset_T *args UNUSED)
{
int n;
diff --git a/src/gui_xim.c b/src/gui_xim.c
index 86273b5c3..0d7b56e56 100644
--- a/src/gui_xim.c
+++ b/src/gui_xim.c
@@ -13,6 +13,18 @@
#include "vim.h"
+#if !defined(GTK_CHECK_VERSION)
+# define GTK_CHECK_VERSION(a, b, c) 0
+#endif
+#if !defined(FEAT_GUI_GTK) && defined(PROTO)
+typedef int GtkWidget;
+typedef int GtkIMContext;
+typedef int gchar;
+typedef int gpointer;
+typedef int PangoAttrIterator;
+typedef int GdkEventKey;
+#endif
+
#if defined(FEAT_GUI_GTK) && defined(FEAT_XIM)
# if GTK_CHECK_VERSION(3,0,0)
# include <gdk/gdkkeysyms-compat.h>
@@ -74,7 +86,7 @@ static callback_T imaf_cb; // 'imactivatefunc' callback function
static callback_T imsf_cb; // 'imstatusfunc' callback function
char *
-set_imactivatefunc_option(void)
+did_set_imactivatefunc(optset_T *args UNUSED)
{
if (option_set_callback_func(p_imaf, &imaf_cb) == FAIL)
return e_invalid_argument;
@@ -83,7 +95,7 @@ set_imactivatefunc_option(void)
}
char *
-set_imstatusfunc_option(void)
+did_set_imstatusfunc(optset_T *args UNUSED)
{
if (option_set_callback_func(p_imsf, &imsf_cb) == FAIL)
return e_invalid_argument;
diff --git a/src/hardcopy.c b/src/hardcopy.c
index da3879b8c..f6be017c3 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -144,7 +144,7 @@ static colnr_T hardcopy_line(prt_settings_T *psettings, int page_line, prt_pos_T
* Returns an error message or NULL;
*/
char *
-parse_printoptions(void)
+parse_printoptions(optset_T *args UNUSED)
{
return parse_list_options(p_popt, printer_opts, OPT_PRINT_NUM_OPTIONS);
}
@@ -155,7 +155,7 @@ parse_printoptions(void)
* Returns an error message or NULL;
*/
char *
-parse_printmbfont(void)
+parse_printmbfont(optset_T *args UNUSED)
{
return parse_list_options(p_pmfn, mbfont_opts, OPT_MBFONT_NUM_OPTIONS);
}
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
index 749223766..39d1530fe 100644
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -886,13 +886,15 @@ remove_timer(void)
timer_id = 0;
}
- void
-mzvim_reset_timer(void)
+ char *
+did_set_mzquantum(void)
{
+ // reset timer
if (timer_id != 0)
remove_timer();
if (mz_threads_allow && p_mzq > 0 && gui.in_use)
setup_timer();
+ return NULL;
}
#endif // MZSCHEME_GUI_THREADS
diff --git a/src/insexpand.c b/src/insexpand.c
index a8d986a2c..779bf5eeb 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -2546,7 +2546,7 @@ copy_global_to_buflocal_cb(callback_T *globcb, callback_T *bufcb)
* lambda expression.
*/
char *
-set_completefunc_option(void)
+did_set_completefunc(optset_T *args UNUSED)
{
if (option_set_callback_func(curbuf->b_p_cfu, &cfu_cb) == FAIL)
return e_invalid_argument;
@@ -2575,7 +2575,7 @@ set_buflocal_cfu_callback(buf_T *buf UNUSED)
* lambda expression.
*/
char *
-set_omnifunc_option(void)
+did_set_omnifunc(optset_T *args UNUSED)
{
if (option_set_callback_func(curbuf->b_p_ofu, &ofu_cb) == FAIL)
return e_invalid_argument;
@@ -2603,7 +2603,7 @@ set_buflocal_ofu_callback(buf_T *buf UNUSED)
* lambda expression.
*/
char *
-set_thesaurusfunc_option(void)
+did_set_thesaurusfunc(optset_T *args UNUSED)
{
int retval;
diff --git a/src/map.c b/src/map.c
index 9a6cdb143..92f76512a 100644
--- a/src/map.c
+++ b/src/map.c
@@ -3034,8 +3034,8 @@ langmap_init(void)
* Called when langmap option is set; the language map can be
* changed at any time!
*/
- void
-langmap_set(void)
+ char *
+did_set_langmap(optset_T *args UNUSED)
{
char_u *p;
char_u *p2;
@@ -3088,9 +3088,11 @@ langmap_set(void)
}
if (to == NUL)
{
+ // TODO: Need to use errbuf argument for this error message
+ // and return it.
semsg(_(e_langmap_matching_character_missing_for_str),
transchar(from));
- return;
+ return NULL;
}
if (from >= 256)
@@ -3110,8 +3112,10 @@ langmap_set(void)
{
if (p[0] != ',')
{
+ // TODO: Need to use errbuf argument for this error
+ // message and return it.
semsg(_(e_langmap_extra_characters_after_semicolon_str), p);
- return;
+ return NULL;
}
++p;
}
@@ -3120,6 +3124,8 @@ langmap_set(void)
}
}
}
+
+ return NULL;
}
#endif
diff --git a/src/ops.c b/src/ops.c
index 138edc73f..01d2e95f8 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -3406,7 +3406,7 @@ static callback_T opfunc_cb;
* Returns OK or FAIL.
*/
char *
-set_operatorfunc_option(void)
+did_set_operatorfunc(optset_T *args UNUSED)
{
if (option_set_callback_func(p_opfunc, &opfunc_cb) == FAIL)
return e_invalid_argument;
diff --git a/src/option.c b/src/option.c
index 2332f2a38..d93d3859f 100644
--- a/src/option.c
+++ b/src/option.c
@@ -952,13 +952,13 @@ set_init_2(void)
#endif
#ifdef CURSOR_SHAPE
- parse_shape_opt(SHAPE_CURSOR); // set cursor shapes from 'guicursor'
+ parse_shape_opt(SHAPE_CURSOR); // set cursor shapes from 'guicursor'
#endif
#ifdef FEAT_MOUSESHAPE
- parse_shape_opt(SHAPE_MOUSE); // set mouse shapes from 'mouseshape'
+ parse_shape_opt(SHAPE_MOUSE); // set mouse shapes from 'mouseshape'
#endif
#ifdef FEAT_PRINTER
- (void)parse_printoptions(); // parse 'printoptions' default value
+ (void)parse_printoptions(NULL); // parse 'printoptions' default value
#endif
}
@@ -2032,7 +2032,7 @@ do_set_option_string(
// options. Note: when setting 'syntax' or 'filetype' autocommands may
// be triggered that can cause havoc.
*errmsg = did_set_string_option(
- opt_idx, (char_u **)varp, oldval, errbuf,
+ opt_idx, (char_u **)varp, oldval, newval, errbuf,
opt_flags, value_checked);
secure = secure_saved;
@@ -2844,10 +2844,10 @@ didset_options(void)
(void)did_set_spell_option(TRUE);
#endif
// set cedit_key
- (void)check_cedit();
+ (void)did_set_cedit(NULL);
#ifdef FEAT_LINEBREAK
// initialize the table for 'breakat'.
- fill_breakat_flags();
+ did_set_breakat(NULL);
#endif
after_copy_winopt(curwin);
}
@@ -2872,7 +2872,7 @@ didset_options2(void)
#ifdef FEAT_CLIPBOARD
// Parse default for 'clipboard'
- (void)check_clipboard_option();
+ (void)did_set_clipboard(NULL);
#endif
#ifdef FEAT_VARTABS
vim_free(curbuf->b_p_vsts_array);
@@ -3140,44 +3140,47 @@ apply_optionset_autocmd(
/*
* Process the updated 'compatible' option value.
*/
- static void
-did_set_compatible(void)
+ char *
+did_set_compatible(optset_T *args UNUSED)
{
compatible_set();
+ return NULL;
}
-#ifdef FEAT_LANGMAP
+#if defined(FEAT_LANGMAP) || defined(PROTO)
/*
* Process the updated 'langremap' option value.
*/
- static void
-did_set_langremap(void)
+ char *
+did_set_langremap(optset_T *args UNUSED)
{
// 'langremap' -> !'langnoremap'
p_lnr = !p_lrm;
+ return NULL;
}
/*
* Process the updated 'langnoremap' option value.
*/
- static void
-did_set_langnoremap(void)
+ char *
+did_set_langnoremap(optset_T *args UNUSED)
{
// 'langnoremap' -> !'langremap'
p_lrm = !p_lnr;
+ return NULL;
}
#endif
-#ifdef FEAT_PERSISTENT_UNDO
+#if defined(FEAT_PERSISTENT_UNDO) || defined(PROTO)
/*
* Process the updated 'undofile' option value.
*/
- static void
-did_set_undofile(int opt_flags)
+ char *
+did_set_undofile(optset_T *args)
{
// Only take action when the option was set.
if (!curbuf->b_p_udf && !p_udf)
- return;
+ return NULL;
// When reset we do not delete the undo file, the option may be set again
// without making any changes in between.
@@ -3191,7 +3194,8 @@ did_set_undofile(int opt_flags)
// if one exists, the buffer wasn't changed and the buffer was
// loaded
if ((curbuf == save_curbuf
- || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
+ || (args->os_flags & OPT_GLOBAL)
+ || args->os_flags == 0)
&& !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL)
{
#ifdef FEAT_CRYPT
@@ -3203,17 +3207,19 @@ did_set_undofile(int opt_flags)
}
}
curbuf = save_curbuf;
+
+ return NULL;
}
#endif
/*
* Process the updated 'readonly' option value.
*/
- static void
-did_set_readonly(int opt_flags)
+ char *
+did_set_readonly(optset_T *args)
{
// when 'readonly' is reset globally, also reset readonlymode
- if (!curbuf->b_p_ro && (opt_flags & OPT_LOCAL) == 0)
+ if (!curbuf->b_p_ro && (args->os_flags & OPT_LOCAL) == 0)
readonlymode = FALSE;
// when 'readonly' is set may give W10 again
@@ -3221,25 +3227,28 @@ did_set_readonly(int opt_flags)
curbuf->b_did_warn = FALSE;
redraw_titles();
+
+ return NULL;
}
-#ifdef FEAT_GUI
+#if defined(FEAT_GUI) || defined(PROTO)
/*
* Process the updated 'mousehide' option value.
*/
- static void
-did_set_mousehide(void)
+ char *
+did_set_mousehide(optset_T *args UNUSED)
{
if (!p_mh)
gui_mch_mousehide(FALSE);
+ return NULL;
}
#endif
/*
* Process the updated 'modifiable' option value.
*/
- static char *
-did_set_modifiable(int *doskip UNUSED)
+ char *
+did_set_modifiable(optset_T *args UNUSED)
{
// when 'modifiable' is changed, redraw the window title
@@ -3249,7 +3258,7 @@ did_set_modifiable(int *doskip UNUSED)
&& curbuf->b_term != NULL && !term_is_finished(curbuf))))
{
curbuf->b_p_ma = FALSE;
- *doskip = TRUE;
+ args->os_doskip = TRUE;
return e_cannot_make_terminal_with_running_job_modifiable;
}
# endif
@@ -3262,41 +3271,45 @@ did_set_modifiable(int *doskip UNUSED)
* Process the updated 'endoffile' or 'endofline' or 'fixendofline' or 'bomb'
* option value.
*/
- static void
-did_set_eof_eol_fixeol_bomb(void)
+ char *
+did_set_eof_eol_fixeol_bomb(optset_T *args UNUSED)
{
// redraw the window title and tab page text
redraw_titles();
+ return NULL;
}
/*
* Process the updated 'binary' option value.
*/
- static void
-did_set_binary(int opt_flags, long old_value)
+ char *
+did_set_binary(optset_T *args)
{
// when 'bin' is set also set some other options
- set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
+ set_options_bin(args->os_oldval.boolean, curbuf->b_p_bin, args->os_flags);
redraw_titles();
+
+ return NULL;
}
/*
* Process the updated 'buflisted' option value.
*/
- static void
-did_set_buflisted(long old_value)
+ char *
+did_set_buflisted(optset_T *args)
{
// when 'buflisted' changes, trigger autocommands
- if (old_value != curbuf->b_p_bl)
+ if (args->os_oldval.boolean != curbuf->b_p_bl)
apply_autocmds(curbuf->b_p_bl ? EVENT_BUFADD : EVENT_BUFDELETE,
NULL, NULL, TRUE, curbuf);
+ return NULL;
}
/*
* Process the updated 'swapfile' option value.
*/
- static void
-did_set_swapfile(void)
+ char *
+did_set_swapfile(optset_T *args UNUSED)
{
// when 'swf' is set, create swapfile, when reset remove swapfile
if (curbuf->b_p_swf && p_uc)
@@ -3305,13 +3318,14 @@ did_set_swapfile(void)
// no need to reset curbuf->b_may_swap, ml_open_file() will check
// buf->b_p_swf
mf_close_file(curbuf, TRUE); // remove the swap file
+ return NULL;
}
/*
* Process the updated 'terse' option value.
*/
- static void
-did_set_terse(void)
+ char *
+did_set_terse(optset_T *args UNUSED)
{
char_u *p;
@@ -3328,23 +3342,25 @@ did_set_terse(void)
// remove 's' from p_shm
else if (!p_terse && p != NULL)
STRMOVE(p, p + 1);
+ return NULL;
}
/*
* Process the updated 'paste' option value.
*/
- static void
-did_set_paste(void)
+ char *
+did_set_paste(optset_T *args UNUSED)
{
// when 'paste' is set or reset also change other options
paste_option_changed();
+ return NULL;
}
/*
* Process the updated 'insertmode' option value.
*/
- static void
-did_set_insertmode(long old_value)
+ char *
+did_set_insertmode(optset_T *args)
{
// when 'insertmode' is set from an autocommand need to do work here
if (p_im)
@@ -3354,7 +3370,7 @@ did_set_insertmode(long old_value)
stop_insert_mode = FALSE;
}
// only reset if it was set previously
- else if (old_value)
+ else if (args->os_oldval.boolean)
{
need_start_insertmode = FALSE;
stop_insert_mode = TRUE;
@@ -3362,51 +3378,57 @@ did_set_insertmode(long old_value)
clear_cmdline = TRUE; // remove "(insert)"
restart_edit = 0;
}
+
+ return NULL;
}
/*
* Process the updated 'ignorecase' option value.
*/
- static void
-did_set_ignorecase(void)
+ char *
+did_set_ignorecase(optset_T *args UNUSED)
{
// when 'ignorecase' is set or reset and 'hlsearch' is set, redraw
if (p_hls)
redraw_all_later(UPD_SOME_VALID);
+ return NULL;
}
-#ifdef FEAT_SEARCH_EXTRA
+#if defined(FEAT_SEARCH_EXTRA) || defined(PROTO)
/*
* Process the updated 'hlsearch' option value.
*/
- static void
-did_set_hlsearch(void)
+ char *
+did_set_hlsearch(optset_T *args UNUSED)
{
// when 'hlsearch' is set or reset: reset no_hlsearch
set_no_hlsearch(FALSE);
+ return NULL;
}
#endif
/*
* Process the updated 'scrollbind' option value.
*/
- static void
-did_set_scrollbind(void)
+ char *
+did_set_scrollbind(optset_T *args UNUSED)
{
// when 'scrollbind' is set: snapshot the current position to avoid a jump
// at the end of normal_cmd()
if (!curwin->w_p_scb)
- return;
+ return NULL;
+
do_check_scrollbind(FALSE);
curwin->w_scbind_pos = curwin->w_topline;
+ return NULL;
}
#ifdef FEAT_QUICKFIX
/*
* Process the updated 'previewwindow' option value.
*/
- static char *
-did_set_previewwindow(int *doskip)
+ char *
+did_set_previewwindow(optset_T *args)
{
if (!curwin->w_p_pvw)
return NULL;
@@ -3418,7 +3440,7 @@ did_set_previewwindow(int *doskip)
if (win->w_p_pvw && win != curwin)
{
curwin->w_p_pvw = FALSE;
- *doskip = TRUE;
+ args->os_doskip = TRUE;
return e_preview_window_already_exists;
}
@@ -3429,75 +3451,84 @@ did_set_previewwindow(int *doskip)
/*
* Process the updated 'smoothscroll' option value.
*/
- static void
-did_set_smoothscroll(void)
+ char *
+did_set_smoothscroll(optset_T *args UNUSED)
{
if (curwin->w_p_sms)
- return;
+ return NULL;
+
curwin->w_skipcol = 0;
changed_line_abv_curs();
+ return NULL;
}
/*
* Process the updated 'textmode' option value.
*/
- static void
-did_set_textmode(int opt_flags)
+ char *
+did_set_textmode(optset_T *args)
{
// when 'textmode' is set or reset also change 'fileformat'
- set_fileformat(curbuf->b_p_tx ? EOL_DOS : EOL_UNIX, opt_flags);
+ set_fileformat(curbuf->b_p_tx ? EOL_DOS : EOL_UNIX, args->os_flags);
+
+ return NULL;
}
/*
* Process the updated 'textauto' option value.
*/
- static void
-did_set_textauto(int opt_flags)
+ char *
+did_set_textauto(optset_T *args)
{
// when 'textauto' is set or reset also change 'fileformats'
set_string_option_direct((char_u *)"ffs", -1,
p_ta ? (char_u *)DFLT_FFS_VIM : (char_u *)"",
- OPT_FREE | opt_flags, 0);
+ OPT_FREE | args->os_flags, 0);
+
+ return NULL;
}
/*
* Process the updated 'lisp' option value.
*/
- static void
-did_set_lisp(void)
+ char *
+did_set_lisp(optset_T *args UNUSED)
{
// When 'lisp' option changes include/exclude '-' in keyword characters.
(void)buf_init_chartab(curbuf, FALSE); // ignore errors
+ return NULL;
}
/*
* Process the updated 'title' or the 'icon' option value.
*/
- static void
-did_set_title_icon(void)
+ char *
+did_set_title_icon(optset_T *args UNUSED)
{
// when 'title' changed, may need to change the title; same for 'icon'
did_set_title();
+ return NULL;
}
/*
* Process the updated 'modified' option value.
*/
- static void
-did_set_modified(long value)
+ char *
+did_set_modified(optset_T *args)
{
- if (!value)
+ if (!args->os_newval.boolean)
save_file_ff(curbuf); // Buffer is unchanged
redraw_titles();
- modified_was_set = value;
+ modified_was_set = args->os_newval.boolean;
+ return NULL;
}
-#ifdef BACKSLASH_IN_FILENAME
+#if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
/*
* Process the updated 'shellslash' option value.
*/
- static void
-did_set_shellslash(void)
+ char *
+did_set_shellslash(optset_T *args UNUSED)
{
if (p_ssl)
{
@@ -3518,90 +3549,101 @@ did_set_shellslash(void)
# ifdef FEAT_EVAL
scriptnames_slash_adjust();
# endif
+ return NULL;
}
#endif
/*
* Process the updated 'wrap' option value.
*/
- static void
-did_set_wrap(void)
+ char *
+did_set_wrap(optset_T *args UNUSED)
{
// If 'wrap' is set, set w_leftcol to zero.
if (curwin->w_p_wrap)
curwin->w_leftcol = 0;
+ return NULL;
}
/*
* Process the updated 'equalalways' option value.
*/
- static void
-did_set_equalalways(long old_value)
+ char *
+did_set_equalalways(optset_T *args)
{
- if (p_ea && !old_value)
+ if (p_ea && !args->os_oldval.boolean)
win_equal(curwin, FALSE, 0);
+
+ return NULL;
}
/*
* Process the updated 'weirdinvert' option value.
*/
- static void
-did_set_weirdinvert(long old_value)
+ char *
+did_set_weirdinvert(optset_T *args)
{
// When 'weirdinvert' changed, set/reset 't_xs'.
// Then set 'weirdinvert' according to value of 't_xs'.
- if (p_wiv && !old_value)
+ if (p_wiv && !args->os_oldval.boolean)
T_XS = (char_u *)"y";
- else if (!p_wiv && old_value)
+ else if (!p_wiv && args->os_oldval.boolean)
T_XS = empty_option;
p_wiv = (*T_XS != NUL);
+
+ return NULL;
}
-#ifdef FEAT_BEVAL_GUI
+#if defined(FEAT_BEVAL_GUI) || defined(PROTO)
/*
* Process the updated 'ballooneval' option value.
*/
- static void
-did_set_ballooneval(long old_value)
+ char *
+did_set_ballooneval(optset_T *args)
{
if (balloonEvalForTerm)
- return;
- if (p_beval && !old_value)
+ return NULL;
+
+ if (p_beval && !args->os_oldval.boolean)
gui_mch_enable_beval_area(balloonEval);
- else if (!p_beval && old_value)
+ else if (!p_beval && args->os_oldval.boolean)
gui_mch_disable_beval_area(balloonEval);
+
+ return NULL;
}
#endif
-#ifdef FEAT_BEVAL_TERM
+#if defined(FEAT_BEVAL_TERM) || defined(PROTO)
/*
* Process the updated 'balloonevalterm' option value.
*/
- static void
-did_set_balloonevalterm(void)
+ char *
+did_set_balloonevalterm(optset_T *args UNUSED)
{
mch_bevalterm_changed();
+ return NULL;
}
#endif
-#ifdef FEAT_AUTOCHDIR
+#if defined(FEAT_AUTOCHDIR) || defined(PROTO)
/*
* Process the updated 'autochdir' option value.
*/
- static void
-did_set_autochdir(void)
+ char *
+did_set_autochdir(optset_T *args UNUSED)
{
// Change directories when the 'acd' option is set now.
DO_AUTOCHDIR;
+ return NULL;
}
#endif
-#ifdef FEAT_DIFF
+#if defined(FEAT_DIFF) || defined(PROTO)
/*
* Process the updated 'diff' option value.
*/
- static void
-did_set_diff(void)
+ char *
+did_set_diff(optset_T *args UNUSED)
{
// May add or remove the buffer from the list of diff buffers.
diff_buf_adjust(curwin);
@@ -3609,15 +3651,16 @@ did_set_diff(void)
if (foldmethodIsDiff(curwin))
foldUpdateAll(curwin);
# endif
+ return NULL;
}
#endif
-#ifdef HAVE_INPUT_METHOD
+#if defined(HAVE_INPUT_METHOD) || defined(PROTO)
/*
* Process the updated 'imdisable' option value.
*/
- static void
-did_set_imdisable(void)
+ char *
+did_set_imdisable(optset_T *args UNUSED)
{
// Only de-activate it here, it will be enabled when changing mode.
if (p_imdisable)
@@ -3626,29 +3669,30 @@ did_set_imdisable(void)
// When the option is set from an autocommand, it may need to take
// effect right away.
im_set_active(curbuf->b_p_iminsert == B_IMODE_IM);
+ return NULL;
}
#endif
-#ifdef FEAT_SPELL
+#if defined(FEAT_SPELL) || defined(PROTO)
/*
* Process the updated 'spell' option value.
*/
- static char *
-did_set_spell(void)
+ char *
+did_set_spell(optset_T *args UNUSED)
{
if (curwin->w_p_spell)
- return did_set_spelllang(curwin);
+ return parse_spelllang(curwin);
return NULL;
}
#endif
-#ifdef FEAT_ARABIC
+#if defined(FEAT_ARABIC) || defined(PROTO)
/*
* Process the updated 'arabic' option value.
*/
- static char *
-did_set_arabic(void)
+ char *
+did_set_arabic(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -3728,13 +3772,13 @@ did_set_arabic(void)
}
#endif
-#if defined(FEAT_SIGNS) && defined(FEAT_GUI)
/*
* Process the updated 'number' or 'relativenumber' option value.
*/
- static void
-did_set_number_relativenumber(char_u *varp)
+ char *
+did_set_number_relativenumber(optset_T *args UNUSED)
{
+#if (defined(FEAT_SIGNS) && defined(FEAT_GUI)) || defined(PROTO)
if (gui.in_use
&& (*curwin->w_p_scl == 'n' && *(curwin->w_p_scl + 1) == 'u')
&& curbuf->b_signlist != NULL)
@@ -3745,15 +3789,16 @@ did_set_number_relativenumber(char_u *varp)
// number column. If the 'number' option is set and only the
// 'relativenumber' option is toggled, then don't refresh the screen
// (optimization).
- if (!(curwin->w_p_nu && ((int *)varp == &curwin->w_p_rnu)))
+ if (!(curwin->w_p_nu && ((int *)args->os_varp == &curwin->w_p_rnu)))
redraw_all_later(UPD_CLEAR);
}
-}
#endif
+ return NULL;
+}
#ifdef FEAT_TERMGUICOLORS
- static char *
-did_set_termguicolors(int *doskip UNUSED)
+ char *
+did_set_termguicolors(optset_T *args UNUSED)
{
# ifdef FEAT_VTP
// Do not turn on 'tgc' when 24-bit colors are not supported.
@@ -3764,7 +3809,7 @@ did_set_termguicolors(int *doskip UNUSED)
!has_vtp_working())
{
p_tgc = 0;
- *doskip = TRUE;
+ args->os_doskip = TRUE;
return e_24_bit_colors_are_not_supported_on_this_environment;
}
if (is_term_win32())
@@ -3794,133 +3839,6 @@ did_set_termguicolors(int *doskip UNUSED)
#endif
/*
- * When some boolean options are changed, need to take some action.
- */
- static char *
-did_set_bool_option(
- char_u *varp,
- int opt_flags,
- long value,
- long old_value,
- int *doskip)
-{
- char *errmsg = NULL;
-
- if ((int *)varp == &p_cp) // 'compatible'
- did_set_compatible();
-#ifdef FEAT_LANGMAP
- else if ((int *)varp == &p_lrm) // 'langremap'
- did_set_langremap();
- else if ((int *)varp == &p_lnr) // 'langnoremap'
- did_set_langnoremap();
-#endif
-#ifdef FEAT_PERSISTENT_UNDO
- else if ((int *)varp == &curbuf->b_p_udf // buffer local 'undofile'
- || (int *)varp == &p_udf) // 'undofile'
- did_set_undofile(opt_flags);
-#endif
- else if ((int *)varp == &curbuf->b_p_ro) // 'readonly'
- did_set_readonly(opt_flags);
-#ifdef FEAT_GUI
- else if ((int *)varp == &p_mh) // 'mousehide'
- did_set_mousehide();
-#endif
- else if ((int *)varp == &curbuf->b_p_ma)
- errmsg = did_set_modifiable(doskip); // 'modifiable'
- else if ((int *)varp == &curbuf->b_p_eof // 'endoffile'
- || (int *)varp == &curbuf->b_p_eol // 'endofline'
- || (int *)varp == &curbuf->b_p_fixeol // 'fixendofline'
- || (int *)varp == &curbuf->b_p_bomb) // 'bomb'
- did_set_eof_eol_fixeol_bomb();
- else if ((int *)varp == &curbuf->b_p_bin) // 'binary'
- did_set_binary(opt_flags, old_value);
- else if ((int *)varp == &curbuf->b_p_bl) // 'buflisted'
- did_set_buflisted(old_value);
- else if ((int *)varp == &curbuf->b_p_swf) // 'swapfile'
- did_set_swapfile();
- else if ((int *)varp == &p_terse) // 'terse'
- did_set_terse();
- else if ((int *)varp == &p_paste) // 'paste'
- did_set_paste();
- else if ((int *)varp == &p_im) // 'insertmode'
- did_set_insertmode(old_value);
- else if ((int *)varp == &p_ic) // 'ignorecase'
- did_set_ignorecase();
-#ifdef FEAT_SEARCH_EXTRA
- else if ((int *)varp == &p_hls) // 'hlsearch'
- did_set_hlsearch();
-#endif
- else if ((int *)varp == &curwin->w_p_scb) // 'scrollbind'
- did_set_scrollbind();
-#ifdef FEAT_QUICKFIX
- else if ((int *)varp == &curwin->w_p_pvw) // 'previewwindow'
- errmsg = did_set_previewwindow(doskip);
-#endif
- else if ((int *)varp == &curwin->w_p_sms) // 'smoothscroll'
- did_set_smoothscroll();
- else if ((int *)varp == &curbuf->b_p_tx) // 'textmode'
- did_set_textmode(opt_flags);
- else if ((int *)varp == &p_ta) // 'textauto'
- did_set_textauto(opt_flags);
- else if (varp == (char_u *)&(curbuf->b_p_lisp)) // 'lisp'
- did_set_lisp();
- else if ( (int *)varp == &p_title // 'title'
- || (int *)varp == &p_icon) // 'icon'
- did_set_title_icon();
- else if ((int *)varp == &curbuf->b_changed) // 'modified'
- did_set_modified(value);
-#ifdef BACKSLASH_IN_FILENAME
- else if ((int *)varp == &p_ssl) // 'shellslash'
- did_set_shellslash();
-#endif
- else if ((int *)varp == &curwin->w_p_wrap) // 'wrap'
- did_set_wrap();
- else if ((int *)varp == &p_ea) // 'equalalways'
- did_set_equalalways(old_value);
- else if ((int *)varp == &p_wiv) // weirdinvert'
- did_set_weirdinvert(old_value);
-#ifdef FEAT_BEVAL_GUI
- else if ((int *)varp == &p_beval) // 'ballooneval'
- did_set_ballooneval(old_value);
-#endif
-#ifdef FEAT_BEVAL_TERM
- else if ((int *)varp == &p_bevalterm) // 'balloonevalterm'
- did_set_balloonevalterm();
-#endif
-#ifdef FEAT_AUTOCHDIR
- else if ((int *)varp == &p_acd) // 'autochdir'
- did_set_autochdir();
-#endif
-#ifdef FEAT_DIFF
- else if ((int *)varp == &curwin->w_p_diff) // 'diff'
- did_set_diff();
-#endif
-#ifdef HAVE_INPUT_METHOD
- else if ((int *)varp == &p_imdisable) // 'imdisable'
- did_set_imdisable();
-#endif
-#ifdef FEAT_SPELL
- else if ((int *)varp == &curwin->w_p_spell) // 'spell'
- errmsg = did_set_spell();
-#endif
-#ifdef FEAT_ARABIC
- else if ((int *)varp == &curwin->w_p_arab) // 'arabic'
- errmsg = did_set_arabic();
-#endif
-#if defined(FEAT_SIGNS) && defined(FEAT_GUI)
- else if ( (int *)varp == &curwin->w_p_nu // 'number'
- || (int *)varp == &curwin->w_p_rnu) // 'relativenumber'
- did_set_number_relativenumber(varp);
-#endif
-#ifdef FEAT_TERMGUICOLORS
- else if ((int *)varp == &p_tgc) // 'termguicolors'
- errmsg = did_set_termguicolors(doskip);
-#endif
-
- return errmsg;
-}
-
-/*
* Set the value of a boolean option, and take care of side effects.
* Returns NULL for success, or an error message for an error.
*/
@@ -3971,10 +3889,19 @@ set_bool_option(
/*
* Handle side effects of changing a bool option.
*/
- int doskip = FALSE;
- errmsg = did_set_bool_option(varp, opt_flags, value, old_value, &doskip);
- if (doskip)
- return errmsg;
+ if (options[opt_idx].opt_did_set_cb != NULL)
+ {
+ optset_T args;
+
+ args.os_varp = varp;
+ args.os_flags = opt_flags;
+ args.os_oldval.boolean = old_value;
+ args.os_newval.boolean = value;
+ args.os_doskip = FALSE;
+ errmsg = options[opt_idx].opt_did_set_cb(&args);
+ if (args.os_doskip)
+ return errmsg;
+ }
// after handling side effects, call autocommand
@@ -4001,9 +3928,12 @@ set_bool_option(
/*
* Process the new 'winheight' or the 'helpheight' option value.
*/
- static char *
-did_set_winheight_helpheight(long *pp, char *errmsg)
+ char *
+did_set_winheight_helpheight(optset_T *args)
{
+ long *pp = (long *)args->os_varp;
+ char *errmsg = NULL;
+
if (p_wh < 1)
{
errmsg = e_argument_must_be_positive;
@@ -4035,9 +3965,11 @@ did_set_winheight_helpheight(long *pp, char *errmsg)
/*
* Process the new 'winminheight' option value.
*/
- static char *
-did_set_winminheight(char *errmsg)
+ char *
+did_set_winminheight(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (p_wmh < 0)
{
errmsg = e_argument_must_be_positive;
@@ -4056,9 +3988,11 @@ did_set_winminheight(char *errmsg)
/*
* Process the new 'winwidth' option value.
*/
- static char *
-did_set_winwidth(char *errmsg)
+ char *
+did_set_winwidth(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (p_wiw < 1)
{
errmsg = e_argument_must_be_positive;
@@ -4080,9 +4014,11 @@ did_set_winwidth(char *errmsg)
/*
* Process the new 'winminwidth' option value.
*/
- static char *
-did_set_winminwidth(char *errmsg)
+ char *
+did_set_winminwidth(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (p_wmw < 0)
{
errmsg = e_argument_must_be_positive;
@@ -4101,72 +4037,80 @@ did_set_winminwidth(char *errmsg)
/*
* Process the new 'laststatus' option value.
*/
- static void
-did_set_laststatus(void)
+ char *
+did_set_laststatus(optset_T *args UNUSED)
{
last_status(FALSE); // (re)set last window status line
+ return NULL;
}
/*
* Process the new 'showtabline' option value.
*/
- static void
-did_set_showtabline(void)
+ char *
+did_set_showtabline(optset_T *args UNUSED)
{
shell_new_rows(); // recompute window positions and heights
+ return NULL;
}
-#ifdef FEAT_GUI
+#if defined(FEAT_GUI) || defined(PROTO)
/*
* Process the new 'linespace' option value.
*/
- static void
-did_set_linespace(void)
+ char *
+did_set_linespace(optset_T *args UNUSED)
{
// Recompute gui.char_height and resize the Vim window to keep the
// same number of lines.
if (gui.in_use && gui_mch_adjust_charheight() == OK)
gui_set_shellsize(FALSE, FALSE, RESIZE_VERT);
+ return NULL;
}
#endif
-#ifdef FEAT_FOLDING
+#if defined(FEAT_FOLDING) || defined(PROTO)
/*
* Process the new 'foldlevel' option value.
*/
- static void
-did_set_foldlevel(void)
+ char *
+did_set_foldlevel(optset_T *args UNUSED)
{
if (curwin->w_p_fdl < 0)
curwin->w_p_fdl = 0;
newFoldLevel();
+ return NULL;
}
/*
* Process the new 'foldminlines' option value.
*/
- static void
-did_set_foldminlines(void)
+ char *
+did_set_foldminlines(optset_T *args UNUSED)
{
foldUpdateAll(curwin);
+ return NULL;
}
/*
* Process the new 'foldnestmax' option value.
*/
- static void
-did_set_foldnestmax(void)
+ char *
+did_set_foldnestmax(optset_T *args UNUSED)
{
if (foldmethodIsSyntax(curwin) || foldmethodIsIndent(curwin))
foldUpdateAll(curwin);
+ return NULL;
}
/*
* Process the new 'foldcolumn' option value.
*/
- static char *
-did_set_foldcolumn(char *errmsg)
+ char *
+did_set_foldcolumn(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (curwin->w_p_fdc < 0)
{
errmsg = e_argument_must_be_positive;
@@ -4185,9 +4129,25 @@ did_set_foldcolumn(char *errmsg)
/*
* Process the new 'shiftwidth' or the 'tabstop' option value.
*/
- static void
-did_set_shiftwidth_tabstop(long *pp)
+ char *
+did_set_shiftwidth_tabstop(optset_T *args)
{
+ long *pp = (long *)args->os_varp;
+ char *errmsg = NULL;
+
+ if (curbuf->b_p_sw < 0)
+ {
+ errmsg = e_argument_must_be_positive;
+#ifdef FEAT_VARTABS
+ // Use the first 'vartabstop' value, or 'tabstop' if vts isn't in use.
+ curbuf->b_p_sw = tabstop_count(curbuf->b_p_vts_array) > 0
+ ? tabstop_first(curbuf->b_p_vts_array)
+ : curbuf->b_p_ts;
+#else
+ curbuf->b_p_sw = curbuf->b_p_ts;
+#endif
+ }
+
#ifdef FEAT_FOLDING
if (foldmethodIsIndent(curwin))
foldUpdateAll(curwin);
@@ -4196,27 +4156,32 @@ did_set_shiftwidth_tabstop(long *pp)
// parse 'cinoptions'.
if (pp == &curbuf->b_p_sw || curbuf->b_p_sw == 0)
parse_cino(curbuf);
+
+ return errmsg;
}
/*
* Process the new 'maxcombine' option value.
*/
- static void
-did_set_maxcombine(void)
+ char *
+did_set_maxcombine(optset_T *args UNUSED)
{
if (p_mco > MAX_MCO)
p_mco = MAX_MCO;
else if (p_mco < 0)
p_mco = 0;
screenclear(); // will re-allocate the screen
+ return NULL;
}
/*
* Process the new 'iminsert' option value.
*/
- static char *
-did_set_iminsert(char *errmsg)
+ char *
+did_set_iminsert(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (curbuf->b_p_iminsert < 0 || curbuf->b_p_iminsert > B_IMODE_LAST)
{
errmsg = e_invalid_argument;
@@ -4233,13 +4198,15 @@ did_set_iminsert(char *errmsg)
return errmsg;
}
-#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
+#if (defined(FEAT_XIM) && defined(FEAT_GUI_GTK)) || defined(PROTO)
/*
* Process the new 'imstyle' option value.
*/
- static char *
-did_set_imstyle(char *errmsg)
+ char *
+did_set_imstyle(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (p_imst != IM_ON_THE_SPOT && p_imst != IM_OVER_THE_SPOT)
errmsg = e_invalid_argument;
@@ -4250,21 +4217,24 @@ did_set_imstyle(char *errmsg)
/*
* Process the new 'window' option value.
*/
- static void
-did_set_window(void)
+ char *
+did_set_window(optset_T *args UNUSED)
{
if (p_window < 1)
p_window = 1;
else if (p_window >= Rows)
p_window = Rows - 1;
+ return NULL;
}
/*
* Process the new 'imsearch' option value.
*/
- static char *
-did_set_imsearch(char *errmsg)
+ char *
+did_set_imsearch(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (curbuf->b_p_imsearch < -1 || curbuf->b_p_imsearch > B_IMODE_LAST)
{
errmsg = e_invalid_argument;
@@ -4278,9 +4248,12 @@ did_set_imsearch(char *errmsg)
/*
* Process the new 'titlelen' option value.
*/
- static char *
-did_set_titlelen(long old_value, char *errmsg)
+ char *
+did_set_titlelen(optset_T *args)
{
+ long old_value = args->os_oldval.number;
+ char *errmsg = NULL;
+
// if 'titlelen' has changed, redraw the title
if (p_titlelen < 0)
{
@@ -4296,9 +4269,12 @@ did_set_titlelen(long old_value, char *errmsg)
/*
* Process the new 'cmdheight' option value.
*/
- static char *
-did_set_cmdheight(long old_value, char *errmsg)
+ char *
+did_set_cmdheight(optset_T *args)
{
+ long old_value = args->os_oldval.number;
+ char *errmsg = NULL;
+
// if p_ch changed value, change the command line height
if (p_ch < 1)
{
@@ -4325,9 +4301,12 @@ did_set_cmdheight(long old_value, char *errmsg)
/*
* Process the new 'updatecount' option value.
*/
- static char *
-did_set_updatecount(long old_value, char *errmsg)
+ char *
+did_set_updatecount(optset_T *args)
{
+ long old_value = args->os_oldval.number;
+ char *errmsg = NULL;
+
// when 'updatecount' changes from zero to non-zero, open swap files
if (p_uc < 0)
{
@@ -4340,13 +4319,15 @@ did_set_updatecount(long old_value, char *errmsg)
return errmsg;
}
-#ifdef FEAT_CONCEAL
+#if defined(FEAT_CONCEAL) || defined(PROTO)
/*
* Process the new 'conceallevel' option value.
*/
- static char *
-did_set_conceallevel(char *errmsg)
+ char *
+did_set_conceallevel(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (curwin->w_p_cole < 0)
{
errmsg = e_argument_must_be_positive;
@@ -4362,13 +4343,15 @@ did_set_conceallevel(char *errmsg)
}
#endif
-#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
+#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) || defined(PROTO)
/*
* Process the new 'pyxversion' option value.
*/
- static char *
-did_set_pyxversion(char *errmsg)
+ char *
+did_set_pyxversion(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (p_pyx != 0 && p_pyx != 2 && p_pyx != 3)
errmsg = e_invalid_argument;
@@ -4402,13 +4385,15 @@ did_set_buflocal_undolevels(long value, long old_value)
curbuf->b_p_ul = value;
}
-#ifdef FEAT_LINEBREAK
+#if defined(FEAT_LINEBREAK) || defined(PROTO)
/*
* Process the new 'numberwidth' option value.
*/
- static char *
-did_set_numberwidth(char *errmsg)
+ char *
+did_set_numberwidth(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
// 'numberwidth' must be positive
if (curwin->w_p_nuw < 1)
{
@@ -4429,9 +4414,11 @@ did_set_numberwidth(char *errmsg)
/*
* Process the new 'textwidth' option value.
*/
- static char *
-did_set_textwidth(char *errmsg)
+ char *
+did_set_textwidth(optset_T *args UNUSED)
{
+ char *errmsg = NULL;
+
if (curbuf->b_p_tw < 0)
{
errmsg = e_argument_must_be_positive;
@@ -4451,83 +4438,21 @@ did_set_textwidth(char *errmsg)
}
/*
- * When some number options are changed, need to take some action.
+ * Process the new 'undolevels' option value.
*/
- static char *
-did_set_num_option(long *pp, long value, long old_value, char *errmsg)
-{
- if (pp == &p_wh // 'winheight'
- || pp == &p_hh) // 'helpheight'
- errmsg = did_set_winheight_helpheight(pp, errmsg);
- else if (pp == &p_wmh) // 'winminheight'
- errmsg = did_set_winminheight(errmsg);
- else if (pp == &p_wiw) // 'winwidth'
- errmsg = did_set_winwidth(errmsg);
- else if (pp == &p_wmw) // 'winminwidth'
- errmsg = did_set_winminwidth(errmsg);
- else if (pp == &p_ls)
- did_set_laststatus(); // 'laststatus'
- else if (pp == &p_stal)
- did_set_showtabline(); // 'showtabline'
-#ifdef FEAT_GUI
- else if (pp == &p_linespace) // 'linespace'
- did_set_linespace();
-#endif
-#ifdef FEAT_FOLDING
- else if (pp == &curwin->w_p_fdl) // 'foldlevel'
- did_set_foldlevel();
- else if (pp == &curwin->w_p_fml) // 'foldminlines'
- did_set_foldminlines();
- else if (pp == &curwin->w_p_fdn) // 'foldnestmax'
- did_set_foldnestmax();
- else if (pp == &curwin->w_p_fdc) // 'foldcolumn'
- errmsg = did_set_foldcolumn(errmsg);
-#endif // FEAT_FOLDING
- else if ( pp == &curbuf->b_p_sw // 'shiftwidth'
- || pp == &curbuf->b_p_ts) // 'tabstop'
- did_set_shiftwidth_tabstop(pp);
- else if (pp == &p_mco) // 'maxcombine'
- did_set_maxcombine();
- else if (pp == &curbuf->b_p_iminsert) // 'iminsert'
- errmsg = did_set_iminsert(errmsg);
-#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
- else if (pp == &p_imst) // 'imstyle'
- errmsg = did_set_imstyle(errmsg);
-#endif
- else if (pp == &p_window) // 'window'
- did_set_window();
- else if (pp == &curbuf->b_p_imsearch) // 'imsearch'
- errmsg = did_set_imsearch(errmsg);
- else if (pp == &p_titlelen) // 'titlelen'
- errmsg = did_set_titlelen(old_value, errmsg);
- else if (pp == &p_ch) // 'cmdheight'
- errmsg = did_set_cmdheight(old_value, errmsg);
- else if (pp == &p_uc) // 'updatecount'
- errmsg = did_set_updatecount(old_value, errmsg);
-#ifdef FEAT_CONCEAL
- else if (pp == &curwin->w_p_cole) // 'conceallevel'
- errmsg = did_set_conceallevel(errmsg);
-#endif
-#ifdef MZSCHEME_GUI_THREADS
- else if (pp == &p_mzq) // 'mzquantum'
- mzvim_reset_timer();
-#endif
-#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
- else if (pp == &p_pyx) // 'pyxversion'
- errmsg = did_set_pyxversion(errmsg);
-#endif
- else if (pp == &p_ul) // global 'undolevels'
- did_set_global_undolevels(value, old_value);
- else if (pp == &curbuf->b_p_ul) // buffer local 'undolevels'
- did_set_buflocal_undolevels(value, old_value);
-#ifdef FEAT_LINEBREAK
- else if (pp == &curwin->w_p_nuw) // 'numberwidth'
- errmsg = did_set_numberwidth(errmsg);
-#endif
- else if (pp == &curbuf->b_p_tw) // 'textwidth'
- errmsg = did_set_textwidth(errmsg);
+ char *
+did_set_undolevels(optset_T *args)
+{
+ long *pp = (long *)args->os_varp;
- return errmsg;
+ if (pp == &p_ul) // global 'undolevels'
+ did_set_global_undolevels(args->os_newval.number,
+ args->os_oldval.number);
+ else if (pp == &curbuf->b_p_ul) // buffer local 'undolevels'
+ did_set_buflocal_undolevels(args->os_newval.number,
+ args->os_oldval.number);
+
+ return NULL;
}
/*
@@ -4734,27 +4659,20 @@ set_num_option(
need_mouse_correct = TRUE;
#endif
- if (curbuf->b_p_sw < 0)
+ // Invoke the option specific callback function to validate and apply the
+ // new value.
+ if (options[opt_idx].opt_did_set_cb != NULL)
{
- errmsg = e_argument_must_be_positive;
-#ifdef FEAT_VARTABS
- // Use the first 'vartabstop' value, or 'tabstop' if vts isn't in use.
- curbuf->b_p_sw = tabstop_count(curbuf->b_p_vts_array) > 0
- ? tabstop_first(curbuf->b_p_vts_array)
- : curbuf->b_p_ts;
-#else
- curbuf->b_p_sw = curbuf->b_p_ts;
-#endif
- }
+ optset_T args;
- /*
- * Number options that need some action when changed
- */
- errmsg = did_set_num_option(pp, value, old_value, errmsg);
+ args.os_varp = varp;
+ args.os_flags = opt_flags;
+ args.os_oldval.number = old_value;
+ args.os_newval.number = value;
+ errmsg = options[opt_idx].opt_did_set_cb(&args);
+ }
- /*
- * Check the bounds for numeric options here
- */
+ // Check the bounds for numeric options here
errmsg = check_num_option_bounds(pp, old_value, old_Rows, old_Columns,
errbuf, errbuflen, errmsg);
@@ -6530,6 +6448,15 @@ get_option_fullname(int opt_idx)
#endif
/*
+ * Return the did_set callback function for the option at 'opt_idx'
+ */
+ opt_did_set_cb_T
+get_option_did_set_cb(int opt_idx)
+{
+ return options[opt_idx].opt_did_set_cb;
+}
+
+/*
* Get the value of 'equalprg', either the buffer-local one or the global one.
*/
char_u *
@@ -8062,10 +7989,10 @@ compatible_set(void)
#if defined(FEAT_LINEBREAK) || defined(PROTO)
/*
- * fill_breakat_flags() -- called when 'breakat' changes value.
+ * Called when the 'breakat' option changes value.
*/
- void
-fill_breakat_flags(void)
+ char *
+did_set_breakat(optset_T *args UNUSED)
{
char_u *p;
int i;
@@ -8076,6 +8003,8 @@ fill_breakat_flags(void)
if (p_breakat != NULL)
for (p = p_breakat; *p; p++)
breakat_flags[*p] = TRUE;
+
+ return NULL;
}
#endif
diff --git a/src/option.h b/src/option.h
index 56b489b19..9cc540a24 100644
--- a/src/option.h
+++ b/src/option.h
@@ -14,7 +14,7 @@
#define _OPTION_H_
//
-// Flags
+// Option Flags
//
#define P_BOOL 0x01 // the option is boolean
#define P_NUM 0x02 // the option is numeric
diff --git a/src/optiondefs.h b/src/optiondefs.h
index 7ec4847d0..c76cede2d 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -263,12 +263,15 @@ struct vimoption
{
char *fullname; // full option name
char *shortname; // permissible abbreviation
- long_u flags; // see below
+ long_u flags; // see in option.h
char_u *var; // global option: pointer to variable;
// window-local option: VAR_WIN;
// buffer-local option: global value
idopt_T indir; // global option: PV_NONE;
// local option: indirect option index
+ // callback function to invoke after an option is modified to validate and
+ // apply the new value.
+ opt_did_set_cb_T opt_did_set_cb;
char_u *def_val[2]; // default values for variable (vi and vim)
#ifdef FEAT_EVAL
sctx_T script_ctx; // script context where the option was last set
@@ -321,6 +324,7 @@ static struct vimoption options[] =
#else
(char_u *)NULL, PV_NONE,
#endif
+ NULL,
{
#if defined(MSWIN) && !defined(FEAT_GUI_MSWIN)
(char_u *)128L,
@@ -329,72 +333,72 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"antialias", "anti", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)FALSE}
SCTX_INIT},
{"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT,
#ifdef FEAT_ARABIC
- (char_u *)VAR_WIN, PV_ARAB,
+ (char_u *)VAR_WIN, PV_ARAB, did_set_arabic,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"arabicshape", "arshape", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
#ifdef FEAT_ARABIC
- (char_u *)&p_arshape, PV_NONE,
+ (char_u *)&p_arshape, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"allowrevins", "ari", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_RIGHTLEFT
- (char_u *)&p_ari, PV_NONE,
+ (char_u *)&p_ari, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"altkeymap", "akm", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"ambiwidth", "ambw", P_STRING|P_VI_DEF|P_RCLR,
- (char_u *)&p_ambw, PV_NONE,
+ (char_u *)&p_ambw, PV_NONE, did_set_ambiwidth,
{(char_u *)"single", (char_u *)0L}
SCTX_INIT},
{"autochdir", "acd", P_BOOL|P_VI_DEF,
#ifdef FEAT_AUTOCHDIR
- (char_u *)&p_acd, PV_NONE,
+ (char_u *)&p_acd, PV_NONE, did_set_autochdir,
{(char_u *)FALSE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"autoshelldir", "asd", P_BOOL|P_VI_DEF,
#ifdef FEAT_AUTOSHELLDIR
- (char_u *)&p_asd, PV_NONE,
+ (char_u *)&p_asd, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"autoindent", "ai", P_BOOL|P_VI_DEF,
- (char_u *)&p_ai, PV_AI,
+ (char_u *)&p_ai, PV_AI, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"autoprint", "ap", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"autoread", "ar", P_BOOL|P_VI_DEF,
- (char_u *)&p_ar, PV_AR,
+ (char_u *)&p_ar, PV_AR, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"autowrite", "aw", P_BOOL|P_VI_DEF,
- (char_u *)&p_aw, PV_NONE,
+ (char_u *)&p_aw, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"autowriteall","awa", P_BOOL|P_VI_DEF,
- (char_u *)&p_awa, PV_NONE,
+ (char_u *)&p_awa, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"background", "bg", P_STRING|P_VI_DEF|P_RCLR,
- (char_u *)&p_bg, PV_NONE,
+ (char_u *)&p_bg, PV_NONE, did_set_background,
{
#if (defined(MSWIN)) && !defined(FEAT_GUI)
(char_u *)"dark",
@@ -403,13 +407,13 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"backspace", "bs", P_STRING|P_VI_DEF|P_VIM|P_ONECOMMA|P_NODUP,
- (char_u *)&p_bs, PV_NONE,
+ (char_u *)&p_bs, PV_NONE, did_set_backspace,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"backup", "bk", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_bk, PV_NONE,
+ (char_u *)&p_bk, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"backupcopy", "bkc", P_STRING|P_VIM|P_ONECOMMA|P_NODUP,
- (char_u *)&p_bkc, PV_BKC,
+ (char_u *)&p_bkc, PV_BKC, did_set_backupcopy,
#ifdef UNIX
{(char_u *)"yes", (char_u *)"auto"}
#else
@@ -418,10 +422,11 @@ static struct vimoption options[] =
SCTX_INIT},
{"backupdir", "bdir", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA
|P_NODUP|P_SECURE,
- (char_u *)&p_bdir, PV_NONE,
+ (char_u *)&p_bdir, PV_NONE, NULL,
{(char_u *)DFLT_BDIR, (char_u *)0L} SCTX_INIT},
{"backupext", "bex", P_STRING|P_VI_DEF|P_NFNAME,
(char_u *)&p_bex, PV_NONE,
+ did_set_backupext_or_patchmode,
{
#ifdef VMS
(char_u *)"_",
@@ -430,75 +435,77 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"backupskip", "bsk", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_bsk, PV_NONE,
+ (char_u *)&p_bsk, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"balloondelay","bdlay",P_NUM|P_VI_DEF,
#ifdef FEAT_BEVAL
- (char_u *)&p_bdlay, PV_NONE,
+ (char_u *)&p_bdlay, PV_NONE, NULL,
{(char_u *)600L, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"ballooneval", "beval",P_BOOL|P_VI_DEF|P_NO_MKRC,
#ifdef FEAT_BEVAL_GUI
- (char_u *)&p_beval, PV_NONE,
+ (char_u *)&p_beval, PV_NONE, did_set_ballooneval,
{(char_u *)FALSE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"balloonevalterm", "bevalterm",P_BOOL|P_VI_DEF|P_NO_MKRC,
#ifdef FEAT_BEVAL_TERM
(char_u *)&p_bevalterm, PV_NONE,
+ did_set_balloonevalterm,
{(char_u *)FALSE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"balloonexpr", "bexpr", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM|P_MLE,
#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
- (char_u *)&p_bexpr, PV_BEXPR,
+ (char_u *)&p_bexpr, PV_BEXPR, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"beautify", "bf", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"belloff", "bo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
- (char_u *)&p_bo, PV_NONE,
+ (char_u *)&p_bo, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"binary", "bin", P_BOOL|P_VI_DEF|P_RSTAT,
- (char_u *)&p_bin, PV_BIN,
+ (char_u *)&p_bin, PV_BIN, did_set_binary,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"bioskey", "biosk",P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"bomb", NULL, P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
(char_u *)&p_bomb, PV_BOMB,
+ did_set_eof_eol_fixeol_bomb,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"breakat", "brk", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
#ifdef FEAT_LINEBREAK
- (char_u *)&p_breakat, PV_NONE,
+ (char_u *)&p_breakat, PV_NONE, did_set_breakat,
{(char_u *)" \t!@*-+;:,./?", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"breakindent", "bri", P_BOOL|P_VI_DEF|P_VIM|P_RWIN,
#ifdef FEAT_LINEBREAK
- (char_u *)VAR_WIN, PV_BRI,
+ (char_u *)VAR_WIN, PV_BRI, NULL,
{(char_u *)FALSE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
@@ -506,79 +513,80 @@ static struct vimoption options[] =
|P_ONECOMMA|P_NODUP,
#ifdef FEAT_LINEBREAK
(char_u *)VAR_WIN, PV_BRIOPT,
+ did_set_breakindentopt,
{(char_u *)"", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)NULL}
#endif
SCTX_INIT},
{"browsedir", "bsdir",P_STRING|P_VI_DEF,
#ifdef FEAT_BROWSE
- (char_u *)&p_bsdir, PV_NONE,
+ (char_u *)&p_bsdir, PV_NONE, did_set_browsedir,
{(char_u *)"last", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"bufhidden", "bh", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB,
- (char_u *)&p_bh, PV_BH,
+ (char_u *)&p_bh, PV_BH, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"buflisted", "bl", P_BOOL|P_VI_DEF|P_NOGLOB,
- (char_u *)&p_bl, PV_BL,
+ (char_u *)&p_bl, PV_BL, did_set_buflisted,
{(char_u *)1L, (char_u *)0L}
SCTX_INIT},
{"buftype", "bt", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB,
- (char_u *)&p_bt, PV_BT,
+ (char_u *)&p_bt, PV_BT, did_set_buftype,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"casemap", "cmp", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cmp, PV_NONE,
+ (char_u *)&p_cmp, PV_NONE, NULL,
{(char_u *)"internal,keepascii", (char_u *)0L}
SCTX_INIT},
{"cdhome", "cdh", P_BOOL|P_VI_DEF|P_VIM|P_SECURE,
- (char_u *)&p_cdh, PV_NONE,
+ (char_u *)&p_cdh, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L}
SCTX_INIT},
{"cdpath", "cd", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE|P_COMMA|P_NODUP,
- (char_u *)&p_cdpath, PV_NONE,
+ (char_u *)&p_cdpath, PV_NONE, NULL,
{(char_u *)",,", (char_u *)0L}
SCTX_INIT},
{"cedit", NULL, P_STRING,
- (char_u *)&p_cedit, PV_NONE,
+ (char_u *)&p_cedit, PV_NONE, did_set_cedit,
{(char_u *)"", (char_u *)CTRL_F_STR}
SCTX_INIT},
{"charconvert", "ccv", P_STRING|P_VI_DEF|P_SECURE,
#if defined(FEAT_EVAL)
- (char_u *)&p_ccv, PV_NONE,
+ (char_u *)&p_ccv, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"cindent", "cin", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_cin, PV_CIN,
+ (char_u *)&p_cin, PV_CIN, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"cinkeys", "cink", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cink, PV_CINK,
+ (char_u *)&p_cink, PV_CINK, NULL,
{INDENTKEYS_DEFAULT, (char_u *)0L} SCTX_INIT},
{"cinoptions", "cino", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cino, PV_CINO,
+ (char_u *)&p_cino, PV_CINO, did_set_cinoptions,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"cinscopedecls", "cinsd", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cinsd, PV_CINSD,
+ (char_u *)&p_cinsd, PV_CINSD, NULL,
{(char_u *)"public,protected,private", (char_u *)0L}
SCTX_INIT},
{"cinwords", "cinw", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cinw, PV_CINW,
+ (char_u *)&p_cinw, PV_CINW, NULL,
{(char_u *)"if,else,while,do,for,switch",
(char_u *)0L}
SCTX_INIT},
{"clipboard", "cb", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_CLIPBOARD
- (char_u *)&p_cb, PV_NONE,
+ (char_u *)&p_cb, PV_NONE, did_set_clipboard,
# ifdef FEAT_XCLIPBOARD
{(char_u *)"autoselect,exclude:cons\\|linux",
(char_u *)0L}
@@ -586,339 +594,342 @@ static struct vimoption options[] =
{(char_u *)"", (char_u *)0L}
# endif
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#endif
SCTX_INIT},
{"cmdheight", "ch", P_NUM|P_VI_DEF|P_RALL,
- (char_u *)&p_ch, PV_NONE,
+ (char_u *)&p_ch, PV_NONE, did_set_cmdheight,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"cmdwinheight", "cwh", P_NUM|P_VI_DEF,
- (char_u *)&p_cwh, PV_NONE,
+ (char_u *)&p_cwh, PV_NONE, NULL,
{(char_u *)7L, (char_u *)0L} SCTX_INIT},
{"colorcolumn", "cc", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_RWIN,
#ifdef FEAT_SYN_HL
- (char_u *)VAR_WIN, PV_CC,
+ (char_u *)VAR_WIN, PV_CC, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
- (char_u *)&Columns, PV_NONE,
+ (char_u *)&Columns, PV_NONE, NULL,
{(char_u *)80L, (char_u *)0L} SCTX_INIT},
{"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA
|P_NODUP|P_CURSWANT,
- (char_u *)&p_com, PV_COM,
+ (char_u *)&p_com, PV_COM, NULL,
{(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-",
(char_u *)0L}
SCTX_INIT},
{"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
#ifdef FEAT_FOLDING
- (char_u *)&p_cms, PV_CMS,
+ (char_u *)&p_cms, PV_CMS, did_set_commentstring,
{(char_u *)"/*%s*/", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
// P_PRI_MKRC isn't needed here, optval_default()
// always returns TRUE for 'compatible'
{"compatible", "cp", P_BOOL|P_RALL,
- (char_u *)&p_cp, PV_NONE,
+ (char_u *)&p_cp, PV_NONE, did_set_compatible,
{(char_u *)TRUE, (char_u *)FALSE} SCTX_INIT},
{"complete", "cpt", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cpt, PV_CPT,
+ (char_u *)&p_cpt, PV_CPT, NULL,
{(char_u *)".,w,b,u,t,i", (char_u *)0L}
SCTX_INIT},
{"concealcursor","cocu", P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
#ifdef FEAT_CONCEAL
- (char_u *)VAR_WIN, PV_COCU,
+ (char_u *)VAR_WIN, PV_COCU, NULL,
{(char_u *)"", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"conceallevel","cole", P_NUM|P_RWIN|P_VI_DEF,
#ifdef FEAT_CONCEAL
- (char_u *)VAR_WIN, PV_COLE,
+ (char_u *)VAR_WIN, PV_COLE, did_set_conceallevel,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L}
SCTX_INIT},
{"completefunc", "cfu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE|P_FUNC,
#ifdef FEAT_COMPL_FUNC
- (char_u *)&p_cfu, PV_CFU,
+ (char_u *)&p_cfu, PV_CFU, did_set_completefunc,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"completeopt", "cot", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_cot, PV_NONE,
+ (char_u *)&p_cot, PV_NONE, did_set_completeopt,
{(char_u *)"menu,preview", (char_u *)0L}
SCTX_INIT},
{"completepopup", "cpp", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
#if defined(FEAT_PROP_POPUP) && defined(FEAT_QUICKFIX)
- (char_u *)&p_cpp, PV_NONE,
+ (char_u *)&p_cpp, PV_NONE, did_set_completepopup,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"completeslash", "csl", P_STRING|P_VI_DEF|P_VIM,
#if defined(BACKSLASH_IN_FILENAME)
- (char_u *)&p_csl, PV_CSL,
+ (char_u *)&p_csl, PV_CSL, did_set_completeslash,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"confirm", "cf", P_BOOL|P_VI_DEF,
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
- (char_u *)&p_confirm, PV_NONE,
+ (char_u *)&p_confirm, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"conskey", "consk",P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"copyindent", "ci", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_ci, PV_CI,
+ (char_u *)&p_ci, PV_CI, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"cpoptions", "cpo", P_STRING|P_VIM|P_RALL|P_FLAGLIST,
- (char_u *)&p_cpo, PV_NONE,
+ (char_u *)&p_cpo, PV_NONE, NULL,
{(char_u *)CPO_VI, (char_u *)CPO_VIM}
SCTX_INIT},
{"cryptmethod", "cm", P_STRING|P_ALLOCED|P_VI_DEF,
#ifdef FEAT_CRYPT
- (char_u *)&p_cm, PV_CM,
+ (char_u *)&p_cm, PV_CM, did_set_cryptmethod,
{(char_u *)"blowfish2", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"cscopepathcomp", "cspc", P_NUM|P_VI_DEF|P_VIM,
#ifdef FEAT_CSCOPE
- (char_u *)&p_cspc, PV_NONE,
+ (char_u *)&p_cspc, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"cscopeprg", "csprg", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#ifdef FEAT_CSCOPE
- (char_u *)&p_csprg, PV_NONE,
+ (char_u *)&p_csprg, PV_NONE, NULL,
{(char_u *)"cscope", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"cscopequickfix", "csqf", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#if defined(FEAT_CSCOPE) && defined(FEAT_QUICKFIX)
(char_u *)&p_csqf, PV_NONE,
+ did_set_cscopequickfix,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"cscoperelative", "csre", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_CSCOPE
- (char_u *)&p_csre, PV_NONE,
+ (char_u *)&p_csre, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"cscopetag", "cst", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_CSCOPE
- (char_u *)&p_cst, PV_NONE,
+ (char_u *)&p_cst, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"cscopetagorder", "csto", P_NUM|P_VI_DEF|P_VIM,
#ifdef FEAT_CSCOPE
- (char_u *)&p_csto, PV_NONE,
+ (char_u *)&p_csto, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"cscopeverbose", "csverb", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_CSCOPE
- (char_u *)&p_csverbose, PV_NONE,
+ (char_u *)&p_csverbose, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"cursorbind", "crb", P_BOOL|P_VI_DEF,
- (char_u *)VAR_WIN, PV_CRBIND,
+ (char_u *)VAR_WIN, PV_CRBIND, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"cursorcolumn", "cuc", P_BOOL|P_VI_DEF|P_RWINONLY,
#ifdef FEAT_SYN_HL
- (char_u *)VAR_WIN, PV_CUC,
+ (char_u *)VAR_WIN, PV_CUC, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"cursorline", "cul", P_BOOL|P_VI_DEF|P_RWINONLY,
#ifdef FEAT_SYN_HL
- (char_u *)VAR_WIN, PV_CUL,
+ (char_u *)VAR_WIN, PV_CUL, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"cursorlineopt", "culopt", P_STRING|P_VI_DEF|P_RWIN|P_ONECOMMA|P_NODUP,
#ifdef FEAT_SYN_HL
- (char_u *)VAR_WIN, PV_CULOPT,
+ (char_u *)VAR_WIN, PV_CULOPT, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"both", (char_u *)0L} SCTX_INIT},
{"debug", NULL, P_STRING|P_VI_DEF,
- (char_u *)&p_debug, PV_NONE,
+ (char_u *)&p_debug, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"define", "def", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
#ifdef FEAT_FIND_ID
- (char_u *)&p_def, PV_DEF,
+ (char_u *)&p_def, PV_DEF, NULL,
{(char_u *)"^\\s*#\\s*define", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"delcombine", "deco", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_deco, PV_NONE,
+ (char_u *)&p_deco, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
- (char_u *)&p_dict, PV_DICT,
+ (char_u *)&p_dict, PV_DICT, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"diff", NULL, P_BOOL|P_VI_DEF|P_RWIN|P_NOGLOB,
#ifdef FEAT_DIFF
- (char_u *)VAR_WIN, PV_DIFF,
+ (char_u *)VAR_WIN, PV_DIFF, did_set_diff,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT,
#if defined(FEAT_DIFF) && defined(FEAT_EVAL)
- (char_u *)&p_dex, PV_NONE,
+ (char_u *)&p_dex, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"diffopt", "dip", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN|P_ONECOMMA
|P_NODUP,
#ifdef FEAT_DIFF
- (char_u *)&p_dip, PV_NONE,
+ (char_u *)&p_dip, PV_NONE, did_set_diffopt,
{(char_u *)"internal,filler,closeoff",
(char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)NULL}
#endif
SCTX_INIT},
{"digraph", "dg", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_DIGRAPHS
- (char_u *)&p_dg, PV_NONE,
+ (char_u *)&p_dg, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"directory", "dir", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA
|P_NODUP|P_SECURE,
- (char_u *)&p_dir, PV_NONE,
+ (char_u *)&p_dir, PV_NONE, NULL,
{(char_u *)DFLT_DIR, (char_u *)0L} SCTX_INIT},
{"display", "dy", P_STRING|P_VI_DEF|P_ONECOMMA|P_RALL|P_NODUP,
- (char_u *)&p_dy, PV_NONE,
+ (char_u *)&p_dy, PV_NONE, did_set_display,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"eadirection", "ead", P_STRING|P_VI_DEF,
- (char_u *)&p_ead, PV_NONE,
+ (char_u *)&p_ead, PV_NONE, NULL,
{(char_u *)"both", (char_u *)0L}
SCTX_INIT},
{"edcompatible","ed", P_BOOL|P_VI_DEF,
- (char_u *)&p_ed, PV_NONE,
+ (char_u *)&p_ed, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"emoji", "emo", P_BOOL|P_VI_DEF|P_RCLR,
- (char_u *)&p_emoji, PV_NONE,
+ (char_u *)&p_emoji, PV_NONE, did_set_ambiwidth,
{(char_u *)TRUE, (char_u *)0L}
SCTX_INIT},
{"encoding", "enc", P_STRING|P_VI_DEF|P_RCLR|P_NO_ML,
- (char_u *)&p_enc, PV_NONE,
+ (char_u *)&p_enc, PV_NONE, NULL,
{(char_u *)ENC_DFLT, (char_u *)0L}
SCTX_INIT},
{"endoffile", "eof", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
(char_u *)&p_eof, PV_EOF,
+ did_set_eof_eol_fixeol_bomb,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"endofline", "eol", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
(char_u *)&p_eol, PV_EOL,
+ did_set_eof_eol_fixeol_bomb,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"equalalways", "ea", P_BOOL|P_VI_DEF|P_RALL,
- (char_u *)&p_ea, PV_NONE,
+ (char_u *)&p_ea, PV_NONE, did_set_equalalways,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"equalprg", "ep", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- (char_u *)&p_ep, PV_EP,
+ (char_u *)&p_ep, PV_EP, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"errorbells", "eb", P_BOOL|P_VI_DEF,
- (char_u *)&p_eb, PV_NONE,
+ (char_u *)&p_eb, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"errorfile", "ef", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_ef, PV_NONE,
+ (char_u *)&p_ef, PV_NONE, NULL,
{(char_u *)DFLT_ERRORFILE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"errorformat", "efm", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_efm, PV_EFM,
+ (char_u *)&p_efm, PV_EFM, NULL,
{(char_u *)DFLT_EFM, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"esckeys", "ek", P_BOOL|P_VIM,
- (char_u *)&p_ek, PV_NONE,
+ (char_u *)&p_ek, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)TRUE} SCTX_INIT},
{"eventignore", "ei", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_ei, PV_NONE,
+ (char_u *)&p_ei, PV_NONE, did_set_eventignore,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"expandtab", "et", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_et, PV_ET,
+ (char_u *)&p_et, PV_ET, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"exrc", "ex", P_BOOL|P_VI_DEF|P_SECURE,
- (char_u *)&p_exrc, PV_NONE,
+ (char_u *)&p_exrc, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"fileencoding","fenc", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_RBUF
|P_NO_MKRC,
- (char_u *)&p_fenc, PV_FENC,
+ (char_u *)&p_fenc, PV_FENC, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"fileencodings","fencs", P_STRING|P_VI_DEF|P_ONECOMMA,
- (char_u *)&p_fencs, PV_NONE,
+ (char_u *)&p_fencs, PV_NONE, NULL,
{(char_u *)"ucs-bom", (char_u *)0L}
SCTX_INIT},
{"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC
|P_CURSWANT,
- (char_u *)&p_ff, PV_FF,
+ (char_u *)&p_ff, PV_FF, did_set_fileformat,
{(char_u *)DFLT_FF, (char_u *)0L} SCTX_INIT},
{"fileformats", "ffs", P_STRING|P_VIM|P_ONECOMMA|P_NODUP,
- (char_u *)&p_ffs, PV_NONE,
+ (char_u *)&p_ffs, PV_NONE, did_set_fileformats,
{(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM}
SCTX_INIT},
{"fileignorecase", "fic", P_BOOL|P_VI_DEF,
- (char_u *)&p_fic, PV_NONE,
+ (char_u *)&p_fic, PV_NONE, NULL,
{
#ifdef CASE_INSENSITIVE_FILENAME
(char_u *)TRUE,
@@ -927,189 +938,190 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"filetype", "ft", P_STRING|P_EXPAND|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
- (char_u *)&p_ft, PV_FT,
+ (char_u *)&p_ft, PV_FT, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"fillchars", "fcs", P_STRING|P_VI_DEF|P_RALL|P_ONECOMMA|P_NODUP,
- (char_u *)&p_fcs, PV_FCS,
+ (char_u *)&p_fcs, PV_FCS, NULL,
{(char_u *)"vert:|,fold:-,eob:~,lastline:@",
(char_u *)0L}
SCTX_INIT},
{"fixendofline", "fixeol", P_BOOL|P_VI_DEF|P_RSTAT,
(char_u *)&p_fixeol, PV_FIXEOL,
+ did_set_eof_eol_fixeol_bomb,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"fkmap", "fk", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"flash", "fl", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"foldclose", "fcl", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)&p_fcl, PV_NONE,
+ (char_u *)&p_fcl, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldcolumn", "fdc", P_NUM|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FDC,
+ (char_u *)VAR_WIN, PV_FDC, did_set_foldcolumn,
{(char_u *)FALSE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldenable", "fen", P_BOOL|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FEN,
+ (char_u *)VAR_WIN, PV_FEN, NULL,
{(char_u *)TRUE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldexpr", "fde", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN|P_MLE,
#if defined(FEAT_FOLDING) && defined(FEAT_EVAL)
- (char_u *)VAR_WIN, PV_FDE,
+ (char_u *)VAR_WIN, PV_FDE, NULL,
{(char_u *)"0", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldignore", "fdi", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FDI,
+ (char_u *)VAR_WIN, PV_FDI, did_set_foldignore,
{(char_u *)"#", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FDL,
+ (char_u *)VAR_WIN, PV_FDL, did_set_foldlevel,
{(char_u *)0L, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT,
#ifdef FEAT_FOLDING
- (char_u *)&p_fdls, PV_NONE,
+ (char_u *)&p_fdls, PV_NONE, NULL,
{(char_u *)-1L, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
P_RWIN|P_ONECOMMA|P_NODUP,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FMR,
+ (char_u *)VAR_WIN, PV_FMR, did_set_foldmarker,
{(char_u *)"{{{,}}}", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldmethod", "fdm", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FDM,
+ (char_u *)VAR_WIN, PV_FDM, did_set_foldmethod,
{(char_u *)"manual", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldminlines","fml", P_NUM|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FML,
+ (char_u *)VAR_WIN, PV_FML, did_set_foldminlines,
{(char_u *)1L, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN,
#ifdef FEAT_FOLDING
- (char_u *)VAR_WIN, PV_FDN,
+ (char_u *)VAR_WIN, PV_FDN, did_set_foldnestmax,
{(char_u *)20L, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldopen", "fdo", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_CURSWANT,
#ifdef FEAT_FOLDING
- (char_u *)&p_fdo, PV_NONE,
+ (char_u *)&p_fdo, PV_NONE, NULL,
{(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"foldtext", "fdt", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN|P_MLE,
#if defined(FEAT_FOLDING) && defined(FEAT_EVAL)
- (char_u *)VAR_WIN, PV_FDT,
+ (char_u *)VAR_WIN, PV_FDT, NULL,
{(char_u *)"foldtext()", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"formatexpr", "fex", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM|P_MLE,
#ifdef FEAT_EVAL
- (char_u *)&p_fex, PV_FEX,
+ (char_u *)&p_fex, PV_FEX, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"formatoptions","fo", P_STRING|P_ALLOCED|P_VIM|P_FLAGLIST,
- (char_u *)&p_fo, PV_FO,
+ (char_u *)&p_fo, PV_FO, NULL,
{(char_u *)DFLT_FO_VI, (char_u *)DFLT_FO_VIM}
SCTX_INIT},
{"formatlistpat","flp", P_STRING|P_ALLOCED|P_VI_DEF,
- (char_u *)&p_flp, PV_FLP,
+ (char_u *)&p_flp, PV_FLP, NULL,
{(char_u *)"^\\s*\\d\\+[\\]:.)}\\t ]\\s*",
(char_u *)0L} SCTX_INIT},
{"formatprg", "fp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- (char_u *)&p_fp, PV_FP,
+ (char_u *)&p_fp, PV_FP, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"fsync", "fs", P_BOOL|P_SECURE|P_VI_DEF,
#ifdef HAVE_FSYNC
- (char_u *)&p_fs, PV_NONE,
+ (char_u *)&p_fs, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L}
#endif
SCTX_INIT},
{"gdefault", "gd", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_gd, PV_NONE,
+ (char_u *)&p_gd, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"graphic", "gr", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"grepformat", "gfm", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_gefm, PV_NONE,
+ (char_u *)&p_gefm, PV_NONE, NULL,
{(char_u *)DFLT_GREPFORMAT, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"grepprg", "gp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_gp, PV_GP,
+ (char_u *)&p_gp, PV_GP, NULL,
{
# if defined(MSWIN)
// may be changed to "grep -n" in os_win32.c
@@ -1125,13 +1137,13 @@ static struct vimoption options[] =
# endif
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"guicursor", "gcr", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef CURSOR_SHAPE
- (char_u *)&p_guicursor, PV_NONE,
+ (char_u *)&p_guicursor, PV_NONE, NULL,
{
# ifdef FEAT_GUI
(char_u *)"n-v-c:block-Cursor/lCursor,ve:ver35-Cursor,o:hor50-Cursor,i-ci:ver25-Cursor/lCursor,r-cr:hor20-Cursor/lCursor,sm:block-Cursor-blinkwait175-blinkoff150-blinkon175",
@@ -1140,34 +1152,36 @@ static struct vimoption options[] =
# endif
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"guifont", "gfn", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA|P_NODUP,
#ifdef FEAT_GUI
- (char_u *)&p_guifont, PV_NONE,
+ (char_u *)&p_guifont, PV_NONE, did_set_guifont,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"guifontset", "gfs", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA,
#if defined(FEAT_GUI) && defined(FEAT_XFONTSET)
(char_u *)&p_guifontset, PV_NONE,
+ did_set_guifontset,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"guifontwide", "gfw", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA|P_NODUP,
#if defined(FEAT_GUI)
(char_u *)&p_guifontwide, PV_NONE,
+ did_set_guifontwide,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
@@ -1176,9 +1190,10 @@ static struct vimoption options[] =
{"guiligatures", "gli", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA|P_NODUP,
#if defined(FEAT_GUI_GTK)
(char_u *)&p_guiligatures, PV_NONE,
+ did_set_guiligatures,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
@@ -1186,200 +1201,215 @@ static struct vimoption options[] =
{"guiheadroom", "ghr", P_NUM|P_VI_DEF,
#if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
- (char_u *)&p_ghr, PV_NONE,
+ (char_u *)&p_ghr, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)50L, (char_u *)0L} SCTX_INIT},
{"guioptions", "go", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
#if defined(FEAT_GUI)
- (char_u *)&p_go, PV_NONE,
+ (char_u *)&p_go, PV_NONE, did_set_guioptions,
# if defined(UNIX)
{(char_u *)"aegimrLtT", (char_u *)0L}
# else
{(char_u *)"egmrLtT", (char_u *)0L}
# endif
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"guipty", NULL, P_BOOL|P_VI_DEF,
#if defined(FEAT_GUI)
- (char_u *)&p_guipty, PV_NONE,
+ (char_u *)&p_guipty, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"guitablabel", "gtl", P_STRING|P_VI_DEF|P_RWIN|P_MLE,
#if defined(FEAT_GUI_TABLINE)
- (char_u *)&p_gtl, PV_NONE,
+ (char_u *)&p_gtl, PV_NONE, did_set_guitablabel,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"guitabtooltip", "gtt", P_STRING|P_VI_DEF|P_RWIN,
#if defined(FEAT_GUI_TABLINE)
- (char_u *)&p_gtt, PV_NONE,
+ (char_u *)&p_gtt, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"hardtabs", "ht", P_NUM|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"helpfile", "hf", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- (char_u *)&p_hf, PV_NONE,
+ (char_u *)&p_hf, PV_NONE, did_set_helpfile,
{(char_u *)DFLT_HELPFILE, (char_u *)0L}
SCTX_INIT},
{"helpheight", "hh", P_NUM|P_VI_DEF,
(char_u *)&p_hh, PV_NONE,
+ did_set_winheight_helpheight,
{(char_u *)20L, (char_u *)0L} SCTX_INIT},
{"helplang", "hlg", P_STRING|P_VI_DEF|P_ONECOMMA,
#ifdef FEAT_MULTI_LANG
- (char_u *)&p_hlg, PV_NONE,
+ (char_u *)&p_hlg, PV_NONE, did_set_helplang,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"hidden", "hid", P_BOOL|P_VI_DEF,
- (char_u *)&p_hid, PV_NONE,
+ (char_u *)&p_hid, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"highlight", "hl", P_STRING|P_VI_DEF|P_RCLR|P_ONECOMMA|P_NODUP,
- (char_u *)&p_hl, PV_NONE,
+ (char_u *)&p_hl, PV_NONE, did_set_highlight,
{(char_u *)HIGHLIGHT_INIT, (char_u *)0L}
SCTX_INIT},
{"history", "hi", P_NUM|P_VIM,
- (char_u *)&p_hi, PV_NONE,
+ (char_u *)&p_hi, PV_NONE, NULL,
{(char_u *)0L, (char_u *)50L} SCTX_INIT},
{"hkmap", "hk", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_RIGHTLEFT
- (char_u *)&p_hkmap, PV_NONE,
+ (char_u *)&p_hkmap, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"hkmapp", "hkp", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_RIGHTLEFT
- (char_u *)&p_hkmapp, PV_NONE,
+ (char_u *)&p_hkmapp, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"hlsearch", "hls", P_BOOL|P_VI_DEF|P_VIM|P_RALL,
- (char_u *)&p_hls, PV_NONE,
+#if defined(FEAT_SEARCH_EXTRA)
+ (char_u *)&p_hls, PV_NONE, did_set_hlsearch,
+#else
+ (char_u *)NULL, PV_NONE, NULL,
+#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"icon", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_icon, PV_NONE,
+ (char_u *)&p_icon, PV_NONE, did_set_title_icon,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"iconstring", NULL, P_STRING|P_VI_DEF|P_MLE,
(char_u *)&p_iconstring, PV_NONE,
+ did_set_iconstring,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"ignorecase", "ic", P_BOOL|P_VI_DEF,
- (char_u *)&p_ic, PV_NONE,
+ (char_u *)&p_ic, PV_NONE, did_set_ignorecase,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"imactivatefunc","imaf",P_STRING|P_VI_DEF|P_SECURE|P_FUNC,
-#if defined(FEAT_EVAL)
+#if defined(FEAT_EVAL) && \
+ (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM) || defined(VIMDLL))
(char_u *)&p_imaf, PV_NONE,
+ did_set_imactivatefunc,
{(char_u *)"", (char_u *)NULL}
# else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
# endif
SCTX_INIT},
{"imactivatekey","imak",P_STRING|P_VI_DEF,
#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
(char_u *)&p_imak, PV_NONE,
+ did_set_imactivatekey,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"imcmdline", "imc", P_BOOL|P_VI_DEF,
- (char_u *)&p_imcmdline, PV_NONE,
+ (char_u *)&p_imcmdline, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"imdisable", "imd", P_BOOL|P_VI_DEF,
+#if defined(HAVE_INPUT_METHOD)
(char_u *)&p_imdisable, PV_NONE,
+ did_set_imdisable,
+#else
+ (char_u *)NULL, PV_NONE, NULL,
+#endif
{(char_u *)FALSE, (char_u *)0L}
SCTX_INIT},
{"iminsert", "imi", P_NUM|P_VI_DEF,
- (char_u *)&p_iminsert, PV_IMI,
+ (char_u *)&p_iminsert, PV_IMI, did_set_iminsert,
{(char_u *)B_IMODE_NONE, (char_u *)0L}
SCTX_INIT},
{"imsearch", "ims", P_NUM|P_VI_DEF,
- (char_u *)&p_imsearch, PV_IMS,
+ (char_u *)&p_imsearch, PV_IMS, did_set_imsearch,
{(char_u *)B_IMODE_USE_INSERT, (char_u *)0L}
SCTX_INIT},
{"imstatusfunc","imsf",P_STRING|P_VI_DEF|P_SECURE|P_FUNC,
-#if defined(FEAT_EVAL)
- (char_u *)&p_imsf, PV_NONE,
+#if defined(FEAT_EVAL) && \
+ (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM) || defined(VIMDLL))
+ (char_u *)&p_imsf, PV_NONE, did_set_imstatusfunc,
{(char_u *)"", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"imstyle", "imst", P_NUM|P_VI_DEF|P_SECURE,
#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
- (char_u *)&p_imst, PV_NONE,
+ (char_u *)&p_imst, PV_NONE, did_set_imstyle,
{(char_u *)IM_OVER_THE_SPOT, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"include", "inc", P_STRING|P_ALLOCED|P_VI_DEF,
#ifdef FEAT_FIND_ID
- (char_u *)&p_inc, PV_INC,
+ (char_u *)&p_inc, PV_INC, NULL,
{(char_u *)"^\\s*#\\s*include", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"includeexpr", "inex", P_STRING|P_ALLOCED|P_VI_DEF|P_MLE,
#if defined(FEAT_FIND_ID) && defined(FEAT_EVAL)
- (char_u *)&p_inex, PV_INEX,
+ (char_u *)&p_inex, PV_INEX, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"incsearch", "is", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_is, PV_NONE,
+ (char_u *)&p_is, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"indentexpr", "inde", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM|P_MLE,
#if defined(FEAT_EVAL)
- (char_u *)&p_inde, PV_INDE,
+ (char_u *)&p_inde, PV_INDE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"indentkeys", "indk", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
#if defined(FEAT_EVAL)
- (char_u *)&p_indk, PV_INDK,
+ (char_u *)&p_indk, PV_INDK, NULL,
{INDENTKEYS_DEFAULT, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"infercase", "inf", P_BOOL|P_VI_DEF,
- (char_u *)&p_inf, PV_INF,
+ (char_u *)&p_inf, PV_INF, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"insertmode", "im", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_im, PV_NONE,
+ (char_u *)&p_im, PV_NONE, did_set_insertmode,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"isfname", "isf", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
- (char_u *)&p_isf, PV_NONE,
+ (char_u *)&p_isf, PV_NONE, NULL,
{
#ifdef BACKSLASH_IN_FILENAME
// Excluded are: & and ^ are special in cmd.exe
@@ -1396,7 +1426,7 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"isident", "isi", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
- (char_u *)&p_isi, PV_NONE,
+ (char_u *)&p_isi, PV_NONE, NULL,
{
#if defined(MSWIN)
(char_u *)"@,48-57,_,128-167,224-235",
@@ -1405,7 +1435,7 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"iskeyword", "isk", P_STRING|P_ALLOCED|P_VIM|P_COMMA|P_NODUP,
- (char_u *)&p_isk, PV_ISK,
+ (char_u *)&p_isk, PV_ISK, NULL,
{
(char_u *)"@,48-57,_",
#if defined(MSWIN)
@@ -1415,7 +1445,7 @@ static struct vimoption options[] =
#endif
} SCTX_INIT},
{"isprint", "isp", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
- (char_u *)&p_isp, PV_NONE,
+ (char_u *)&p_isp, PV_NONE, NULL,
{
#if defined(MSWIN) || defined(VMS)
(char_u *)"@,~-255",
@@ -1424,35 +1454,35 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"joinspaces", "js", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_js, PV_NONE,
+ (char_u *)&p_js, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"key", NULL, P_STRING|P_ALLOCED|P_VI_DEF|P_NO_MKRC,
#ifdef FEAT_CRYPT
- (char_u *)&p_key, PV_KEY,
+ (char_u *)&p_key, PV_KEY, did_set_cryptkey,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT|P_NFNAME|P_PRI_MKRC,
#ifdef FEAT_KEYMAP
- (char_u *)&p_keymap, PV_KMAP,
+ (char_u *)&p_keymap, PV_KMAP, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#endif
SCTX_INIT},
{"keymodel", "km", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_km, PV_NONE,
+ (char_u *)&p_km, PV_NONE, did_set_keymodel,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"keyprotocol", "kpc", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_kpc, PV_NONE,
+ (char_u *)&p_kpc, PV_NONE, did_set_keyprotocol,
{(char_u *)"kitty:kitty,foot:kitty,wezterm:kitty,xterm:mok2", (char_u *)0L}
SCTX_INIT},
{"keywordprg", "kp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- (char_u *)&p_kp, PV_KP,
+ (char_u *)&p_kp, PV_KP, NULL,
{
#if defined(MSWIN)
(char_u *)":help",
@@ -1466,49 +1496,49 @@ static struct vimoption options[] =
(char_u *)0L} SCTX_INIT},
{"langmap", "lmap", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP|P_SECURE,
#ifdef FEAT_LANGMAP
- (char_u *)&p_langmap, PV_NONE,
+ (char_u *)&p_langmap, PV_NONE, did_set_langmap,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"langmenu", "lm", P_STRING|P_VI_DEF|P_NFNAME,
#if defined(FEAT_MENU) && defined(FEAT_MULTI_LANG)
- (char_u *)&p_lm, PV_NONE,
+ (char_u *)&p_lm, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"langnoremap", "lnr", P_BOOL|P_VI_DEF,
#ifdef FEAT_LANGMAP
- (char_u *)&p_lnr, PV_NONE,
+ (char_u *)&p_lnr, PV_NONE, did_set_langnoremap,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"langremap", "lrm", P_BOOL|P_VI_DEF,
#ifdef FEAT_LANGMAP
- (char_u *)&p_lrm, PV_NONE,
+ (char_u *)&p_lrm, PV_NONE, did_set_langremap,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"laststatus", "ls", P_NUM|P_VI_DEF|P_RALL,
- (char_u *)&p_ls, PV_NONE,
+ (char_u *)&p_ls, PV_NONE, did_set_laststatus,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"lazyredraw", "lz", P_BOOL|P_VI_DEF,
- (char_u *)&p_lz, PV_NONE,
+ (char_u *)&p_lz, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"linebreak", "lbr", P_BOOL|P_VI_DEF|P_RWIN,
#ifdef FEAT_LINEBREAK
- (char_u *)VAR_WIN, PV_LBR,
+ (char_u *)VAR_WIN, PV_LBR, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"lines", NULL, P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
- (char_u *)&Rows, PV_NONE,
+ (char_u *)&Rows, PV_NONE, NULL,
{
#if defined(MSWIN)
(char_u *)25L,
@@ -1519,8 +1549,9 @@ static struct vimoption options[] =
{"linespace", "lsp", P_NUM|P_VI_DEF|P_RCLR,
#ifdef FEAT_GUI
(char_u *)&p_linespace, PV_NONE,
+ did_set_linespace,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
#ifdef FEAT_GUI_MSWIN
{(char_u *)1L, (char_u *)0L}
@@ -1529,135 +1560,135 @@ static struct vimoption options[] =
#endif
SCTX_INIT},
{"lisp", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_lisp, PV_LISP,
+ (char_u *)&p_lisp, PV_LISP, did_set_lisp,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"lispoptions", "lop", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_lop, PV_LOP,
+ (char_u *)&p_lop, PV_LOP, did_set_lispoptions,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"lispwords", "lw", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_lispwords, PV_LW,
+ (char_u *)&p_lispwords, PV_LW, NULL,
{(char_u *)LISPWORD_VALUE, (char_u *)0L} SCTX_INIT},
{"list", NULL, P_BOOL|P_VI_DEF|P_RWIN,
- (char_u *)VAR_WIN, PV_LIST,
+ (char_u *)VAR_WIN, PV_LIST, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"listchars", "lcs", P_STRING|P_VI_DEF|P_RALL|P_ONECOMMA|P_NODUP,
- (char_u *)&p_lcs, PV_LCS,
+ (char_u *)&p_lcs, PV_LCS, NULL,
{(char_u *)"eol:$", (char_u *)0L} SCTX_INIT},
{"loadplugins", "lpl", P_BOOL|P_VI_DEF,
- (char_u *)&p_lpl, PV_NONE,
+ (char_u *)&p_lpl, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"luadll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_LUA)
- (char_u *)&p_luadll, PV_NONE,
+ (char_u *)&p_luadll, PV_NONE, NULL,
{(char_u *)DYNAMIC_LUA_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#endif
SCTX_INIT},
{"macatsui", NULL, P_BOOL|P_VI_DEF|P_RCLR,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"magic", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_magic, PV_NONE,
+ (char_u *)&p_magic, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"makeef", "mef", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_mef, PV_NONE,
+ (char_u *)&p_mef, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"makeencoding","menc", P_STRING|P_VI_DEF,
- (char_u *)&p_menc, PV_MENC,
+ (char_u *)&p_menc, PV_MENC, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"makeprg", "mp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_mp, PV_MP,
+ (char_u *)&p_mp, PV_MP, NULL,
# ifdef VMS
{(char_u *)"MMS", (char_u *)0L}
# else
{(char_u *)"make", (char_u *)0L}
# endif
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"matchpairs", "mps", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_mps, PV_MPS,
+ (char_u *)&p_mps, PV_MPS, did_set_matchpairs,
{(char_u *)"(:),{:},[:]", (char_u *)0L}
SCTX_INIT},
{"matchtime", "mat", P_NUM|P_VI_DEF,
- (char_u *)&p_mat, PV_NONE,
+ (char_u *)&p_mat, PV_NONE, NULL,
{(char_u *)5L, (char_u *)0L} SCTX_INIT},
{"maxcombine", "mco", P_NUM|P_VI_DEF|P_CURSWANT,
- (char_u *)&p_mco, PV_NONE,
+ (char_u *)&p_mco, PV_NONE, did_set_maxcombine,
{(char_u *)2, (char_u *)0L} SCTX_INIT},
{"maxfuncdepth", "mfd", P_NUM|P_VI_DEF,
#ifdef FEAT_EVAL
- (char_u *)&p_mfd, PV_NONE,
+ (char_u *)&p_mfd, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)100L, (char_u *)0L} SCTX_INIT},
{"maxmapdepth", "mmd", P_NUM|P_VI_DEF,
- (char_u *)&p_mmd, PV_NONE,
+ (char_u *)&p_mmd, PV_NONE, NULL,
{(char_u *)1000L, (char_u *)0L} SCTX_INIT},
{"maxmem", "mm", P_NUM|P_VI_DEF,
- (char_u *)&p_mm, PV_NONE,
+ (char_u *)&p_mm, PV_NONE, NULL,
{(char_u *)DFLT_MAXMEM, (char_u *)0L}
SCTX_INIT},
{"maxmempattern","mmp", P_NUM|P_VI_DEF,
- (char_u *)&p_mmp, PV_NONE,
+ (char_u *)&p_mmp, PV_NONE, NULL,
{(char_u *)1000L, (char_u *)0L} SCTX_INIT},
{"maxmemtot", "mmt", P_NUM|P_VI_DEF,
- (char_u *)&p_mmt, PV_NONE,
+ (char_u *)&p_mmt, PV_NONE, NULL,
{(char_u *)DFLT_MAXMEMTOT, (char_u *)0L}
SCTX_INIT},
{"menuitems", "mis", P_NUM|P_VI_DEF,
#ifdef FEAT_MENU
- (char_u *)&p_mis, PV_NONE,
+ (char_u *)&p_mis, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)25L, (char_u *)0L} SCTX_INIT},
{"mesg", NULL, P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"mkspellmem", "msm", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE,
#ifdef FEAT_SPELL
- (char_u *)&p_msm, PV_NONE,
+ (char_u *)&p_msm, PV_NONE, did_set_mkspellmem,
{(char_u *)"460000,2000,500", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"modeline", "ml", P_BOOL|P_VIM,
- (char_u *)&p_ml, PV_ML,
+ (char_u *)&p_ml, PV_ML, NULL,
{(char_u *)FALSE, (char_u *)TRUE} SCTX_INIT},
{"modelineexpr", "mle", P_BOOL|P_VI_DEF|P_SECURE,
- (char_u *)&p_mle, PV_NONE,
+ (char_u *)&p_mle, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"modelines", "mls", P_NUM|P_VI_DEF,
- (char_u *)&p_mls, PV_NONE,
+ (char_u *)&p_mls, PV_NONE, NULL,
{(char_u *)5L, (char_u *)0L} SCTX_INIT},
{"modifiable", "ma", P_BOOL|P_VI_DEF|P_NOGLOB,
- (char_u *)&p_ma, PV_MA,
+ (char_u *)&p_ma, PV_MA, did_set_modifiable,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"modified", "mod", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
- (char_u *)&p_mod, PV_MOD,
+ (char_u *)&p_mod, PV_MOD, did_set_modified,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"more", NULL, P_BOOL|P_VIM,
- (char_u *)&p_more, PV_NONE,
+ (char_u *)&p_more, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)TRUE} SCTX_INIT},
{"mouse", NULL, P_STRING|P_VI_DEF|P_FLAGLIST,
- (char_u *)&p_mouse, PV_NONE,
+ (char_u *)&p_mouse, PV_NONE, NULL,
{
#if defined(MSWIN)
(char_u *)"a",
@@ -1667,20 +1698,20 @@ static struct vimoption options[] =
(char_u *)0L} SCTX_INIT},
{"mousefocus", "mousef", P_BOOL|P_VI_DEF,
#ifdef FEAT_GUI
- (char_u *)&p_mousef, PV_NONE,
+ (char_u *)&p_mousef, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"mousehide", "mh", P_BOOL|P_VI_DEF,
#ifdef FEAT_GUI
- (char_u *)&p_mh, PV_NONE,
+ (char_u *)&p_mh, PV_NONE, did_set_mousehide,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"mousemodel", "mousem", P_STRING|P_VI_DEF,
- (char_u *)&p_mousem, PV_NONE,
+ (char_u *)&p_mousem, PV_NONE, did_set_mousemodel,
{
#if defined(MSWIN)
(char_u *)"popup",
@@ -1694,123 +1725,127 @@ static struct vimoption options[] =
(char_u *)0L} SCTX_INIT},
{"mousemoveevent", "mousemev", P_BOOL|P_VI_DEF,
#ifdef FEAT_GUI
- (char_u *)&p_mousemev, PV_NONE,
+ (char_u *)&p_mousemev, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"mouseshape", "mouses", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_MOUSESHAPE
(char_u *)&p_mouseshape, PV_NONE,
+ did_set_mouseshape,
{(char_u *)"i-r:beam,s:updown,sd:udsizing,vs:leftright,vd:lrsizing,m:no,ml:up-arrow,v:rightup-arrow", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"mousetime", "mouset", P_NUM|P_VI_DEF,
- (char_u *)&p_mouset, PV_NONE,
+ (char_u *)&p_mouset, PV_NONE, NULL,
{(char_u *)500L, (char_u *)0L} SCTX_INIT},
{"mzschemedll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_MZSCHEME)
- (char_u *)&p_mzschemedll, PV_NONE,
+ (char_u *)&p_mzschemedll, PV_NONE, NULL,
{(char_u *)DYNAMIC_MZSCH_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#endif
SCTX_INIT},
{"mzschemegcdll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_MZSCHEME)
- (char_u *)&p_mzschemegcdll, PV_NONE,
+ (char_u *)&p_mzschemegcdll, PV_NONE, NULL,
{(char_u *)DYNAMIC_MZGC_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#endif
SCTX_INIT},
{"mzquantum", "mzq", P_NUM,
#ifdef FEAT_MZSCHEME
- (char_u *)&p_mzq, PV_NONE,
+ (char_u *)&p_mzq, PV_NONE, did_set_mzquantum,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)100L, (char_u *)100L} SCTX_INIT},
{"novice", NULL, P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"nrformats", "nf", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_nf, PV_NF,
+ (char_u *)&p_nf, PV_NF, NULL,
{(char_u *)"bin,octal,hex", (char_u *)0L}
SCTX_INIT},
{"number", "nu", P_BOOL|P_VI_DEF|P_RWIN,
(char_u *)VAR_WIN, PV_NU,
+ did_set_number_relativenumber,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"numberwidth", "nuw", P_NUM|P_RWIN|P_VIM,
#ifdef FEAT_LINEBREAK
- (char_u *)VAR_WIN, PV_NUW,
+ (char_u *)VAR_WIN, PV_NUW, did_set_numberwidth,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)8L, (char_u *)4L} SCTX_INIT},
{"omnifunc", "ofu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE|P_FUNC,
#ifdef FEAT_COMPL_FUNC
- (char_u *)&p_ofu, PV_OFU,
+ (char_u *)&p_ofu, PV_OFU, did_set_omnifunc,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"open", NULL, P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"opendevice", "odev", P_BOOL|P_VI_DEF,
#if defined(MSWIN)
- (char_u *)&p_odev, PV_NONE,
+ (char_u *)&p_odev, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)FALSE}
SCTX_INIT},
{"operatorfunc", "opfunc", P_STRING|P_VI_DEF|P_SECURE|P_FUNC,
(char_u *)&p_opfunc, PV_NONE,
+ did_set_operatorfunc,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"optimize", "opt", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"packpath", "pp", P_STRING|P_VI_DEF|P_EXPAND|P_ONECOMMA|P_NODUP
|P_SECURE,
- (char_u *)&p_pp, PV_NONE,
+ (char_u *)&p_pp, PV_NONE, NULL,
{(char_u *)DFLT_RUNTIMEPATH, (char_u *)0L}
SCTX_INIT},
{"paragraphs", "para", P_STRING|P_VI_DEF,
- (char_u *)&p_para, PV_NONE,
+ (char_u *)&p_para, PV_NONE, NULL,
{(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
(char_u *)0L} SCTX_INIT},
{"paste", NULL, P_BOOL|P_VI_DEF|P_PRI_MKRC,
- (char_u *)&p_paste, PV_NONE,
+ (char_u *)&p_paste, PV_NONE, did_set_paste,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"pastetoggle", "pt", P_STRING|P_VI_DEF,
- (char_u *)&p_pt, PV_NONE,
+ (char_u *)&p_pt, PV_NONE, did_set_pastetoggle,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"patchexpr", "pex", P_STRING|P_VI_DEF|P_SECURE,
#if defined(FEAT_DIFF) && defined(FEAT_EVAL)
- (char_u *)&p_pex, PV_NONE,
+ (char_u *)&p_pex, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"patchmode", "pm", P_STRING|P_VI_DEF|P_NFNAME,
(char_u *)&p_pm, PV_NONE,
+ did_set_backupext_or_patchmode,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"path", "pa", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
- (char_u *)&p_path, PV_PATH,
+ (char_u *)&p_path, PV_PATH, NULL,
{
#if defined(AMIGA) || defined(MSWIN)
(char_u *)".,,",
@@ -1820,69 +1855,70 @@ static struct vimoption options[] =
(char_u *)0L} SCTX_INIT},
{"perldll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_PERL)
- (char_u *)&p_perldll, PV_NONE,
+ (char_u *)&p_perldll, PV_NONE, NULL,
{(char_u *)DYNAMIC_PERL_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"preserveindent", "pi", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_pi, PV_PI,
+ (char_u *)&p_pi, PV_PI, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"previewheight", "pvh", P_NUM|P_VI_DEF,
#if defined(FEAT_QUICKFIX)
- (char_u *)&p_pvh, PV_NONE,
+ (char_u *)&p_pvh, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)12L, (char_u *)0L} SCTX_INIT},
{"previewpopup", "pvp", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
#ifdef FEAT_PROP_POPUP
- (char_u *)&p_pvp, PV_NONE,
+ (char_u *)&p_pvp, PV_NONE, did_set_previewpopup,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"previewwindow", "pvw", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
#if defined(FEAT_QUICKFIX)
- (char_u *)VAR_WIN, PV_PVW,
+ (char_u *)VAR_WIN, PV_PVW, did_set_previewwindow,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"printdevice", "pdev", P_STRING|P_VI_DEF|P_SECURE,
#ifdef FEAT_PRINTER
- (char_u *)&p_pdev, PV_NONE,
+ (char_u *)&p_pdev, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printencoding", "penc", P_STRING|P_VI_DEF,
#ifdef FEAT_POSTSCRIPT
(char_u *)&p_penc, PV_NONE,
+ did_set_printencoding,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printexpr", "pexpr", P_STRING|P_VI_DEF|P_SECURE,
#ifdef FEAT_POSTSCRIPT
- (char_u *)&p_pexpr, PV_NONE,
+ (char_u *)&p_pexpr, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printfont", "pfn", P_STRING|P_VI_DEF,
#ifdef FEAT_PRINTER
- (char_u *)&p_pfn, PV_NONE,
+ (char_u *)&p_pfn, PV_NONE, NULL,
{
# ifdef MSWIN
(char_u *)"Courier_New:h10",
@@ -1891,250 +1927,253 @@ static struct vimoption options[] =
# endif
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printheader", "pheader", P_STRING|P_VI_DEF|P_GETTEXT,
#ifdef FEAT_PRINTER
- (char_u *)&p_header, PV_NONE,
+ (char_u *)&p_header, PV_NONE, NULL,
// untranslated to avoid problems when 'encoding'
// is changed
{(char_u *)"%<%f%h%m%=Page %N", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printmbcharset", "pmbcs", P_STRING|P_VI_DEF,
#if defined(FEAT_POSTSCRIPT)
- (char_u *)&p_pmcs, PV_NONE,
+ (char_u *)&p_pmcs, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printmbfont", "pmbfn", P_STRING|P_VI_DEF,
#if defined(FEAT_POSTSCRIPT)
- (char_u *)&p_pmfn, PV_NONE,
+ (char_u *)&p_pmfn, PV_NONE, parse_printmbfont,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"printoptions", "popt", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_PRINTER
- (char_u *)&p_popt, PV_NONE,
+ (char_u *)&p_popt, PV_NONE, parse_printoptions,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"prompt", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_prompt, PV_NONE,
+ (char_u *)&p_prompt, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"pumheight", "ph", P_NUM|P_VI_DEF,
- (char_u *)&p_ph, PV_NONE,
+ (char_u *)&p_ph, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"pumwidth", "pw", P_NUM|P_VI_DEF,
- (char_u *)&p_pw, PV_NONE,
+ (char_u *)&p_pw, PV_NONE, NULL,
{(char_u *)15L, (char_u *)15L} SCTX_INIT},
{"pythonthreedll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_PYTHON3)
- (char_u *)&p_py3dll, PV_NONE,
+ (char_u *)&p_py3dll, PV_NONE, NULL,
{(char_u *)DYNAMIC_PYTHON3_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"pythonthreehome", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(FEAT_PYTHON3)
- (char_u *)&p_py3home, PV_NONE,
+ (char_u *)&p_py3home, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"pythondll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_PYTHON)
- (char_u *)&p_pydll, PV_NONE,
+ (char_u *)&p_pydll, PV_NONE, NULL,
{(char_u *)DYNAMIC_PYTHON_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"pythonhome", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(FEAT_PYTHON)
- (char_u *)&p_pyhome, PV_NONE,
+ (char_u *)&p_pyhome, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"pyxversion", "pyx", P_NUM|P_VI_DEF|P_SECURE,
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
- (char_u *)&p_pyx, PV_NONE,
+ (char_u *)&p_pyx, PV_NONE, did_set_pyxversion,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)DEFAULT_PYTHON_VER, (char_u *)0L}
SCTX_INIT},
{"quickfixtextfunc", "qftf", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM|P_SECURE|P_FUNC,
#if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
(char_u *)&p_qftf, PV_NONE,
+ did_set_quickfixtextfunc,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)NULL}
#endif
SCTX_INIT},
{"quoteescape", "qe", P_STRING|P_ALLOCED|P_VI_DEF,
- (char_u *)&p_qe, PV_QE,
+ (char_u *)&p_qe, PV_QE, NULL,
{(char_u *)"\\", (char_u *)0L} SCTX_INIT},
{"readonly", "ro", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
- (char_u *)&p_ro, PV_RO,
+ (char_u *)&p_ro, PV_RO, did_set_readonly,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"redraw", NULL, P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"redrawtime", "rdt", P_NUM|P_VI_DEF,
#ifdef FEAT_RELTIME
- (char_u *)&p_rdt, PV_NONE,
+ (char_u *)&p_rdt, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)2000L, (char_u *)0L} SCTX_INIT},
{"regexpengine", "re", P_NUM|P_VI_DEF,
- (char_u *)&p_re, PV_NONE,
+ (char_u *)&p_re, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"relativenumber", "rnu", P_BOOL|P_VI_DEF|P_RWIN,
(char_u *)VAR_WIN, PV_RNU,
+ did_set_number_relativenumber,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"remap", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_remap, PV_NONE,
+ (char_u *)&p_remap, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"renderoptions", "rop", P_STRING|P_ONECOMMA|P_RCLR|P_VI_DEF,
#ifdef FEAT_RENDER_OPTIONS
- (char_u *)&p_rop, PV_NONE,
+ (char_u *)&p_rop, PV_NONE, did_set_renderoptions,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"report", NULL, P_NUM|P_VI_DEF,
- (char_u *)&p_report, PV_NONE,
+ (char_u *)&p_report, PV_NONE, NULL,
{(char_u *)2L, (char_u *)0L} SCTX_INIT},
{"restorescreen", "rs", P_BOOL|P_VI_DEF,
#ifdef MSWIN
- (char_u *)&p_rs, PV_NONE,
+ (char_u *)&p_rs, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"revins", "ri", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_RIGHTLEFT
- (char_u *)&p_ri, PV_NONE,
+ (char_u *)&p_ri, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"rightleft", "rl", P_BOOL|P_VI_DEF|P_RWIN,
#ifdef FEAT_RIGHTLEFT
- (char_u *)VAR_WIN, PV_RL,
+ (char_u *)VAR_WIN, PV_RL, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"rightleftcmd", "rlc", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN,
#ifdef FEAT_RIGHTLEFT
- (char_u *)VAR_WIN, PV_RLC,
+ (char_u *)VAR_WIN, PV_RLC, NULL,
{(char_u *)"search", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"rubydll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_RUBY)
- (char_u *)&p_rubydll, PV_NONE,
+ (char_u *)&p_rubydll, PV_NONE, NULL,
{(char_u *)DYNAMIC_RUBY_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"ruler", "ru", P_BOOL|P_VI_DEF|P_VIM|P_RSTAT,
- (char_u *)&p_ru, PV_NONE,
+ (char_u *)&p_ru, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"rulerformat", "ruf", P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT|P_MLE,
#ifdef FEAT_STL_OPT
- (char_u *)&p_ruf, PV_NONE,
+ (char_u *)&p_ruf, PV_NONE, did_set_rulerformat,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"runtimepath", "rtp", P_STRING|P_VI_DEF|P_EXPAND|P_ONECOMMA|P_NODUP
|P_SECURE,
- (char_u *)&p_rtp, PV_NONE,
+ (char_u *)&p_rtp, PV_NONE, NULL,
{(char_u *)DFLT_RUNTIMEPATH, (char_u *)0L}
SCTX_INIT},
{"scroll", "scr", P_NUM|P_NO_MKRC|P_VI_DEF,
- (char_u *)VAR_WIN, PV_SCROLL,
+ (char_u *)VAR_WIN, PV_SCROLL, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"scrollbind", "scb", P_BOOL|P_VI_DEF,
- (char_u *)VAR_WIN, PV_SCBIND,
+ (char_u *)VAR_WIN, PV_SCBIND, did_set_scrollbind,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"scrollfocus", "scf", P_BOOL|P_VI_DEF,
#if defined(MSWIN) && defined(FEAT_GUI)
- (char_u *)&p_scf, PV_NONE,
+ (char_u *)&p_scf, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"scrolljump", "sj", P_NUM|P_VI_DEF|P_VIM,
- (char_u *)&p_sj, PV_NONE,
+ (char_u *)&p_sj, PV_NONE, NULL,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"scrolloff", "so", P_NUM|P_VI_DEF|P_VIM|P_RALL,
- (char_u *)&p_so, PV_SO,
+ (char_u *)&p_so, PV_SO, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"scrollopt", "sbo", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_sbo, PV_NONE,
+ (char_u *)&p_sbo, PV_NONE, NULL,
{(char_u *)"ver,jump", (char_u *)0L}
SCTX_INIT},
{"sections", "sect", P_STRING|P_VI_DEF,
- (char_u *)&p_sections, PV_NONE,
+ (char_u *)&p_sections, PV_NONE, NULL,
{(char_u *)"SHNHH HUnhsh", (char_u *)0L}
SCTX_INIT},
{"secure", NULL, P_BOOL|P_VI_DEF|P_SECURE,
- (char_u *)&p_secure, PV_NONE,
+ (char_u *)&p_secure, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"selection", "sel", P_STRING|P_VI_DEF,
- (char_u *)&p_sel, PV_NONE,
+ (char_u *)&p_sel, PV_NONE, did_set_selection,
{(char_u *)"inclusive", (char_u *)0L}
SCTX_INIT},
{"selectmode", "slm", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_slm, PV_NONE,
+ (char_u *)&p_slm, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_SESSION
(char_u *)&p_ssop, PV_NONE,
+ did_set_sessionoptions,
{(char_u *)"blank,buffers,curdir,folds,help,options,tabpages,winsize,terminal",
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"shell", "sh", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- (char_u *)&p_sh, PV_NONE,
+ (char_u *)&p_sh, PV_NONE, NULL,
{
#ifdef VMS
(char_u *)"-",
@@ -2147,7 +2186,7 @@ static struct vimoption options[] =
#endif // VMS
(char_u *)0L} SCTX_INIT},
{"shellcmdflag","shcf", P_STRING|P_VI_DEF|P_SECURE,
- (char_u *)&p_shcf, PV_NONE,
+ (char_u *)&p_shcf, PV_NONE, NULL,
{
#if defined(MSWIN)
(char_u *)"/c",
@@ -2157,7 +2196,7 @@ static struct vimoption options[] =
(char_u *)0L} SCTX_INIT},
{"shellpipe", "sp", P_STRING|P_VI_DEF|P_SECURE,
#ifdef FEAT_QUICKFIX
- (char_u *)&p_sp, PV_NONE,
+ (char_u *)&p_sp, PV_NONE, NULL,
{
#if defined(UNIX)
(char_u *)"| tee",
@@ -2166,35 +2205,35 @@ static struct vimoption options[] =
#endif
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"shellquote", "shq", P_STRING|P_VI_DEF|P_SECURE,
- (char_u *)&p_shq, PV_NONE,
+ (char_u *)&p_shq, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"shellredir", "srr", P_STRING|P_VI_DEF|P_SECURE,
- (char_u *)&p_srr, PV_NONE,
+ (char_u *)&p_srr, PV_NONE, NULL,
{(char_u *)">", (char_u *)0L} SCTX_INIT},
{"shellslash", "ssl", P_BOOL|P_VI_DEF,
#ifdef BACKSLASH_IN_FILENAME
- (char_u *)&p_ssl, PV_NONE,
+ (char_u *)&p_ssl, PV_NONE, did_set_shellslash,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"shelltemp", "stmp", P_BOOL,
- (char_u *)&p_stmp, PV_NONE,
+ (char_u *)&p_stmp, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)TRUE} SCTX_INIT},
{"shelltype", "st", P_NUM|P_VI_DEF,
#ifdef AMIGA
- (char_u *)&p_st, PV_NONE,
+ (char_u *)&p_st, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"shellxquote", "sxq", P_STRING|P_VI_DEF|P_SECURE,
- (char_u *)&p_sxq, PV_NONE,
+ (char_u *)&p_sxq, PV_NONE, NULL,
{
#if defined(UNIX) && defined(USE_SYSTEM)
(char_u *)"\"",
@@ -2203,7 +2242,7 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"shellxescape", "sxe", P_STRING|P_VI_DEF|P_SECURE,
- (char_u *)&p_sxe, PV_NONE,
+ (char_u *)&p_sxe, PV_NONE, NULL,
{
#if defined(MSWIN)
(char_u *)"\"&|<>()@^",
@@ -2212,27 +2251,28 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"shiftround", "sr", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_sr, PV_NONE,
+ (char_u *)&p_sr, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"shiftwidth", "sw", P_NUM|P_VI_DEF,
(char_u *)&p_sw, PV_SW,
+ did_set_shiftwidth_tabstop,
{(char_u *)8L, (char_u *)0L} SCTX_INIT},
{"shortmess", "shm", P_STRING|P_VIM|P_FLAGLIST,
- (char_u *)&p_shm, PV_NONE,
+ (char_u *)&p_shm, PV_NONE, NULL,
{(char_u *)"S", (char_u *)"filnxtToOS"}
SCTX_INIT},
{"shortname", "sn", P_BOOL|P_VI_DEF,
- (char_u *)&p_sn, PV_SN,
+ (char_u *)&p_sn, PV_SN, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"showbreak", "sbr", P_STRING|P_VI_DEF|P_RALL,
#ifdef FEAT_LINEBREAK
- (char_u *)&p_sbr, PV_SBR,
+ (char_u *)&p_sbr, PV_SBR, did_set_showbreak,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"showcmd", "sc", P_BOOL|P_VIM,
- (char_u *)&p_sc, PV_NONE,
+ (char_u *)&p_sc, PV_NONE, NULL,
{(char_u *)FALSE,
#ifdef UNIX
(char_u *)FALSE
@@ -2241,180 +2281,181 @@ static struct vimoption options[] =
#endif
} SCTX_INIT},
{"showcmdloc", "sloc", P_STRING|P_RSTAT,
- (char_u *)&p_sloc, PV_NONE,
+ (char_u *)&p_sloc, PV_NONE, NULL,
{(char_u *)"last", (char_u *)"last"} SCTX_INIT},
{"showfulltag", "sft", P_BOOL|P_VI_DEF,
- (char_u *)&p_sft, PV_NONE,
+ (char_u *)&p_sft, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"showmatch", "sm", P_BOOL|P_VI_DEF,
- (char_u *)&p_sm, PV_NONE,
+ (char_u *)&p_sm, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"showmode", "smd", P_BOOL|P_VIM,
- (char_u *)&p_smd, PV_NONE,
+ (char_u *)&p_smd, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)TRUE} SCTX_INIT},
{"showtabline", "stal", P_NUM|P_VI_DEF|P_RALL,
- (char_u *)&p_stal, PV_NONE,
+ (char_u *)&p_stal, PV_NONE, did_set_showtabline,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"sidescroll", "ss", P_NUM|P_VI_DEF,
- (char_u *)&p_ss, PV_NONE,
+ (char_u *)&p_ss, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"sidescrolloff", "siso", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
- (char_u *)&p_siso, PV_SISO,
+ (char_u *)&p_siso, PV_SISO, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"signcolumn", "scl", P_STRING|P_ALLOCED|P_VI_DEF|P_RCLR,
#ifdef FEAT_SIGNS
- (char_u *)VAR_WIN, PV_SCL,
+ (char_u *)VAR_WIN, PV_SCL, did_set_signcolumn,
{(char_u *)"auto", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"slowopen", "slow", P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"smartcase", "scs", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_scs, PV_NONE,
+ (char_u *)&p_scs, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"smartindent", "si", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_si, PV_SI,
+ (char_u *)&p_si, PV_SI, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"smarttab", "sta", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_sta, PV_NONE,
+ (char_u *)&p_sta, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"smoothscroll", "sms", P_BOOL|P_VI_DEF|P_RWIN,
- (char_u *)VAR_WIN, PV_SMS,
+ (char_u *)VAR_WIN, PV_SMS, did_set_smoothscroll,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"softtabstop", "sts", P_NUM|P_VI_DEF|P_VIM,
- (char_u *)&p_sts, PV_STS,
+ (char_u *)&p_sts, PV_STS, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"sourceany", NULL, P_BOOL|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"spell", NULL, P_BOOL|P_VI_DEF|P_RWIN,
#ifdef FEAT_SPELL
- (char_u *)VAR_WIN, PV_SPELL,
+ (char_u *)VAR_WIN, PV_SPELL, did_set_spell,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"spellcapcheck", "spc", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF,
#ifdef FEAT_SPELL
- (char_u *)&p_spc, PV_SPC,
+ (char_u *)&p_spc, PV_SPC, did_set_spellcapcheck,
{(char_u *)"[.?!]\\_[\\])'\" ]\\+", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"spellfile", "spf", P_STRING|P_EXPAND|P_ALLOCED|P_VI_DEF|P_SECURE
|P_ONECOMMA,
#ifdef FEAT_SPELL
- (char_u *)&p_spf, PV_SPF,
+ (char_u *)&p_spf, PV_SPF, did_set_spellfile,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"spelllang", "spl", P_STRING|P_ALLOCED|P_VI_DEF|P_ONECOMMA
|P_RBUF|P_EXPAND,
#ifdef FEAT_SPELL
- (char_u *)&p_spl, PV_SPL,
+ (char_u *)&p_spl, PV_SPL, did_set_spelllang,
{(char_u *)"en", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"spelloptions", "spo", P_STRING|P_ALLOCED|P_VI_DEF
|P_ONECOMMA|P_NODUP|P_RBUF,
#ifdef FEAT_SPELL
- (char_u *)&p_spo, PV_SPO,
+ (char_u *)&p_spo, PV_SPO, did_set_spelloptions,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE|P_ONECOMMA,
#ifdef FEAT_SPELL
- (char_u *)&p_sps, PV_NONE,
+ (char_u *)&p_sps, PV_NONE, did_set_spellsuggest,
{(char_u *)"best", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"splitbelow", "sb", P_BOOL|P_VI_DEF,
- (char_u *)&p_sb, PV_NONE,
+ (char_u *)&p_sb, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"splitkeep", "spk", P_STRING,
- (char_u *)&p_spk, PV_NONE,
+ (char_u *)&p_spk, PV_NONE, NULL,
{(char_u *)"cursor", (char_u *)"cursor"} SCTX_INIT},
{"splitright", "spr", P_BOOL|P_VI_DEF,
- (char_u *)&p_spr, PV_NONE,
+ (char_u *)&p_spr, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"startofline", "sol", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_sol, PV_NONE,
+ (char_u *)&p_sol, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"statusline" ,"stl", P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT|P_MLE,
#ifdef FEAT_STL_OPT
- (char_u *)&p_stl, PV_STL,
+ (char_u *)&p_stl, PV_STL, did_set_statusline,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"suffixes", "su", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_su, PV_NONE,
+ (char_u *)&p_su, PV_NONE, NULL,
{(char_u *)".bak,~,.o,.h,.info,.swp,.obj",
(char_u *)0L} SCTX_INIT},
{"suffixesadd", "sua", P_STRING|P_VI_DEF|P_ALLOCED|P_ONECOMMA|P_NODUP,
- (char_u *)&p_sua, PV_SUA,
+ (char_u *)&p_sua, PV_SUA, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"swapfile", "swf", P_BOOL|P_VI_DEF|P_RSTAT,
- (char_u *)&p_swf, PV_SWF,
+ (char_u *)&p_swf, PV_SWF, did_set_swapfile,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"swapsync", "sws", P_STRING|P_VI_DEF,
- (char_u *)&p_sws, PV_NONE,
+ (char_u *)&p_sws, PV_NONE, NULL,
{(char_u *)"fsync", (char_u *)0L} SCTX_INIT},
{"switchbuf", "swb", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_swb, PV_NONE,
+ (char_u *)&p_swb, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"synmaxcol", "smc", P_NUM|P_VI_DEF|P_RBUF,
#ifdef FEAT_SYN_HL
- (char_u *)&p_smc, PV_SMC,
+ (char_u *)&p_smc, PV_SMC, NULL,
{(char_u *)3000L, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"syntax", "syn", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
#ifdef FEAT_SYN_HL
- (char_u *)&p_syn, PV_SYN,
+ (char_u *)&p_syn, PV_SYN, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"tabline", "tal", P_STRING|P_VI_DEF|P_RALL|P_MLE,
#ifdef FEAT_STL_OPT
- (char_u *)&p_tal, PV_NONE,
+ (char_u *)&p_tal, PV_NONE, did_set_tabline,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"tabpagemax", "tpm", P_NUM|P_VI_DEF,
- (char_u *)&p_tpm, PV_NONE,
+ (char_u *)&p_tpm, PV_NONE, NULL,
{(char_u *)10L, (char_u *)0L} SCTX_INIT},
{"tabstop", "ts", P_NUM|P_VI_DEF|P_RBUF,
(char_u *)&p_ts, PV_TS,
+ did_set_shiftwidth_tabstop,
{(char_u *)8L, (char_u *)0L} SCTX_INIT},
{"tagbsearch", "tbs", P_BOOL|P_VI_DEF,
- (char_u *)&p_tbs, PV_NONE,
+ (char_u *)&p_tbs, PV_NONE, NULL,
#ifdef VMS // binary searching doesn't appear to work on VMS
{(char_u *)0L, (char_u *)0L}
#else
@@ -2422,25 +2463,25 @@ static struct vimoption options[] =
#endif
SCTX_INIT},
{"tagcase", "tc", P_STRING|P_VIM,
- (char_u *)&p_tc, PV_TC,
+ (char_u *)&p_tc, PV_TC, did_set_tagcase,
{(char_u *)"followic", (char_u *)"followic"} SCTX_INIT},
{"tagfunc", "tfu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE|P_FUNC,
#ifdef FEAT_EVAL
- (char_u *)&p_tfu, PV_TFU,
+ (char_u *)&p_tfu, PV_TFU, did_set_tagfunc,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"taglength", "tl", P_NUM|P_VI_DEF,
- (char_u *)&p_tl, PV_NONE,
+ (char_u *)&p_tl, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"tagrelative", "tr", P_BOOL|P_VIM,
- (char_u *)&p_tr, PV_NONE,
+ (char_u *)&p_tr, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)TRUE} SCTX_INIT},
{"tags", "tag", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_tags, PV_TAGS,
+ (char_u *)&p_tags, PV_TAGS, NULL,
{
#if defined(FEAT_EMACS_TAGS) && !defined(CASE_INSENSITIVE_FILENAME)
(char_u *)"./tags,./TAGS,tags,TAGS",
@@ -2449,85 +2490,85 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"tagstack", "tgst", P_BOOL|P_VI_DEF,
- (char_u *)&p_tgst, PV_NONE,
+ (char_u *)&p_tgst, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"tcldll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_TCL)
- (char_u *)&p_tcldll, PV_NONE,
+ (char_u *)&p_tcldll, PV_NONE, NULL,
{(char_u *)DYNAMIC_TCL_DLL, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"term", NULL, P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL,
- (char_u *)&T_NAME, PV_NONE,
+ (char_u *)&T_NAME, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"termbidi", "tbidi", P_BOOL|P_VI_DEF,
#ifdef FEAT_ARABIC
- (char_u *)&p_tbidi, PV_NONE,
+ (char_u *)&p_tbidi, PV_NONE, NULL,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"termencoding", "tenc", P_STRING|P_VI_DEF|P_RCLR,
- (char_u *)&p_tenc, PV_NONE,
+ (char_u *)&p_tenc, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"termguicolors", "tgc", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
#ifdef FEAT_TERMGUICOLORS
- (char_u *)&p_tgc, PV_NONE,
+ (char_u *)&p_tgc, PV_NONE, did_set_termguicolors,
{(char_u *)FALSE, (char_u *)FALSE}
#else
- (char_u*)NULL, PV_NONE,
+ (char_u*)NULL, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)FALSE}
#endif
SCTX_INIT},
{"termwinkey", "twk", P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
#ifdef FEAT_TERMINAL
- (char_u *)VAR_WIN, PV_TWK,
+ (char_u *)VAR_WIN, PV_TWK, did_set_termwinkey,
{(char_u *)"", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"termwinscroll", "twsl", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
#ifdef FEAT_TERMINAL
- (char_u *)&p_twsl, PV_TWSL,
+ (char_u *)&p_twsl, PV_TWSL, NULL,
{(char_u *)10000L, (char_u *)10000L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"termwinsize", "tws", P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
#ifdef FEAT_TERMINAL
- (char_u *)VAR_WIN, PV_TWS,
+ (char_u *)VAR_WIN, PV_TWS, did_set_termwinsize,
{(char_u *)"", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"termwintype", "twt", P_STRING|P_ALLOCED|P_VI_DEF,
#if defined(MSWIN) && defined(FEAT_TERMINAL)
- (char_u *)&p_twt, PV_NONE,
+ (char_u *)&p_twt, PV_NONE, NULL,
{(char_u *)"", (char_u *)NULL}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"terse", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_terse, PV_NONE,
+ (char_u *)&p_terse, PV_NONE, did_set_terse,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"textauto", "ta", P_BOOL|P_VIM,
- (char_u *)&p_ta, PV_NONE,
+ (char_u *)&p_ta, PV_NONE, did_set_textauto,
{(char_u *)DFLT_TEXTAUTO, (char_u *)TRUE}
SCTX_INIT},
{"textmode", "tx", P_BOOL|P_VI_DEF|P_NO_MKRC,
- (char_u *)&p_tx, PV_TX,
+ (char_u *)&p_tx, PV_TX, did_set_textmode,
{
#ifdef USE_CRNL
(char_u *)TRUE,
@@ -2536,105 +2577,108 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"textwidth", "tw", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
- (char_u *)&p_tw, PV_TW,
+ (char_u *)&p_tw, PV_TW, did_set_textwidth,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"thesaurus", "tsr", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
- (char_u *)&p_tsr, PV_TSR,
+ (char_u *)&p_tsr, PV_TSR, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"thesaurusfunc", "tsrfu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE|P_FUNC,
#ifdef FEAT_COMPL_FUNC
(char_u *)&p_tsrfu, PV_TSRFU,
+ did_set_thesaurusfunc,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"tildeop", "top", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_to, PV_NONE,
+ (char_u *)&p_to, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"timeout", "to", P_BOOL|P_VI_DEF,
- (char_u *)&p_timeout, PV_NONE,
+ (char_u *)&p_timeout, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"timeoutlen", "tm", P_NUM|P_VI_DEF,
- (char_u *)&p_tm, PV_NONE,
+ (char_u *)&p_tm, PV_NONE, NULL,
{(char_u *)1000L, (char_u *)0L} SCTX_INIT},
{"title", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_title, PV_NONE,
+ (char_u *)&p_title, PV_NONE, did_set_title_icon,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"titlelen", NULL, P_NUM|P_VI_DEF,
- (char_u *)&p_titlelen, PV_NONE,
+ (char_u *)&p_titlelen, PV_NONE, did_set_titlelen,
{(char_u *)85L, (char_u *)0L} SCTX_INIT},
{"titleold", NULL, P_STRING|P_VI_DEF|P_GETTEXT|P_SECURE|P_NO_MKRC,
- (char_u *)&p_titleold, PV_NONE,
+ (char_u *)&p_titleold, PV_NONE, NULL,
{(char_u *)N_("Thanks for flying Vim"),
(char_u *)0L}
SCTX_INIT},
{"titlestring", NULL, P_STRING|P_VI_DEF|P_MLE,
(char_u *)&p_titlestring, PV_NONE,
+ did_set_titlestring,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"toolbar", "tb", P_STRING|P_ONECOMMA|P_VI_DEF|P_NODUP,
#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
- (char_u *)&p_toolbar, PV_NONE,
+ (char_u *)&p_toolbar, PV_NONE, did_set_toolbar,
{(char_u *)"icons,tooltips", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"toolbariconsize", "tbis", P_STRING|P_VI_DEF,
#if defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK)
(char_u *)&p_tbis, PV_NONE,
+ did_set_toolbariconsize,
{(char_u *)"small", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"ttimeout", NULL, P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_ttimeout, PV_NONE,
+ (char_u *)&p_ttimeout, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"ttimeoutlen", "ttm", P_NUM|P_VI_DEF,
- (char_u *)&p_ttm, PV_NONE,
+ (char_u *)&p_ttm, PV_NONE, NULL,
{(char_u *)-1L, (char_u *)0L} SCTX_INIT},
{"ttybuiltin", "tbi", P_BOOL|P_VI_DEF,
- (char_u *)&p_tbi, PV_NONE,
+ (char_u *)&p_tbi, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"ttyfast", "tf", P_BOOL|P_NO_MKRC|P_VI_DEF,
- (char_u *)&p_tf, PV_NONE,
+ (char_u *)&p_tf, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"ttymouse", "ttym", P_STRING|P_NODEFAULT|P_NO_MKRC|P_VI_DEF,
#if defined(UNIX) || defined(VMS)
- (char_u *)&p_ttym, PV_NONE,
+ (char_u *)&p_ttym, PV_NONE, did_set_ttymouse,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"ttyscroll", "tsl", P_NUM|P_VI_DEF,
- (char_u *)&p_ttyscroll, PV_NONE,
+ (char_u *)&p_ttyscroll, PV_NONE, NULL,
{(char_u *)999L, (char_u *)0L} SCTX_INIT},
{"ttytype", "tty", P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL,
- (char_u *)&T_NAME, PV_NONE,
+ (char_u *)&T_NAME, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"undodir", "udir", P_STRING|P_EXPAND|P_ONECOMMA|P_NODUP|P_SECURE
|P_VI_DEF,
#ifdef FEAT_PERSISTENT_UNDO
- (char_u *)&p_udir, PV_NONE,
+ (char_u *)&p_udir, PV_NONE, NULL,
{(char_u *)".", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"undofile", "udf", P_BOOL|P_VI_DEF|P_VIM,
#ifdef FEAT_PERSISTENT_UNDO
- (char_u *)&p_udf, PV_UDF,
+ (char_u *)&p_udf, PV_UDF, did_set_undofile,
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
#endif
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"undolevels", "ul", P_NUM|P_VI_DEF,
- (char_u *)&p_ul, PV_UL,
+ (char_u *)&p_ul, PV_UL, did_set_undolevels,
{
#if defined(UNIX) || defined(MSWIN) || defined(VMS)
(char_u *)1000L,
@@ -2643,60 +2687,61 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"undoreload", "ur", P_NUM|P_VI_DEF,
- (char_u *)&p_ur, PV_NONE,
+ (char_u *)&p_ur, PV_NONE, NULL,
{ (char_u *)10000L, (char_u *)0L} SCTX_INIT},
{"updatecount", "uc", P_NUM|P_VI_DEF,
- (char_u *)&p_uc, PV_NONE,
+ (char_u *)&p_uc, PV_NONE, did_set_updatecount,
{(char_u *)200L, (char_u *)0L} SCTX_INIT},
{"updatetime", "ut", P_NUM|P_VI_DEF,
- (char_u *)&p_ut, PV_NONE,
+ (char_u *)&p_ut, PV_NONE, NULL,
{(char_u *)4000L, (char_u *)0L} SCTX_INIT},
{"varsofttabstop", "vsts", P_STRING|P_VI_DEF|P_VIM|P_COMMA,
#ifdef FEAT_VARTABS
(char_u *)&p_vsts, PV_VSTS,
+ did_set_varsofttabstop,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)NULL}
#endif
SCTX_INIT},
{"vartabstop", "vts", P_STRING|P_VI_DEF|P_VIM|P_RBUF|P_COMMA,
#ifdef FEAT_VARTABS
- (char_u *)&p_vts, PV_VTS,
+ (char_u *)&p_vts, PV_VTS, did_set_vartabstop,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)"", (char_u *)NULL}
#endif
SCTX_INIT},
{"verbose", "vbs", P_NUM|P_VI_DEF,
- (char_u *)&p_verbose, PV_NONE,
+ (char_u *)&p_verbose, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"verbosefile", "vfile", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
- (char_u *)&p_vfile, PV_NONE,
+ (char_u *)&p_vfile, PV_NONE, did_set_verbosefile,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"viewdir", "vdir", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#ifdef FEAT_SESSION
- (char_u *)&p_vdir, PV_NONE,
+ (char_u *)&p_vdir, PV_NONE, NULL,
{(char_u *)DFLT_VDIR, (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"viewoptions", "vop", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
#ifdef FEAT_SESSION
- (char_u *)&p_vop, PV_NONE,
+ (char_u *)&p_vop, PV_NONE, NULL,
{(char_u *)"folds,options,cursor,curdir",
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"viminfo", "vi", P_STRING|P_ONECOMMA|P_NODUP|P_SECURE,
#ifdef FEAT_VIMINFO
- (char_u *)&p_viminfo, PV_NONE,
+ (char_u *)&p_viminfo, PV_NONE, NULL,
#if defined(MSWIN)
{(char_u *)"", (char_u *)"'100,<50,s10,h,rA:,rB:"}
#elif defined(AMIGA)
@@ -2706,103 +2751,104 @@ static struct vimoption options[] =
{(char_u *)"", (char_u *)"'100,<50,s10,h"}
#endif
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"viminfofile", "vif", P_STRING|P_EXPAND|P_ONECOMMA|P_NODUP
|P_SECURE|P_VI_DEF,
#ifdef FEAT_VIMINFO
- (char_u *)&p_viminfofile, PV_NONE,
+ (char_u *)&p_viminfofile, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"virtualedit", "ve", P_STRING|P_ONECOMMA|P_NODUP|P_VI_DEF
|P_VIM|P_CURSWANT,
- (char_u *)&p_ve, PV_VE,
+ (char_u *)&p_ve, PV_VE, did_set_virtualedit,
{(char_u *)"", (char_u *)""}
SCTX_INIT},
{"visualbell", "vb", P_BOOL|P_VI_DEF,
- (char_u *)&p_vb, PV_NONE,
+ (char_u *)&p_vb, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"w300", NULL, P_NUM|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"w1200", NULL, P_NUM|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"w9600", NULL, P_NUM|P_VI_DEF,
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"warn", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_warn, PV_NONE,
+ (char_u *)&p_warn, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"weirdinvert", "wiv", P_BOOL|P_VI_DEF|P_RCLR,
- (char_u *)&p_wiv, PV_NONE,
+ (char_u *)&p_wiv, PV_NONE, did_set_weirdinvert,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"whichwrap", "ww", P_STRING|P_VIM|P_ONECOMMA|P_FLAGLIST,
- (char_u *)&p_ww, PV_NONE,
+ (char_u *)&p_ww, PV_NONE, NULL,
{(char_u *)"", (char_u *)"b,s"} SCTX_INIT},
{"wildchar", "wc", P_NUM|P_VIM,
- (char_u *)&p_wc, PV_NONE,
+ (char_u *)&p_wc, PV_NONE, NULL,
{(char_u *)(long)Ctrl_E, (char_u *)(long)TAB}
SCTX_INIT},
{"wildcharm", "wcm", P_NUM|P_VI_DEF,
- (char_u *)&p_wcm, PV_NONE,
+ (char_u *)&p_wcm, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"wildignore", "wig", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_wig, PV_NONE,
+ (char_u *)&p_wig, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L} SCTX_INIT},
{"wildignorecase", "wic", P_BOOL|P_VI_DEF,
- (char_u *)&p_wic, PV_NONE,
+ (char_u *)&p_wic, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"wildmenu", "wmnu", P_BOOL|P_VI_DEF,
- (char_u *)&p_wmnu, PV_NONE,
+ (char_u *)&p_wmnu, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"wildmode", "wim", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_wim, PV_NONE,
+ (char_u *)&p_wim, PV_NONE, did_set_wildmode,
{(char_u *)"full", (char_u *)0L} SCTX_INIT},
{"wildoptions", "wop", P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
- (char_u *)&p_wop, PV_NONE,
+ (char_u *)&p_wop, PV_NONE, NULL,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
{"winaltkeys", "wak", P_STRING|P_VI_DEF,
#ifdef FEAT_WAK
- (char_u *)&p_wak, PV_NONE,
+ (char_u *)&p_wak, PV_NONE, did_set_winaltkeys,
{(char_u *)"menu", (char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)NULL, (char_u *)0L}
#endif
SCTX_INIT},
{"wincolor", "wcr", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN,
- (char_u *)VAR_WIN, PV_WCR,
+ (char_u *)VAR_WIN, PV_WCR, NULL,
{(char_u *)"", (char_u *)NULL}
SCTX_INIT},
{"window", "wi", P_NUM|P_VI_DEF,
- (char_u *)&p_window, PV_NONE,
+ (char_u *)&p_window, PV_NONE, did_set_window,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"winheight", "wh", P_NUM|P_VI_DEF,
(char_u *)&p_wh, PV_NONE,
+ did_set_winheight_helpheight,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"winfixheight", "wfh", P_BOOL|P_VI_DEF|P_RSTAT,
- (char_u *)VAR_WIN, PV_WFH,
+ (char_u *)VAR_WIN, PV_WFH, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"winfixwidth", "wfw", P_BOOL|P_VI_DEF|P_RSTAT,
- (char_u *)VAR_WIN, PV_WFW,
+ (char_u *)VAR_WIN, PV_WFW, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"winminheight", "wmh", P_NUM|P_VI_DEF,
- (char_u *)&p_wmh, PV_NONE,
+ (char_u *)&p_wmh, PV_NONE, did_set_winminheight,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"winminwidth", "wmw", P_NUM|P_VI_DEF,
- (char_u *)&p_wmw, PV_NONE,
+ (char_u *)&p_wmw, PV_NONE, did_set_winminwidth,
{(char_u *)1L, (char_u *)0L} SCTX_INIT},
{"winptydll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(MSWIN) && defined(FEAT_TERMINAL)
- (char_u *)&p_winptydll, PV_NONE, {
+ (char_u *)&p_winptydll, PV_NONE, NULL, {
# ifdef _WIN64
(char_u *)"winpty64.dll",
# else
@@ -2810,30 +2856,30 @@ static struct vimoption options[] =
# endif
(char_u *)0L}
#else
- (char_u *)NULL, PV_NONE,
+ (char_u *)NULL, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
{"winwidth", "wiw", P_NUM|P_VI_DEF,
- (char_u *)&p_wiw, PV_NONE,
+ (char_u *)&p_wiw, PV_NONE, did_set_winwidth,
{(char_u *)20L, (char_u *)0L} SCTX_INIT},
{"wrap", NULL, P_BOOL|P_VI_DEF|P_RWIN,
- (char_u *)VAR_WIN, PV_WRAP,
+ (char_u *)VAR_WIN, PV_WRAP, did_set_wrap,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"wrapmargin", "wm", P_NUM|P_VI_DEF,
- (char_u *)&p_wm, PV_WM,
+ (char_u *)&p_wm, PV_WM, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"wrapscan", "ws", P_BOOL|P_VI_DEF,
- (char_u *)&p_ws, PV_NONE,
+ (char_u *)&p_ws, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"write", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_write, PV_NONE,
+ (char_u *)&p_write, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
{"writeany", "wa", P_BOOL|P_VI_DEF,
- (char_u *)&p_wa, PV_NONE,
+ (char_u *)&p_wa, PV_NONE, NULL,
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
{"writebackup", "wb", P_BOOL|P_VI_DEF|P_VIM,
- (char_u *)&p_wb, PV_NONE,
+ (char_u *)&p_wb, PV_NONE, NULL,
{
#ifdef FEAT_WRITEBACKUP
(char_u *)TRUE,
@@ -2842,16 +2888,16 @@ static struct vimoption options[] =
#endif
(char_u *)0L} SCTX_INIT},
{"writedelay", "wd", P_NUM|P_VI_DEF,
- (char_u *)&p_wd, PV_NONE,
+ (char_u *)&p_wd, PV_NONE, NULL,
{(char_u *)0L, (char_u *)0L} SCTX_INIT},
{"xtermcodes", NULL, P_BOOL|P_VI_DEF,
- (char_u *)&p_xtermcodes, PV_NONE,
+ (char_u *)&p_xtermcodes, PV_NONE, NULL,
{(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
// terminal output codes
#define p_term(sss, vvv) \
{sss, NULL, P_STRING|P_VI_DEF|P_RALL|P_SECURE, \
- (char_u *)&vvv, PV_NONE, \
+ (char_u *)&vvv, PV_NONE, NULL, \
{(char_u *)"", (char_u *)0L} SCTX_INIT},
p_term("t_AB", T_CAB)
@@ -2947,7 +2993,7 @@ static struct vimoption options[] =
// terminal key codes are not in here
// end marker
- {NULL, NULL, 0, NULL, PV_NONE, {NULL, NULL} SCTX_INIT}
+ {NULL, NULL, 0, NULL, PV_NONE, NULL, {NULL, NULL} SCTX_INIT}
};
#define OPTION_COUNT ARRAY_LENGTH(options)
diff --git a/src/optionstr.c b/src/optionstr.c
index 8acbbf7c9..71ad1e4b2 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -541,7 +541,7 @@ set_string_option(
saved_newval = vim_strsave(s);
}
#endif
- if ((errmsg = did_set_string_option(opt_idx, varp, oldval, errbuf,
+ if ((errmsg = did_set_string_option(opt_idx, varp, oldval, value, errbuf,
opt_flags, &value_checked)) == NULL)
did_set_option(opt_idx, opt_flags, TRUE, value_checked);
@@ -691,22 +691,20 @@ did_set_term(int *opt_idx, long_u *free_oldval)
/*
* The 'backupcopy' option is changed.
*/
- static char *
-did_set_backupcopy(
- char_u *oldval,
- int opt_flags)
+ char *
+did_set_backupcopy(optset_T *args)
{
char_u *bkc = p_bkc;
unsigned int *flags = &bkc_flags;
char *errmsg = NULL;
- if (opt_flags & OPT_LOCAL)
+ if (args->os_flags & OPT_LOCAL)
{
bkc = curbuf->b_p_bkc;
flags = &curbuf->b_bkc_flags;
}
- if ((opt_flags & OPT_LOCAL) && *bkc == NUL)
+ if ((args->os_flags & OPT_LOCAL) && *bkc == NUL)
// make the local value empty: use the global value
*flags = 0;
else
@@ -718,7 +716,8 @@ did_set_backupcopy(
+ (((int)*flags & BKC_NO) != 0) != 1)
{
// Must have exactly one of "auto", "yes" and "no".
- (void)opt_strings_flags(oldval, p_bkc_values, flags, TRUE);
+ (void)opt_strings_flags(args->os_oldval.string, p_bkc_values,
+ flags, TRUE);
errmsg = e_invalid_argument;
}
}
@@ -729,8 +728,8 @@ did_set_backupcopy(
/*
* The 'backupext' or the 'patchmode' option is changed.
*/
- static char *
-did_set_backupext_or_patchmode(void)
+ char *
+did_set_backupext_or_patchmode(optset_T *args UNUSED)
{
if (STRCMP(*p_bex == '.' ? p_bex + 1 : p_bex,
*p_pm == '.' ? p_pm + 1 : p_pm) == 0)
@@ -739,12 +738,12 @@ did_set_backupext_or_patchmode(void)
return NULL;
}
-#ifdef FEAT_LINEBREAK
+#if defined(FEAT_LINEBREAK) || defined(PROTO)
/*
* The 'breakindentopt' option is changed.
*/
- static char *
-did_set_breakindentopt(void)
+ char *
+did_set_breakindentopt(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -780,14 +779,15 @@ did_set_isopt(int *did_chartab)
/*
* The 'helpfile' option is changed.
*/
- static void
-did_set_helpfile(void)
+ char *
+did_set_helpfile(optset_T *args UNUSED)
{
// May compute new values for $VIM and $VIMRUNTIME
if (didset_vim)
vim_unsetenv_ext((char_u *)"VIM");
if (didset_vimruntime)
vim_unsetenv_ext((char_u *)"VIMRUNTIME");
+ return NULL;
}
#ifdef FEAT_SYN_HL
@@ -804,12 +804,12 @@ did_set_cursorlineopt(char_u **varp)
}
#endif
-#ifdef FEAT_MULTI_LANG
+#if defined(FEAT_MULTI_LANG) || defined(PROTO)
/*
* The 'helplang' option is changed.
*/
- static char *
-did_set_helplang(void)
+ char *
+did_set_helplang(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -832,8 +832,8 @@ did_set_helplang(void)
/*
* The 'highlight' option is changed.
*/
- static char *
-did_set_highlight(void)
+ char *
+did_set_highlight(optset_T *args UNUSED)
{
if (highlight_changed() == FAIL)
return e_invalid_argument; // invalid flags
@@ -868,15 +868,16 @@ did_set_opt_strings(char_u *val, char **values, int list)
/*
* The 'sessionoptions' option is changed.
*/
- static char *
-did_set_sessionoptions(char_u *oldval)
+ char *
+did_set_sessionoptions(optset_T *args)
{
if (opt_strings_flags(p_ssop, p_ssop_values, &ssop_flags, TRUE) != OK)
return e_invalid_argument;
if ((ssop_flags & SSOP_CURDIR) && (ssop_flags & SSOP_SESDIR))
{
// Don't allow both "sesdir" and "curdir".
- (void)opt_strings_flags(oldval, p_ssop_values, &ssop_flags, TRUE);
+ (void)opt_strings_flags(args->os_oldval.string, p_ssop_values,
+ &ssop_flags, TRUE);
return e_invalid_argument;
}
@@ -887,8 +888,8 @@ did_set_sessionoptions(char_u *oldval)
/*
* The 'ambiwidth' option is changed.
*/
- static char *
-did_set_ambiwidth(void)
+ char *
+did_set_ambiwidth(optset_T *args UNUSED)
{
if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK)
return e_invalid_argument;
@@ -899,8 +900,8 @@ did_set_ambiwidth(void)
/*
* The 'background' option is changed.
*/
- static char *
-did_set_background(void)
+ char *
+did_set_background(optset_T *args UNUSED)
{
if (check_opt_strings(p_bg, p_bg_values, FALSE) == FAIL)
return e_invalid_argument;
@@ -935,20 +936,20 @@ did_set_background(void)
/*
* The 'wildmode' option is changed.
*/
- static char *
-did_set_wildmode(void)
+ char *
+did_set_wildmode(optset_T *args UNUSED)
{
if (check_opt_wim() == FAIL)
return e_invalid_argument;
return NULL;
}
-#ifdef FEAT_WAK
+#if defined(FEAT_WAK) || defined(PROTO)
/*
* The 'winaltkeys' option is changed.
*/
- static char *
-did_set_winaltkeys(void)
+ char *
+did_set_winaltkeys(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -971,8 +972,8 @@ did_set_winaltkeys(void)
/*
* The 'eventignore' option is changed.
*/
- static char *
-did_set_eventignore(void)
+ char *
+did_set_eventignore(optset_T *args UNUSED)
{
if (check_ei() == FAIL)
return e_invalid_argument;
@@ -1066,12 +1067,12 @@ did_set_encoding(char_u **varp, char_u **gvarp, int opt_flags)
return errmsg;
}
-#if defined(FEAT_POSTSCRIPT)
+#if defined(FEAT_POSTSCRIPT) || defined(PROTO)
/*
* The 'printencoding' option is changed.
*/
- static void
-did_set_printencoding(void)
+ char *
+did_set_printencoding(optset_T *args UNUSED)
{
char_u *s, *p;
@@ -1093,15 +1094,17 @@ did_set_printencoding(void)
*s = TOLOWER_ASC(*s);
}
}
+
+ return NULL;
}
#endif
-#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
+#if (defined(FEAT_XIM) && defined(FEAT_GUI_GTK)) || defined(PROTO)
/*
* The 'imactivatekey' option is changed.
*/
- static char *
-did_set_imactivatekey(void)
+ char *
+did_set_imactivatekey(optset_T *args UNUSED)
{
if (!im_xim_isvalid_imactivate())
return e_invalid_argument;
@@ -1170,12 +1173,12 @@ did_set_keymap(char_u **varp, int opt_flags, int *value_checked)
/*
* The 'fileformat' option is changed.
*/
- static char *
-did_set_fileformat(char_u **varp, char_u *oldval, int opt_flags)
+ char *
+did_set_fileformat(optset_T *args)
{
- if (!curbuf->b_p_ma && !(opt_flags & OPT_GLOBAL))
+ if (!curbuf->b_p_ma && !(args->os_flags & OPT_GLOBAL))
return e_cannot_make_changes_modifiable_is_off;
- else if (check_opt_strings(*varp, p_ff_values, FALSE) != OK)
+ else if (check_opt_strings(args->os_varp, p_ff_values, FALSE) != OK)
return e_invalid_argument;
// may also change 'textmode'
@@ -1188,7 +1191,7 @@ did_set_fileformat(char_u **varp, char_u *oldval, int opt_flags)
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')
+ if (get_fileformat(curbuf) == EOL_MAC || *args->os_oldval.string == 'm')
redraw_curbuf_later(UPD_NOT_VALID);
return NULL;
@@ -1197,8 +1200,8 @@ did_set_fileformat(char_u **varp, char_u *oldval, int opt_flags)
/*
* The 'fileformats' option is changed.
*/
- static char *
-did_set_fileformats(void)
+ char *
+did_set_fileformats(optset_T *args UNUSED)
{
if (check_opt_strings(p_ffs, p_ff_values, TRUE) != OK)
return e_invalid_argument;
@@ -1212,36 +1215,38 @@ did_set_fileformats(void)
return NULL;
}
-#if defined(FEAT_CRYPT)
+#if defined(FEAT_CRYPT) || defined(PROTO)
/*
* The 'cryptkey' option is changed.
*/
- static void
-did_set_cryptkey(char_u *oldval)
+ char *
+did_set_cryptkey(optset_T *args)
{
// Make sure the ":set" command doesn't show the new value in the
// history.
remove_key_from_history();
- if (STRCMP(curbuf->b_p_key, oldval) != 0)
+ if (STRCMP(curbuf->b_p_key, args->os_oldval.string) != 0)
{
// Need to update the swapfile.
- ml_set_crypt_key(curbuf, oldval,
+ ml_set_crypt_key(curbuf, args->os_oldval.string,
*curbuf->b_p_cm == NUL ? p_cm : curbuf->b_p_cm);
changed_internal();
}
+
+ return NULL;
}
/*
* The 'cryptmethod' option is changed.
*/
- static char *
-did_set_cryptmethod(char_u *oldval, int opt_flags)
+ char *
+did_set_cryptmethod(optset_T *args)
{
char_u *p;
char_u *s;
- if (opt_flags & OPT_LOCAL)
+ if (args->os_flags & OPT_LOCAL)
p = curbuf->b_p_cm;
else
p = p_cm;
@@ -1259,7 +1264,7 @@ did_set_cryptmethod(char_u *oldval, int opt_flags)
// When using ":set cm=name" the local value is going to be empty.
// Do that here, otherwise the crypt functions will still use the
// local value.
- if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
+ if ((args->os_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
{
free_string_option(curbuf->b_p_cm);
curbuf->b_p_cm = empty_option;
@@ -1268,10 +1273,10 @@ did_set_cryptmethod(char_u *oldval, int opt_flags)
// Need to update the swapfile when the effective method changed.
// Set "s" to the effective old value, "p" to the effective new
// method and compare.
- if ((opt_flags & OPT_LOCAL) && *oldval == NUL)
+ if ((args->os_flags & OPT_LOCAL) && *args->os_oldval.string == NUL)
s = p_cm; // was previously using the global value
else
- s = oldval;
+ s = args->os_oldval.string;
if (*curbuf->b_p_cm == NUL)
p = p_cm; // is now using the global value
else
@@ -1281,13 +1286,14 @@ did_set_cryptmethod(char_u *oldval, int opt_flags)
// If the global value changes need to update the swapfile for all
// buffers using that value.
- if ((opt_flags & OPT_GLOBAL) && STRCMP(p_cm, oldval) != 0)
+ if ((args->os_flags & OPT_GLOBAL)
+ && STRCMP(p_cm, args->os_oldval.string) != 0)
{
buf_T *buf;
FOR_ALL_BUFFERS(buf)
if (buf != curbuf && *buf->b_p_cm == NUL)
- ml_set_crypt_key(buf, buf->b_p_key, oldval);
+ ml_set_crypt_key(buf, buf->b_p_key, args->os_oldval.string);
}
return NULL;
}
@@ -1296,14 +1302,14 @@ did_set_cryptmethod(char_u *oldval, int opt_flags)
/*
* The 'matchpairs' option is changed.
*/
- static char *
-did_set_matchpairs(char_u **varp)
+ char *
+did_set_matchpairs(optset_T *args)
{
char_u *p;
if (has_mbyte)
{
- for (p = *varp; *p != NUL; ++p)
+ for (p = args->os_varp; *p != NUL; ++p)
{
int x2 = -1;
int x3 = -1;
@@ -1325,7 +1331,7 @@ did_set_matchpairs(char_u **varp)
else
{
// Check for "x:y,x:y"
- for (p = *varp; *p != NUL; p += 4)
+ for (p = args->os_varp; *p != NUL; p += 4)
{
if (p[1] != ':' || p[2] == NUL || (p[3] != NUL && p[3] != ','))
return e_invalid_argument;
@@ -1419,8 +1425,8 @@ did_set_global_listfillchars(char_u **varp, int opt_flags)
/*
* The 'verbosefile' option is changed.
*/
- static char *
-did_set_verbosefile(void)
+ char *
+did_set_verbosefile(optset_T *args UNUSED)
{
verbose_stop();
if (*p_vfile != NUL && verbose_open() == FAIL)
@@ -1560,16 +1566,16 @@ did_set_term_option(char_u **varp, int *did_swaptcap UNUSED)
}
}
-#ifdef FEAT_LINEBREAK
+#if defined(FEAT_LINEBREAK) || defined(PROTO)
/*
* The 'showbreak' option is changed.
*/
- static char *
-did_set_showbreak(char_u **varp)
+ char *
+did_set_showbreak(optset_T *args)
{
char_u *s;
- for (s = *varp; *s; )
+ for (s = args->os_varp; *s; )
{
if (ptr2cells(s) != 1)
return e_showbreak_contains_unprintable_or_wide_character;
@@ -1580,12 +1586,12 @@ did_set_showbreak(char_u **varp)
}
#endif
-#ifdef FEAT_GUI
+#if defined(FEAT_GUI) || defined(PROTO)
/*
* The 'guifont' option is changed.
*/
- static char *
-did_set_guifont(char_u *oldval UNUSED)
+ char *
+did_set_guifont(optset_T *args UNUSED)
{
char_u *p;
char *errmsg = NULL;
@@ -1599,9 +1605,9 @@ did_set_guifont(char_u *oldval UNUSED)
// give an error message.
if (STRCMP(p, "*") == 0)
{
- p = gui_mch_font_dialog(oldval);
+ p = gui_mch_font_dialog(args->os_oldval.string);
free_string_option(p_guifont);
- p_guifont = (p != NULL) ? p : vim_strsave(oldval);
+ p_guifont = (p != NULL) ? p : vim_strsave(args->os_oldval.string);
}
# endif
if (p != NULL && gui_init_font(p_guifont, FALSE) != OK)
@@ -1612,7 +1618,7 @@ did_set_guifont(char_u *oldval UNUSED)
// Dialog was cancelled: Keep the old value without giving
// an error message.
free_string_option(p_guifont);
- p_guifont = vim_strsave(oldval);
+ p_guifont = vim_strsave(args->os_oldval.string);
}
else
# endif
@@ -1623,12 +1629,12 @@ did_set_guifont(char_u *oldval UNUSED)
return errmsg;
}
-# ifdef FEAT_XFONTSET
+# if defined(FEAT_XFONTSET) || defined(PROTO)
/*
* The 'guifontset' option is changed.
*/
- static char *
-did_set_guifontset()
+ char *
+did_set_guifontset(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -1644,8 +1650,8 @@ did_set_guifontset()
/*
* The 'guifontwide' option is changed.
*/
- static char *
-did_set_guifontwide(void)
+ char *
+did_set_guifontwide(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -1658,17 +1664,21 @@ did_set_guifontwide(void)
}
#endif
-#if defined(FEAT_GUI_GTK)
- static void
-did_set_guiligatures(void)
+#if defined(FEAT_GUI_GTK) || defined(PROTO)
+/*
+ * The 'guiligatures' option is changed.
+ */
+ char *
+did_set_guiligatures(optset_T *args UNUSED)
{
gui_set_ligatures();
+ return NULL;
}
#endif
-#ifdef FEAT_MOUSESHAPE
- static char *
-did_set_mouseshape(void)
+#if defined(FEAT_MOUSESHAPE) || defined(PROTO)
+ char *
+did_set_mouseshape(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -1682,46 +1692,81 @@ did_set_mouseshape(void)
/*
* The 'titlestring' or the 'iconstring' option is changed.
*/
- static void
-did_set_titleiconstring(char_u **varp UNUSED)
+ static char *
+did_set_titleiconstring(optset_T *args UNUSED, int flagval UNUSED)
{
#ifdef FEAT_STL_OPT
- int flagval = (varp == &p_titlestring) ? STL_IN_TITLE : STL_IN_ICON;
-
// NULL => statusline syntax
- if (vim_strchr(*varp, '%') && check_stl_option(*varp) == NULL)
+ if (vim_strchr(args->os_varp, '%')
+ && check_stl_option(args->os_varp) == NULL)
stl_syntax |= flagval;
else
stl_syntax &= ~flagval;
#endif
did_set_title();
+
+ return NULL;
+}
+
+/*
+ * The 'titlestring' option is changed.
+ */
+ char *
+did_set_titlestring(optset_T *args)
+{
+ int flagval = 0;
+
+#ifdef FEAT_STL_OPT
+ flagval = STL_IN_TITLE;
+#endif
+ return did_set_titleiconstring(args, flagval);
+}
+
+/*
+ * The 'iconstring' option is changed.
+ */
+ char *
+did_set_iconstring(optset_T *args)
+{
+ int flagval = 0;
+
+#ifdef FEAT_STL_OPT
+ flagval = STL_IN_ICON;
+#endif
+
+ return did_set_titleiconstring(args, flagval);
}
#ifdef FEAT_GUI
/*
* The 'guioptions' option is changed.
*/
- static void
-did_set_guioptions(char_u *oldval)
+ char *
+did_set_guioptions(optset_T *args)
{
- gui_init_which_components(oldval);
+ gui_init_which_components(args->os_oldval.string);
+ return NULL;
}
#endif
#if defined(FEAT_GUI_TABLINE)
- static void
-did_set_guitablabel()
+/*
+ * The 'guitablabel' option is changed.
+ */
+ char *
+did_set_guitablabel(optset_T *args UNUSED)
{
redraw_tabline = TRUE;
+ return NULL;
}
#endif
-#if defined(UNIX) || defined(VMS)
+#if defined(UNIX) || defined(VMS) || defined(PROTO)
/*
* The 'ttymouse' option is changed.
*/
- static char *
-did_set_ttymouse(void)
+ char *
+did_set_ttymouse(optset_T *args UNUSED)
{
char *errmsg = NULL;
@@ -1742,8 +1787,8 @@ did_set_ttymouse(void)
/*
* The 'selection' option is changed.
*/
- static char *
-did_set_selection(void)
+ char *
+did_set_selection(optset_T *args UNUSED)
{
if (*p_sel == NUL
|| check_opt_strings(p_sel, p_sel_values, FALSE) != OK)
@@ -1752,12 +1797,12 @@ did_set_selection(void)
return NULL;
}
-#ifdef FEAT_BROWSE
+#if defined(FEAT_BROWSE) || defined(PROTO)
/*
* The 'browsedir' option is changed.
*/
- static char *
-did_set_browsedir(void)
+ char *
+did_set_browsedir(optset_T *args UNUSED)
{
if (check_opt_strings(p_bsdir, p_bsdir_values, FALSE) != OK
&& !mch_isdir(p_bsdir))
@@ -1770,8 +1815,8 @@ did_set_browsedir(void)
/*
* The 'keymodel' option is changed.
*/
- static char *
-did_set_keymodel(void)
+ char *
+did_set_keymodel(optset_T *args UNUSED)
{
if (check_opt_strings(p_km, p_km_values, TRUE) != OK)
return e_invalid_argument;
@@ -1784,8 +1829,8 @@ did_set_keymodel(void)
/*
* The 'keyprotocol' option is changed.
*/
- static char *
-did_set_keyprotocol(void)
+ char *
+did_set_keyprotocol(optset_T *args UNUSED)
{
if (match_keyprotocol(NULL) == KEYPROTOCOL_FAIL)
return e_invalid_argument;
@@ -1796,8 +1841,8 @@ did_set_keyprotocol(void)
/*
* The 'mousemodel' option is changed.
*/
- static char *
-did_set_mousemodel(void)
+ char *
+did_set_mousemodel(optset_T *args UNUSED)
{
if (check_opt_strings(p_mousem, p_mousem_values, FALSE) != OK)
return e_invalid_argument;
@@ -1814,8 +1859,8 @@ did_set_mousemodel(void)
/*
* The 'display' option is changed.
*/
- static char *
-did_set_display(void)
+ char *
+did_set_display(optset_T *args UNUSED)
{
if (opt_strings_flags(p_dy, p_dy_values, &dy_flags, TRUE) != OK)
return e_invalid_argument;
@@ -1824,14 +1869,14 @@ did_set_display(void)
return NULL;
}
-#ifdef FEAT_SPELL
+#if defined(FEAT_SPELL) || defined(PROTO)
/*
* The 'spellfile' option is changed.
*/
- static char *
-did_set_spellfile(char_u **varp)
+ char *
+did_set_spellfile(optset_T *args)
{
- if (!valid_spellfile(*varp))
+ if (!valid_spellfile(args->os_varp))
return e_invalid_argument;
// If there is a window for this buffer in which 'spell' is set load the
@@ -1842,10 +1887,10 @@ did_set_spellfile(char_u **varp)
/*
* The 'spell' option is changed.
*/
- static char *
-did_set_spell(char_u **varp)
+ char *
+did_set_spelllang(optset_T *args)
{
- if (!valid_spelllang(*varp))
+ if (!valid_spelllang(args->os_varp))
return e_invalid_argument;
// If there is a window for this buffer in which 'spell' is set load the
@@ -1856,8 +1901,8 @@ did_set_spell(char_u **varp)
/*
* The 'spellcapcheck' option is changed.
*/
- static char *
-did_set_spellcapcheck(void)
+ char *
+did_set_spellcapcheck(optset_T *args UNUSED)
{
// compile the regexp program.
return compile_cap_prog(curwin->w_s);
@@ -1866,10 +1911,10 @@ did_set_spellcapcheck(void)
/*
* The 'spelloptions' option is changed.
*/
- static char *
-did_set_spelloptions(char_u **varp)
+ char *
+did_set_spelloptions(optset_T *args)
{
- if (**varp != NUL && STRCMP("camel", *varp) != 0)
+ if (*args->os_varp != NUL && STRCMP("camel", args->os_varp) != 0)
return e_invalid_argument;
return NULL;
@@ -1878,8 +1923,8 @@ did_set_spelloptions(char_u **varp)
/*
* The 'spellsuggest' option is changed.
*/
- static char *
-did_set_spellsuggest(void)
+ char *
+did_set_spellsuggest(optset_T *args UNUSED)
{
if (spell_check_sps() != OK)
return e_invalid_argument;
@@ -1890,8 +1935,8 @@ did_set_spellsuggest(void)
/*
* The 'mkspellmem' option is changed.
*/
- static char *
-did_set_mkspellmem(void)
+ char *
+did_set_mkspellmem(optset_T *args UNUSED)
{
if (spell_check_msm() != OK)
return e_invalid_argument;
@@ -1903,8 +1948,8 @@ did_set_mkspellmem(void)
/*
* The 'buftype' option is changed.
*/
- static char *
-did_set_buftype(void)
+ char *
+did_set_buftype(optset_T *args UNUSED)
{
if (check_opt_strings(curbuf->b_p_bt, p_buftype_values, FALSE) != OK)
return e_invalid_argument;
@@ -1923,18 +1968,19 @@ did_set_buftype(void)
#ifdef FEAT_STL_OPT
/*
* The 'statusline' or the 'tabline' or the 'rulerformat' option is changed.
+ * "rulerformat" is TRUE if the 'rulerformat' option is changed.
*/
static char *
-did_set_statusline(char_u **varp)
+did_set_statustabline_rulerformat(optset_T *args, int rulerformat)
{
char_u *s;
char *errmsg = NULL;
int wid;
- if (varp == &p_ruf) // reset ru_wid first
+ if (rulerformat) // reset ru_wid first
ru_wid = 0;
- s = *varp;
- if (varp == &p_ruf && *s == '%')
+ s = args->os_varp;
+ if (rulerformat && *s == '%')
{
// set ru_wid if 'ruf' starts with "%99("
if (*++s == '-') // ignore a '-'
@@ -1946,13 +1992,41 @@ did_set_statusline(char_u **varp)
errmsg = check_stl_option(p_ruf);
}
// check 'statusline' or 'tabline' only if it doesn't start with "%!"
- else if (varp == &p_ruf || s[0] != '%' || s[1] != '!')
+ else if (rulerformat || s[0] != '%' || s[1] != '!')
errmsg = check_stl_option(s);
- if (varp == &p_ruf && errmsg == NULL)
+ if (rulerformat && errmsg == NULL)
comp_col();
return errmsg;
}
+
+/*
+ * The 'statusline' option is changed.
+ */
+ char *
+did_set_statusline(optset_T *args)
+{
+ return did_set_statustabline_rulerformat(args, FALSE);
+}
+
+/*
+ * The 'tabline' option is changed.
+ */
+ char *
+did_set_tabline(optset_T *args)
+{
+ return did_set_statustabline_rulerformat(args, FALSE);
+}
+
+
+/*
+ * The 'rulerformat' option is changed.
+ */
+ char *
+did_set_rulerformat(optset_T *args)
+{
+ return did_set_statustabline_rulerformat(args, TRUE);
+}
#endif
/*
@@ -2003,8 +2077,8 @@ did_set_complete(char_u **varp, char *errbuf)
/*
* The 'completeopt' option is changed.
*/
- static char *
-did_set_completeopt(void)
+ char *
+did_set_completeopt(optset_T *args UNUSED)
{
if (check_opt_strings(p_cot, p_cot_values, TRUE) != OK)
return e_invalid_argument;
@@ -2013,12 +2087,12 @@ did_set_completeopt(void)
return NULL;
}
-#ifdef BACKSLASH_IN_FILENAME
+#if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
/*
* The 'completeslash' option is changed.
*/
- static char *
-did_set_completeslash(void)
+ char *
+did_set_completeslash(optset_T *args UNUSED)
{
if (check_opt_strings(p_csl, p_csl_values, FALSE) != OK
|| check_opt_strings(curbuf->b_p_csl, p_csl_values, FALSE) != OK)
@@ -2028,18 +2102,18 @@ did_set_completeslash(void)
}
#endif
-#ifdef FEAT_SIGNS
+#if defined(FEAT_SIGNS) || defined(PROTO)
/*
* The 'signcolumn' option is changed.
*/
- static char *
-did_set_signcolumn(char_u **varp, char_u *oldval)
+ char *
+did_set_signcolumn(optset_T *args)
{
- if (check_opt_strings(*varp, p_scl_values, FALSE) != OK)
+ if (check_opt_strings(args->os_varp, p_scl_values, FALSE) != OK)
return e_invalid_argument;
// When changing the 'signcolumn' to or from 'number', recompute the
// width of the number column if 'number' or 'relativenumber' is set.
- if (((*oldval == 'n' && *(oldval + 1) == 'u')
+ if (((*args->os_oldval.string == 'n' && args->os_oldval.string[1] == 'u')
|| (*curwin->w_p_scl == 'n' && *(curwin->w_p_scl + 1) =='u'))
&& (curwin->w_p_nu || curwin->w_p_rnu))
curwin->w_nrwidth_line_count = 0;
@@ -2048,12 +2122,12 @@ did_set_signcolumn(char_u **varp, char_u *oldval)
}
#endif
-#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
+#if (defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)) || defined(PROTO)
/*
* The 'toolbar' option is changed.
*/
- static char *
-did_set_toolbar(void)
+ char *
+did_set_toolbar(optset_T *args UNUSED)
{
if (opt_strings_flags(p_toolbar, p_toolbar_values,
&toolbar_flags, TRUE) != OK)
@@ -2066,12 +2140,12 @@ did_set_toolbar(void)
}
#endif
-#if defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK)
+#if (defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK)) || defined(PROTO)
/*
* The 'toolbariconsize' option is changed. GTK+ 2 only.
*/
- static char *
-did_set_toolbariconsize(void)
+ char *
+did_set_toolbariconsize(optset_T *args UNUSED)
{
if (opt_strings_flags(p_tbis, p_tbis_values, &tbis_flags, FALSE) != OK)
return e_invalid_argument;
@@ -2086,8 +2160,8 @@ did_set_toolbariconsize(void)
/*
* The 'pastetoggle' option is changed.
*/
- static void
-did_set_pastetoggle(void)
+ char *
+did_set_pastetoggle(optset_T *args UNUSED)
{
char_u *p;
@@ -2102,13 +2176,15 @@ did_set_pastetoggle(void)
p_pt = p;
}
}
+
+ return NULL;
}
/*
* The 'backspace' option is changed.
*/
- static char *
-did_set_backspace(void)
+ char *
+did_set_backspace(optset_T *args UNUSED)
{
if (VIM_ISDIGIT(*p_bs))
{
@@ -2124,13 +2200,13 @@ did_set_backspace(void)
/*
* The 'tagcase' option is changed.
*/
- static char *
-did_set_tagcase(int opt_flags)
+ char *
+did_set_tagcase(optset_T *args)
{
unsigned int *flags;
char_u *p;
- if (opt_flags & OPT_LOCAL)
+ if (args->os_flags & OPT_LOCAL)
{
p = curbuf->b_p_tc;
flags = &curbuf->b_tc_flags;
@@ -2141,7 +2217,7 @@ did_set_tagcase(int opt_flags)
flags = &tc_flags;
}
- if ((opt_flags & OPT_LOCAL) && *p == NUL)
+ if ((args->os_flags & OPT_LOCAL) && *p == NUL)
// make the local value empty: use the global value
*flags = 0;
else if (*p == NUL
@@ -2151,12 +2227,12 @@ did_set_tagcase(int opt_flags)
return NULL;
}
-#ifdef FEAT_DIFF
+#if defined(FEAT_DIFF) || defined(PROTO)
/*
* The 'diffopt' option is changed.
*/
- static char *
-did_set_diffopt(void)
+ char *
+did_set_diffopt(optset_T *args UNUSED)
{
if (diffopt_changed() == FAIL)
return e_invalid_argument;
@@ -2165,14 +2241,14 @@ did_set_diffopt(void)
}
#endif
-#ifdef FEAT_FOLDING
+#if defined(FEAT_FOLDING) || defined(PROTO)
/*
* The 'foldmethod' option is changed.
*/
- static char *
-did_set_foldmethod(char_u **varp)
+ char *
+did_set_foldmethod(optset_T *args)
{
- if (check_opt_strings(*varp, p_fdm_values, FALSE) != OK
+ if (check_opt_strings(args->os_varp, p_fdm_values, FALSE) != OK
|| *curwin->w_p_fdm == NUL)
return e_invalid_argument;
@@ -2185,15 +2261,15 @@ did_set_foldmethod(char_u **varp)
/*
* The 'foldmarker' option is changed.
*/
- static char *
-did_set_foldmarker(char_u **varp)
+ char *
+did_set_foldmarker(optset_T *args)
{
char_u *p;
- p = vim_strchr(*varp, ',');
+ p = vim_strchr(args->os_varp, ',');
if (p == NULL)
return e_comma_required;
- else if (p == *varp || p[1] == NUL)
+ else if (p == args->os_varp || p[1] == NUL)
return e_invalid_argument;
else if (foldmethodIsMarker(curwin))
foldUpdateAll(curwin);
@@ -2204,10 +2280,10 @@ did_set_foldmarker(char_u **varp)
/*
* The 'commentstring' option is changed.
*/
- static char *
-did_set_commentstring(char_u **varp)
+ char *
+did_set_commentstring(optset_T *args)
{
- if (**varp != NUL && strstr((char *)*varp, "%s") == NULL)
+ if (*args->os_varp != NUL && strstr((char *)args->os_varp, "%s") == NULL)
return e_commentstring_must_be_empty_or_contain_str;
return NULL;
@@ -2216,37 +2292,38 @@ did_set_commentstring(char_u **varp)
/*
* The 'foldignore' option is changed.
*/
- static void
-did_set_foldignore(void)
+ char *
+did_set_foldignore(optset_T *args UNUSED)
{
if (foldmethodIsIndent(curwin))
foldUpdateAll(curwin);
+ return NULL;
}
#endif
/*
* The 'virtualedit' option is changed.
*/
- static char *
-did_set_virtualedit(char_u *oldval, int opt_flags)
+ char *
+did_set_virtualedit(optset_T *args)
{
char_u *ve = p_ve;
unsigned int *flags = &ve_flags;
- if (opt_flags & OPT_LOCAL)
+ if (args->os_flags & OPT_LOCAL)
{
ve = curwin->w_p_ve;
flags = &curwin->w_ve_flags;
}
- if ((opt_flags & OPT_LOCAL) && *ve == NUL)
+ if ((args->os_flags & OPT_LOCAL) && *ve == NUL)
// make the local value empty: use the global value
*flags = 0;
else
{
if (opt_strings_flags(ve, p_ve_values, flags, TRUE) != OK)
return e_invalid_argument;
- else if (STRCMP(ve, oldval) != 0)
+ else if (STRCMP(ve, args->os_oldval.string) != 0)
{
// Recompute cursor position in case the new 've' setting
// changes something.
@@ -2258,12 +2335,12 @@ did_set_virtualedit(char_u *oldval, int opt_flags)
return NULL;
}
-#if defined(FEAT_CSCOPE) && defined(FEAT_QUICKFIX)
+#if (defined(FEAT_CSCOPE) && defined(FEAT_QUICKFIX)) || defined(PROTO)
/*
* The 'cscopequickfix' option is changed.
*/
- static char *
-did_set_cscopequickfix(void)
+ char *
+did_set_cscopequickfix(optset_T *args UNUSED)
{
char_u *p;
@@ -2291,32 +2368,34 @@ did_set_cscopequickfix(void)
/*
* The 'cinoptions' option is changed.
*/
- static void
-did_set_cinoptions(void)
+ char *
+did_set_cinoptions(optset_T *args UNUSED)
{
// TODO: recognize errors
parse_cino(curbuf);
+
+ return NULL;
}
/*
* The 'lispoptions' option is changed.
*/
- static char *
-did_set_lispoptions(char_u **varp)
+ char *
+did_set_lispoptions(optset_T *args)
{
- if (**varp != NUL && STRCMP(*varp, "expr:0") != 0
- && STRCMP(*varp, "expr:1") != 0)
+ if (*args->os_varp != NUL && STRCMP(args->os_varp, "expr:0") != 0
+ && STRCMP(args->os_varp, "expr:1") != 0)
return e_invalid_argument;
return NULL;
}
-#if defined(FEAT_RENDER_OPTIONS)
+#if defined(FEAT_RENDER_OPTIONS) || defined(PROTO)
/*
* The 'renderoptions' option is changed.
*/
- static char *
-did_set_renderoptions(void)
+ char *
+did_set_renderoptions(optset_T *args UNUSED)
{
if (!gui_mch_set_rendering_options(p_rop))
return e_invalid_argument;
@@ -2347,12 +2426,12 @@ did_set_filetype_or_syntax(
return NULL;
}
-#ifdef FEAT_TERMINAL
+#if defined(FEAT_TERMINAL) || defined(PROTO)
/*
* The 'termwinkey' option is changed.
*/
- static char *
-did_set_termwinkey(void)
+ char *
+did_set_termwinkey(optset_T *args UNUSED)
{
if (*curwin->w_p_twk != NUL
&& string_to_key(curwin->w_p_twk, TRUE) == 0)
@@ -2364,8 +2443,8 @@ did_set_termwinkey(void)
/*
* The 'termwinsize' option is changed.
*/
- static char *
-did_set_termwinsize(void)
+ char *
+did_set_termwinsize(optset_T *args UNUSED)
{
char_u *p;
@@ -2382,16 +2461,16 @@ did_set_termwinsize(void)
}
#endif
-#ifdef FEAT_VARTABS
+#if defined(FEAT_VARTABS) || defined(PROTO)
/*
* The 'varsofttabstop' option is changed.
*/
- static char *
-did_set_varsofttabstop(char_u **varp)
+ char *
+did_set_varsofttabstop(optset_T *args)
{
char_u *cp;
- if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1]))
+ if (!(args->os_varp[0]) || (args->os_varp[0] == '0' && !(args->os_varp[1])))
{
if (curbuf->b_p_vsts_array)
{
@@ -2401,17 +2480,17 @@ did_set_varsofttabstop(char_u **varp)
}
else
{
- for (cp = *varp; *cp; ++cp)
+ for (cp = args->os_varp; *cp; ++cp)
{
if (vim_isdigit(*cp))
continue;
- if (*cp == ',' && cp > *varp && *(cp-1) != ',')
+ if (*cp == ',' && cp > args->os_varp && *(cp-1) != ',')
continue;
return e_invalid_argument;
}
int *oldarray = curbuf->b_p_vsts_array;
- if (tabstop_set(*varp, &(curbuf->b_p_vsts_array)) == OK)
+ if (tabstop_set(args->os_varp, &(curbuf->b_p_vsts_array)) == OK)
{
if (oldarray)
vim_free(oldarray);
@@ -2426,12 +2505,12 @@ did_set_varsofttabstop(char_u **varp)
/*
* The 'vartabstop' option is changed.
*/
- static char *
-did_set_vartabstop(char_u **varp)
+ char *
+did_set_vartabstop(optset_T *args)
{
char_u *cp;
- if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1]))
+ if (!(args->os_varp[0]) || (args->os_varp[0] == '0' && !(args->os_varp[1])))
{
if (curbuf->b_p_vts_array)
{
@@ -2441,18 +2520,18 @@ did_set_vartabstop(char_u **varp)
}
else
{
- for (cp = *varp; *cp; ++cp)
+ for (cp = args->os_varp; *cp; ++cp)
{
if (vim_isdigit(*cp))
continue;
- if (*cp == ',' && cp > *varp && *(cp-1) != ',')
+ if (*cp == ',' && cp > args->os_varp && *(cp-1) != ',')
continue;
return e_invalid_argument;
}
int *oldarray = curbuf->b_p_vts_array;
- if (tabstop_set(*varp, &(curbuf->b_p_vts_array)) == OK)
+ if (tabstop_set(args->os_varp, &(curbuf->b_p_vts_array)) == OK)
{
vim_free(oldarray);
# ifdef FEAT_FOLDING
@@ -2468,12 +2547,12 @@ did_set_vartabstop(char_u **varp)
}
#endif
-#ifdef FEAT_PROP_POPUP
+#if defined(FEAT_PROP_POPUP) || defined(PROTO)
/*
* The 'previewpopup' option is changed.
*/
- static char *
-did_set_previewpopup(void)
+ char *
+did_set_previewpopup(optset_T *args UNUSED)
{
if (parse_previewpopup(NULL) == FAIL)
return e_invalid_argument;
@@ -2481,12 +2560,12 @@ did_set_previewpopup(void)
return NULL;
}
-# ifdef FEAT_QUICKFIX
+# if defined(FEAT_QUICKFIX) || defined(PROTO)
/*
* The 'completepopup' option is changed.
*/
- static char *
-did_set_completepopup(void)
+ char *
+did_set_completepopup(optset_T *args UNUSED)
{
if (parse_completepopup(NULL) == FAIL)
return e_invalid_argument;
@@ -2629,6 +2708,7 @@ did_set_string_option(
int opt_idx, // index in options[] table
char_u **varp, // pointer to the option variable
char_u *oldval, // previous value of the option
+ char_u *value, // new value of the option
char *errbuf, // buffer for errors, or NULL
int opt_flags, // OPT_LOCAL and/or OPT_GLOBAL
int *value_checked) // value was checked to be safe, no
@@ -2638,12 +2718,9 @@ did_set_string_option(
int did_chartab = FALSE;
char_u **gvarp;
long_u free_oldval = (get_option_flags(opt_idx) & P_ALLOCED);
-#ifdef FEAT_GUI
- // set when changing an option that only requires a redraw in the GUI
- int redraw_gui_only = FALSE;
-#endif
int value_changed = FALSE;
int did_swaptcap = FALSE;
+ opt_did_set_cb_T did_set_cb = get_option_did_set_cb(opt_idx);
// Get the global option to compare with, otherwise we would have to check
// two values for all local options.
@@ -2659,25 +2736,23 @@ did_set_string_option(
// Check for a "normal" directory or file name in some options.
else if (check_illegal_path_names(opt_idx, varp))
errmsg = e_invalid_argument;
+ else if (did_set_cb != NULL)
+ {
+ optset_T args;
+
+ args.os_varp = *varp;
+ args.os_flags = opt_flags;
+ args.os_oldval.string = oldval;
+ args.os_newval.string = value;
+ errmsg = did_set_cb(&args);
+ }
else if (varp == &T_NAME) // 'term'
errmsg = did_set_term(&opt_idx, &free_oldval);
- else if (gvarp == &p_bkc) // 'backupcopy'
- errmsg = did_set_backupcopy(oldval, opt_flags);
- else if ( varp == &p_bex // 'backupext'
- || varp == &p_pm) // 'patchmode'
- errmsg = did_set_backupext_or_patchmode();
-#ifdef FEAT_LINEBREAK
- else if (varp == &curwin->w_p_briopt) // 'breakindentopt'
- errmsg = did_set_breakindentopt();
-#endif
-
else if ( varp == &p_isi // 'isident'
|| varp == &(curbuf->b_p_isk) // 'iskeyword'
|| varp == &p_isp // 'isprint'
|| varp == &p_isf) // 'isfname'
errmsg = did_set_isopt(&did_chartab);
- else if (varp == &p_hf) // 'helpfile'
- did_set_helpfile();
#ifdef FEAT_SYN_HL
else if ( varp == &curwin->w_p_culopt // 'cursorlineopt'
|| gvarp == &curwin->w_allbuf_opt.wo_culopt)
@@ -2685,67 +2760,25 @@ did_set_string_option(
else if (varp == &curwin->w_p_cc) // 'colorcolumn'
errmsg = check_colorcolumn(curwin);
#endif
-#ifdef FEAT_MULTI_LANG
- else if (varp == &p_hlg) // 'helplang'
- errmsg = did_set_helplang();
-#endif
- else if (varp == &p_hl) // 'highlight'
- errmsg = did_set_highlight();
else if (gvarp == &p_nf) // 'nrformats'
errmsg = did_set_opt_strings(*varp, p_nf_values, TRUE);
#ifdef FEAT_SESSION
- else if (varp == &p_ssop) // 'sessionoptions'
- errmsg = did_set_sessionoptions(oldval);
else if (varp == &p_vop) // 'viewoptions'
errmsg = did_set_opt_flags(p_vop, p_ssop_values, &vop_flags, TRUE);
#endif
else if (varp == &p_sbo) // 'scrollopt'
errmsg = did_set_opt_strings(p_sbo, p_scbopt_values, TRUE);
- else if ( varp == &p_ambw // 'ambiwidth'
- || varp == &p_emoji) // 'emoji'
- errmsg = did_set_ambiwidth();
- else if (varp == &p_bg) // 'background'
- errmsg = did_set_background();
- else if (varp == &p_wim) // 'wildmode'
- errmsg = did_set_wildmode();
else if (varp == &p_wop) // 'wildoptions'
errmsg = did_set_opt_strings(p_wop, p_wop_values, TRUE);
-#ifdef FEAT_WAK
- else if (varp == &p_wak) // 'winaltkeys'
- errmsg = did_set_winaltkeys();
-#endif
- else if (varp == &p_ei) // 'eventignore'
- errmsg = did_set_eventignore();
-
else if ( varp == &p_enc // 'encoding'
|| gvarp == &p_fenc // 'fileencoding'
|| varp == &p_tenc // 'termencoding'
|| gvarp == &p_menc) // 'makeencoding'
errmsg = did_set_encoding(varp, gvarp, opt_flags);
-#if defined(FEAT_POSTSCRIPT)
- else if (varp == &p_penc) // 'printencoding'
- did_set_printencoding();
-#endif
-#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
- else if (varp == &p_imak) // 'imactivatekey'
- errmsg = did_set_imactivatekey();
-#endif
#ifdef FEAT_KEYMAP
else if (varp == &curbuf->b_p_keymap) // 'keymap'
errmsg = did_set_keymap(varp, opt_flags, value_checked);
#endif
- else if (gvarp == &p_ff) // 'fileformat'
- errmsg = did_set_fileformat(varp, oldval, opt_flags);
- else if (varp == &p_ffs) // 'fileformats'
- errmsg = did_set_fileformats();
-#if defined(FEAT_CRYPT)
- else if (gvarp == &p_key) // 'cryptkey'
- did_set_cryptkey(oldval);
- else if (gvarp == &p_cm) // 'cryptmethod'
- errmsg = did_set_cryptmethod(oldval, opt_flags);
-#endif
- else if (gvarp == &p_mps) // 'matchpairs'
- errmsg = did_set_matchpairs(varp);
else if (gvarp == &p_com) // 'comments'
errmsg = did_set_comments(varp, errbuf);
else if ( varp == &p_lcs // global 'listchars'
@@ -2755,10 +2788,6 @@ did_set_string_option(
errmsg = set_chars_option(curwin, varp, TRUE);
else if (varp == &curwin->w_p_fcs) // local 'fillchars'
errmsg = set_chars_option(curwin, varp, TRUE);
- else if (varp == &p_cedit) // 'cedit'
- errmsg = check_cedit();
- else if (varp == &p_vfile) // 'verbosefile'
- errmsg = did_set_verbosefile();
#ifdef FEAT_VIMINFO
else if (varp == &p_viminfo) // 'viminfo'
errmsg = did_set_viminfo(errbuf);
@@ -2766,199 +2795,36 @@ did_set_string_option(
// terminal options
else if (istermoption_idx(opt_idx) && full_screen)
did_set_term_option(varp, &did_swaptcap);
-#ifdef FEAT_LINEBREAK
- else if (gvarp == &p_sbr) // 'showbreak'
- errmsg = did_set_showbreak(varp);
-#endif
-#ifdef FEAT_GUI
- else if (varp == &p_guifont) // 'guifont'
- {
- errmsg = did_set_guifont(oldval);
- redraw_gui_only = TRUE;
- }
-# ifdef FEAT_XFONTSET
- else if (varp == &p_guifontset) // 'guifontset'
- {
- errmsg = did_set_guifontset();
- redraw_gui_only = TRUE;
- }
-# endif
- else if (varp == &p_guifontwide) // 'guifontwide'
- {
- errmsg = did_set_guifontwide();
- redraw_gui_only = TRUE;
- }
-#endif
-#if defined(FEAT_GUI_GTK)
- else if (varp == &p_guiligatures) // 'guiligatures'
- {
- did_set_guiligatures();
- redraw_gui_only = TRUE;
- }
-#endif
#ifdef CURSOR_SHAPE
else if (varp == &p_guicursor) // 'guicursor'
errmsg = parse_shape_opt(SHAPE_CURSOR);
#endif
-#ifdef FEAT_MOUSESHAPE
- else if (varp == &p_mouseshape) // 'mouseshape'
- errmsg = did_set_mouseshape();
-#endif
-#ifdef FEAT_PRINTER
- else if (varp == &p_popt) // 'printoptions'
- errmsg = parse_printoptions();
-# if defined(FEAT_POSTSCRIPT)
- else if (varp == &p_pmfn) // 'printmbfont'
- errmsg = parse_printmbfont();
-# endif
-#endif
-#ifdef FEAT_LANGMAP
- else if (varp == &p_langmap) // 'langmap'
- langmap_set();
-#endif
-#ifdef FEAT_LINEBREAK
- else if (varp == &p_breakat) // 'breakat'
- fill_breakat_flags();
-#endif
- else if ( varp == &p_titlestring // 'titlestring'
- || varp == &p_iconstring) // 'iconstring'
- did_set_titleiconstring(varp);
-#ifdef FEAT_GUI
- else if (varp == &p_go) // 'guioptions'
- {
- did_set_guioptions(oldval);
- redraw_gui_only = TRUE;
- }
-#endif
-#if defined(FEAT_GUI_TABLINE)
- else if (varp == &p_gtl) // 'guitablabel'
- {
- did_set_guitablabel();
- redraw_gui_only = TRUE;
- }
- else if (varp == &p_gtt) // 'guitabtooltip'
- redraw_gui_only = TRUE;
-#endif
-#if defined(UNIX) || defined(VMS)
- else if (varp == &p_ttym) // 'ttymouse'
- errmsg = did_set_ttymouse();
-#endif
- else if (varp == &p_sel) // 'selection'
- errmsg = did_set_selection();
else if (varp == &p_slm) // 'selectmode'
errmsg = did_set_opt_strings(p_slm, p_slm_values, TRUE);
-#ifdef FEAT_BROWSE
- else if (varp == &p_bsdir) // 'browsedir'
- errmsg = did_set_browsedir();
-#endif
- else if (varp == &p_km) // 'keymodel'
- errmsg = did_set_keymodel();
- else if (varp == &p_kpc) // 'keyprotocol'
- errmsg = did_set_keyprotocol();
- else if (varp == &p_mousem) // 'mousemodel'
- errmsg = did_set_mousemodel();
else if (varp == &p_swb) // 'switchbuf'
errmsg = did_set_opt_flags(p_swb, p_swb_values, &swb_flags, TRUE);
else if (varp == &p_spk) // 'splitkeep'
errmsg = did_set_opt_strings(p_spk, p_spk_values, FALSE);
else if (varp == &p_debug) // 'debug'
errmsg = did_set_opt_strings(p_debug, p_debug_values, TRUE);
- else if (varp == &p_dy) // 'display'
- errmsg = did_set_display();
else if (varp == &p_ead) // 'eadirection'
errmsg = did_set_opt_strings(p_ead, p_ead_values, FALSE);
-#ifdef FEAT_CLIPBOARD
- else if (varp == &p_cb) // 'clipboard'
- errmsg = check_clipboard_option();
-#endif
-#ifdef FEAT_SPELL
- else if (varp == &(curwin->w_s->b_p_spf)) // 'spellfile'
- errmsg = did_set_spellfile(varp);
- else if (varp == &(curwin->w_s->b_p_spl)) // 'spell'
- errmsg = did_set_spell(varp);
- else if (varp == &(curwin->w_s->b_p_spc)) // 'spellcapcheck'
- errmsg = did_set_spellcapcheck();
- else if (varp == &(curwin->w_s->b_p_spo)) // 'spelloptions'
- errmsg = did_set_spelloptions(varp);
- else if (varp == &p_sps) // 'spellsuggest'
- errmsg = did_set_spellsuggest();
- else if (varp == &p_msm) // 'mkspellmem'
- errmsg = did_set_mkspellmem();
-#endif
else if (gvarp == &p_bh) // 'bufhidden'
errmsg = did_set_opt_strings(curbuf->b_p_bh, p_bufhidden_values,
FALSE);
- else if (gvarp == &p_bt) // 'buftype'
- errmsg = did_set_buftype();
-#ifdef FEAT_STL_OPT
- else if ( gvarp == &p_stl // 'statusline'
- || varp == &p_tal // 'tabline'
- || varp == &p_ruf) // 'rulerformat'
- errmsg = did_set_statusline(varp);
-#endif
else if (gvarp == &p_cpt) // 'complete'
errmsg = did_set_complete(varp, errbuf);
- else if (varp == &p_cot) // 'completeopt'
- errmsg = did_set_completeopt();
-#ifdef BACKSLASH_IN_FILENAME
- else if (gvarp == &p_csl) // 'completeslash'
- errmsg = did_set_completeslash();
-#endif
-#ifdef FEAT_SIGNS
- else if (varp == &curwin->w_p_scl) // 'signcolumn'
- errmsg = did_set_signcolumn(varp, oldval);
-#endif
else if (varp == &p_sloc) // 'showcmdloc'
errmsg = did_set_opt_strings(p_sloc, p_sloc_values, FALSE);
-#if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_MSWIN)
- else if (varp == &p_toolbar) // 'toolbar'
- errmsg = did_set_toolbar();
-#endif
-#if defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK)
- else if (varp == &p_tbis) // 'toolbariconsize'
- errmsg = did_set_toolbariconsize();
-#endif
- else if (varp == &p_pt) // 'pastetoggle'
- did_set_pastetoggle();
- else if (varp == &p_bs) // 'backspace'
- errmsg = did_set_backspace();
else if (varp == &p_bo) // 'belloff'
errmsg = did_set_opt_flags(p_bo, p_bo_values, &bo_flags, TRUE);
- else if (gvarp == &p_tc) // 'tagcase'
- errmsg = did_set_tagcase(opt_flags);
else if (varp == &p_cmp) // 'casemap'
errmsg = did_set_opt_flags(p_cmp, p_cmp_values, &cmp_flags, TRUE);
-#ifdef FEAT_DIFF
- else if (varp == &p_dip) // 'diffopt'
- errmsg = did_set_diffopt();
-#endif
#ifdef FEAT_FOLDING
- else if (gvarp == &curwin->w_allbuf_opt.wo_fdm) // 'foldmethod'
- errmsg = did_set_foldmethod(varp);
- else if (gvarp == &curwin->w_allbuf_opt.wo_fmr) // 'foldmarker'
- errmsg = did_set_foldmarker(varp);
- else if (gvarp == &p_cms) // 'commentstring'
- errmsg = did_set_commentstring(varp);
else if (varp == &p_fdo) // 'foldopen'
errmsg = did_set_opt_flags(p_fdo, p_fdo_values, &fdo_flags, TRUE);
else if (varp == &p_fcl) // 'foldclose'
errmsg = did_set_opt_strings(p_fcl, p_fcl_values, TRUE);
- else if (gvarp == &curwin->w_allbuf_opt.wo_fdi) // 'foldignore'
- did_set_foldignore();
-#endif
- else if (gvarp == &p_ve) // 'virtualedit'
- errmsg = did_set_virtualedit(oldval, opt_flags);
-#if defined(FEAT_CSCOPE) && defined(FEAT_QUICKFIX)
- else if (varp == &p_csqf) // 'cscopequickfix'
- errmsg = did_set_cscopequickfix();
-#endif
- else if (gvarp == &p_cino) // 'cinoptions'
- did_set_cinoptions();
- else if (gvarp == &p_lop) // 'lispoptions'
- errmsg = did_set_lispoptions(varp);
-#if defined(FEAT_RENDER_OPTIONS)
- else if (varp == &p_rop) // 'renderoptions'
- errmsg = did_set_renderoptions();
#endif
else if (gvarp == &p_ft) // 'filetype'
errmsg = did_set_filetype_or_syntax(varp, oldval, value_checked,
@@ -2969,10 +2835,6 @@ did_set_string_option(
&value_changed);
#endif
#ifdef FEAT_TERMINAL
- else if (varp == &curwin->w_p_twk) // 'termwinkey'
- errmsg = did_set_termwinkey();
- else if (varp == &curwin->w_p_tws) // 'termwinsize'
- errmsg = did_set_termwinsize();
else if (varp == &curwin->w_p_wcr) // 'wincolor'
term_update_wincolor(curwin);
# if defined(MSWIN)
@@ -2980,20 +2842,6 @@ did_set_string_option(
errmsg = did_set_opt_strings(p_twt, p_twt_values, FALSE);
# endif
#endif
-#ifdef FEAT_VARTABS
- else if (varp == &(curbuf->b_p_vsts)) // 'varsofttabstop'
- errmsg = did_set_varsofttabstop(varp);
- else if (varp == &(curbuf->b_p_vts)) // 'vartabstop'
- errmsg = did_set_vartabstop(varp);
-#endif
-#ifdef FEAT_PROP_POPUP
- else if (varp == &p_pvp) // 'previewpopup'
- errmsg = did_set_previewpopup();
-# ifdef FEAT_QUICKFIX
- else if (varp == &p_cpp) // 'completepopup'
- errmsg = did_set_completepopup();
-# endif
-#endif
#ifdef FEAT_EVAL
else if (
# ifdef FEAT_BEVAL
@@ -3020,31 +2868,6 @@ did_set_string_option(
varp == &p_ccv) // 'charconvert'
did_set_optexpr(varp);
#endif
-#ifdef FEAT_COMPL_FUNC
- else if (gvarp == &p_cfu) // 'completefunc'
- errmsg = set_completefunc_option();
- else if (gvarp == &p_ofu) // 'omnifunc'
- errmsg = set_omnifunc_option();
- else if (gvarp == &p_tsrfu) // 'thesaurusfunc'
- errmsg = set_thesaurusfunc_option();
-#endif
-#if defined(FEAT_EVAL) && \
- (defined(FEAT_XIM) || defined(IME_WITHOUT_XIM) || defined(VIMDLL))
- else if (gvarp == &p_imaf) // 'imactivatefunc'
- errmsg = set_imactivatefunc_option();
- else if (gvarp == &p_imsf) // 'imstatusfunc'
- errmsg = set_imstatusfunc_option();
-#endif
- else if (varp == &p_opfunc) // 'operatorfunc'
- errmsg = set_operatorfunc_option();
-#ifdef FEAT_QUICKFIX
- else if (varp == &p_qftf) // 'quickfixtextfunc'
- errmsg = qf_process_qftf_option();
-#endif
-#ifdef FEAT_EVAL
- else if (gvarp == &p_tfu) // 'tagfunc'
- errmsg = set_tagfunc_option();
-#endif
else if (varp == &p_ww) // 'whichwrap'
errmsg = did_set_option_listflag(varp, (char_u *)WW_ALL, errbuf);
else if (varp == &p_shm) // 'shortmess'
@@ -3143,6 +2966,25 @@ did_set_string_option(
if ((opt_flags & OPT_NO_REDRAW) == 0)
{
#ifdef FEAT_GUI
+ // set when changing an option that only requires a redraw in the GUI
+ int redraw_gui_only = FALSE;
+
+ if (varp == &p_go // 'guioptions'
+ || varp == &p_guifont // 'guifont'
+# ifdef FEAT_GUI_TABLINE
+ || varp == &p_gtl // 'guitablabel'
+ || varp == &p_gtt // 'guitabtooltip'
+# endif
+# ifdef FEAT_XFONTSET
+ || varp == &p_guifontset // 'guifontset'
+# endif
+ || varp == &p_guifontwide // 'guifontwide'
+# ifdef FEAT_GUI_GTK
+ || varp == &p_guiligatures // 'guiligatures'
+# endif
+ )
+ redraw_gui_only = TRUE;
+
// check redraw when it's not a GUI option or the GUI is active.
if (!redraw_gui_only || gui.in_use)
#endif
@@ -3226,9 +3068,8 @@ check_ff_value(char_u *p)
}
/*
- * Save the acutal shortmess Flags and clear them
- * temporarily to avoid that file messages
- * overwrites any output from the following commands.
+ * Save the actual shortmess Flags and clear them temporarily to avoid that
+ * file messages overwrites any output from the following commands.
*
* Caller must make sure to first call save_clear_shm_value() and then
* restore_shm_value() exactly the same number of times.
diff --git a/src/proto/clipboard.pro b/src/proto/clipboard.pro
index 3dca35b9a..f3e8cab97 100644
--- a/src/proto/clipboard.pro
+++ b/src/proto/clipboard.pro
@@ -18,7 +18,7 @@ void clip_scroll_selection(int rows);
void clip_copy_modeless_selection(int both);
void clip_gen_set_selection(Clipboard_T *cbd);
int clip_gen_owner_exists(Clipboard_T *cbd);
-char *check_clipboard_option(void);
+char *did_set_clipboard(optset_T *args);
void open_app_context(void);
void x11_setup_atoms(Display *dpy);
void x11_setup_selection(Widget w);
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index 88f0175ae..956916dc5 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -39,7 +39,7 @@ void f_setcmdline(typval_T *argvars, typval_T *rettv);
void f_setcmdpos(typval_T *argvars, typval_T *rettv);
int get_cmdline_firstc(void);
int get_list_range(char_u **str, int *num1, int *num2);
-char *check_cedit(void);
+char *did_set_cedit(optset_T *args);
int is_in_cmdwin(void);
char_u *script_get(exarg_T *eap, char_u *cmd);
void get_user_input(typval_T *argvars, typval_T *rettv, int inputdialog, int secret);
diff --git a/src/proto/gui_xim.pro b/src/proto/gui_xim.pro
index 2e944aef6..bac7321de 100644
--- a/src/proto/gui_xim.pro
+++ b/src/proto/gui_xim.pro
@@ -1,6 +1,6 @@
/* gui_xim.c */
-char *set_imactivatefunc_option(void);
-char *set_imstatusfunc_option(void);
+char *did_set_imactivatefunc(optset_T *args);
+char *did_set_imstatusfunc(optset_T *args);
void free_xim_stuff(void);
int set_ref_in_im_funcs(int copyID);
void im_set_active(int active);
diff --git a/src/proto/hardcopy.pro b/src/proto/hardcopy.pro
index 615f08856..8a8c73e56 100644
--- a/src/proto/hardcopy.pro
+++ b/src/proto/hardcopy.pro
@@ -1,6 +1,6 @@
/* hardcopy.c */
-char *parse_printoptions(void);
-char *parse_printmbfont(void);
+char *parse_printoptions(optset_T *args);
+char *parse_printmbfont(optset_T *args);
int prt_header_height(void);
int prt_use_number(void);
int prt_get_unit(int idx);
diff --git a/src/proto/if_mzsch.pro b/src/proto/if_mzsch.pro
index bab82cef3..00bbf3c05 100644
--- a/src/proto/if_mzsch.pro
+++ b/src/proto/if_mzsch.pro
@@ -1,7 +1,7 @@
/* if_mzsch.c */
int mzscheme_enabled(int verbose);
void mzvim_check_threads(void);
-void mzvim_reset_timer(void);
+char *did_set_mzquantum(void);
void mzscheme_end(void);
int mzscheme_main(void);
void mzscheme_buffer_free(buf_T *buf);
diff --git a/src/proto/insexpand.pro b/src/proto/insexpand.pro
index b10d2a8c6..51f5db0f8 100644
--- a/src/proto/insexpand.pro
+++ b/src/proto/insexpand.pro
@@ -44,11 +44,11 @@ int ins_compl_bs(void);
void ins_compl_addleader(int c);
void ins_compl_addfrommatch(void);
int ins_compl_prep(int c);
-char *set_completefunc_option(void);
+char *did_set_completefunc(optset_T *args);
void set_buflocal_cfu_callback(buf_T *buf);
-char *set_omnifunc_option(void);
+char *did_set_omnifunc(optset_T *args);
void set_buflocal_ofu_callback(buf_T *buf);
-char *set_thesaurusfunc_option(void);
+char *did_set_thesaurusfunc(optset_T *args);
int set_ref_in_insexpand_funcs(int copyID);
void f_complete(typval_T *argvars, typval_T *rettv);
void f_complete_add(typval_T *argvars, typval_T *rettv);
diff --git a/src/proto/map.pro b/src/proto/map.pro
index 1ed088dc6..d696aabcd 100644
--- a/src/proto/map.pro
+++ b/src/proto/map.pro
@@ -26,7 +26,7 @@ void init_mappings(void);
void add_map(char_u *map, int mode, int nore);
int langmap_adjust_mb(int c);
void langmap_init(void);
-void langmap_set(void);
+char *did_set_langmap(optset_T *args);
void ex_abbreviate(exarg_T *eap);
void ex_map(exarg_T *eap);
void ex_unmap(exarg_T *eap);
diff --git a/src/proto/ops.pro b/src/proto/ops.pro
index 8a25bf626..193e89430 100644
--- a/src/proto/ops.pro
+++ b/src/proto/ops.pro
@@ -17,7 +17,7 @@ void block_prep(oparg_T *oap, struct block_def *bdp, linenr_T lnum, int is_del);
void op_addsub(oparg_T *oap, linenr_T Prenum1, int g_cmd);
void clear_oparg(oparg_T *oap);
void cursor_pos_info(dict_T *dict);
-char *set_operatorfunc_option(void);
+char *did_set_operatorfunc(optset_T *args);
void free_operatorfunc_option(void);
int set_ref_in_opfunc(int copyID);
void do_pending_operator(cmdarg_T *cap, int old_col, int gui_yank);
diff --git a/src/proto/option.pro b/src/proto/option.pro
index b32b95ed3..a4a2b9f81 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -24,6 +24,68 @@ int valid_name(char_u *val, char *allowed);
void set_option_sctx_idx(int opt_idx, int opt_flags, sctx_T script_ctx);
sctx_T *get_option_sctx(char *name);
void set_term_option_sctx_idx(char *name, int opt_idx);
+char *did_set_compatible(optset_T *args);
+char *did_set_langremap(optset_T *args);
+char *did_set_langnoremap(optset_T *args);
+char *did_set_undofile(optset_T *args);
+char *did_set_readonly(optset_T *args);
+char *did_set_mousehide(optset_T *args);
+char *did_set_modifiable(optset_T *args);
+char *did_set_eof_eol_fixeol_bomb(optset_T *args);
+char *did_set_binary(optset_T *args);
+char *did_set_buflisted(optset_T *args);
+char *did_set_swapfile(optset_T *args);
+char *did_set_terse(optset_T *args);
+char *did_set_paste(optset_T *args);
+char *did_set_insertmode(optset_T *args);
+char *did_set_ignorecase(optset_T *args);
+char *did_set_hlsearch(optset_T *args);
+char *did_set_scrollbind(optset_T *args);
+char *did_set_previewwindow(optset_T *args);
+char *did_set_smoothscroll(optset_T *args);
+char *did_set_textmode(optset_T *args);
+char *did_set_textauto(optset_T *args);
+char *did_set_lisp(optset_T *args);
+char *did_set_title_icon(optset_T *args);
+char *did_set_modified(optset_T *args);
+char *did_set_shellslash(optset_T *args);
+char *did_set_wrap(optset_T *args);
+char *did_set_equalalways(optset_T *args);
+char *did_set_weirdinvert(optset_T *args);
+char *did_set_ballooneval(optset_T *args);
+char *did_set_balloonevalterm(optset_T *args);
+char *did_set_autochdir(optset_T *args);
+char *did_set_diff(optset_T *args);
+char *did_set_imdisable(optset_T *args);
+char *did_set_spell(optset_T *args);
+char *did_set_arabic(optset_T *args);
+char *did_set_number_relativenumber(optset_T *args);
+char *did_set_termguicolors(optset_T *args);
+char *did_set_winheight_helpheight(optset_T *args);
+char *did_set_winminheight(optset_T *args);
+char *did_set_winwidth(optset_T *args);
+char *did_set_winminwidth(optset_T *args);
+char *did_set_laststatus(optset_T *args);
+char *did_set_showtabline(optset_T *args);
+char *did_set_linespace(optset_T *args);
+char *did_set_foldlevel(optset_T *args);
+char *did_set_foldminlines(optset_T *args);
+char *did_set_foldnestmax(optset_T *args);
+char *did_set_foldcolumn(optset_T *args);
+char *did_set_shiftwidth_tabstop(optset_T *args);
+char *did_set_maxcombine(optset_T *args);
+char *did_set_iminsert(optset_T *args);
+char *did_set_imstyle(optset_T *args);
+char *did_set_window(optset_T *args);
+char *did_set_imsearch(optset_T *args);
+char *did_set_titlelen(optset_T *args);
+char *did_set_cmdheight(optset_T *args);
+char *did_set_updatecount(optset_T *args);
+char *did_set_conceallevel(optset_T *args);
+char *did_set_pyxversion(optset_T *args);
+char *did_set_numberwidth(optset_T *args);
+char *did_set_textwidth(optset_T *args);
+char *did_set_undolevels(optset_T *args);
void check_redraw(long_u flags);
int findoption(char_u *arg);
getoption_T get_option_value(char_u *name, long *numval, char_u **stringval, int *flagsp, int scope);
@@ -55,6 +117,7 @@ void unset_global_local_option(char_u *name, void *from);
char_u *get_option_varp_scope(int opt_idx, int scope);
char_u *get_option_var(int opt_idx);
char_u *get_option_fullname(int opt_idx);
+opt_did_set_cb_T get_option_did_set_cb(int opt_idx);
char_u *get_equalprg(void);
void win_copy_options(win_T *wp_from, win_T *wp_to);
void after_copy_winopt(win_T *wp);
@@ -72,7 +135,7 @@ void vimrc_found(char_u *fname, char_u *envname);
void change_compatible(int on);
int option_was_set(char_u *name);
int reset_option_was_set(char_u *name);
-void fill_breakat_flags(void);
+char *did_set_breakat(optset_T *args);
int can_bs(int what);
long get_scrolloff_value(void);
long get_sidescrolloff_value(void);
diff --git a/src/proto/optionstr.pro b/src/proto/optionstr.pro
index d4f96be40..d92a7f006 100644
--- a/src/proto/optionstr.pro
+++ b/src/proto/optionstr.pro
@@ -9,7 +9,78 @@ void set_string_option_direct(char_u *name, int opt_idx, char_u *val, int opt_fl
void set_string_option_direct_in_win(win_T *wp, char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid);
void set_string_option_direct_in_buf(buf_T *buf, char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid);
char *set_string_option(int opt_idx, char_u *value, int opt_flags, char *errbuf);
-char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *errbuf, int opt_flags, int *value_checked);
+char *did_set_backupcopy(optset_T *args);
+char *did_set_backupext_or_patchmode(optset_T *args);
+char *did_set_breakindentopt(optset_T *args);
+char *did_set_helpfile(optset_T *args);
+char *did_set_helplang(optset_T *args);
+char *did_set_highlight(optset_T *args);
+char *did_set_sessionoptions(optset_T *args);
+char *did_set_ambiwidth(optset_T *args);
+char *did_set_background(optset_T *args);
+char *did_set_wildmode(optset_T *args);
+char *did_set_winaltkeys(optset_T *args);
+char *did_set_eventignore(optset_T *args);
+char *did_set_printencoding(optset_T *args);
+char *did_set_imactivatekey(optset_T *args);
+char *did_set_fileformat(optset_T *args);
+char *did_set_fileformats(optset_T *args);
+char *did_set_cryptkey(optset_T *args);
+char *did_set_cryptmethod(optset_T *args);
+char *did_set_matchpairs(optset_T *args);
+char *did_set_verbosefile(optset_T *args);
+char *did_set_showbreak(optset_T *args);
+char *did_set_guifont(optset_T *args);
+char *did_set_guifontset(optset_T *args);
+char *did_set_guifontwide(optset_T *args);
+char *did_set_guiligatures(optset_T *args);
+char *did_set_mouseshape(optset_T *args);
+char *did_set_titlestring(optset_T *args);
+char *did_set_iconstring(optset_T *args);
+char *did_set_guioptions(optset_T *args);
+char *did_set_guitablabel(optset_T *args);
+char *did_set_ttymouse(optset_T *args);
+char *did_set_selection(optset_T *args);
+char *did_set_browsedir(optset_T *args);
+char *did_set_keymodel(optset_T *args);
+char *did_set_keyprotocol(optset_T *args);
+char *did_set_mousemodel(optset_T *args);
+char *did_set_display(optset_T *args);
+char *did_set_spellfile(optset_T *args);
+char *did_set_spelllang(optset_T *args);
+char *did_set_spellcapcheck(optset_T *args);
+char *did_set_spelloptions(optset_T *args);
+char *did_set_spellsuggest(optset_T *args);
+char *did_set_mkspellmem(optset_T *args);
+char *did_set_buftype(optset_T *args);
+char *did_set_statusline(optset_T *args);
+char *did_set_tabline(optset_T *args);
+char *did_set_rulerformat(optset_T *args);
+char *did_set_completeopt(optset_T *args);
+char *did_set_completeslash(optset_T *args);
+char *did_set_signcolumn(optset_T *args);
+char *did_set_toolbar(optset_T *args);
+char *did_set_toolbariconsize(optset_T *args);
+char *did_set_pastetoggle(optset_T *args);
+char *did_set_backspace(optset_T *args);
+char *did_set_tagcase(optset_T *args);
+char *did_set_diffopt(optset_T *args);
+char *did_set_foldmethod(optset_T *args);
+char *did_set_foldmarker(optset_T *args);
+char *did_set_commentstring(optset_T *args);
+char *did_set_foldignore(optset_T *args);
+char *did_set_virtualedit(optset_T *args);
+char *did_set_cscopequickfix(optset_T *args);
+char *did_set_cinoptions(optset_T *args);
+char *did_set_lispoptions(optset_T *args);
+char *did_set_renderoptions(optset_T *args);
+char *did_set_termwinkey(optset_T *args);
+char *did_set_termwinsize(optset_T *args);
+char *did_set_varsofttabstop(optset_T *args);
+char *did_set_vartabstop(optset_T *args);
+char *did_set_previewpopup(optset_T *args);
+char *did_set_completepopup(optset_T *args);
+char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char_u *value, char *errbuf, int opt_flags, int *value_checked);
int check_ff_value(char_u *p);
void save_clear_shm_value(void);
void restore_shm_value(void);
diff --git a/src/proto/quickfix.pro b/src/proto/quickfix.pro
index 3a210b066..b708d6bd4 100644
--- a/src/proto/quickfix.pro
+++ b/src/proto/quickfix.pro
@@ -15,7 +15,7 @@ void ex_cclose(exarg_T *eap);
void ex_copen(exarg_T *eap);
void ex_cbottom(exarg_T *eap);
linenr_T qf_current_entry(win_T *wp);
-char *qf_process_qftf_option(void);
+char *did_set_quickfixtextfunc(optset_T *args);
int grep_internal(cmdidx_T cmdidx);
void ex_make(exarg_T *eap);
int qf_get_size(exarg_T *eap);
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 55c8482cd..f6bad568b 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -16,7 +16,7 @@ void slang_clear_sug(slang_T *lp);
void count_common_word(slang_T *lp, char_u *word, int len, int count);
int byte_in_str(char_u *str, int n);
int init_syl_tab(slang_T *slang);
-char *did_set_spelllang(win_T *wp);
+char *parse_spelllang(win_T *wp);
int captype(char_u *word, char_u *end);
void spell_delete_wordlist(void);
void spell_free_all(void);
diff --git a/src/proto/tag.pro b/src/proto/tag.pro
index f42e3f8ee..6de463e92 100644
--- a/src/proto/tag.pro
+++ b/src/proto/tag.pro
@@ -1,5 +1,5 @@
/* tag.c */
-char *set_tagfunc_option(void);
+char *did_set_tagfunc(optset_T *args);
void free_tagfunc_option(void);
int set_ref_in_tagfunc(int copyID);
void set_buflocal_tfu_callback(buf_T *buf);
diff --git a/src/quickfix.c b/src/quickfix.c
index bc82ee027..245e20bb8 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4534,7 +4534,7 @@ qf_find_buf(qf_info_T *qi)
* Returns OK or FAIL.
*/
char *
-qf_process_qftf_option(void)
+did_set_quickfixtextfunc(optset_T *args UNUSED)
{
if (option_set_callback_func(p_qftf, &qftf_cb) == FAIL)
return e_invalid_argument;
diff --git a/src/spell.c b/src/spell.c
index 072740cba..071ac9c95 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -1987,7 +1987,7 @@ count_syllables(slang_T *slang, char_u *word)
* Returns NULL if it's OK, an untranslated error message otherwise.
*/
char *
-did_set_spelllang(win_T *wp)
+parse_spelllang(win_T *wp)
{
garray_T ga;
char_u *splp;
@@ -2503,7 +2503,7 @@ spell_reload(void)
{
if (wp->w_p_spell)
{
- (void)did_set_spelllang(wp);
+ (void)parse_spelllang(wp);
break;
}
}
@@ -4410,7 +4410,7 @@ did_set_spell_option(int is_spellfile)
FOR_ALL_WINDOWS(wp)
if (wp->w_buffer == curbuf && wp->w_p_spell)
{
- errmsg = did_set_spelllang(wp);
+ errmsg = parse_spelllang(wp);
break;
}
return errmsg;
diff --git a/src/spellfile.c b/src/spellfile.c
index bf51f5fd6..a9fa70cfa 100644
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -1771,7 +1771,7 @@ spell_reload_one(
// When "zg" was used and the file wasn't loaded yet, should redo
// 'spelllang' to load it now.
if (added_word && !didit)
- did_set_spelllang(curwin);
+ parse_spelllang(curwin);
}
diff --git a/src/spellsuggest.c b/src/spellsuggest.c
index 6b34ec816..a60055728 100644
--- a/src/spellsuggest.c
+++ b/src/spellsuggest.c
@@ -480,7 +480,7 @@ spell_suggest(int count)
if (!curwin->w_p_spell)
{
- did_set_spelllang(curwin);
+ parse_spelllang(curwin);
curwin->w_p_spell = TRUE;
}
diff --git a/src/structs.h b/src/structs.h
index a320d7069..584d47255 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -4789,3 +4789,33 @@ typedef struct {
#endif
int cts_vcol; // virtual column at current position
} chartabsize_T;
+
+/*
+ * Argument for the callback function (opt_did_set_cb_T) invoked after an
+ * option value is modified.
+ */
+typedef struct
+{
+ int os_flags;
+ char_u *os_varp; // pointer to the option variable
+
+ // old value of the option (can be a string, number or a boolean)
+ union
+ {
+ long number;
+ int boolean;
+ char_u *string;
+ } os_oldval;
+
+ // new value of the option (can be a string, number or a boolean)
+ union
+ {
+ long number;
+ int boolean;
+ char_u *string;
+ } os_newval;
+
+ // When set by the called function: Stop processing the option further.
+ // Currently only used for boolean options.
+ int os_doskip;
+} optset_T;
diff --git a/src/tag.c b/src/tag.c
index de9473ca7..86f8ac4bc 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -171,7 +171,7 @@ static callback_T tfu_cb; // 'tagfunc' callback function
* a function (string), or function(<name>) or funcref(<name>) or a lambda.
*/
char *
-set_tagfunc_option(void)
+did_set_tagfunc(optset_T *args UNUSED)
{
#ifdef FEAT_EVAL
free_callback(&tfu_cb);
diff --git a/src/version.c b/src/version.c
index d219f0fae..63fd78792 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1330,
+/**/
1329,
/**/
1328,
diff --git a/src/vim.h b/src/vim.h
index 45b5fa925..db38da2e8 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -2284,6 +2284,12 @@ typedef enum {
FCERR_FAILED, // error while executing the function
} funcerror_T;
+/*
+ * Type for the callback function that is invoked after an option value is
+ * changed to validate and apply the new value.
+ */
+typedef char *(*opt_did_set_cb_T)(optset_T *args);
+
// Flags for assignment functions.
#define ASSIGN_VAR 0 // ":var" (nothing special)
#define ASSIGN_FINAL 0x01 // ":final"