changeset: 7152:19597bb7baa6 user: Kevin McCarthy <ke...@8t8.us> date: Wed Sep 13 15:48:13 2017 -0700 link: http://dev.mutt.org/hg/mutt/rev/19597bb7baa6
Remove \Seen flag setting for imap trash. (see #3966) (see #3860) Commit 323e3d6e5e4c has a side effect where spurious FETCH flag updates after setting the \Seen flag can cause a sync to abort. Remove manually setting \Seen for all trashed message before copying. The next commit will change the imap trash function to use the same code as the imap copy/save function for syncing the message before server-side copying. changeset: 7153:f90712538cd9 user: Kevin McCarthy <ke...@8t8.us> date: Wed Sep 13 15:48:16 2017 -0700 link: http://dev.mutt.org/hg/mutt/rev/f90712538cd9 Change imap copy/save and trash to sync flags, excluding deleted. (closes #3966) (closes #3860) imap_copy_messages() uses a helper to sync the flags before performing a server-side copy. However, it had a bug that the "deleted" flag on a local message, if set, will be propagated to the copy too. Change the copy sync helper to ignore the deleted flag. Then, change the imap trash function to use the same helper. Thanks to Anton Lindqvist for his excellent bug report, suggested fixes, and help testing. changeset: 7154:cb19899fcf00 user: Kevin McCarthy <ke...@8t8.us> date: Wed Sep 13 15:54:31 2017 -0700 link: http://dev.mutt.org/hg/mutt/rev/cb19899fcf00 merge stable diffs (truncated from 1988 to 950 lines): diff -r 3c6f3ca07807 -r cb19899fcf00 OPS --- a/OPS Mon Sep 04 09:40:44 2017 -0700 +++ b/OPS Wed Sep 13 15:54:31 2017 -0700 @@ -144,7 +144,7 @@ OP_PREV_LINE "scroll up one line" OP_PREV_PAGE "move to the previous page" OP_PRINT "print the current entry" -OP_PURGE_MESSAGE "really delete the current entry, bypassing the trash folder" +OP_PURGE_MESSAGE "delete the current entry, bypassing the trash folder" OP_QUERY "query external program for addresses" OP_QUERY_APPEND "append new query results to current results" OP_QUIT "save changes to mailbox and quit" diff -r 3c6f3ca07807 -r cb19899fcf00 crypt.c --- a/crypt.c Mon Sep 04 09:40:44 2017 -0700 +++ b/crypt.c Wed Sep 13 15:54:31 2017 -0700 @@ -153,6 +153,16 @@ return -1; } } + else if (!mutt_strcasecmp ("flowed", + mutt_get_parameter ("format", msg->content->parameter))) + { + if ((i = query_quadoption (OPT_PGPMIMEAUTO, + _("Inline PGP can't be used with format=flowed. Revert to PGP/MIME?"))) != MUTT_YES) + { + mutt_error _("Mail not sent: inline PGP can't be used with format=flowed."); + return -1; + } + } else { /* they really want to send it inline... go for it */ diff -r 3c6f3ca07807 -r cb19899fcf00 gen_defs --- a/gen_defs Mon Sep 04 09:40:44 2017 -0700 +++ b/gen_defs Wed Sep 13 15:54:31 2017 -0700 @@ -10,7 +10,10 @@ help) echo "#ifdef HELP_C" echo "const char *HelpStrings[] = {" - expr='s;^[^ ]* *\(.*\); N_(\1),;' + expr='i\ + /* L10N: Help screen function description.\ + Generated from one of the OPS files. */ +s;^[^ ]* *\(.*\); N_(\1),;' ;; *) echo "enum {" diff -r 3c6f3ca07807 -r cb19899fcf00 imap/imap.c --- a/imap/imap.c Mon Sep 04 09:40:44 2017 -0700 +++ b/imap/imap.c Wed Sep 13 15:54:31 2017 -0700 @@ -1051,8 +1051,9 @@ return rc; } -/* returns 0 if mutt's flags match cached server flags */ -static int compare_flags (HEADER* h) +/* returns 0 if mutt's flags match cached server flags: + * EXCLUDING the deleted flag. */ +static int compare_flags_for_copy (HEADER* h) { IMAP_HEADER_DATA* hd = (IMAP_HEADER_DATA*)h->data; @@ -1064,24 +1065,28 @@ return 1; if (h->replied != hd->replied) return 1; - if (h->deleted != hd->deleted) - return 1; return 0; } -/* Update the IMAP server to reflect the flags a single message. */ -int imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd, +/* Update the IMAP server to reflect the flags for a single message before + * performing a "UID COPY". + * NOTE: This does not sync the "deleted" flag state, because it is not + * desirable to propagate that flag into the copy. + */ +int imap_sync_message_for_copy (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd, int *err_continue) { char flags[LONG_STRING]; char uid[11]; - hdr->changed = 0; - - if (!compare_flags (hdr)) + if (!compare_flags_for_copy (hdr)) { - idata->ctx->changed--; + if (hdr->deleted == HEADER_DATA(hdr)->deleted) + { + hdr->changed = 0; + idata->ctx->changed--; + } return 0; } @@ -1100,8 +1105,8 @@ "\\Flagged ", flags, sizeof (flags)); imap_set_flag (idata, MUTT_ACL_WRITE, hdr->replied, "\\Answered ", flags, sizeof (flags)); - imap_set_flag (idata, MUTT_ACL_DELETE, hdr->deleted, - "\\Deleted ", flags, sizeof (flags)); + imap_set_flag (idata, MUTT_ACL_DELETE, HEADER_DATA(hdr)->deleted, + "\\Deleted ", flags, sizeof (flags)); /* now make sure we don't lose custom tags */ if (mutt_bit_isset (idata->ctx->rights, MUTT_ACL_WRITE)) @@ -1117,7 +1122,8 @@ imap_set_flag (idata, MUTT_ACL_WRITE, 1, "Old ", flags, sizeof (flags)); imap_set_flag (idata, MUTT_ACL_WRITE, 1, "\\Flagged ", flags, sizeof (flags)); imap_set_flag (idata, MUTT_ACL_WRITE, 1, "\\Answered ", flags, sizeof (flags)); - imap_set_flag (idata, MUTT_ACL_DELETE, 1, "\\Deleted ", flags, sizeof (flags)); + imap_set_flag (idata, MUTT_ACL_DELETE, !HEADER_DATA(hdr)->deleted, + "\\Deleted ", flags, sizeof (flags)); mutt_remove_trailing_ws (flags); @@ -1139,11 +1145,18 @@ *err_continue = imap_continue ("imap_sync_message: STORE failed", idata->buf); if (*err_continue != MUTT_YES) + { + hdr->active = 1; return -1; + } } hdr->active = 1; - idata->ctx->changed--; + if (hdr->deleted == HEADER_DATA(hdr)->deleted) + { + hdr->changed = 0; + idata->ctx->changed--; + } return 0; } @@ -2123,9 +2136,11 @@ char mbox[LONG_STRING]; char mmbox[LONG_STRING]; char prompt[LONG_STRING]; - int rc; + int n, rc; IMAP_MBOX mx; int triedcreate = 0; + BUFFER *sync_cmd = NULL; + int err_continue = MUTT_NO; idata = (IMAP_DATA*) ctx->data; @@ -2148,17 +2163,24 @@ strfcpy (mbox, "INBOX", sizeof (mbox)); imap_munge_mbox_name (idata, mmbox, sizeof (mmbox), mbox); + sync_cmd = mutt_buffer_new (); + for (n = 0; n < ctx->msgcount; n++) + { + if (ctx->hdrs[n]->active && ctx->hdrs[n]->changed && + ctx->hdrs[n]->deleted && !ctx->hdrs[n]->purge) + { + rc = imap_sync_message_for_copy (idata, ctx->hdrs[n], sync_cmd, &err_continue); + if (rc < 0) + { + dprint (1, (debugfile, "imap_fast_trash: could not sync\n")); + goto out; + } + } + } + /* loop in case of TRYCREATE */ do { - rc = imap_exec_msgset (idata, "UID STORE", "+FLAGS.SILENT (\\Seen)", - MUTT_TRASH, 0, 0); - if (rc < 0) - { - dprint (1, (debugfile, "imap_fast_trash: Unable to mark messages as seen\n")); - goto out; - } - rc = imap_exec_msgset (idata, "UID COPY", mmbox, MUTT_TRASH, 0, 0); if (!rc) { @@ -2209,6 +2231,7 @@ rc = 0; out: + mutt_buffer_free (&sync_cmd); FREE (&mx.mbox); return rc < 0 ? -1 : rc; diff -r 3c6f3ca07807 -r cb19899fcf00 imap/imap_private.h --- a/imap/imap_private.h Mon Sep 04 09:40:44 2017 -0700 +++ b/imap/imap_private.h Wed Sep 13 15:54:31 2017 -0700 @@ -249,7 +249,7 @@ int imap_read_literal (FILE* fp, IMAP_DATA* idata, long bytes, progress_t*); void imap_expunge_mailbox (IMAP_DATA* idata); void imap_logout (IMAP_DATA** idata); -int imap_sync_message (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd, +int imap_sync_message_for_copy (IMAP_DATA *idata, HEADER *hdr, BUFFER *cmd, int *err_continue); int imap_has_flag (LIST* flag_list, const char* flag); diff -r 3c6f3ca07807 -r cb19899fcf00 imap/message.c --- a/imap/message.c Mon Sep 04 09:40:44 2017 -0700 +++ b/imap/message.c Wed Sep 13 15:54:31 2017 -0700 @@ -953,7 +953,7 @@ if (ctx->hdrs[n]->tagged && ctx->hdrs[n]->active && ctx->hdrs[n]->changed) { - rc = imap_sync_message (idata, ctx->hdrs[n], &sync_cmd, &err_continue); + rc = imap_sync_message_for_copy (idata, ctx->hdrs[n], &sync_cmd, &err_continue); if (rc < 0) { dprint (1, (debugfile, "imap_copy_messages: could not sync\n")); @@ -984,7 +984,7 @@ if (h->active && h->changed) { - rc = imap_sync_message (idata, h, &sync_cmd, &err_continue); + rc = imap_sync_message_for_copy (idata, h, &sync_cmd, &err_continue); if (rc < 0) { dprint (1, (debugfile, "imap_copy_messages: could not sync\n")); diff -r 3c6f3ca07807 -r cb19899fcf00 po/fr.po --- a/po/fr.po Mon Sep 04 09:40:44 2017 -0700 +++ b/po/fr.po Wed Sep 13 15:54:31 2017 -0700 @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: Mutt 1.8.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-02 11:32-0700\n" -"PO-Revision-Date: 2017-08-12 22:15+0200\n" +"POT-Creation-Date: 2017-09-05 17:26+0200\n" +"PO-Revision-Date: 2017-09-05 17:30+0200\n" "Last-Translator: Vincent Lefevre <vinc...@vinc17.net>\n" "Language-Team: Vincent Lefevre <vinc...@vinc17.net>\n" "Language: fr\n" @@ -59,7 +59,7 @@ msgstr "Sélectionner" #: addrbook.c:41 browser.c:49 compose.c:125 crypt-gpgme.c:4088 curs_main.c:493 -#: mutt_ssl.c:1257 mutt_ssl_gnutls.c:1023 pager.c:1981 pgpkey.c:522 +#: mutt_ssl.c:1257 mutt_ssl_gnutls.c:1024 pager.c:1981 pgpkey.c:522 #: postpone.c:44 query.c:53 recvattach.c:61 smime.c:440 msgid "Help" msgstr "Aide" @@ -1422,7 +1422,7 @@ msgid "All matching keys are marked expired/revoked." msgstr "Toutes les clés correspondantes sont marquées expirées/révoquées." -#: crypt-gpgme.c:4080 mutt_ssl.c:1255 mutt_ssl_gnutls.c:1021 pgpkey.c:515 +#: crypt-gpgme.c:4080 mutt_ssl.c:1255 mutt_ssl_gnutls.c:1022 pgpkey.c:515 #: smime.c:435 msgid "Exit " msgstr "Quitter " @@ -1626,32 +1626,40 @@ msgstr "" "Message non envoyé : PGP en ligne est impossible avec des attachements." -#: crypt.c:159 cryptglue.c:110 pgpkey.c:564 pgpkey.c:753 +#: crypt.c:160 +msgid "Inline PGP can't be used with format=flowed. Revert to PGP/MIME?" +msgstr "PGP en ligne est impossible avec format=flowed. Utiliser PGP/MIME ?" + +#: crypt.c:162 +msgid "Mail not sent: inline PGP can't be used with format=flowed." +msgstr "Message non envoyé : PGP en ligne est impossible avec format=flowed." + +#: crypt.c:169 cryptglue.c:110 pgpkey.c:564 pgpkey.c:753 msgid "Invoking PGP..." msgstr "Appel de PGP..." -#: crypt.c:168 +#: crypt.c:178 msgid "Message can't be sent inline. Revert to using PGP/MIME?" msgstr "Le message ne peut pas être envoyé en ligne. Utiliser PGP/MIME ?" -#: crypt.c:170 send.c:1606 +#: crypt.c:180 send.c:1606 msgid "Mail not sent." msgstr "Message non envoyé." -#: crypt.c:483 +#: crypt.c:493 msgid "S/MIME messages with no hints on content are unsupported." msgstr "" "Les messages S/MIME sans indication sur le contenu ne sont pas supportés." -#: crypt.c:703 crypt.c:747 +#: crypt.c:713 crypt.c:757 msgid "Trying to extract PGP keys...\n" msgstr "Tentative d'extraction de clés PGP...\n" -#: crypt.c:727 crypt.c:767 +#: crypt.c:737 crypt.c:777 msgid "Trying to extract S/MIME certificates...\n" msgstr "Tentative d'extraction de certificats S/MIME...\n" -#: crypt.c:927 +#: crypt.c:937 #, c-format msgid "" "[-- Error: Unknown multipart/signed protocol %s! --]\n" @@ -1660,7 +1668,7 @@ "[-- Erreur : Protocole multipart/signed %s inconnu ! --]\n" "\n" -#: crypt.c:961 +#: crypt.c:971 msgid "" "[-- Error: Inconsistent multipart/signed structure! --]\n" "\n" @@ -1668,7 +1676,7 @@ "[-- Erreur : Structure multipart/signed incohérente ! --]\n" "\n" -#: crypt.c:1000 +#: crypt.c:1010 #, c-format msgid "" "[-- Warning: We can't verify %s/%s signatures. --]\n" @@ -1677,7 +1685,7 @@ "[-- Attention : les signatures %s/%s ne peuvent pas être vérifiées. --]\n" "\n" -#: crypt.c:1012 +#: crypt.c:1022 msgid "" "[-- The following data is signed --]\n" "\n" @@ -1685,7 +1693,7 @@ "[-- Les données suivantes sont signées --]\n" "\n" -#: crypt.c:1018 +#: crypt.c:1028 msgid "" "[-- Warning: Can't find any signatures. --]\n" "\n" @@ -1693,7 +1701,7 @@ "[-- Attention : Impossible de trouver des signatures. --]\n" "\n" -#: crypt.c:1024 +#: crypt.c:1034 msgid "" "\n" "[-- End of signed data --]\n" @@ -3494,40 +3502,40 @@ msgid "Certificate host check failed: %s" msgstr "Échec de vérification de machine : %s" -#: mutt_ssl.c:1181 mutt_ssl_gnutls.c:868 +#: mutt_ssl.c:1181 mutt_ssl_gnutls.c:869 msgid "This certificate belongs to:" msgstr "Ce certificat appartient à :" -#: mutt_ssl.c:1189 mutt_ssl_gnutls.c:907 +#: mutt_ssl.c:1189 mutt_ssl_gnutls.c:908 msgid "This certificate was issued by:" msgstr "Ce certificat a été émis par :" -#: mutt_ssl.c:1197 mutt_ssl_gnutls.c:946 +#: mutt_ssl.c:1197 mutt_ssl_gnutls.c:947 #, c-format msgid "This certificate is valid" msgstr "Ce certificat est valide" -#: mutt_ssl.c:1198 mutt_ssl_gnutls.c:949 +#: mutt_ssl.c:1198 mutt_ssl_gnutls.c:950 #, c-format msgid " from %s" msgstr " de %s" -#: mutt_ssl.c:1200 mutt_ssl_gnutls.c:953 +#: mutt_ssl.c:1200 mutt_ssl_gnutls.c:954 #, c-format msgid " to %s" msgstr " à %s" -#: mutt_ssl.c:1206 mutt_ssl_gnutls.c:958 +#: mutt_ssl.c:1206 mutt_ssl_gnutls.c:959 #, c-format msgid "SHA1 Fingerprint: %s" msgstr "Empreinte SHA1 : %s" -#: mutt_ssl.c:1209 mutt_ssl_gnutls.c:961 +#: mutt_ssl.c:1209 mutt_ssl_gnutls.c:962 #, c-format msgid "MD5 Fingerprint: %s" msgstr "Empreinte MD5 : %s" -#: mutt_ssl.c:1212 mutt_ssl_gnutls.c:990 +#: mutt_ssl.c:1212 mutt_ssl_gnutls.c:991 #, c-format msgid "SSL Certificate check (certificate %d of %d in chain)" msgstr "Vérification du certificat SSL (certificat %d sur %d dans la chaîne)" @@ -3546,7 +3554,7 @@ msgid "(r)eject, accept (o)nce, (a)ccept always, (s)kip" msgstr "(r)ejeter, accepter (u)ne fois, (a)ccepter toujours, (s)auter" -#: mutt_ssl.c:1244 mutt_ssl_gnutls.c:999 +#: mutt_ssl.c:1244 mutt_ssl_gnutls.c:1000 msgid "(r)eject, accept (o)nce, (a)ccept always" msgstr "(r)ejeter, accepter (u)ne fois, (a)ccepter toujours" @@ -3554,15 +3562,15 @@ msgid "(r)eject, accept (o)nce, (s)kip" msgstr "(r)ejeter, accepter (u)ne fois, (s)auter" -#: mutt_ssl.c:1251 mutt_ssl_gnutls.c:1010 +#: mutt_ssl.c:1251 mutt_ssl_gnutls.c:1011 msgid "(r)eject, accept (o)nce" msgstr "(r)ejeter, accepter (u)ne fois" -#: mutt_ssl.c:1284 mutt_ssl_gnutls.c:1066 +#: mutt_ssl.c:1284 mutt_ssl_gnutls.c:1067 msgid "Warning: Couldn't save certificate" msgstr "Attention : le certificat n'a pas pu être sauvé" -#: mutt_ssl.c:1289 mutt_ssl_gnutls.c:1071 +#: mutt_ssl.c:1289 mutt_ssl_gnutls.c:1072 msgid "Certificate saved" msgstr "Certificat sauvé" @@ -3586,36 +3594,36 @@ msgid "SSL/TLS connection using %s (%s/%s/%s)" msgstr "Connexion SSL/TLS utilisant %s (%s/%s/%s)" -#: mutt_ssl_gnutls.c:695 mutt_ssl_gnutls.c:847 +#: mutt_ssl_gnutls.c:696 mutt_ssl_gnutls.c:848 msgid "Error initialising gnutls certificate data" msgstr "Erreur d'initialisation des données du certificat gnutls" -#: mutt_ssl_gnutls.c:702 mutt_ssl_gnutls.c:854 +#: mutt_ssl_gnutls.c:703 mutt_ssl_gnutls.c:855 msgid "Error processing certificate data" msgstr "Erreur de traitement des données du certificat" -#: mutt_ssl_gnutls.c:838 +#: mutt_ssl_gnutls.c:839 msgid "Warning: Server certificate was signed using an insecure algorithm" msgstr "" "Attention : le certificat du serveur a été signé avec un algorithme peu sûr" -#: mutt_ssl_gnutls.c:966 +#: mutt_ssl_gnutls.c:967 msgid "WARNING: Server certificate is not yet valid" msgstr "ATTENTION ! Le certificat du serveur n'est pas encore valide" -#: mutt_ssl_gnutls.c:971 +#: mutt_ssl_gnutls.c:972 msgid "WARNING: Server certificate has expired" msgstr "ATTENTION ! Le certificat du serveur a expiré" -#: mutt_ssl_gnutls.c:976 +#: mutt_ssl_gnutls.c:977 msgid "WARNING: Server certificate has been revoked" msgstr "ATTENTION ! Le certificat du serveur a été révoqué" -#: mutt_ssl_gnutls.c:981 +#: mutt_ssl_gnutls.c:982 msgid "WARNING: Server hostname does not match certificate" msgstr "ATTENTION ! Le nom du serveur ne correspond pas au certificat" -#: mutt_ssl_gnutls.c:986 +#: mutt_ssl_gnutls.c:987 msgid "WARNING: Signer of server certificate is not a CA" msgstr "ATTENTION ! Le signataire du certificat du serveur n'est pas un CA" @@ -3625,7 +3633,7 @@ #. * This is an interactive certificate confirmation prompt for #. * a GNUTLS connection. #. -#: mutt_ssl_gnutls.c:1006 +#: mutt_ssl_gnutls.c:1007 msgid "roa" msgstr "rua" @@ -3635,20 +3643,20 @@ #. * These is an interactive certificate confirmation prompt for #. * a GNUTLS connection. #. -#: mutt_ssl_gnutls.c:1017 +#: mutt_ssl_gnutls.c:1018 msgid "ro" msgstr "ru" -#: mutt_ssl_gnutls.c:1100 mutt_ssl_gnutls.c:1135 mutt_ssl_gnutls.c:1145 +#: mutt_ssl_gnutls.c:1101 mutt_ssl_gnutls.c:1136 mutt_ssl_gnutls.c:1146 msgid "Unable to get certificate from peer" msgstr "Impossible d'obtenir le certificat de la machine distante" -#: mutt_ssl_gnutls.c:1106 +#: mutt_ssl_gnutls.c:1107 #, c-format msgid "Certificate verification error (%s)" msgstr "Erreur de vérification du certificat (%s)" -#: mutt_ssl_gnutls.c:1115 +#: mutt_ssl_gnutls.c:1116 msgid "Certificate is not X.509" msgstr "Le certificat n'est pas de type X.509" @@ -4924,846 +4932,1266 @@ msgid "Parent message is not visible in this limited view." msgstr "Le message père n'est pas visible dans cette vue limitée." -#: ../keymap_alldefs.h:5 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:7 msgid "null operation" msgstr "opération nulle" -#: ../keymap_alldefs.h:6 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:10 msgid "end of conditional execution (noop)" msgstr "fin d'exécution conditionnelle (noop)" -#: ../keymap_alldefs.h:7 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:13 msgid "force viewing of attachment using mailcap" msgstr "" "forcer la visualisation d'un attachment en utilisant le fichier mailcap" -#: ../keymap_alldefs.h:8 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:16 msgid "view attachment as text" msgstr "visualiser un attachment en tant que texte" -#: ../keymap_alldefs.h:9 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:19 msgid "Toggle display of subparts" msgstr "Inverser l'affichage des sous-parties" -#: ../keymap_alldefs.h:10 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:22 msgid "move to the bottom of the page" msgstr "aller en bas de la page" -#: ../keymap_alldefs.h:11 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:25 msgid "remail a message to another user" msgstr "renvoyer un message à un autre utilisateur" -#: ../keymap_alldefs.h:12 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:28 msgid "select a new file in this directory" msgstr "sélectionner un nouveau fichier dans ce répertoire" -#: ../keymap_alldefs.h:13 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:31 msgid "view file" msgstr "visualiser le fichier" -#: ../keymap_alldefs.h:14 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:34 msgid "display the currently selected file's name" msgstr "afficher le nom du fichier sélectionné actuellement" -#: ../keymap_alldefs.h:15 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:37 msgid "subscribe to current mailbox (IMAP only)" msgstr "s'abonner à la BAL courante (IMAP seulement)" -#: ../keymap_alldefs.h:16 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:40 msgid "unsubscribe from current mailbox (IMAP only)" msgstr "se désabonner de la BAL courante (IMAP seulement)" -#: ../keymap_alldefs.h:17 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:43 msgid "toggle view all/subscribed mailboxes (IMAP only)" msgstr "" "changer entre voir toutes les BAL/voir les BAL abonnées (IMAP seulement)" -#: ../keymap_alldefs.h:18 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:46 msgid "list mailboxes with new mail" msgstr "lister les BAL ayant de nouveaux messages" -#: ../keymap_alldefs.h:19 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:49 msgid "change directories" msgstr "changer de répertoires" -#: ../keymap_alldefs.h:20 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:52 msgid "check mailboxes for new mail" msgstr "vérifier la présence de nouveaux messages dans les BAL" -#: ../keymap_alldefs.h:21 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:55 msgid "attach file(s) to this message" msgstr "attacher des fichiers à ce message" -#: ../keymap_alldefs.h:22 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:58 msgid "attach message(s) to this message" msgstr "attacher des messages à ce message" -#: ../keymap_alldefs.h:23 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:61 msgid "edit the BCC list" msgstr "éditer la liste BCC" -#: ../keymap_alldefs.h:24 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:64 msgid "edit the CC list" msgstr "éditer la liste CC" -#: ../keymap_alldefs.h:25 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:67 msgid "edit attachment description" msgstr "éditer la description de l'attachement" -#: ../keymap_alldefs.h:26 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:70 msgid "edit attachment transfer-encoding" msgstr "éditer le transfer-encoding de l'attachement" -#: ../keymap_alldefs.h:27 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:73 msgid "enter a file to save a copy of this message in" msgstr "entrer le nom d'un fichier dans lequel sauver une copie de ce message" -#: ../keymap_alldefs.h:28 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:76 msgid "edit the file to be attached" msgstr "éditer le fichier à attacher" -#: ../keymap_alldefs.h:29 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:79 msgid "edit the from field" msgstr "éditer le champ from" -#: ../keymap_alldefs.h:30 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:82 msgid "edit the message with headers" msgstr "éditer le message avec ses en-têtes" -#: ../keymap_alldefs.h:31 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:85 msgid "edit the message" msgstr "éditer le message" -#: ../keymap_alldefs.h:32 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:88 msgid "edit attachment using mailcap entry" msgstr "éditer l'attachement en utilisant l'entrée mailcap" -#: ../keymap_alldefs.h:33 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:91 msgid "edit the Reply-To field" msgstr "éditer le champ Reply-To" -#: ../keymap_alldefs.h:34 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:94 msgid "edit the subject of this message" msgstr "éditer l'objet (Subject) de ce message" -#: ../keymap_alldefs.h:35 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:97 msgid "edit the TO list" msgstr "éditer la liste TO" -#: ../keymap_alldefs.h:36 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:100 msgid "create a new mailbox (IMAP only)" msgstr "créer une nouvelle BAL (IMAP seulement)" -#: ../keymap_alldefs.h:37 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:103 msgid "edit attachment content type" msgstr "éditer le content-type de l'attachement" -#: ../keymap_alldefs.h:38 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:106 msgid "get a temporary copy of an attachment" msgstr "obtenir une copie temporaire d'un attachement" -#: ../keymap_alldefs.h:39 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:109 msgid "run ispell on the message" msgstr "lancer ispell sur le message" -#: ../keymap_alldefs.h:40 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:112 msgid "compose new attachment using mailcap entry" msgstr "composer un nouvel attachement en utilisant l'entrée mailcap" -#: ../keymap_alldefs.h:41 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:115 msgid "toggle recoding of this attachment" msgstr "inverser le recodage de cet attachement" -#: ../keymap_alldefs.h:42 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:118 msgid "save this message to send later" msgstr "sauvegarder ce message pour l'envoyer plus tard" -#: ../keymap_alldefs.h:43 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:121 msgid "send attachment with a different name" msgstr "envoyer l'attachement avec un nom différent" -#: ../keymap_alldefs.h:44 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:124 msgid "rename/move an attached file" msgstr "renommer/déplacer un fichier attaché" -#: ../keymap_alldefs.h:45 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:127 msgid "send the message" msgstr "envoyer le message" -#: ../keymap_alldefs.h:46 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:130 msgid "toggle disposition between inline/attachment" msgstr "changer la disposition (en ligne/attachement)" -#: ../keymap_alldefs.h:47 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:133 msgid "toggle whether to delete file after sending it" msgstr "changer l'option de suppression de fichier après envoi" -#: ../keymap_alldefs.h:48 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:136 msgid "update an attachment's encoding info" msgstr "mettre à jour les informations de codage d'un attachement" -#: ../keymap_alldefs.h:49 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:139 msgid "write the message to a folder" msgstr "écrire le message dans un dossier" -#: ../keymap_alldefs.h:50 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:142 msgid "copy a message to a file/mailbox" msgstr "copier un message dans un fichier ou une BAL" -#: ../keymap_alldefs.h:51 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:145 msgid "create an alias from a message sender" msgstr "créer un alias à partir de l'expéditeur d'un message" -#: ../keymap_alldefs.h:52 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:148 msgid "move entry to bottom of screen" msgstr "déplacer l'entrée au bas de l'écran" -#: ../keymap_alldefs.h:53 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:151 msgid "move entry to middle of screen" msgstr "déplacer l'entrée au milieu de l'écran" -#: ../keymap_alldefs.h:54 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:154 msgid "move entry to top of screen" msgstr "déplacer l'entrée en haut de l'écran" -#: ../keymap_alldefs.h:55 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:157 msgid "make decoded (text/plain) copy" msgstr "faire une copie décodée (text/plain)" -#: ../keymap_alldefs.h:56 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:160 msgid "make decoded copy (text/plain) and delete" msgstr "faire une copie décodée (text/plain) et effacer" -#: ../keymap_alldefs.h:57 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:163 msgid "delete the current entry" msgstr "effacer l'entrée courante" -#: ../keymap_alldefs.h:58 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:166 msgid "delete the current mailbox (IMAP only)" msgstr "supprimer la BAL courante (IMAP seulement)" -#: ../keymap_alldefs.h:59 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:169 msgid "delete all messages in subthread" msgstr "effacer tous les messages dans la sous-discussion" -#: ../keymap_alldefs.h:60 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:172 msgid "delete all messages in thread" msgstr "effacer tous les messages dans la discussion" -#: ../keymap_alldefs.h:61 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:175 msgid "display full address of sender" msgstr "afficher l'adresse complète de l'expéditeur" -#: ../keymap_alldefs.h:62 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:178 msgid "display message and toggle header weeding" msgstr "afficher le message et inverser la restriction des en-têtes" -#: ../keymap_alldefs.h:63 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:181 msgid "display a message" msgstr "afficher un message" -#: ../keymap_alldefs.h:64 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:184 msgid "add, change, or delete a message's label" msgstr "ajouter, changer ou supprimer le label d'un message" -#: ../keymap_alldefs.h:65 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:187 msgid "edit the raw message" msgstr "éditer le message brut" -#: ../keymap_alldefs.h:66 +#. L10N: Help screen function description. +#. Generated from one of the OPS files. +#: ../keymap_alldefs.h:190 msgid "delete the char in front of the cursor" msgstr "effacer le caractère situé devant le curseur" -#: ../keymap_alldefs.h:67 +#. L10N: Help screen function description.