- nano.c:justify_format() - Fix ugly behavior when wrapping spaces at the end of long words (David Benbennick)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1477 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
родитель
593a0678b8
Коммит
a7a78decb6
@ -9,6 +9,10 @@ CVS code
|
|||||||
DOS/Mac format, at least one line has already been converted,
|
DOS/Mac format, at least one line has already been converted,
|
||||||
so setting NOCONVERT (which is supposed to signal that none
|
so setting NOCONVERT (which is supposed to signal that none
|
||||||
of the file should be converted) makes no sense. (DLR)
|
of the file should be converted) makes no sense. (DLR)
|
||||||
|
- nano.c:
|
||||||
|
justify_format()
|
||||||
|
- Fix ugly behavior when wrapping spaces at the end of long
|
||||||
|
words (David Benbennick).
|
||||||
- nanorc.5:
|
- nanorc.5:
|
||||||
- Fix formatting error and update copyright year (Jordi).
|
- Fix formatting error and update copyright year (Jordi).
|
||||||
- Several enhancements (David Benbennick).
|
- Several enhancements (David Benbennick).
|
||||||
|
23
nano.c
23
nano.c
@ -2047,7 +2047,7 @@ int justify_format(int changes_allowed, filestruct *line, size_t skip)
|
|||||||
|
|
||||||
back = line->data + skip;
|
back = line->data + skip;
|
||||||
front = back;
|
front = back;
|
||||||
for (; *front; front++) {
|
for (front = back; ; front++) {
|
||||||
int remove_space = 0;
|
int remove_space = 0;
|
||||||
/* Do we want to remove this space? */
|
/* Do we want to remove this space? */
|
||||||
|
|
||||||
@ -2057,11 +2057,11 @@ int justify_format(int changes_allowed, filestruct *line, size_t skip)
|
|||||||
*front = ' ';
|
*front = ' ';
|
||||||
}
|
}
|
||||||
/* these tests are safe since line->data + skip is not a space */
|
/* these tests are safe since line->data + skip is not a space */
|
||||||
if (*front == ' ' && *(front - 1) == ' ') {
|
if ((*front == '\0' || *front == ' ') && *(front - 1) == ' ') {
|
||||||
const char *bob = front - 2;
|
const char *bob = front - 2;
|
||||||
|
|
||||||
remove_space = 1;
|
remove_space = 1;
|
||||||
for (bob = front - 2; bob >= line->data + skip; bob--) {
|
for (bob = back - 2; bob >= line->data + skip; bob--) {
|
||||||
if (strchr(punct, *bob) != NULL) {
|
if (strchr(punct, *bob) != NULL) {
|
||||||
remove_space = 0;
|
remove_space = 0;
|
||||||
break;
|
break;
|
||||||
@ -2080,21 +2080,18 @@ int justify_format(int changes_allowed, filestruct *line, size_t skip)
|
|||||||
if (mark_beginbuf == line && back - line->data < mark_beginx)
|
if (mark_beginbuf == line && back - line->data < mark_beginx)
|
||||||
mark_beginx--;
|
mark_beginx--;
|
||||||
#endif
|
#endif
|
||||||
|
if (*front == '\0')
|
||||||
|
*(back - 1) = '\0';
|
||||||
} else {
|
} else {
|
||||||
*back = *front;
|
*back = *front;
|
||||||
back++;
|
back++;
|
||||||
}
|
}
|
||||||
|
if (*front == '\0')
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove spaces from the end of the line, except maintain 1 after a
|
back--;
|
||||||
* sentence punctuation. */
|
assert(*back == '\0');
|
||||||
while (line->data < back && *(back - 1) == ' ')
|
|
||||||
back--;
|
|
||||||
if (line->data < back && *back == ' ' &&
|
|
||||||
strchr(punct, *(back - 1)) != NULL)
|
|
||||||
back++;
|
|
||||||
if (!changes_allowed && back != front)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* This assert merely documents a fact about the loop above. */
|
/* This assert merely documents a fact about the loop above. */
|
||||||
assert(changes_allowed != 0 || back == front);
|
assert(changes_allowed != 0 || back == front);
|
||||||
@ -2253,7 +2250,7 @@ int break_line(const char *line, int goal, int force)
|
|||||||
/* No space found short enough. */
|
/* No space found short enough. */
|
||||||
if (force)
|
if (force)
|
||||||
for(; *line != '\0'; line++, cur_loc++)
|
for(; *line != '\0'; line++, cur_loc++)
|
||||||
if (*line == ' ' && *(line + 1) != ' ')
|
if (*line == ' ' && *(line + 1) != ' ' && *(line + 1) != '\0')
|
||||||
return cur_loc;
|
return cur_loc;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user