NeoMutt  2025-12-11-435-g4ac674
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
parse.c File Reference

Parse user-defined Hooks. More...

#include "config.h"
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "core/lib.h"
#include "commands/lib.h"
#include "compmbox/lib.h"
#include "expando/lib.h"
#include "index/lib.h"
#include "parse/lib.h"
#include "pattern/lib.h"
#include "globals.h"
#include "hook.h"
#include "muttlib.h"
+ Include dependency graph for parse.c:

Go to the source code of this file.

Functions

enum CommandResult parse_charset_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse charset Hook commands - Implements Command::parse() -.
 
enum CommandResult parse_global_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse global Hook commands - Implements Command::parse() -.
 
enum CommandResult parse_pattern_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse pattern-based Hook commands - Implements Command::parse() -.
 
enum CommandResult add_mailbox_hook (enum CommandId id, struct Buffer *mailbox, struct Buffer *pattern, bool pat_not, struct Buffer *err)
 Add a Mailbox Hook.
 
enum CommandResult parse_mailbox_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse mailbox pattern hook commands - Implements Command::parse() -.
 
enum CommandResult parse_regex_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse regex-based hook command - Implements Command::parse() -.
 
enum CommandResult parse_folder_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse folder hook command - Implements Command::parse() -.
 
enum CommandResult parse_crypt_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse crypt hook commands - Implements Command::parse() -.
 
enum CommandResult parse_mbox_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse mbox hook command - Implements Command::parse() -.
 
enum CommandResult parse_compress_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse compress hook commands - Implements Command::parse() -.
 
void mutt_delete_hooks (enum CommandId id)
 Delete matching hooks.
 
static void idxfmt_hashelem_free (int type, void *obj, intptr_t data)
 Free our hash table data - Implements hash_hdata_free_t -.
 
static void delete_idxfmt_hooks (void)
 Delete all the index-format-hooks.
 
enum CommandResult parse_index_hook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse the index format hook command - Implements Command::parse() -.
 
enum CommandResult parse_unhook (const struct Command *cmd, struct Buffer *line, const struct ParseContext *pc, struct ParseError *pe)
 Parse the unhook command - Implements Command::parse() -.
 

Variables

const struct ExpandoDefinition IndexFormatDef []
 Expando definitions.
 
struct HookList Hooks = TAILQ_HEAD_INITIALIZER(Hooks)
 All simple hooks, e.g. CMD_FOLDER_HOOK.
 
struct HashTableIdxFmtHooks = NULL
 All Index Format hooks.
 
enum CommandId CurrentHookId = CMD_NONE
 The ID of the Hook currently being executed, e.g. CMD_SAVE_HOOK.
 

Detailed Description

Parse user-defined Hooks.

Authors
  • Richard Russon

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file parse.c.

Function Documentation

◆ add_mailbox_hook()

enum CommandResult add_mailbox_hook ( enum CommandId id,
struct Buffer * mailbox,
struct Buffer * pattern,
bool pat_not,
struct Buffer * err )

Add a Mailbox Hook.

Parameters
idCommandId, e.g. CMD_FCC_SAVE_HOOK
mailboxMailbox
patternPattern to match
pat_nottrue of Pattern is inverted
errBuffer for error message
Return values
enumCommandResult, e.g. MUTT_CMD_SUCCESS

Definition at line 293 of file parse.c.

