commit 9e94fcbe75c5556f90ecc7416376458fdc0845d0 from: Omar Polo date: Tue May 22 08:50:12 2018 UTC optional ignore case completion + code cleanup + update manpage commit - 7ca8829beeb2ec15877e2be545af7a3d91dec62a commit + 9e94fcbe75c5556f90ecc7416376458fdc0845d0 blob - 78f938aad87ffec4fe5222987fc9f1161cb6dca3 blob + 075e0cb33fa7a8bb82a397eb30f157422802bdd2 --- mymenu.1 +++ mymenu.1 @@ -20,8 +20,9 @@ Resource Database\fR. Application specific resources: .Bl -tag -width Ds .It MyMenu.font -The font name, only bitmap font are supported. By default is set to -"fixed". If compiled with Xft(3) support this will be passed to xft. +The font name to use. By default is set to "fixed" if compiled without +Xft(3) support, "monospace" otherwise. Without Xft(3) only bitmap font +are supported. .It MyMenu.layout The layout of the menu. The possible values are "horizontal" and "vertical", with the default being "horizontal". Every other value @@ -91,6 +92,9 @@ If, instead of a numeric value, a not-valid number tha with the % sign is supplied, then the default value for that field will be treated as a percentage. Since this is a misuse of the resources this behavior isn't strictly considered a bug. +.It +C-w (delete last word) does not work well with multi-byte string. The +whole UTF-8 support is still kinda naïve and should be improved. .El .Sh EXIT STATUS blob - da930cad496fdd9648f6d447475d981e62bbf6c7 blob + bfc01c780f3550af15b3e263f95e89ffb968b76f --- mymenu.c +++ mymenu.c @@ -45,8 +45,20 @@ #define resname "MyMenu" #define resclass "mymenu" -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#ifdef USE_XFT +# define default_fontname "monospace" +#else +# define default_fontname "fixed" +#endif + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) + +// If we don't have it or we don't want an "ignore case" completion +// style, fall back to `strstr(3)` +#ifndef USE_STRCASESTR +#define strcasestr strstr +#endif #define update_completions(cs, text, lines) { \ compl_delete(cs); \ @@ -55,13 +67,9 @@ #define INITIAL_ITEMS 64 -#define TODO(s) { \ - fprintf(stderr, "TODO! " s "\n"); \ - } - #define cannot_allocate_memory { \ fprintf(stderr, "Could not allocate memory\n"); \ - exit(EX_UNAVAILABLE); \ + abort(); \ } #define check_allocation(a) { \ @@ -185,7 +193,7 @@ struct completions *filter(char *text, char **lines) { if (l == nil) break; - if (strstr(l, text) != nil) { + if (strcasestr(l, text) != nil) { c->next = compl_new(); c = c->next; c->completion = l; @@ -637,7 +645,7 @@ int main() { char *ps1 = strdup("$ "); check_allocation(ps1); - char *fontname = strdup("fixed"); + char *fontname = strdup(default_fontname); check_allocation(fontname); int textlen = 10;