mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.0.0523: dv} deletes part of a multi-byte character.
Problem: dv} deletes part of a multi-byte character. (Urtica Dioica)
Solution: Include the whole character.
bf3d58073f
This commit is contained in:
parent
db68d1d638
commit
34c0688790
@ -130,7 +130,7 @@ typedef struct SearchedFile {
|
|||||||
*
|
*
|
||||||
* returns FAIL if failed, OK otherwise.
|
* returns FAIL if failed, OK otherwise.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
search_regcomp (
|
search_regcomp (
|
||||||
char_u *pat,
|
char_u *pat,
|
||||||
int pat_save,
|
int pat_save,
|
||||||
@ -2121,7 +2121,7 @@ static int check_linecomment(char_u *line)
|
|||||||
* Show the match only if it is visible on the screen.
|
* Show the match only if it is visible on the screen.
|
||||||
* If there isn't a match, then beep.
|
* If there isn't a match, then beep.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
showmatch (
|
showmatch (
|
||||||
int c /* char to show match for */
|
int c /* char to show match for */
|
||||||
)
|
)
|
||||||
@ -2377,8 +2377,14 @@ findpar (
|
|||||||
++curr;
|
++curr;
|
||||||
curwin->w_cursor.lnum = curr;
|
curwin->w_cursor.lnum = curr;
|
||||||
if (curr == curbuf->b_ml.ml_line_count && what != '}') {
|
if (curr == curbuf->b_ml.ml_line_count && what != '}') {
|
||||||
if ((curwin->w_cursor.col = (colnr_T)STRLEN(ml_get(curr))) != 0) {
|
char_u *line = ml_get(curr);
|
||||||
|
|
||||||
|
// Put the cursor on the last character in the last line and make the
|
||||||
|
// motion inclusive.
|
||||||
|
if ((curwin->w_cursor.col = (colnr_T)STRLEN(line)) != 0) {
|
||||||
--curwin->w_cursor.col;
|
--curwin->w_cursor.col;
|
||||||
|
curwin->w_cursor.col -=
|
||||||
|
(*mb_head_off)(line, line + curwin->w_cursor.col);
|
||||||
*pincl = true;
|
*pincl = true;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
@ -2483,7 +2489,7 @@ static int cls(void)
|
|||||||
* Returns FAIL if the cursor was already at the end of the file.
|
* Returns FAIL if the cursor was already at the end of the file.
|
||||||
* If eol is TRUE, last word stops at end of line (for operators).
|
* If eol is TRUE, last word stops at end of line (for operators).
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
fwd_word (
|
fwd_word (
|
||||||
long count,
|
long count,
|
||||||
int bigword, /* "W", "E" or "B" */
|
int bigword, /* "W", "E" or "B" */
|
||||||
@ -2666,7 +2672,7 @@ finished:
|
|||||||
*
|
*
|
||||||
* Returns FAIL if start of the file was reached.
|
* Returns FAIL if start of the file was reached.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
bckend_word (
|
bckend_word (
|
||||||
long count,
|
long count,
|
||||||
int bigword, /* TRUE for "B" */
|
int bigword, /* TRUE for "B" */
|
||||||
@ -2756,7 +2762,7 @@ static void find_first_blank(pos_T *posp)
|
|||||||
/*
|
/*
|
||||||
* Skip count/2 sentences and count/2 separating white spaces.
|
* Skip count/2 sentences and count/2 separating white spaces.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
findsent_forward (
|
findsent_forward (
|
||||||
long count,
|
long count,
|
||||||
int at_start_sent /* cursor is at start of sentence */
|
int at_start_sent /* cursor is at start of sentence */
|
||||||
@ -2776,7 +2782,7 @@ findsent_forward (
|
|||||||
* Find word under cursor, cursor at end.
|
* Find word under cursor, cursor at end.
|
||||||
* Used while an operator is pending, and in Visual mode.
|
* Used while an operator is pending, and in Visual mode.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
current_word (
|
current_word (
|
||||||
oparg_T *oap,
|
oparg_T *oap,
|
||||||
long count,
|
long count,
|
||||||
@ -3084,7 +3090,7 @@ extend:
|
|||||||
* Find block under the cursor, cursor at end.
|
* Find block under the cursor, cursor at end.
|
||||||
* "what" and "other" are two matching parenthesis/brace/etc.
|
* "what" and "other" are two matching parenthesis/brace/etc.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
current_block (
|
current_block (
|
||||||
oparg_T *oap,
|
oparg_T *oap,
|
||||||
long count,
|
long count,
|
||||||
@ -3282,7 +3288,7 @@ static int in_html_tag(int end_tag)
|
|||||||
/*
|
/*
|
||||||
* Find tag block under the cursor, cursor at end.
|
* Find tag block under the cursor, cursor at end.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
current_tagblock (
|
current_tagblock (
|
||||||
oparg_T *oap,
|
oparg_T *oap,
|
||||||
long count_arg,
|
long count_arg,
|
||||||
@ -3465,7 +3471,7 @@ theend:
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
current_par (
|
current_par (
|
||||||
oparg_T *oap,
|
oparg_T *oap,
|
||||||
long count,
|
long count,
|
||||||
@ -3632,7 +3638,7 @@ extend:
|
|||||||
* as a quote.
|
* as a quote.
|
||||||
* Returns column number of "quotechar" or -1 when not found.
|
* Returns column number of "quotechar" or -1 when not found.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
find_next_quote (
|
find_next_quote (
|
||||||
char_u *line,
|
char_u *line,
|
||||||
int col,
|
int col,
|
||||||
@ -3664,7 +3670,7 @@ find_next_quote (
|
|||||||
* as a quote.
|
* as a quote.
|
||||||
* Return the found column or zero.
|
* Return the found column or zero.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
find_prev_quote (
|
find_prev_quote (
|
||||||
char_u *line,
|
char_u *line,
|
||||||
int col_start,
|
int col_start,
|
||||||
@ -3694,7 +3700,7 @@ find_prev_quote (
|
|||||||
* Find quote under the cursor, cursor at end.
|
* Find quote under the cursor, cursor at end.
|
||||||
* Returns TRUE if found, else FALSE.
|
* Returns TRUE if found, else FALSE.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
current_quote (
|
current_quote (
|
||||||
oparg_T *oap,
|
oparg_T *oap,
|
||||||
long count,
|
long count,
|
||||||
@ -3920,7 +3926,7 @@ current_quote (
|
|||||||
* Find next search match under cursor, cursor at end.
|
* Find next search match under cursor, cursor at end.
|
||||||
* Used while an operator is pending, and in Visual mode.
|
* Used while an operator is pending, and in Visual mode.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
current_search (
|
current_search (
|
||||||
long count,
|
long count,
|
||||||
int forward /* move forward or backwards */
|
int forward /* move forward or backwards */
|
||||||
@ -4116,7 +4122,7 @@ int linewhite(linenr_T lnum)
|
|||||||
* Find identifiers or defines in included files.
|
* Find identifiers or defines in included files.
|
||||||
* If p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
|
* If p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
find_pattern_in_path (
|
find_pattern_in_path (
|
||||||
char_u *ptr, /* pointer to search pattern */
|
char_u *ptr, /* pointer to search pattern */
|
||||||
int dir, /* direction of expansion */
|
int dir, /* direction of expansion */
|
||||||
|
@ -2387,3 +2387,15 @@ func Test_changelist()
|
|||||||
%bwipe!
|
%bwipe!
|
||||||
let &ul = save_ul
|
let &ul = save_ul
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_delete_until_paragraph()
|
||||||
|
if !has('multi_byte')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
new
|
||||||
|
normal grádv}
|
||||||
|
call assert_equal('á', getline(1))
|
||||||
|
normal grád}
|
||||||
|
call assert_equal('', getline(1))
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
Loading…
Reference in New Issue
Block a user