tweaks: elide two parameters and thus a pair of wrapper functions
When just scrolling and the cursor does not need to change position (that is: it is not on the first or last row of the edit window), then edit_scroll() has handled everything and there is no need to additionally redraw anything or update 'placewewant'.
Этот коммит содержится в:
родитель
8656f160d7
Коммит
93318b972d
@ -187,10 +187,10 @@ char *do_browser(char *path)
|
|||||||
selected += width - 1 - (selected % width);
|
selected += width - 1 - (selected % width);
|
||||||
if (selected >= filelist_len)
|
if (selected >= filelist_len)
|
||||||
selected = filelist_len - 1;
|
selected = filelist_len - 1;
|
||||||
} else if (func == do_up_void) {
|
} else if (func == do_up) {
|
||||||
if (selected >= width)
|
if (selected >= width)
|
||||||
selected -= width;
|
selected -= width;
|
||||||
} else if (func == do_down_void) {
|
} else if (func == do_down) {
|
||||||
if (selected + width <= filelist_len - 1)
|
if (selected + width <= filelist_len - 1)
|
||||||
selected += width;
|
selected += width;
|
||||||
} else if (func == do_prev_block) {
|
} else if (func == do_prev_block) {
|
||||||
|
20
src/global.c
20
src/global.c
@ -855,9 +855,9 @@ void shortcut_init(void)
|
|||||||
add_to_funcs(do_end, MMAIN,
|
add_to_funcs(do_end, MMAIN,
|
||||||
N_("End"), WITHORSANS(end_gist), BLANKAFTER, VIEW);
|
N_("End"), WITHORSANS(end_gist), BLANKAFTER, VIEW);
|
||||||
|
|
||||||
add_to_funcs(do_up_void, MMAIN|MHELP|MBROWSER,
|
add_to_funcs(do_up, MMAIN|MHELP|MBROWSER,
|
||||||
prevline_tag, WITHORSANS(prevline_gist), TOGETHER, VIEW);
|
prevline_tag, WITHORSANS(prevline_gist), TOGETHER, VIEW);
|
||||||
add_to_funcs(do_down_void, MMAIN|MHELP|MBROWSER,
|
add_to_funcs(do_down, MMAIN|MHELP|MBROWSER,
|
||||||
nextline_tag, WITHORSANS(nextline_gist), TOGETHER, VIEW);
|
nextline_tag, WITHORSANS(nextline_gist), TOGETHER, VIEW);
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
add_to_funcs(do_scroll_up, MMAIN,
|
add_to_funcs(do_scroll_up, MMAIN,
|
||||||
@ -1181,19 +1181,19 @@ void shortcut_init(void)
|
|||||||
add_to_sclist((MMOST & ~MBROWSER), "Home", KEY_HOME, do_home, 0);
|
add_to_sclist((MMOST & ~MBROWSER), "Home", KEY_HOME, do_home, 0);
|
||||||
add_to_sclist((MMOST & ~MBROWSER), "^E", 0, do_end, 0);
|
add_to_sclist((MMOST & ~MBROWSER), "^E", 0, do_end, 0);
|
||||||
add_to_sclist((MMOST & ~MBROWSER), "End", KEY_END, do_end, 0);
|
add_to_sclist((MMOST & ~MBROWSER), "End", KEY_END, do_end, 0);
|
||||||
add_to_sclist(MMAIN|MHELP|MBROWSER, "^P", 0, do_up_void, 0);
|
add_to_sclist(MMAIN|MHELP|MBROWSER, "^P", 0, do_up, 0);
|
||||||
add_to_sclist(MMAIN|MHELP|MBROWSER, "^N", 0, do_down_void, 0);
|
add_to_sclist(MMAIN|MHELP|MBROWSER, "^N", 0, do_down, 0);
|
||||||
#ifdef ENABLE_UTF8
|
#ifdef ENABLE_UTF8
|
||||||
if (using_utf8()) {
|
if (using_utf8()) {
|
||||||
add_to_sclist(MMAIN|MHELP|MBROWSER, "\xE2\x96\xb2", KEY_UP, do_up_void, 0);
|
add_to_sclist(MMAIN|MHELP|MBROWSER, "\xE2\x96\xb2", KEY_UP, do_up, 0);
|
||||||
add_to_sclist(MMAIN|MHELP|MBROWSER, "\xE2\x96\xbc", KEY_DOWN, do_down_void, 0);
|
add_to_sclist(MMAIN|MHELP|MBROWSER, "\xE2\x96\xbc", KEY_DOWN, do_down, 0);
|
||||||
add_to_sclist(MMAIN|MBROWSER, "^\xE2\x96\xb2", CONTROL_UP, do_prev_block, 0);
|
add_to_sclist(MMAIN|MBROWSER, "^\xE2\x96\xb2", CONTROL_UP, do_prev_block, 0);
|
||||||
add_to_sclist(MMAIN|MBROWSER, "^\xE2\x96\xbc", CONTROL_DOWN, do_next_block, 0);
|
add_to_sclist(MMAIN|MBROWSER, "^\xE2\x96\xbc", CONTROL_DOWN, do_next_block, 0);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
add_to_sclist(MMAIN|MHELP|MBROWSER, "Up", KEY_UP, do_up_void, 0);
|
add_to_sclist(MMAIN|MHELP|MBROWSER, "Up", KEY_UP, do_up, 0);
|
||||||
add_to_sclist(MMAIN|MHELP|MBROWSER, "Down", KEY_DOWN, do_down_void, 0);
|
add_to_sclist(MMAIN|MHELP|MBROWSER, "Down", KEY_DOWN, do_down, 0);
|
||||||
add_to_sclist(MMAIN|MBROWSER, "^Up", CONTROL_UP, do_prev_block, 0);
|
add_to_sclist(MMAIN|MBROWSER, "^Up", CONTROL_UP, do_prev_block, 0);
|
||||||
add_to_sclist(MMAIN|MBROWSER, "^Down", CONTROL_DOWN, do_next_block, 0);
|
add_to_sclist(MMAIN|MBROWSER, "^Down", CONTROL_DOWN, do_next_block, 0);
|
||||||
}
|
}
|
||||||
@ -1553,10 +1553,10 @@ sc *strtosc(const char *input)
|
|||||||
s->func = do_right;
|
s->func = do_right;
|
||||||
else if (!strcasecmp(input, "up") ||
|
else if (!strcasecmp(input, "up") ||
|
||||||
!strcasecmp(input, "prevline"))
|
!strcasecmp(input, "prevline"))
|
||||||
s->func = do_up_void;
|
s->func = do_up;
|
||||||
else if (!strcasecmp(input, "down") ||
|
else if (!strcasecmp(input, "down") ||
|
||||||
!strcasecmp(input, "nextline"))
|
!strcasecmp(input, "nextline"))
|
||||||
s->func = do_down_void;
|
s->func = do_down;
|
||||||
else if (!strcasecmp(input, "prevword"))
|
else if (!strcasecmp(input, "prevword"))
|
||||||
s->func = do_prev_word_void;
|
s->func = do_prev_word_void;
|
||||||
else if (!strcasecmp(input, "nextword"))
|
else if (!strcasecmp(input, "nextword"))
|
||||||
|
@ -192,12 +192,12 @@ void do_help(void)
|
|||||||
|
|
||||||
if (func == total_refresh) {
|
if (func == total_refresh) {
|
||||||
total_redraw();
|
total_redraw();
|
||||||
} else if (func == do_up_void) {
|
} else if (func == do_up) {
|
||||||
do_up(TRUE);
|
do_scroll_up();
|
||||||
} else if (func == do_down_void) {
|
} else if (func == do_down) {
|
||||||
if (openfile->edittop->lineno + editwinrows - 1 <
|
if (openfile->edittop->lineno + editwinrows - 1 <
|
||||||
openfile->filebot->lineno)
|
openfile->filebot->lineno)
|
||||||
do_down(TRUE);
|
do_scroll_down();
|
||||||
} else if (func == do_page_up) {
|
} else if (func == do_page_up) {
|
||||||
do_page_up();
|
do_page_up();
|
||||||
} else if (func == do_page_down) {
|
} else if (func == do_page_down) {
|
||||||
|
32
src/move.c
32
src/move.c
@ -481,9 +481,8 @@ void do_end(void)
|
|||||||
update_line(openfile->current, openfile->current_x);
|
update_line(openfile->current, openfile->current_x);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move the cursor to the preceding line or chunk. If scroll_only is TRUE,
|
/* Move the cursor to the preceding line or chunk. */
|
||||||
* also scroll the screen one row, so the cursor stays in the same spot. */
|
void do_up(void)
|
||||||
void do_up(bool really_move)
|
|
||||||
{
|
{
|
||||||
filestruct *was_current = openfile->current;
|
filestruct *was_current = openfile->current;
|
||||||
size_t leftedge, target_column;
|
size_t leftedge, target_column;
|
||||||
@ -491,7 +490,7 @@ void do_up(bool really_move)
|
|||||||
get_edge_and_target(&leftedge, &target_column);
|
get_edge_and_target(&leftedge, &target_column);
|
||||||
|
|
||||||
/* If we can't move up one line or chunk, we're at top of file. */
|
/* If we can't move up one line or chunk, we're at top of file. */
|
||||||
if (really_move && go_back_chunks(1, &openfile->current, &leftedge) > 0)
|
if (go_back_chunks(1, &openfile->current, &leftedge) > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
set_proper_index_and_pww(&leftedge, target_column, FALSE);
|
set_proper_index_and_pww(&leftedge, target_column, FALSE);
|
||||||
@ -502,9 +501,8 @@ void do_up(bool really_move)
|
|||||||
openfile->placewewant = leftedge + target_column;
|
openfile->placewewant = leftedge + target_column;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move the cursor to next line or chunk. If scroll_only is TRUE, also
|
/* Move the cursor to next line or chunk. */
|
||||||
* scroll the screen one row, so the cursor stays in the same spot. */
|
void do_down(void)
|
||||||
void do_down(bool really_move)
|
|
||||||
{
|
{
|
||||||
filestruct *was_current = openfile->current;
|
filestruct *was_current = openfile->current;
|
||||||
size_t leftedge, target_column;
|
size_t leftedge, target_column;
|
||||||
@ -512,7 +510,7 @@ void do_down(bool really_move)
|
|||||||
get_edge_and_target(&leftedge, &target_column);
|
get_edge_and_target(&leftedge, &target_column);
|
||||||
|
|
||||||
/* If we can't move down one line or chunk, we're at bottom of file. */
|
/* If we can't move down one line or chunk, we're at bottom of file. */
|
||||||
if (really_move && go_forward_chunks(1, &openfile->current, &leftedge) > 0)
|
if (go_forward_chunks(1, &openfile->current, &leftedge) > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
set_proper_index_and_pww(&leftedge, target_column, TRUE);
|
set_proper_index_and_pww(&leftedge, target_column, TRUE);
|
||||||
@ -523,18 +521,6 @@ void do_down(bool really_move)
|
|||||||
openfile->placewewant = leftedge + target_column;
|
openfile->placewewant = leftedge + target_column;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move up one line or chunk. */
|
|
||||||
void do_up_void(void)
|
|
||||||
{
|
|
||||||
do_up(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Move down one line or chunk. */
|
|
||||||
void do_down_void(void)
|
|
||||||
{
|
|
||||||
do_down(TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
/* Scroll up one line or chunk without scrolling the cursor. */
|
/* Scroll up one line or chunk without scrolling the cursor. */
|
||||||
void do_scroll_up(void)
|
void do_scroll_up(void)
|
||||||
@ -545,7 +531,8 @@ void do_scroll_up(void)
|
|||||||
|
|
||||||
edit_scroll(BACKWARD);
|
edit_scroll(BACKWARD);
|
||||||
|
|
||||||
do_up(openfile->current_y == editwinrows - 1);
|
if (openfile->current_y == editwinrows - 1)
|
||||||
|
do_up();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Scroll down one line or chunk without scrolling the cursor. */
|
/* Scroll down one line or chunk without scrolling the cursor. */
|
||||||
@ -554,7 +541,8 @@ void do_scroll_down(void)
|
|||||||
if (openfile->current->next != NULL || openfile->current_y > 0)
|
if (openfile->current->next != NULL || openfile->current_y > 0)
|
||||||
edit_scroll(FORWARD);
|
edit_scroll(FORWARD);
|
||||||
|
|
||||||
do_down(openfile->current_y == 0);
|
if (openfile->current_y == 0)
|
||||||
|
do_down();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -386,10 +386,8 @@ void do_prev_word_void(void);
|
|||||||
void do_next_word_void(void);
|
void do_next_word_void(void);
|
||||||
void do_home(void);
|
void do_home(void);
|
||||||
void do_end(void);
|
void do_end(void);
|
||||||
void do_up(bool really_move);
|
void do_up(void);
|
||||||
void do_down(bool really_move);
|
void do_down(void);
|
||||||
void do_up_void(void);
|
|
||||||
void do_down_void(void);
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
void do_scroll_up(void);
|
void do_scroll_up(void);
|
||||||
void do_scroll_down(void);
|
void do_scroll_down(void);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user