NeoMutt  2025-12-11-980-ge38c27
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 "mlist/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.
 
struct SubMenuindex_get_submenu (void)
 Get the Index SubMenu.
 
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_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 MenuOpSeq IndexDefaultBindings []
 Key bindings for the Index Menu.
 
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 316 of file functions.c.

317{
322};
@ RESOLVE_NEXT_SUBTHREAD
Next sibling sub-thread.
Definition functions.c:321
@ RESOLVE_NEXT_UNDELETED
Next undeleted email.
Definition functions.c:319
@ RESOLVE_NEXT_EMAIL
Next email, whatever its state.
Definition functions.c:318
@ RESOLVE_NEXT_THREAD
Next top-level thread.
Definition functions.c:320

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 327 of file functions.c.

328{
329 struct MenuDefinition *md = NULL;
330 struct SubMenu *sm_index = NULL;
331 struct SubMenu *sm_sidebar = sidebar_get_submenu();
332
333 sm_index = km_register_submenu(OpIndex);
334 md = km_register_menu(MENU_INDEX, "index");
335 km_menu_add_submenu(md, sm_index);
336 km_menu_add_submenu(md, sm_sidebar);
337 km_menu_add_submenu(md, sm_generic);
339
341 ASSERT(mod_data);
342 mod_data->md_index = md;
343 mod_data->sm_index = sm_index;
344}
struct SubMenu * sidebar_get_submenu(void)
Get the Sidebar SubMenu.
static const struct MenuFuncOp OpIndex[]
Functions for the Index Menu.
Definition functions.c:88
static const struct MenuOpSeq IndexDefaultBindings[]
Key bindings for the Index Menu.
Definition functions.c:225
void km_menu_add_submenu(struct MenuDefinition *md, struct SubMenu *sm)
Add a SubMenu to a Menu Definition.
Definition init.c:123
struct SubMenu * km_register_submenu(const struct MenuFuncOp functions[])
Register a submenu.
Definition init.c:88
struct MenuDefinition * km_register_menu(int menu, const char *name)
Register a menu.
Definition init.c:105
void km_menu_add_bindings(struct MenuDefinition *md, const struct MenuOpSeq bindings[])
Add Keybindings to a Menu.
Definition init.c:136
@ MODULE_ID_INDEX
ModuleIndex, Index
Definition module_api.h:73
void * neomutt_get_module_data(struct NeoMutt *n, enum ModuleId id)
Get the private data for a Module.
Definition neomutt.c:666
#define ASSERT(COND)
Definition signal2.h:59
Index private Module data.
Definition module_data.h:32
struct MenuDefinition * md_index
Index Menu Definition.
Definition module_data.h:34
struct SubMenu * sm_index
Index functions.
Definition module_data.h:35
Functions for a Dialog or Window.
Definition menudef.h:44
Collection of related functions.
Definition menudef.h:33
@ MENU_INDEX
Index panel (list of emails)
Definition type.h:45
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ index_get_submenu()

struct SubMenu * index_get_submenu ( void )

Get the Index SubMenu.

Return values
ptrIndex SubMenu

Definition at line 350 of file functions.c.

351{
353 ASSERT(mod_data);
354
355 return mod_data->sm_index;
356}
Container for Accounts, Notifications.
Definition neomutt.h:41
+ 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 366 of file functions.c.

