aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_cmds.c72
-rw-r--r--src/nvim/ex_getln.c2
-rw-r--r--src/nvim/option.c8
-rw-r--r--src/nvim/option_defs.h2
-rw-r--r--src/nvim/options.lua16
-rw-r--r--src/nvim/syntax.c2
6 files changed, 50 insertions, 52 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index 3dc190ddbf..66c4089ec7 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -87,7 +87,7 @@ typedef struct {
SubIgnoreType do_ic; ///< ignore case flag
} subflags_T;
-/// Lines matched during 'incsubstitute'.
+/// Lines matched during :substitute.
typedef struct {
linenr_T lnum;
long nmatch;
@@ -3110,7 +3110,7 @@ static char_u *sub_parse_flags(char_u *cmd, subflags_T *subflags,
///
/// The usual escapes are supported as described in the regexp docs.
///
-/// @return buffer used for 'incsubstitute'
+/// @return buffer used for 'inccommand' preview
buf_T *do_sub(exarg_T *eap)
{
long i = 0;
@@ -3627,8 +3627,8 @@ buf_T *do_sub(exarg_T *eap)
* use "\=col("."). */
curwin->w_cursor.col = regmatch.startpos[0].col;
- // 3. Substitute the string. During 'incsubstitute' only do this if
- // there is a replace pattern.
+ // 3. Substitute the string. During 'inccommand' only do this if there
+ // is a replace pattern.
if (!eap->is_live || has_second_delim) {
if (subflags.do_count) {
// prevent accidentally changing the buffer by a function
@@ -3944,9 +3944,9 @@ skip:
subflags.do_all = save_do_all;
subflags.do_ask = save_do_ask;
- // Show 'incsubstitute' preview if there are matched lines.
- buf_T *incsub_buf = NULL;
- if (eap->is_live && matched_lines.size != 0 && pat != NULL && *p_ics != NUL) {
+ // Show 'inccommand' preview if there are matched lines.
+ buf_T *preview_buf = NULL;
+ if (eap->is_live && matched_lines.size != 0 && pat != NULL && *p_icm != NUL) {
// Place cursor on the first match after the cursor. (If all matches are
// above, then do_sub already placed cursor on the last match.)
colnr_T cur_col = -1;
@@ -3971,10 +3971,9 @@ skip:
}
}
- incsub_buf = incsub_display(pat, sub, eap->line1, eap->line2,
- &matched_lines);
+ preview_buf = show_sub(pat, sub, eap->line1, eap->line2, &matched_lines);
- } else if (*p_ics != NUL && eap->is_live) {
+ } else if (*p_icm != NUL && eap->is_live) {
curwin->w_cursor = old_cursor; // don't move the cursor
}
@@ -3985,7 +3984,7 @@ skip:
}
kv_destroy(matched_lines);
- return incsub_buf;
+ return preview_buf;
} // NOLINT(readability/fn_size)
/*
@@ -6015,12 +6014,11 @@ void set_context_in_sign_cmd(expand_T *xp, char_u *arg)
}
}
-/// Shows a preview of :substitute (for 'incsubstitute').
-/// With incsubstitute=split, shows a special buffer in a window, draws the
-/// screen, then restores the layout.
-static buf_T *incsub_display(char_u *pat, char_u *sub,
- linenr_T line1, linenr_T line2,
- MatchedLineVec *matched_lines)
+/// Shows the effects of the current :substitute command being typed
+/// ('inccommand'). If inccommand=split, shows a preview window then later
+/// restores the layout.
+static buf_T *show_sub(char_u *pat, char_u *sub, linenr_T line1, linenr_T line2,
+ MatchedLineVec *matched_lines)
FUNC_ATTR_NONNULL_ALL
{
static handle_T bufnr = 0; // special buffer, re-used on each visit
@@ -6033,27 +6031,27 @@ static buf_T *incsub_display(char_u *pat, char_u *sub,
size_t pat_size = mb_string2cells(pat);
// We keep a special-purpose buffer around, but don't assume it exists.
- buf_T *incsub_buf = bufnr ? buflist_findnr(bufnr) : 0;
+ buf_T *preview_buf = bufnr ? buflist_findnr(bufnr) : 0;
win_size_save(&save_winsizes); // Save current window sizes.
cmdmod.tab = 0; // disable :tab modifier
- cmdmod.noswapfile = true; // disable swap for 'incsubstitute' buffer
+ cmdmod.noswapfile = true; // disable swap for preview buffer
// disable file info message
set_option_value((char_u *)"shm", 0L, (char_u *)"F", 0);
bool outside_curline = (line1 != curwin->w_cursor.lnum
|| line2 != curwin->w_cursor.lnum);
- bool split = outside_curline && (*p_ics != 'n') && (sub_size || pat_size);
- if (incsub_buf == curbuf) { // Preview buffer cannot preview itself!
+ bool split = outside_curline && (*p_icm != 'n') && (sub_size || pat_size);
+ if (preview_buf == curbuf) { // Preview buffer cannot preview itself!
split = false;
- incsub_buf = NULL;
+ preview_buf = NULL;
}
if (split && win_split((int)p_cwh, WSP_BOT) != FAIL) {
- buf_open_special(incsub_buf ? bufnr : 0, "[Preview]", "incsub");
+ buf_open_special(preview_buf ? bufnr : 0, "[Preview]", "incsub");
buf_clear();
- incsub_buf = curbuf;
+ preview_buf = curbuf;
set_option_value((char_u *)"bh", 0L, (char_u *)"hide", OPT_LOCAL);
- bufnr = incsub_buf->handle;
+ bufnr = preview_buf->handle;
curbuf->b_p_bl = false;
curbuf->b_p_ma = true;
curbuf->b_p_ul = -1;
@@ -6070,9 +6068,9 @@ static buf_T *incsub_display(char_u *pat, char_u *sub,
size_t old_line_size = 0;
size_t line_size;
int src_id_highlight = 0;
- int hl_id = syn_check_group((char_u *)"IncSubstitute", 13);
+ int hl_id = syn_check_group((char_u *)"Substitute", 13);
- // Dump the lines into the incsub buffer.
+ // Dump the lines into the preview buffer.
for (size_t line = 0; line < matched_lines->size; line++) {
MatchedLine mat = matched_lines->items[line];
line_size = mb_string2cells(mat.line) + col_width + 1;
@@ -6083,7 +6081,7 @@ static buf_T *incsub_display(char_u *pat, char_u *sub,
old_line_size = line_size;
}
- // put " | lnum|line" into str and append it to the incsubstitute buffer
+ // put " | lnum|line" into str and append it to the preview buffer
snprintf(str, line_size, "|%*ld| %s", col_width - 3, mat.lnum, mat.line);
ml_append(line, (char_u *)str, (colnr_T)line_size, false);
@@ -6118,17 +6116,17 @@ static buf_T *incsub_display(char_u *pat, char_u *sub,
cmdmod = save_cmdmod;
- return incsub_buf;
+ return preview_buf;
}
/// :substitute command
///
-/// If 'incsubstitute' is empty, this just calls do_sub().
-/// If 'incsubstitute' is set, substitutes as-you-type ("live").
-/// If the command is cancelled the changes are removed from undo history.
+/// If 'inccommand' is empty this just calls do_sub().
+/// If 'inccommand' is set, shows a "live" preview then removes the changes
+/// from undo history.
void ex_substitute(exarg_T *eap)
{
- if (*p_ics == NUL || !eap->is_live) { // 'incsubstitute' is disabled
+ if (*p_icm == NUL || !eap->is_live) { // 'inccommand' is disabled
(void)do_sub(eap);
return;
}
@@ -6138,18 +6136,18 @@ void ex_substitute(exarg_T *eap)
int save_changedtick = curbuf->b_changedtick;
long save_b_p_ul = curbuf->b_p_ul;
curbuf->b_p_ul = LONG_MAX; // make sure we can undo all changes
- block_autocmds(); // disable events before incsub opening window/buffer
+ block_autocmds(); // disable events before show_sub() opens window/buffer
emsg_off++; // No error messages for live commands
- buf_T *incsub_buf = do_sub(eap);
+ buf_T *preview_buf = do_sub(eap);
if (save_changedtick != curbuf->b_changedtick
&& !u_undo_and_forget(1)) {
abort();
}
- if (buf_valid(incsub_buf)) {
+ if (buf_valid(preview_buf)) {
// XXX: Must do this *after* u_undo_and_forget(), why?
- close_windows(incsub_buf, false);
+ close_windows(preview_buf, false);
}
curbuf->b_changedtick = save_changedtick;
curbuf->b_p_ul = save_b_p_ul;
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index dba7a107e2..07b50a8056 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -1592,7 +1592,7 @@ static int command_line_changed(CommandLineState *s)
redrawcmdline();
s->did_incsearch = true;
} else if (s->firstc == ':'
- && *p_ics != NUL // 'incsubstitute' is set
+ && *p_icm != NUL // 'inccommand' is set
&& cmdline_star == 0 // not typing a password
&& cmd_is_live(ccline.cmdbuff)) {
// process a "live" command
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 761e4451b9..ca66f84a70 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -288,7 +288,7 @@ static char *(p_fdm_values[]) = { "manual", "expr", "marker", "indent",
static char *(p_fcl_values[]) = { "all", NULL };
static char *(p_cot_values[]) = { "menu", "menuone", "longest", "preview",
"noinsert", "noselect", NULL };
-static char *(p_ics_values[]) = { "nosplit", "split", NULL };
+static char *(p_icm_values[]) = { "nosplit", "split", NULL };
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "option.c.generated.h"
@@ -3111,9 +3111,9 @@ did_set_string_option (
else if (gvarp == &p_cino) {
/* TODO: recognize errors */
parse_cino(curbuf);
- // incsubstitute
- } else if (varp == &p_ics) {
- if (check_opt_strings(p_ics, p_ics_values, false) != OK) {
+ // inccommand
+ } else if (varp == &p_icm) {
+ if (check_opt_strings(p_icm, p_icm_values, false) != OK) {
errmsg = e_invarg;
}
// Options that are a list of flags.
diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h
index e0711c7c8f..57ad5f5d1a 100644
--- a/src/nvim/option_defs.h
+++ b/src/nvim/option_defs.h
@@ -470,6 +470,7 @@ EXTERN int p_icon; // 'icon'
EXTERN char_u *p_iconstring; // 'iconstring'
EXTERN int p_ic; // 'ignorecase'
EXTERN int p_is; // 'incsearch'
+EXTERN char_u *p_icm; // 'inccommand'
EXTERN int p_im; // 'insertmode'
EXTERN char_u *p_isf; // 'isfname'
EXTERN char_u *p_isi; // 'isident'
@@ -589,7 +590,6 @@ EXTERN int p_spr; // 'splitright'
EXTERN int p_sol; // 'startofline'
EXTERN char_u *p_su; // 'suffixes'
EXTERN char_u *p_swb; // 'switchbuf'
-EXTERN char_u *p_ics; // 'incsubstitute'
EXTERN unsigned swb_flags;
#ifdef IN_OPTION_C
static char *(p_swb_values[]) =
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index 359bf3fcee..14707aaa6c 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -1188,6 +1188,14 @@ return {
}
},
{
+ full_name='inccommand', abbreviation='icm',
+ type='string', scope={'global'},
+ vi_def=true,
+ redraw={'everything'},
+ varname='p_icm',
+ defaults={if_true={vi=""}}
+ },
+ {
full_name='include', abbreviation='inc',
type='string', scope={'global', 'buffer'},
vi_def=true,
@@ -1211,14 +1219,6 @@ return {
defaults={if_true={vi=false, vim=true}}
},
{
- full_name='incsubstitute', abbreviation='ics',
- type='string', scope={'global'},
- vi_def=true,
- redraw={'everything'},
- varname='p_ics',
- defaults={if_true={vi=""}}
- },
- {
full_name='indentexpr', abbreviation='inde',
type='string', scope={'buffer'},
vi_def=true,
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index 68d0e3da0f..e57965ac2c 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -5902,7 +5902,7 @@ static char *highlight_init_both[] =
"WildMenu ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black",
"default link EndOfBuffer NonText",
"default link QuickFixLine Search",
- "default link IncSubstitute Search",
+ "default link Substitute Search",
NULL
};