Changeset 3783:9af868b4220d
- Timestamp:
- 2004-12-07 11:50:04 (4 years ago)
- Author:
- Thomas Roessler <roessler@…>
- Branch:
- HEAD
- Message:
-
Add send2-hook and fix alternates handling.
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r3761
|
r3783
|
|
| 528 | 528 | case OP_COMPOSE_EDIT_FROM: |
| 529 | 529 | menu->redraw = edit_address_list (HDR_FROM, &msg->env->from); |
| | 530 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 530 | 531 | break; |
| 531 | 532 | case OP_COMPOSE_EDIT_TO: |
| 532 | 533 | menu->redraw = edit_address_list (HDR_TO, &msg->env->to); |
| 533 | | break; |
| | 534 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 535 | break; |
| 534 | 536 | case OP_COMPOSE_EDIT_BCC: |
| 535 | 537 | menu->redraw = edit_address_list (HDR_BCC, &msg->env->bcc); |
| | 538 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 536 | 539 | break; |
| 537 | 540 | case OP_COMPOSE_EDIT_CC: |
| 538 | 541 | menu->redraw = edit_address_list (HDR_CC, &msg->env->cc); |
| 539 | | break; |
| | 542 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 543 | break; |
| 540 | 544 | case OP_COMPOSE_EDIT_SUBJECT: |
| 541 | 545 | if (msg->env->subject) |
| … |
… |
|
| 551 | 555 | mutt_paddstr (W, msg->env->subject); |
| 552 | 556 | } |
| 553 | | break; |
| | 557 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 558 | break; |
| 554 | 559 | case OP_COMPOSE_EDIT_REPLY_TO: |
| 555 | 560 | menu->redraw = edit_address_list (HDR_REPLYTO, &msg->env->reply_to); |
| | 561 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 556 | 562 | break; |
| 557 | 563 | case OP_COMPOSE_EDIT_FCC: |
| … |
… |
|
| 566 | 572 | } |
| 567 | 573 | MAYBE_REDRAW (menu->redraw); |
| 568 | | break; |
| | 574 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 575 | break; |
| 569 | 576 | case OP_COMPOSE_EDIT_MESSAGE: |
| 570 | 577 | if (Editor && (mutt_strcmp ("builtin", Editor) != 0) && !option (OPTEDITHDRS)) |
| … |
… |
|
| 573 | 580 | mutt_update_encoding (msg->content); |
| 574 | 581 | menu->redraw = REDRAW_CURRENT | REDRAW_STATUS; |
| | 582 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 575 | 583 | break; |
| 576 | 584 | } |
| … |
… |
|
| 612 | 620 | } |
| 613 | 621 | |
| 614 | | menu->redraw = REDRAW_FULL; |
| | 622 | menu->redraw = REDRAW_FULL; |
| | 623 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 615 | 624 | break; |
| 616 | 625 | |
| … |
… |
|
| 643 | 652 | } |
| 644 | 653 | |
| 645 | | break; |
| | 654 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 655 | break; |
| 646 | 656 | |
| 647 | 657 | |
| … |
… |
|
| 689 | 699 | menu->redraw |= REDRAW_INDEX | REDRAW_STATUS; |
| 690 | 700 | } |
| 691 | | break; |
| | 701 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 702 | break; |
| 692 | 703 | |
| 693 | 704 | case OP_COMPOSE_ATTACH_MESSAGE: |
| … |
… |
|
| 795 | 806 | SortAux = oldSortAux; |
| 796 | 807 | } |
| 797 | | break; |
| | 808 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 809 | break; |
| 798 | 810 | |
| 799 | 811 | case OP_DELETE: |
| … |
… |
|
| 814 | 826 | |
| 815 | 827 | menu->redraw |= REDRAW_STATUS; |
| 816 | | break; |
| | 828 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 829 | break; |
| 817 | 830 | |
| 818 | 831 | #define CURRENT idx[menu->current]->content |
| … |
… |
|
| 832 | 845 | mutt_message (_("The current attachment will be converted.")); |
| 833 | 846 | menu->redraw = REDRAW_CURRENT; |
| | 847 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 834 | 848 | break; |
| 835 | 849 | } |
| … |
… |
|
| 848 | 862 | menu->redraw = REDRAW_CURRENT; |
| 849 | 863 | } |
| 850 | | break; |
| | 864 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 865 | break; |
| 851 | 866 | |
| 852 | 867 | case OP_COMPOSE_UPDATE_ENCODING: |
| … |
… |
|
| 867 | 882 | menu->redraw = REDRAW_CURRENT | REDRAW_STATUS; |
| 868 | 883 | } |
| | 884 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 869 | 885 | break; |
| 870 | 886 | |
| … |
… |
|
| 885 | 901 | menu->redraw = REDRAW_CURRENT; |
| 886 | 902 | } |
| 887 | | break; |
| | 903 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 904 | break; |
| 888 | 905 | |
| 889 | 906 | case OP_COMPOSE_EDIT_ENCODING: |
| … |
… |
|
| 903 | 920 | mutt_error _("Invalid encoding."); |
| 904 | 921 | } |
| 905 | | break; |
| | 922 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 923 | break; |
| 906 | 924 | |
| 907 | 925 | case OP_COMPOSE_SEND_MESSAGE: |
| | 926 | |
| | 927 | /* Note: We don't invoke send2-hook here, since we want to leave |
| | 928 | * users an opportunity to change settings from the ":" prompt. |
| | 929 | */ |
| 908 | 930 | |
| 909 | 931 | if(check_attachments(idx, idxlen) != 0) |
| … |
… |
|
| 937 | 959 | mutt_update_encoding (idx[menu->current]->content); |
| 938 | 960 | menu->redraw = REDRAW_CURRENT | REDRAW_STATUS; |
| | 961 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 939 | 962 | break; |
| 940 | 963 | |
| … |
… |
|
| 952 | 975 | # endif |
| 953 | 976 | menu->redraw = REDRAW_INDEX; |
| | 977 | /* No send2hook since this doesn't change the message. */ |
| 954 | 978 | break; |
| 955 | 979 | |
| … |
… |
|
| 969 | 993 | menu->redraw = REDRAW_CURRENT; |
| 970 | 994 | |
| | 995 | /* No send2hook since this doesn't change the message. */ |
| 971 | 996 | break; |
| 972 | 997 | |
| … |
… |
|
| 995 | 1020 | |
| 996 | 1021 | } |
| 997 | | break; |
| | 1022 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 1023 | break; |
| 998 | 1024 | |
| 999 | 1025 | case OP_COMPOSE_NEW_MIME: |
| … |
… |
|
| 1062 | 1088 | } |
| 1063 | 1089 | } |
| 1064 | | break; |
| | 1090 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 1091 | break; |
| 1065 | 1092 | |
| 1066 | 1093 | case OP_COMPOSE_EDIT_MIME: |
| … |
… |
|
| 1071 | 1098 | menu->redraw = REDRAW_FULL; |
| 1072 | 1099 | } |
| 1073 | | break; |
| | 1100 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 1101 | break; |
| 1074 | 1102 | |
| 1075 | 1103 | case OP_VIEW_ATTACH: |
| … |
… |
|
| 1078 | 1106 | mutt_attach_display_loop (menu, op, NULL, NULL, NULL, &idx, &idxlen, NULL, 0); |
| 1079 | 1107 | menu->redraw = REDRAW_FULL; |
| | 1108 | /* no send2hook, since this doesn't modify the message */ |
| 1080 | 1109 | break; |
| 1081 | 1110 | |
| … |
… |
|
| 1084 | 1113 | mutt_save_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content, NULL, menu); |
| 1085 | 1114 | MAYBE_REDRAW (menu->redraw); |
| | 1115 | /* no send2hook, since this doesn't modify the message */ |
| 1086 | 1116 | break; |
| 1087 | 1117 | |
| … |
… |
|
| 1089 | 1119 | CHECK_COUNT; |
| 1090 | 1120 | mutt_print_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content); |
| | 1121 | /* no send2hook, since this doesn't modify the message */ |
| 1091 | 1122 | break; |
| 1092 | 1123 | |
| … |
… |
|
| 1096 | 1127 | mutt_pipe_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content, op == OP_FILTER); |
| 1097 | 1128 | if (op == OP_FILTER) /* cte might have changed */ |
| 1098 | | menu->redraw = menu->tagprefix ? REDRAW_FULL : REDRAW_CURRENT; |
| | 1129 | menu->redraw = menu->tagprefix ? REDRAW_FULL : REDRAW_CURRENT; |
| 1099 | 1130 | menu->redraw |= REDRAW_STATUS; |
| | 1131 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 1100 | 1132 | break; |
| 1101 | 1133 | |
| … |
… |
|
| 1192 | 1224 | msg->security = crypt_pgp_send_menu (msg, &menu->redraw); |
| 1193 | 1225 | redraw_crypt_lines (msg); |
| 1194 | | break; |
| | 1226 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 1227 | break; |
| 1195 | 1228 | |
| 1196 | 1229 | |
| … |
… |
|
| 1217 | 1250 | msg->security = crypt_smime_send_menu(msg, &menu->redraw); |
| 1218 | 1251 | redraw_crypt_lines (msg); |
| 1219 | | break; |
| | 1252 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 1253 | break; |
| 1220 | 1254 | |
| 1221 | 1255 | |
| … |
… |
|
| 1224 | 1258 | |
| 1225 | 1259 | mix_make_chain (&msg->chain, &menu->redraw); |
| | 1260 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| 1226 | 1261 | break; |
| 1227 | 1262 | #endif |
-
|
r3558
|
r3783
|
|
| 67 | 67 | } |
| 68 | 68 | |
| 69 | | mutt_extract_token (&command, s, (data & (M_FOLDERHOOK | M_SENDHOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) ? M_TOKEN_SPACE : 0); |
| | 69 | mutt_extract_token (&command, s, (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) ? M_TOKEN_SPACE : 0); |
| 70 | 70 | |
| 71 | 71 | if (!command.data) |
| … |
… |
|
| 118 | 118 | !mutt_strcmp (pattern.data, ptr->rx.pattern)) |
| 119 | 119 | { |
| 120 | | if (data & (M_FOLDERHOOK | M_SENDHOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) |
| | 120 | if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK)) |
| 121 | 121 | { |
| 122 | 122 | /* these hooks allow multiple commands with the same |
| … |
… |
|
| 147 | 147 | } |
| 148 | 148 | |
| 149 | | if (data & (M_SENDHOOK | M_SAVEHOOK | M_FCCHOOK | M_MESSAGEHOOK | M_REPLYHOOK)) |
| | 149 | if (data & (M_SENDHOOK | M_SEND2HOOK | M_SAVEHOOK | M_FCCHOOK | M_MESSAGEHOOK | M_REPLYHOOK)) |
| 150 | 150 | { |
| 151 | 151 | if ((pat = mutt_pattern_comp (pattern.data, |
| 152 | | (data & (M_SENDHOOK | M_FCCHOOK)) ? 0 : M_FULL_MSG, |
| | 152 | (data & (M_SENDHOOK | M_SEND2HOOK | M_FCCHOOK)) ? 0 : M_FULL_MSG, |
| 153 | 153 | err)) == NULL) |
| 154 | 154 | goto error; |
-
|
r3757
|
r3783
|
|
| 612 | 612 | } |
| 613 | 613 | |
| | 614 | static void _alternates_clean (void) |
| | 615 | { |
| | 616 | int i; |
| | 617 | if (Context && Context->msgcount) |
| | 618 | { |
| | 619 | for (i = 0; i < Context->msgcount; i++) |
| | 620 | Context->hdrs[i]->recip_valid = 0; |
| | 621 | } |
| | 622 | } |
| | 623 | |
| | 624 | static int parse_alternates (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) |
| | 625 | { |
| | 626 | _alternates_clean(); |
| | 627 | return parse_rx_list (buf, s, data, err); |
| | 628 | } |
| | 629 | |
| | 630 | static int parse_unalternates (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) |
| | 631 | { |
| | 632 | _alternates_clean(); |
| | 633 | return parse_rx_unlist (buf, s, data, err); |
| | 634 | } |
| | 635 | |
| 614 | 636 | static int parse_spam_list (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err) |
| 615 | 637 | { |
| … |
… |
|
| 1067 | 1089 | pp->rx = safe_calloc (1, sizeof (regex_t)); |
| 1068 | 1090 | pp->pattern = safe_strdup ((char *) p->init); |
| 1069 | | if (mutt_strcmp (p->option, "alternates") == 0) |
| 1070 | | flags |= REG_ICASE; |
| 1071 | | else if (mutt_strcmp (p->option, "mask") != 0) |
| | 1091 | if (mutt_strcmp (p->option, "mask") != 0) |
| 1072 | 1092 | flags |= mutt_which_case ((const char *) p->init); |
| 1073 | 1093 | if (mutt_strcmp (p->option, "mask") == 0 && *s == '!') |
| … |
… |
|
| 1281 | 1301 | } |
| 1282 | 1302 | |
| 1283 | | if (option(OPTATTACHMSG) && (!mutt_strcmp(MuttVars[idx].option, "alternates") |
| 1284 | | || !mutt_strcmp(MuttVars[idx].option, "reply_regexp"))) |
| | 1303 | if (option(OPTATTACHMSG) && !mutt_strcmp(MuttVars[idx].option, "reply_regexp")) |
| 1285 | 1304 | { |
| 1286 | 1305 | snprintf (err->data, err->dsize, "Operation not permitted when in attach-message mode."); |
| … |
… |
|
| 1298 | 1317 | int not = 0; |
| 1299 | 1318 | |
| 1300 | | /* $alternates is case-insensitive, |
| 1301 | | $mask is case-sensitive */ |
| 1302 | | if (mutt_strcmp (MuttVars[idx].option, "alternates") == 0) |
| 1303 | | flags |= REG_ICASE; |
| 1304 | | else if (mutt_strcmp (MuttVars[idx].option, "mask") != 0) |
| | 1319 | /* $mask is case-sensitive */ |
| | 1320 | if (mutt_strcmp (MuttVars[idx].option, "mask") != 0) |
| 1305 | 1321 | flags |= mutt_which_case (tmp->data); |
| 1306 | 1322 | |
| … |
… |
|
| 1356 | 1372 | } |
| 1357 | 1373 | #undef CUR_ENV |
| 1358 | | } |
| 1359 | | |
| 1360 | | if(Context && Context->msgcount && |
| 1361 | | mutt_strcmp(MuttVars[idx].option, "alternates") == 0) |
| 1362 | | { |
| 1363 | | int i; |
| 1364 | | |
| 1365 | | for(i = 0; i < Context->msgcount; i++) |
| 1366 | | Context->hdrs[i]->recip_valid = 0; |
| 1367 | 1374 | } |
| 1368 | 1375 | } |
-
|
r3759
|
r3783
|
|
| 2825 | 2825 | static int parse_subscribe (BUFFER *, BUFFER *, unsigned long, BUFFER *); |
| 2826 | 2826 | |
| | 2827 | static int parse_alternates (BUFFER *, BUFFER *, unsigned long, BUFFER *); |
| | 2828 | static int parse_unalternates (BUFFER *, BUFFER *, unsigned long, BUFFER *); |
| | 2829 | |
| 2827 | 2830 | struct command_t |
| 2828 | 2831 | { |
| … |
… |
|
| 2833 | 2836 | |
| 2834 | 2837 | struct command_t Commands[] = { |
| 2835 | | { "alternates", parse_rx_list, UL &Alternates }, |
| 2836 | | { "unalternates", parse_rx_unlist, UL &Alternates }, |
| | 2838 | { "alternates", parse_alternates, UL &Alternates }, |
| | 2839 | { "unalternates", parse_unalternates, UL &Alternates }, |
| 2837 | 2840 | #ifdef USE_SOCKET |
| 2838 | 2841 | { "account-hook", mutt_parse_hook, M_ACCOUNTHOOK }, |
| … |
… |
|
| 2874 | 2877 | { "score", mutt_parse_score, 0 }, |
| 2875 | 2878 | { "send-hook", mutt_parse_hook, M_SENDHOOK }, |
| | 2879 | { "send2-hook", mutt_parse_hook, M_SEND2HOOK }, |
| 2876 | 2880 | { "set", parse_set, 0 }, |
| 2877 | 2881 | { "source", parse_source, 0 }, |
-
|
r3706
|
r3783
|
|
| 161 | 161 | #define M_ACCOUNTHOOK (1<<9) |
| 162 | 162 | #define M_REPLYHOOK (1<<10) |
| | 163 | #define M_SEND2HOOK (1<<11) |
| 163 | 164 | |
| 164 | 165 | /* tree characters for linearize_tree and print_enriched_string */ |
-
|
r3706
|
r3783
|
|
| 1321 | 1321 | msg->security = 0; |
| 1322 | 1322 | } |
| | 1323 | |
| | 1324 | /* |
| | 1325 | * This hook is even called for postponed messages, and can, e.g., be |
| | 1326 | * used for setting the editor, the sendmail path, or the |
| | 1327 | * envelope sender. |
| | 1328 | */ |
| | 1329 | mutt_message_hook (NULL, msg, M_SEND2HOOK); |
| | 1330 | |
| 1323 | 1331 | /* wait until now to set the real name portion of our return address so |
| 1324 | 1332 | that $realname can be set in a send-hook */ |