NeoMutt  2025-12-11-1039-g550ac6
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 321 of file functions.c.

322{
327};
@ RESOLVE_NEXT_SUBTHREAD
Next sibling sub-thread.
Definition functions.c:326
@ RESOLVE_NEXT_UNDELETED
Next undeleted email.
Definition functions.c:324
@ RESOLVE_NEXT_EMAIL
Next email, whatever its state.
Definition functions.c:323
@ RESOLVE_NEXT_THREAD
Next top-level thread.
Definition functions.c:325

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

333{
334 struct MenuDefinition *md = NULL;
335 struct SubMenu *sm_index = NULL;
336 struct SubMenu *sm_sidebar = sidebar_get_submenu();
337
338 sm_index = km_register_submenu(OpIndex);
339 md = km_register_menu(MENU_INDEX, "index");
340 km_menu_add_submenu(md, sm_index);
341 km_menu_add_submenu(md, sm_sidebar);
342 km_menu_add_submenu(md, sm_generic);
344
346 ASSERT(mod_data);
347 mod_data->md_index = md;
348 mod_data->sm_index = sm_index;
349}
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:229
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:44
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 355 of file functions.c.

356{
358 ASSERT(mod_data);
359
360 return mod_data->sm_index;
361}
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()

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

373{
374 if (!priv || !priv->menu || !shared || !shared->mailbox || !shared->email)
375 return false;
376
377 const bool c_resolve = cs_subset_bool(shared->sub, "resolve");
378 if (!c_resolve)
379 return false;
380
381 count = MAX(count, 1);
382 int index = menu_get_index(priv->menu);
383
384 switch (rm)
385 {
387 index = index + count;
388 break;
389
391 {
392 const bool uncollapse = mutt_using_threads() && !window_is_focused(priv->win_index);
393 for (int i = 0; i < count; i++)
394 {
395 int next = find_next_undeleted(shared->mailbox_view, index, uncollapse);
396 if (next < 0)
397 break;
398 index = next;
399 }
400 break;
401 }
402
404 for (int i = 0; i < count; i++)
405 {
406 struct Email *e = mutt_get_virt_email(shared->mailbox, index);
407 if (!e)
408 break;
409 int next = mutt_next_thread(e);
410 if (next < 0)
411 break;
412 index = next;
413 }
414 break;
415
417 for (int i = 0; i < count; i++)
418 {
419 struct Email *e = mutt_get_virt_email(shared->mailbox, index);
420 if (!e)
421 break;
422 int next = mutt_next_subthread(e);
423 if (next < 0)
424 break;
425 index = next;
426 }
427 break;
428 }
429
430 if (index < 0)
431 index = 0;
432 if (index >= shared->mailbox->vcount)
433 index = shared->mailbox->vcount - 1;
434
435 menu_set_index(priv->menu, index);
436 return true;
437}
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 444 of file functions.c.

445{
446 struct MuttWindow *dlg = dialog_find(win_index);
447 if (!dlg)
448 return false;
449
450 struct Menu *menu = win_index->wdata;
451 struct IndexSharedData *shared = dlg->wdata;
452 if (!shared)
453 return false;
454
455 struct IndexPrivateData *priv = win_index->parent->wdata;
456 const bool uncollapse = mutt_using_threads() && !window_is_focused(priv->win_index);
457
458 int index = find_next_undeleted(shared->mailbox_view, menu_get_index(menu), uncollapse);
459 if ((index < 0) || (index >= shared->mailbox->vcount))
460 {
461 // Selection failed
463 return false;
464 }
465
466 menu_set_index(menu, index);
467 return true;
468}
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()

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

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

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

517{
518 if (!e || !e->thread)
519 return NULL;
520
521 struct MuttThread *thread = e->thread;
522 if (!subthread)
523 {
524 while (thread->parent)
525 thread = thread->parent;
526 }
527
528 return thread;
529}
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()

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

539{
540 if (!ea || !e)
541 return false;
542
543 struct MuttThread *target = thread_target(e, subthread);
544 if (!target)
545 return false;
546
547 struct Email **ep = NULL;
548 ARRAY_FOREACH(ep, ea)
549 {
550 if (thread_target(*ep, subthread) == target)
551 return true;
552 }
553
554 return false;
555}
#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:516
Here is the call graph for this function:
Here is the caller graph for this function:

â—† ea_add_selection_threads()

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

