check for nulls and newlines earlier in do_output(), and add a few more
cosmetic fixes git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2179 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
60448895f6
commit
abc9423709
22
src/nano.c
22
src/nano.c
|
@ -2764,8 +2764,8 @@ void do_justify(bool full_justify)
|
||||||
break_pos = break_line(current->data + indent_len,
|
break_pos = break_line(current->data + indent_len,
|
||||||
fill - strnlenpt(current->data, indent_len),
|
fill - strnlenpt(current->data, indent_len),
|
||||||
TRUE);
|
TRUE);
|
||||||
if (break_pos == -1 || break_pos + indent_len ==
|
if (break_pos == -1 ||
|
||||||
line_len)
|
break_pos + indent_len == line_len)
|
||||||
/* We can't break the line, or don't need to, so
|
/* We can't break the line, or don't need to, so
|
||||||
* just go on to the next. */
|
* just go on to the next. */
|
||||||
goto continue_loc;
|
goto continue_loc;
|
||||||
|
@ -3587,6 +3587,15 @@ void do_output(int *kbinput, size_t kbinput_len)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < kbinput_len; i++) {
|
for (i = 0; i < kbinput_len; i++) {
|
||||||
|
/* Null to newline, if needed. */
|
||||||
|
if (kbinput[i] == '\0')
|
||||||
|
kbinput[i] = '\n';
|
||||||
|
/* Newline to Enter, if needed. */
|
||||||
|
else if (kbinput[i] == '\n') {
|
||||||
|
do_enter();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef NANO_WIDE
|
#ifdef NANO_WIDE
|
||||||
/* Change the wide character to its multibyte value. If it's
|
/* Change the wide character to its multibyte value. If it's
|
||||||
* invalid, go on to the next character. */
|
* invalid, go on to the next character. */
|
||||||
|
@ -3604,15 +3613,6 @@ void do_output(int *kbinput, size_t kbinput_len)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Null to newline, if needed. */
|
|
||||||
if (key[0] == '\0' && key_len == 1)
|
|
||||||
key[0] = '\n';
|
|
||||||
/* Newline to Enter, if needed. */
|
|
||||||
else if (key[0] == '\n' && key_len == 1) {
|
|
||||||
do_enter();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* When a character is inserted on the current magicline, it
|
/* When a character is inserted on the current magicline, it
|
||||||
* means we need a new one! */
|
* means we need a new one! */
|
||||||
if (filebot == current)
|
if (filebot == current)
|
||||||
|
|
14
src/winio.c
14
src/winio.c
|
@ -2897,8 +2897,8 @@ void edit_add(const filestruct *fileptr, const char *converted, int
|
||||||
#endif /* !NANO_SMALL */
|
#endif /* !NANO_SMALL */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Just update one line in the edit buffer. Basically a wrapper for
|
/* Just update one line in the edit buffer. This is basically a wrapper
|
||||||
* edit_add().
|
* for edit_add().
|
||||||
*
|
*
|
||||||
* If fileptr != current, then index is considered 0. The line will be
|
* If fileptr != current, then index is considered 0. The line will be
|
||||||
* displayed starting with fileptr->data[index]. Likely args are
|
* displayed starting with fileptr->data[index]. Likely args are
|
||||||
|
@ -2906,7 +2906,7 @@ void edit_add(const filestruct *fileptr, const char *converted, int
|
||||||
void update_line(const filestruct *fileptr, size_t index)
|
void update_line(const filestruct *fileptr, size_t index)
|
||||||
{
|
{
|
||||||
int line;
|
int line;
|
||||||
/* line in the edit window for CURSES calls */
|
/* The line in the edit window that we want to update. */
|
||||||
char *converted;
|
char *converted;
|
||||||
/* fileptr->data converted to have tabs and control characters
|
/* fileptr->data converted to have tabs and control characters
|
||||||
* expanded. */
|
* expanded. */
|
||||||
|
@ -2922,7 +2922,7 @@ void update_line(const filestruct *fileptr, size_t index)
|
||||||
if (line < 0 || line >= editwinrows)
|
if (line < 0 || line >= editwinrows)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* First, blank out the line (at a minimum) */
|
/* First, blank out the line. */
|
||||||
mvwaddstr(edit, line, 0, hblank);
|
mvwaddstr(edit, line, 0, hblank);
|
||||||
|
|
||||||
/* Next, convert variables that index the line to their equivalent
|
/* Next, convert variables that index the line to their equivalent
|
||||||
|
@ -2930,11 +2930,11 @@ void update_line(const filestruct *fileptr, size_t index)
|
||||||
index = (fileptr == current) ? strnlenpt(fileptr->data, index) : 0;
|
index = (fileptr == current) ? strnlenpt(fileptr->data, index) : 0;
|
||||||
page_start = get_page_start(index);
|
page_start = get_page_start(index);
|
||||||
|
|
||||||
/* Expand the line, replacing Tab by spaces, and control characters
|
/* Expand the line, replacing tabs with spaces, and control
|
||||||
* by their display form. */
|
* characters with their displayed forms. */
|
||||||
converted = display_string(fileptr->data, page_start, COLS);
|
converted = display_string(fileptr->data, page_start, COLS);
|
||||||
|
|
||||||
/* Now, paint the line */
|
/* Paint the line. */
|
||||||
edit_add(fileptr, converted, line, page_start);
|
edit_add(fileptr, converted, line, page_start);
|
||||||
free(converted);
|
free(converted);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue