resizes more consistent. Changes to handle_sigwinch(),
main(), get_kbinput(), parse_kbinput(), get_byte_kbinput(),
and get_unicode_kbinput(); removal of reset_kbinput(). (DLR)
+ - Handle statusbar blanking in one place instead of many, so
+ that it always works consistently. Changes to do_browser(),
+ do_cut_text(), do_uncut_text(), do_first_line(),
+ do_last_line(), do_page_up(), do_page_down(), do_para_begin(),
+ do_para_end(), do_para_end(), do_next_word(), do_prev_word(),
+ do_home(), do_end(), do_up(), do_scroll_up(), do_down(),
+ do_scroll_down(), do_left(), do_right(), do_indent_marked(),
+ and get_kbinput(). (Benno Schulenberg, minor tweaks by DLR)
- browser.c:
do_browser()
- Reference NANO_GOTODIR_(ALT|F)?KEY instead of
- Properly display double-column characters if they're past the
first virtual page and their first column is covered by the
"$" displayed at the beginning of the line. (DLR)
+ statusbar()
+ - Blank the statusbar after 26 keystrokes instead of 25, for
+ conpatibility with Pico. (DLR)
edit_draw()
- Properly ignore zero-length regexes in multi-line regexes as
well as single-line ones. This avoids a segfault when trying
MEVENT mevent;
#endif
- check_statusblank();
-
/* Compute the line number we're on now, so that we don't divide
* by zero. */
fileline = selected;
assert(openfile->current != NULL && openfile->current->data != NULL);
- check_statusblank();
-
/* If keep_cutbuffer is FALSE and the cutbuffer isn't empty, blow
* away the text in the cutbuffer. */
if (!keep_cutbuffer && cutbuffer != NULL) {
wrap_reset();
#endif
- check_statusblank();
-
/* If the cutbuffer is empty, get out. */
if (cutbuffer == NULL)
return;
const filestruct *current_save = openfile->current;
size_t pww_save = openfile->placewewant;
- check_statusblank();
-
openfile->current = openfile->fileage;
openfile->current_x = 0;
openfile->placewewant = 0;
const filestruct *current_save = openfile->current;
size_t pww_save = openfile->placewewant;
- check_statusblank();
-
openfile->current = openfile->filebot;
openfile->current_x = strlen(openfile->filebot->data);
openfile->placewewant = xplustabs();
{
int i;
- check_statusblank();
-
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
{
int i;
- check_statusblank();
-
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
const filestruct *current_save = openfile->current;
const size_t pww_save = openfile->placewewant;
- check_statusblank();
-
if (openfile->current != openfile->fileage) {
do {
openfile->current = openfile->current->prev;
const filestruct *const current_save = openfile->current;
const size_t pww_save = openfile->placewewant;
- check_statusblank();
-
while (openfile->current != openfile->filebot &&
!inpar(openfile->current))
openfile->current = openfile->current->next;
assert(openfile->current != NULL && openfile->current->data != NULL);
- check_statusblank();
-
char_mb = charalloc(mb_cur_max());
/* Move forward until we find the character after the last letter of
assert(openfile->current != NULL && openfile->current->data != NULL);
- check_statusblank();
-
char_mb = charalloc(mb_cur_max());
/* Move backward until we find the character before the first letter
{
size_t pww_save = openfile->placewewant;
- check_statusblank();
-
#ifndef NANO_TINY
if (ISSET(SMART_HOME)) {
size_t current_x_save = openfile->current_x;
{
size_t pww_save = openfile->placewewant;
- check_statusblank();
-
openfile->current_x = strlen(openfile->current->data);
openfile->placewewant = xplustabs();
/* Move up one line. */
void do_up(void)
{
- check_statusblank();
-
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* Scroll up one line without scrolling the cursor. */
void do_scroll_up(void)
{
- check_statusblank();
-
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* Move down one line. */
void do_down(void)
{
- check_statusblank();
-
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* Scroll down one line without scrolling the cursor. */
void do_scroll_down(void)
{
- check_statusblank();
-
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
{
size_t pww_save = openfile->placewewant;
- check_statusblank();
-
if (openfile->current_x > 0)
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
{
size_t pww_save = openfile->placewewant;
- check_statusblank();
-
assert(openfile->current_x <= strlen(openfile->current->data));
if (openfile->current->data[openfile->current_x] != '\0')
assert(openfile->current != NULL && openfile->current->data != NULL);
- check_statusblank();
-
/* If the mark isn't on, indicate it on the statusbar and get
* out. */
if (!openfile->mark_set) {
* we get a recognized value or sequence. */
while ((kbinput = parse_kbinput(win, meta_key, func_key)) == ERR);
+ /* If we didn't read from the statusbar prompt, blank the statusbar
+ * if we need to. */
+ if (win != bottomwin)
+ check_statusblank();
+
return kbinput;
}
/* If we're doing quick statusbar blanking, and constant cursor
* position display is off, blank the statusbar after only one
- * keystroke. Otherwise, blank it after twenty-five keystrokes,
- * as Pico does. */
+ * keystroke. Otherwise, blank it after twenty-six keystrokes, as
+ * Pico does. */
statusblank =
#ifndef NANO_TINY
ISSET(QUICK_BLANK) && !ISSET(CONST_UPDATE) ? 1 :
#endif
- 25;
+ 26;
}
/* Display the shortcut list in s on the last two rows of the bottom