571{
572 if (!ea)
573 return -1;
574
575 if (!use_tagged)
576 {
577 if (!mv || !mv->mailbox || !e)
578 return -1;
579
580 const int index = e->vnum;
581 if ((index < 0) || (index >= mv->mailbox->vcount))
582 return -1;
583
584 const int n = (count > 1) ? count : 1;
585 for (int i = index; (i < mv->mailbox->vcount) && (ARRAY_SIZE(ea) < n); i++)
586 {
587 struct Email *sel = mutt_get_virt_email(mv->mailbox, i);
588 if (!sel || ea_contains_thread_target(ea, sel, subthread))
589 continue;
590
591 ARRAY_ADD(ea, sel);
592 }
593 return ARRAY_SIZE(ea);
594 }
595
596 if (!mv || !mv->mailbox || !mv->mailbox->emails)
597 return -1;
598
599 struct Mailbox *m = mv->mailbox;
600 for (int i = 0; i < m->msg_count; i++)
601 {
602 struct Email *et = m->emails[i];
603 if (!et)
604 break;
605 if (!message_is_tagged(et))
606 continue;
607
608 if (!ea_contains_thread_target(ea, et, subthread))
609 ARRAY_ADD(ea, et);
610 }
611
612 return ARRAY_SIZE(ea);
613}
#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:538
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()

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

763{
764 if (!priv || !priv->menu || !email)
765 return;
766
767 int index = email->vnum;
768 if (index < 0)
769 {
770 struct MuttThread *thread = thread_target(email, false);
771 struct Email *e = find_virtual(thread, false);
772 if (e)
773 index = e->vnum;
774 }
775
776 if (index >= 0)
777 menu_set_index(priv->menu, index);
778}
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()

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

789{
790 struct IndexSharedData *shared = fdata->shared;
791 struct IndexPrivateData *priv = fdata->priv;
792 if (!mutt_using_threads())
793 {
794 mutt_warning(_("Threading is not enabled"));
795 return FR_ERROR;
796 }
797
798 if (!ea || ARRAY_EMPTY(ea))
799 return FR_NO_ACTION;
800
801 bool changed = false;
802 bool blocked = false;
803 struct Email **ep = NULL;
804 ARRAY_FOREACH(ep, ea)
805 {
806 struct Email *e = *ep;
807 if (!e)
808 continue;
809
810 switch (mode)
811 {
813 if (!e->collapsed)
814 continue;
816 changed = true;
817 break;
819 if (e->collapsed)
820 continue;
822 {
823 blocked = true;
824 continue;
825 }
827 changed = true;
828 break;
830 if (e->collapsed)
831 {
833 changed = true;
834 }
835 else if (mutt_thread_can_collapse(e))
836 {
838 changed = true;
839 }
840 else
841 {
842 blocked = true;
843 }
844 break;
845 }
846 }
847
848 if (!changed)
849 {
850 if (blocked)
851 {
852 mutt_warning(_("Thread contains unread or flagged messages"));
853 return FR_ERROR;
854 }
855 return FR_NO_ACTION;
856 }
857
858 mutt_set_vnum(shared->mailbox);
859 update_thread_email(priv, shared->email);
861 notify_send(shared->notify, NT_INDEX, NT_INDEX_EMAIL, NULL);
862 return FR_SUCCESS;
863}
#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:762
@ 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()

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

Definition at line 2054 of file functions.c.

2055{
2056 struct IndexSharedData *shared = fdata->shared;
2057 struct IndexPrivateData *priv = fdata->priv;
2058
2059 const int saved_current = menu_get_index(priv->menu);
2060 const int op = event->op;
2061 const bool forwards = (op == OP_MAIN_NEXT_NEW) || (op == OP_MAIN_NEXT_UNREAD) ||
2062 (op == OP_MAIN_NEXT_NEW_THEN_UNREAD);
2063 const int count = event->count;
2064
2065 if (count > 0)
2066 {
2067 int cur = saved_current;
2068 int last_good = saved_current;
2069 for (int i = 0; i < count; i++)
2070 {
2071 int next = find_next_new_email(shared->mailbox, cur, forwards, op);
2072 if (next == -1)
2073 break;
2074 last_good = next;
2075 cur = next;
2076 }
2077 if (last_good != saved_current)
2078 menu_set_index(priv->menu, last_good);
2079 return FR_SUCCESS;
2080 }
2081
2082 int index = find_next_new_email(shared->mailbox, saved_current, forwards, op);
2083
2084 if (index == -1)
2085 {
2086 menu_set_index(priv->menu, saved_current);
2087 if ((op == OP_MAIN_NEXT_NEW) || (op == OP_MAIN_PREV_NEW))
2088 {
2090 mutt_error(_("No new messages in this limited view"));
2091 else
2092 mutt_error(_("No new messages"));
2093 }
2094 else
2095 {
2097 mutt_error(_("No unread messages in this limited view"));
2098 else
2099 mutt_error(_("No unread messages"));
2100 }
2102 return FR_ERROR;
2103 }
2104
2105 menu_set_index(priv->menu, index);
2106
2107 index = menu_get_index(priv->menu);
2108 if (forwards)
2109 {
2110 if (saved_current > index)
2111 {
2112 mutt_message(_("Search wrapped to top"));
2113 }
2114 }
2115 else if (saved_current < index)
2116 {
2117 mutt_message(_("Search wrapped to bottom"));
2118 }
2119
2120 return FR_SUCCESS;
2121}
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:1987
#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()

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

