in break_line(), fix another problem where goal could be miscalculated
on lines containing tabs git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3026 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
5ab12ca761
commit
9c4488bf0c
|
@ -317,8 +317,9 @@ CVS code -
|
||||||
do_enter()
|
do_enter()
|
||||||
- Don't update the edit window until we set placewewant. (DLR)
|
- Don't update the edit window until we set placewewant. (DLR)
|
||||||
break_line()
|
break_line()
|
||||||
- Fix a problem where a line could be broken in the middle of
|
- Fix problems where a line could be broken in the middle of
|
||||||
a multibyte character. (DLR)
|
a multibyte character, and goal could be miscalculated on lines
|
||||||
|
containing tabs. (DLR)
|
||||||
do_word_count()
|
do_word_count()
|
||||||
- Rename to do_wordlinechar_count(), and expand to also count
|
- Rename to do_wordlinechar_count(), and expand to also count
|
||||||
the number of lines and characters in the file or selection,
|
the number of lines and characters in the file or selection,
|
||||||
|
|
|
@ -570,12 +570,16 @@ ssize_t break_line(const char *line, ssize_t goal, bool newline)
|
||||||
* found with short enough display width. */
|
* found with short enough display width. */
|
||||||
ssize_t cur_loc = 0;
|
ssize_t cur_loc = 0;
|
||||||
/* Current index in line. */
|
/* Current index in line. */
|
||||||
|
size_t pos = 0;
|
||||||
|
/* Current column position in line. */
|
||||||
|
size_t old_pos;
|
||||||
|
/* Previous column position in line. */
|
||||||
int line_len;
|
int line_len;
|
||||||
|
|
||||||
assert(line != NULL);
|
assert(line != NULL);
|
||||||
|
|
||||||
while (*line != '\0' && goal >= 0) {
|
while (*line != '\0' && goal >= 0) {
|
||||||
size_t pos = 0;
|
old_pos = pos;
|
||||||
|
|
||||||
line_len = parse_mbchar(line, NULL, &pos);
|
line_len = parse_mbchar(line, NULL, &pos);
|
||||||
|
|
||||||
|
@ -586,7 +590,7 @@ ssize_t break_line(const char *line, ssize_t goal, bool newline)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
goal -= pos;
|
goal -= pos - old_pos;
|
||||||
line += line_len;
|
line += line_len;
|
||||||
cur_loc += line_len;
|
cur_loc += line_len;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue