aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/indent.c4
-rw-r--r--src/nvim/option.c13
-rw-r--r--src/nvim/os_unix.c8
-rw-r--r--src/nvim/path.c2
-rw-r--r--src/nvim/path.h1
-rw-r--r--src/nvim/syntax.c29
-rw-r--r--src/nvim/version.c2
-rw-r--r--src/nvim/window.c1
8 files changed, 34 insertions, 26 deletions
diff --git a/src/nvim/indent.c b/src/nvim/indent.c
index 7090e007bf..075acc6c13 100644
--- a/src/nvim/indent.c
+++ b/src/nvim/indent.c
@@ -58,8 +58,8 @@ int get_indent_str(char_u *ptr, int ts, int list)
if (!list || lcs_tab1) { // count a tab for what it is worth
count += ts - (count % ts);
} else {
- // in list mode, when tab is not set, count screen char width for Tab:
- // ^I
+ // In list mode, when tab is not set, count screen char width
+ // for Tab, displays: ^I
count += ptr2cells(ptr);
}
} else if (*ptr == ' ') {
diff --git a/src/nvim/option.c b/src/nvim/option.c
index c1ab3f2ee5..2b3c87511e 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -6196,15 +6196,17 @@ int makeset(FILE *fd, int opt_flags, int local_only)
int pri;
/*
- * The options that don't have a default (terminal name, columns, lines)
- * are never written. Terminal options are also not written.
+ * Some options are never written:
+ * - Options that don't have a default (terminal name, columns, lines).
+ * - Terminal options.
+ * - Hidden options.
+ *
* Do the loop over "options[]" twice: once for options with the
* P_PRI_MKRC flag and once without.
*/
for (pri = 1; pri >= 0; --pri) {
for (p = &options[0]; !istermoption(p); p++)
if (!(p->flags & P_NO_MKRC)
- && !istermoption(p)
&& ((pri == 1) == ((p->flags & P_PRI_MKRC) != 0))) {
/* skip global option when only doing locals */
if (p->indir == PV_NONE && !(opt_flags & OPT_GLOBAL))
@@ -6215,8 +6217,11 @@ int makeset(FILE *fd, int opt_flags, int local_only)
if ((opt_flags & OPT_GLOBAL) && (p->flags & P_NOGLOB))
continue;
- /* Global values are only written when not at the default value. */
varp = get_varp_scope(p, opt_flags);
+ /* Hidden options are never written. */
+ if (!varp)
+ continue;
+ /* Global values are only written when not at the default value. */
if ((opt_flags & OPT_GLOBAL) && optval_default(p, varp))
continue;
diff --git a/src/nvim/os_unix.c b/src/nvim/os_unix.c
index a9c1fec0b4..612f475933 100644
--- a/src/nvim/os_unix.c
+++ b/src/nvim/os_unix.c
@@ -1066,10 +1066,12 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,
|| pat[i][j + 1] == '`')
*p++ = '\\';
++j;
- } else if (!intick && vim_strchr(SHELL_SPECIAL,
- pat[i][j]) != NULL)
+ } else if (!intick
+ && ((flags & EW_KEEPDOLLAR) == 0 || pat[i][j] != '$')
+ && vim_strchr(SHELL_SPECIAL, pat[i][j]) != NULL)
/* Put a backslash before a special character, but not
- * when inside ``. */
+ * when inside ``. And not for $var when EW_KEEPDOLLAR is
+ * set. */
*p++ = '\\';
/* Copy one character. */
diff --git a/src/nvim/path.c b/src/nvim/path.c
index e8d31f3f73..950cc5a83a 100644
--- a/src/nvim/path.c
+++ b/src/nvim/path.c
@@ -1080,7 +1080,7 @@ gen_expand_wildcards (
free(p);
ga_clear_strings(&ga);
i = mch_expand_wildcards(num_pat, pat, num_file, file,
- flags);
+ flags | EW_KEEPDOLLAR);
recursive = FALSE;
return i;
}
diff --git a/src/nvim/path.h b/src/nvim/path.h
index 9a994f3477..628ea335ed 100644
--- a/src/nvim/path.h
+++ b/src/nvim/path.h
@@ -17,6 +17,7 @@
#define EW_ICASE 0x100 /* ignore case */
#define EW_NOERROR 0x200 /* no error for bad regexp */
#define EW_NOTWILD 0x400 /* add match with literal name if exists */
+#define EW_KEEPDOLLAR 0x800 /* do not escape $, $var is expanded */
/* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
* is used when executing commands and EW_SILENT for interactive expanding. */
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index b7a485598b..3deda0a8c9 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -5157,22 +5157,21 @@ get_id_list (
regmatch.rm_ic = TRUE;
id = 0;
for (int i = highlight_ga.ga_len; --i >= 0; ) {
- if (!vim_regexec(&regmatch, HL_TABLE()[i].sg_name, (colnr_T)0)) {
- continue;
- }
- if (round == 2) {
- /* Got more items than expected; can happen
- * when adding items that match:
- * "contains=a.*b,axb".
- * Go back to first round */
- if (count >= total_count) {
- free(retval);
- round = 1;
- } else
- retval[count] = i + 1;
+ if (vim_regexec(&regmatch, HL_TABLE()[i].sg_name, (colnr_T)0)) {
+ if (round == 2) {
+ /* Got more items than expected; can happen
+ * when adding items that match:
+ * "contains=a.*b,axb".
+ * Go back to first round */
+ if (count >= total_count) {
+ free(retval);
+ round = 1;
+ } else
+ retval[count] = i + 1;
+ }
+ ++count;
+ id = -1; /* remember that we found one */
}
- ++count;
- id = -1; /* remember that we found one */
}
vim_regfree(regmatch.regprog);
}
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 3460b7c6c3..de4f6ffd87 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -306,7 +306,7 @@ static int included_patches[] = {
//426 NA
425,
//424 NA
- //423,
+ 423,
//422,
421,
//420 NA
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 0ed43b0184..029fcaac8b 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -1977,6 +1977,7 @@ void win_close_othertab(win_T *win, int free_buf, tabpage_T *tp)
tabpage_T *ptp = NULL;
int free_tp = FALSE;
+ assert(win->w_buffer); // to avoid np dereference warning in next line
if (win->w_closing || win->w_buffer->b_closing)
return; /* window is already being closed */