From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Abrahamsen Subject: Re: replace letf with cl-letf in org-mime Date: Mon, 30 Mar 2015 16:34:16 +0800 Message-ID: <87619iopdj.fsf@ericabrahamsen.net> References: <87wq29m8zm.fsf@ericabrahamsen.net> <87iodt2k3i.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33838) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcVKU-00040A-F2 for emacs-orgmode@gnu.org; Mon, 30 Mar 2015 04:45:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YcVKR-00073I-8y for emacs-orgmode@gnu.org; Mon, 30 Mar 2015 04:45:54 -0400 Received: from plane.gmane.org ([80.91.229.3]:51943) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcVA2-0003rN-BR for emacs-orgmode@gnu.org; Mon, 30 Mar 2015 04:35:06 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1YcV9k-0006GN-A8 for emacs-orgmode@gnu.org; Mon, 30 Mar 2015 10:34:48 +0200 Received: from 114.248.25.174 ([114.248.25.174]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 30 Mar 2015 10:34:48 +0200 Received: from eric by 114.248.25.174 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 30 Mar 2015 10:34:48 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain Nicolas Goaziou writes: > Hello, > > Eric Abrahamsen writes: > >> It's amazing what an effect barky compiler errors can have. > > Thanks. However, `cl-flet' is not supported in Emacs 23 so it's not an > option for Org 8.3. > > OTOH, most uses of `flet' can be replaced with a plain `lambda' and > funcalls. > >> - (flet ((mp (p) (org-entry-get nil p org-mime-use-property-inheritance))) >> + (cl-flet ((mp (p) (org-entry-get nil p org-mime-use-property-inheritance))) >> (let* ((file (buffer-file-name (current-buffer))) >> (subject (or (mp "MAIL_SUBJECT") (nth 4 (org-heading-components)))) >> (to (mp "MAIL_TO")) > > (let* ((mp (lambda (p) (org-entry-get nil p org-mime-use-property-inheritance)))) > (file (buffer-file-name (current-buffer))) > (subject (or (funcall mp "MAIL_SUBJECT") (nth 4 (org-heading-components)))) > (to (funcall mp "MAIL_TO")) > ...) That took longer than I expected... --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-org-mime.el-Avoid-use-of-letf-cl-letf.patch >From 796667bc0afe3031c9e81e359809af9fceb3839f Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Mon, 30 Mar 2015 16:32:14 +0800 Subject: [PATCH] org-mime.el: Avoid use of letf/cl-letf * contrib/lisp/org-mime.el (org-mime-send-subtree, org-mime-compose): `letf' is deprecated in future emacs, but `cl-letf' is unavailable in past emacs. Replace with plain old lambdas and funcalls. --- contrib/lisp/org-mime.el | 111 ++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/contrib/lisp/org-mime.el b/contrib/lisp/org-mime.el index f341474..bf2ad06 100644 --- a/contrib/lisp/org-mime.el +++ b/contrib/lisp/org-mime.el @@ -252,22 +252,22 @@ export that region, otherwise export the entire body." (save-restriction (org-narrow-to-subtree) (run-hooks 'org-mime-send-subtree-hook) - (flet ((mp (p) (org-entry-get nil p org-mime-use-property-inheritance))) - (let* ((file (buffer-file-name (current-buffer))) - (subject (or (mp "MAIL_SUBJECT") (nth 4 (org-heading-components)))) - (to (mp "MAIL_TO")) - (cc (mp "MAIL_CC")) - (bcc (mp "MAIL_BCC")) - (body (buffer-substring - (save-excursion (goto-char (point-min)) - (forward-line 1) - (when (looking-at "[ \t]*:PROPERTIES:") - (re-search-forward ":END:" nil) - (forward-char)) - (point)) - (point-max)))) - (org-mime-compose body (or fmt 'org) file to subject - `((cc . ,cc) (bcc . ,bcc))))))) + (let* ((mp (lambda (p)) (org-entry-get nil p org-mime-use-property-inheritance)) + (file (buffer-file-name (current-buffer))) + (subject (or (funcall mp "MAIL_SUBJECT") (nth 4 (org-heading-components)))) + (to (funcall mp "MAIL_TO")) + (cc (funcall mp "MAIL_CC")) + (bcc (funcall mp "MAIL_BCC")) + (body (buffer-substring + (save-excursion (goto-char (point-min)) + (forward-line 1) + (when (looking-at "[ \t]*:PROPERTIES:") + (re-search-forward ":END:" nil) + (forward-char)) + (point)) + (point-max)))) + (org-mime-compose body (or fmt 'org) file to subject + `((cc . ,cc) (bcc . ,bcc)))))) (defun org-mime-send-buffer (&optional fmt) (run-hooks 'org-mime-send-buffer-hook) @@ -287,45 +287,46 @@ export that region, otherwise export the entire body." (require 'message) (message-mail to subject headers nil) (message-goto-body) - (flet ((bhook (body fmt) - (let ((hook (intern (concat "org-mime-pre-" - (symbol-name fmt) - "-hook")))) - (if (> (eval `(length ,hook)) 0) - (with-temp-buffer - (insert body) - (goto-char (point-min)) - (eval `(run-hooks ',hook)) - (buffer-string)) - body)))) - (let ((fmt (if (symbolp fmt) fmt (intern fmt)))) - (cond - ((eq fmt 'org) - (require 'ox-org) - (insert (org-export-string-as - (org-babel-trim (bhook body 'org)) 'org t))) - ((eq fmt 'ascii) - (require 'ox-ascii) - (insert (org-export-string-as - (concat "#+Title:\n" (bhook body 'ascii)) 'ascii t))) - ((or (eq fmt 'html) (eq fmt 'html-ascii)) - (require 'ox-ascii) - (require 'ox-org) - (let* ((org-link-file-path-type 'absolute) - ;; we probably don't want to export a huge style file - (org-export-htmlize-output-type 'inline-css) - (html-and-images - (org-mime-replace-images - (org-export-string-as (bhook body 'html) 'html t) file)) - (images (cdr html-and-images)) - (html (org-mime-apply-html-hook (car html-and-images)))) - (insert (org-mime-multipart - (org-export-string-as - (org-babel-trim - (bhook body (if (eq fmt 'html) 'org 'ascii))) - (if (eq fmt 'html) 'org 'ascii) t) - html) - (mapconcat 'identity images "\n")))))))) + (let ((bhook + (lambda (body fmt) + (let ((hook (intern (concat "org-mime-pre-" + (symbol-name fmt) + "-hook")))) + (if (> (eval `(length ,hook)) 0) + (with-temp-buffer + (insert body) + (goto-char (point-min)) + (eval `(run-hooks ',hook)) + (buffer-string)) + body)))) + (fmt (if (symbolp fmt) fmt (intern fmt)))) + (cond + ((eq fmt 'org) + (require 'ox-org) + (insert (org-export-string-as + (org-babel-trim (funcall bhook body 'org)) 'org t))) + ((eq fmt 'ascii) + (require 'ox-ascii) + (insert (org-export-string-as + (concat "#+Title:\n" (funcall bhook body 'ascii)) 'ascii t))) + ((or (eq fmt 'html) (eq fmt 'html-ascii)) + (require 'ox-ascii) + (require 'ox-org) + (let* ((org-link-file-path-type 'absolute) + ;; we probably don't want to export a huge style file + (org-export-htmlize-output-type 'inline-css) + (html-and-images + (org-mime-replace-images + (org-export-string-as (funcall bhook body 'html) 'html t) file)) + (images (cdr html-and-images)) + (html (org-mime-apply-html-hook (car html-and-images)))) + (insert (org-mime-multipart + (org-export-string-as + (org-babel-trim + (funcall bhook body (if (eq fmt 'html) 'org 'ascii))) + (if (eq fmt 'html) 'org 'ascii) t) + html) + (mapconcat 'identity images "\n"))))))) (defun org-mime-org-buffer-htmlize () "Create an email buffer containing the current org-mode file -- 2.3.4 --=-=-=--