dmenu-noescape-20230328-dfbbf7f.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dmenu-noescape-20230328-dfbbf7f.diff (1813B)
       ---
            1 From 5622f9497f5dca83035443a0a00e89c63862b15b Mon Sep 17 00:00:00 2001
            2 From: Aaron Züger <contact@azureorange.xyz>
            3 Date: Tue, 28 Mar 2023 18:05:36 +0200
            4 Subject: [PATCH] Added the -no-escape flag which will stop the escape key from
            5  exiting dmenu.
            6 
            7 ---
            8  dmenu.c | 14 +++++++++++---
            9  1 file changed, 11 insertions(+), 3 deletions(-)
           10 
           11 diff --git a/dmenu.c b/dmenu.c
           12 index 4e7df12..203d9bf 100644
           13 --- a/dmenu.c
           14 +++ b/dmenu.c
           15 @@ -1,6 +1,7 @@
           16  /* See LICENSE file for copyright and license details. */
           17  #include <ctype.h>
           18  #include <locale.h>
           19 +#include <stdbool.h>
           20  #include <stdio.h>
           21  #include <stdlib.h>
           22  #include <string.h>
           23 @@ -53,6 +54,8 @@ static XIC xic;
           24  static Drw *drw;
           25  static Clr *scheme[SchemeLast];
           26  
           27 +static bool no_escape = false;
           28 +
           29  #include "config.h"
           30  
           31  static int (*fstrncmp)(const char *, const char *, size_t) = strncmp;
           32 @@ -447,8 +450,10 @@ insert:
           33                  sel = matchend;
           34                  break;
           35          case XK_Escape:
           36 -                cleanup();
           37 -                exit(1);
           38 +        if (no_escape == false) {
           39 +                    cleanup();
           40 +                    exit(1);
           41 +        }
           42          case XK_Home:
           43          case XK_KP_Home:
           44                  if (sel == matches) {
           45 @@ -716,6 +721,7 @@ static void
           46  usage(void)
           47  {
           48          die("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n"
           49 +        "             [-no-escape]\n"
           50              "             [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]");
           51  }
           52  
           53 @@ -737,7 +743,9 @@ main(int argc, char *argv[])
           54                  else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */
           55                          fstrncmp = strncasecmp;
           56                          fstrstr = cistrstr;
           57 -                } else if (i + 1 == argc)
           58 +        } else if (!strcmp(argv[i], "-no-escape"))   /* disable escape */
           59 +                        no_escape = !no_escape;
           60 +                else if (i + 1 == argc)
           61                          usage();
           62                  /* these options take one argument */
           63                  else if (!strcmp(argv[i], "-l"))   /* number of lines in vertical list */
           64 -- 
           65 2.40.0
           66