NeoMutt  2025-12-11-911-gd8d604
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
functions.c File Reference

Index functions. More...

#include "config.h"
#include <limits.h>
#include <stdbool.h>
#include <stdio.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "email/lib.h"
#include "core/lib.h"
#include "alias/lib.h"
#include "gui/lib.h"
#include "mutt.h"
#include "functions.h"
#include "lib.h"
#include "attach/lib.h"
#include "browser/lib.h"
#include "editor/lib.h"
#include "history/lib.h"
#include "hooks/lib.h"
#include "imap/lib.h"
#include "key/lib.h"
#include "menu/lib.h"
#include "ncrypt/lib.h"
#include "nntp/lib.h"
#include "pager/lib.h"
#include "pattern/lib.h"
#include "pop/lib.h"
#include "progress/lib.h"
#include "question/lib.h"
#include "send/lib.h"
#include "sidebar/lib.h"
#include "external.h"
#include "globals.h"
#include "module_data.h"
#include "mutt_mailbox.h"
#include "muttlib.h"
#include "mx.h"
#include "nntp/mdata.h"
#include "nntp/module_data.h"
#include "private_data.h"
#include "shared_data.h"
#include "autocrypt/lib.h"
#include "notmuch/lib.h"
#include <libintl.h>
+ Include dependency graph for functions.c:

Go to the source code of this file.

Enumerations

enum  ResolveMethod { RESOLVE_NEXT_EMAIL , RESOLVE_NEXT_UNDELETED , RESOLVE_NEXT_THREAD , RESOLVE_NEXT_SUBTHREAD }
 How to advance the cursor. More...
 

Functions

