aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/edit.c2
-rw-r--r--src/nvim/highlight_group.c6
-rw-r--r--src/nvim/ops.c18
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);
}