general: include word-jumping and block-jumping into the tiny version

And also case-sensitive searches, backward searches, and searching again.
master
Benno Schulenberg 2016-09-08 21:00:51 +02:00
parent 4de0a5049b
commit 08cd197bf1
10 changed files with 46 additions and 121 deletions

View File

@ -600,7 +600,6 @@ char *mbstrcasestr(const char *haystack, const char *needle)
return (char *) strcasestr(haystack, needle);
}
#if !defined(NANO_TINY) || !defined(DISABLE_TABCOMP)
/* This function is equivalent to strstr(), except in that it scans the
* string in reverse, starting at rev_start. */
char *revstrstr(const char *haystack, const char *needle, const char
@ -628,9 +627,7 @@ char *revstrstr(const char *haystack, const char *needle, const char
return NULL;
}
#endif /* !NANO_TINY || !DISABLE_TABCOMP */
#ifndef NANO_TINY
/* This function is equivalent to strcasestr(), except in that it scans
* the string in reverse, starting at rev_start. */
char *revstrcasestr(const char *haystack, const char *needle, const char
@ -696,7 +693,6 @@ char *mbrevstrcasestr(const char *haystack, const char *needle, const
#endif
return revstrcasestr(haystack, needle, rev_start);
}
#endif /* !NANO_TINY */
/* This function is equivalent to strlen() for multibyte strings. */
size_t mbstrlen(const char *s)

View File

@ -33,7 +33,7 @@ volatile sig_atomic_t sigwinch_counter = 0;
/* Is incremented by the handler whenever a SIGWINCH occurs. */
#endif
#if defined(__linux__) && !defined(NANO_TINY)
#ifdef __linux__
bool console;
/* Whether we're running on a Linux VC (TRUE) or under X (FALSE). */
#endif
@ -48,8 +48,8 @@ bool focusing = TRUE;
message_type lastmessage = HUSH;
/* Messages of type HUSH should not overwrite type MILD nor ALERT. */
#ifndef NANO_TINY
int controlleft, controlright, controlup, controldown;
#ifndef NANO_TINY
int shiftcontrolleft, shiftcontrolright, shiftcontrolup, shiftcontroldown;
int shiftaltleft, shiftaltright, shiftaltup, shiftaltdown;
#endif
@ -496,10 +496,8 @@ void shortcut_init(void)
const char *fulljustify_tag = N_("FullJstify");
#endif
const char *refresh_tag = N_("Refresh");
#ifndef NANO_TINY
/* TRANSLATORS: Try to keep this string at most 12 characters. */
const char *whereis_next_tag = N_("WhereIs Next");
#endif
#ifndef DISABLE_HELP
#ifndef DISABLE_JUSTIFY
@ -555,18 +553,14 @@ void shortcut_init(void)
#endif
const char *nano_back_msg = N_("Go back one character");
const char *nano_forward_msg = N_("Go forward one character");
#ifndef NANO_TINY
const char *nano_prevword_msg = N_("Go back one word");
const char *nano_nextword_msg = N_("Go forward one word");
#endif
const char *nano_prevline_msg = N_("Go to previous line");
const char *nano_nextline_msg = N_("Go to next line");
const char *nano_home_msg = N_("Go to beginning of current line");
const char *nano_end_msg = N_("Go to end of current line");
#ifndef NANO_TINY
const char *nano_prevblock_msg = N_("Go to previous block of text");
const char *nano_nextblock_msg = N_("Go to next block of text");
#endif
#ifndef DISABLE_JUSTIFY
const char *nano_parabegin_msg =
N_("Go to beginning of paragraph; then of previous paragraph");
@ -778,18 +772,14 @@ void shortcut_init(void)
gotoline_tag, IFSCHELP(nano_gotoline_msg), BLANKAFTER, VIEW);
#endif
#ifndef NANO_TINY
add_to_funcs(case_sens_void, MWHEREIS|MREPLACE,
N_("Case Sens"), IFSCHELP(nano_case_msg), TOGETHER, VIEW);
#endif
#ifdef HAVE_REGEX_H
add_to_funcs(regexp_void, MWHEREIS|MREPLACE,
N_("Regexp"), IFSCHELP(nano_regexp_msg), TOGETHER, VIEW);
#endif
#ifndef NANO_TINY
add_to_funcs(backwards_void, MWHEREIS|MREPLACE,
N_("Backwards"), IFSCHELP(nano_reverse_msg), TOGETHER, VIEW);
#endif
add_to_funcs(flip_replace_void, MWHEREIS,
replace_tag, IFSCHELP(nano_replace_msg), BLANKAFTER, VIEW);
@ -815,10 +805,10 @@ void shortcut_init(void)
add_to_funcs(do_last_line, MMAIN|MHELP|MWHEREIS|MREPLACE|MREPLACEWITH|MGOTOLINE,
N_("Last Line"), IFSCHELP(nano_lastline_msg), BLANKAFTER, VIEW);
#ifndef NANO_TINY
add_to_funcs(do_research, MMAIN,
whereis_next_tag, IFSCHELP(nano_whereis_next_msg), TOGETHER, VIEW);
#ifndef NANO_TINY
add_to_funcs(do_find_bracket, MMAIN,
N_("To Bracket"), IFSCHELP(nano_bracket_msg), TOGETHER, VIEW);
@ -851,12 +841,10 @@ void shortcut_init(void)
N_("Forward"), IFSCHELP(nano_forwardfile_msg), TOGETHER, VIEW);
#endif
#ifndef NANO_TINY
add_to_funcs(do_prev_word_void, MMAIN,
N_("Prev Word"), IFSCHELP(nano_prevword_msg), TOGETHER, VIEW);
add_to_funcs(do_next_word_void, MMAIN,
N_("Next Word"), IFSCHELP(nano_nextword_msg), TOGETHER, VIEW);
#endif
add_to_funcs(do_home, MMAIN,
N_("Home"), IFSCHELP(nano_home_msg), TOGETHER, VIEW);
@ -868,12 +856,10 @@ void shortcut_init(void)
add_to_funcs(do_down_void, MMAIN|MBROWSER,
next_line_tag, IFSCHELP(nano_nextline_msg), BLANKAFTER, VIEW);
#ifndef NANO_TINY
add_to_funcs(do_prev_block, MMAIN,
N_("Prev Block"), IFSCHELP(nano_prevblock_msg), TOGETHER, VIEW);
add_to_funcs(do_next_block, MMAIN,
N_("Next Block"), IFSCHELP(nano_nextblock_msg), TOGETHER, VIEW);
#endif
#ifndef DISABLE_JUSTIFY
add_to_funcs(do_para_begin_void, MMAIN|MWHEREIS,
@ -1104,9 +1090,9 @@ void shortcut_init(void)
add_to_sclist(MMAIN|MHELP, "M-|", do_first_line, 0);
add_to_sclist(MMAIN|MHELP, "M-/", do_last_line, 0);
add_to_sclist(MMAIN|MHELP, "M-?", do_last_line, 0);
#ifndef NANO_TINY
add_to_sclist(MMAIN|MBROWSER, "M-W", do_research, 0);
add_to_sclist(MMAIN|MBROWSER, "F16", do_research, 0);
#ifndef NANO_TINY
add_to_sclist(MMAIN, "M-]", do_find_bracket, 0);
add_to_sclist(MMAIN, "^^", do_mark, 0);
add_to_sclist(MMAIN, "M-A", do_mark, 0);
@ -1125,10 +1111,8 @@ void shortcut_init(void)
add_to_sclist(MMOST, "Left", do_left, 0);
add_to_sclist(MMOST, "^F", do_right, 0);
add_to_sclist(MMOST, "Right", do_right, 0);
#ifndef NANO_TINY
add_to_sclist(MMOST, "M-Space", do_prev_word_void, 0);
add_to_sclist(MMOST, "^Space", do_next_word_void, 0);
#endif
add_to_sclist((MMOST & ~MBROWSER), "^A", do_home, 0);
add_to_sclist((MMOST & ~MBROWSER), "Home", do_home, 0);
add_to_sclist((MMOST & ~MBROWSER), "^E", do_end, 0);
@ -1137,10 +1121,8 @@ void shortcut_init(void)
add_to_sclist(MMAIN|MHELP|MBROWSER, "Up", do_up_void, 0);
add_to_sclist(MMAIN|MHELP|MBROWSER, "^N", do_down_void, 0);
add_to_sclist(MMAIN|MHELP|MBROWSER, "Down", do_down_void, 0);
#ifndef NANO_TINY
add_to_sclist(MMAIN, "M-7", do_prev_block, 0);
add_to_sclist(MMAIN, "M-8", do_next_block, 0);
#endif
#ifndef DISABLE_JUSTIFY
add_to_sclist(MMAIN, "M-(", do_para_begin_void, 0);
add_to_sclist(MMAIN, "M-9", do_para_begin_void, 0);
@ -1208,11 +1190,9 @@ void shortcut_init(void)
add_to_sclist(((MMOST & ~MMAIN & ~MBROWSER) | MYESNO), "^C", do_cancel, 0);
#ifndef NANO_TINY
add_to_sclist(MWHEREIS|MREPLACE, "M-B", backwards_void, 0);
add_to_sclist(MWHEREIS|MREPLACE, "M-C", case_sens_void, 0);
#endif
add_to_sclist(MWHEREIS|MREPLACE, "M-R", regexp_void, 0);
add_to_sclist(MWHEREIS|MREPLACE, "M-B", backwards_void, 0);
add_to_sclist(MWHEREIS|MREPLACE, "^R", flip_replace_void, 0);
add_to_sclist(MWHEREIS|MREPLACE|MREPLACEWITH|MGOTOLINE, "^Y", do_first_line, 0);
add_to_sclist(MWHEREIS|MREPLACE|MREPLACEWITH|MGOTOLINE, "^V", do_last_line, 0);
@ -1395,10 +1375,10 @@ sc *strtosc(const char *input)
s->scfunc = do_insertfile_void;
else if (!strcasecmp(input, "whereis"))
s->scfunc = do_search;
#ifndef NANO_TINY
else if (!strcasecmp(input, "searchagain") ||
!strcasecmp(input, "research")) /* Deprecated. Remove in 2018. */
s->scfunc = do_research;
#ifndef NANO_TINY
else if (!strcasecmp(input, "findprevious"))
s->scfunc = do_findprevious;
else if (!strcasecmp(input, "findnext"))
@ -1522,17 +1502,13 @@ sc *strtosc(const char *input)
s->scfunc = total_refresh;
else if (!strcasecmp(input, "suspend"))
s->scfunc = do_suspend_void;
#ifndef NANO_TINY
else if (!strcasecmp(input, "casesens"))
s->scfunc = case_sens_void;
#endif
else if (!strcasecmp(input, "regexp") ||
!strcasecmp(input, "regex")) /* Deprecated. Remove in 2018. */
s->scfunc = regexp_void;
#ifndef NANO_TINY
else if (!strcasecmp(input, "backwards"))
s->scfunc = backwards_void;
#endif
else if (!strcasecmp(input, "flipreplace") ||
!strcasecmp(input, "dontreplace")) /* Deprecated. Remove in 2018. */
s->scfunc = flip_replace_void;

View File

@ -209,7 +209,6 @@ void do_para_end_void(void)
}
#endif /* !DISABLE_JUSTIFY */
#ifndef NANO_TINY
/* Move to the preceding block of text in the file. */
void do_prev_block(void)
{
@ -360,7 +359,6 @@ void do_next_word_void(void)
{
do_next_word(ISSET(WORD_BOUNDS), TRUE);
}
#endif /* !NANO_TINY */
/* Move to the beginning of the current line. If the SMART_HOME flag is
* set, move to the first non-whitespace character of the current line

View File

@ -1542,7 +1542,7 @@ void terminal_init(void)
#endif
}
#if !defined(NANO_TINY) && defined(HAVE_KEY_DEFINED)
#ifdef HAVE_KEY_DEFINED
/* Ask ncurses for a keycode, or assign a default one. */
int get_keycode(const char *keyname, const int standard)
{
@ -2527,7 +2527,7 @@ int main(int argc, char **argv)
/* Set up the terminal state. */
terminal_init();
#if defined(__linux__) && !defined(NANO_TINY)
#ifdef __linux__
/* Check whether we're running on a Linux console. */
console = (getenv("DISPLAY") == NULL);
#endif
@ -2557,12 +2557,14 @@ int main(int argc, char **argv)
interface_color_pair[FUNCTION_TAG] = A_NORMAL;
#endif
#if !defined(NANO_TINY) && defined(HAVE_KEY_DEFINED)
#ifdef HAVE_KEY_DEFINED
/* Ask ncurses for the key codes for Control+Left/Right/Up/Down. */
controlleft = get_keycode("kLFT5", CONTROL_LEFT);
controlright = get_keycode("kRIT5", CONTROL_RIGHT);
controlup = get_keycode("kUP5", CONTROL_UP);
controldown = get_keycode("kDN5", CONTROL_DOWN);
#endif
#if !defined(NANO_TINY) && defined(HAVE_KEY_DEFINED)
/* Ask for the codes for Shift+Control+Left/Right/Up/Down. */
shiftcontrolleft = get_keycode("kLFT6", SHIFT_CONTROL_LEFT);
shiftcontrolright = get_keycode("kRIT6", SHIFT_CONTROL_RIGHT);

View File

@ -29,7 +29,7 @@
extern volatile sig_atomic_t sigwinch_counter;
#endif
#if defined(__linux__) && !defined(NANO_TINY)
#ifdef __linux__
extern bool console;
#endif
@ -40,11 +40,11 @@ extern bool focusing;
extern message_type lastmessage;
#ifndef NANO_TINY
extern int controlleft;
extern int controlright;
extern int controlup;
extern int controldown;
#ifndef NANO_TINY
extern int shiftcontrolleft;
extern int shiftcontrolright;
extern int shiftcontrolup;
@ -225,16 +225,12 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n);
char *nstrcasestr(const char *haystack, const char *needle);
#endif
char *mbstrcasestr(const char *haystack, const char *needle);
#if !defined(NANO_TINY) || !defined(DISABLE_TABCOMP)
char *revstrstr(const char *haystack, const char *needle, const char
*rev_start);
#endif
#ifndef NANO_TINY
char *revstrcasestr(const char *haystack, const char *needle, const char
*rev_start);
char *mbrevstrcasestr(const char *haystack, const char *needle, const
char *rev_start);
#endif
size_t mbstrlen(const char *s);
#ifndef HAVE_STRNLEN
size_t nstrnlen(const char *s, size_t maxlen);
@ -410,14 +406,12 @@ void do_para_begin_void(void);
void do_para_end(bool allow_update);
void do_para_end_void(void);
#endif
#ifndef NANO_TINY
void do_prev_block(void);
void do_next_block(void);
void do_prev_word(bool allow_punct, bool allow_update);
void do_prev_word_void(void);
bool do_next_word(bool allow_punct, bool allow_update);
void do_next_word_void(void);
#endif
void do_home(void);
void do_end(void);
void do_up(bool scroll_only);
@ -573,9 +567,7 @@ void do_search(void);
void do_findprevious(void);
void do_findnext(void);
#endif
#if !defined(NANO_TINY) || !defined(DISABLE_BROWSER)
void do_research(void);
#endif
void go_looking(void);
#ifdef HAVE_REGEX_H
int replace_regexp(char *string, bool create);
@ -627,11 +619,11 @@ void do_tab(void);
void do_indent(ssize_t cols);
void do_indent_void(void);
void do_unindent(void);
bool white_string(const char *s);
void do_undo(void);
void do_redo(void);
#endif
#ifndef DISABLE_COMMENT
bool white_string(const char *s);
#ifdef ENABLE_COMMENT
void do_comment(void);
#endif
void do_enter(void);

View File

@ -344,9 +344,7 @@ bool is_universal(void (*func))
{
if (func == do_left || func == do_right ||
func == do_home || func == do_end ||
#ifndef NANO_TINY
func == do_prev_word_void || func == do_next_word_void ||
#endif
func == do_verbatim_input || func == do_cut_text_void ||
func == do_delete || func == do_backspace ||
func == do_tab || func == do_enter)

View File

@ -47,11 +47,8 @@ bool regexp_init(const char *regexp)
assert(!regexp_compiled);
rc = regcomp(&search_regexp, fixbounds(regexp), NANO_REG_EXTENDED
#ifndef NANO_TINY
| (ISSET(CASE_SENSITIVE) ? 0 : REG_ICASE)
#endif
);
rc = regcomp(&search_regexp, fixbounds(regexp),
NANO_REG_EXTENDED | (ISSET(CASE_SENSITIVE) ? 0 : REG_ICASE));
if (rc != 0) {
size_t len = regerror(rc, &search_regexp, NULL, 0);
@ -163,19 +160,13 @@ int search_init(bool replacing, bool use_answer)
#endif
/* TRANSLATORS: This is the main search prompt. */
edit_refresh, "%s%s%s%s%s%s", _("Search"),
#ifndef NANO_TINY
/* TRANSLATORS: The next three modify the search prompt. */
ISSET(CASE_SENSITIVE) ? _(" [Case Sensitive]") :
#endif
"",
ISSET(CASE_SENSITIVE) ? _(" [Case Sensitive]") : "",
#ifdef HAVE_REGEX_H
ISSET(USE_REGEXP) ? _(" [Regexp]") :
#endif
"",
#ifndef NANO_TINY
ISSET(BACKWARDS_SEARCH) ? _(" [Backwards]") :
#endif
"", replacing ?
ISSET(BACKWARDS_SEARCH) ? _(" [Backwards]") : "", replacing ?
#ifndef NANO_TINY
/* TRANSLATORS: The next two modify the search prompt. */
openfile->mark_set ? _(" (to replace) in selection") :
@ -214,7 +205,6 @@ int search_init(bool replacing, bool use_answer)
func = func_from_key(&i);
#ifndef NANO_TINY
if (func == case_sens_void) {
TOGGLE(CASE_SENSITIVE);
backupstring = mallocstrcpy(backupstring, answer);
@ -224,7 +214,6 @@ int search_init(bool replacing, bool use_answer)
backupstring = mallocstrcpy(backupstring, answer);
return 1;
} else
#endif
#ifdef HAVE_REGEX_H
if (func == regexp_void) {
TOGGLE(USE_REGEXP);
@ -270,12 +259,13 @@ int findnextstr(
* will return immediately and say that no match was found, and
* rev_start will be properly set when the search continues on the
* previous or next line. */
rev_start +=
#ifndef NANO_TINY
ISSET(BACKWARDS_SEARCH) ?
((openfile->current_x == 0) ? -1 : move_mbleft(fileptr->data, openfile->current_x)) :
#endif
move_mbright(fileptr->data, openfile->current_x);
if (ISSET(BACKWARDS_SEARCH)) {
if (openfile->current_x == 0)
rev_start += -1;
else
rev_start += move_mbleft(fileptr->data, openfile->current_x);
} else
rev_start += move_mbright(fileptr->data, openfile->current_x);
enable_nodelay();
@ -343,11 +333,9 @@ int findnextstr(
}
/* Move to the previous or next line in the file. */
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
fileptr = fileptr->prev;
else
#endif
fileptr = fileptr->next;
/* If we've reached the start or end of the buffer, wrap around. */
@ -359,11 +347,9 @@ int findnextstr(
return 0;
}
#endif
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
fileptr = openfile->filebot;
else
#endif
fileptr = openfile->fileage;
statusbar(_("Search Wrapped"));
@ -377,23 +363,15 @@ int findnextstr(
/* Set the starting x to the start or end of the line. */
rev_start = fileptr->data;
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
rev_start += strlen(fileptr->data);
#endif
}
found_x = found - fileptr->data;
/* Ensure that the found occurrence is not beyond the starting x. */
if (came_full_circle &&
#ifndef NANO_TINY
((!ISSET(BACKWARDS_SEARCH) && found_x > begin_x) ||
(ISSET(BACKWARDS_SEARCH) && found_x < begin_x))
#else
found_x > begin_x
#endif
) {
if (came_full_circle && ((!ISSET(BACKWARDS_SEARCH) && found_x > begin_x) ||
(ISSET(BACKWARDS_SEARCH) && found_x < begin_x))) {
not_found_msg(needle);
disable_nodelay();
return 0;
@ -425,10 +403,8 @@ void do_search(void)
search_replace_abort();
else if (i == -2) /* Do a replace instead. */
do_replace();
#if !defined(NANO_TINY) || defined(HAVE_REGEX_H)
else if (i == 1) /* Toggled something. */
do_search();
#endif
if (i == 0)
go_looking();
@ -459,7 +435,6 @@ void do_findnext(void)
}
#endif /* !NANO_TINY */
#if !defined(NANO_TINY) || !defined(DISABLE_BROWSER)
/* Search for the last string without prompting. */
void do_research(void)
{
@ -485,7 +460,6 @@ void do_research(void)
go_looking();
}
#endif /* !NANO_TINY */
/* Search for the global string 'last_search'. Inform the user when
* the string occurs only once. */
@ -757,9 +731,7 @@ ssize_t do_replace_loop(
/* Set the cursor at the last character of the replacement
* text, so that searching will continue /after/ it. Note
* that current_x might be set to (size_t)-1 here. */
#ifndef NANO_TINY
if (!ISSET(BACKWARDS_SEARCH))
#endif
openfile->current_x += match_len + length_change - 1;
/* Update the file size, and put the changed line into place. */

View File

@ -435,7 +435,6 @@ void do_unindent(void)
}
#endif /* !NANO_TINY */
#ifdef ENABLE_COMMENT
/* Test whether the string is empty or consists of only blanks. */
bool white_string(const char *s)
{
@ -445,6 +444,7 @@ bool white_string(const char *s)
return !*s;
}
#ifdef ENABLE_COMMENT
/* Comment or uncomment the current line or the marked lines. */
void do_comment()
{
@ -2630,10 +2630,9 @@ bool do_int_spell_fix(const char *word)
/* Make sure spell-check is case sensitive. */
SET(CASE_SENSITIVE);
#ifndef NANO_TINY
/* Make sure spell-check goes forward only. */
UNSET(BACKWARDS_SEARCH);
#endif
#ifdef HAVE_REGEX_H
/* Make sure spell-check doesn't use regular expressions. */
UNSET(USE_REGEXP);

View File

@ -321,10 +321,9 @@ const char *strstrwrapper(const char *haystack, const char *needle,
#ifdef HAVE_REGEX_H
if (ISSET(USE_REGEXP)) {
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH)) {
if (regexec(&search_regexp, haystack, 1, regmatches,
0) == 0 && haystack + regmatches[0].rm_so <= start) {
if (regexec(&search_regexp, haystack, 1, regmatches, 0) == 0 &&
haystack + regmatches[0].rm_so <= start) {
const char *retval = haystack + regmatches[0].rm_so;
/* Search forward until there are no more matches. */
@ -338,10 +337,8 @@ const char *strstrwrapper(const char *haystack, const char *needle,
regexec(&search_regexp, retval, 10, regmatches, 0);
return retval;
}
} else
#endif /* !NANO_TINY */
if (regexec(&search_regexp, start, 10, regmatches,
(start > haystack) ? REG_NOTBOL : 0) == 0) {
} else if (regexec(&search_regexp, start, 10, regmatches,
(start > haystack) ? REG_NOTBOL : 0) == 0) {
const char *retval = start + regmatches[0].rm_so;
regexec(&search_regexp, retval, 10, regmatches, 0);
@ -350,20 +347,14 @@ const char *strstrwrapper(const char *haystack, const char *needle,
return NULL;
}
#endif /* HAVE_REGEX_H */
#if !defined(NANO_TINY) || !defined(DISABLE_SPELLER)
if (ISSET(CASE_SENSITIVE)) {
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
return revstrstr(haystack, needle, start);
else
#endif
return strstr(start, needle);
}
#endif /* !DISABLE_SPELLER || !NANO_TINY */
#ifndef NANO_TINY
else if (ISSET(BACKWARDS_SEARCH))
} else if (ISSET(BACKWARDS_SEARCH))
return mbrevstrcasestr(haystack, needle, start);
#endif
return mbstrcasestr(start, needle);
}

View File

@ -23,7 +23,7 @@
#include "proto.h"
#include "revision.h"
#if defined(__linux__) && !defined(NANO_TINY)
#ifdef __linux__
#include <sys/ioctl.h>
#endif
@ -399,14 +399,12 @@ int parse_kbinput(WINDOW *win)
case 'B':
retval = KEY_END;
break;
#ifndef NANO_TINY
case 'C':
retval = controlright;
break;
case 'D':
retval = controlleft;
break;
#endif
}
double_esc = FALSE;
escapes = 0;
@ -496,7 +494,6 @@ int parse_kbinput(WINDOW *win)
if (retval == ERR)
return ERR;
#ifndef NANO_TINY
if (retval == controlleft)
return sc_seq_or(do_prev_word_void, 0);
else if (retval == controlright)
@ -505,6 +502,7 @@ int parse_kbinput(WINDOW *win)
return sc_seq_or(do_prev_block, 0);
else if (retval == controldown)
return sc_seq_or(do_next_block, 0);
#ifndef NANO_TINY
else if (retval == shiftcontrolleft) {
shift_held = TRUE;
return sc_seq_or(do_prev_word_void, 0);
@ -532,15 +530,12 @@ int parse_kbinput(WINDOW *win)
}
#endif
#if defined(__linux__) && !defined(NANO_TINY)
#ifdef __linux__
/* When not running under X, check for the bare arrow keys whether
* Shift/Ctrl/Alt are being held together with them. */
unsigned char modifiers = 6;
if (console && ioctl(0, TIOCLINUX, &modifiers) >= 0) {
if (modifiers & 0x01)
shift_held =TRUE;
/* Is Ctrl being held? */
if (modifiers & 0x04) {
if (retval == KEY_UP)
@ -553,6 +548,11 @@ int parse_kbinput(WINDOW *win)
return sc_seq_or(do_next_word_void, 0);
}
#ifndef NANO_TINY
/* Is Shift being held? */
if (modifiers & 0x01)
shift_held =TRUE;
/* Are both Shift and Alt being held? */
if ((modifiers & 0x09) == 0x09) {
if (retval == KEY_UP)
@ -564,8 +564,9 @@ int parse_kbinput(WINDOW *win)
else if (retval == KEY_RIGHT)
return sc_seq_or(do_end, 0);
}
#endif
}
#endif /* __linux__ && !NANO_TINY */
#endif /* __linux__ */
switch (retval) {
#ifdef KEY_SLEFT