answer[1] = 0;
reyes_ok = (expr = nl_langinfo (YESEXPR)) && expr[0] == '^' &&
- !regcomp (&reyes, expr, REG_NOSUB|REG_EXTENDED);
+ !regcomp (&reyes, expr, REG_NOSUB|REG_EXTENDED);
reno_ok = (expr = nl_langinfo (NOEXPR)) && expr[0] == '^' &&
!regcomp (&reno, expr, REG_NOSUB|REG_EXTENDED);
#endif
#ifdef HAVE_LANGINFO_YESEXPR
answer[0] = ch.ch;
if (reyes_ok ?
- (regexec (& reyes, answer, 0, 0, 0) == 0) :
+ (regexec (& reyes, answer, 0, 0, 0) == 0) :
#else
if (
#endif
- (tolower (ch.ch) == 'y'))
+ (tolower (ch.ch) == 'y'))
{
def = M_YES;
break;
}
else if (
#ifdef HAVE_LANGINFO_YESEXPR
- reno_ok ?
- (regexec (& reno, answer, 0, 0, 0) == 0) :
+ reno_ok ?
+ (regexec (& reno, answer, 0, 0, 0) == 0) :
#endif
- (tolower (ch.ch) == 'n'))
+ (tolower (ch.ch) == 'n'))
{
def = M_NO;
break;
dprint (1, (debugfile, "%s\n", Errorbuf));
mutt_format_string (Errorbuf, sizeof (Errorbuf),
- 0, COLS-2, 0, 0, Errorbuf, sizeof (Errorbuf), 0);
+ 0, COLS-2, 0, 0, Errorbuf, sizeof (Errorbuf), 0);
if (!option (OPTKEEPQUIET))
{
va_end (ap);
mutt_format_string (Errorbuf, sizeof (Errorbuf),
- 0, COLS-2, 0, 0, Errorbuf, sizeof (Errorbuf), 0);
+ 0, COLS-2, 0, 0, Errorbuf, sizeof (Errorbuf), 0);
if (!option (OPTKEEPQUIET))
{
}
int mutt_do_pager (const char *banner,
- const char *tempfile,
- int do_color,
- pager_t *info)
+ const char *tempfile,
+ int do_color,
+ pager_t *info)
{
int rc;
mutt_refresh ();
buf[0] = 0;
_mutt_select_file (buf, blen, M_SEL_FOLDER | (multiple ? M_SEL_MULTI : 0),
- files, numfiles);
+ files, numfiles);
*redraw = REDRAW_FULL;
}
else
{
char *pc = safe_malloc (mutt_strlen (prompt) + 3);
- sprintf (pc, "%s: ", prompt); /* __SPRINTF_CHECKED__ */
+ sprintf (pc, "%s: ", prompt); /* __SPRINTF_CHECKED__ */
mutt_ungetch (ch.op ? 0 : ch.ch, ch.op ? ch.op : 0);
if (_mutt_get_field (pc, buf, blen, (buffy ? M_EFILE : M_FILE) | M_CLEAR, multiple, files, numfiles)
- != 0)
+ != 0)
buf[0] = 0;
MAYBE_REDRAW (*redraw);
FREE (&pc);
SavedCursor = cursor;
if (curs_set (cursor) == ERR) {
- if (cursor == 1) /* cnorm */
- curs_set (2); /* cvvis */
+ if (cursor == 1) /* cnorm */
+ curs_set (2); /* cvvis */
}
}
#endif
p = strchr (letters, ch.ch);
if (p)
{
- choice = p - letters + 1;
- break;
+ choice = p - letters + 1;
+ break;
}
else if (ch.ch <= '9' && ch.ch > '0')
{
- choice = ch.ch - '0';
- if (choice <= mutt_strlen (letters))
- break;
+ choice = ch.ch - '0';
+ if (choice <= mutt_strlen (letters))
+ break;
}
}
BEEP ();
*/
void mutt_format_string (char *dest, size_t destlen,
- int min_width, int max_width,
- int right_justify, char m_pad_char,
- const char *s, size_t n,
- int arboreal)
+ int min_width, int max_width,
+ int right_justify, char m_pad_char,
+ const char *s, size_t n,
+ int arboreal)
{
char *p;
int w;
*/
static void mutt_format_s_x (char *dest,
- size_t destlen,
- const char *prefix,
- const char *s,
- int arboreal)
+ size_t destlen,
+ const char *prefix,
+ const char *s,
+ int arboreal)
{
int right_justify = 1;
char *p;
}
mutt_format_string (dest, destlen, min_width, max_width,
- right_justify, ' ', s, mutt_strlen (s), arboreal);
+ right_justify, ' ', s, mutt_strlen (s), arboreal);
}
void mutt_format_s (char *dest,
- size_t destlen,
- const char *prefix,
- const char *s)
+ size_t destlen,
+ const char *prefix,
+ const char *s)
{
mutt_format_s_x (dest, destlen, prefix, s, 0);
}
void mutt_format_s_tree (char *dest,
- size_t destlen,
- const char *prefix,
- const char *s)
+ size_t destlen,
+ const char *prefix,
+ const char *s)
{
mutt_format_s_x (dest, destlen, prefix, s, 1);
}
void mutt_paddstr (int n, const char *s)
{
- wchar_t wc;
- int w;
- size_t k;
size_t len = mutt_strlen (s);
- mbstate_t mbstate;
- memset (&mbstate, 0, sizeof (mbstate));
- for (; len && (k = mbrtowc (&wc, s, len, &mbstate)); s += k, len -= k)
+ for (; len && *s; s += 1, len -= 1)
{
- if (k == (size_t)(-1) || k == (size_t)(-2))
- {
- k = (k == (size_t)(-1)) ? 1 : len;
- wc = replacement_char ();
- }
- if (!IsWPrint (wc))
- wc = '?';
- w = wcwidth (wc);
- if (w >= 0)
- {
- if (w > n)
- break;
- addnstr ((char *)s, k);
- n -= w;
- }
+ if (1 > n)
+ break;
+ addnstr ((char *)s, 1);
+ n -= 1;
}
while (n-- > 0)
addch (' ');
/*
* mutt_strwidth is like mutt_strlen except that it returns the width
* refering to the number of characters cells.
+ * AK: since we remove all that multibyte-character-stuff, it is equal to mutt_strlen
*/
int mutt_strwidth (const char *s)
{
- wchar_t wc;
- int w;
- size_t k, n;
- mbstate_t mbstate;
-
- if (!s) return 0;
-
- n = mutt_strlen (s);
-
- memset (&mbstate, 0, sizeof (mbstate));
- for (w=0; n && (k = mbrtowc (&wc, s, n, &mbstate)); s += k, n -= k)
- {
- if (k == (size_t)(-1) || k == (size_t)(-2))
- {
- k = (k == (size_t)(-1)) ? 1 : n;
- wc = replacement_char ();
- }
- if (!IsWPrint (wc))
- wc = '?';
- w += wcwidth (wc);
- }
- return w;
+ return mutt_strlen(s);
}
/* redraw flags for mutt_enter_string() */
enum
{
- M_REDRAW_INIT = 1, /* go to end of line and redraw */
- M_REDRAW_LINE /* redraw entire line */
+ M_REDRAW_INIT = 1, /* go to end of line and redraw */
+ M_REDRAW_LINE /* redraw entire line */
};
static int my_wcwidth (wchar_t wc)
for (; slen && p - buf < dlen; p += k, src++, slen--)
if ((k = wcrtomb (p, *src, &st)) == (size_t)(-1))
- break;
+ break;
p += wcrtomb (p, 0, &st);
/* If it fits into the destination buffer, we can stop now */
wbuf = *pwbuf, wbuflen = *pwbuflen;
memset (&st, 0, sizeof (st));
for (; (k = mbrtowc (&wc, buf, MB_LEN_MAX, &st)) &&
- k != (size_t)(-1) && k != (size_t)(-2); buf += k)
+ k != (size_t)(-1) && k != (size_t)(-2); buf += k)
{
if (i >= wbuflen)
{
/*
* Returns:
- * 1 need to redraw the screen and call me again
- * 0 if input was given
- * -1 if abort.
+ * 1 need to redraw the screen and call me again
+ * 0 if input was given
+ * -1 if abort.
*/
int mutt_enter_string(char *buf, size_t buflen, int y, int x, int flags)
}
int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
- int flags, int multiple, char ***files, int *numfiles,
- ENTER_STATE *state)
+ int flags, int multiple, char ***files, int *numfiles,
+ ENTER_STATE *state)
{
int width = COLS - x - 1;
int redraw;
{
if (redraw == M_REDRAW_INIT)
{
- /* Go to end of line */
- state->curpos = state->lastchar;
- state->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth (state->wbuf, state->lastchar) - width + 1);
+ /* Go to end of line */
+ state->curpos = state->lastchar;
+ state->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth (state->wbuf, state->lastchar) - width + 1);
}
if (state->curpos < state->begin ||
- my_wcswidth (state->wbuf + state->begin, state->curpos - state->begin) >= width)
- state->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth (state->wbuf, state->curpos) - width / 2);
+ my_wcswidth (state->wbuf + state->begin, state->curpos - state->begin) >= width)
+ state->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth (state->wbuf, state->curpos) - width / 2);
move (y, x);
w = 0;
for (i = state->begin; i < state->lastchar; i++)
{
- w += my_wcwidth (state->wbuf[i]);
- if (w > width)
- break;
- my_addwch (state->wbuf[i]);
+ w += my_wcwidth (state->wbuf[i]);
+ if (w > width)
+ break;
+ my_addwch (state->wbuf[i]);
}
clrtoeol ();
move (y, x + my_wcswidth (state->wbuf + state->begin, state->curpos - state->begin));
{
first = 0;
if (ch != OP_EDITOR_COMPLETE)
- state->tabs = 0;
+ state->tabs = 0;
redraw = M_REDRAW_LINE;
switch (ch)
{
- case OP_EDITOR_HISTORY_UP:
- state->curpos = state->lastchar;
- replace_part (state, 0, mutt_history_prev (hclass));
- redraw = M_REDRAW_INIT;
- break;
-
- case OP_EDITOR_HISTORY_DOWN:
- state->curpos = state->lastchar;
- replace_part (state, 0, mutt_history_next (hclass));
- redraw = M_REDRAW_INIT;
- break;
-
- case OP_EDITOR_BACKSPACE:
- if (state->curpos == 0)
- BEEP ();
- else
- {
- i = state->curpos;
- while (i && COMB_CHAR (state->wbuf[i - 1]))
- --i;
- if (i)
- --i;
- memmove (state->wbuf + i, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));
- state->lastchar -= state->curpos - i;
- state->curpos = i;
- }
- break;
-
- case OP_EDITOR_BOL:
- state->curpos = 0;
- break;
-
- case OP_EDITOR_EOL:
- redraw= M_REDRAW_INIT;
- break;
-
- case OP_EDITOR_KILL_LINE:
- state->curpos = state->lastchar = 0;
- break;
-
- case OP_EDITOR_KILL_EOL:
- state->lastchar = state->curpos;
- break;
-
- case OP_EDITOR_BACKWARD_CHAR:
- if (state->curpos == 0)
- BEEP ();
- else
- {
- while (state->curpos && COMB_CHAR (state->wbuf[state->curpos - 1]))
- state->curpos--;
- if (state->curpos)
- state->curpos--;
- }
- break;
-
- case OP_EDITOR_FORWARD_CHAR:
- if (state->curpos == state->lastchar)
- BEEP ();
- else
- {
- ++state->curpos;
- while (state->curpos < state->lastchar && COMB_CHAR (state->wbuf[state->curpos]))
- ++state->curpos;
- }
- break;
-
- case OP_EDITOR_BACKWARD_WORD:
- if (state->curpos == 0)
- BEEP ();
- else
- {
- while (state->curpos && iswspace (state->wbuf[state->curpos - 1]))
- --state->curpos;
- while (state->curpos && !iswspace (state->wbuf[state->curpos - 1]))
- --state->curpos;
- }
- break;
-
- case OP_EDITOR_FORWARD_WORD:
- if (state->curpos == state->lastchar)
- BEEP ();
- else
- {
- while (state->curpos < state->lastchar && iswspace (state->wbuf[state->curpos]))
- ++state->curpos;
- while (state->curpos < state->lastchar && !iswspace (state->wbuf[state->curpos]))
- ++state->curpos;
- }
- break;
-
- case OP_EDITOR_CAPITALIZE_WORD:
- case OP_EDITOR_UPCASE_WORD:
- case OP_EDITOR_DOWNCASE_WORD:
- if (state->curpos == state->lastchar)
- {
- BEEP ();
- break;
- }
- while (state->curpos && !iswspace (state->wbuf[state->curpos]))
- --state->curpos;
- while (state->curpos < state->lastchar && iswspace (state->wbuf[state->curpos]))
- ++state->curpos;
- while (state->curpos < state->lastchar && !iswspace (state->wbuf[state->curpos]))
- {
- if (ch == OP_EDITOR_DOWNCASE_WORD)
- state->wbuf[state->curpos] = towlower (state->wbuf[state->curpos]);
- else
- {
- state->wbuf[state->curpos] = towupper (state->wbuf[state->curpos]);
- if (ch == OP_EDITOR_CAPITALIZE_WORD)
- ch = OP_EDITOR_DOWNCASE_WORD;
- }
- state->curpos++;
- }
- break;
-
- case OP_EDITOR_DELETE_CHAR:
- if (state->curpos == state->lastchar)
- BEEP ();
- else
- {
- i = state->curpos;
- while (i < state->lastchar && COMB_CHAR (state->wbuf[i]))
- ++i;
- if (i < state->lastchar)
- ++i;
- while (i < state->lastchar && COMB_CHAR (state->wbuf[i]))
- ++i;
- memmove (state->wbuf + state->curpos, state->wbuf + i, (state->lastchar - i) * sizeof (wchar_t));
- state->lastchar -= i - state->curpos;
- }
- break;
-
- case OP_EDITOR_KILL_WORD:
- /* delete to begining of word */
- if (state->curpos != 0)
- {
- i = state->curpos;
- while (i && iswspace (state->wbuf[i - 1]))
- --i;
- if (i)
- {
- if (iswalnum (state->wbuf[i - 1]))
- {
- for (--i; i && iswalnum (state->wbuf[i - 1]); i--)
- ;
- }
- else
- --i;
- }
- memmove (state->wbuf + i, state->wbuf + state->curpos,
- (state->lastchar - state->curpos) * sizeof (wchar_t));
- state->lastchar += i - state->curpos;
- state->curpos = i;
- }
- break;
-
- case OP_EDITOR_KILL_EOW:
- /* delete to end of word */
- for (i = state->curpos;
- i < state->lastchar && iswspace (state->wbuf[i]); i++)
- ;
- for (; i < state->lastchar && !iswspace (state->wbuf[i]); i++)
- ;
- memmove (state->wbuf + state->curpos, state->wbuf + i,
- (state->lastchar - i) * sizeof (wchar_t));
- state->lastchar += state->curpos - i;
- break;
-
- case OP_EDITOR_BUFFY_CYCLE:
- if (flags & M_EFILE)
- {
- first = 1; /* clear input if user types a real key later */
- my_wcstombs (buf, buflen, state->wbuf, state->curpos);
- mutt_buffy (buf, buflen);
- state->curpos = state->lastchar = my_mbstowcs (&state->wbuf, &state->wbuflen, 0, buf);
- break;
- }
- else if (!(flags & M_FILE))
- goto self_insert;
- /* fall through to completion routine (M_FILE) */
-
- case OP_EDITOR_COMPLETE:
- state->tabs++;
- if (flags & M_CMD)
- {
- for (i = state->curpos; i && state->wbuf[i-1] != ' '; i--)
- ;
- my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
- if (tempbuf && templen == state->lastchar - i &&
- !memcmp (tempbuf, state->wbuf + i, (state->lastchar - i) * sizeof (wchar_t)))
- {
- mutt_select_file (buf, buflen, (flags & M_EFILE) ? M_SEL_FOLDER : 0);
- set_option (OPTNEEDREDRAW);
- if (*buf)
- replace_part (state, i, buf);
- rv = 1;
- goto bye;
- }
- if (!mutt_complete (buf, buflen))
- {
- templen = state->lastchar - i;
- safe_realloc (&tempbuf, templen * sizeof (wchar_t));
- }
- else
- BEEP ();
-
- replace_part (state, i, buf);
- }
- else if (flags & M_ALIAS)
- {
- /* invoke the alias-menu to get more addresses */
- for (i = state->curpos; i && state->wbuf[i-1] != ',' &&
- state->wbuf[i-1] != ':'; i--)
- ;
- for (; i < state->lastchar && state->wbuf[i] == ' '; i++)
- ;
- my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
- r = mutt_alias_complete (buf, buflen);
- replace_part (state, i, buf);
- if (!r)
- {
- rv = 1;
- goto bye;
- }
- break;
- }
- else if (flags & M_COMMAND)
- {
- my_wcstombs (buf, buflen, state->wbuf, state->curpos);
- i = strlen (buf);
- if (i && buf[i - 1] == '=' &&
- mutt_var_value_complete (buf, buflen, i))
- state->tabs = 0;
- else if (!mutt_command_complete (buf, buflen, i, state->tabs))
- BEEP ();
- replace_part (state, 0, buf);
- }
- else if (flags & (M_FILE | M_EFILE))
- {
- my_wcstombs (buf, buflen, state->wbuf, state->curpos);
-
- /* see if the path has changed from the last time */
- if ((!tempbuf && !state->lastchar) || (tempbuf && templen == state->lastchar &&
- !memcmp (tempbuf, state->wbuf, state->lastchar * sizeof (wchar_t))))
- {
- _mutt_select_file (buf, buflen,
- ((flags & M_EFILE) ? M_SEL_FOLDER : 0) | (multiple ? M_SEL_MULTI : 0),
- files, numfiles);
- set_option (OPTNEEDREDRAW);
- if (*buf)
- {
- mutt_pretty_mailbox (buf);
- if (!pass)
- mutt_history_add (hclass, buf);
- rv = 0;
- goto bye;
- }
-
- /* file selection cancelled */
- rv = 1;
- goto bye;
- }
-
- if (!mutt_complete (buf, buflen))
- {
- templen = state->lastchar;
- safe_realloc (&tempbuf, templen * sizeof (wchar_t));
- memcpy (tempbuf, state->wbuf, templen * sizeof (wchar_t));
- }
- else
- BEEP (); /* let the user know that nothing matched */
- replace_part (state, 0, buf);
- }
- else
- goto self_insert;
- break;
-
- case OP_EDITOR_COMPLETE_QUERY:
- if (flags & M_ALIAS)
- {
- /* invoke the query-menu to get more addresses */
- if ((i = state->curpos))
- {
- for (; i && state->wbuf[i - 1] != ','; i--)
- ;
- for (; i < state->curpos && state->wbuf[i] == ' '; i++)
- ;
- }
-
- my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
- mutt_query_complete (buf, buflen);
- replace_part (state, i, buf);
-
- rv = 1;
- goto bye;
- }
- else
- goto self_insert;
-
- case OP_EDITOR_QUOTE_CHAR:
- {
- event_t event;
- /*ADDCH (LastKey);*/
- event = mutt_getch ();
- if (event.ch != -1)
- {
- LastKey = event.ch;
- goto self_insert;
- }
- }
-
- case OP_EDITOR_TRANSPOSE_CHARS:
- if (state->lastchar < 2)
- BEEP ();
- else
- {
- wchar_t t;
-
- if (state->curpos == 0)
- state->curpos = 2;
- else if (state->curpos < state->lastchar)
- ++state->curpos;
-
- t = state->wbuf[state->curpos - 2];
- state->wbuf[state->curpos - 2] = state->wbuf[state->curpos - 1];
- state->wbuf[state->curpos - 1] = t;
- }
- break;
-
- default:
- BEEP ();
+ case OP_EDITOR_HISTORY_UP:
+ state->curpos = state->lastchar;
+ replace_part (state, 0, mutt_history_prev (hclass));
+ redraw = M_REDRAW_INIT;
+ break;
+
+ case OP_EDITOR_HISTORY_DOWN:
+ state->curpos = state->lastchar;
+ replace_part (state, 0, mutt_history_next (hclass));
+ redraw = M_REDRAW_INIT;
+ break;
+
+ case OP_EDITOR_BACKSPACE:
+ if (state->curpos == 0)
+ BEEP ();
+ else
+ {
+ i = state->curpos;
+ while (i && COMB_CHAR (state->wbuf[i - 1]))
+ --i;
+ if (i)
+ --i;
+ memmove (state->wbuf + i, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));
+ state->lastchar -= state->curpos - i;
+ state->curpos = i;
+ }
+ break;
+
+ case OP_EDITOR_BOL:
+ state->curpos = 0;
+ break;
+
+ case OP_EDITOR_EOL:
+ redraw= M_REDRAW_INIT;
+ break;
+
+ case OP_EDITOR_KILL_LINE:
+ state->curpos = state->lastchar = 0;
+ break;
+
+ case OP_EDITOR_KILL_EOL:
+ state->lastchar = state->curpos;
+ break;
+
+ case OP_EDITOR_BACKWARD_CHAR:
+ if (state->curpos == 0)
+ BEEP ();
+ else
+ {
+ while (state->curpos && COMB_CHAR (state->wbuf[state->curpos - 1]))
+ state->curpos--;
+ if (state->curpos)
+ state->curpos--;
+ }
+ break;
+
+ case OP_EDITOR_FORWARD_CHAR:
+ if (state->curpos == state->lastchar)
+ BEEP ();
+ else
+ {
+ ++state->curpos;
+ while (state->curpos < state->lastchar && COMB_CHAR (state->wbuf[state->curpos]))
+ ++state->curpos;
+ }
+ break;
+
+ case OP_EDITOR_BACKWARD_WORD:
+ if (state->curpos == 0)
+ BEEP ();
+ else
+ {
+ while (state->curpos && iswspace (state->wbuf[state->curpos - 1]))
+ --state->curpos;
+ while (state->curpos && !iswspace (state->wbuf[state->curpos - 1]))
+ --state->curpos;
+ }
+ break;
+
+ case OP_EDITOR_FORWARD_WORD:
+ if (state->curpos == state->lastchar)
+ BEEP ();
+ else
+ {
+ while (state->curpos < state->lastchar && iswspace (state->wbuf[state->curpos]))
+ ++state->curpos;
+ while (state->curpos < state->lastchar && !iswspace (state->wbuf[state->curpos]))
+ ++state->curpos;
+ }
+ break;
+
+ case OP_EDITOR_CAPITALIZE_WORD:
+ case OP_EDITOR_UPCASE_WORD:
+ case OP_EDITOR_DOWNCASE_WORD:
+ if (state->curpos == state->lastchar)
+ {
+ BEEP ();
+ break;
+ }
+ while (state->curpos && !iswspace (state->wbuf[state->curpos]))
+ --state->curpos;
+ while (state->curpos < state->lastchar && iswspace (state->wbuf[state->curpos]))
+ ++state->curpos;
+ while (state->curpos < state->lastchar && !iswspace (state->wbuf[state->curpos]))
+ {
+ if (ch == OP_EDITOR_DOWNCASE_WORD)
+ state->wbuf[state->curpos] = towlower (state->wbuf[state->curpos]);
+ else
+ {
+ state->wbuf[state->curpos] = towupper (state->wbuf[state->curpos]);
+ if (ch == OP_EDITOR_CAPITALIZE_WORD)
+ ch = OP_EDITOR_DOWNCASE_WORD;
+ }
+ state->curpos++;
+ }
+ break;
+
+ case OP_EDITOR_DELETE_CHAR:
+ if (state->curpos == state->lastchar)
+ BEEP ();
+ else
+ {
+ i = state->curpos;
+ while (i < state->lastchar && COMB_CHAR (state->wbuf[i]))
+ ++i;
+ if (i < state->lastchar)
+ ++i;
+ while (i < state->lastchar && COMB_CHAR (state->wbuf[i]))
+ ++i;
+ memmove (state->wbuf + state->curpos, state->wbuf + i, (state->lastchar - i) * sizeof (wchar_t));
+ state->lastchar -= i - state->curpos;
+ }
+ break;
+
+ case OP_EDITOR_KILL_WORD:
+ /* delete to begining of word */
+ if (state->curpos != 0)
+ {
+ i = state->curpos;
+ while (i && iswspace (state->wbuf[i - 1]))
+ --i;
+ if (i)
+ {
+ if (iswalnum (state->wbuf[i - 1]))
+ {
+ for (--i; i && iswalnum (state->wbuf[i - 1]); i--)
+ ;
+ }
+ else
+ --i;
+ }
+ memmove (state->wbuf + i, state->wbuf + state->curpos,
+ (state->lastchar - state->curpos) * sizeof (wchar_t));
+ state->lastchar += i - state->curpos;
+ state->curpos = i;
+ }
+ break;
+
+ case OP_EDITOR_KILL_EOW:
+ /* delete to end of word */
+ for (i = state->curpos;
+ i < state->lastchar && iswspace (state->wbuf[i]); i++)
+ ;
+ for (; i < state->lastchar && !iswspace (state->wbuf[i]); i++)
+ ;
+ memmove (state->wbuf + state->curpos, state->wbuf + i,
+ (state->lastchar - i) * sizeof (wchar_t));
+ state->lastchar += state->curpos - i;
+ break;
+
+ case OP_EDITOR_BUFFY_CYCLE:
+ if (flags & M_EFILE)
+ {
+ first = 1; /* clear input if user types a real key later */
+ my_wcstombs (buf, buflen, state->wbuf, state->curpos);
+ mutt_buffy (buf, buflen);
+ state->curpos = state->lastchar = my_mbstowcs (&state->wbuf, &state->wbuflen, 0, buf);
+ break;
+ }
+ else if (!(flags & M_FILE))
+ goto self_insert;
+ /* fall through to completion routine (M_FILE) */
+
+ case OP_EDITOR_COMPLETE:
+ state->tabs++;
+ if (flags & M_CMD)
+ {
+ for (i = state->curpos; i && state->wbuf[i-1] != ' '; i--)
+ ;
+ my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
+ if (tempbuf && templen == state->lastchar - i &&
+ !memcmp (tempbuf, state->wbuf + i, (state->lastchar - i) * sizeof (wchar_t)))
+ {
+ mutt_select_file (buf, buflen, (flags & M_EFILE) ? M_SEL_FOLDER : 0);
+ set_option (OPTNEEDREDRAW);
+ if (*buf)
+ replace_part (state, i, buf);
+ rv = 1;
+ goto bye;
+ }
+ if (!mutt_complete (buf, buflen))
+ {
+ templen = state->lastchar - i;
+ safe_realloc (&tempbuf, templen * sizeof (wchar_t));
+ }
+ else
+ BEEP ();
+
+ replace_part (state, i, buf);
+ }
+ else if (flags & M_ALIAS)
+ {
+ /* invoke the alias-menu to get more addresses */
+ for (i = state->curpos; i && state->wbuf[i-1] != ',' &&
+ state->wbuf[i-1] != ':'; i--)
+ ;
+ for (; i < state->lastchar && state->wbuf[i] == ' '; i++)
+ ;
+ my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
+ r = mutt_alias_complete (buf, buflen);
+ replace_part (state, i, buf);
+ if (!r)
+ {
+ rv = 1;
+ goto bye;
+ }
+ break;
+ }
+ else if (flags & M_COMMAND)
+ {
+ my_wcstombs (buf, buflen, state->wbuf, state->curpos);
+ i = strlen (buf);
+ if (i && buf[i - 1] == '=' &&
+ mutt_var_value_complete (buf, buflen, i))
+ state->tabs = 0;
+ else if (!mutt_command_complete (buf, buflen, i, state->tabs))
+ BEEP ();
+ replace_part (state, 0, buf);
+ }
+ else if (flags & (M_FILE | M_EFILE))
+ {
+ my_wcstombs (buf, buflen, state->wbuf, state->curpos);
+
+ /* see if the path has changed from the last time */
+ if ((!tempbuf && !state->lastchar) || (tempbuf && templen == state->lastchar &&
+ !memcmp (tempbuf, state->wbuf, state->lastchar * sizeof (wchar_t))))
+ {
+ _mutt_select_file (buf, buflen,
+ ((flags & M_EFILE) ? M_SEL_FOLDER : 0) | (multiple ? M_SEL_MULTI : 0),
+ files, numfiles);
+ set_option (OPTNEEDREDRAW);
+ if (*buf)
+ {
+ mutt_pretty_mailbox (buf);
+ if (!pass)
+ mutt_history_add (hclass, buf);
+ rv = 0;
+ goto bye;
+ }
+
+ /* file selection cancelled */
+ rv = 1;
+ goto bye;
+ }
+
+ if (!mutt_complete (buf, buflen))
+ {
+ templen = state->lastchar;
+ safe_realloc (&tempbuf, templen * sizeof (wchar_t));
+ memcpy (tempbuf, state->wbuf, templen * sizeof (wchar_t));
+ }
+ else
+ BEEP (); /* let the user know that nothing matched */
+ replace_part (state, 0, buf);
+ }
+ else
+ goto self_insert;
+ break;
+
+ case OP_EDITOR_COMPLETE_QUERY:
+ if (flags & M_ALIAS)
+ {
+ /* invoke the query-menu to get more addresses */
+ if ((i = state->curpos))
+ {
+ for (; i && state->wbuf[i - 1] != ','; i--)
+ ;
+ for (; i < state->curpos && state->wbuf[i] == ' '; i++)
+ ;
+ }
+
+ my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
+ mutt_query_complete (buf, buflen);
+ replace_part (state, i, buf);
+
+ rv = 1;
+ goto bye;
+ }
+ else
+ goto self_insert;
+
+ case OP_EDITOR_QUOTE_CHAR:
+ {
+ event_t event;
+ /*ADDCH (LastKey);*/
+ event = mutt_getch ();
+ if (event.ch != -1)
+ {
+ LastKey = event.ch;
+ goto self_insert;
+ }
+ }
+
+ case OP_EDITOR_TRANSPOSE_CHARS:
+ if (state->lastchar < 2)
+ BEEP ();
+ else
+ {
+ wchar_t t;
+
+ if (state->curpos == 0)
+ state->curpos = 2;
+ else if (state->curpos < state->lastchar)
+ ++state->curpos;
+
+ t = state->wbuf[state->curpos - 2];
+ state->wbuf[state->curpos - 2] = state->wbuf[state->curpos - 1];
+ state->wbuf[state->curpos - 1] = t;
+ }
+ break;
+
+ default:
+ BEEP ();
}
}
else
#ifdef KEY_ENTER
/* treat ENTER the same as RETURN */
if (ch == KEY_ENTER)
- ch = '\r';
+ ch = '\r';
#endif
/* quietly ignore all other function keys */
if (ch & ~0xff)
- continue;
+ continue;
/* gather the octets into a wide character */
{
- char c;
- size_t k;
-
- c = ch;
- k = mbrtowc (&wc, &c, 1, &mbstate);
- if (k == (size_t)(-2))
- continue;
- else if (k && k != 1)
- {
- memset (&mbstate, 0, sizeof (mbstate));
- continue;
- }
+ char c;
+ size_t k;
+
+ c = ch;
+ k = mbrtowc (&wc, &c, 1, &mbstate);
+ if (k == (size_t)(-2))
+ continue;
+ else if (k && k != 1)
+ {
+ memset (&mbstate, 0, sizeof (mbstate));
+ continue;
+ }
}
if (first && (flags & M_CLEAR))
{
- first = 0;
- if (IsWPrint (wc)) /* why? */
- state->curpos = state->lastchar = 0;
+ first = 0;
+ if (IsWPrint (wc)) /* why? */
+ state->curpos = state->lastchar = 0;
}
if (wc == '\r' || wc == '\n')
{
- /* Convert from wide characters */
- my_wcstombs (buf, buflen, state->wbuf, state->lastchar);
- if (!pass)
- mutt_history_add (hclass, buf);
-
- if (multiple)
- {
- char **tfiles;
- *numfiles = 1;
- tfiles = safe_calloc (*numfiles, sizeof (char *));
- mutt_expand_path (buf, buflen);
- tfiles[0] = safe_strdup (buf);
- *files = tfiles;
- }
- rv = 0;
- goto bye;
+ /* Convert from wide characters */
+ my_wcstombs (buf, buflen, state->wbuf, state->lastchar);
+ if (!pass)
+ mutt_history_add (hclass, buf);
+
+ if (multiple)
+ {
+ char **tfiles;
+ *numfiles = 1;
+ tfiles = safe_calloc (*numfiles, sizeof (char *));
+ mutt_expand_path (buf, buflen);
+ tfiles[0] = safe_strdup (buf);
+ *files = tfiles;
+ }
+ rv = 0;
+ goto bye;
}
else if (wc && (wc < ' ' || IsWPrint (wc))) /* why? */
{
- if (state->lastchar >= state->wbuflen)
- {
- state->wbuflen = state->lastchar + 20;
- safe_realloc (&state->wbuf, state->wbuflen * sizeof (wchar_t));
- }
- memmove (state->wbuf + state->curpos + 1, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));
- state->wbuf[state->curpos++] = wc;
- state->lastchar++;
+ if (state->lastchar >= state->wbuflen)
+ {
+ state->wbuflen = state->lastchar + 20;
+ safe_realloc (&state->wbuf, state->wbuflen * sizeof (wchar_t));
+ }
+ memmove (state->wbuf + state->curpos + 1, state->wbuf + state->curpos, (state->lastchar - state->curpos) * sizeof (wchar_t));
+ state->wbuf[state->curpos++] = wc;
+ state->lastchar++;
}
else
{
- mutt_flushinp ();
- BEEP ();
+ mutt_flushinp ();
+ BEEP ();
}
}
}
+++ /dev/null
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 58 (:) tmp.op = 0
-km_dokey got 58 (:) tmp.op = 0
-86 200
-km_dokey got 116 (t) tmp.op = 0
-km_dokey got 111 (o) tmp.op = 0
-km_dokey got 103 (g) tmp.op = 0
-km_dokey got 103 (g) tmp.op = 0
-km_dokey got 108 (l) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 32 ( ) tmp.op = 0
-km_dokey got 115 (s) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 100 (d) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 97 (a) tmp.op = 0
-km_dokey got 114 (r) tmp.op = 0
-km_dokey got 95 (_) tmp.op = 0
-km_dokey got 118 (v) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 115 (s) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 108 (l) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 13 (\r) tmp.op = 0
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 14 (\ e) tmp.op = 0
-198 200
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 58 (:) tmp.op = 0
-km_dokey got 58 (:) tmp.op = 0
-86 200
-km_dokey got 116 (t) tmp.op = 0
-km_dokey got 111 (o) tmp.op = 0
-km_dokey got 103 (g) tmp.op = 0
-km_dokey got 103 (g) tmp.op = 0
-km_dokey got 108 (l) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 32 ( ) tmp.op = 0
-km_dokey got 115 (s) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 100 (d) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 97 (a) tmp.op = 0
-km_dokey got 114 (r) tmp.op = 0
-km_dokey got 95 (_) tmp.op = 0
-km_dokey got 118 (v) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 115 (s) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 108 (l) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 13 (\r) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 58 (:) tmp.op = 0
-km_dokey got 58 (:) tmp.op = 0
-86 200
-km_dokey got 116 (t) tmp.op = 0
-km_dokey got 111 (o) tmp.op = 0
-km_dokey got 103 (g) tmp.op = 0
-km_dokey got 103 (g) tmp.op = 0
-km_dokey got 108 (l) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 32 ( ) tmp.op = 0
-km_dokey got 115 (s) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 100 (d) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 97 (a) tmp.op = 0
-km_dokey got 114 (r) tmp.op = 0
-km_dokey got 95 (_) tmp.op = 0
-km_dokey got 118 (v) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 115 (s) tmp.op = 0
-km_dokey got 105 (i) tmp.op = 0
-km_dokey got 98 (b) tmp.op = 0
-km_dokey got 108 (l) tmp.op = 0
-km_dokey got 101 (e) tmp.op = 0
-km_dokey got 13 (\r) tmp.op = 0
-km_dokey got 16 (\10) tmp.op = 0
-199 200
-km_dokey got 16 (\10) tmp.op = 0
-199 200
-km_dokey got 16 (\10) tmp.op = 0
-199 200
-km_dokey got 263 (\a) tmp.op = 0
-km_dokey got 263 (\a) tmp.op = 0
-0 200
-km_dokey got 63 (?) tmp.op = 0
-km_dokey got 63 (?) tmp.op = 0
-km_dokey got 113 (q) tmp.op = 0
-158 200