3872{
3873 bool result = true;
3874 struct MailboxView *mv = shared->mailbox_view;
3875
3876 if (checks & (CHECK_MSGCOUNT | CHECK_VISIBLE | CHECK_READONLY))
3877 checks |= CHECK_IN_MAILBOX;
3878
3879 if ((checks & CHECK_IN_MAILBOX) && (!mv || !mv->mailbox))
3880 {
3881 mutt_error(_("No mailbox is open"));
3882 result = false;
3883 }
3884
3885 if (result && (checks & CHECK_MSGCOUNT) && (mv->mailbox->msg_count == 0))
3886 {
3887 mutt_error(_("There are no messages"));
3888 result = false;
3889 }
3890
3891 int index = menu_get_index(menu);
3892 if (result && (checks & CHECK_VISIBLE) &&
3893 ((index < 0) || (index >= mv->mailbox->vcount)))
3894 {
3895 mutt_error(_("No visible messages"));
3896 result = false;
3897 }
3898
3899 if (result && (checks & CHECK_READONLY) && mv->mailbox->readonly)
3900 {
3901 mutt_error(_("Mailbox is read-only"));
3902 result = false;
3903 }
3904
3905 if (result && (checks & CHECK_ATTACH) && shared->attach_msg)
3906 {
3907 mutt_error(_("Function not permitted in attach-message mode"));
3908 result = false;
3909 }
3910
3911 if (!result)
3912 mutt_flushinp();
3913
3914 return result;
3915}
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 4118 of file functions.c.

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

â—† IndexDefaultBindings

const struct MenuOpSeq IndexDefaultBindings[]
static

Key bindings for the Index Menu.

Definition at line 229 of file functions.c.

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

â—† IndexFunctions

const struct IndexFunction IndexFunctions[]
static

All the NeoMutt functions that the Index supports.

Definition at line 3920 of file functions.c.

