add the ability to scroll up or down single lines without scrolling the

cursor, via Meta-- and Meta-+; note that this is disabled when
NANO_SMALL is defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3049 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2005-10-24 02:12:09 +00:00
parent ae5d2dffff
commit 2de84c1c8d
5 changed files with 82 additions and 0 deletions

View File

@ -1,4 +1,10 @@
CVS code -
- General:
- Add the ability to scroll up or down single lines without
scrolling the cursor, via Meta-- and Meta-+. Note that this
is disabled when NANO_SMALL is defined. New functions
do_scroll_up() and do_scroll_down(); changes to
shortcut_init(). (DLR, suggested by Mike Frysinger)
GNU nano 1.3.9 - 2005.10.23
- General:

View File

@ -291,6 +291,10 @@ void shortcut_init(bool unjustify)
const char *nano_prevword_msg = N_("Move backward one word");
const char *nano_wordcount_msg =
N_("Count the number of words, lines, and characters");
const char *nano_scrollprev_msg =
N_("Scroll up one line without scrolling the cursor");
const char *nano_scrollnext_msg =
N_("Scroll down one line without scrolling the cursor");
#endif
#ifndef DISABLE_JUSTIFY
const char *nano_parabegin_msg =
@ -543,6 +547,14 @@ void shortcut_init(bool unjustify)
sc_init_one(&main_list, NANO_NO_KEY, N_("Word Count"),
IFHELP(nano_wordcount_msg, NANO_WORDCOUNT_KEY), NANO_NO_KEY,
NANO_NO_KEY, VIEW, do_wordlinechar_count);
sc_init_one(&main_list, NANO_NO_KEY, N_("ScrollPrev"),
IFHELP(nano_scrollprev_msg, NANO_SCROLLPREV_KEY), NANO_NO_KEY,
NANO_SCROLLPREV_ALTKEY, VIEW, do_scroll_up);
sc_init_one(&main_list, NANO_NO_KEY, N_("ScrollNext"),
IFHELP(nano_scrollnext_msg, NANO_SCROLLNEXT_KEY), NANO_NO_KEY,
NANO_SCROLLNEXT_ALTKEY, VIEW, do_scroll_down);
#endif
#ifndef DISABLE_JUSTIFY

View File

@ -512,6 +512,31 @@ void do_up(void)
}
}
#ifndef NANO_SMALL
void do_scroll_up(void)
{
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If the top of the file is onscreen, get out. */
if (openfile->edittop == openfile->fileage)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window up. */
openfile->current = openfile->current->prev;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window up one line. */
edit_scroll(UP, 1);
}
#endif /* !NANO_SMALL */
void do_down(void)
{
check_statusblank();
@ -550,6 +575,31 @@ void do_down(void)
}
}
#ifndef NANO_SMALL
void do_scroll_down(void)
{
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If we're at the bottom of the file, get out. */
if (openfile->current->next == NULL)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window down. */
openfile->current = openfile->current->next;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window down one line. */
edit_scroll(DOWN, 1);
}
#endif /* !NANO_SMALL */
void do_left(void)
{
size_t pww_save = openfile->placewewant;

View File

@ -360,13 +360,17 @@ typedef struct rcoption {
#define NANO_ALT_SPACE ' '
#define NANO_ALT_LPAREN '('
#define NANO_ALT_RPAREN ')'
#define NANO_ALT_PLUS '+'
#define NANO_ALT_COMMA ','
#define NANO_ALT_MINUS '-'
#define NANO_ALT_PERIOD '.'
#define NANO_ALT_9 '9'
#define NANO_ALT_0 '0'
#define NANO_ALT_LCARAT '<'
#define NANO_ALT_EQUALS '='
#define NANO_ALT_RCARAT '>'
#define NANO_ALT_RBRACKET ']'
#define NANO_ALT_USCORE '_'
#define NANO_ALT_A 'a'
#define NANO_ALT_B 'b'
#define NANO_ALT_C 'c'
@ -473,6 +477,10 @@ typedef struct rcoption {
#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
#define NANO_PREVWORD_KEY NANO_ALT_SPACE
#define NANO_WORDCOUNT_KEY NANO_ALT_D
#define NANO_SCROLLPREV_KEY NANO_ALT_MINUS
#define NANO_SCROLLNEXT_KEY NANO_ALT_PLUS
#define NANO_SCROLLPREV_ALTKEY NANO_ALT_USCORE
#define NANO_SCROLLNEXT_ALTKEY NANO_ALT_EQUALS
#define NANO_CUTTILLEND_KEY NANO_CONTROL_X
#define NANO_CUTTILLEND_ALTKEY NANO_ALT_T
#define NANO_PARABEGIN_KEY NANO_CONTROL_W

View File

@ -333,7 +333,13 @@ void do_prev_word_void(void);
void do_home(void);
void do_end(void);
void do_up(void);
#ifndef NANO_SMALL
void do_scroll_up(void);
#endif
void do_down(void);
#ifndef NANO_SMALL
void do_scroll_down(void);
#endif
void do_left(void);
void do_right(void);