From 428f6203708b36268de3ee4f6caec67192caa245 Mon Sep 17 00:00:00 2001 From: Chris Allegretta Date: Wed, 12 Feb 2003 03:21:45 +0000 Subject: [PATCH] DB's justify fixes git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1450 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 16 +++++++++++----- nano.c | 19 ++++++++++++++----- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2de88eee..4a352520 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,15 +20,21 @@ CVS code - Fix assumption that matches is null terminated (David Benbennick). - nano.c: - main() - - Fix nano not compiling with ENABLE_RCFILE and DISABLE_TABCOMP - (David Benbennick). - help_init() - - Fix crashing in do_help when COLS < 23 (David Benbennick). + breakable() + - Fix incorrect return value on short lines (David Benbennick). do_help() - Fix line lengths not being computed properly, causes display glitches most noticeable with < 20 rows. New function nano.c:line_len(). (David Benbennick). + do_justify() + - Add regfree() to quote regex (David Benbennick). + - Only copy previous indent if AUTOINDENT is set (David + Benbennick). + help_init() + - Fix crashing in do_help when COLS < 23 (David Benbennick). + main() + - Fix nano not compiling with ENABLE_RCFILE and DISABLE_TABCOMP + (David Benbennick). - rcfile.c: colortoint() - Don't bomb after invalid color and print bad color name diff --git a/nano.c b/nano.c index e6ce86e5..05b51539 100644 --- a/nano.c +++ b/nano.c @@ -2225,7 +2225,9 @@ int breakable(const char *line, int goal) else goal -= 1; } - return FALSE; + /* If goal is not negative, the whole line (one word) was short + * enough. */ + return goal >= 0; } /* We are trying to break a chunk off line. We find the last space such @@ -2400,10 +2402,10 @@ int do_justify(void) /* There is no next paragraph, so nothing to justify. */ if (current->next == NULL) { placewewant = 0; - if (current_y > editwinrows - 1) - edit_update(current, CENTER); - else - edit_refresh(); + edit_refresh(); +#ifdef HAVE_REGEX_H + regfree(&qreg); +#endif return 0; } current = current->next; @@ -2486,6 +2488,13 @@ int do_justify(void) * line and copy text after break_pos into it. */ splice_node(current, make_new_node(current), current->next); + /* In a non-quoted paragraph, we copy the indent only if + AUTOINDENT is turned on. */ + if (quote_len == 0) +#ifndef NANO_SMALL + if (!ISSET(AUTOINDENT)) +#endif + indent_len = 0; current->next->data = charalloc(indent_len + line_len - break_pos); strncpy(current->next->data, current->data,