emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MH-E patch to support nmh 1.5


From: Bill Wohler
Subject: Re: MH-E patch to support nmh 1.5
Date: Mon, 29 Sep 2014 22:27:15 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

I have committed this change to the emacs-24 branch along with a few
other documentation changes to accompany a forthcoming MH-E 8.6 release.
I merged the changes back into trunk.

Mike Kupfer <address@hidden> writes:

> Attached is a Bazaar bundle for emacs-24, to fix MH-E to work with
> nmh-1.5 and above.  This is my first Emacs submission, so apologies in
> advance for any rookie mistakes.
>
> mike
>
> # Bazaar merge directive format 2 (Bazaar 0.90)
> # revision_id: address@hidden
> # target_branch: bzr://bzr.savannah.gnu.org/emacs/emacs-24/
> # testament_sha1: dae0aa9c4d55efb8fd1f70ddff82aa23c47c1f04
> # timestamp: 2014-09-28 21:05:58 -0700
> # base_revision_id: address@hidden
> #   hjq3w3mbdp5jwa4s
> # 
> # Begin patch
>
> === modified file 'lisp/mh-e/ChangeLog'
> --- lisp/mh-e/ChangeLog       2014-03-17 00:50:05 +0000
> +++ lisp/mh-e/ChangeLog       2014-09-29 04:05:26 +0000
> @@ -1,3 +1,19 @@
> +2014-09-28  Mike Kupfer  <address@hidden>
> +
> +     * mh-comp.el (mh-bare-components): Improve the temp folder and
> +     file names as per a suggestion from Bill Wohler.  Also address
> +     XEmacs compatibility issues: use mm-make-temp-file instead of
> +     make-temp-file, and only pass one argument to delete-directory.
> +
> +2014-09-26  Mike Kupfer  <address@hidden>
> +
> +     * mh-comp.el (mh-insert-x-face): Ensure that mh-x-face-file is a
> +     string before trying to use it (closes SF #474).
> +     (mh-bare-components): New function to create a temporary initial
> +     components file; replaces mh-find-components.
> +     (mh-edit-again, mh-send-sub): Use mh-bare-components instead of
> +     mh-find-components (partially closes SF #468).
> +
>  2014-03-16  Bill Wohler  <address@hidden>
>  
>       * mh-folder.el (mh-regenerate-headers): Fix scan: bad message list
>
> === modified file 'lisp/mh-e/mh-comp.el'
> --- lisp/mh-e/mh-comp.el      2014-01-01 07:43:34 +0000
> +++ lisp/mh-e/mh-comp.el      2014-09-29 04:05:26 +0000
> @@ -411,6 +411,7 @@
>    (interactive (list (mh-get-msg-num t)))
>    (let* ((from-folder mh-current-folder)
>           (config (current-window-configuration))
> +         (components-file (mh-bare-components))
>           (draft
>            (cond ((and mh-draft-folder (equal from-folder mh-draft-folder))
>                   (pop-to-buffer (find-file-noselect (mh-msg-filename 
> message))
> @@ -467,7 +468,8 @@
>             ;; Text field, that's an easy case
>             (t
>              (mh-modify-header-field field value))))))
> -     (mh-components-to-list (mh-find-components)))
> +     (mh-components-to-list components-file))
> +    (delete-file components-file)
>      (goto-char (point-min))
>      (save-buffer)
>      (mh-compose-and-send-mail
> @@ -885,22 +887,6 @@
>            (t
>             nil))))
>  
> -(defun mh-find-components ()
> -  "Return the path to the components file."
> -  (let (components)
> -    (cond
> -     ((file-exists-p
> -       (setq components
> -             (expand-file-name mh-comp-formfile mh-user-path)))
> -      components)
> -     ((file-exists-p
> -       (setq components
> -             (expand-file-name mh-comp-formfile mh-lib)))
> -      components)
> -     (t
> -      (error "Can't find %s in %s or %s"
> -             mh-comp-formfile mh-user-path mh-lib)))))
> -
>  (defun mh-send-sub (to cc subject config)
>    "Do the real work of composing and sending a letter.
>  Expects the TO, CC, and SUBJECT fields as arguments.
> @@ -910,8 +896,8 @@
>      (message "Composing a message...")
>      (let ((draft (mh-read-draft
>                    "message"
> -                  (mh-find-components)
> -                  nil)))
> +                  (mh-bare-components)
> +                  t)))
>        (mh-insert-fields "To:" to "Subject:" subject "Cc:" cc)
>        (goto-char (point-max))
>        (mh-compose-and-send-mail draft "" folder msg-num
> @@ -920,6 +906,29 @@
>        (mh-letter-mode-message)
>        (mh-letter-adjust-point))))
>  
> +(defun mh-bare-components ()
> +  "Generate a temporary, clean components file and return its path."
> +  ;; Let comp(1) create the skeleton for us.  This is particularly
> +  ;; important with nmh-1.5, because its default "components" needs
> +  ;; some processing before it can be used.  Unfortunately, comp(1)
> +  ;; doesn't have a -build option.  So, to avoid the possibility of
> +  ;; clobbering an existing draft, create a temporary directory and
> +  ;; use it as the drafts folder.  Then copy the skeleton to a regular
> +  ;; temp file, and return the regular temp file.
> +  (let (new
> +        (temp-folder (mm-make-temp-file
> +                      (concat mh-user-path "draftfolder.") t)))
> +    (mh-exec-cmd "comp" "-nowhatnowproc"
> +                 "-draftfolder" (format "+%s"
> +                                        (file-name-nondirectory temp-folder))
> +                 (if (stringp mh-comp-formfile)
> +                     (list "-form" mh-comp-formfile)))
> +    (setq new (mm-make-temp-file "comp."))
> +    (rename-file (concat temp-folder "/" "1") new t)
> +    (delete-file (concat temp-folder "/" ".mh_sequences"))
> +    (delete-directory temp-folder)
> +    new))
> +
>  (defun mh-read-draft (use initial-contents delete-contents-file)
>    "Read draft file into a draft buffer and make that buffer the current one.
>  
> @@ -1069,7 +1078,8 @@
>  (defun mh-insert-x-face ()
>    "Append X-Face, Face or X-Image-URL field to header.
>  If the field already exists, this function does nothing."
> -  (when (and (file-exists-p mh-x-face-file)
> +  (when (and (stringp mh-x-face-file)
> +             (file-exists-p mh-x-face-file)
>               (file-readable-p mh-x-face-file))
>      (save-excursion
>        (unless (or (mh-position-on-field "X-Face")
>
> # Begin bundle
> IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWYqETd8ABsr/gGYzMABe////
> e68OwL////BgDC7VfK3ccqjiikqFfc94rdm9l7Vy6d25rdHU7bWywkkpqbR6mieqfoMlHp6myNNU
> 9PSQMgGEYGowTTCSQjCNE9BExTTUD0g9I0Bo0GgAAAcAwjCaYhgEAyAGEaZMmEYCGgkRBECp/qU9
> DTeqfqJqenqnqGnkaZTaRoAAB6mgMlIZAZAA0AAAAAAAAACSIJo0TIKfqZNMmmlT3ohT9J6p+U2p
> AaAAxB6jxK2IyDHd1836OWwhJtNDzcIGBgcw7b/yvUND/h49D6HVvUVYVcWczo5Z+JMbqTlT/vB3
> +C+B1bdiUZP4eDY34bpOYV7CjyckUMfL7u46uWFCadfG4aA/OUSvfJrbjzEgLCQ22g4TcWxgP8PE
> VHfLiK/segLuP83F5LW+nW7kD3xmbVlpgH6HVhmAZhhhmG7+EHDrpXJtRHjqeGa3E4Y2zOsVcU8d
> 35JvYaTrfa5F7IRYVGLbMUGxMfkfQNqPaJA6gcHNxAlzoODn4Q5t9CTMTOqzbKi7ZQwuHhQstg8b
> TvnBfDVjhbvGSEET33UHwGzHmqY4NscEIuMx8vcEzEuCRMmDDf8MtN5excMtVgQiMqHNsSwmk8fA
> 4SoQdcVKKISAgUpwfew7NiRoQKamO5AW6YqsX4Hz72g3tJvj55Bs6WvMNCtT48DPjp+DC5ANWv4Z
> KMGhgDF7dIwGvV6yDq6w7fZTczuZ3NVv64jCiTTO4fTvba4t8IcxxR7c+d9KztckvEPHFUzxbguH
> eZfG3qqvZ1GrQ6dhvS68A6A+IPd54XqTBLUHspAvYyxKoN/m4GHqMA7jhs8YqH1FAHMGcZOzORBk
> pMfpWaqpGesM7oprcgXoBfwIUoVjjWRgBehsGHLNoq5c4m50wvOWfNtjb5Fu32CLdSANO5OCTMi/
> RsUjs3B6/Zz3U7erb1juzOWv29vFsQcjOZipWM2EMKhorJS7u+8uksrkCQUrSVHAkC4EK2JM80DB
> Q7jRWRFWJ12HrafeMCiklgwTTIq1Eol1PqBhVRMidVQISV6V2lBZeOLQydm0R3eJR1f10fQPzF39
> FfUFhpBZnBoqS4QaVE2MrbMQxyWJ98QTIgPaQkGAiHBWHGPsLNZdma41tLK3nsT9z18SgKKFKOII
> z6v3zwM4C2CDu+Lt+NxY5t2DpIUaG6L3Z2Z71Y6ApLyHBBEFDTvHtsgK7XHUMJW5Xp09EJ1NgJjB
> BTdcQQTuN8Mb0kcZOIsAxAlyekQH5a7T68fIlnSY0XKjBu5LVVTHO/nEkxBwLjxN2drNXNiMirC3
> pcmImkpQNb5GEChA2zol3L0KBhfgUIxHI3uWgZXkABUDAFOj2AtvBWQGgXpvSTDOjM8wnIZFmTG2
> UAqmWyTQy1LDWHEibrKbmsdqovLQCSWQFLdk+7O5ksm2a+8uJMFnYac7kKTLZPAqBKVXLFADdQ2G
> wiKDLKw71IcYlk0NUU9j7gXcmXwBcrVlrtMqvUnEZ+tgME1iPWcczSU1cT16DiLwPUpDIxGwbAbo
> XmHAdDotupMlnkZQJ2wMDRDAy07ZO8SjbKPLIhGMrEkShhoYTgXaFX1gYRvbDamBWxPRQEYvVSrj
> OqFyQu9CytpSNRoGRoaY6xHC6OviROLx9HGI/elbFid1Tf6VuqpGHFVkV0L7ylCY47HyOHUC1KOa
> 7d7pmAhQgMBtMg8uBdkyJFlehMXJIYYCo8AHY6AW0xqaRXla2l8/klbrQpLgB5AfIwy73aqocmSm
> uicQWSdJOTPTkjNPEQThDK8o2JbkhVYoVcwDAQwyahKEWi1DpAEDISwFAgcjF1HQegHC4UAYcqgN
> RrRiDaG03+cmBPuJP7CkAUOeBpiXZhQ95M2A0jPlJAuI0KiYvRNNlKJrwk0M3vTG6ZoLma7l0ahR
> lnWgD4pRBpNB7iGg2bJ1lI4o+ZuTpHXyMAPMomUQOxdkcaJl6sHAXysz6m8kG1AWEPGCuCKcxMCo
> w6wU20TUUxPZZqhb5ep21OVB/iXHy3nM3oPLYaljy7XxZTRYKp1Cqr84Kx9YkRvrMMjKXSphglKL
> m4ZcN0hxk/sWPIIT0YG4hgLE27zHsmTK65AOuvM6E4KmQe8ogDPh0WBYoQxcwSQn8mklWLGpCgIR
> iGoi4ig0SCwyQZxuEqlRFVgFBTQLIC1XpGcIklYs3pcC4C87uZeIirCiRyodpfcWsOcjRn1JhjWh
> TLdZQ8ErNxkxIh3poG98yWpNz2uC6YpeaOnwCdw+dgYLmaIJ8rRQtcg4PPcWg1cKoLg9pNcD34AO
> R0yuOpVr+7pXmNOMY+BbuwljMkd+JCZr0bTlaV4w1GIawrYzBsGGcyJgyRUiGejNTYJGOfpsrGYq
> dWs4k/BgWcWv7/g1ezYCyV+PZBOvIY8B80/xaGCsI5x8NV4a5PTP2+5QFUVjJdQ68npnAL2EmyU2
> zkCVKCVCHAuNCt5jdBlrHJWjuHXXoU0AeCld+NOLGyqcMTtWouXjpJKTKhf+LAXS2kr68BlVY0iQ
> 9RIv68djq3FrIVJOKdmek9ddQKw0iwnIn87zwgxIgl5Au0SDRH4GtK9Lqb/IMOzqhcbbK9Y6AxSG
> jCB6DIh61NpDiUlpNqKK0nAlVLQXKhBcbUjSGHOr7zsXpqRLDoBiGkEnTAPd3JRj+YS/AgEzv0zC
> CTBpD+jZeJC2XJAcFMLMizBm56ffJf6kMoKC7O9L4o28kCO5exYL3G4kHokastLFnsOUMhgx7ltV
> qoFqZhGkXFUPRv0ITHzPoOEzgbSBxU14MrwM9bFQDkL2oygWKE30jUgCApB4wnJgqgvQA6KQWr5T
> nWvehNAim1aXAfJVStjm9WqBSQMHH8iWCgx1E8CLZh9DzTHITDuDjkw71UYoA8yXzlEaajL39cgI
> rJTbUWgxVbCiaeNVEwtBwVrAeMB01LxbK4uMlaqzWgUBgDQskyiTQiQy7yIqQ6Lgu4WdiBLSNMBS
> uCE08YCIPGSIK5gE/F6+zvv/xkpCYyqr1AqWzdeKmePvBWC3mJRgCii6SXoDoMNl3EMlyNAogRnc
> tcaPqQB5nq4YkK4U41gckIwxGYAcI3n6l4oQ5tFaDzutSJg65oQMkONBJYhDOhUuD3bGcEGxcdHJ
> MDCO0dWDTQMXKYkG4iIV8o5vapGaoZH1WIK9XoXzQno0Jt3gRxNDaEHAiUjsTCboUZDLEFVtDcLS
> bJIByoxqXROlahBfMbyaoaI1SNpGxeItmYyjFYXUKFDTGmwLGm5wqhiMyJSmShE3XuirFYGlsgkm
> 65JXJYPMM9IzcTg835lg5F8BMNeGJZCcHEzNWTMDNnmRc1jK9qAywB3KpHx24ksTEqWWnmr5YUL4
> uPT/aCusT9WZ4FF5jnuokO0DUpojWKioE4h1ZAOLDJbpgOCyUTIaCBlv41AyIDBsKq7S1cANuRZI
> twJppjUjUg6jWprYyGIo1VhEE8x1t1gpBvuQqEuH3wDl0J4LKBYoe5j3/VHnQBRXGoTZbGCF6QMQ
> Lu4E3Mtqg4oUJLfcgJkzHH4l7alACnbwOwF4oUyBZtoLKAl5lUDjwYYWacdcWdgOiFwSzSgdy3r9
> YhwNyzkgG9y8J/4u5IpwoSEVCJu+
>

-- 
Bill Wohler <address@hidden> aka <address@hidden>
http://www.newt.com/wohler/
GnuPG ID:610BD9AD




reply via email to

[Prev in Thread] Current Thread [Next in Thread]