diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/edit.c | 2 | ||||
-rw-r--r-- | src/nvim/highlight_group.c | 6 | ||||
-rw-r--r-- | src/nvim/ops.c | 18 |
3 files changed, 24 insertions, 2 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 4b472a2fbd..3006f423dc 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -3170,7 +3170,7 @@ bool in_cinkeys(int keytyped, int when, bool line_is_empty) } else { // TODO(@brammool): multi-byte if (keytyped == (int)(uint8_t)p[-1] - || (icase && keytyped < 256 + || (icase && keytyped < 256 && keytyped >= 0 && TOLOWER_LOC(keytyped) == TOLOWER_LOC((uint8_t)p[-1]))) { char *line = get_cursor_pos_ptr(); assert(p >= look && (uintmax_t)(p - look) <= SIZE_MAX); diff --git a/src/nvim/highlight_group.c b/src/nvim/highlight_group.c index 16210fb06f..07ba1088f9 100644 --- a/src/nvim/highlight_group.c +++ b/src/nvim/highlight_group.c @@ -313,6 +313,8 @@ static const char *highlight_init_light[] = { "Normal guifg=NvimDarkGrey2 guibg=NvimLightGrey2 ctermfg=NONE ctermbg=NONE", // UI + "Added guifg=NvimDarGreen ctermfg=2", + "Changed guifg=NvimDarkCyan ctermfg=6", "ColorColumn guibg=NvimLightGrey4 cterm=reverse", "Conceal guifg=NvimLightGrey4", "CurSearch guifg=NvimLightGrey1 guibg=NvimDarkYellow ctermfg=15 ctermbg=3", @@ -341,6 +343,7 @@ static const char *highlight_init_light[] = { "RedrawDebugClear guibg=NvimLightYellow ctermfg=15 ctermbg=3", "RedrawDebugComposed guibg=NvimLightGreen ctermfg=15 ctermbg=2", "RedrawDebugRecompose guibg=NvimLightRed ctermfg=15 ctermbg=1", + "Removed guifg=NvimDarkRed ctermfg=1", "Search guifg=NvimDarkGrey1 guibg=NvimLightYellow ctermfg=15 ctermbg=3", "SignColumn guifg=NvimLightGrey4", "SpecialKey guifg=NvimLightGrey4", @@ -382,6 +385,8 @@ static const char *highlight_init_dark[] = { "Normal guifg=NvimLightGrey2 guibg=NvimDarkGrey2 ctermfg=NONE ctermbg=NONE", // UI + "Added guifg=NvimLightGreen ctermfg=10", + "Changed guifg=NvimLightCyan ctermfg=14", "ColorColumn guibg=NvimDarkGrey4 cterm=reverse", "Conceal guifg=NvimDarkGrey4", "CurSearch guifg=NvimDarkGrey1 guibg=NvimLightYellow ctermfg=0 ctermbg=11", @@ -410,6 +415,7 @@ static const char *highlight_init_dark[] = { "RedrawDebugClear guibg=NvimDarkYellow ctermfg=0 ctermbg=11", "RedrawDebugComposed guibg=NvimDarkGreen ctermfg=0 ctermbg=10", "RedrawDebugRecompose guibg=NvimDarkRed ctermfg=0 ctermbg=9", + "Removed guifg=NvimLightRed ctermfg=9", "Search guifg=NvimLightGrey1 guibg=NvimDarkYellow ctermfg=0 ctermbg=11", "SignColumn guifg=NvimDarkGrey4", "SpecialKey guifg=NvimDarkGrey4", diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 78926807e2..7c6e63a2bf 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -1283,9 +1283,25 @@ int insert_reg(int regname, bool literally_arg) } else { for (size_t i = 0; i < reg->y_size; i++) { if (regname == '-') { + Direction dir = BACKWARD; + if ((State & REPLACE_FLAG) != 0) { + pos_T curpos; + u_save_cursor(); + if (u_save_cursor() == FAIL) { + return FAIL; + } + del_chars(mb_charlen(reg->y_array[0]), true); + curpos = curwin->w_cursor; + if (oneright() == FAIL) { + // hit end of line, need to put forward (after the current position) + dir = FORWARD; + } + curwin->w_cursor = curpos; + } + AppendCharToRedobuff(Ctrl_R); AppendCharToRedobuff(regname); - do_put(regname, NULL, BACKWARD, 1, PUT_CURSEND); + do_put(regname, NULL, dir, 1, PUT_CURSEND); } else { stuffescaped(reg->y_array[i], literally); } |