📄 mutt.h
字号:
/* * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org> * Copyright (C) 2004 g10 Code GmbH * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef MUTT_H#define MUTT_H #include <stdio.h>#include <stdlib.h>#ifdef HAVE_UNISTD_H# include <unistd.h> /* needed for SEEK_SET */#endif#ifdef HAVE_UNIX_H# include <unix.h> /* needed for snprintf on QNX. */#endif#include <sys/types.h>#include <sys/stat.h>#include <time.h>#include <limits.h>#include <stdarg.h>#include <signal.h>#ifdef HAVE_WCHAR_H# include <wchar.h>#endif#if defined(HAVE_WCTYPE_H) && defined(HAVE_WC_FUNCS)# include <wctype.h>#endif#ifndef _POSIX_PATH_MAX#include <posix1_lim.h>#endif#include <pwd.h>#include <grp.h>#include "rfc822.h"#include "hash.h"#include "charset.h"#ifndef HAVE_WC_FUNCS# ifdef MB_LEN_MAX# undef MB_LEN_MAX# endif# define MB_LEN_MAX 16#endif#define MUTT_VERSION (VERSION)/* nifty trick I stole from ELM 2.5alpha. */#ifdef MAIN_C#define WHERE #define INITVAL(x) = x#else#define WHERE extern#define INITVAL(x) #endif#include "mutt_regex.h"/* flags for mutt_copy_header() */#define CH_UPDATE 1 /* update the status and x-status fields? */#define CH_WEED (1<<1) /* weed the headers? */#define CH_DECODE (1<<2) /* do RFC1522 decoding? */#define CH_XMIT (1<<3) /* transmitting this message? */#define CH_FROM (1<<4) /* retain the "From " message separator? */#define CH_PREFIX (1<<5) /* use Prefix string? */#define CH_NOSTATUS (1<<6) /* supress the status and x-status fields */#define CH_REORDER (1<<7) /* Re-order output of headers */#define CH_NONEWLINE (1<<8) /* don't output terminating newline */#define CH_MIME (1<<9) /* ignore MIME fields */#define CH_UPDATE_LEN (1<<10) /* update Lines: and Content-Length: */#define CH_TXTPLAIN (1<<11) /* generate text/plain MIME headers */#define CH_NOLEN (1<<12) /* don't write Content-Length: and Lines: */#define CH_WEED_DELIVERED (1<<13) /* weed eventual Delivered-To headers */#define CH_FORCE_FROM (1<<14) /* give CH_FROM precedence over CH_WEED? */#define CH_NOQFROM (1<<15) /* give CH_FROM precedence over CH_WEED? */#define CH_UPDATE_IRT (1<<16) /* update In-Reply-To: */#define CH_UPDATE_REFS (1<<17) /* update References: *//* flags for mutt_enter_string() */#define M_ALIAS 1 /* do alias "completion" by calling up the alias-menu */#define M_FILE (1<<1) /* do file completion */#define M_EFILE (1<<2) /* do file completion, plus incoming folders */#define M_CMD (1<<3) /* do completion on previous word */#define M_PASS (1<<4) /* password mode (no echo) */#define M_CLEAR (1<<5) /* clear input if printable character is pressed */#define M_COMMAND (1<<6) /* do command completion */#define M_PATTERN (1<<7) /* pattern mode - only used for history classes *//* flags for mutt_get_token() */#define M_TOKEN_EQUAL 1 /* treat '=' as a special */#define M_TOKEN_CONDENSE (1<<1) /* ^(char) to control chars (macros) */#define M_TOKEN_SPACE (1<<2) /* don't treat whitespace as a term */#define M_TOKEN_QUOTE (1<<3) /* don't interpret quotes */#define M_TOKEN_PATTERN (1<<4) /* !)|~ are terms (for patterns) */#define M_TOKEN_COMMENT (1<<5) /* don't reap comments */#define M_TOKEN_SEMICOLON (1<<6) /* don't treat ; as special *//* flags for km_dokey() */#define M_KM_UNBUFFERED 1 /* don't read from the key buffer */typedef struct{ char *data; /* pointer to data */ char *dptr; /* current read/write position */ size_t dsize; /* length of data */ int destroy; /* destroy `data' when done? */} BUFFER;typedef struct{ int ch; /* raw key pressed */ int op; /* function op */} event_t;/* flags for _mutt_system() */#define M_DETACH_PROCESS 1 /* detach subprocess from group *//* flags for mutt_FormatString() */typedef enum{ M_FORMAT_FORCESUBJ = (1<<0), /* print the subject even if unchanged */ M_FORMAT_TREE = (1<<1), /* draw the thread tree */ M_FORMAT_MAKEPRINT = (1<<2), /* make sure that all chars are printable */ M_FORMAT_OPTIONAL = (1<<3), M_FORMAT_STAT_FILE = (1<<4), /* used by mutt_attach_fmt */ M_FORMAT_ARROWCURSOR = (1<<5), /* reserve space for arrow_cursor */ M_FORMAT_INDEX = (1<<6) /* this is a main index entry */} format_flag;/* types for mutt_add_hook() */#define M_FOLDERHOOK 1#define M_MBOXHOOK (1<<1)#define M_SENDHOOK (1<<2)#define M_FCCHOOK (1<<3)#define M_SAVEHOOK (1<<4)#define M_CHARSETHOOK (1<<5)#define M_ICONVHOOK (1<<6)#define M_MESSAGEHOOK (1<<7)#define M_CRYPTHOOK (1<<8)#define M_ACCOUNTHOOK (1<<9)#define M_REPLYHOOK (1<<10)#define M_SEND2HOOK (1<<11)/* tree characters for linearize_tree and print_enriched_string */#define M_TREE_LLCORNER 1#define M_TREE_ULCORNER 2#define M_TREE_LTEE 3#define M_TREE_HLINE 4#define M_TREE_VLINE 5#define M_TREE_SPACE 6#define M_TREE_RARROW 7#define M_TREE_STAR 8#define M_TREE_HIDDEN 9#define M_TREE_EQUALS 10#define M_TREE_TTEE 11#define M_TREE_BTEE 12#define M_TREE_MISSING 13#define M_TREE_MAX 14#define M_THREAD_COLLAPSE (1<<0)#define M_THREAD_UNCOLLAPSE (1<<1)#define M_THREAD_GET_HIDDEN (1<<2)#define M_THREAD_UNREAD (1<<3)#define M_THREAD_NEXT_UNREAD (1<<4)enum{ /* modes for mutt_view_attachment() */ M_REGULAR = 1, M_MAILCAP, M_AS_TEXT, /* action codes used by mutt_set_flag() and mutt_pattern_function() */ M_ALL, M_NONE, M_NEW, M_OLD, M_REPLIED, M_READ, M_UNREAD, M_DELETE, M_UNDELETE, M_DELETED, M_FLAG, M_TAG, M_UNTAG, M_LIMIT, M_EXPIRED, M_SUPERSEDED, /* actions for mutt_pattern_comp/mutt_pattern_exec */ M_AND, M_OR, M_TO, M_CC, M_COLLAPSED, M_SUBJECT, M_FROM, M_DATE, M_DATE_RECEIVED, M_DUPLICATED, M_UNREFERENCED, M_ID, M_BODY, M_HEADER, M_HORMEL, M_WHOLE_MSG, M_SENDER, M_MESSAGE, M_SCORE, M_SIZE, M_REFERENCE, M_RECIPIENT, M_LIST, M_SUBSCRIBED_LIST, M_PERSONAL_RECIP, M_PERSONAL_FROM, M_ADDRESS, M_CRYPT_SIGN, M_CRYPT_VERIFIED, M_CRYPT_ENCRYPT, M_PGP_KEY, M_XLABEL, M_MIMEATTACH, /* Options for Mailcap lookup */ M_EDIT, M_COMPOSE, M_PRINT, M_AUTOVIEW, /* options for socket code */ M_NEW_SOCKET,#ifdef USE_SSL_OPENSSL M_NEW_SSL_SOCKET,#endif /* Options for mutt_save_attachment */ M_SAVE_APPEND, M_SAVE_OVERWRITE};/* possible arguments to set_quadoption() */enum{ M_NO, M_YES, M_ASKNO, M_ASKYES};/* quad-option vars */enum{ OPT_ABORT, OPT_BOUNCE, OPT_COPY, OPT_DELETE, OPT_FORWEDIT, OPT_INCLUDE, OPT_MFUPTO, OPT_MIMEFWD, OPT_MIMEFWDREST, OPT_MOVE, OPT_PGPMIMEAUTO, /* ask to revert to PGP/MIME when inline fails */#ifdef USE_POP OPT_POPDELETE, OPT_POPRECONNECT,#endif OPT_POSTPONE, OPT_PRINT, OPT_QUIT, OPT_REPLYTO, OPT_RECALL,#if defined(USE_SSL) OPT_SSLSTARTTLS,#endif OPT_SUBJECT, OPT_VERIFYSIG, /* verify PGP signatures */ /* THIS MUST BE THE LAST VALUE. */ OPT_MAX};/* flags to ci_send_message() */#define SENDREPLY (1<<0)#define SENDGROUPREPLY (1<<1)#define SENDLISTREPLY (1<<2)#define SENDFORWARD (1<<3)#define SENDPOSTPONED (1<<4)#define SENDBATCH (1<<5)#define SENDMAILX (1<<6)#define SENDKEY (1<<7)#define SENDRESEND (1<<8)/* flags to _mutt_select_file() */#define M_SEL_BUFFY (1<<0)#define M_SEL_MULTI (1<<1)#define M_SEL_FOLDER (1<<2)/* flags for parse_spam_list */#define M_SPAM 1#define M_NOSPAM 2/* boolean vars */enum{ OPTALLOW8BIT, OPTALLOWANSI, OPTARROWCURSOR, OPTASCIICHARS, OPTASKBCC, OPTASKCC, OPTATTACHSPLIT, OPTAUTOEDIT, OPTAUTOTAG, OPTBEEP, OPTBEEPNEW, OPTBOUNCEDELIVERED, OPTBRAILLEFRIENDLY, OPTCHECKNEW, OPTCOLLAPSEUNREAD, OPTCONFIRMAPPEND, OPTCONFIRMCREATE, OPTDELETEUNTAG, OPTDIGESTCOLLAPSE, OPTDUPTHREADS, OPTEDITHDRS, OPTENCODEFROM, OPTENVFROM, OPTFASTREPLY, OPTFCCATTACH, OPTFCCCLEAR, OPTFOLLOWUPTO, OPTFORCENAME, OPTFORWDECODE, OPTFORWQUOTE,#if USE_HCACHE OPTHCACHEVERIFY,#if HAVE_QDBM OPTHCACHECOMPRESS,#endif /* HAVE_QDBM */#endif OPTHDRS, OPTHEADER, OPTHELP, OPTHIDDENHOST, OPTHIDELIMITED, OPTHIDEMISSING, OPTHIDETHREADSUBJECT, OPTHIDETOPLIMITED, OPTHIDETOPMISSING, OPTIGNORELISTREPLYTO,#ifdef USE_IMAP OPTIMAPCHECKSUBSCRIBED, OPTIMAPIDLE, OPTIMAPLSUB, OPTIMAPPASSIVE, OPTIMAPPEEK, OPTIMAPSERVERNOISE,#endif#if defined(USE_SSL)# ifndef USE_SSL_GNUTLS OPTSSLSYSTEMCERTS, OPTSSLV2,# endif /* USE_SSL_GNUTLS */ OPTSSLV3, OPTTLSV1, OPTSSLFORCETLS,#endif /* defined(USE_SSL) */ OPTIMPLICITAUTOVIEW, OPTINCLUDEONLYFIRST, OPTKEEPFLAGGED, OPTMAILCAPSANITIZE, OPTMAILDIRTRASH, OPTMARKERS, OPTMARKOLD, OPTMENUSCROLL, /* scroll menu instead of implicit next-page */ OPTMENUMOVEOFF, /* allow menu to scroll past last entry */ OPTMETAKEY, /* interpret ALT-x as ESC-x */ OPTMETOO, OPTMHPURGE, OPTMIMEFORWDECODE, OPTNARROWTREE, OPTPAGERSTOP, OPTPIPEDECODE, OPTPIPESPLIT,#ifdef USE_POP OPTPOPAUTHTRYALL, OPTPOPLAST,#endif OPTPRINTDECODE, OPTPRINTSPLIT, OPTPROMPTAFTER, OPTREADONLY, OPTREPLYSELF, OPTRESOLVE, OPTREVALIAS, OPTREVNAME, OPTREVREAL, OPTRFC2047PARAMS, OPTSAVEADDRESS, OPTSAVEEMPTY, OPTSAVENAME, OPTSCORE, OPTSIGDASHES, OPTSIGONTOP, OPTSORTRE, OPTSPAMSEP, OPTSTATUSONTOP, OPTSTRICTTHREADS, OPTSUSPEND, OPTTEXTFLOWED, OPTTHOROUGHSRC, OPTTHREADRECEIVED, OPTTILDE, OPTUNCOLLAPSEJUMP, OPTUSE8BITMIME, OPTUSEDOMAIN, OPTUSEFROM, OPTUSEGPGAGENT,#ifdef HAVE_LIBIDN OPTUSEIDN,#endif#ifdef HAVE_GETADDRINFO OPTUSEIPV6,#endif OPTWAITKEY, OPTWEED, OPTWRAP, OPTWRAPSEARCH, OPTWRITEBCC, /* write out a bcc header? */ OPTXMAILER, OPTCRYPTUSEGPGME, /* PGP options */ OPTCRYPTAUTOSIGN, OPTCRYPTAUTOENCRYPT, OPTCRYPTAUTOPGP, OPTCRYPTAUTOSMIME, OPTCRYPTREPLYENCRYPT, OPTCRYPTREPLYSIGN, OPTCRYPTREPLYSIGNENCRYPTED, OPTCRYPTTIMESTAMP, OPTSMIMEISDEFAULT, OPTASKCERTLABEL, OPTSDEFAULTDECRYPTKEY,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -