commit cf4ca09a829c698f69ca1c906a32d7846d986a1e
Author: Felix Van der Jeugt <[email protected]>
Date:   Tue Feb 12 14:53:54 2019 +0100

    add dmenu 4.9 prefixcompletion patch and fix my nick

diff --git 
a/tools.suckless.org/dmenu/patches/prefix-completion/dmenu-prefixcompletion-4.9.diff
 
b/tools.suckless.org/dmenu/patches/prefix-completion/dmenu-prefixcompletion-4.9.diff
new file mode 100644
index 00000000..49391bc1
--- /dev/null
+++ 
b/tools.suckless.org/dmenu/patches/prefix-completion/dmenu-prefixcompletion-4.9.diff
@@ -0,0 +1,93 @@
+From 2874b35e41a85731df8c7583f76c71eb249d3dfd Mon Sep 17 00:00:00 2001
+From: Felix Van der Jeugt <[email protected]>
+Date: Wed, 19 Oct 2016 22:18:21 +0200
+Subject: [PATCH] tabcomplete with longest common prefix
+
+when hitting tab, the current input will be set to the longest common prefix
+of the current selection instead of the first item of the selection
+---
+ dmenu.c | 32 ++++++++++++++------------------
+ 1 file changed, 14 insertions(+), 18 deletions(-)
+
+diff --git a/dmenu.c b/dmenu.c
+index f803149..4bb1c23 100644
+--- a/dmenu.c
++++ b/dmenu.c
+@@ -219,7 +219,7 @@ match(void)
+       char buf[sizeof text], *s;
+       int i, tokc = 0;
+       size_t len, textsize;
+-      struct item *item, *lprefix, *lsubstr, *prefixend, *substrend;
++      struct item *item, *lprefix, *prefixend;
+ 
+       strcpy(buf, text);
+       /* separate input text into tokens to be matched individually */
+@@ -228,8 +228,8 @@ match(void)
+                       die("cannot realloc %u bytes:", tokn * sizeof *tokv);
+       len = tokc ? strlen(tokv[0]) : 0;
+ 
+-      matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL;
+-      textsize = strlen(text) + 1;
++      matches = lprefix = matchend = prefixend = NULL;
++      textsize = strlen(text);
+       for (item = items; item && item->text; item++) {
+               for (i = 0; i < tokc; i++)
+                       if (!fstrstr(item->text, tokv[i]))
+@@ -241,8 +241,6 @@ match(void)
+                       appenditem(item, &matches, &matchend);
+               else if (!fstrncmp(tokv[0], item->text, len))
+                       appenditem(item, &lprefix, &prefixend);
+-              else
+-                      appenditem(item, &lsubstr, &substrend);
+       }
+       if (lprefix) {
+               if (matches) {
+@@ -252,14 +250,6 @@ match(void)
+                       matches = lprefix;
+               matchend = prefixend;
+       }
+-      if (lsubstr) {
+-              if (matches) {
+-                      matchend->right = lsubstr;
+-                      lsubstr->left = matchend;
+-              } else
+-                      matches = lsubstr;
+-              matchend = substrend;
+-      }
+       curr = sel = matches;
+       calcoffsets();
+ }
+@@ -309,6 +299,7 @@ keypress(XKeyEvent *ev)
+ {
+       char buf[32];
+       int len;
++      struct item * item;
+       KeySym ksym;
+       Status status;
+ 
+@@ -487,12 +478,17 @@ insert:
+               }
+               break;
+       case XK_Tab:
+-              if (!sel)
+-                      return;
+-              strncpy(text, sel->text, sizeof text - 1);
++              if (!matches) break; /* cannot complete no matches */
++              strncpy(text, matches->text, sizeof text - 1);
+               text[sizeof text - 1] = '+-             cursor = strlen(text);
+-              match();
++              len = cursor = strlen(text); /* length of longest common prefix 
*/
++              for (item = matches; item && item->text; item = item->right) {
++                      cursor = 0;
++                      while (cursor < len && text[cursor] == 
item->text[cursor])
++                              cursor++;
++                      len = cursor;
++              }
++              memset(text + len, '+           break;
+       }
+ 
+-- 
+2.20.1
+
diff --git a/tools.suckless.org/dmenu/patches/prefix-completion/index.md 
b/tools.suckless.org/dmenu/patches/prefix-completion/index.md
index ad766933..d85cea92 100644
--- a/tools.suckless.org/dmenu/patches/prefix-completion/index.md
+++ b/tools.suckless.org/dmenu/patches/prefix-completion/index.md
@@ -19,11 +19,12 @@ Download
 * For 4.6: [dmenu-prefixcompletion-4.6.diff](dmenu-prefixcompletion-4.6.diff)
 * For 4.7: [dmenu-prefixcompletion-4.7.diff](dmenu-prefixcompletion-4.7.diff)
 * For 4.8: [dmenu-prefixcompletion-4.8.diff](dmenu-prefixcompletion-4.8.diff)
+* For 4.9: [dmenu-prefixcompletion-4.8.diff](dmenu-prefixcompletion-4.9.diff)
 
 * [dmenu-prefixcompletion-flag-4.9.diff](dmenu-prefixcompletion-flag-4.9.diff)
 
 Authors
 -------
 
-* noctua
+* ninewise
 * Martin Tournoij <[email protected]> – `-x` patch.


Reply via email to