Word selection in the Text Editor:
* Fix word selection for words with multibyte characters. No need to call txt_move_left() or txt_move_right(), because these functions work with symbols, not bytes * Word selection now treats tabs the same way as spaces. Also useful for words with multibyte characters
This commit is contained in:
@@ -957,9 +957,8 @@ void txt_move_right(Text *text, short sel)
|
||||
void txt_jump_left(Text *text, short sel)
|
||||
{
|
||||
TextLine **linep, *oldl;
|
||||
int *charp, oldc, oldflags, i;
|
||||
int *charp, oldc, oldflags;
|
||||
unsigned char oldu;
|
||||
int pos;
|
||||
|
||||
if (!text) return;
|
||||
if (sel) txt_curs_sel(text, &linep, &charp);
|
||||
@@ -974,13 +973,9 @@ void txt_jump_left(Text *text, short sel)
|
||||
oldu= undoing;
|
||||
undoing= 1; /* Don't push individual moves to undo stack */
|
||||
|
||||
pos = *charp;
|
||||
BLI_str_cursor_step_utf8((*linep)->line, (*linep)->len,
|
||||
&pos, STRCUR_DIR_PREV,
|
||||
charp, STRCUR_DIR_PREV,
|
||||
STRCUR_JUMP_DELIM);
|
||||
for (i = *charp; i > pos; i--) {
|
||||
txt_move_left(text, sel);
|
||||
}
|
||||
|
||||
text->flags = oldflags;
|
||||
|
||||
@@ -991,9 +986,8 @@ void txt_jump_left(Text *text, short sel)
|
||||
void txt_jump_right(Text *text, short sel)
|
||||
{
|
||||
TextLine **linep, *oldl;
|
||||
int *charp, oldc, oldflags, i;
|
||||
int *charp, oldc, oldflags;
|
||||
unsigned char oldu;
|
||||
int pos;
|
||||
|
||||
if (!text) return;
|
||||
if (sel) txt_curs_sel(text, &linep, &charp);
|
||||
@@ -1008,13 +1002,9 @@ void txt_jump_right(Text *text, short sel)
|
||||
oldu= undoing;
|
||||
undoing= 1; /* Don't push individual moves to undo stack */
|
||||
|
||||
pos = *charp;
|
||||
BLI_str_cursor_step_utf8((*linep)->line, (*linep)->len,
|
||||
&pos, STRCUR_DIR_NEXT,
|
||||
charp, STRCUR_DIR_NEXT,
|
||||
STRCUR_JUMP_DELIM);
|
||||
for (i = *charp; i < pos; i++) {
|
||||
txt_move_right(text, sel);
|
||||
}
|
||||
|
||||
text->flags = oldflags;
|
||||
|
||||
|
||||
@@ -93,6 +93,7 @@ static strCursorDelimType test_special_char(const char *ch_utf8)
|
||||
return STRCUR_DELIM_QUOTE;
|
||||
|
||||
case ' ':
|
||||
case '\t':
|
||||
return STRCUR_DELIM_WHITESPACE;
|
||||
|
||||
case '\\':
|
||||
|
||||
Reference in New Issue
Block a user