]> granicus.if.org Git - neomutt/commitdiff
Simplify mutt_label_complete().
authorKevin McCarthy <kevin@8t8.us>
Tue, 31 Jan 2017 22:27:36 +0000 (14:27 -0800)
committerKevin McCarthy <kevin@8t8.us>
Tue, 31 Jan 2017 22:27:36 +0000 (14:27 -0800)
It was derived from mutt_command_complete(), which had more complex
requirements.  For labels, we just need to skip whitespace and
complete based on the passed in buffer.

Therefore, we don't need the pos parameter, or to work backwards from
the end of the buffer.

enter.c
init.c
protos.h

diff --git a/enter.c b/enter.c
index db2e4977e96e5a7b771379d745d74d867a030cc6..108311ef096fb3936ad801c2a35a969989325c8b 100644 (file)
--- a/enter.c
+++ b/enter.c
@@ -574,7 +574,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int col,
            for (; i < state->lastchar && state->wbuf[i] == ' '; i++)
              ;
            my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
-           r = mutt_label_complete (buf, buflen, strlen (buf), state->tabs);
+           r = mutt_label_complete (buf, buflen, state->tabs);
            replace_part (state, i, buf);
            if (!r)
            {
@@ -591,7 +591,7 @@ int _mutt_enter_string (char *buf, size_t buflen, int col,
             {
               i++;
               my_wcstombs (buf, buflen, state->wbuf + i, state->curpos - i);
-              r = mutt_label_complete (buf, buflen, strlen (buf), state->tabs);
+              r = mutt_label_complete (buf, buflen, state->tabs);
               replace_part (state, i, buf);
               if (!r)
               {
diff --git a/init.c b/init.c
index 35f36ea727abcffe145660a01c978579a0712165..935013bb9909def00236ae5da49d16b153d048b5 100644 (file)
--- a/init.c
+++ b/init.c
@@ -3630,7 +3630,7 @@ static const char* myvar_get (const char* var)
   return NULL;
 }
 
-int mutt_label_complete (char *buffer, size_t len, int pos, int numtabs)
+int mutt_label_complete (char *buffer, size_t len, int numtabs)
 {
   char *pt = buffer;
   int spaces; /* keep track of the number of leading spaces on the line */
@@ -3641,10 +3641,6 @@ int mutt_label_complete (char *buffer, size_t len, int pos, int numtabs)
   SKIPWS (buffer);
   spaces = buffer - pt;
 
-  pt = buffer + pos - spaces;
-  while ((pt > buffer) && !isspace ((unsigned char) *pt))
-    pt--;
-
   /* first TAB. Collect all the matches */
   if (numtabs == 1)
   {
@@ -3652,7 +3648,7 @@ int mutt_label_complete (char *buffer, size_t len, int pos, int numtabs)
     struct hash_walk_state state;
 
     Num_matched = 0;
-    strfcpy (User_typed, pt, sizeof (User_typed));
+    strfcpy (User_typed, buffer, sizeof (User_typed));
     memset (Matches, 0, Matches_listsize);
     memset (Completed, 0, sizeof (Completed));
     memset (&state, 0, sizeof(state));
index b26724c4cef346504bf41bb37cd2cc061c5951de..c43b49cd22968bf3fc0eed8f100c2613f346aa24 100644 (file)
--- a/protos.h
+++ b/protos.h
@@ -190,7 +190,7 @@ int mutt_label_message (HEADER *);
 void mutt_make_label_hash (CONTEXT *);
 void mutt_label_hash_add (CONTEXT *ctx, HEADER *hdr);
 void mutt_label_hash_remove (CONTEXT *ctx, HEADER *hdr);
-int mutt_label_complete (char *, size_t, int, int);
+int mutt_label_complete (char *, size_t, int);
 void mutt_curses_error (const char *, ...);
 void mutt_curses_message (const char *, ...);
 void mutt_encode_descriptions (BODY *, short);