368{
369 if (!priv || !priv->menu || !shared || !shared->mailbox || !shared->email)
370 return false;
371
372 const bool c_resolve = cs_subset_bool(shared->sub, "resolve");
373 if (!c_resolve)
374 return false;
375
376 count = MAX(count, 1);
377 int index = menu_get_index(priv->menu);
378
379 switch (rm)
380 {
382 index = index + count;
383 break;
384
386 {
387 const bool uncollapse = mutt_using_threads() && !window_is_focused(priv->win_index);
388 for (int i = 0; i < count; i++)
389 {
390 int next = find_next_undeleted(shared->mailbox_view, index, uncollapse);
391 if (next < 0)
392 break;
393 index = next;
394 }
395 break;
396 }
397
399 for (int i = 0; i < count; i++)
400 {
401 struct Email *e = mutt_get_virt_email(shared->mailbox, index);
402 if (!e)
403 break;
404 int next = mutt_next_thread(e);
405 if (next < 0)
406 break;
407 index = next;
408 }
409 break;
410
412 for (int i = 0; i < count; i++)
413 {
414 struct Email *e = mutt_get_virt_email(shared->mailbox, index);
415 if (!e)
416 break;
417 int next = mutt_next_subthread(e);
418 if (next < 0)
419 break;
420 index = next;
421 }
422 break;
423 }
424
425 if (index < 0)
426 index = 0;
427 if (index >= shared->mailbox->vcount)
428 index = shared->mailbox->vcount - 1;
429
430 menu_set_index(priv->menu, index);
431 return true;
432}
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:153
MenuRedrawFlags menu_set_index(struct Menu *menu, int index)
Set the current selection in the Menu.
Definition menu.c:167
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:378
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 439 of file functions.c.

440{
441 struct MuttWindow *dlg = dialog_find(win_index);
442 if (!dlg)
443 return false;
444
445 struct Menu *menu = win_index->wdata;
446 struct IndexSharedData *shared = dlg->wdata;
447 if (!shared)
448 return false;
449
450 struct IndexPrivateData *priv = win_index->parent->wdata;
451 const bool uncollapse = mutt_using_threads() && !window_is_focused(priv->win_index);
452
453 int index = find_next_undeleted(shared->mailbox_view, menu_get_index(menu), uncollapse);
454 if ((index < 0) || (index >= shared->mailbox->vcount))
455 {
456 // Selection failed
458 return false;
459 }
460
461 menu_set_index(menu, index);
462 return true;
463}
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:80
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 475 of file functions.c.

477{
478 if (!ea)
479 return -1;
480
481 if (use_tagged)
482 return ea_add_tagged(ea, mv, e, true);
483
484 if (!mv || !mv->mailbox || !e)
485 return -1;
486
487 const int index = e->vnum;
488 if ((index < 0) || (index >= mv->mailbox->vcount))
489 return -1;
490
491 int n = (count > 1) ? count : 1;
492 if ((index + n) > mv->mailbox->vcount)
493 n = mv->mailbox->vcount - index;
494
495 for (int i = 0; i < n; i++)
496 {
497 struct Email *sel = mutt_get_virt_email(mv->mailbox, index + i);
498 if (sel)
499 ea_add_tagged(ea, mv, sel, false);
500 }
501
502 return ARRAY_SIZE(ea);
503}
#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 511 of file functions.c.

512{
513 if (!e || !e->thread)
514 return NULL;
515
516 struct MuttThread *thread = e->thread;
517 if (!subthread)
518 {
519 while (thread->parent)
520 thread = thread->parent;
521 }
522
523 return thread;
524}
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 533 of file functions.c.

534{
535 if (!ea || !e)
536 return false;
537
538 struct MuttThread *target = thread_target(e, subthread);
539 if (!target)
540 return false;
541
542 struct Email **ep = NULL;
543 ARRAY_FOREACH(ep, ea)
544 {
545 if (thread_target(*ep, subthread) == target)
546 return true;
547 }
548
549 return false;
550}
#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:511
+ 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 563 of file functions.c.

566{
567 if (!ea)
568 return -1;
569
570 if (!use_tagged)
571 {
572 if (!mv || !mv->mailbox || !e)
573 return -1;
574
575 const int index = e->vnum;
576 if ((index < 0) || (index >= mv->mailbox->vcount))
577 return -1;
578
579 const int n = (count > 1) ? count : 1;
580 for (int i = index; (i < mv->mailbox->vcount) && (ARRAY_SIZE(ea) < n); i++)
581 {
582 struct Email *sel = mutt_get_virt_email(mv->mailbox, i);
583 if (!sel || ea_contains_thread_target(ea, sel, subthread))
584 continue;
585
586 ARRAY_ADD(ea, sel);
587 }
588 return ARRAY_SIZE(ea);
589 }
590
591 if (!mv || !mv->mailbox || !mv->mailbox->emails)
592 return -1;
593
594 struct Mailbox *m = mv->mailbox;
595 for (int i = 0; i < m->msg_count; i++)
596 {
597 struct Email *et = m->emails[i];
598 if (!et)
599 break;
600 if (!message_is_tagged(et))
601 continue;
602
603 if (!ea_contains_thread_target(ea, et, subthread))
604 ARRAY_ADD(ea, et);
605 }
606
607 return ARRAY_SIZE(ea);
608}
#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:533
bool message_is_tagged(struct Email *e)
Is a message in the index tagged (and within limit)
Definition mview.c:363
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 757 of file functions.c.

