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)
#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().
/* 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)