commit 2d3d1e9324bb18c887ccf7370c7fc7e0b5a065e0
parent 139bae082648db1cb3d019b6592226c7c19e9ad7
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Thu, 18 May 2006 17:28:16 +0000
in break_line(), fix problem where tab widths in columns are always
calculated as tabsize
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3523 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -221,6 +221,9 @@ CVS code -
- Change all rcfile error messages to refer to commands instead
of directives, for consistency with nanorc.5. (DLR)
- text.c:
+ break_line()
+ - Fix problem where tab widths in columns are always calculated
+ as tabsize. (DLR, found by Alexey Toptygin)
do_justify()
- Remove redundant key checks. (DLR)
do_spell()
diff --git a/src/text.c b/src/text.c
@@ -779,14 +779,14 @@ ssize_t break_line(const char *line, ssize_t goal
* found with short enough display width. */
ssize_t cur_loc = 0;
/* Current index in line. */
+ size_t cur_pos = 0;
+ /* Current column position in line. */
int line_len;
assert(line != NULL);
- while (*line != '\0' && goal >= 0) {
- size_t pos = 0;
-
- line_len = parse_mbchar(line, NULL, &pos);
+ while (*line != '\0' && goal >= cur_pos) {
+ line_len = parse_mbchar(line, NULL, &cur_pos);
if (is_blank_mbchar(line)
#ifndef DISABLE_HELP
@@ -801,12 +801,11 @@ ssize_t break_line(const char *line, ssize_t goal
#endif
}
- goal -= pos;
line += line_len;
cur_loc += line_len;
}
- if (goal >= 0)
+ if (goal >= cur_pos)
/* In fact, the whole line displays shorter than goal. */
return cur_loc;