758{
759 if (!priv || !priv->menu || !email)
760 return;
761
762 int index = email->vnum;
763 if (index < 0)
764 {
765 struct MuttThread *thread = thread_target(email, false);
766 struct Email *e = find_virtual(thread, false);
767 if (e)
768 index = e->vnum;
769 }
770
771 if (index >= 0)
772 menu_set_index(priv->menu, index);
773}
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 782 of file functions.c.

784{
785 struct IndexSharedData *shared = fdata->shared;
786 struct IndexPrivateData *priv = fdata->priv;
787 if (!mutt_using_threads())
788 {
789 mutt_warning(_("Threading is not enabled"));
790 return FR_ERROR;
791 }
792
793 if (!ea || ARRAY_EMPTY(ea))
794 return FR_NO_ACTION;
795
796 bool changed = false;
797 bool blocked = false;
798 struct Email **ep = NULL;
799 ARRAY_FOREACH(ep, ea)
800 {
801 struct Email *e = *ep;
802 if (!e)
803 continue;
804
805 switch (mode)
806 {
808 if (!e->collapsed)
809 continue;
811 changed = true;
812 break;
814 if (e->collapsed)
815 continue;
817 {
818 blocked = true;
819 continue;
820 }
822 changed = true;
823 break;
825 if (e->collapsed)
826 {
828 changed = true;
829 }
830 else if (mutt_thread_can_collapse(e))
831 {
833 changed = true;
834 }
835 else
836 {
837 blocked = true;
838 }
839 break;
840 }
841 }
842
843 if (!changed)
844 {
845 if (blocked)
846 {
847 mutt_warning(_("Thread contains unread or flagged messages"));
848 return FR_ERROR;
849 }
850 return FR_NO_ACTION;
851 }
852
853 mutt_set_vnum(shared->mailbox);
854 update_thread_email(priv, shared->email);
856 notify_send(shared->notify, NT_INDEX, NT_INDEX_EMAIL, NULL);
857 return FR_SUCCESS;
858}
#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:1515
bool mutt_thread_can_collapse(struct Email *e)
Check whether a thread can be collapsed.
Definition thread.c:1940
#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:757
@ COLLAPSE_MODE_TOGGLE
Toggle collapsed state.
Definition lib.h:103
@ COLLAPSE_MODE_CLOSE
Collapse all threads.
Definition lib.h:104
@ COLLAPSE_MODE_OPEN
Open all threads.
Definition lib.h:105
void menu_queue_redraw(struct Menu *menu, MenuRedrawFlags redraw)
Queue a request for a redraw.
Definition menu.c:177
@ 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 2035 of file functions.c.

