--- PATCHES.orig	2026-08-08 00:00:00 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.4.cd.ifdef.1
--- init.c.orig	2026-08-08 00:00:00 UTC
+++ init.c
@@ -712,6 +712,52 @@
   }
 
   return t;
+}
+
+static int parse_ifdef(BUFFER *tmp, BUFFER *s, union pointer_long_t data, BUFFER *err)
+{
+  int i, j, res = 0;
+  BUFFER token;
+
+  memset(&token, 0, sizeof(token));
+  mutt_extract_token(tmp, s, 0);
+
+  /* is the item defined as a variable or a function? */
+  if (!(res = (mutt_option_index(tmp->data) != -1)))
+    for (i = 0; !res && i < MENU_MAX; i++)
+    {
+      const struct menu_func_op_t *b = km_get_table(Menus[i].value);
+
+      if (!b)
+        continue;
+
+      for (j = 0; b[j].name; j++)
+        if (!ascii_strncasecmp(tmp->data, b[j].name, mutt_strlen(tmp->data))
+            && (mutt_strlen(b[j].name) == mutt_strlen(tmp->data)))
+        {
+          res = 1;
+          break;
+        }
+    }
+
+  if (!MoreArgs(s))
+  {
+    snprintf(err->data, err->dsize, _("ifdef: too few arguments"));
+    return (-1);
+  }
+  mutt_extract_token(tmp, s, MUTT_TOKEN_SPACE);
+
+  if (res)
+  {
+    if (mutt_parse_rc_buffer(tmp, &token, err) == -1)
+    {
+      mutt_error("Erreur: %s", err->data);
+      FREE(&token.data);
+      return (-1);
+    }
+    FREE(&token.data);
+  }
+  return 0;
 }
 
 static int parse_unignore(BUFFER *buf, BUFFER *s, union pointer_long_t udata, BUFFER *err)
--- init.h.orig	2026-08-08 00:00:00 UTC
+++ init.h
@@ -5014,6 +5014,7 @@
 static int parse_unlists(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
 static int parse_alias(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
 static int parse_unalias(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
+static int parse_ifdef(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
 static int parse_echo(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
 static int parse_ignore(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
 static int parse_unignore(BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
@@ -5085,6 +5086,7 @@
   { "unhdr_order",      parse_unlist,           {.p=&HeaderOrderList} },
 #ifdef HAVE_ICONV
   { "iconv-hook",       mutt_parse_hook,        {.l=MUTT_ICONVHOOK} },
+  { "ifdef",            parse_ifdef,            {.l=0} },
 #endif
   { "ignore",           parse_ignore,           {.l=0} },
   { "unignore",         parse_unignore,         {.l=0} },