3920 {
3921 // clang-format off
3922 { OP_ALIAS_DIALOG, op_alias_dialog, CHECK_NONE },
3928 { OP_COPY_MESSAGE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3929 { OP_CREATE_ALIAS, op_create_alias, CHECK_NONE },
3930 { OP_DECODE_COPY, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3931 { OP_DECODE_SAVE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3932 { OP_DECRYPT_COPY, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3933 { OP_DECRYPT_SAVE, op_save, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3941 { OP_EDIT_OR_VIEW_RAW_MESSAGE, op_edit_raw_message, CHECK_ATTACH | CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3943 { OP_END_COND, op_end_cond, CHECK_NONE },
3944 { OP_EXIT, op_exit, CHECK_NONE },
3949 { OP_FORWARD_TO_GROUP, op_post, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3951 { OP_GET_MESSAGE, op_get_message, CHECK_ATTACH | CHECK_IN_MAILBOX },
3953 { OP_GENERIC_SELECT_ENTRY, op_display_message, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3956 { OP_JUMP, op_jump, CHECK_IN_MAILBOX },
3957 { OP_LIMIT_CURRENT_THREAD, op_main_limit, CHECK_IN_MAILBOX },
3962 { OP_MAIL, op_mail, CHECK_ATTACH },
3963 { OP_MAILBOX_LIST, op_mailbox_list, CHECK_NONE },
3964 { OP_MAIL_KEY, op_mail_key, CHECK_ATTACH },
3966 { OP_MAIN_BROWSE_MAILBOXES, op_main_change_folder, CHECK_NONE },
3967 { OP_MAIN_BROWSE_MAILBOXES_READONLY, op_main_change_folder, CHECK_NONE },
3968 { OP_MAIN_CHANGE_FOLDER, op_main_change_folder, CHECK_NONE },
3969 { OP_MAIN_CHANGE_FOLDER_READONLY, op_main_change_folder, CHECK_NONE },
3970 { OP_MAIN_CHANGE_GROUP, op_main_change_group, CHECK_NONE },
3971 { OP_MAIN_CHANGE_GROUP_READONLY, op_main_change_group, CHECK_NONE },
3973 { OP_MAIN_CLOSE_ALL_THREADS, op_main_close_all_threads, CHECK_IN_MAILBOX },
3975 { OP_MAIN_COLLAPSE_ALL, op_main_collapse_all, CHECK_IN_MAILBOX },
3976 { OP_MAIN_COLLAPSE_THREAD, op_main_collapse_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3977 { OP_MAIN_DELETE_PATTERN, op_main_delete_pattern, CHECK_ATTACH | CHECK_IN_MAILBOX | CHECK_READONLY },
3978 { OP_MAIN_FETCH_MAIL, op_main_fetch_mail, CHECK_ATTACH },
3979 { OP_MAIN_IMAP_FETCH, op_main_imap_fetch, CHECK_NONE },
3980 { OP_MAIN_IMAP_LOGOUT_ALL, op_main_imap_logout_all, CHECK_NONE },
3981 { OP_MAIN_LIMIT, op_main_limit, CHECK_IN_MAILBOX },
3984 { OP_MAIN_MODIFY_TAGS_THEN_HIDE, op_main_modify_tags, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_READONLY | CHECK_VISIBLE },
3986 { OP_MAIN_NEXT_NEW_THEN_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3987 { OP_MAIN_NEXT_SUBTHREAD, op_main_next_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3990 { OP_MAIN_NEXT_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3991 { OP_MAIN_NEXT_UNREAD_MAILBOX, op_main_next_unread_mailbox, CHECK_IN_MAILBOX },
3992 { OP_MAIN_PREV_UNREAD_MAILBOX, op_main_prev_unread_mailbox, CHECK_IN_MAILBOX },
3993 { OP_MAIN_OPEN_ALL_THREADS, op_main_open_all_threads, CHECK_IN_MAILBOX },
3995 { OP_MAIN_PARENT_MESSAGE, op_main_root_message, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3997 { OP_MAIN_PREV_NEW_THEN_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
3998 { OP_MAIN_PREV_SUBTHREAD, op_main_next_thread, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4001 { OP_MAIN_PREV_UNREAD, op_main_next_new, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4007 { OP_MAIN_SHOW_LIMIT, op_main_show_limit, CHECK_IN_MAILBOX },
4008 { OP_MAIN_SYNC_FOLDER, op_main_sync_folder, CHECK_NONE },
4009 { OP_MAIN_TAG_PATTERN, op_main_tag_pattern, CHECK_IN_MAILBOX },
4010 { OP_MAIN_UNDELETE_PATTERN, op_main_undelete_pattern, CHECK_IN_MAILBOX | CHECK_READONLY },
4011 { OP_MAIN_UNTAG_PATTERN, op_main_untag_pattern, CHECK_IN_MAILBOX },
4015 { OP_POST, op_post, CHECK_ATTACH | CHECK_IN_MAILBOX },
4022 { OP_QUERY, op_query, CHECK_ATTACH },
4023 { OP_QUIT, op_quit, CHECK_NONE },
4024 { OP_RECALL_MESSAGE, op_recall_message, CHECK_ATTACH },
4029 { OP_SEARCH, op_search, CHECK_IN_MAILBOX },
4030 { OP_SEARCH_NEXT, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4031 { OP_SEARCH_OPPOSITE, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4032 { OP_SEARCH_REVERSE, op_search, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE },
4033 { OP_SORT, op_sort, CHECK_NONE },
4034 { OP_SORT_REVERSE, op_sort, CHECK_NONE },
4039 { OP_TOGGLE_READ, op_main_limit, CHECK_IN_MAILBOX },
4040 { OP_TOGGLE_WRITE, op_toggle_write, CHECK_IN_MAILBOX },
4046#ifdef USE_AUTOCRYPT
4047 { OP_AUTOCRYPT_ACCT_MENU, op_autocrypt_acct_menu, CHECK_NONE },
4048#endif
4049#ifdef USE_NOTMUCH
4050 { OP_MAIN_CHANGE_VFOLDER, op_main_change_folder, CHECK_NONE },
4052 { OP_MAIN_VFOLDER_FROM_QUERY, op_main_vfolder_from_query, CHECK_NONE },
4053 { OP_MAIN_VFOLDER_FROM_QUERY_READONLY, op_main_vfolder_from_query, CHECK_NONE },
4054 { OP_MAIN_WINDOWED_VFOLDER_BACKWARD, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4055 { OP_MAIN_WINDOWED_VFOLDER_FORWARD, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4056 { OP_MAIN_WINDOWED_VFOLDER_RESET, op_main_windowed_vfolder, CHECK_IN_MAILBOX },
4057#endif
4058 { 0, NULL, CHECK_NONE },
4059 // clang-format on
4060};
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:559
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:1175
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:502
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:1032
static int op_display_address(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Display full address of sender - Implements index_function_t -.
Definition functions.c:931
static int op_next_entry(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the next entry - Implements index_function_t -.
Definition functions.c:2697
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:2604
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:1779
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:3366
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:2283
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:3298
static int op_display_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Display a message - Implements index_function_t -.
Definition functions.c:949
static int op_list_reply(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Reply to specified mailing list - Implements index_function_t -.
Definition functions.c:1341
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:3758
static int op_save(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Make decrypted copy - Implements index_function_t -.
Definition functions.c:2926
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:2233
static int op_list_action(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show mailing-list actions - Implements index_function_t -.
Definition functions.c:1328
static int op_mail_key(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Mail a PGP public key - Implements index_function_t -.
Definition functions.c:1407
static int op_alias_dialog(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open the aliases dialog - Implements index_function_t -.
Definition functions.c:620
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:2485
static int op_exit(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Exit this menu - Implements index_function_t -.
Definition functions.c:1131
static int op_recall_message(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Recall a postponed message - Implements index_function_t -.
Definition functions.c:2850
static int op_main_sync_folder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Save changes to mailbox - Implements index_function_t -.
Definition functions.c:2507
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:3807
static int op_tag_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Tag the current thread - Implements index_function_t -.
Definition functions.c:3085
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:1076
static int op_post(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Followup to newsgroup - Implements index_function_t -.
Definition functions.c:3632
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:3470
static int op_delete_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Delete all messages in thread - Implements index_function_t -.
Definition functions.c:874
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:2721
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:1422
static int op_group_reply(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Reply to all recipients - Implements index_function_t -.
Definition functions.c:1242
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:3109
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:3311
static int op_main_close_all_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse all threads - Implements index_function_t -.
Definition functions.c:1582
static int op_main_open_all_threads(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open all threads - Implements index_function_t -.
Definition functions.c:1635
static int op_end_cond(struct IndexFunctionData *fdata, const struct KeyEvent *event)
End of conditional execution (noop) - Implements index_function_t -.
Definition functions.c:1123
static int op_print(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Print the current entry - Implements index_function_t -.
Definition functions.c:2768
static int op_view_attachments(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show MIME attachments - Implements index_function_t -.
Definition functions.c:3258
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:3155
static int op_main_change_folder(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open a different folder - Implements index_function_t -.
Definition functions.c:1494
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:3854
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:2258
static int op_main_collapse_all(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse/uncollapse all threads - Implements index_function_t -.
Definition functions.c:1564
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:2175
static int op_autocrypt_acct_menu(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Manage autocrypt accounts - Implements index_function_t -.
Definition functions.c:3288
static int op_tag(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Tag the current entry - Implements index_function_t -.
Definition functions.c:3039
static int op_main_open_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open current thread - Implements index_function_t -.
Definition functions.c:1658
static int op_undelete(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete the current entry - Implements index_function_t -.
Definition functions.c:3165
static int op_main_collapse_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse/uncollapse current thread - Implements index_function_t -.
Definition functions.c:1620
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:2132
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:1677
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:3676
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:2641
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:2341
static int op_undelete_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Undelete all messages in thread - Implements index_function_t -.
Definition functions.c:3208
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:2450
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:2431
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:2377
static int op_main_change_group(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Open a different newsgroup - Implements index_function_t -.
Definition functions.c:3552
static int op_main_close_thread(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Collapse current thread - Implements index_function_t -.
Definition functions.c:1605
static int op_prev_entry(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Move to the previous entry - Implements index_function_t -.
Definition functions.c:2744
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:1171
static int op_main_modify_tags(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Modify (notmuch/imap) tags - Implements index_function_t -.
Definition functions.c:1849
static int op_main_next_new(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Definition functions.c:2054
@ CHECK_NONE
No flags are set.
Definition lib.h:89