for more compatibility with Pico, remove extra space after a character

in punct if that character is the same as the one before it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1933 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2004-09-11 21:28:36 +00:00
parent 12d5b2f6bd
commit fd73c462f4
2 changed files with 15 additions and 6 deletions

View File

@ -50,6 +50,11 @@ CVS code -
die_save_file()
- Clarify the error message when there are too many backup files
and the current one can't be written. (DLR)
justify_format()
- For more compatibility with Pico, remove extra space after a
character in punct if that character is the same as the one
before it. For example, with the default values of punct and
brackets, only one space will be left after "...". (DLR)
do_para_begin(), do_para_end()
- Maintain current_y's value when moving up or down lines so
that smooth scrolling works correctly. (DLR)

View File

@ -1833,9 +1833,9 @@ size_t indent_length(const char *line)
#ifndef DISABLE_JUSTIFY
/* justify_format() replaces Tab by Space and multiple spaces by 1
* (except it maintains 2 after a character in punct followed by a
* character in brackets). Note that the terminating \0 counts as a
* space.
* (except it maintains 2 after a non-repeated character in punct
* followed by a character in brackets). Note that the terminating \0
* counts as a space.
*
* justify_format() might make line->data shorter, and change the actual
* pointer with null_at().
@ -1864,12 +1864,16 @@ void justify_format(filestruct *line, size_t skip)
/* These tests are safe since line->data + skip is not a
* space. */
if ((*front == '\0' || *front == ' ') && *(front - 1) == ' ') {
const char *bob = front - 2;
const char *bob = back - 2;
remove_space = TRUE;
for (bob = back - 2; bob >= line->data + skip; bob--) {
for (; bob >= line->data + skip; bob--) {
if (strchr(punct, *bob) != NULL) {
remove_space = FALSE;
/* If this character is in punct, don't remove the
* space unless this character and the character
* before it are the same. */
remove_space = (bob > line->data + skip &&
*bob == *(bob - 1));
break;
}
if (strchr(brackets, *bob) == NULL)