2036{
2037 struct IndexSharedData *shared = fdata->shared;
2038 struct IndexPrivateData *priv = fdata->priv;
2039
2040 const int saved_current = menu_get_index(priv->menu);
2041 const int op = event->op;
2042 const bool forwards = (op == OP_MAIN_NEXT_NEW) || (op == OP_MAIN_NEXT_UNREAD) ||
2043 (op == OP_MAIN_NEXT_NEW_THEN_UNREAD);
2044 const int count = event->count;
2045
2046 if (count > 0)
2047 {
2048 int cur = saved_current;
2049 int last_good = saved_current;
2050 for (int i = 0; i < count; i++)
2051 {
2052 int next = find_next_new_email(shared->mailbox, cur, forwards, op);
2053 if (next == -1)
2054 break;
2055 last_good = next;
2056 cur = next;
2057 }
2058 if (last_good != saved_current)
2059 menu_set_index(priv->menu, last_good);
2060 return FR_SUCCESS;
2061 }
2062
2063 int index = find_next_new_email(shared->mailbox, saved_current, forwards, op);
2064
2065 if (index == -1)
2066 {
2067 menu_set_index(priv->menu, saved_current);
2068 if ((op == OP_MAIN_NEXT_NEW) || (op == OP_MAIN_PREV_NEW))
2069 {
2071 mutt_error(_("No new messages in this limited view"));
2072 else
2073 mutt_error(_("No new messages"));
2074 }
2075 else
2076 {
2078 mutt_error(_("No unread messages in this limited view"));
2079 else
2080 mutt_error(_("No unread messages"));
2081 }
2083 return FR_ERROR;
2084 }
2085
2086 menu_set_index(priv->menu, index);
2087
2088 index = menu_get_index(priv->menu);
2089 if (forwards)
2090 {
2091 if (saved_current > index)
2092 {
2093 mutt_message(_("Search wrapped to top"));
2094 }
2095 }
2096 else if (saved_current < index)
2097 {
2098 mutt_message(_("Search wrapped to bottom"));
2099 }
2100
2101 return FR_SUCCESS;
2102}
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:1968
#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:399
+ 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 3846 of file functions.c.

3847{
3848 bool result = true;
3849 struct MailboxView *mv = shared->mailbox_view;
3850
3851 if (checks & (CHECK_MSGCOUNT | CHECK_VISIBLE | CHECK_READONLY))
3852 checks |= CHECK_IN_MAILBOX;
3853
3854 if ((checks & CHECK_IN_MAILBOX) && (!mv || !mv->mailbox))
3855 {
3856 mutt_error(_("No mailbox is open"));
3857 result = false;
3858 }
3859
3860 if (result && (checks & CHECK_MSGCOUNT) && (mv->mailbox->msg_count == 0))
3861 {
3862 mutt_error(_("There are no messages"));
3863 result = false;
3864 }
3865
3866 int index = menu_get_index(menu);
3867 if (result && (checks & CHECK_VISIBLE) &&
3868 ((index < 0) || (index >= mv->mailbox->vcount)))
3869 {
3870 mutt_error(_("No visible messages"));
3871 result = false;
3872 }
3873
3874 if (result && (checks & CHECK_READONLY) && mv->mailbox->readonly)
3875 {
3876 mutt_error(_("Mailbox is read-only"));
3877 result = false;
3878 }
3879
3880 if (result && (checks & CHECK_ATTACH) && shared->attach_msg)
3881 {
3882 mutt_error(_("Function not permitted in attach-message mode"));
3883 result = false;
3884 }
3885
3886 if (!result)
3887 mutt_flushinp();
3888
3889 return result;
3890}
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:92
@ CHECK_READONLY
Is the mailbox readonly?
Definition lib.h:93
@ CHECK_MSGCOUNT
Are there any messages?
Definition lib.h:91
@ CHECK_IN_MAILBOX
Is there a mailbox open?
Definition lib.h:90
@ CHECK_ATTACH
Is the user in message-attach mode?
Definition lib.h:94
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 4089 of file functions.c.

4090{
4092 ASSERT(mod_data);
4093
4094 return mod_data->md_index;
4095}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ OpIndex

const struct MenuFuncOp OpIndex[]
static

Functions for the Index Menu.

Definition at line 88 of file functions.c.

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

◆ IndexDefaultBindings

const struct MenuOpSeq IndexDefaultBindings[]
static

Key bindings for the Index Menu.

Definition at line 225 of file functions.c.

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

◆ IndexFunctions

const struct IndexFunction IndexFunctions[]
static

All the NeoMutt functions that the Index supports.

Definition at line 3895 of file functions.c.