295{
296 struct Hook *hook = NULL;
297 struct PatternList *pat = NULL;
298
299 /* check to make sure that a matching hook doesn't already exist */
300 TAILQ_FOREACH(hook, &Hooks, entries)
301 {
302 if ((hook->id == id) && (hook->regex.pat_not == pat_not) &&
303 mutt_str_equal(buf_string(pattern), hook->regex.pattern))
304 {
305 // Update an existing hook
306 FREE(&hook->command);
307 hook->command = buf_strdup(mailbox);
308 FREE(&hook->source_file);
310
311 expando_free(&hook->expando);
312 hook->expando = expando_parse(buf_string(mailbox), IndexFormatDef, err);
313
314 return MUTT_CMD_SUCCESS;
315 }
316 }
317
318 PatternCompFlags comp_flags;
319 if (id == CMD_FCC_HOOK)
320 comp_flags = MUTT_PC_NO_FLAGS;
321 else
322 comp_flags = MUTT_PC_FULL_MSG;
323
324 struct MailboxView *mv_cur = get_current_mailbox_view();
325 pat = mutt_pattern_comp(mv_cur, buf_string(pattern), comp_flags, err);
326 if (!pat)
327 return MUTT_CMD_ERROR;
328
329 struct Expando *exp = expando_parse(buf_string(mailbox), IndexFormatDef, err);
330
331 hook = hook_new();
332 hook->id = id;
333 hook->command = buf_strdup(mailbox);
335 hook->pattern = pat;
336 hook->regex.pattern = buf_strdup(pattern);
337 hook->regex.regex = NULL;
338 hook->regex.pat_not = pat_not;
339 hook->expando = exp;
340
341 TAILQ_INSERT_TAIL(&Hooks, hook, entries);
342 return MUTT_CMD_SUCCESS;
343}
const struct ExpandoDefinition IndexFormatDef[]
Expando definitions.
char * buf_strdup(const struct Buffer *buf)
Copy a Buffer's string.
Definition buffer.c:571
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Definition buffer.h:96
@ CMD_FCC_HOOK
:fcc-hook
Definition command.h:75
@ MUTT_CMD_SUCCESS
Success: Command worked.
Definition command.h:40
@ MUTT_CMD_ERROR
Error: Can't help the user.
Definition command.h:38
struct PatternList * mutt_pattern_comp(struct MailboxView *mv, const char *s, PatternCompFlags flags, struct Buffer *err)
Create a Pattern.
Definition compile.c:954
struct Expando * expando_parse(const char *str, const struct ExpandoDefinition *defs, struct Buffer *err)
Parse an Expando string.
Definition expando.c:81
void expando_free(struct Expando **ptr)
Free an Expando object.
Definition expando.c:61
struct Hook * hook_new(void)
Create a Hook.
Definition hook.c:71
struct HookList Hooks
All simple hooks, e.g. CMD_FOLDER_HOOK.
Definition parse.c:49
struct MailboxView * get_current_mailbox_view(void)
Get the current Mailbox view.
Definition index.c:689
#define FREE(x)
Free memory and set the pointer to NULL.
Definition memory.h:68
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
Definition string.c:662
uint8_t PatternCompFlags
Flags for mutt_pattern_comp(), e.g. MUTT_PC_FULL_MSG.
Definition lib.h:68
#define MUTT_PC_FULL_MSG
Enable body and header matching.
Definition lib.h:70
#define MUTT_PC_NO_FLAGS
No flags are set.
Definition lib.h:69
#define TAILQ_FOREACH(var, head, field)
Definition queue.h:782
#define TAILQ_INSERT_TAIL(head, elm, field)
Definition queue.h:866
char * mutt_get_sourced_cwd(void)
Get the current file path that is being parsed.
Definition source.c:314
Parsed Expando trees.
Definition expando.h:41
A list of user hooks.
Definition hook.h:33
struct PatternList * pattern
Used for fcc,save,send-hook.
Definition hook.h:38
struct Regex regex
Regular expression.
Definition hook.h:35
char * command
Filename, command or pattern to execute.
Definition hook.h:36
struct Expando * expando
Used for format hooks.
Definition hook.h:39
enum CommandId id
Hook CommandId, e.g. CMD_FOLDER_HOOK.
Definition hook.h:34
char * source_file
Used for relative-directory source.
Definition hook.h:37
View of a Mailbox.
Definition mview.h:40
char * pattern
Limit pattern string.
Definition mview.h:42
char * pattern
printable version
Definition regex3.h:86
bool pat_not
do not match
Definition regex3.h:88
regex_t * regex
compiled expression
Definition regex3.h:87
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mutt_delete_hooks()

void mutt_delete_hooks ( enum CommandId id)

Delete matching hooks.

Parameters
idHook CommandId to delete, e.g. CMD_SEND_HOOK

If CMD_NONE is passed, all the hooks will be deleted.

Definition at line 1014 of file parse.c.

1015{
1016 struct Hook *h = NULL;
1017 struct Hook *tmp = NULL;
1018
1019 TAILQ_FOREACH_SAFE(h, &Hooks, entries, tmp)
1020 {
1021 if ((id == CMD_NONE) || (id == h->id))
1022 {
1023 TAILQ_REMOVE(&Hooks, h, entries);
1024 hook_free(&h);
1025 }
1026 }
1027}
@ CMD_NONE
No Command.
Definition command.h:59
void hook_free(struct Hook **ptr)
Free a Hook.
Definition hook.c:47
#define TAILQ_FOREACH_SAFE(var, head, field, tvar)
Definition queue.h:792
#define TAILQ_REMOVE(head, elm, field)
Definition queue.h:901
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ delete_idxfmt_hooks()

