diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_cmds.c | 72 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 2 | ||||
-rw-r--r-- | src/nvim/option.c | 8 | ||||
-rw-r--r-- | src/nvim/option_defs.h | 2 | ||||
-rw-r--r-- | src/nvim/options.lua | 16 | ||||
-rw-r--r-- | src/nvim/syntax.c | 2 |
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 }; |