3895 {
3896 // clang-format off
3897 { OP_ALIAS_DIALOG, op_alias_dialog, CHECK_NONE },
3903 { OP_COPY_MESSAGE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3904 { OP_CREATE_ALIAS, op_create_alias, CHECK_NONE },
3905 { OP_DECODE_COPY, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3906 { OP_DECODE_SAVE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3907 { OP_DECRYPT_COPY, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3908 { OP_DECRYPT_SAVE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3916 { OP_EDIT_OR_VIEW_RAW_MESSAGE, op_edit_raw_message, CHECK_ATTACH | CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3918 { OP_END_COND, op_end_cond, CHECK_NONE },
3919 { OP_EXIT, op_exit, CHECK_NONE },
3924 { OP_FORWARD_TO_GROUP, op_post, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3926 { OP_GET_MESSAGE, op_get_message, CHECK_ATTACH | CHECK_IN_MAILBOX },
3928 { OP_GENERIC_SELECT_ENTRY, op_display_message, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3931 { OP_JUMP, op_jump, CHECK_IN_MAILBOX },
3932 { OP_LIMIT_CURRENT_THREAD, op_main_limit, CHECK_IN_MAILBOX },
3937 { OP_MAIL, op_mail, CHECK_ATTACH },
3938 { OP_MAILBOX_LIST, op_mailbox_list, CHECK_NONE },
3939 { OP_MAIL_KEY, op_mail_key, CHECK_ATTACH },
3941 { OP_MAIN_CHANGE_FOLDER, op_main_change_folder, CHECK_NONE },
3942 { OP_MAIN_CHANGE_FOLDER_READONLY, op_main_change_folder, CHECK_NONE },
3943 { OP_MAIN_CHANGE_GROUP, op_main_change_group, CHECK_NONE },
3944 { OP_MAIN_CHANGE_GROUP_READONLY, op_main_change_group, CHECK_NONE },
3946 { OP_MAIN_CLOSE_ALL_THREADS, op_main_close_all_threads, CHECK_IN_MAILBOX },
3948 { OP_MAIN_COLLAPSE_ALL, op_main_collapse_all, CHECK_IN_MAILBOX },
3949 { OP_MAIN_COLLAPSE_THREAD, op_main_collapse_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3950 { OP_MAIN_DELETE_PATTERN, op_main_delete_pattern, CHECK_ATTACH | CHECK_IN_MAILBOX | CHECK_READONLY },
3951 { OP_MAIN_FETCH_MAIL, op_main_fetch_mail, CHECK_ATTACH },
3952 { OP_MAIN_IMAP_FETCH, op_main_imap_fetch, CHECK_NONE },
3953 { OP_MAIN_IMAP_LOGOUT_ALL, op_main_imap_logout_all, CHECK_NONE },
3954 { OP_MAIN_LIMIT, op_main_limit, CHECK_IN_MAILBOX },
3957 { OP_MAIN_MODIFY_TAGS_THEN_HIDE, op_main_modify_tags, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_READONLY | CHECK_VISIBLE },
3959 { OP_MAIN_NEXT_NEW_THEN_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3960 { OP_MAIN_NEXT_SUBTHREAD, op_main_next_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3963 { OP_MAIN_NEXT_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3964 { OP_MAIN_NEXT_UNREAD_MAILBOX, op_main_next_unread_mailbox, CHECK_IN_MAILBOX },
3965 { OP_MAIN_PREV_UNREAD_MAILBOX, op_main_prev_unread_mailbox, CHECK_IN_MAILBOX },
3966 { OP_MAIN_OPEN_ALL_THREADS, op_main_open_all_threads, CHECK_IN_MAILBOX },
3968 { OP_MAIN_PARENT_MESSAGE, op_main_root_message, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3970 { OP_MAIN_PREV_NEW_THEN_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3971 { OP_MAIN_PREV_SUBTHREAD, op_main_next_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3974 { OP_MAIN_PREV_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3980 { OP_MAIN_SHOW_LIMIT, op_main_show_limit, CHECK_IN_MAILBOX },
3981 { OP_MAIN_SYNC_FOLDER, op_main_sync_folder, CHECK_NONE },
3982 { OP_MAIN_TAG_PATTERN, op_main_tag_pattern, CHECK_IN_MAILBOX },
3983 { OP_MAIN_UNDELETE_PATTERN, op_main_undelete_pattern, CHECK_IN_MAILBOX | CHECK_READONLY },
3984 { OP_MAIN_UNTAG_PATTERN, op_main_untag_pattern, CHECK_IN_MAILBOX },
3988 { OP_POST, op_post, CHECK_ATTACH | CHECK_IN_MAILBOX },
3993 { OP_QUERY, op_query, CHECK_ATTACH },
3994 { OP_QUIT, op_quit, CHECK_NONE },
3995 { OP_RECALL_MESSAGE, op_recall_message, CHECK_ATTACH },
4000 { OP_SEARCH, op_search, CHECK_IN_MAILBOX },
4001 { OP_SEARCH_NEXT, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4002 { OP_SEARCH_OPPOSITE, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4003 { OP_SEARCH_REVERSE, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4004 { OP_SORT, op_sort, CHECK_NONE },
4005 { OP_SORT_REVERSE, op_sort, CHECK_NONE },
4010 { OP_TOGGLE_READ, op_main_limit, CHECK_IN_MAILBOX },
4011 { OP_TOGGLE_WRITE, op_toggle_write, CHECK_IN_MAILBOX },
4017#ifdef USE_AUTOCRYPT
4018 { OP_AUTOCRYPT_ACCT_MENU, op_autocrypt_acct_menu, CHECK_NONE },
4019#endif
4020#ifdef USE_NOTMUCH
4021 { OP_MAIN_CHANGE_VFOLDER, op_main_change_folder, CHECK_NONE },
4023 { OP_MAIN_VFOLDER_FROM_QUERY, op_main_vfolder_from_query, CHECK_NONE },
4024 { OP_MAIN_VFOLDER_FROM_QUERY_READONLY, op_main_vfolder_from_query, CHECK_NONE },
4025 { OP_MAIN_WINDOWED_VFOLDER_BACKWARD, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4026 { OP_MAIN_WINDOWED_VFOLDER_FORWARD, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4027 { OP_MAIN_WINDOWED_VFOLDER_RESET, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4028#endif
4029 { 0, NULL, CHECK_NONE },
4030 // clang-format on
4031};
static int op_quit(struct AliasFunctionData *fdata, const struct KeyEvent *event)
Save changes and exit this dialog - Implements alias_function_t -.
Definition functions.c:308
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:407
static int op_query(struct AliasFunctionData *fdata, const struct KeyEvent *event)
query external program for addresses - Implements alias_function_t -
Definition functions.c:465
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:148
static int op_jump(struct AliasFunctionData *fdata, const struct KeyEvent *event)
Jump to an index number - Implements alias_function_t -.
Definition functions.c:316
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:444
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:427
static int op_mail(struct AliasFunctionData *fdata, const struct KeyEvent *event)
mail the selected entries - Implements alias_function_t -
Definition functions.c:399
static int op_delete(struct AliasFunctionData *fdata, const struct KeyEvent *event)
delete the current entry - Implements alias_function_t -
Definition functions.c:270
static int op_search(struct AliasFunctionData *fdata, const struct KeyEvent *event)
search for a regular expression - Implements alias_function_t -
Definition functions.c:519
static int op_sort(struct AliasFunctionData *fdata, const struct KeyEvent *event)
sort aliases - Implements alias_function_t -
Definition functions.c:557
static int op_list_unsubscribe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
unsubscribe from a mailing list - Implements attach_function_t -
Definition functions.c:670
static int op_attach_edit_type(struct AttachFunctionData *fdata, const struct KeyEvent *event)
edit attachment content type - Implements attach_function_t -
Definition functions.c:391
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:714
static int op_forward_message(struct AttachFunctionData *fdata, const struct KeyEvent *event)
forward a message with comments - Implements attach_function_t -
Definition functions.c:642
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:586
static int op_list_subscribe(struct AttachFunctionData *fdata, const struct KeyEvent *event)
subscribe to a mailing list - Implements attach_function_t -
Definition functions.c:658
static int op_check_traditional(struct AttachFunctionData *fdata, const struct KeyEvent *event)
check for classic PGP - Implements attach_function_t -
Definition functions.c:569
static int op_extract_keys(struct AttachFunctionData *fdata, const struct KeyEvent *event)
extract supported public keys - Implements attach_function_t -
Definition functions.c:624
static int op_reply(struct AttachFunctionData *fdata, const struct KeyEvent *event)
reply to a message - Implements attach_function_t -
Definition functions.c:688
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:553
static int op_mailbox_list(struct BrowserPrivateData *priv, const struct KeyEvent *event)
List mailboxes with new mail - Implements browser_function_t -.
Definition functions.c:1130
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:468
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:1026
static int op_display_address(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Display full address of sender - Implements index_function_t -.
Definition functions.c:925
static int op_next_entry(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the next entry - Implements index_function_t -.
Definition functions.c:2678
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:2585
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:1760
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:3344
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:2264
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:3276
static int op_display_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Display a message - Implements index_function_t -.
Definition functions.c:943
static int op_list_reply(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Reply to specified mailing list - Implements index_function_t -.
Definition functions.c:1335
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:3736
static int op_save(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Make decrypted copy - Implements index_function_t -.
Definition functions.c:2907
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:2214
static int op_list_action(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show mailing-list actions - Implements index_function_t -.
Definition functions.c:1322
static int op_mail_key(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Mail a PGP public key - Implements index_function_t -.
Definition functions.c:1401
static int op_alias_dialog(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open the aliases dialog - Implements index_function_t -.
Definition functions.c:615
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:2466
static int op_exit(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Exit this menu - Implements index_function_t -.
Definition functions.c:1125
static int op_recall_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Recall a postponed message - Implements index_function_t -.
Definition functions.c:2831
static int op_main_sync_folder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Save changes to mailbox - Implements index_function_t -.
Definition functions.c:2488
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:3785
static int op_tag_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Tag the current thread - Implements index_function_t -.
Definition functions.c:3063
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:1070
static int op_post(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Followup to newsgroup - Implements index_function_t -.
Definition functions.c:3610
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:3448
static int op_delete_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Delete all messages in thread - Implements index_function_t -.
Definition functions.c:868
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:2702
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:1416
static int op_group_reply(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Reply to all recipients - Implements index_function_t -.
Definition functions.c:1236
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:3087
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:3289
static int op_main_close_all_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse all threads - Implements index_function_t -.
Definition functions.c:1570
static int op_main_open_all_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open all threads - Implements index_function_t -.
Definition functions.c:1623
static int op_end_cond(struct IndexFunctionData *fdata, const struct KeyEvent *event)
End of conditional execution (noop) - Implements index_function_t -.
Definition functions.c:1117
static int op_print(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Print the current entry - Implements index_function_t -.
Definition functions.c:2749
static int op_view_attachments(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show MIME attachments - Implements index_function_t -.
Definition functions.c:3236
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:3133
static int op_main_change_folder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open a different folder - Implements index_function_t -.
Definition functions.c:1486
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:3829
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:2239
static int op_main_collapse_all(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse/uncollapse all threads - Implements index_function_t -.
Definition functions.c:1552
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:2156
static int op_autocrypt_acct_menu(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Manage autocrypt accounts - Implements index_function_t -.
Definition functions.c:3266
static int op_tag(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Tag the current entry - Implements index_function_t -.
Definition functions.c:3017
static int op_main_open_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open current thread - Implements index_function_t -.
Definition functions.c:1646
static int op_undelete(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete the current entry - Implements index_function_t -.
Definition functions.c:3143
static int op_main_collapse_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse/uncollapse current thread - Implements index_function_t -.
Definition functions.c:1608
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:2113
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:1661
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:3654
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:2622
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:2322
static int op_undelete_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete all messages in thread - Implements index_function_t -.
Definition functions.c:3186
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:2431
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:2412
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:2358
static int op_main_change_group(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open a different newsgroup - Implements index_function_t -.
Definition functions.c:3530
static int op_main_close_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse current thread - Implements index_function_t -.
Definition functions.c:1593
static int op_prev_entry(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the previous entry - Implements index_function_t -.
Definition functions.c:2725
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:1165
static int op_main_modify_tags(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Modify (notmuch/imap) tags - Implements index_function_t -.
Definition functions.c:1830
static int op_main_next_new(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Definition functions.c:2035
@ CHECK_NONE
No flags are set.
Definition lib.h:89