diff options
author | Eduardo Chappa <chappa@washington.edu> | 2013-02-05 00:59:30 -0700 |
---|---|---|
committer | Eduardo Chappa <chappa@washington.edu> | 2013-02-08 21:03:59 -0700 |
commit | 640d8845bffdf13007a10929ad0f18375a9a2473 (patch) | |
tree | 2c3fa0bb9b5dfc435dbde151cedf7b4f8b7b6660 /pith | |
parent | dc6c0f8d846e14fc6841516ad772553fc5975bd6 (diff) | |
download | alpine-640d8845bffdf13007a10929ad0f18375a9a2473.tar.xz |
* Add color options for folders and index screen.
* Add silent token to display filter
* Add option to preserve To: and Cc: fields on replies.
Diffstat (limited to 'pith')
-rw-r--r-- | pith/conf.c | 32 | ||||
-rw-r--r-- | pith/conf.h | 13 | ||||
-rw-r--r-- | pith/conftype.h | 8 | ||||
-rw-r--r-- | pith/filter.c | 7 | ||||
-rw-r--r-- | pith/filter.h | 2 | ||||
-rw-r--r-- | pith/handle.h | 1 | ||||
-rw-r--r-- | pith/mailindx.c | 20 | ||||
-rw-r--r-- | pith/mailindx.h | 1 | ||||
-rw-r--r-- | pith/pine.hlp | 183 | ||||
-rw-r--r-- | pith/reply.c | 33 | ||||
-rw-r--r-- | pith/state.c | 3 | ||||
-rw-r--r-- | pith/state.h | 3 |
12 files changed, 293 insertions, 13 deletions
diff --git a/pith/conf.c b/pith/conf.c index 1375b8dc..18eaf8f0 100644 --- a/pith/conf.c +++ b/pith/conf.c @@ -198,6 +198,8 @@ CONF_TXT_T cf_text_titlebar_color_style[] = "Controls display of color for the t CONF_TXT_T cf_text_view_hdr_color[] = "When viewing messages, these are the header colors"; +CONF_TXT_T cf_text_index_token_color[] = "Colors in which tokens will be displayed in the index screen"; + CONF_TXT_T cf_text_save_msg_name_rule[] = "Determines default folder name for Saves...\n# Choices: default-folder, by-sender, by-from, by-recipient, last-folder-used.\n# Default: \"default-folder\", i.e. \"saved-messages\" (Unix) or \"SAVEMAIL\" (PC)."; CONF_TXT_T cf_text_fcc_name_rule[] = "Determines default name for Fcc...\n# Choices: default-fcc, by-recipient, last-fcc-used.\n# Default: \"default-fcc\" (see also \"default-fcc=\" variable.)"; @@ -789,6 +791,12 @@ static struct variable variables[] = { {"title-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"title-closed-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"title-closed-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"folder-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"folder-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"directory-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"directory-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"folder-list-text-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"folder-list-text-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"status-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"status-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"keylabel-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, @@ -841,6 +849,8 @@ static struct variable variables[] = { {"index-from-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"index-opening-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, {"index-opening-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0}, +{"index-token-colors", 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, + NULL, cf_text_index_token_color}, {"viewer-hdr-colors", 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, "Viewer Header Colors", cf_text_view_hdr_color}, {"keyword-colors", 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, @@ -1651,6 +1661,9 @@ init_vars(struct pine *ps, void (*cmds_f) (struct pine *, char **)) GLO_TITLE_BACK_COLOR = cpystr(DEFAULT_TITLE_BACK_RGB); GLO_TITLECLOSED_FORE_COLOR = cpystr(DEFAULT_TITLECLOSED_FORE_RGB); GLO_TITLECLOSED_BACK_COLOR = cpystr(DEFAULT_TITLECLOSED_BACK_RGB); + GLO_FOLDER_FORE_COLOR = cpystr(DEFAULT_NORM_FORE_RGB); + GLO_DIRECTORY_FORE_COLOR = cpystr(DEFAULT_NORM_FORE_RGB); + GLO_FOLDER_LIST_FORE_COLOR = cpystr(DEFAULT_NORM_FORE_RGB); GLO_METAMSG_FORE_COLOR = cpystr(DEFAULT_METAMSG_FORE_RGB); GLO_METAMSG_BACK_COLOR = cpystr(DEFAULT_METAMSG_BACK_RGB); GLO_QUOTE1_FORE_COLOR = cpystr(DEFAULT_QUOTE1_FORE_RGB); @@ -2800,6 +2813,8 @@ feature_list(int index) F_ENABLE_STRIP_SIGDASHES, h_config_strip_sigdashes, PREF_RPLY, 0}, {"forward-as-attachment", "Forward messages as attachments", F_FORWARD_AS_ATTACHMENT, h_config_forward_as_attachment, PREF_RPLY, 0}, + {"preserve-original-fields", NULL, + F_PRESERVE_ORIGINAL_FIELD, h_config_preserve_field, PREF_RPLY, 0}, /* Sending Prefs */ {"disable-sender", "Do Not Generate Sender Header", @@ -6401,6 +6416,9 @@ set_current_color_vals(struct pine *ps) set_color_val(&vars[V_TITLE_FORE_COLOR], 1); set_color_val(&vars[V_TITLECLOSED_FORE_COLOR], 0); + set_color_val(&vars[V_FOLDER_FORE_COLOR], 0); + set_color_val(&vars[V_DIRECTORY_FORE_COLOR], 0); + set_color_val(&vars[V_FOLDER_LIST_FORE_COLOR], 0); set_color_val(&vars[V_STATUS_FORE_COLOR], 1); set_color_val(&vars[V_KEYLABEL_FORE_COLOR], 1); set_color_val(&vars[V_KEYNAME_FORE_COLOR], 1); @@ -6425,6 +6443,7 @@ set_current_color_vals(struct pine *ps) set_color_val(&vars[V_INCUNSEEN_FORE_COLOR], 0); set_color_val(&vars[V_SIGNATURE_FORE_COLOR], 0); + set_current_val(&ps->vars[V_INDEX_TOKEN_COLORS], TRUE, TRUE); set_current_val(&ps->vars[V_VIEW_HDR_COLORS], TRUE, TRUE); set_current_val(&ps->vars[V_KW_COLORS], TRUE, TRUE); set_custom_spec_colors(ps); @@ -6577,6 +6596,11 @@ var_defaults_to_rev(struct variable *v) void set_custom_spec_colors(struct pine *ps) { + if(ps->index_token_colors) + free_spec_colors(&ps->index_token_colors); + + ps->index_token_colors = spec_colors_from_varlist(ps->VAR_INDEX_TOKEN_COLORS, 1); + if(ps->hdr_colors) free_spec_colors(&ps->hdr_colors); @@ -7739,6 +7763,12 @@ config_help(int var, int feature) case V_TITLECLOSED_FORE_COLOR : case V_TITLECLOSED_BACK_COLOR : return(h_config_titleclosed_color); + case V_FOLDER_FORE_COLOR: + return(h_config_folder_color); + case V_DIRECTORY_FORE_COLOR: + return(h_config_directory_color); + case V_FOLDER_LIST_FORE_COLOR: + return(h_config_folder_list_color); case V_STATUS_FORE_COLOR : case V_STATUS_BACK_COLOR : return(h_config_status_color); @@ -7809,6 +7839,8 @@ config_help(int var, int feature) return(h_config_metamsg_color); case V_VIEW_HDR_COLORS : return(h_config_customhdr_color); + case V_INDEX_TOKEN_COLORS : + return(h_config_indextoken_color); case V_PRINTER : return(h_config_printer); case V_PERSONAL_PRINT_CATEGORY : diff --git a/pith/conf.h b/pith/conf.h index 4c6bae4a..54c23ff5 100644 --- a/pith/conf.h +++ b/pith/conf.h @@ -374,6 +374,18 @@ #define GLO_TITLECLOSED_FORE_COLOR vars[V_TITLECLOSED_FORE_COLOR].global_val.p #define VAR_TITLECLOSED_BACK_COLOR vars[V_TITLECLOSED_BACK_COLOR].current_val.p #define GLO_TITLECLOSED_BACK_COLOR vars[V_TITLECLOSED_BACK_COLOR].global_val.p +#define VAR_FOLDER_FORE_COLOR vars[V_FOLDER_FORE_COLOR].current_val.p +#define GLO_FOLDER_FORE_COLOR vars[V_FOLDER_FORE_COLOR].global_val.p +#define VAR_FOLDER_BACK_COLOR vars[V_FOLDER_BACK_COLOR].current_val.p +#define GLO_FOLDER_BACK_COLOR vars[V_FOLDER_BACK_COLOR].global_val.p +#define VAR_DIRECTORY_FORE_COLOR vars[V_DIRECTORY_FORE_COLOR].current_val.p +#define GLO_DIRECTORY_FORE_COLOR vars[V_DIRECTORY_FORE_COLOR].global_val.p +#define VAR_DIRECTORY_BACK_COLOR vars[V_DIRECTORY_BACK_COLOR].current_val.p +#define GLO_DIRECTORY_BACK_COLOR vars[V_DIRECTORY_BACK_COLOR].global_val.p +#define VAR_FOLDER_LIST_FORE_COLOR vars[V_FOLDER_LIST_FORE_COLOR].current_val.p +#define GLO_FOLDER_LIST_FORE_COLOR vars[V_FOLDER_LIST_FORE_COLOR].global_val.p +#define VAR_FOLDER_LIST_BACK_COLOR vars[V_FOLDER_LIST_BACK_COLOR].current_val.p +#define GLO_FOLDER_LIST_BACK_COLOR vars[V_FOLDER_LIST_BACK_COLOR].global_val.p #define VAR_STATUS_FORE_COLOR vars[V_STATUS_FORE_COLOR].current_val.p #define VAR_STATUS_BACK_COLOR vars[V_STATUS_BACK_COLOR].current_val.p #define VAR_HEADER_GENERAL_FORE_COLOR vars[V_HEADER_GENERAL_FORE_COLOR].current_val.p @@ -447,6 +459,7 @@ #define VAR_PROMPT_FORE_COLOR vars[V_PROMPT_FORE_COLOR].current_val.p #define VAR_PROMPT_BACK_COLOR vars[V_PROMPT_BACK_COLOR].current_val.p #define VAR_VIEW_HDR_COLORS vars[V_VIEW_HDR_COLORS].current_val.l +#define VAR_INDEX_TOKEN_COLORS vars[V_INDEX_TOKEN_COLORS].current_val.l #ifdef SMIME #define VAR_PUBLICCERT_DIR vars[V_PUBLICCERT_DIR].current_val.p #define GLO_PUBLICCERT_DIR vars[V_PUBLICCERT_DIR].global_val.p diff --git a/pith/conftype.h b/pith/conftype.h index d1fddddb..c654f6c5 100644 --- a/pith/conftype.h +++ b/pith/conftype.h @@ -204,6 +204,12 @@ typedef enum { V_PERSONAL_NAME = 0 , V_TITLE_BACK_COLOR , V_TITLECLOSED_FORE_COLOR , V_TITLECLOSED_BACK_COLOR + , V_FOLDER_FORE_COLOR + , V_FOLDER_BACK_COLOR + , V_DIRECTORY_FORE_COLOR + , V_DIRECTORY_BACK_COLOR + , V_FOLDER_LIST_FORE_COLOR + , V_FOLDER_LIST_BACK_COLOR , V_STATUS_FORE_COLOR , V_STATUS_BACK_COLOR , V_KEYLABEL_FORE_COLOR @@ -256,6 +262,7 @@ typedef enum { V_PERSONAL_NAME = 0 , V_IND_FROM_BACK_COLOR , V_IND_OP_FORE_COLOR , V_IND_OP_BACK_COLOR + , V_INDEX_TOKEN_COLORS , V_VIEW_HDR_COLORS , V_KW_COLORS #if defined(DOS) || defined(OS2) @@ -516,6 +523,7 @@ typedef enum { F_RENDER_HTML_INTERNALLY, F_ENABLE_JUMP_CMD, F_FORWARD_AS_ATTACHMENT, + F_PRESERVE_ORIGINAL_FIELD, #ifndef _WINDOWS F_USE_SYSTEM_TRANS, #endif /* ! _WINDOWS */ diff --git a/pith/filter.c b/pith/filter.c index b8712b23..692d6319 100644 --- a/pith/filter.c +++ b/pith/filter.c @@ -1021,7 +1021,7 @@ gf_bytes_piped(void) */ char * gf_filter(char *cmd, char *prepend, STORE_S *source_so, gf_io_t pc, - FILTLIST_S *aux_filters, int disable_reset, + FILTLIST_S *aux_filters, int silent, int disable_reset, void (*pipecb_f)(PIPE_S *, int, void *)) { unsigned char c, obuf[MAX(MB_LEN_MAX,32)]; @@ -1058,8 +1058,9 @@ gf_filter(char *cmd, char *prepend, STORE_S *source_so, gf_io_t pc, * Spawn filter feeding it data, and reading what it writes. */ so_seek(source_so, 0L, 0); - flags = PIPE_WRITE | PIPE_READ | PIPE_NOSHELL | - (!disable_reset ? PIPE_RESET : 0); + flags = PIPE_WRITE | PIPE_READ | PIPE_NOSHELL + | (silent ? PIPE_SILENT : 0) + | (!disable_reset ? PIPE_RESET : 0); if((fpipe = open_system_pipe(cmd, NULL, NULL, flags, 0, pipecb_f, pipe_report_error)) != NULL){ diff --git a/pith/filter.h b/pith/filter.h index 07cfbd7a..9916803d 100644 --- a/pith/filter.h +++ b/pith/filter.h @@ -176,7 +176,7 @@ void gf_set_terminal(gf_io_t); char *gf_pipe(gf_io_t, gf_io_t); long gf_bytes_piped(void); char *gf_filter(char *, char *, STORE_S *, gf_io_t, FILTLIST_S *, int, - void (*)(PIPE_S *, int, void *)); + int, void (*)(PIPE_S *, int, void *)); void gf_binary_b64(FILTER_S *, int); void gf_b64_binary(FILTER_S *, int); void gf_qp_8bit(FILTER_S *, int); diff --git a/pith/handle.h b/pith/handle.h index a6f87ada..ab551868 100644 --- a/pith/handle.h +++ b/pith/handle.h @@ -40,6 +40,7 @@ typedef struct handle_s { unsigned using_is_used:1; /* bit below is being used */ unsigned is_used:1; /* if not, remove it from list */ unsigned color_unseen:1; /* we're coloring folders with unseen */ + unsigned color_folder:1; /* and just folders for that matter... */ unsigned is_dual_do_open:1; /* choosing this handle means open */ union { struct { /* URL corresponding to this handle */ diff --git a/pith/mailindx.c b/pith/mailindx.c index f3b68bfb..09cdc2c8 100644 --- a/pith/mailindx.c +++ b/pith/mailindx.c @@ -573,6 +573,17 @@ static INDEX_PARSE_T itokens[] = { {NULL, iNothing, FOR_NOTHING} }; +INDEX_PARSE_T itokensinv[sizeof(itokens)/sizeof(itokens[0])]; + +void +inverse_itokens(void) +{ + INDEX_PARSE_T *pt; + for (pt = itokens; pt->name; pt++) + itokensinv[pt->ctype].ctype = pt - itokens; + +} + INDEX_PARSE_T * itoken(int i) { @@ -1990,6 +2001,7 @@ format_index_index_line(INDEXDATA_S *idata) ICE_S *ice, **icep; IFIELD_S *ifield; IELEM_S *ielem; + COLOR_PAIR *color = NULL; struct variable *vars = ps_global->vars; dprint((8, "=== format_index_line(msgno=%ld,rawno=%ld) ===\n", @@ -2933,6 +2945,14 @@ format_index_index_line(INDEXDATA_S *idata) if(!ifield->ielem){ ielem = new_ielem(&ifield->ielem); + if(color = hdr_color(itokens[itokensinv[cdesc->ctype].ctype].name, NULL, ps_global->index_token_colors)){ + if(pico_usingcolor()){ + ielem->color = new_color_pair(color->fg, color->bg); + ielem->type = eTypeCol; + } + free_color_pair(&color); + } + ielem->freedata = 1; ielem->data = cpystr(str); ielem->datalen = strlen(str); diff --git a/pith/mailindx.h b/pith/mailindx.h index 4c45268c..8eb23033 100644 --- a/pith/mailindx.h +++ b/pith/mailindx.h @@ -37,6 +37,7 @@ void init_index_format(char *, INDEX_COL_S **); void free_index_format(INDEX_COL_S **); void reset_index_format(void); INDEX_PARSE_T *itoktype(char *, int); +void inverse_itokens(void); char *prepend_keyword_subject(MAILSTREAM *, long, char *, SubjKW, IELEM_S **, char *); int get_index_line_color(MAILSTREAM *, SEARCHSET *, PAT_STATE **, COLOR_PAIR **); void setup_for_index_index_screen(void); diff --git a/pith/pine.hlp b/pith/pine.hlp index b4cb5283..07ff3cc0 100644 --- a/pith/pine.hlp +++ b/pith/pine.hlp @@ -141,7 +141,7 @@ reasonable place to be called from. Dummy change to get revision in pine.hlp ============= h_revision ================= -$Id: pine.hlp 1266 2009-07-14 18:39:12Z hubert@u.washington.edu $ +$Id: pine.hlp 1266 2013-02-07 18:39:12Z chappa@washington.edu $ ============= h_news ================= <HTML> <HEAD> @@ -180,7 +180,19 @@ Additions include: <P> <UL> + <LI> Add ability to <A HREF="h_config_folder_color">color folder names</A>, <A +HREF="h_config_directory_color">directory names</A>, + and <A HREF="h_config_folder_list_color">text</A> in the FOLDER SCREEN + <LI> Add the ability to <A HREF="h_config_indextoken_color">color any token</A> +used in the display of the INDEX SCREEN. + <LI> New option <A HREF="h_config_preserve_field"><!--#echo var="FEAT_preserve-original-fields"--></A> +that adds the ability to preserve To: and Cc: fields when replying to a +message, as specified by original sender. + <LI> Add a _SILENT_ token to the +<A HREF="h_config_display_filters">list of tokens</A> + for a display filter, so that Alpine will not redraw the screen when it is unnecessary. <LI> Quota command includes subcommands for printing, forwarding, etc. + </UL> <P> @@ -3271,6 +3283,7 @@ There are also additional details on <li><a href="h_config_no_fcc_attach">FEATURE: <!--#echo var="FEAT_fcc-without-attachments"--></a> <li><a href="h_config_force_arrow">FEATURE: <!--#echo var="FEAT_force-arrow-cursor"--></a> <li><a href="h_config_forward_as_attachment">FEATURE: <!--#echo var="FEAT_forward-as-attachment"--></a> +<li><a href="h_config_preserve_field">FEATURE: <!--#echo var="FEAT_preserve-original-fields"--></a> <li><a href="h_config_quell_empty_dirs">FEATURE: <!--#echo var="FEAT_quell-empty-directories"--></a> <li><a href="h_config_hide_nntp_path">FEATURE: <!--#echo var="FEAT_hide-nntp-path"--></a> <li><a href="h_config_attach_in_reply">FEATURE: <!--#echo var="FEAT_include-attachments-in-reply"--></a> @@ -22932,6 +22945,13 @@ This number could be used as a session key. It is sent in this way to improve security. The number is unique to the current Alpine session and is only generated once per session. </DD> + +<DT>_SILENT_</DT> +<DD>When the filter is executed, this token tells Alpine not to repaint +the screen while the command is being executed. This can be used with +filters that do not interact with the user, and therefore repainting +the screen is not necessary. +</DD> </DL> <P> @@ -27766,6 +27786,42 @@ the sender of the forwarded message, or process it as part of a spam report. <End of help on this topic> </BODY> </HTML> +====== h_config_preserve_field ===== +<HTML> +<HEAD> +<TITLE>FEATURE: <!--#echo var="FEAT_preserve-original-fields"--></TITLE> +</HEAD> +<BODY> +<H1>FEATURE: <!--#echo var="FEAT_preserve-original-fields"--></H1> + +When you reply to a message that has been sent to several recipients, some of +them may have been added in different parts of the headers. For example, +some of the recipients will be listed in the To: header, while others will +be listed in the Cc: header. +<P> +If this feature is disabled, the default behavior of Alpine will be used, +and that is, that almost all recipients of the message will be +listed in the Cc: field. However, if you enable this feature, then, +excepting you, recipients originally listed in the Cc: field will be +listed again in the Cc: field, and those listed in the To: field in the +original message will be listed in the To: field again. The person in the +From: field will be added to the To: field. +<P> +Note that this will cause some messages that you send in Alpine to look +different. In particular, the To: field of a message will not be put in the +Cc: field, as is normally done. In fact, most people expect this to happen. +If you find that this is a problem you should disable this feature. You can +still make Alpine have this behavior on a per message basis. In order to do +this, you will see a new option in the menu for the "Reply to all +recipients?" question. In this case, pressing "p" will make +Alpine toggle its question so you can preserve the To: and Cc: fields for that +message. +<UL> +<LI><A HREF="h_finding_help">Finding more information and requesting help</A> +</UL><P> +<End of help on this topic> +</BODY> +</HTML> ====== h_config_sub_lists ===== <HTML> <HEAD> @@ -31391,6 +31447,99 @@ to see the available Editing and Navigation commands. <End of help on this topic> </BODY> </HTML> +====== h_config_folder_color ===== +<HTML> +<HEAD> +<TITLE>OPTION: Folder Color</TITLE> +</HEAD> +<BODY> +<H1>OPTION: Folder Color</H1> + +Sets the colors Alpine uses for coloring a folder in the FOLDER LIST +screen. By default, the Folder Color is the normal text color. + +<P> +If you set a color for this feature, other than the normal color +(the default), or a color for +<A HREF="h_config_directory_color">Directory Color</A>, then directories +will be colored according to the color specified in the +<A HREF="h_config_directory_color">Directory Color</A> option. In this +case, the color will be the only indication that the colored name +refers to a directory. The normal behavior is that Alpine +indicates that a name refers to a directory by appending a +separator (like "/" or ".") to the name of +the folder. + +<P> +If a folder is a directory, then the folder name will be painted +according to the color defined by this variable, and a separator +indicator (like "/" or ".") will be added +to the name. That +indicator will be painted according to the color defined in the +<A HREF="h_config_directory_color">Directory Color</A> option. + +<P> +<End of help on this topic> +</BODY> +</HTML> +====== h_config_directory_color ===== +<HTML> +<HEAD> +<TITLE>OPTION: Directory Color</TITLE> +</HEAD> +<BODY> +<H1>OPTION: Directory Color</H1> + +Sets the colors Alpine uses for coloring a directory in the FOLDER LIST +screen. By default, the Folder Color is the normal text color. +<P> +If you set a color for this feature, other than the normal color +(the default), or a color for +<A HREF="h_config_folder_color">Folder Color</A>, then folders +will be colored according to the color specified in the +<A HREF="h_config_folder_color">Folder Color</A> option. In this +case, the color will be the only indication that the colored name +refers to a directory. The normal behavior is that Alpine +indicates that a name refers to a directory by appending a +separator (like "/" or ".") to the name of +the folder. +<P> +If a folder is a directory, then the folder name will be painted +according to the color defined by the option +<A HREF="h_config_folder_color">Folder Color</A>, and the separator +indicator (like "/" or ".") will be added +after the name. That +indicator will be painted according to the color defined in this +option. +<P> +<End of help on this topic> +</BODY> +</HTML> +====== h_config_folder_list_color ===== +<HTML> +<HEAD> +<TITLE>OPTION: Folder-List Color</TITLE> +</HEAD> +<BODY> +<H1>OPTION: Folder-List Color</H1> + +Sets the colors Alpine uses for coloring normal text in the FOLDER LIST +screen. By default, the Folder-List Color is the normal text color. +<P> +This text refers to the informative text that Alpine displays so you +can recognize each collection. The color of the content of each collection +is determined by the options <A HREF="h_config_folder_color">Folder Color</A> +and <A HREF="h_config_directory_color">Directory Color</A>. +<P> +Unlike the options +<A HREF="h_config_folder_color">Folder Color</A> +and <A HREF="h_config_directory_color">Directory Color</A>, configuring +this option does not affect the way that Alpine reports folders, +directories and folders that are directories. +<P> +<End of help on this topic> +</BODY> +</HTML> ====== h_config_incunseen_color ===== <HTML> <HEAD> @@ -31713,6 +31862,35 @@ to see the available Editing and Navigation commands. <End of help on this topic> </BODY> </HTML> +====== h_config_indextoken_color ===== +<HTML> +<HEAD> +<TITLE>OPTION: <!--#echo var="VAR_index-token-colors"--></TITLE> +</HEAD> +<BODY> +<H1>OPTION: <!--#echo var="VAR_index-token-colors"--></H1> + +This option allows you to set up the color in which any token, not specified by the +previous options, will be colored in the MESSAGE INDEX screen. +<P> +In order to use this option, you must press the "I" <B>IndxHdr</B> command, and add +a token that can be used in the index format. +The list of available tokens is <A HREF="h_index_tokens">here</A>. +<P> +If you fail to enter a valid token your entry will be ignored, and you will be asked to +enter a new one. Once you have entered a valid token, a line will be added to the +configuration screen that you can use to set up the colors in which that token will +be painted. This is done in the same way that you configure colors for other +variables. + +<A HREF="h_color_setup">Descriptions of the available commands</A> +<P> +Look <A HREF="h_edit_nav_cmds">here</A> +to see the available Editing and Navigation commands. +<P> +<End of help on this topic> +</BODY> +</HTML> ====== h_config_customhdr_pattern ===== <HTML> <HEAD> @@ -35324,3 +35502,6 @@ in size will be selected. Examples: 2176, 1.53K (1530), or 3M (3000000). ========== h_select_by_smaller_size ========== Enter a number or ^C to cancel. All messages less than this many characters in size will be selected. Examples: 2176, 1.53K (1530), or 3M (3000000). +========== h_preserve_field ========== +Use 'p' to toggle between preserving or not preserving the original To: +and Cc: fields of the message. Enter ^C to cancel message. diff --git a/pith/reply.c b/pith/reply.c index 03468af3..3445097f 100644 --- a/pith/reply.c +++ b/pith/reply.c @@ -373,20 +373,37 @@ reply_seed(struct pine *ps, ENVELOPE *outgoing, ENVELOPE *env, /* Put Reply-To or From in To. */ *to_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->to, (ADDRESS *) NULL, saved_from, RCA_ALL); - /* and the rest in cc */ if(replytoall){ - *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, + if(ps->preserve){ + while(*to_tail) + to_tail = &(*to_tail)->next; + + *to_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->to, + (ADDRESS *) NULL, saved_to, RCA_ALL); + + while(*to_tail) + to_tail = &(*to_tail)->next; + + *to_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, + outgoing->to, saved_resent, RCA_ALL); + + *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, + outgoing->to, saved_cc, RCA_ALL); + } + else{ /* and the rest in cc */ + *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, outgoing->to, saved_to, RCA_ALL); - while(*cc_tail) /* stay on last address */ - cc_tail = &(*cc_tail)->next; + while(*cc_tail) /* stay on last address */ + cc_tail = &(*cc_tail)->next; - *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, + *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, outgoing->to, saved_cc, RCA_ALL); - while(*cc_tail) - cc_tail = &(*cc_tail)->next; + while(*cc_tail) + cc_tail = &(*cc_tail)->next; - *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, + *cc_tail = reply_cp_addr(ps, 0, NULL, NULL, outgoing->cc, outgoing->to, saved_resent, RCA_ALL); + } } } else if(saved_to){ diff --git a/pith/state.c b/pith/state.c index e88c27f6..94f95f10 100644 --- a/pith/state.c +++ b/pith/state.c @@ -183,6 +183,9 @@ free_pine_struct(struct pine **pps) if((*pps)->hdr_colors) free_spec_colors(&(*pps)->hdr_colors); + if((*pps)->index_token_colors) + free_spec_colors(&(*pps)->index_token_colors); + if((*pps)->keywords) free_keyword_list(&(*pps)->keywords); diff --git a/pith/state.h b/pith/state.h index 93db4f4b..47e97ce4 100644 --- a/pith/state.h +++ b/pith/state.h @@ -242,6 +242,7 @@ struct pine { char **feat_list_back_compat; SPEC_COLOR_S *hdr_colors; /* list of configed colors for view */ + SPEC_COLOR_S *index_token_colors; /* list of configed colors for index */ short init_context; @@ -286,6 +287,8 @@ struct pine { SortOrder def_sort, /* Default sort type */ sort_types[22]; + int preserve; + int last_expire_year, last_expire_month; int printer_category; |