diff options
Diffstat (limited to 'src/nvim/ops.c')
| -rw-r--r-- | src/nvim/ops.c | 20 | 
1 files changed, 7 insertions, 13 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 4fb1a1ea9d..041443d472 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -3620,9 +3620,9 @@ int do_join(size_t count,        curr = skipwhite(curr);        if (*curr != ')' && currsize != 0 && endcurr1 != TAB            && (!has_format_option(FO_MBYTE_JOIN) -              || (mb_ptr2char(curr) < 0x100 && endcurr1 < 0x100)) +              || (utf_ptr2char(curr) < 0x100 && endcurr1 < 0x100))            && (!has_format_option(FO_MBYTE_JOIN2) -              || mb_ptr2char(curr) < 0x100 || endcurr1 < 0x100) +              || utf_ptr2char(curr) < 0x100 || endcurr1 < 0x100)            ) {          /* don't add a space if the line is ending in a space */          if (endcurr1 == ' ') @@ -3639,18 +3639,12 @@ int do_join(size_t count,      sumsize += currsize + spaces[t];      endcurr1 = endcurr2 = NUL;      if (insert_space && currsize > 0) { -      if (has_mbyte) { -        cend = curr + currsize; +      cend = curr + currsize; +      MB_PTR_BACK(curr, cend); +      endcurr1 = utf_ptr2char(cend); +      if (cend > curr) {          MB_PTR_BACK(curr, cend); -        endcurr1 = (*mb_ptr2char)(cend); -        if (cend > curr) { -          MB_PTR_BACK(curr, cend); -          endcurr2 = (*mb_ptr2char)(cend); -        } -      } else { -        endcurr1 = *(curr + currsize - 1); -        if (currsize > 1) -          endcurr2 = *(curr + currsize - 2); +        endcurr2 = utf_ptr2char(cend);        }      }      line_breakcheck();  | 
