]> granicus.if.org Git - mutt/commitdiff
Some more changes to the enter code.
authorThomas Roessler <roessler@does-not-exist.org>
Fri, 22 Dec 2000 13:04:44 +0000 (13:04 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Fri, 22 Dec 2000 13:04:44 +0000 (13:04 +0000)
enter.c
mutt.h

diff --git a/enter.c b/enter.c
index 1b962600fcd959c919d6a5b9e4ef2f1072451f70..28ad6447ee6231723ec4d78ba2e8278ccbc7215c 100644 (file)
--- a/enter.c
+++ b/enter.c
@@ -150,7 +150,6 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
   int redraw;
   int pass = (flags & M_PASS);
   int first = 1;
-  int tabs = 0; /* number of *consecutive* TABs */
   int ch, w, r;
   size_t i;
   wchar_t *tempbuf = 0;
@@ -222,7 +221,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
     {
       first = 0;
       if (ch != OP_EDITOR_COMPLETE)
-       tabs = 0;
+       state->tabs = 0;
       redraw = M_REDRAW_LINE;
       switch (ch)
       {
@@ -410,7 +409,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
          /* fall through to completion routine (M_FILE) */
 
        case OP_EDITOR_COMPLETE:
-         tabs++;
+         state->tabs++;
          if (flags & M_CMD)
          {
            for (i = state->curpos; i && state->wbuf[i-1] != ' '; i--)
@@ -459,8 +458,8 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
            i = strlen (buf);
            if (i && buf[i - 1] == '=' &&
                mutt_var_value_complete (buf, buflen, i))
-             tabs = 0;
-           else if (!mutt_command_complete (buf, buflen, i, tabs))
+             state->tabs = 0;
+           else if (!mutt_command_complete (buf, buflen, i, state->tabs))
              BEEP ();
            replace_part (state, 0, buf);
          }
@@ -506,22 +505,18 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
          if (flags & M_ALIAS)
          {
            /* invoke the query-menu to get more addresses */
-           if (state->curpos)
+           if ((i = state->curpos))
            {
-             for (i = state->curpos; i && state->wbuf[i - 1] != ','; i--)
+             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);
-           }
-           else
-           {
-             my_wcstombs (buf, buflen, state->wbuf, state->curpos);
-             mutt_query_menu (buf, buflen);
-             replace_part (state, 0, buf);
            }
+
+           my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
+           mutt_query_complete (buf, buflen);
+           replace_part (state, i, buf);
+
            rv = 1; 
            goto bye;
          }
@@ -567,7 +562,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
       
 self_insert:
 
-      tabs = 0;
+      state->tabs = 0;
       /* use the raw keypress */
       ch = LastKey;
 
diff --git a/mutt.h b/mutt.h
index 79451905f2ffbabeb883adba4092477aab467ca3..f477044ce13027b5e5040894a53b5dd0b5a806f1 100644 (file)
--- a/mutt.h
+++ b/mutt.h
@@ -732,6 +732,7 @@ typedef struct
   size_t lastchar;
   size_t curpos;
   size_t begin;
+  int   tabs;
 } ENTER_STATE;
 
 /* flags for the STATE struct */