static int op_jump (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Jump to an index number - Implements index_function_t -.
 
void index_init_keys (struct NeoMutt *n, struct SubMenu *sm_generic)
 Initialise the Index Keybindings - Implements ::init_keys_api.
 
static bool resolve_email (struct IndexPrivateData *priv, struct IndexSharedData *shared, enum ResolveMethod rm, int count)
 Pick the next Email to advance the cursor to.
 
bool index_next_undeleted (struct MuttWindow *win_index)
 Select the next undeleted Email (if possible)
 
static int ea_add_selection (struct EmailArray *ea, struct MailboxView *mv, struct Email *e, bool use_tagged, int count)
 Build a working set of Emails for an action.
 
static struct MuttThreadthread_target (struct Email *e, bool subthread)
 Get the thread/subthread target for an email.
 
static bool ea_contains_thread_target (struct EmailArray *ea, struct Email *e, bool subthread)
 Does the array already include this thread target?
 
static int ea_add_selection_threads (struct EmailArray *ea, struct MailboxView *mv, struct Email *e, bool use_tagged, bool subthread, int count)
 Build a working set of threads/subthreads.
 
static int op_alias_dialog (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open the aliases dialog - Implements index_function_t -.
 
static int op_attach_edit_type (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Edit attachment content type - Implements index_function_t -.
 
static int op_bounce_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Remail a message to another user - Implements index_function_t -.
 
static int op_check_traditional (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Check for classic PGP - Implements index_function_t -.
 
static int op_compose_to_sender (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Compose new message to the current message sender - Implements index_function_t -.
 
static int op_create_alias (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Create an alias from a message sender - Implements index_function_t -.
 
static int op_delete (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Delete the current entry - Implements index_function_t -.
 
static void update_thread_email (struct IndexPrivateData *priv, struct Email *email)
 Focus a visible email in the current thread.
 
static int op_main_change_thread (struct IndexFunctionData *fdata, struct EmailArray *ea, enum CollapseMode mode)
 Open/close/collapse a working set of threads.
 
static int op_delete_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Delete all messages in thread - Implements index_function_t -.
 
static int op_display_address (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Display full address of sender - Implements index_function_t -.
 
static int op_display_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Display a message - Implements index_function_t -.
 
static int op_edit_label (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Add, change, or delete a message's label - Implements index_function_t -.
 
static int op_edit_raw_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Edit the raw message (edit and edit-raw-message are synonyms) - Implements index_function_t -.
 
static int op_end_cond (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 End of conditional execution (noop) - Implements index_function_t -.
 
static int op_exit (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Exit this menu - Implements index_function_t -.
 
static int op_extract_keys (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Extract supported public keys - Implements index_function_t -.
 
static int op_flag_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Toggle a message's 'important' flag - Implements index_function_t -.
 
static int op_forget_passphrase (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Wipe passphrases from memory - Implements index_function_t -.
 
static int op_forward_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Forward a message with comments - Implements index_function_t -.
 
static int op_group_reply (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Reply to all recipients - Implements index_function_t -.
 
static int op_list_action (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Show mailing-list actions - Implements index_function_t -.
 
static int op_list_reply (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Reply to specified mailing list - Implements index_function_t -.
 
static int op_list_subscribe (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Subscribe to a mailing list - Implements index_function_t -.
 
static int op_list_unsubscribe (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Unsubscribe from mailing list - Implements index_function_t -.
 
static int op_mail (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Compose a new mail message - Implements index_function_t -.
 
static int op_mailbox_list (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 List mailboxes with new mail - Implements index_function_t -.
 
static int op_mail_key (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Mail a PGP public key - Implements index_function_t -.
 
static int op_main_break_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Break the thread in two - Implements index_function_t -.
 
static int op_main_change_folder (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open a different folder - Implements index_function_t -.
 
static int op_main_collapse_all (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Collapse/uncollapse all threads - Implements index_function_t -.
 
static int op_main_close_all_threads (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Collapse all threads - Implements index_function_t -.
 
static int op_main_close_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Collapse current thread - Implements index_function_t -.
 
static int op_main_collapse_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Collapse/uncollapse current thread - Implements index_function_t -.
 
static int op_main_open_all_threads (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open all threads - Implements index_function_t -.
 
static int op_main_open_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open current thread - Implements index_function_t -.
 
static int op_main_delete_pattern (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Delete messages matching a pattern - Implements index_function_t -.
 
static int op_main_limit (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Limit view to a pattern/thread - Implements index_function_t -.
 
static int op_main_link_threads (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Link tagged message to the current one - Implements index_function_t -.
 
static int op_main_modify_tags (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Modify (notmuch/imap) tags - Implements index_function_t -.
 
static int find_next_new_email (struct Mailbox *m, int start, bool forwards, int op)
 Jump to next new message - Implements index_function_t -.
 
static int op_main_next_new (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 
static int op_main_next_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Jump to the next thread - Implements index_function_t -.
 
static int op_main_next_undeleted (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Move to the next undeleted message - Implements index_function_t -.
 
static int op_main_next_unread_mailbox (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open next mailbox with unread mail - Implements index_function_t -.
 
static int op_main_prev_unread_mailbox (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open previous mailbox with unread mail - Implements index_function_t -.
 
static int op_main_prev_undeleted (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Move to the previous undeleted message - Implements index_function_t -.
 
static int op_main_quasi_delete (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Delete from NeoMutt, don't touch on disk - Implements index_function_t -.
 
static int op_main_read_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Mark the current thread as read - Implements index_function_t -.
 
static int op_main_root_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Jump to root message in thread - Implements index_function_t -.
 
static int op_main_set_flag (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Set a status flag on a message - Implements index_function_t -.
 
static int op_main_show_limit (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Show currently active limit pattern - Implements index_function_t -.
 
static int op_main_sync_folder (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Save changes to mailbox - Implements index_function_t -.
 
static int op_main_tag_pattern (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Tag messages matching a pattern - Implements index_function_t -.
 
static int op_main_undelete_pattern (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Undelete messages matching a pattern - Implements index_function_t -.
 
static int op_main_untag_pattern (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Untag messages matching a pattern - Implements index_function_t -.
 
static int op_mark_msg (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Create a hotkey macro for the current message - Implements index_function_t -.
 
static int op_next_entry (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Move to the next entry - Implements index_function_t -.
 
static int op_pipe (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Pipe message/attachment to a shell command - Implements index_function_t -.
 
static int op_prev_entry (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Move to the previous entry - Implements index_function_t -.
 
static int op_print (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Print the current entry - Implements index_function_t -.
 
static int op_query (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Query external program for addresses - Implements index_function_t -.
 
static int op_quit (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Save changes to mailbox and quit - Implements index_function_t -.
 
static int op_recall_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Recall a postponed message - Implements index_function_t -.
 
static int op_reply (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Reply to a message - Implements index_function_t -.
 
static int op_resend (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Use the current message as a template for a new one - Implements index_function_t -.
 
static int op_save (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Make decrypted copy - Implements index_function_t -.
 
static int op_search (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Search for a regular expression - Implements index_function_t -.
 
static int op_sort (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Sort messages - Implements index_function_t -.
 
static int op_tag (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Tag the current entry - Implements index_function_t -.
 
static int op_tag_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Tag the current thread - Implements index_function_t -.
 
static int op_toggle_new (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Toggle a message's 'new' flag - Implements index_function_t -.
 
static int op_toggle_write (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Toggle whether the mailbox will be rewritten - Implements index_function_t -.
 
static int op_undelete (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Undelete the current entry - Implements index_function_t -.
 
static int op_undelete_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Undelete all messages in thread - Implements index_function_t -.
 
static int op_view_attachments (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Show MIME attachments - Implements index_function_t -.
 
static int op_autocrypt_acct_menu (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Manage autocrypt accounts - Implements index_function_t -.
 
static int op_main_imap_fetch (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Force retrieval of mail from IMAP server - Implements index_function_t -.
 
static int op_main_imap_logout_all (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Logout from all IMAP servers - Implements index_function_t -.
 
static int op_catchup (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Mark all articles in newsgroup as read - Implements index_function_t -.
 
static int op_get_children (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Get all children of the current message - Implements index_function_t -.
 
static int op_get_message (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Get parent of the current message - Implements index_function_t -.
 
static int op_main_change_group (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Open a different newsgroup - Implements index_function_t -.
 
static int op_post (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Followup to newsgroup - Implements index_function_t -.
 
static int op_main_entire_thread (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Read entire thread of the current message - Implements index_function_t -.
 
static int op_main_vfolder_from_query (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Generate virtual folder from query - Implements index_function_t -.
 
static int op_main_windowed_vfolder (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Shifts virtual folder time window - Implements index_function_t -.
 
static int op_main_fetch_mail (struct IndexFunctionData *fdata, const struct KeyEvent *event)
 Retrieve mail from POP server - Implements index_function_t -.
 
static bool prereq (struct IndexSharedData *shared, struct Menu *menu, CheckFlags checks)
 Check the pre-requisites for a function.
 
int index_function_dispatcher (struct MuttWindow *win, const struct KeyEvent *event)
 Perform an Index function - Implements function_dispatcher_t -.
 
struct MenuDefinitionindex_get_menu_definition (void)
 Get the Index Menu Definition.
 

Variables

static const struct MenuFuncOp OpIndex []
 Functions for the Index Menu.
 
static const struct MenuFuncOp OpList []
 Functions for the List Dialog.
 
static const struct MenuOpSeq IndexDefaultBindings []
 Key bindings for the Index Menu.
 
static const struct MenuOpSeq ListDefaultBindings []
 Key bindings for the List Dialog.
 
static const struct IndexFunction IndexFunctions []
 All the NeoMutt functions that the Index supports.
 

Detailed Description

Index functions.

Authors
  • Pietro Cerutti
  • Richard Russon
  • Dennis Schön

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 functions.c.

Enumeration Type Documentation

◆ ResolveMethod

How to advance the cursor.

Enumerator
RESOLVE_NEXT_EMAIL 

Next email, whatever its state.

RESOLVE_NEXT_UNDELETED 

Next undeleted email.

RESOLVE_NEXT_THREAD 

Next top-level thread.

RESOLVE_NEXT_SUBTHREAD 

Next sibling sub-thread.

Definition at line 347 of file functions.c.

348{
353};
@ RESOLVE_NEXT_SUBTHREAD
Next sibling sub-thread.
Definition functions.c:352
@ RESOLVE_NEXT_UNDELETED
Next undeleted email.
Definition functions.c:350
@ RESOLVE_NEXT_EMAIL
Next email, whatever its state.
Definition functions.c:349
@ RESOLVE_NEXT_THREAD
Next top-level thread.
Definition functions.c:351

Function Documentation

◆ index_init_keys()

void index_init_keys ( struct NeoMutt * n,
struct SubMenu * sm_generic )

Initialise the Index Keybindings - Implements ::init_keys_api.

Definition at line 358 of file functions.c.

359{
360 struct MenuDefinition *md = NULL;
361 struct MenuDefinition *md_list = NULL;
362 struct SubMenu *sm_index = NULL;
363 struct SubMenu *sm_list = NULL;
364 struct SubMenu *sm_sidebar = sidebar_get_submenu();
365
366 sm_list = km_register_submenu(OpList);
367 md_list = km_register_menu(MENU_LIST, "list");
368 km_menu_add_submenu(md_list, sm_list);
369 km_menu_add_submenu(md_list, sm_generic);
371
372 sm_index = km_register_submenu(OpIndex);
373 md = km_register_menu(MENU_INDEX, "index");
374 km_menu_add_submenu(md, sm_index);
375 km_menu_add_submenu(md, sm_sidebar);
376 km_menu_add_submenu(md, sm_generic);
378
380 ASSERT(mod_data);
381 mod_data->menu_list = md_list;
382 mod_data->menu_index = md;
383}
static const struct MenuFuncOp OpIndex[]
Functions for the Index Menu.
Definition functions.c:87
static const struct MenuFuncOp OpList[]
Functions for the List Dialog.
Definition functions.c:227
static const struct MenuOpSeq ListDefaultBindings[]
Key bindings for the List Dialog.
Definition functions.c:332
static const struct MenuOpSeq IndexDefaultBindings[]
Key bindings for the Index Menu.
Definition functions.c:241
void km_menu_add_submenu(struct MenuDefinition *md, struct SubMenu *sm)
Add a SubMenu to a Menu Definition.
Definition init.c:121
struct SubMenu * km_register_submenu(const struct MenuFuncOp functions[])
Register a submenu.
Definition init.c:87
struct MenuDefinition * km_register_menu(int menu, const char *name)
Register a menu.
Definition init.c:104
void km_menu_add_bindings(struct MenuDefinition *md, const struct MenuOpSeq bindings[])
Add Keybindings to a Menu.
Definition init.c:134
@ MODULE_ID_INDEX
ModuleIndex, Index
Definition module_api.h:72
void * neomutt_get_module_data(struct NeoMutt *n, enum ModuleId id)
Get the private data for a Module.
Definition neomutt.c:663
struct SubMenu * sidebar_get_submenu(void)
Get the Sidebar SubMenu.
Definition functions.c:106
#define ASSERT(COND)
Definition signal2.h:59
Index private Module data.
Definition module_data.h:32
struct MenuDefinition * menu_index
Index menu definition.
Definition module_data.h:34
struct MenuDefinition * menu_list
Mailing-list action menu definition.
Definition module_data.h:35
Functions for a Dialog or Window.
Definition menu.h:77
Collection of related functions.
Definition menu.h:65
@ MENU_INDEX
Index panel (list of emails)
Definition type.h:44
@ MENU_LIST
Mailing-list actions.
Definition type.h:45
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resolve_email()

static bool resolve_email ( struct IndexPrivateData * priv,
struct IndexSharedData * shared,
enum ResolveMethod rm,
int count )
static

Pick the next Email to advance the cursor to.

Parameters
privPrivate Index data
sharedShared Index data
rmHow to advance the cursor, e.g. RESOLVE_NEXT_EMAIL
countHow many steps to advance (default 1)
Return values
trueResolve succeeded

Definition at line 393 of file functions.c.

395{
396 if (!priv || !priv->menu || !shared || !shared->mailbox || !shared->email)
397 return false;
398
399 const bool c_resolve = cs_subset_bool(shared->sub, "resolve");
400 if (!c_resolve)
401 return false;
402
403 count = MAX(count, 1);
404 int index = menu_get_index(priv->menu);
405
406 switch (rm)
407 {
409 index = index + count;
410 break;
411
413 {
414 const bool uncollapse = mutt_using_threads() && !window_is_focused(priv->win_index);
415 for (int i = 0; i < count; i++)
416 {
417 int next = find_next_undeleted(shared->mailbox_view, index, uncollapse);
418 if (next < 0)
419 break;
420 index = next;
421 }
422 break;
423 }
424
426 for (int i = 0; i < count; i++)
427 {
428 struct Email *e = mutt_get_virt_email(shared->mailbox, index);
429 if (!e)
430 break;
431 int next = mutt_next_thread(e);
432 if (next < 0)
433 break;
434 index = next;
435 }
436 break;
437
439 for (int i = 0; i < count; i++)
440 {
441 struct Email *e = mutt_get_virt_email(shared->mailbox, index);
442 if (!e)
443 break;
444 int next = mutt_next_subthread(e);
445 if (next < 0)
446 break;
447 index = next;
448 }
449 break;
450 }
451
452 if (index < 0)
453 index = 0;
454 if (index >= shared->mailbox->vcount)
455 index = shared->mailbox->vcount - 1;
456
457 menu_set_index(priv->menu, index);
458 return true;
459}
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Definition helpers.c:47
int find_next_undeleted(struct MailboxView *mv, int msgno, bool uncollapse)
Find the next undeleted email.
Definition dlg_index.c:259
#define mutt_using_threads()
Definition thread.h:119
#define mutt_next_subthread(e)
Definition thread.h:126
#define mutt_next_thread(e)
Definition thread.h:124
#define MAX(a, b)
Return the maximum of two values.
Definition memory.h:38
int menu_get_index(struct Menu *menu)
Get the current selection in the Menu.
Definition menu.c:155
MenuRedrawFlags menu_set_index(struct Menu *menu, int index)
Set the current selection in the Menu.
Definition menu.c:169
bool window_is_focused(const struct MuttWindow *win)
Does the given Window have the focus?
struct Email * mutt_get_virt_email(struct Mailbox *m, int vnum)
Get a virtual Email.
Definition mview.c:376
The envelope/body of an email.
Definition email.h:39
int index
The absolute (unsorted) message number.
Definition email.h:110
struct MuttWindow * win_index
Window for the Index.
struct Menu * menu
Menu controlling the index.
struct Email * email
Currently selected Email.
Definition shared_data.h:42
struct Mailbox * mailbox
Current Mailbox.
Definition shared_data.h:41
struct ConfigSubset * sub
Config set to use.
Definition shared_data.h:38
struct MailboxView * mailbox_view
Current Mailbox view.
Definition shared_data.h:40
int vcount
The number of virtual messages.
Definition mailbox.h:101
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ index_next_undeleted()

bool index_next_undeleted ( struct MuttWindow * win_index)

Select the next undeleted Email (if possible)

Parameters
win_indexIndex Window
Return values
trueSelection succeeded

Definition at line 466 of file functions.c.

467{
468 struct MuttWindow *dlg = dialog_find(win_index);
469 if (!dlg)
470 return false;
471
472 struct Menu *menu = win_index->wdata;
473 struct IndexSharedData *shared = dlg->wdata;
474 if (!shared)
475 return false;
476
477 struct IndexPrivateData *priv = win_index->parent->wdata;
478 const bool uncollapse = mutt_using_threads() && !window_is_focused(priv->win_index);
479
480 int index = find_next_undeleted(shared->mailbox_view, menu_get_index(menu), uncollapse);
481 if ((index < 0) || (index >= shared->mailbox->vcount))
482 {
483 // Selection failed
485 return false;
486 }
487
488 menu_set_index(menu, index);
489 return true;
490}
struct MuttWindow * dialog_find(struct MuttWindow *win)
Find the parent Dialog of a Window.
Definition dialog.c:89
@ NT_INDEX_EMAIL
Email has changed.
Definition lib.h:81
bool notify_send(struct Notify *notify, enum NotifyType event_type, int event_subtype, void *event_data)
Send out a notification message.
Definition notify.c:173
@ NT_INDEX
Index data has changed, NotifyIndex, IndexSharedData.
Definition notify_type.h:48
Private state data for the Index.
struct IndexSharedData * shared
Shared Index data.
Data shared between Index, Pager and Sidebar.
Definition shared_data.h:37
struct Notify * notify
Notifications: NotifyIndex, IndexSharedData.
Definition shared_data.h:44
Definition lib.h:86
void * wdata
Private data.
struct MuttWindow * parent
Parent Window.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ea_add_selection()

static int ea_add_selection ( struct EmailArray * ea,
struct MailboxView * mv,
struct Email * e,
bool use_tagged,
int count )
static

Build a working set of Emails for an action.

Parameters
eaEmpty EmailArray to populate
mvCurrent MailboxView
eCurrent Email
use_taggedUse tagged emails
countRepeat-count (0 or 1 == just the current selection)
Return values
numNumber of selected emails
-1Error

Definition at line 502 of file functions.c.

504{
505 if (!ea)
506 return -1;
507
508 if (use_tagged)
509 return ea_add_tagged(ea, mv, e, true);
510
511 if (!mv || !mv->mailbox || !e)
512 return -1;
513
514 const int index = e->vnum;
515 if ((index < 0) || (index >= mv->mailbox->vcount))
516 return -1;
517
518 int n = (count > 1) ? count : 1;
519 if ((index + n) > mv->mailbox->vcount)
520 n = mv->mailbox->vcount - index;
521
522 for (int i = 0; i < n; i++)
523 {
524 struct Email *sel = mutt_get_virt_email(mv->mailbox, index + i);
525 if (sel)
526 ea_add_tagged(ea, mv, sel, false);
527 }
528
529 return ARRAY_SIZE(ea);
530}
#define ARRAY_SIZE(head)
The number of elements stored.
Definition array.h:87
int ea_add_tagged(struct EmailArray *ea, struct MailboxView *mv, struct Email *e, bool use_tagged)
Get an array of the tagged Emails.
Definition selection.c:128
int vnum
Virtual message number.
Definition email.h:114
struct Mailbox * mailbox
Current Mailbox.
Definition mview.h:51
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ thread_target()

static struct MuttThread * thread_target ( struct Email * e,
bool subthread )
static

Get the thread/subthread target for an email.

Parameters
eEmail
subthreadIf true, use the current subthread
Return values
ptrThread/subthread target

Definition at line 538 of file functions.c.

539{
540 if (!e || !e->thread)
541 return NULL;
542
543 struct MuttThread *thread = e->thread;
544 if (!subthread)
545 {
546 while (thread->parent)
547 thread = thread->parent;
548 }
549
550 return thread;
551}
struct MuttThread * thread
Thread of Emails.
Definition email.h:119
An Email conversation.
Definition thread.h:34
struct MuttThread * parent
Parent of this Thread.
Definition thread.h:44
+ Here is the caller graph for this function:

◆ ea_contains_thread_target()

static bool ea_contains_thread_target ( struct EmailArray * ea,
struct Email * e,
bool subthread )
static

Does the array already include this thread target?

Parameters
eaSelected emails
eCandidate email
subthreadIf true, compare subthreads instead of top-level threads
Return values
trueThe target is already represented in the array

Definition at line 560 of file functions.c.

561{
562 if (!ea || !e)
563 return false;
564
565 struct MuttThread *target = thread_target(e, subthread);
566 if (!target)
567 return false;
568
569 struct Email **ep = NULL;
570 ARRAY_FOREACH(ep, ea)
571 {
572 if (thread_target(*ep, subthread) == target)
573 return true;
574 }
575
576 return false;
577}
#define ARRAY_FOREACH(elem, head)
Iterate over all elements of the array.
Definition array.h:223
static struct MuttThread * thread_target(struct Email *e, bool subthread)
Get the thread/subthread target for an email.
Definition functions.c:538
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ea_add_selection_threads()

static int ea_add_selection_threads ( struct EmailArray * ea,
struct MailboxView * mv,
struct Email * e,
bool use_tagged,
bool subthread,
int count )
static

Build a working set of threads/subthreads.

Parameters
eaEmpty EmailArray to populate
mvCurrent MailboxView
eCurrent Email
use_taggedUse tagged emails
subthreadIf true, act on subthreads
countRepeat-count (0 or 1 == just the current thread/subthread)
Return values
numNumber of selected threads/subthreads
-1Error

Definition at line 590 of file functions.c.

593{
594 if (!ea)
595 return -1;
596
597 if (!use_tagged)
598 {
599 if (!mv || !mv->mailbox || !e)
600 return -1;
601
602 const int index = e->vnum;
603 if ((index < 0) || (index >= mv->mailbox->vcount))
604 return -1;
605
606 const int n = (count > 1) ? count : 1;
607 for (int i = index; (i < mv->mailbox->vcount) && (ARRAY_SIZE(ea) < n); i++)
608 {
609 struct Email *sel = mutt_get_virt_email(mv->mailbox, i);
610 if (!sel || ea_contains_thread_target(ea, sel, subthread))
611 continue;
612
613 ARRAY_ADD(ea, sel);
614 }
615 return ARRAY_SIZE(ea);
616 }
617
618 if (!mv || !mv->mailbox || !mv->mailbox->emails)
619 return -1;
620
621 struct Mailbox *m = mv->mailbox;
622 for (int i = 0; i < m->msg_count; i++)
623 {
624 struct Email *et = m->emails[i];
625 if (!et)
626 break;
627 if (!message_is_tagged(et))
628 continue;
629
630 if (!ea_contains_thread_target(ea, et, subthread))
631 ARRAY_ADD(ea, et);
632 }
633
634 return ARRAY_SIZE(ea);
635}
#define ARRAY_ADD(head, elem)
Add an element at the end of the array.
Definition array.h:157
static bool ea_contains_thread_target(struct EmailArray *ea, struct Email *e, bool subthread)
Does the array already include this thread target?
Definition functions.c:560
bool message_is_tagged(struct Email *e)
Is a message in the index tagged (and within limit)
Definition mview.c:361
A mailbox.
Definition mailbox.h:81
int msg_count
Total number of messages.
Definition mailbox.h:90
struct Email ** emails
Array of Emails.
Definition mailbox.h:98
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update_thread_email()

static void update_thread_email ( struct IndexPrivateData * priv,
struct Email * email )
static

Focus a visible email in the current thread.

Parameters
privIndex private data
emailCurrent email

Definition at line 784 of file functions.c.

785{
786 if (!priv || !priv->menu || !email)
787 return;
788
789 int index = email->vnum;
790 if (index < 0)
791 {
792 struct MuttThread *thread = thread_target(email, false);
793 struct Email *e = find_virtual(thread, false);
794 if (e)
795 index = e->vnum;
796 }
797
798 if (index >= 0)
799 menu_set_index(priv->menu, index);
800}
struct Email * find_virtual(struct MuttThread *cur, bool reverse)
Find an email with a Virtual message number.
Definition thread.c:124
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ op_main_change_thread()

static int op_main_change_thread ( struct IndexFunctionData * fdata,
struct EmailArray * ea,
enum CollapseMode mode )
static

Open/close/collapse a working set of threads.

Parameters
fdataIndex function data
eaWorking set of thread roots
modeCollapse mode to apply
Return values
enumFunctionRetval

Definition at line 809 of file functions.c.

811{
812 struct IndexSharedData *shared = fdata->shared;
813 struct IndexPrivateData *priv = fdata->priv;
814 if (!mutt_using_threads())
815 {
816 mutt_warning(_("Threading is not enabled"));
817 return FR_ERROR;
818 }
819
820 if (!ea || ARRAY_EMPTY(ea))
821 return FR_NO_ACTION;
822
823 bool changed = false;
824 bool blocked = false;
825 struct Email **ep = NULL;
826 ARRAY_FOREACH(ep, ea)
827 {
828 struct Email *e = *ep;
829 if (!e)
830 continue;
831
832 switch (mode)
833 {
835 if (!e->collapsed)
836 continue;
838 changed = true;
839 break;
841 if (e->collapsed)
842 continue;
844 {
845 blocked = true;
846 continue;
847 }
849 changed = true;
850 break;
852 if (e->collapsed)
853 {
855 changed = true;
856 }
857 else if (mutt_thread_can_collapse(e))
858 {
860 changed = true;
861 }
862 else
863 {
864 blocked = true;
865 }
866 break;
867 }
868 }
869
870 if (!changed)
871 {
872 if (blocked)
873 {
874 mutt_warning(_("Thread contains unread or flagged messages"));
875 return FR_ERROR;
876 }
877 return FR_NO_ACTION;
878 }
879
880 mutt_set_vnum(shared->mailbox);
881 update_thread_email(priv, shared->email);
883 notify_send(shared->notify, NT_INDEX, NT_INDEX_EMAIL, NULL);
884 return FR_SUCCESS;
885}
#define ARRAY_EMPTY(head)
Check if an array is empty.
Definition array.h:74
@ FR_SUCCESS
Valid function - successfully performed.
Definition dispatcher.h:40
@ FR_ERROR
Valid function - error occurred.
Definition dispatcher.h:39
@ FR_NO_ACTION
Valid function - no action performed.
Definition dispatcher.h:38
#define mutt_warning(...)
Definition logging2.h:92
off_t mutt_set_vnum(struct Mailbox *m)
Set the virtual index number of all the messages in a mailbox.
Definition thread.c:1492
bool mutt_thread_can_collapse(struct Email *e)
Check whether a thread can be collapsed.
Definition thread.c:1905
#define mutt_uncollapse_thread(e)
Definition thread.h:113
#define mutt_collapse_thread(e)
Definition thread.h:112
static void update_thread_email(struct IndexPrivateData *priv, struct Email *email)
Focus a visible email in the current thread.
Definition functions.c:784
@ COLLAPSE_MODE_TOGGLE
Toggle collapsed state.
Definition lib.h:104
@ COLLAPSE_MODE_CLOSE
Collapse all threads.
Definition lib.h:105
@ COLLAPSE_MODE_OPEN
Open all threads.
Definition lib.h:106
void menu_queue_redraw(struct Menu *menu, MenuRedrawFlags redraw)
Queue a request for a redraw.
Definition menu.c:179
@ MENU_REDRAW_INDEX
Redraw the index.
Definition lib.h:61
#define _(a)
Definition message.h:28
bool collapsed
Is this message part of a collapsed thread?
Definition email.h:120
bool changed
Email has been edited.
Definition email.h:77
struct IndexSharedData * shared
Shared Index data.
Definition functions.h:38
struct IndexPrivateData * priv
Private Index data.
Definition functions.h:39
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ op_main_next_new()

static int op_main_next_new ( struct IndexFunctionData * fdata,
const struct KeyEvent * event )
static

Definition at line 2064 of file functions.c.

2065{
2066 struct IndexSharedData *shared = fdata->shared;
2067 struct IndexPrivateData *priv = fdata->priv;
2068
2069 const int saved_current = menu_get_index(priv->menu);
2070 const int op = event->op;
2071 const bool forwards = (op == OP_MAIN_NEXT_NEW) || (op == OP_MAIN_NEXT_UNREAD) ||
2072 (op == OP_MAIN_NEXT_NEW_THEN_UNREAD);
2073 const int count = event->count;
2074
2075 if (count > 0)
2076 {
2077 int cur = saved_current;
2078 int last_good = saved_current;
2079 for (int i = 0; i < count; i++)
2080 {
2081 int next = find_next_new_email(shared->mailbox, cur, forwards, op);
2082 if (next == -1)
2083 break;
2084 last_good = next;
2085 cur = next;
2086 }
2087 if (last_good != saved_current)
2088 menu_set_index(priv->menu, last_good);
2089 return FR_SUCCESS;
2090 }
2091
2092 int index = find_next_new_email(shared->mailbox, saved_current, forwards, op);
2093
2094 if (index == -1)
2095 {
2096 menu_set_index(priv->menu, saved_current);
2097 if ((op == OP_MAIN_NEXT_NEW) || (op == OP_MAIN_PREV_NEW))
2098 {
2100 mutt_error(_("No new messages in this limited view"));
2101 else
2102 mutt_error(_("No new messages"));
2103 }
2104 else
2105 {
2107 mutt_error(_("No unread messages in this limited view"));
2108 else
2109 mutt_error(_("No unread messages"));
2110 }
2112 return FR_ERROR;
2113 }
2114
2115 menu_set_index(priv->menu, index);
2116
2117 index = menu_get_index(priv->menu);
2118 if (forwards)
2119 {
2120 if (saved_current > index)
2121 {
2122 mutt_message(_("Search wrapped to top"));
2123 }
2124 }
2125 else if (saved_current < index)
2126 {
2127 mutt_message(_("Search wrapped to bottom"));
2128 }
2129
2130 return FR_SUCCESS;
2131}
static int find_next_new_email(struct Mailbox *m, int start, bool forwards, int op)
Jump to next new message - Implements index_function_t -.
Definition functions.c:1997
#define mutt_error(...)
Definition logging2.h:94
#define mutt_message(...)
Definition logging2.h:93
bool mview_has_limit(const struct MailboxView *mv)
Is a limit active?
Definition mview.c:397
+ Here is the call graph for this function:

◆ prereq()

static bool prereq ( struct IndexSharedData * shared,
struct Menu * menu,
CheckFlags checks )
static

Check the pre-requisites for a function.

Parameters
sharedIndex shared data
menuCurrent Menu
checksChecks to perform, see CheckFlags
Return values
trueThe checks pass successfully

Definition at line 3876 of file functions.c.

3877{
3878 bool result = true;
3879 struct MailboxView *mv = shared->mailbox_view;
3880
3881 if (checks & (CHECK_MSGCOUNT | CHECK_VISIBLE | CHECK_READONLY))
3882 checks |= CHECK_IN_MAILBOX;
3883
3884 if ((checks & CHECK_IN_MAILBOX) && (!mv || !mv->mailbox))
3885 {
3886 mutt_error(_("No mailbox is open"));
3887 result = false;
3888 }
3889
3890 if (result && (checks & CHECK_MSGCOUNT) && (mv->mailbox->msg_count == 0))
3891 {
3892 mutt_error(_("There are no messages"));
3893 result = false;
3894 }
3895
3896 int index = menu_get_index(menu);
3897 if (result && (checks & CHECK_VISIBLE) &&
3898 ((index < 0) || (index >= mv->mailbox->vcount)))
3899 {
3900 mutt_error(_("No visible messages"));
3901 result = false;
3902 }
3903
3904 if (result && (checks & CHECK_READONLY) && mv->mailbox->readonly)
3905 {
3906 mutt_error(_("Mailbox is read-only"));
3907 result = false;
3908 }
3909
3910 if (result && (checks & CHECK_ATTACH) && shared->attach_msg)
3911 {
3912 mutt_error(_("Function not permitted in attach-message mode"));
3913 result = false;
3914 }
3915
3916 if (!result)
3917 mutt_flushinp();
3918
3919 return result;
3920}
void mutt_flushinp(void)
MacroEvents moved to KeyModuleData UngetKeyEvents moved to KeyModuleData.
Definition get.c:81
@ CHECK_VISIBLE
Is the selected message visible in the index?
Definition lib.h:93
@ CHECK_READONLY
Is the mailbox readonly?
Definition lib.h:94
@ CHECK_MSGCOUNT
Are there any messages?
Definition lib.h:92
@ CHECK_IN_MAILBOX
Is there a mailbox open?
Definition lib.h:91
@ CHECK_ATTACH
Is the user in message-attach mode?
Definition lib.h:95
bool attach_msg
Are we in "attach message" mode?
Definition shared_data.h:46
View of a Mailbox.
Definition mview.h:40
struct Menu * menu
Needed for pattern compilation.
Definition mview.h:47
bool readonly
Don't allow changes to the mailbox.
Definition mailbox.h:118
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ index_get_menu_definition()

struct MenuDefinition * index_get_menu_definition ( void )

Get the Index Menu Definition.

Return values
ptrIndex Menu Definition

Definition at line 4120 of file functions.c.

4121{
4123 ASSERT(mod_data);
4124
4125 return mod_data->menu_index;
4126}
Container for Accounts, Notifications.
Definition neomutt.h:41
+ Here is the call graph for this function:

Variable Documentation

◆ OpIndex

const struct MenuFuncOp OpIndex[]
static

Functions for the Index Menu.

Definition at line 87 of file functions.c.

87 { /* map: index */
88 { "alias-dialog", OP_ALIAS_DIALOG },
89#ifdef USE_AUTOCRYPT
90 { "autocrypt-acct-menu", OP_AUTOCRYPT_ACCT_MENU },
91#endif
92 { "bounce-message", OP_BOUNCE_MESSAGE },
93 { "break-thread", OP_MAIN_BREAK_THREAD },
94 { "catchup", OP_CATCHUP },
95 { "change-folder", OP_MAIN_CHANGE_FOLDER },
96 { "change-folder-readonly", OP_MAIN_CHANGE_FOLDER_READONLY },
97 { "change-newsgroup", OP_MAIN_CHANGE_GROUP },
98 { "change-newsgroup-readonly", OP_MAIN_CHANGE_GROUP_READONLY },
99#ifdef USE_NOTMUCH
100 { "change-vfolder", OP_MAIN_CHANGE_VFOLDER },
101#endif
102 { "check-traditional-pgp", OP_CHECK_TRADITIONAL },
103 { "clear-flag", OP_MAIN_CLEAR_FLAG },
104 { "close-all-threads", OP_MAIN_CLOSE_ALL_THREADS },
105 { "close-thread", OP_MAIN_CLOSE_THREAD },
106 { "collapse-all", OP_MAIN_COLLAPSE_ALL },
107 { "collapse-thread", OP_MAIN_COLLAPSE_THREAD },
108 { "compose-to-sender", OP_COMPOSE_TO_SENDER },
109 { "copy-message", OP_COPY_MESSAGE },
110 { "create-alias", OP_CREATE_ALIAS },
111 { "decode-copy", OP_DECODE_COPY },
112 { "decode-save", OP_DECODE_SAVE },
113 { "decrypt-copy", OP_DECRYPT_COPY },
114 { "decrypt-save", OP_DECRYPT_SAVE },
115 { "delete-message", OP_DELETE },
116 { "delete-pattern", OP_MAIN_DELETE_PATTERN },
117 { "delete-subthread", OP_DELETE_SUBTHREAD },
118 { "delete-thread", OP_DELETE_THREAD },
119 { "display-address", OP_DISPLAY_ADDRESS },
120 { "display-message", OP_DISPLAY_MESSAGE },
121 { "display-toggle-weed", OP_DISPLAY_HEADERS },
122 { "edit", OP_EDIT_RAW_MESSAGE },
123 { "edit-label", OP_EDIT_LABEL },
124 { "edit-or-view-raw-message", OP_EDIT_OR_VIEW_RAW_MESSAGE },
125 { "edit-raw-message", OP_EDIT_RAW_MESSAGE },
126 { "edit-type", OP_ATTACH_EDIT_TYPE },
127#ifdef USE_NOTMUCH
128 { "entire-thread", OP_MAIN_ENTIRE_THREAD },
129#endif
130 { "exit", OP_EXIT },
131 { "extract-keys", OP_EXTRACT_KEYS },
132 { "fetch-mail", OP_MAIN_FETCH_MAIL },
133 { "flag-message", OP_FLAG_MESSAGE },
134 { "followup-message", OP_FOLLOWUP },
135 { "forget-passphrase", OP_FORGET_PASSPHRASE },
136 { "forward-message", OP_FORWARD_MESSAGE },
137 { "forward-to-group", OP_FORWARD_TO_GROUP },
138 { "get-children", OP_GET_CHILDREN },
139 { "get-message", OP_GET_MESSAGE },
140 { "get-parent", OP_GET_PARENT },
141 { "group-chat-reply", OP_GROUP_CHAT_REPLY },
142 { "group-reply", OP_GROUP_REPLY },
143 { "imap-fetch-mail", OP_MAIN_IMAP_FETCH },
144 { "imap-logout-all", OP_MAIN_IMAP_LOGOUT_ALL },
145 { "limit", OP_MAIN_LIMIT },
146 { "limit-current-thread", OP_LIMIT_CURRENT_THREAD },
147 { "link-threads", OP_MAIN_LINK_THREADS },
148 { "list-action", OP_LIST_ACTION },
149 { "list-reply", OP_LIST_REPLY },
150 { "list-subscribe", OP_LIST_SUBSCRIBE },
151 { "list-unsubscribe", OP_LIST_UNSUBSCRIBE },
152 { "mail", OP_MAIL },
153 { "mail-key", OP_MAIL_KEY },
154 { "mailbox-list", OP_MAILBOX_LIST },
155 { "mark-message", OP_MARK_MSG },
156 { "modify-labels", OP_MAIN_MODIFY_TAGS },
157 { "modify-labels-then-hide", OP_MAIN_MODIFY_TAGS_THEN_HIDE },
158 { "modify-tags", OP_MAIN_MODIFY_TAGS },
159 { "modify-tags-then-hide", OP_MAIN_MODIFY_TAGS_THEN_HIDE },
160 { "next-new", OP_MAIN_NEXT_NEW },
161 { "next-new-then-unread", OP_MAIN_NEXT_NEW_THEN_UNREAD },
162 { "next-subthread", OP_MAIN_NEXT_SUBTHREAD },
163 { "next-thread", OP_MAIN_NEXT_THREAD },
164 { "next-undeleted", OP_MAIN_NEXT_UNDELETED },
165 { "next-unread", OP_MAIN_NEXT_UNREAD },
166 { "next-unread-mailbox", OP_MAIN_NEXT_UNREAD_MAILBOX },
167 { "open-all-threads", OP_MAIN_OPEN_ALL_THREADS },
168 { "open-thread", OP_MAIN_OPEN_THREAD },
169 { "parent-message", OP_MAIN_PARENT_MESSAGE },
170 { "pipe-entry", OP_PIPE },
171 { "pipe-message", OP_PIPE },
172 { "post-message", OP_POST },
173 { "previous-new", OP_MAIN_PREV_NEW },
174 { "previous-new-then-unread", OP_MAIN_PREV_NEW_THEN_UNREAD },
175 { "previous-subthread", OP_MAIN_PREV_SUBTHREAD },
176 { "previous-thread", OP_MAIN_PREV_THREAD },
177 { "previous-undeleted", OP_MAIN_PREV_UNDELETED },
178 { "previous-unread", OP_MAIN_PREV_UNREAD },
179 { "previous-unread-mailbox", OP_MAIN_PREV_UNREAD_MAILBOX },
180 { "print-message", OP_PRINT },
181 { "purge-message", OP_PURGE_MESSAGE },
182 { "purge-thread", OP_PURGE_THREAD },
183 { "quasi-delete", OP_MAIN_QUASI_DELETE },
184 { "query", OP_QUERY },
185 { "quit", OP_QUIT },
186 { "read-subthread", OP_MAIN_READ_SUBTHREAD },
187 { "read-thread", OP_MAIN_READ_THREAD },
188 { "recall-message", OP_RECALL_MESSAGE },
189 { "reconstruct-thread", OP_RECONSTRUCT_THREAD },
190 { "reply", OP_REPLY },
191 { "resend-message", OP_RESEND },
192 { "root-message", OP_MAIN_ROOT_MESSAGE },
193 { "save-message", OP_SAVE },
194 { "set-flag", OP_MAIN_SET_FLAG },
195 { "show-limit", OP_MAIN_SHOW_LIMIT },
196 { "sort-mailbox", OP_SORT },
197 { "sort-reverse", OP_SORT_REVERSE },
198 { "sync-mailbox", OP_MAIN_SYNC_FOLDER },
199 { "tag-pattern", OP_MAIN_TAG_PATTERN },
200 { "tag-subthread", OP_TAG_SUBTHREAD },
201 { "tag-thread", OP_TAG_THREAD },
202 { "toggle-new", OP_TOGGLE_NEW },
203 { "toggle-read", OP_TOGGLE_READ },
204 { "toggle-write", OP_TOGGLE_WRITE },
205 { "undelete-message", OP_UNDELETE },
206 { "undelete-pattern", OP_MAIN_UNDELETE_PATTERN },
207 { "undelete-subthread", OP_UNDELETE_SUBTHREAD },
208 { "undelete-thread", OP_UNDELETE_THREAD },
209 { "untag-pattern", OP_MAIN_UNTAG_PATTERN },
210#ifdef USE_NOTMUCH
211 { "vfolder-from-query", OP_MAIN_VFOLDER_FROM_QUERY },
212 { "vfolder-from-query-readonly", OP_MAIN_VFOLDER_FROM_QUERY_READONLY },
213 { "vfolder-window-backward", OP_MAIN_WINDOWED_VFOLDER_BACKWARD },
214 { "vfolder-window-forward", OP_MAIN_WINDOWED_VFOLDER_FORWARD },
215 { "vfolder-window-reset", OP_MAIN_WINDOWED_VFOLDER_RESET },
216#endif
217 { "view-attachments", OP_VIEW_ATTACHMENTS },
218 { "view-raw-message", OP_VIEW_RAW_MESSAGE },
219 // Deprecated
220 { "buffy-list", OP_MAILBOX_LIST, MFF_DEPRECATED },
221 { NULL, 0 },
222};
@ MFF_DEPRECATED
Function is deprecated.
Definition get.h:67

◆ OpList

const struct MenuFuncOp OpList[]
static
Initial value:
= {
{ "exit", OP_EXIT },
{ "list-archive", OP_LIST_ARCHIVE },
{ "list-help", OP_LIST_HELP },
{ "list-owner", OP_LIST_OWNER },
{ "list-post", OP_LIST_POST },
{ "list-subscribe", OP_LIST_SUBSCRIBE },
{ "list-unsubscribe", OP_LIST_UNSUBSCRIBE },
{ NULL, 0 },
}

Functions for the List Dialog.

Definition at line 227 of file functions.c.

227 { /* map: list */
228 { "exit", OP_EXIT },
229 { "list-archive", OP_LIST_ARCHIVE },
230 { "list-help", OP_LIST_HELP },
231 { "list-owner", OP_LIST_OWNER },
232 { "list-post", OP_LIST_POST },
233 { "list-subscribe", OP_LIST_SUBSCRIBE },
234 { "list-unsubscribe", OP_LIST_UNSUBSCRIBE },
235 { NULL, 0 },
236};

◆ IndexDefaultBindings

const struct MenuOpSeq IndexDefaultBindings[]
static

Key bindings for the Index Menu.

Definition at line 241 of file functions.c.

241 { /* map: index */
242 { OP_ATTACH_EDIT_TYPE, "\005" }, // <Ctrl-E>
243#ifdef USE_AUTOCRYPT
244 { OP_AUTOCRYPT_ACCT_MENU, "A" },
245#endif
246 { OP_BOUNCE_MESSAGE, "b" },
247 { OP_CHECK_TRADITIONAL, "\033P" }, // <Alt-P>
248 { OP_COPY_MESSAGE, "C" },
249 { OP_CREATE_ALIAS, "a" },
250 { OP_DECODE_COPY, "\033C" }, // <Alt-C>
251 { OP_DECODE_SAVE, "\033s" }, // <Alt-s>
252 { OP_DELETE, "d" },
253 { OP_DELETE_SUBTHREAD, "\033d" }, // <Alt-d>
254 { OP_DELETE_THREAD, "\004" }, // <Ctrl-D>
255 { OP_DISPLAY_ADDRESS, "@" },
256 { OP_DISPLAY_HEADERS, "h" },
257 { OP_DISPLAY_MESSAGE, " " }, // <Space>
258 { OP_DISPLAY_MESSAGE, "<keypadenter>" },
259 { OP_DISPLAY_MESSAGE, "\n" }, // <Enter>
260 { OP_DISPLAY_MESSAGE, "\r" }, // <Return>
261 { OP_EDIT_LABEL, "Y" },
262 { OP_EDIT_OR_VIEW_RAW_MESSAGE, "e" },
263 { OP_EXIT, "x" },
264 { OP_EXTRACT_KEYS, "\013" }, // <Ctrl-K>
265 { OP_FLAG_MESSAGE, "F" },
266 { OP_FORGET_PASSPHRASE, "\006" }, // <Ctrl-F>
267 { OP_FORWARD_MESSAGE, "f" },
268 { OP_GROUP_REPLY, "g" },
269 { OP_LIST_ACTION, "\033L" }, // <Alt-L>
270 { OP_LIST_REPLY, "L" },
271 { OP_MAIL, "m" },
272 { OP_MAILBOX_LIST, "." },
273 { OP_MAIL_KEY, "\033k" }, // <Alt-k>
274 { OP_MAIN_BREAK_THREAD, "#" },
275 { OP_MAIN_CHANGE_FOLDER, "c" },
276 { OP_MAIN_CHANGE_FOLDER_READONLY, "\033c" }, // <Alt-c>
277 { OP_MAIN_CHANGE_GROUP, "i" },
278 { OP_MAIN_CHANGE_GROUP_READONLY, "\033i" }, // <Alt-i>
279 { OP_MAIN_CLEAR_FLAG, "W" },
280 { OP_MAIN_COLLAPSE_ALL, "\033V" }, // <Alt-V>
281 { OP_MAIN_COLLAPSE_THREAD, "\033v" }, // <Alt-v>
282 { OP_MAIN_DELETE_PATTERN, "D" },
283 { OP_MAIN_FETCH_MAIL, "G" },
284 { OP_MAIN_LIMIT, "l" },
285 { OP_MAIN_LINK_THREADS, "&" },
286 { OP_MAIN_NEXT_NEW_THEN_UNREAD, "\t" }, // <Tab>
287 { OP_MAIN_NEXT_SUBTHREAD, "\033n" }, // <Alt-n>
288 { OP_MAIN_NEXT_THREAD, "\016" }, // <Ctrl-N>
289 { OP_MAIN_NEXT_UNDELETED, "<down>" },
290 { OP_MAIN_NEXT_UNDELETED, "j" },
291 { OP_MAIN_PARENT_MESSAGE, "P" },
292 { OP_MAIN_PREV_NEW_THEN_UNREAD, "\033\t" }, // <Alt-Tab>
293 { OP_MAIN_PREV_SUBTHREAD, "\033p" }, // <Alt-p>
294 { OP_MAIN_PREV_THREAD, "\020" }, // <Ctrl-P>
295 { OP_MAIN_PREV_UNDELETED, "<up>" },
296 { OP_MAIN_PREV_UNDELETED, "k" },
297 { OP_MAIN_READ_SUBTHREAD, "\033r" }, // <Alt-r>
298 { OP_MAIN_READ_THREAD, "\022" }, // <Ctrl-R>
299 { OP_MAIN_SET_FLAG, "w" },
300 { OP_MAIN_SHOW_LIMIT, "\033l" }, // <Alt-l>
301 { OP_MAIN_SYNC_FOLDER, "$" },
302 { OP_MAIN_TAG_PATTERN, "T" },
303 { OP_MAIN_UNDELETE_PATTERN, "U" },
304 { OP_MAIN_UNTAG_PATTERN, "\024" }, // <Ctrl-T>
305 { OP_MARK_MSG, "~" },
306 { OP_NEXT_ENTRY, "J" },
307 { OP_PIPE, "|" },
308 { OP_PREV_ENTRY, "K" },
309 { OP_PRINT, "p" },
310 { OP_QUERY, "Q" },
311 { OP_QUIT, "q" },
312 { OP_RECALL_MESSAGE, "R" },
313 { OP_REPLY, "r" },
314 { OP_RESEND, "\033e" }, // <Alt-e>
315 { OP_SAVE, "s" },
316 { OP_SHOW_LOG_MESSAGES, "M" },
317 { OP_SORT, "o" },
318 { OP_SORT_REVERSE, "O" },
319 { OP_TAG_THREAD, "\033t" }, // <Alt-t>
320 { OP_TOGGLE_NEW, "N" },
321 { OP_TOGGLE_WRITE, "%" },
322 { OP_UNDELETE, "u" },
323 { OP_UNDELETE_SUBTHREAD, "\033u" }, // <Alt-u>
324 { OP_UNDELETE_THREAD, "\025" }, // <Ctrl-U>
325 { OP_VIEW_ATTACHMENTS, "v" },
326 { 0, NULL },
327};

◆ ListDefaultBindings

const struct MenuOpSeq ListDefaultBindings[]
static
Initial value:
= {
{ OP_EXIT, "q" },
{ OP_LIST_ARCHIVE, "a" },
{ OP_LIST_HELP, "h" },
{ OP_LIST_OWNER, "o" },
{ OP_LIST_POST, "p" },
{ OP_LIST_SUBSCRIBE, "s" },
{ OP_LIST_UNSUBSCRIBE, "u" },
{ 0, NULL },
}

Key bindings for the List Dialog.

Definition at line 332 of file functions.c.

332 { /* map: list */
333 { OP_EXIT, "q" },
334 { OP_LIST_ARCHIVE, "a" },
335 { OP_LIST_HELP, "h" },
336 { OP_LIST_OWNER, "o" },
337 { OP_LIST_POST, "p" },
338 { OP_LIST_SUBSCRIBE, "s" },
339 { OP_LIST_UNSUBSCRIBE, "u" },
340 { 0, NULL },
341};

◆ IndexFunctions

const struct IndexFunction IndexFunctions[]
static

All the NeoMutt functions that the Index supports.

Definition at line 3925 of file functions.c.

3925 {
3926 // clang-format off
3927 { OP_ALIAS_DIALOG, op_alias_dialog, CHECK_NONE },
3933 { OP_COPY_MESSAGE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3934 { OP_CREATE_ALIAS, op_create_alias, CHECK_NONE },
3935 { OP_DECODE_COPY, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3936 { OP_DECODE_SAVE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3937 { OP_DECRYPT_COPY, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3938 { OP_DECRYPT_SAVE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3946 { OP_EDIT_OR_VIEW_RAW_MESSAGE, op_edit_raw_message, CHECK_ATTACH | CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3948 { OP_END_COND, op_end_cond, CHECK_NONE },
3949 { OP_EXIT, op_exit, CHECK_NONE },
3953 { OP_FORGET_PASSPHRASE, op_forget_passphrase, CHECK_NONE },
3955 { OP_FORWARD_TO_GROUP, op_post, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3959 { OP_GENERIC_SELECT_ENTRY, op_display_message, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3962 { OP_JUMP, op_jump, CHECK_IN_MAILBOX },
3963 { OP_LIMIT_CURRENT_THREAD, op_main_limit, CHECK_IN_MAILBOX },
3968 { OP_MAIL, op_mail, CHECK_ATTACH },
3969 { OP_MAILBOX_LIST, op_mailbox_list, CHECK_NONE },
3970 { OP_MAIL_KEY, op_mail_key, CHECK_ATTACH },
3972 { OP_MAIN_CHANGE_FOLDER, op_main_change_folder, CHECK_NONE },
3973 { OP_MAIN_CHANGE_FOLDER_READONLY, op_main_change_folder, CHECK_NONE },
3974 { OP_MAIN_CHANGE_GROUP, op_main_change_group, CHECK_NONE },
3975 { OP_MAIN_CHANGE_GROUP_READONLY, op_main_change_group, CHECK_NONE },
3977 { OP_MAIN_CLOSE_ALL_THREADS, op_main_close_all_threads, CHECK_IN_MAILBOX },
3979 { OP_MAIN_COLLAPSE_ALL, op_main_collapse_all, CHECK_IN_MAILBOX },
3980 { OP_MAIN_COLLAPSE_THREAD, op_main_collapse_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3981 { OP_MAIN_DELETE_PATTERN, op_main_delete_pattern, CHECK_ATTACH | CHECK_IN_MAILBOX | CHECK_READONLY },
3982 { OP_MAIN_FETCH_MAIL, op_main_fetch_mail, CHECK_ATTACH },
3983 { OP_MAIN_IMAP_FETCH, op_main_imap_fetch, CHECK_NONE },
3984 { OP_MAIN_IMAP_LOGOUT_ALL, op_main_imap_logout_all, CHECK_NONE },
3985 { OP_MAIN_LIMIT, op_main_limit, CHECK_IN_MAILBOX },
3988 { OP_MAIN_MODIFY_TAGS_THEN_HIDE, op_main_modify_tags, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_READONLY | CHECK_VISIBLE },
3990 { OP_MAIN_NEXT_NEW_THEN_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3991 { OP_MAIN_NEXT_SUBTHREAD, op_main_next_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3994 { OP_MAIN_NEXT_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3995 { OP_MAIN_NEXT_UNREAD_MAILBOX, op_main_next_unread_mailbox, CHECK_IN_MAILBOX },
3996 { OP_MAIN_PREV_UNREAD_MAILBOX, op_main_prev_unread_mailbox, CHECK_IN_MAILBOX },
3997 { OP_MAIN_OPEN_ALL_THREADS, op_main_open_all_threads, CHECK_IN_MAILBOX },
3999 { OP_MAIN_PARENT_MESSAGE, op_main_root_message, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4001 { OP_MAIN_PREV_NEW_THEN_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4002 { OP_MAIN_PREV_SUBTHREAD, op_main_next_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4005 { OP_MAIN_PREV_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4011 { OP_MAIN_SHOW_LIMIT, op_main_show_limit, CHECK_IN_MAILBOX },
4012 { OP_MAIN_SYNC_FOLDER, op_main_sync_folder, CHECK_NONE },
4013 { OP_MAIN_TAG_PATTERN, op_main_tag_pattern, CHECK_IN_MAILBOX },
4014 { OP_MAIN_UNDELETE_PATTERN, op_main_undelete_pattern, CHECK_IN_MAILBOX | CHECK_READONLY },
4015 { OP_MAIN_UNTAG_PATTERN, op_main_untag_pattern, CHECK_IN_MAILBOX },
4019 { OP_POST, op_post, CHECK_ATTACH | CHECK_IN_MAILBOX },
4024 { OP_QUERY, op_query, CHECK_ATTACH },
4025 { OP_QUIT, op_quit, CHECK_NONE },
4026 { OP_RECALL_MESSAGE, op_recall_message, CHECK_ATTACH },
4031 { OP_SEARCH, op_search, CHECK_IN_MAILBOX },
4032 { OP_SEARCH_NEXT, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4033 { OP_SEARCH_OPPOSITE, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4034 { OP_SEARCH_REVERSE, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4035 { OP_SORT, op_sort, CHECK_NONE },
4036 { OP_SORT_REVERSE, op_sort, CHECK_NONE },
4041 { OP_TOGGLE_READ, op_main_limit, CHECK_IN_MAILBOX },
4042 { OP_TOGGLE_WRITE, op_toggle_write, CHECK_IN_MAILBOX },
4048#ifdef USE_AUTOCRYPT
4049 { OP_AUTOCRYPT_ACCT_MENU, op_autocrypt_acct_menu, CHECK_NONE },
4050#endif
4051#ifdef USE_NOTMUCH
4052 { OP_MAIN_CHANGE_VFOLDER, op_main_change_folder, CHECK_NONE },
4054 { OP_MAIN_VFOLDER_FROM_QUERY, op_main_vfolder_from_query, CHECK_NONE },
4055 { OP_MAIN_VFOLDER_FROM_QUERY_READONLY, op_main_vfolder_from_query, CHECK_NONE },
4056 { OP_MAIN_WINDOWED_VFOLDER_BACKWARD, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4057 { OP_MAIN_WINDOWED_VFOLDER_FORWARD, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4058 { OP_MAIN_WINDOWED_VFOLDER_RESET, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4059#endif
4060 { 0, NULL, CHECK_NONE },
4061 // clang-format on
4062};
static int op_main_limit(struct AliasFunctionData *fdata, const struct KeyEvent *event)
show only messages matching a pattern - Implements alias_function_t -
Definition functions.c:411
static int op_query(struct AliasFunctionData *fdata, const struct KeyEvent *event)
query external program for addresses - Implements alias_function_t -
Definition functions.c:469
static int op_create_alias(struct AliasFunctionData *fdata, const struct KeyEvent *event)
create an alias from a message sender - Implements alias_function_t -
Definition functions.c:152
static int op_jump(struct AliasFunctionData *fdata, const struct KeyEvent *event)
Jump to an index number - Implements alias_function_t -.
Definition functions.c:320
static int op_main_untag_pattern(struct AliasFunctionData *fdata, const struct KeyEvent *event)
Untag messages matching a pattern - Implements alias_function_t -.
Definition functions.c:448
static int op_main_tag_pattern(struct AliasFunctionData *fdata, const struct KeyEvent *event)
Tag messages matching a pattern - Implements alias_function_t -.
Definition functions.c:431
static int op_exit(struct AliasFunctionData *fdata, const struct KeyEvent *event)
exit this menu - Implements alias_function_t -
Definition functions.c:312
static int op_mail(struct AliasFunctionData *fdata, const struct KeyEvent *event)
mail the selected entries - Implements alias_function_t -
Definition functions.c:403
static int op_delete(struct AliasFunctionData *fdata, const struct KeyEvent *event)
delete the current entry - Implements alias_function_t -
Definition functions.c:274
static int op_search(struct AliasFunctionData *fdata, const struct KeyEvent *event)
search for a regular expression - Implements alias_function_t -
Definition functions.c:523
static int op_sort(struct AliasFunctionData *fdata, const struct KeyEvent *event)
sort aliases - Implements alias_function_t -
Definition functions.c:561
static int op_list_unsubscribe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
unsubscribe from a mailing list - Implements attach_function_t -
Definition functions.c:681
static int op_attach_edit_type(struct AttachFunctionData *fdata, const struct KeyEvent *event)
edit attachment content type - Implements attach_function_t -
Definition functions.c:393
static int op_resend(struct AttachFunctionData *fdata, const struct KeyEvent *event)
use the current message as a template for a new one - Implements attach_function_t -
Definition functions.c:725
static int op_forward_message(struct AttachFunctionData *fdata, const struct KeyEvent *event)
forward a message with comments - Implements attach_function_t -
Definition functions.c:653
static int op_compose_to_sender(struct AttachFunctionData *fdata, const struct KeyEvent *event)
compose new message to the current message sender - Implements attach_function_t -
Definition functions.c:588
static int op_list_subscribe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
subscribe to a mailing list - Implements attach_function_t -
Definition functions.c:669
static int op_check_traditional(struct AttachFunctionData *fdata, const struct KeyEvent *event)
check for classic PGP - Implements attach_function_t -
Definition functions.c:571
static int op_extract_keys(struct AttachFunctionData *fdata, const struct KeyEvent *event)
extract supported public keys - Implements attach_function_t -
Definition functions.c:626
static int op_reply(struct AttachFunctionData *fdata, const struct KeyEvent *event)
reply to a message - Implements attach_function_t -
Definition functions.c:699
static int op_bounce_message(struct AttachFunctionData *fdata, const struct KeyEvent *event)
remail a message to another user - Implements attach_function_t -
Definition functions.c:555
static int op_forget_passphrase(struct AttachFunctionData *fdata, const struct KeyEvent *event)
wipe passphrases from memory - Implements attach_function_t -
Definition functions.c:644
static int op_mailbox_list(struct BrowserPrivateData *priv, const struct KeyEvent *event)
List mailboxes with new mail - Implements browser_function_t -.
Definition functions.c:1132
static int op_catchup(struct BrowserPrivateData *priv, const struct KeyEvent *event)
Mark all articles in newsgroup as read - Implements browser_function_t -.
Definition functions.c:470
static int op_quit(struct HistoryData *hd, const struct KeyEvent *event)
Quit this menu - Implements history_function_t -.
Definition functions.c:61
static int op_edit_label(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Add, change, or delete a message's label - Implements index_function_t -.
Definition functions.c:1046
static int op_display_address(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Display full address of sender - Implements index_function_t -.
Definition functions.c:952
static int op_next_entry(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the next entry - Implements index_function_t -.
Definition functions.c:2707
static int op_main_undelete_pattern(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete messages matching a pattern - Implements index_function_t -.
Definition functions.c:2614
static int op_main_link_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Link tagged message to the current one - Implements index_function_t -.
Definition functions.c:1789
static int op_get_children(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Get all children of the current message - Implements index_function_t -.
Definition functions.c:3373
static int op_main_prev_undeleted(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the previous undeleted message - Implements index_function_t -.
Definition functions.c:2293
static int op_main_imap_fetch(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Force retrieval of mail from IMAP server - Implements index_function_t -.
Definition functions.c:3305
static int op_display_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Display a message - Implements index_function_t -.
Definition functions.c:970
static int op_list_reply(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Reply to specified mailing list - Implements index_function_t -.
Definition functions.c:1364
static int op_main_vfolder_from_query(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Generate virtual folder from query - Implements index_function_t -.
Definition functions.c:3766
static int op_save(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Make decrypted copy - Implements index_function_t -.
Definition functions.c:2936
static int op_main_next_unread_mailbox(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open next mailbox with unread mail - Implements index_function_t -.
Definition functions.c:2243
static int op_list_action(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show mailing-list actions - Implements index_function_t -.
Definition functions.c:1351
static int op_mail_key(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Mail a PGP public key - Implements index_function_t -.
Definition functions.c:1430
static int op_alias_dialog(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open the aliases dialog - Implements index_function_t -.
Definition functions.c:642
static int op_main_show_limit(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show currently active limit pattern - Implements index_function_t -.
Definition functions.c:2495
static int op_recall_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Recall a postponed message - Implements index_function_t -.
Definition functions.c:2860
static int op_main_sync_folder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Save changes to mailbox - Implements index_function_t -.
Definition functions.c:2517
static int op_main_windowed_vfolder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Shifts virtual folder time window - Implements index_function_t -.
Definition functions.c:3815
static int op_tag_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Tag the current thread - Implements index_function_t -.
Definition functions.c:3092
static int op_edit_raw_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Edit the raw message (edit and edit-raw-message are synonyms) - Implements index_function_t -.
Definition functions.c:1090
static int op_post(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Followup to newsgroup - Implements index_function_t -.
Definition functions.c:3639
static int op_get_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Get parent of the current message - Implements index_function_t -.
Definition functions.c:3477
static int op_delete_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Delete all messages in thread - Implements index_function_t -.
Definition functions.c:895
static int op_pipe(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Pipe message/attachment to a shell command - Implements index_function_t -.
Definition functions.c:2731
static int op_main_break_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Break the thread in two - Implements index_function_t -.
Definition functions.c:1445
static int op_group_reply(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Reply to all recipients - Implements index_function_t -.
Definition functions.c:1265
static int op_toggle_new(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Toggle a message's 'new' flag - Implements index_function_t -.
Definition functions.c:3116
static int op_main_imap_logout_all(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Logout from all IMAP servers - Implements index_function_t -.
Definition functions.c:3318
static int op_main_close_all_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse all threads - Implements index_function_t -.
Definition functions.c:1599
static int op_main_open_all_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open all threads - Implements index_function_t -.
Definition functions.c:1652
static int op_end_cond(struct IndexFunctionData *fdata, const struct KeyEvent *event)
End of conditional execution (noop) - Implements index_function_t -.
Definition functions.c:1137
static int op_print(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Print the current entry - Implements index_function_t -.
Definition functions.c:2778
static int op_view_attachments(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show MIME attachments - Implements index_function_t -.
Definition functions.c:3265
static int op_toggle_write(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Toggle whether the mailbox will be rewritten - Implements index_function_t -.
Definition functions.c:3162
static int op_main_change_folder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open a different folder - Implements index_function_t -.
Definition functions.c:1515
static int op_main_fetch_mail(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Retrieve mail from POP server - Implements index_function_t -.
Definition functions.c:3859
static int op_main_prev_unread_mailbox(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open previous mailbox with unread mail - Implements index_function_t -.
Definition functions.c:2268
static int op_main_collapse_all(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse/uncollapse all threads - Implements index_function_t -.
Definition functions.c:1581
static int op_main_next_undeleted(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the next undeleted message - Implements index_function_t -.
Definition functions.c:2185
static int op_autocrypt_acct_menu(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Manage autocrypt accounts - Implements index_function_t -.
Definition functions.c:3295
static int op_tag(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Tag the current entry - Implements index_function_t -.
Definition functions.c:3046
static int op_main_open_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open current thread - Implements index_function_t -.
Definition functions.c:1675
static int op_undelete(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete the current entry - Implements index_function_t -.
Definition functions.c:3172
static int op_main_collapse_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse/uncollapse current thread - Implements index_function_t -.
Definition functions.c:1637
static int op_main_next_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Jump to the next thread - Implements index_function_t -.
Definition functions.c:2142
static int op_main_delete_pattern(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Delete messages matching a pattern - Implements index_function_t -.
Definition functions.c:1690
static int op_main_entire_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Read entire thread of the current message - Implements index_function_t -.
Definition functions.c:3683
static int op_mark_msg(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Create a hotkey macro for the current message - Implements index_function_t -.
Definition functions.c:2651
static int op_main_quasi_delete(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Delete from NeoMutt, don't touch on disk - Implements index_function_t -.
Definition functions.c:2351
static int op_undelete_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete all messages in thread - Implements index_function_t -.
Definition functions.c:3215
static int op_main_set_flag(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Set a status flag on a message - Implements index_function_t -.
Definition functions.c:2460
static int op_main_root_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Jump to root message in thread - Implements index_function_t -.
Definition functions.c:2441
static int op_main_read_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Mark the current thread as read - Implements index_function_t -.
Definition functions.c:2387
static int op_main_change_group(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open a different newsgroup - Implements index_function_t -.
Definition functions.c:3559
static int op_main_close_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse current thread - Implements index_function_t -.
Definition functions.c:1622
static int op_prev_entry(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the previous entry - Implements index_function_t -.
Definition functions.c:2754
static int op_flag_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Toggle a message's 'important' flag - Implements index_function_t -.
Definition functions.c:1185
static int op_main_modify_tags(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Modify (notmuch/imap) tags - Implements index_function_t -.
Definition functions.c:1859
static int op_main_next_new(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Definition functions.c:2064
@ CHECK_NONE
No flags are set.
Definition lib.h:90