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

Pager functions. More...

#include "config.h"
#include <inttypes.h>
#include <stdbool.h>
#include <stdio.h>
#include <sys/stat.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "email/lib.h"
#include "core/lib.h"
#include "gui/lib.h"
#include "mutt.h"
#include "functions.h"
#include "lib.h"
#include "attach/lib.h"
#include "browser/lib.h"
#include "color/lib.h"
#include "editor/lib.h"
#include "history/lib.h"
#include "index/lib.h"
#include "key/lib.h"
#include "menu/lib.h"
#include "pattern/lib.h"
#include "sidebar/lib.h"
#include "display.h"
#include "module_data.h"
#include "muttlib.h"
#include "private_data.h"
Include dependency graph for functions.c:

Go to the source code of this file.

Functions

static int op_pager_search_next (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Search for next match - Implements pager_function_t -.
void pager_init_keys (struct NeoMutt *n, struct SubMenu *sm_generic)
 Initialise the Pager Keybindings - Implements ::init_keys_api.
static bool assert_pager_mode (bool test)
 Check that pager is in correct mode.
static int up_n_lines (int nlines, struct Line *info, int cur, bool hiding)
 Reposition the pager's view up by n lines.
static int down_n_lines (int nlines, struct Line *info, int cur, int max, bool hiding)
 Reposition the pager's view down by n lines.
bool jump_to_bottom (struct PagerPrivateData *priv, struct PagerView *pview)
 Make sure the bottom line is displayed.
static int op_first_entry (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Move to the first entry - Implements pager_function_t -.
static int op_last_entry (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Move to the last entry - Implements pager_function_t -.
static int op_pager_half_down (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Scroll down 1/2 page - Implements pager_function_t -.
static int op_pager_half_up (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Scroll up 1/2 page - Implements pager_function_t -.
static int op_pager_hide_quoted (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Toggle display of quoted text - Implements pager_function_t -.
static int op_pager_next_line (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Scroll down one line - Implements pager_function_t -.
static int op_pager_next_page (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Move to the next page - Implements pager_function_t -.
static int op_pager_prev_line (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Scroll up one line - Implements pager_function_t -.
static int op_pager_prev_page (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Move to the previous page - Implements pager_function_t -.
static int op_pager_search (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Search for a regular expression - Implements pager_function_t -.
static int op_pager_skip_headers (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Jump to first line after headers - Implements pager_function_t -.
static int pager_skip_quoted_once (struct PagerPrivateData *priv, struct PagerFunctionData *fdata)
 Skip to next unquoted block.
static int op_pager_skip_quoted (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Skip beyond quoted text - Implements pager_function_t -.
static int op_exit (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Exit this menu - Implements pager_function_t -.
static int op_quit (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Save changes to mailbox and quit - Implements pager_function_t -.
static int op_help (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Help screen - Implements pager_function_t -.
static int op_save (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Save the Pager text - Implements pager_function_t -.
static int op_search_toggle (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Toggle search pattern coloring - Implements pager_function_t -.
static int op_view_attachments (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Show MIME attachments - Implements pager_function_t -.
static int op_ignore (struct PagerFunctionData *fdata, const struct KeyEvent *event)
 Ignore this function - Implements pager_function_t -.
int pager_function_dispatcher (struct MuttWindow *win, const struct KeyEvent *event)
 Perform a Pager function - Implements function_dispatcher_t -.
struct MenuDefinitionpager_get_menu_definition (void)
 Get the Pager Menu Definition.

Variables

static const char * Not_available_in_this_menu = N_("Not available in this menu")
 Error message for unavailable functions.
static const struct MenuFuncOp OpPager []
 Functions for the Pager Menu.
static const struct MenuOpSeq PagerDefaultBindings []
 Key bindings for the Pager Menu.
static const struct PagerFunction PagerFunctions []
 All the NeoMutt functions that the Pager supports.

Detailed Description

Pager functions.

Authors
  • Richard Russon

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

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

Definition in file functions.c.

Function Documentation

◆ pager_init_keys()

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

Initialise the Pager Keybindings - Implements ::init_keys_api.

Definition at line 108 of file functions.c.

109{
110 struct MenuDefinition *md = NULL;
111 struct SubMenu *sm_pager = NULL;
112 struct SubMenu *sm_index = index_get_submenu();
113 struct SubMenu *sm_sidebar = sidebar_get_submenu();
114
115 sm_pager = km_register_submenu(OpPager);
116 md = km_register_menu(MENU_PAGER, "pager");
117 km_menu_add_submenu(md, sm_pager);
118 km_menu_add_submenu(md, sm_index);
119 km_menu_add_submenu(md, sm_sidebar);
120 km_menu_add_submenu(md, sm_generic);
122
124 ASSERT(mod_data);
125 mod_data->md_pager = md;
126}
struct SubMenu * sidebar_get_submenu(void)
Get the Sidebar SubMenu.
struct SubMenu * index_get_submenu(void)
Get the Index SubMenu.
Definition functions.c:353
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_PAGER
ModulePager, Pager
Definition module_api.h:85
void * neomutt_get_module_data(struct NeoMutt *n, enum ModuleId id)
Get the private data for a Module.
Definition neomutt.c:666
static const struct MenuOpSeq PagerDefaultBindings[]
Key bindings for the Pager Menu.
Definition functions.c:85
static const struct MenuFuncOp OpPager[]
Functions for the Pager Menu.
Definition functions.c:66
#define ASSERT(COND)
Definition signal2.h:59
Functions for a Dialog or Window.
Definition menudef.h:44
Pager private Module data.
Definition module_data.h:30
struct MenuDefinition * md_pager
Pager menu definition.
Definition module_data.h:32
Collection of related functions.
Definition menudef.h:33
@ MENU_PAGER
Pager pager (email viewer).
Definition type.h:46
Here is the call graph for this function:
Here is the caller graph for this function:

◆ assert_pager_mode()

bool assert_pager_mode ( bool test)
inlinestatic

Check that pager is in correct mode.

Parameters
testTest condition
Return values
trueExpected mode is set
falsePager is is some other mode
Note
On failure, the input will be flushed and an error message displayed

Definition at line 136 of file functions.c.

137{
138 if (test)
139 return true;
140
143 return false;
144}
void mutt_flushinp(void)
MacroEvents moved to KeyModuleData UngetKeyEvents moved to KeyModuleData.
Definition get.c:81
#define mutt_error(...)
Definition logging2.h:94
#define _(a)
Definition message.h:28
static const char * Not_available_in_this_menu
Error message for unavailable functions.
Definition functions.c:58
Here is the call graph for this function:
Here is the caller graph for this function:

◆ up_n_lines()

int up_n_lines ( int nlines,
struct Line * info,
int cur,
bool hiding )
static

Reposition the pager's view up by n lines.

Parameters
nlinesNumber of lines to move
infoLine info array
curCurrent line number
hidingtrue if lines have been hidden
Return values
numNew current line number

Definition at line 154 of file functions.c.

155{
156 while ((cur > 0) && (nlines > 0))
157 {
158 cur--;
159 if (!hiding || !COLOR_QUOTED(info[cur].cid))
160 nlines--;
161 }
162
163 return cur;
164}
#define COLOR_QUOTED(cid)
Definition quoted.h:28
Here is the caller graph for this function:

◆ down_n_lines()

int down_n_lines ( int nlines,
struct Line * info,
int cur,
int max,
bool hiding )
static

Reposition the pager's view down by n lines.

Parameters
nlinesNumber of lines to move
infoLine info array
curCurrent line number
maxNumber of lines used
hidingtrue if lines have been hidden
Return values
numNew current line number

Definition at line 175 of file functions.c.

176{
177 while ((cur < max) && (nlines > 0))
178 {
179 cur++;
180 if ((cur < max) && (!hiding || !COLOR_QUOTED(info[cur].cid)))
181 nlines--;
182 }
183
184 if (cur > max)
185 cur = max;
186
187 return cur;
188}
Here is the caller graph for this function:

◆ jump_to_bottom()

bool jump_to_bottom ( struct PagerPrivateData * priv,
struct PagerView * pview )

Make sure the bottom line is displayed.

Parameters
privPrivate Pager data
pviewPagerView
Return values
trueSomething changed
falseBottom was already displayed

Definition at line 197 of file functions.c.

198{
199 if (!(priv->lines[priv->cur_line].offset < (priv->st.st_size - 1)))
200 {
201 return false;
202 }
203
204 int line_num = priv->cur_line;
205 /* make sure the types are defined to the end of file */
206 while (display_line(priv->fp, &priv->bytes_read, &priv->lines, line_num,
207 &priv->lines_used, &priv->lines_max,
208 priv->has_types | (pview->flags & MUTT_PAGER_NOWRAP),
209 &priv->quote_list, &priv->q_level, &priv->force_redraw,
210 &priv->search_re, priv->pview->win_pager, &priv->ansi_list) == 0)
211 {
212 line_num++;
213 }
214 priv->top_line = up_n_lines(priv->pview->win_pager->state.rows, priv->lines,
215 priv->lines_used, priv->hide_quoted);
217 return true;
218}
int display_line(FILE *fp, LOFF_T *bytes_read, struct Line **lines, int line_num, int *lines_used, int *lines_max, PagerFlags flags, struct QuoteStyle **quote_list, int *q_level, bool *force_redraw, regex_t *search_re, struct MuttWindow *win_pager, struct AttrColorList *ansi_list)
Print a line on screen.
Definition display.c:1063
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_PAGER
Pager data has changed, NotifyPager, PagerPrivateData.
Definition notify_type.h:54
static int up_n_lines(int nlines, struct Line *info, int cur, bool hiding)
Reposition the pager's view up by n lines.
Definition functions.c:154
@ NT_PAGER_VIEW
Pager View has changed.
Definition lib.h:192
#define MUTT_PAGER_NOWRAP
Format for term width, ignore $wrap.
Definition lib.h:74
LOFF_T offset
Offset into Email file (PagerPrivateData->fp).
Definition display.h:51
struct WindowState state
Current state of the Window.
PagerFlags hide_quoted
Set to MUTT_HIDE when quoted email is hidden <toggle-quoted>.
int q_level
Number of unique quoting levels.
int cur_line
Current line (last line visible on screen).
int lines_used
Size of lines array (used entries).
int lines_max
Capacity of lines array (total entries).
bool force_redraw
Repaint is needed.
struct Line * lines
Array of text lines in pager.
int has_types
Set to MUTT_TYPES for PAGER_MODE_EMAIL or MUTT_SHOWCOLOR.
struct Notify * notify
Notifications: NotifyPager, PagerPrivateData.
LOFF_T bytes_read
Number of bytes read from file.
int top_line
First visible line on screen.
struct stat st
Stats about Email file.
struct QuoteStyle * quote_list
Tree of quoting levels.
struct PagerView * pview
Object to view in the pager.
struct AttrColorList ansi_list
List of ANSI colours used in the Pager.
regex_t search_re
Compiled search string.
FILE * fp
File containing decrypted/decoded/weeded Email.
PagerFlags flags
Additional settings to tweak pager's function.
Definition lib.h:176
struct MuttWindow * win_pager
Pager Window.
Definition lib.h:181
short rows
Number of rows, can be MUTT_WIN_SIZE_UNLIMITED.
Definition mutt_window.h:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pager_skip_quoted_once()

int pager_skip_quoted_once ( struct PagerPrivateData * priv,
struct PagerFunctionData * fdata )
static

Skip to next unquoted block.

Parameters
privPager private data
fdataPager function data
Return values
0Success
-1No more unquoted text

Definition at line 750 of file functions.c.

751{
752 struct PagerView *pview = priv->pview;
753 const short c_pager_skip_quoted_context = cs_subset_number(fdata->n->sub, "pager_skip_quoted_context");
754 int rc = 0;
755 int new_topline = priv->top_line;
756 int num_quoted = 0;
757
758 /* In a header? Skip all the email headers, and done */
759 if (color_is_header(priv->lines[new_topline].cid))
760 {
761 while (((new_topline < priv->lines_used) ||
762 (0 == (rc = display_line(priv->fp, &priv->bytes_read, &priv->lines,
763 new_topline, &priv->lines_used, &priv->lines_max,
764 MUTT_TYPES | (pview->flags & MUTT_PAGER_NOWRAP), &priv->quote_list,
765 &priv->q_level, &priv->force_redraw, &priv->search_re,
766 priv->pview->win_pager, &priv->ansi_list)))) &&
767 color_is_header(priv->lines[new_topline].cid))
768 {
769 new_topline++;
770 }
771 priv->top_line = new_topline;
773 return 0;
774 }
775
776 /* Already in the body? Skip past previous "context" quoted lines */
777 if (c_pager_skip_quoted_context > 0)
778 {
779 while (((new_topline < priv->lines_used) ||
780 (0 == (rc = display_line(priv->fp, &priv->bytes_read, &priv->lines,
781 new_topline, &priv->lines_used, &priv->lines_max,
782 MUTT_TYPES | (pview->flags & MUTT_PAGER_NOWRAP), &priv->quote_list,
783 &priv->q_level, &priv->force_redraw, &priv->search_re,
784 priv->pview->win_pager, &priv->ansi_list)))) &&
785 COLOR_QUOTED(priv->lines[new_topline].cid))
786 {
787 new_topline++;
788 num_quoted++;
789 }
790
791 if (rc < 0)
792 return -1;
793 }
794
795 if (num_quoted <= c_pager_skip_quoted_context)
796 {
797 num_quoted = 0;
798
799 while (((new_topline < priv->lines_used) ||
800 (0 == (rc = display_line(priv->fp, &priv->bytes_read, &priv->lines,
801 new_topline, &priv->lines_used, &priv->lines_max,
802 MUTT_TYPES | (pview->flags & MUTT_PAGER_NOWRAP), &priv->quote_list,
803 &priv->q_level, &priv->force_redraw, &priv->search_re,
804 priv->pview->win_pager, &priv->ansi_list)))) &&
805 !COLOR_QUOTED(priv->lines[new_topline].cid))
806 {
807 new_topline++;
808 }
809
810 if (rc < 0)
811 return -1;
812
813 while (((new_topline < priv->lines_used) ||
814 (0 == (rc = display_line(priv->fp, &priv->bytes_read, &priv->lines,
815 new_topline, &priv->lines_used, &priv->lines_max,
816 MUTT_TYPES | (pview->flags & MUTT_PAGER_NOWRAP), &priv->quote_list,
817 &priv->q_level, &priv->force_redraw, &priv->search_re,
818 priv->pview->win_pager, &priv->ansi_list)))) &&
819 COLOR_QUOTED(priv->lines[new_topline].cid))
820 {
821 new_topline++;
822 num_quoted++;
823 }
824
825 if (rc < 0)
826 return -1;
827 }
828 priv->top_line = new_topline - MIN(c_pager_skip_quoted_context, num_quoted);
830 return 0;
831}
short cs_subset_number(const struct ConfigSubset *sub, const char *name)
Get a number config item by name.
Definition helpers.c:143
bool color_is_header(enum ColorId cid)
Colour is for an Email header.
Definition display.c:488
#define MIN(a, b)
Return the minimum of two values.
Definition memory.h:40
#define MUTT_TYPES
Compute line's type.
Definition lib.h:68
short cid
Default line colour, e.g. MT_COLOR_SIGNATURE.
Definition display.h:52
struct ConfigSubset * sub
Inherited config items.
Definition neomutt.h:49
struct NeoMutt * n
NeoMutt application data.
Definition functions.h:38
Paged view into some data.
Definition lib.h:173
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pager_get_menu_definition()

struct MenuDefinition * pager_get_menu_definition ( void )

Get the Pager Menu Definition.

Return values
ptrPager Menu Definition

Definition at line 1116 of file functions.c.

1117{
1119 ASSERT(mod_data);
1120
1121 return mod_data->md_pager;
1122}
Container for Accounts, Notifications.
Definition neomutt.h:41
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ Not_available_in_this_menu

const char* Not_available_in_this_menu = N_("Not available in this menu")
static

Error message for unavailable functions.

Definition at line 58 of file functions.c.

◆ OpPager

const struct MenuFuncOp OpPager[]
static
Initial value:
= {
{ "search-toggle", OP_SEARCH_TOGGLE },
{ "skip-headers", OP_PAGER_SKIP_HEADERS },
{ "skip-quoted", OP_PAGER_SKIP_QUOTED },
{ "toggle-quoted", OP_PAGER_HIDE_QUOTED },
{ "bottom", OP_LAST_ENTRY, MFF_DEPRECATED },
{ "buffy-list", OP_MAILBOX_LIST, MFF_DEPRECATED },
{ "error-history", OP_SHOW_LOG_MESSAGES, MFF_DEPRECATED },
{ "mark-as-new", OP_TOGGLE_NEW, MFF_DEPRECATED },
{ "tag-message", OP_TAG, MFF_DEPRECATED },
{ "top", OP_FIRST_ENTRY, MFF_DEPRECATED },
{ NULL, 0 },
}
@ MFF_DEPRECATED
Function is deprecated.
Definition get.h:67

Functions for the Pager Menu.

Definition at line 66 of file functions.c.

66 { /* map: pager */
67 { "search-toggle", OP_SEARCH_TOGGLE },
68 { "skip-headers", OP_PAGER_SKIP_HEADERS },
69 { "skip-quoted", OP_PAGER_SKIP_QUOTED },
70 { "toggle-quoted", OP_PAGER_HIDE_QUOTED },
71
72 // Deprecated
73 { "bottom", OP_LAST_ENTRY, MFF_DEPRECATED },
74 { "buffy-list", OP_MAILBOX_LIST, MFF_DEPRECATED },
75 { "error-history", OP_SHOW_LOG_MESSAGES, MFF_DEPRECATED },
76 { "mark-as-new", OP_TOGGLE_NEW, MFF_DEPRECATED },
77 { "tag-message", OP_TAG, MFF_DEPRECATED },
78 { "top", OP_FIRST_ENTRY, MFF_DEPRECATED },
79 { NULL, 0 },
80};

◆ PagerDefaultBindings

const struct MenuOpSeq PagerDefaultBindings[]
static
Initial value:
= {
{ OP_EXIT, "q" },
{ OP_MAIN_NEXT_UNDELETED, "<right>" },
{ OP_MAIN_PREV_UNDELETED, "<left>" },
{ OP_NEXT_LINE, "<keypadenter>" },
{ OP_NEXT_LINE, "\n" },
{ OP_NEXT_LINE, "\r" },
{ OP_NEXT_PAGE, " " },
{ OP_PAGER_HIDE_QUOTED, "T" },
{ OP_PAGER_SKIP_HEADERS, "H" },
{ OP_PAGER_SKIP_QUOTED, "S" },
{ OP_FIRST_ENTRY, "^" },
{ OP_PREV_LINE, "<backspace>" },
{ OP_PREV_PAGE, "-" },
{ OP_QUIT, "Q" },
{ OP_SEARCH_TOGGLE, "\\" },
{ 0, NULL },
}

Key bindings for the Pager Menu.

Definition at line 85 of file functions.c.

85 { /* map: pager */
86 { OP_EXIT, "q" },
87 { OP_MAIN_NEXT_UNDELETED, "<right>" },
88 { OP_MAIN_PREV_UNDELETED, "<left>" },
89 { OP_NEXT_LINE, "<keypadenter>" },
90 { OP_NEXT_LINE, "\n" }, // <Enter>
91 { OP_NEXT_LINE, "\r" }, // <Return>
92 { OP_NEXT_PAGE, " " }, // <Space>
93 { OP_PAGER_HIDE_QUOTED, "T" },
94 { OP_PAGER_SKIP_HEADERS, "H" },
95 { OP_PAGER_SKIP_QUOTED, "S" },
96 { OP_FIRST_ENTRY, "^" },
97 { OP_PREV_LINE, "<backspace>" },
98 { OP_PREV_PAGE, "-" },
99 { OP_QUIT, "Q" },
100 { OP_SEARCH_TOGGLE, "\\" }, // <Backslash>
101 { 0, NULL },
102};

◆ PagerFunctions

const struct PagerFunction PagerFunctions[]
static

All the NeoMutt functions that the Pager supports.

Definition at line 1017 of file functions.c.

1017 {
1018 // clang-format off
1019 { OP_EXIT, op_exit },
1020 { OP_FIRST_ENTRY, op_first_entry },
1021 { OP_HALF_DOWN, op_pager_half_down },
1022 { OP_HALF_UP, op_pager_half_up },
1023 { OP_HELP, op_help },
1024 { OP_LAST_ENTRY, op_last_entry },
1025 { OP_NEXT_LINE, op_pager_next_line },
1026 { OP_NEXT_PAGE, op_pager_next_page },
1027 { OP_PAGER_HIDE_QUOTED, op_pager_hide_quoted },
1028 { OP_PAGER_SKIP_HEADERS, op_pager_skip_headers },
1029 { OP_PAGER_SKIP_QUOTED, op_pager_skip_quoted },
1030 { OP_PREV_LINE, op_pager_prev_line },
1031 { OP_PREV_PAGE, op_pager_prev_page },
1032 { OP_QUIT, op_quit },
1033 { OP_SAVE, op_save },
1034 { OP_SEARCH, op_pager_search },
1035 { OP_SEARCH_NEXT, op_pager_search_next },
1036 { OP_SEARCH_OPPOSITE, op_pager_search_next },
1037 { OP_SEARCH_REVERSE, op_pager_search },
1038 { OP_SEARCH_TOGGLE, op_search_toggle },
1039 { OP_VIEW_ATTACHMENTS, op_view_attachments },
1040
1041 // OpGeneric - Ignore
1042 { OP_CURRENT_MIDDLE, op_ignore },
1043 { OP_CURRENT_TOP, op_ignore },
1044 { OP_CURRENT_BOTTOM, op_ignore },
1045 { OP_BOTTOM_PAGE, op_ignore },
1046 { OP_MIDDLE_PAGE, op_ignore },
1047 { OP_GENERIC_SELECT_ENTRY, op_ignore },
1048 { OP_TOP_PAGE, op_ignore },
1049 { 0, NULL },
1050 // clang-format on
1051};
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_help(struct EnterFunctionData *fdata, const struct KeyEvent *event)
Display Help - Implements enter_function_t -.
Definition functions.c:476
static int op_save(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Make decrypted copy - Implements index_function_t -.
Definition functions.c:2916
static int op_exit(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Exit this menu - Implements index_function_t -.
Definition functions.c:1128
static int op_view_attachments(struct IndexFunctionData *fdata, const struct KeyEvent *event)
Show MIME attachments - Implements index_function_t -.
Definition functions.c:3248
static int op_pager_skip_quoted(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Skip beyond quoted text - Implements pager_function_t -.
Definition functions.c:838
static int op_pager_search_next(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Search for next match - Implements pager_function_t -.
Definition functions.c:603
static int op_first_entry(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Move to the first entry - Implements pager_function_t -.
Definition functions.c:225
static int op_pager_half_up(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Scroll up 1/2 page - Implements pager_function_t -.
Definition functions.c:299
static int op_pager_next_page(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Move to the next page - Implements pager_function_t -.
Definition functions.c:363
static int op_pager_prev_page(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Move to the previous page - Implements pager_function_t -.
Definition functions.c:423
static int op_search_toggle(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Toggle search pattern coloring - Implements pager_function_t -.
Definition functions.c:970
static int op_pager_hide_quoted(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Toggle display of quoted text - Implements pager_function_t -.
Definition functions.c:320
static int op_pager_next_line(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Scroll down one line - Implements pager_function_t -.
Definition functions.c:342
static int op_pager_prev_line(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Scroll up one line - Implements pager_function_t -.
Definition functions.c:403
static int op_pager_skip_headers(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Jump to first line after headers - Implements pager_function_t -.
Definition functions.c:707
static int op_pager_half_down(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Scroll down 1/2 page - Implements pager_function_t -.
Definition functions.c:260
static int op_pager_search(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Search for a regular expression - Implements pager_function_t -.
Definition functions.c:451
static int op_last_entry(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Move to the last entry - Implements pager_function_t -.
Definition functions.c:245
static int op_ignore(struct PagerFunctionData *fdata, const struct KeyEvent *event)
Ignore this function - Implements pager_function_t -.
Definition functions.c:1007