static void delete_idxfmt_hooks ( void )
static

Delete all the index-format-hooks.

Definition at line 1050 of file parse.c.

1051{
1053}
void mutt_hash_free(struct HashTable **ptr)
Free a hash table.
Definition hash.c:459
struct HashTable * IdxFmtHooks
All Index Format hooks.
Definition parse.c:52
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ IndexFormatDef

const struct ExpandoDefinition IndexFormatDef[]
extern

Expando definitions.

Config:

  • $attribution_intro
  • $attribution_trailer
  • $forward_attribution_intro
  • $forward_attribution_trailer
  • $forward_format
  • $index_format
  • $message_format
  • $pager_format
Note
Longer Expandos must precede any similar, but shorter Expandos

Definition at line 293 of file mutt_config.c.

293 {
294 // clang-format off
295 { "*", "padding-soft", ED_GLOBAL, ED_GLO_PADDING_SOFT, node_padding_parse },
296 { ">", "padding-hard", ED_GLOBAL, ED_GLO_PADDING_HARD, node_padding_parse },
297 { "|", "padding-eol", ED_GLOBAL, ED_GLO_PADDING_EOL, node_padding_parse },
300 { "a", "from", ED_ENVELOPE, ED_ENV_FROM, NULL },
301 { "A", "reply-to", ED_ENVELOPE, ED_ENV_REPLY_TO, NULL },
302 { "b", "mailbox-name", ED_MAILBOX, ED_MBX_MAILBOX_NAME, NULL },
303 { "B", "list-address", ED_ENVELOPE, ED_ENV_LIST_ADDRESS, NULL },
304 { "cr", "body-characters", ED_EMAIL, ED_EMA_BODY_CHARACTERS, NULL },
305 { "c", "size", ED_EMAIL, ED_EMA_SIZE, NULL },
306 { "C", "number", ED_EMAIL, ED_EMA_NUMBER, NULL },
307 { "d", "date-format", ED_EMAIL, ED_EMA_DATE_FORMAT, NULL },
308 { "D", "date-format-local", ED_EMAIL, ED_EMA_DATE_FORMAT_LOCAL, NULL },
309 { "e", "thread-number", ED_EMAIL, ED_EMA_THREAD_NUMBER, NULL },
310 { "E", "thread-count", ED_EMAIL, ED_EMA_THREAD_COUNT, NULL },
311 { "f", "from-full", ED_ENVELOPE, ED_ENV_FROM_FULL, NULL },
312 { "Fp", "sender-plain", ED_ENVELOPE, ED_ENV_SENDER_PLAIN, NULL },
313 { "F", "sender", ED_ENVELOPE, ED_ENV_SENDER, NULL },
314 { "g", "tags", ED_EMAIL, ED_EMA_TAGS, NULL },
315 { "G", "tags-transformed", ED_EMAIL, ED_EMA_TAGS_TRANSFORMED, parse_tags_transformed },
316 { "H", "spam", ED_ENVELOPE, ED_ENV_SPAM, NULL },
317 { "i", "message-id", ED_ENVELOPE, ED_ENV_MESSAGE_ID, NULL },
318 { "I", "initials", ED_ENVELOPE, ED_ENV_INITIALS, NULL },
319 { "J", "thread-tags", ED_EMAIL, ED_EMA_THREAD_TAGS, NULL },
320 { "K", "list-empty", ED_ENVELOPE, ED_ENV_LIST_EMPTY, NULL },
321 { "l", "lines", ED_EMAIL, ED_EMA_LINES, NULL },
322 { "L", "from-list", ED_EMAIL, ED_EMA_FROM_LIST, NULL },
323 { "m", "message-count", ED_MAILBOX, ED_MBX_MESSAGE_COUNT, NULL },
324 { "M", "thread-hidden-count", ED_EMAIL, ED_EMA_THREAD_HIDDEN_COUNT, NULL },
325 { "n", "name", ED_ENVELOPE, ED_ENV_NAME, NULL },
326 { "N", "score", ED_EMAIL, ED_EMA_SCORE, NULL },
327 { "O", "save-folder", ED_EMAIL, ED_EMA_LIST_OR_SAVE_FOLDER, NULL },
328 { "P", "percentage", ED_MAILBOX, ED_MBX_PERCENTAGE, NULL },
329 { "q", "newsgroup", ED_ENVELOPE, ED_ENV_NEWSGROUP, NULL },
330 { "r", "to-all", ED_ENVELOPE, ED_ENV_TO_ALL, NULL },
331 { "R", "cc-all", ED_ENVELOPE, ED_ENV_CC_ALL, NULL },
332 { "s", "subject", ED_ENVELOPE, ED_ENV_SUBJECT, parse_subject },
333 { "S", "flag-chars", ED_EMAIL, ED_EMA_FLAG_CHARS, NULL },
334 { "t", "to", ED_ENVELOPE, ED_ENV_TO, NULL },
335 { "T", "to-chars", ED_EMAIL, ED_EMA_TO_CHARS, NULL },
336 { "u", "username", ED_ENVELOPE, ED_ENV_USERNAME, NULL },
337 { "v", "first-name", ED_ENVELOPE, ED_ENV_FIRST_NAME, NULL },
338 { "W", "organization", ED_ENVELOPE, ED_ENV_ORGANIZATION, NULL },
339 { "x", "x-comment-to", ED_ENVELOPE, ED_ENV_X_COMMENT_TO, NULL },
340 { "X", "attachment-count", ED_EMAIL, ED_EMA_ATTACHMENT_COUNT, NULL },
341 { "y", "x-label", ED_ENVELOPE, ED_ENV_X_LABEL, NULL },
342 { "Y", "thread-x-label", ED_ENVELOPE, ED_ENV_THREAD_X_LABEL, NULL },
343 { "Z", "combined-flags", ED_EMAIL, ED_EMA_COMBINED_FLAGS, NULL },
344 { "zc", "crypto-flags", ED_EMAIL, ED_EMA_CRYPTO_FLAGS, NULL },
345 { "zs", "status-flags", ED_EMAIL, ED_EMA_STATUS_FLAGS, NULL },
346 { "zt", "message-flags", ED_EMAIL, ED_EMA_MESSAGE_FLAGS, NULL },
349 { NULL, NULL, 0, -1, NULL }
350 // clang-format on
351};
@ ED_MBX_MESSAGE_COUNT
Mailbox.msg_count.
Definition mailbox.h:158
@ ED_MBX_PERCENTAGE
EmailFormatInfo.pager_progress.
Definition mailbox.h:159
@ ED_MBX_MAILBOX_NAME
Mailbox, mailbox_path()
Definition mailbox.h:157
@ ED_ENVELOPE
Envelope ED_ENV_ ExpandoDataEnvelope.
Definition domain.h:42
@ ED_EMAIL
Email ED_EMA_ ExpandoDataEmail.
Definition domain.h:41
@ ED_GLOBAL
Global ED_GLO_ ExpandoDataGlobal.
Definition domain.h:44
@ ED_MAILBOX
Mailbox ED_MBX_ ExpandoDataMailbox.
Definition domain.h:47
@ ED_EMA_DATE_STRF_LOCAL
Email.date_sent.
Definition email.h:143
@ ED_EMA_ATTACHMENT_COUNT
Email, mutt_count_body_parts()
Definition email.h:136
@ ED_EMA_DATE_FORMAT_LOCAL
Email.date_sent.
Definition email.h:141
@ ED_EMA_TAGS_TRANSFORMED
Email.tags, driver_tags_get_transformed()
Definition email.h:156
@ ED_EMA_THREAD_HIDDEN_COUNT
Email.collapsed, Email.num_hidden, ...
Definition email.h:158
@ ED_EMA_DATE_FORMAT
Email.date_sent.
Definition email.h:140
@ ED_EMA_THREAD_TAGS
Email.tags.
Definition email.h:160
@ ED_EMA_TAGS
Email.tags.
Definition email.h:155
@ ED_EMA_SIZE
Body.length.
Definition email.h:152
@ ED_EMA_FLAG_CHARS
Email.deleted, Email.attach_del, ...
Definition email.h:144
@ ED_EMA_THREAD_NUMBER
Email, mutt_messages_in_thread()
Definition email.h:159
@ ED_EMA_TO_CHARS
Email, User_is_recipient()
Definition email.h:161
@ ED_EMA_BODY_CHARACTERS
Body.length.
Definition email.h:137
@ ED_EMA_COMBINED_FLAGS
Email.read, Email.old, thread_is_new(), ...
Definition email.h:138
@ ED_EMA_THREAD_COUNT
Email, mutt_messages_in_thread()
Definition email.h:157
@ ED_EMA_STATUS_FLAGS
Email.deleted, Email.attach_del, ...
Definition email.h:153
@ ED_EMA_NUMBER
Email.msgno.
Definition email.h:150
@ ED_EMA_DATE_STRF
Email.date_sent, Email.zhours, Email.zminutes, Email.zoccident.
Definition email.h:142
@ ED_EMA_FROM_LIST
Envelope.to, Envelope.cc.
Definition email.h:145
@ ED_EMA_SCORE
Email.score.
Definition email.h:151
@ ED_EMA_CRYPTO_FLAGS
Email.security, SecurityFlags.
Definition email.h:139
@ ED_EMA_STRF_RECV_LOCAL
Email.received.
Definition email.h:154
@ ED_EMA_LIST_OR_SAVE_FOLDER
Envelope.to, Envelope.cc, check_for_mailing_list()
Definition email.h:148
@ ED_EMA_INDEX_HOOK
Mailbox, Email, mutt_idxfmt_hook()
Definition email.h:146
@ ED_EMA_LINES
Email.lines.
Definition email.h:147
@ ED_EMA_MESSAGE_FLAGS
Email.tagged, Email.flagged.
Definition email.h:149
@ ED_ENV_SUBJECT
Envelope.subject, Envelope.disp_subj.
Definition envelope.h:116
@ ED_ENV_NEWSGROUP
Envelope.newsgroups.
Definition envelope.h:109
@ ED_ENV_INITIALS
Envelope.from (first)
Definition envelope.h:104
@ ED_ENV_FROM_FULL
Envelope.from (all)
Definition envelope.h:103
@ ED_ENV_X_COMMENT_TO
Envelope.x_comment_to.
Definition envelope.h:123
@ ED_ENV_FROM
Envelope.from (first)
Definition envelope.h:102
@ ED_ENV_LIST_ADDRESS
Envelope.to, Envelope.cc.
Definition envelope.h:105
@ ED_ENV_SPAM
Envelope.spam.
Definition envelope.h:115
@ ED_ENV_SENDER
Envelope, make_from()
Definition envelope.h:113
@ ED_ENV_TO_ALL
Envelope.to (all)
Definition envelope.h:120
@ ED_ENV_X_LABEL
Envelope.x_label.
Definition envelope.h:124
@ ED_ENV_NAME
Envelope.from (first)
Definition envelope.h:108
@ ED_ENV_CC_ALL
Envelope.cc.
Definition envelope.h:100
@ ED_ENV_ORGANIZATION
Envelope.organization.
Definition envelope.h:110
@ ED_ENV_REPLY_TO
Envelope.reply_to.
Definition envelope.h:112
@ ED_ENV_LIST_EMPTY
Envelope.to, Envelope.cc.
Definition envelope.h:106
@ ED_ENV_THREAD_X_LABEL
Envelope.x_label.
Definition envelope.h:118
@ ED_ENV_MESSAGE_ID
Envelope.message_id.
Definition envelope.h:107
@ ED_ENV_SENDER_PLAIN
Envelope, make_from()
Definition envelope.h:114
@ ED_ENV_USERNAME
Envelope.from.
Definition envelope.h:121
@ ED_ENV_TO
Envelope.to, Envelope.cc (first)
Definition envelope.h:119
@ ED_ENV_FIRST_NAME
Envelope.from, Envelope.to, Envelope.cc.
Definition envelope.h:101
struct ExpandoNode * node_padding_parse(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Padding Expando - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_index_format_hook(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse an index-hook - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_subject(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Subject Expando - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_index_date_recv_local(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Date Expando - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_index_date_local(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Date Expando - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_index_date(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Date Expando - Implements ExpandoDefinition::parse() -.
struct ExpandoNode * parse_tags_transformed(const char *str, struct ExpandoFormat *fmt, int did, int uid, ExpandoParserFlags flags, const char **parsed_until, struct ExpandoParseError *err)
Parse a Tags-Transformed Expando - Implements ExpandoDefinition::parse() -.
@ ED_GLO_PADDING_EOL
Padding to end-of-line.
Definition uid.h:38
@ ED_GLO_PADDING_HARD
Hard Padding.
Definition uid.h:39
@ ED_GLO_PADDING_SOFT
Soft Padding.
Definition uid.h:40

◆ Hooks

struct HookList Hooks = TAILQ_HEAD_INITIALIZER(Hooks)

All simple hooks, e.g. CMD_FOLDER_HOOK.

Definition at line 49 of file parse.c.

◆ IdxFmtHooks

struct HashTable* IdxFmtHooks = NULL

All Index Format hooks.

Definition at line 52 of file parse.c.

◆ CurrentHookId

enum CommandId CurrentHookId = CMD_NONE

The ID of the Hook currently being executed, e.g. CMD_SAVE_HOOK.

Definition at line 55 of file parse.c.