Andreas Krennmair:
[apps/madmutt.git] / enter.c
diff --git a/enter.c b/enter.c
index 9547ebb..356ab21 100644 (file)
--- a/enter.c
+++ b/enter.c
@@ -28,8 +28,8 @@
 /* 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)
@@ -101,7 +101,7 @@ static void my_wcstombs (char *dest, size_t dlen, const wchar_t *src, size_t sle
 
     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 */
@@ -127,7 +127,7 @@ size_t my_mbstowcs (wchar_t **pwbuf, size_t *pwbuflen, size_t i, char *buf)
   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)
     {
@@ -170,9 +170,9 @@ static void replace_part (ENTER_STATE *state, size_t from, char *buf)
 
 /*
  * 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)
@@ -185,8 +185,8 @@ 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;
@@ -235,21 +235,21 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
     {
       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));
@@ -266,343 +266,343 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
     {
       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
@@ -617,70 +617,70 @@ self_insert:
 #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 ();
       }
     }
   }