summaryrefslogtreecommitdiff
path: root/src/option.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-07-28 16:36:39 +0200
committerBram Moolenaar <Bram@vim.org>2019-07-28 16:36:39 +0200
commitac3150d385e6e3f3fe76642aac3cda954d30583f (patch)
tree1ef511ccde68ed948d811eb04a69303d1ccea50c /src/option.c
parentbca9c301936c9ba4ee67528f81393debf83844b9 (diff)
downloadvim-git-ac3150d385e6e3f3fe76642aac3cda954d30583f.tar.gz
patch 8.1.1769: 'shellslash' is also used for completionv8.1.1769
Problem: 'shellslash' is also used for completion. Solution: Add the 'completeslash' option. (Yasuhiro Matsumoto, closes #3612)
Diffstat (limited to 'src/option.c')
-rw-r--r--src/option.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/option.c b/src/option.c
index 3959d4711..fdad20551 100644
--- a/src/option.c
+++ b/src/option.c
@@ -88,6 +88,7 @@
# define PV_DICT OPT_BOTH(OPT_BUF(BV_DICT))
# define PV_TSR OPT_BOTH(OPT_BUF(BV_TSR))
#endif
+#define PV_CSL OPT_BUF(BV_CSL)
#ifdef FEAT_COMPL_FUNC
# define PV_CFU OPT_BUF(BV_CFU)
#endif
@@ -892,6 +893,15 @@ static struct vimoption options[] =
{(char_u *)0L, (char_u *)0L}
#endif
SCTX_INIT},
+ {"completeslash", "csl", P_STRING|P_VI_DEF|P_VIM,
+#if defined(FEAT_INS_EXPAND) && defined(BACKSLASH_IN_FILENAME)
+ (char_u *)&p_csl, PV_CSL,
+ {(char_u *)"", (char_u *)0L}
+#else
+ (char_u *)NULL, PV_NONE,
+ {(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,
@@ -3238,6 +3248,9 @@ static char *(p_fcl_values[]) = {"all", NULL};
#endif
#ifdef FEAT_INS_EXPAND
static char *(p_cot_values[]) = {"menu", "menuone", "longest", "preview", "noinsert", "noselect", NULL};
+# ifdef BACKSLASH_IN_FILENAME
+static char *(p_csl_values[]) = {"slash", "backslash", NULL};
+# endif
#endif
#ifdef FEAT_SIGNS
static char *(p_scl_values[]) = {"yes", "no", "auto", "number", NULL};
@@ -7409,7 +7422,7 @@ did_set_string_option(
}
}
- /* 'completeopt' */
+ // 'completeopt'
else if (varp == &p_cot)
{
if (check_opt_strings(p_cot, p_cot_values, TRUE) != OK)
@@ -7417,7 +7430,16 @@ did_set_string_option(
else
completeopt_was_set();
}
-#endif /* FEAT_INS_EXPAND */
+
+# ifdef BACKSLASH_IN_FILENAME
+ // 'completeslash'
+ else if (varp == &curbuf->b_p_csl)
+ {
+ if (check_opt_strings(p_csl, p_csl_values, FALSE) != OK)
+ errmsg = e_invarg;
+ }
+# endif
+#endif // FEAT_INS_EXPAND
#ifdef FEAT_SIGNS
// 'signcolumn'
@@ -11110,7 +11132,6 @@ get_varp(struct vimoption *p)
#endif
case PV_MENC: return *curbuf->b_p_menc != NUL
? (char_u *)&(curbuf->b_p_menc) : p->var;
-
#ifdef FEAT_ARABIC
case PV_ARAB: return (char_u *)&(curwin->w_p_arab);
#endif
@@ -11197,6 +11218,9 @@ get_varp(struct vimoption *p)
#endif
#ifdef FEAT_INS_EXPAND
case PV_CPT: return (char_u *)&(curbuf->b_p_cpt);
+# ifdef BACKSLASH_IN_FILENAME
+ case PV_CSL: return (char_u *)&(curbuf->b_p_csl);
+# endif
#endif
#ifdef FEAT_COMPL_FUNC
case PV_CFU: return (char_u *)&(curbuf->b_p_cfu);
@@ -11591,6 +11615,9 @@ buf_copy_options(buf_T *buf, int flags)
buf->b_p_swf = cmdmod.noswapfile ? FALSE : p_swf;
#ifdef FEAT_INS_EXPAND
buf->b_p_cpt = vim_strsave(p_cpt);
+# ifdef BACKSLASH_IN_FILENAME
+ buf->b_p_csl = vim_strsave(p_csl);
+# endif
#endif
#ifdef FEAT_COMPL_FUNC
buf->b_p_cfu = vim_strsave(p_cfu);