From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Hyatt Subject: Re: [ANN] org-mime -- using orgmode to send html mail? Date: Wed, 14 Apr 2010 14:00:00 -0400 Message-ID: References: <71591C25-1B0B-4162-A53C-16DB9436C0F3@gmail.com> <8739z9c3vq.fsf@gmail.com> <8739z44lyl.fsf@gmail.com> <87bpdoio0j.fsf@gmail.com> <87mxx6hmvw.fsf@gmail.com> <87d3y2f5c1.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0802635669==" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O26sn-00056U-77 for emacs-orgmode@gnu.org; Wed, 14 Apr 2010 14:00:13 -0400 Received: from [140.186.70.92] (port=32812 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O26sj-000564-AN for emacs-orgmode@gnu.org; Wed, 14 Apr 2010 14:00:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O26sf-0002Rz-Sf for emacs-orgmode@gnu.org; Wed, 14 Apr 2010 14:00:09 -0400 Received: from mail-ew0-f214.google.com ([209.85.219.214]:49831) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O26sb-0002Qi-Iu for emacs-orgmode@gnu.org; Wed, 14 Apr 2010 14:00:05 -0400 Received: by ewy6 with SMTP id 6so240912ewy.32 for ; Wed, 14 Apr 2010 11:00:00 -0700 (PDT) In-Reply-To: <87d3y2f5c1.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: emacs-orgmode@gnu.org --===============0802635669== Content-Type: multipart/alternative; boundary=00504502c71892920104843625ad --00504502c71892920104843625ad Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thanks! I finally got it to work. I actually did have the latest code, but my issue was that when I upgraded to the new org, I forgot to byte-compile before I did M-x org-reload. After I got your latest code, it all works now. I'm looking forward to using it! On Wed, Apr 14, 2010 at 10:59 AM, Eric Schulte wrot= e: > Hi Andrew, > > I started my emacs with the -Q option, and to my surprise I got the same > error that you have described. I've been able to hunt down the source > of this problem, and it is an old version of org-export-as-org, which > means that you are not loading the latest version of the core org-mode, > but rather the version distributed with Emacs. > > This is what happened to me when I started with the -Q option and simple > required org-install without first adding the path to the newer version > of org-mode to my load path. > > An easy way to verify that this is the case is to call describe-function > with C-h f org-export-as-org, then jump to the source-code of the > function by pressing enter on the linked function name, and jumping down > to the last 5 lines of the function definition. If they don't look like > > > (if (equal to-buffer 'string) > (progn (setq str-ret (buffer-string)) > (kill-buffer (current-buffer)) > str-ret) > (kill-buffer (current-buffer))) > > > > then you are still using an old version of Org-mode. Hopefully once you > are sync'd to the head of the org-mode repository this error will be > fixed. > > Hope this helps, Best -- Eric > > Andrew Hyatt writes: > > > I do get the same result you do. Hopefully, I'll have some time tomorr= ow > to > > look into the issue. RIght now, though, my problem is not the nil, but > the > > error I reported in my previous email. > > > > On Tue, Apr 13, 2010 at 8:57 PM, Eric Schulte >wrote: > > > >> So, for some reason the `org-mime-org-export' helper function is > >> returning nil on your (and Eric's) machines. Could you try evaluating > >> (C-M-x) the following in your *scratch* buffer? > >> > >> (insert (org-mime-org-export "html" "- first > >> - second > >> - third" (make-temp-file "quick-test"))) > >> > >> When I execute the above it inserts the following into the scratch > >> buffer > >> > >>
    > >>
  • > >> first > >>
  • > >>
  • > >> second > >>
  • > >>
  • > >> third > >>
  • > >>
> >> > >> If instead you get an error, or it inserts nil, then it means that our > >> systems are somehow different with respect to that function, which is = a > >> slight alteration of `org-run-like-in-org-mode'. > >> > >> At that point you could try using something like > >> > >> (org-run-like-in-org-mode 'org-export-as-html) > >> > >> to export a non-html buffer to html, or you could also try starting up > >> Emacs with the -Q option, then loading org-mime.el, opening an org-mod= e > >> file, and calling org-mime-org-buffer-htmlize, and sending an email to > >> yourself. > >> > >> Sorry I can't be of more help, I'm really mystified as to how this > >> function could be returning nil. > >> > >> Best -- Eric > >> > >> Andrew Hyatt writes: > >> > >> > Thanks for the response. I upgraded, now I get a > >> > > >> > Debugger entered--Lisp error: (wrong-type-argument arrayp t) > >> > substring(t 33) > >> > (progn (insert org-mime-default-header) (insert body) (write-file > >> tmp-file) > >> > (org-load-modules-maybe) (unless org-local-vars (setq org-local-vars > >> ...)) > >> > (substring (eval ...) (if ... ... 0))) > >> > (unwind-protect (progn (insert org-mime-default-header) (insert bod= y) > >> > (write-file tmp-file) (org-load-modules-maybe) (unless org-local-var= s > >> ...) > >> > (substring ... ...)) (and (buffer-name temp-buffer) (kill-buffer > >> > temp-buffer))) > >> > (save-current-buffer (set-buffer temp-buffer) (unwind-protect (prog= n > ... > >> > ... ... ... ... ...) (and ... ...))) > >> > (with-current-buffer temp-buffer (unwind-protect (progn ... ... ... > ... > >> ... > >> > ...) (and ... ...))) > >> > (let ((temp-buffer ...)) (with-current-buffer temp-buffer > >> (unwind-protect > >> > ... ...))) > >> > (with-temp-buffer (insert org-mime-default-header) (insert body) > >> > (write-file tmp-file) (org-load-modules-maybe) (unless org-local-var= s > >> (setq > >> > org-local-vars ...)) (substring (eval ...) (if ... ... 0))) > >> > (save-excursion (with-temp-buffer (insert org-mime-default-header) > >> (insert > >> > body) (write-file tmp-file) (org-load-modules-maybe) (unless > >> org-local-vars > >> > ...) (substring ... ...))) > >> > org-mime-org-export("org" #("\nHTML test\n\n~foo~\n=3Dbar=3D\n_baz_= \n\n| > 1 | > >> 2 > >> > |\n| a | b |\n" 0 1 (fontified t) 1 11 (fontified t) 11 12 (fontifie= d > t) > >> 12 > >> > 18 (fontified t) 18 24 (fontified t) 24 30 (fontified t) 30 31 > (fontified > >> t) > >> > 31 40 (fontified t face (gnus-cite-1 message-cited-text)) 40 41 > >> (fontified > >> > t) 41 50 (fontified t face (gnus-cite-1 message-cited-text)) 50 51 > >> > (fontified t)) "/tmp/mail2522ZvL") > >> > (let* ((region-p ...) (html-start ...) (html-end ...) (raw-body ...= ) > >> > (tmp-file ...) (body ...) (org-export-skip-text-before-1st-heading > nil) > >> > (org-export-htmlize-output-type ...) (org-export-preserve-breaks > >> > org-mime-preserve-breaks) (html-and-images ...) (html-images ...) > (html > >> > ...)) (delete-region html-start html-end) (save-excursion (goto-char > >> > html-start) (insert ... ...))) > >> > org-mime-htmlize(nil) > >> > call-interactively(org-mime-htmlize record nil) > >> > > >> > I tried this with orgstruct-mode off and on, but it was the same err= or > >> > either way. Earlier, before I got the latest version, I tried with > >> > orgstruct-mode on, and it successfull htmlized my mail. But, when I > >> received > >> > it, the mail only contained the word "nil". > >> > > >> > On Mon, Apr 12, 2010 at 1:22 PM, Eric Schulte >> >wrote: > >> > > >> >> Hi Andrew, > >> >> > >> >> Thanks for the report. My guess is that somehow the call to > >> >> org-export-as-html is erroring out because some org-mode variables > >> >> aren't being set, maybe you don't have orgstruct-mode as a minor-mo= de > in > >> >> your email composition -- not that it's required, but that could be > the > >> >> difference between our setups which is causing you to see the bug a= nd > >> >> not me. > >> >> > >> >> I've changed the `org-mime-org-export' so it more closely mimics th= e > >> >> `org-run-like-in-org-mode' wrapping function, which should hopefull= y > fix > >> >> this problem. Please let me know either way, and if the problem > >> >> persists we can try to figure out exactly which variable isn't bein= g > >> >> initialized. > >> >> > >> >> Thanks for the report! -- Eric > >> >> > >> >> Andrew Hyatt writes: > >> >> > >> >> > This looks great. However, I get an error on my test mail: > >> >> > > >> >> > This is should be HTML mode. > >> >> > > >> >> > ~foo~ > >> >> > =3Dbar=3D > >> >> > _baz_ > >> >> > > >> >> > | Table | A | > >> >> > | 1 | 2 | > >> >> > > >> >> > On calling org-mime-htmlize > >> >> > > >> >> > Debugger entered--Lisp error: (wrong-type-argument stringp nil) > >> >> > string-match(nil #("This is should be HTML mode." 0 28 (fontifi= ed > >> t))) > >> >> > byte-code("\304\211. \305\n \"\203A > >> >> > org-html-handle-time-stamps(#("This is should be HTML mode." 0 = 28 > >> >> > (fontified t))) > >> >> > byte-code(" \203. > >> >> > org-export-as-html(nil nil nil string t) > >> >> > (let nil (org-export-as-html nil nil nil (quote string) t)) > >> >> > eval((let nil (org-export-as-html nil nil nil (quote string) t)= )) > >> >> > (progn (insert org-mime-default-header) (insert body) (write-fi= le > >> >> > tmp-file) (eval (list ... org-local-vars ...))) > >> >> > (unwind-protect (progn (insert org-mime-default-header) (insert > >> body) > >> >> > (write-file tmp-file) (eval ...)) (and (buffer-name temp-buffer) > >> >> > (kill-buffer temp-buffer))) > >> >> > (save-current-buffer (set-buffer temp-buffer) (unwind-protect > (progn > >> >> ... > >> >> > ... ... ...) (and ... ...))) > >> >> > (with-current-buffer temp-buffer (unwind-protect (progn ... ... > ... > >> >> ...) > >> >> > (and ... ...))) > >> >> > (let ((temp-buffer ...)) (with-current-buffer temp-buffer > >> >> (unwind-protect > >> >> > ... ...))) > >> >> > (with-temp-buffer (insert org-mime-default-header) (insert body= ) > >> >> > (write-file tmp-file) (eval (list ... org-local-vars ...))) > >> >> > (save-excursion (with-temp-buffer (insert > org-mime-default-header) > >> >> (insert > >> >> > body) (write-file tmp-file) (eval ...))) > >> >> > org-mime-org-export("html" #("\nThis is should be HTML > >> >> > mode.\n\n~foo~\n=3Dbar=3D\n_baz_\n\n| Table | A |\n| 1 | 2 | = \n\n-- > >> \n" 0 > >> >> 1 > >> >> > (fontified t) 1 42 (fontified t) 42 43 (fontified t) 43 44 > >> (article-type > >> >> > emphasis fontified t) 44 47 (fontified t) 47 48 (article-type > emphasis > >> >> > fontified t) 48 50 (fontified t) 50 63 (fontified t face > (gnus-cite-1 > >> >> > message-cited-text)) 63 64 (fontified t) 64 78 (fontified t face > >> >> > (gnus-cite-1 message-cited-text)) 78 79 (fontified t rear-nonstic= ky > t) > >> 79 > >> >> 80 > >> >> > (fontified t) 80 84 (fontified t)) "/tmp/mail2522NRw") > >> >> > (org-mime-replace-images (org-mime-org-export "html" raw-body > >> tmp-file) > >> >> > tmp-file) > >> >> > (let* ((region-p ...) (html-start ...) (html-end ...) (raw-body > ...) > >> >> > (tmp-file ...) (body ...) (org-export-skip-text-before-1st-headin= g > >> nil) > >> >> > (org-export-htmlize-output-type ...) (org-export-preserve-breaks > >> >> > org-mime-preserve-breaks) (html-and-images ...) (html-images ...) > >> (html > >> >> > ...)) (delete-region html-start html-end) (save-excursion > (goto-char > >> >> > html-start) (insert ... ...))) > >> >> > org-mime-htmlize(nil) > >> >> > > >> >> > > >> >> > On Fri, Apr 9, 2010 at 12:41 PM, Eric Schulte < > schulte.eric@gmail.com > >> >> >wrote: > >> >> > > >> >> >> Announcing the addition of org-mime to the contrib directory of > >> Org-mode > >> >> >> > >> >> >> this allows sending HTML email using org-mode including... > >> >> >> > >> >> >> > >> >> >> - *tables* colname onecolname two 11 24 39 > >> >> >> - *inline images* including latex equations [image: $f(n) =3D= n + > >> >> >> \frac{1}{n} \int_{0}^{n}{d_x f(x) + f(n - x)}$] and the resul= ts > of > >> >> >> ditaa blocks, etc=E2=80=A6 > >> >> >> > >> >> >> [image: blue.png] > >> >> >> > >> >> >> - *blockquotes* > >> >> >> > >> >> >> HTML e-mail is the use of a subset of HTML (often ill-defined= ) > to > >> >> >> provide formatting and semantic markup capabilities in e-mail > that > >> >> are not > >> >> >> available with plain text. =E2=80=93 wikipedia > >> >> >> > >> >> >> - fontified *code blocks* (shown below) > >> >> >> - and *HTML character* conversion, like =E2=88=80 character c= s.t. =E2=88=83 h > =E2=88=88 > >> >> *HTML > >> >> >> characters* and c =E2=89=A1 h, org-html-export of c results i= n h > >> >> >> > >> >> >> > >> >> >> > >> >> >> The original org-mode formatted plain text is included as a > >> text/plain > >> >> >> mime alternative to the generated html. > >> >> >> > >> >> >> Below find the org-mime export of the org-mime worg page which > will > >> be > >> >> >> available at http://orgmode.org/worg/org-contrib/org-mime.php. > >> >> >> > >> >> >> Best -- Eric > >> >> >> > >> >> >> General > >> >> >> > >> >> >> org-mime can be used to send HTML email using Org-mode HTML > export. > >> >> >> > >> >> >> This approximates a WYSiWYG HTML mail editor from within Emacs, > and > >> can > >> >> be > >> >> >> useful for sending tables, notified source code, and inline imag= es > in > >> >> email. > >> >> >> > >> >> >> How to use it > >> >> >> Setup > >> >> >> > >> >> >> org-mime exposes two functions > >> >> >> `org-mime-htmlize' can be called from within a mail composition > >> buffer > >> >> to > >> >> >> export either the entire buffer or just the active region to htm= l, > >> and > >> >> embed > >> >> >> the results into the buffer as a text/html mime section. > >> >> >> > >> >> >> org-mime-htmlize is an interactive Lisp function in `org-mime.el= '. > >> >> >> > >> >> >> (org-mime-htmlize ARG) > >> >> >> > >> >> >> Export a portion of an email body composed using `mml-mode' to > >> >> >> html using `org-mode'. If called with an active region only > >> >> >> export that region, otherwise export the entire body. > >> >> >> > >> >> >> `org-mime-org-buffer-htmlize' can be called from within an > Org-mode > >> >> >> buffer to export either the whole buffer or the narrowed subtree > or > >> >> active > >> >> >> region to HTML, and open a new email buffer including the > resulting > >> HTML > >> >> >> content as an embedded mime section. > >> >> >> > >> >> >> org-mime-org-buffer-htmlize is an interactive Lisp function in > >> >> >> `org-mime.el'. > >> >> >> > >> >> >> (org-mime-org-buffer-htmlize) > >> >> >> > >> >> >> Export the current org-mode buffer to HTML using > >> >> >> `org-export-as-html' and package the results into an email > >> >> >> handling with appropriate MIME encoding. > >> >> >> > >> >> >> The following key bindings are suggested, which bind the C-c M-= o > key > >> >> >> sequence to the appropriate org-mime function in both email and > >> Org-mode > >> >> >> buffers. > >> >> >> > >> >> >> (add-hook 'message-mode-hook > >> >> >> (lambda () > >> >> >> (local-set-key "\C-c\M-o" 'org-mime-htmlize))) > >> >> >> (add-hook 'org-mode-hook > >> >> >> (lambda () > >> >> >> (local-set-key "\C-c\M-o" > 'org-mime-org-buffer-htmlize))) > >> >> >> > >> >> >> CSS style customization > >> >> >> > >> >> >> Email clients will often strip all global CSS from email message= s. > In > >> >> the > >> >> >> case of web-based email readers this is essential in order to > protect > >> >> the > >> >> >> CSS of the containing web site. To ensure that your CSS styles a= re > >> >> rendered > >> >> >> correctly they must be included in the actual body of the elemen= ts > to > >> >> which > >> >> >> they apply. > >> >> >> > >> >> >> The `org-mime-html-hook' allows for the insertion of these > important > >> CSS > >> >> >> elements into the resulting HTML before mime encoding. The > following > >> are > >> >> >> some possible uses of this hook. > >> >> >> > >> >> >> - for those who use color themes with Dark backgrounds it is > >> useful > >> >> to > >> >> >> set a dark background for all exported code blocks and exampl= e > >> >> regions. This > >> >> >> can be accomplished with the following > >> >> >> > >> >> >> (add-hook 'org-mime-html-hook > >> >> >> (lambda () > >> >> >> (org-mime-change-element-style > >> >> >> "pre" (format "color: %s; background-color: %s; > >> padding: > >> >> 0.5em;" > >> >> >> "#E6E1DC" "#232323")))) > >> >> >> > >> >> >> - the following can be used to nicely offset block quotes in > >> email > >> >> >> bodies > >> >> >> > >> >> >> (add-hook 'org-mime-html-hook > >> >> >> (lambda () > >> >> >> (org-mime-change-element-style > >> >> >> "blockquote" "border-left: 2px solid gray; > >> padding-left: > >> >> 4px;"))) > >> >> >> > >> >> >> > >> >> >> For other customization options see the org-mime customization > group. > >> >> >> Credits > >> >> >> > >> >> >> org-mime was developed by Eric Schulte with much-appreciated hel= p > and > >> >> >> discussion from everyone on the "using orgmode to send html mail= < > >> >> http://thread.gmane.org/gmane.emacs.orgmode/23153>" > >> >> >> thread especially David Maus. > >> >> >> > >> >> >> "Eric Schulte" writes: > >> >> >> > >> >> >> > Carsten Dominik writes: > >> >> >> > > >> >> >> >> On Apr 5, 2010, at 7:39 AM, Eric Schulte wrote: > >> >> >> >> > >> >> >> >>> Hi, > >> >> >> >>> > >> >> >> >>> It is now possible to send HTML mail directly form an org-mo= de > >> >> buffer. > >> >> >> >>> > >> >> >> >>> Calling `org-mime-org-buffer-htmlize' (could probably use a > >> better > >> >> >> >>> name) > >> >> >> >>> from inside of an org-mode buffer will use > `org-export-as-html' > >> to > >> >> >> >>> generate HTML of the buffer (respecting regions and subtree > >> >> >> >>> narrowing), > >> >> >> >>> and will then package the resulting HTML with all linked > images > >> into > >> >> a > >> >> >> >>> message buffer. > >> >> >> >>> > >> >> >> >>> As usual thanks to Carsten's thoughtfully organized function= s > and > >> >> >> >>> control variables this was surprisingly easy to implement. > >> >> >> >>> > >> >> >> >>> Cheers -- Eric > >> >> >> >>> > >> >> >> >>> The code is still up at http://github.com/eschulte/org-mime > >> >> >> >> > >> >> >> >> CONTIRB? yes, after the release..... > >> >> >> >> > >> >> >> > > >> >> >> > Sounds great, I'm move this into contrib then. -- Eric > >> >> >> > > >> >> >> >> > >> >> >> >> - Carsten > >> >> >> >> > >> >> >> >>> > >> >> >> >>> "Eric Schulte" writes: > >> >> >> >>> > >> >> >> >>>> Dan Davison writes: > >> >> >> >>>> > >> >> >> >>>> [...] > >> >> >> >>>> > >> >> >> >>>>> > >> >> >> >>>>> As I understand it the code you've written is designed to = be > >> >> >> >>>>> called in a > >> >> >> >>>>> message-mode buffer with orgstruct-mode in force. Would it > make > >> >> >> >>>>> sense to > >> >> >> >>>>> also include in your package a complementary function, tha= t > one > >> >> >> >>>>> calls in > >> >> >> >>>>> an org-mode buffer? I envisage this generating the HTML, > >> forming > >> >> the > >> >> >> >>>>> multipart email contents, and then saving it to the kill > ring, > >> so > >> >> >> >>>>> that > >> >> >> >>>>> it can be pasted into an email. > >> >> >> >>>>> > >> >> >> >>>>> This function would have access to the directory-name and = so > >> >> >> >>>>> should be > >> >> >> >>>>> able to resolve relative paths. Also, there might be some > other > >> >> >> >>>>> advantages -- for example when exporting just a region or > >> subtree, > >> >> >> >>>>> buffer-wide properties such as #+TITLE and #+AUTHOR are > picked > >> up > >> >> >> >>>>> by the > >> >> >> >>>>> org exporter and packaged into the HTML. > >> >> >> >>>>> > >> >> >> >>>>> In other words, can I use your machinery to package up the > HTML > >> >> >> >>>>> generated by Org's C-e dispatcher into an > >> >> appropriately-constructed > >> >> >> >>>>> email? > >> >> >> >>>>> > >> >> >> >>>> > >> >> >> >>>> Hi Dan, > >> >> >> >>>> > >> >> >> >>>> That sounds like a good idea, I've added it to a fledgling > task > >> >> list > >> >> >> >>>> packaged in the README at [1]. I'd say there are two > options. > >> >> >> >>>> > >> >> >> >>>> 1) which you mentioned saving the entire exported content t= o > the > >> >> >> >>>> kill-ring. One problem here is that everything is still > text > >> and > >> >> >> >>>> pastable only *before* the mime export process, which mea= ns > >> that > >> >> >> >>>> linked images wouldn't resolve after pasting into the ema= il > >> >> client. > >> >> >> >>>> > >> >> >> >>>> 2) having the function generate a new mail buffer containin= g > the > >> >> >> >>>> exported content. This buffer would need to have it's > >> >> >> >>>> `buffer-file-name' set, for images to resolve during > export. > >> I'm > >> >> >> >>>> not > >> >> >> >>>> sure how this should best work. > >> >> >> >>>> > >> >> >> >>>> Thanks -- Eric > >> >> >> >>>> > >> >> >> >>>> Footnotes: > >> >> >> >>>> [1] http://github.com/eschulte/org-mime > >> >> >> >>> > >> >> >> >>> > >> >> >> >>> _______________________________________________ > >> >> >> >>> Emacs-orgmode mailing list > >> >> >> >>> Please use `Reply All' to send replies to the list. > >> >> >> >>> Emacs-orgmode@gnu.org > >> >> >> >>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode > >> >> >> >> > >> >> >> >> - Carsten > >> >> >> > >> >> >> _______________________________________________ > >> >> >> Emacs-orgmode mailing list > >> >> >> Please use `Reply All' to send replies to the list. > >> >> >> Emacs-orgmode@gnu.org > >> >> >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode > >> >> >> > >> >> >> > >> >> > >> > > --00504502c71892920104843625ad Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thanks! I =C2=A0finally got it to work. I actually did have the latest code= , but my issue was that when I upgraded to the new org, I forgot to byte-co= mpile before I did M-x org-reload.

After I got your late= st code, it all works now. =C2=A0I'm looking forward to using it!

On Wed, Apr 14, 2010 at 10:59 AM, Eric = Schulte <sch= ulte.eric@gmail.com> wrote:
(if = (equal to-buffer 'string) (progn (setq str-ret (buffer-string))= (kill-buffer (current-buffer)= ) str-ret) (kill-buffer (current-buffer)))

then you are still using an old version of Org-mode. =C2=A0Hopefully once y= ou
are sync'd to the head of the org-mode repository this error will be fixed.

Hope this helps, Best -- Eric

Andrew Hyatt <ahyatt@gmail.com&g= t; writes:

> I do get the same result you do. =C2=A0Hopefully, I'll have some t= ime tomorrow to
> look into the issue. =C2=A0RIght now, though, my problem is not the ni= l, but the
> error I reported in my previous email.
>
> On Tue, Apr 13, 2010 at 8:57 PM, Eric Schulte <schulte.eric@gmail.com>wrote:
>
>> So, for some reason the `org-mime-org-export' helper function = is
>> returning nil on your (and Eric's) machines. =C2=A0Could you t= ry evaluating
>> (C-M-x) the following in your *scratch* buffer?
>>
>> (insert (org-mime-org-export "html" "- first
>> - second
>> - third" (make-temp-file "quick-test")))
>>
>> When I execute the above it inserts the following into the scratch=
>> buffer
>>
>> <ul>
>> <li>
>> first
>> </li>
>> <li>
>> second
>> </li>
>> <li>
>> third
>> </li>
>> </ul>
>>
>> If instead you get an error, or it inserts nil, then it means that= our
>> systems are somehow different with respect to that function, which= is a
>> slight alteration of `org-run-like-in-org-mode'.
>>
>> At that point you could try using something like
>>
>> (org-run-like-in-org-mode 'org-export-as-html)
>>
>> to export a non-html buffer to html, or you could also try startin= g up
>> Emacs with the -Q option, then loading org-mime.el, opening an org= -mode
>> file, and calling org-mime-org-buffer-htmlize, and sending an emai= l to
>> yourself.
>>
>> Sorry I can't be of more help, I'm really mystified as to = how this
>> function could be returning nil.
>>
>> Best -- Eric
>>
>> Andrew Hyatt <ahyatt@gmail.= com> writes:
>>
>> > Thanks for the response. =C2=A0I upgraded, now I get a
>> >
>> > Debugger entered--Lisp error: (wrong-type-argument arrayp t)<= br> >> > =C2=A0substring(t 33)
>> > =C2=A0(progn (insert org-mime-default-header) (insert body) (= write-file
>> tmp-file)
>> > (org-load-modules-maybe) (unless org-local-vars (setq org-loc= al-vars
>> ...))
>> > (substring (eval ...) (if ... ... 0)))
>> > =C2=A0(unwind-protect (progn (insert org-mime-default-header)= (insert body)
>> > (write-file tmp-file) (org-load-modules-maybe) (unless org-lo= cal-vars
>> ...)
>> > (substring ... ...)) (and (buffer-name temp-buffer) (kill-buf= fer
>> > temp-buffer)))
>> > =C2=A0(save-current-buffer (set-buffer temp-buffer) (unwind-p= rotect (progn ...
>> > ... ... ... ... ...) (and ... ...)))
>> > =C2=A0(with-current-buffer temp-buffer (unwind-protect (progn= ... ... ... ...
>> ...
>> > ...) (and ... ...)))
>> > =C2=A0(let ((temp-buffer ...)) (with-current-buffer temp-buff= er
>> (unwind-protect
>> > ... ...)))
>> > =C2=A0(with-temp-buffer (insert org-mime-default-header) (ins= ert body)
>> > (write-file tmp-file) (org-load-modules-maybe) (unless org-lo= cal-vars
>> (setq
>> > org-local-vars ...)) (substring (eval ...) (if ... ... 0))) >> > =C2=A0(save-excursion (with-temp-buffer (insert org-mime-defa= ult-header)
>> (insert
>> > body) (write-file tmp-file) (org-load-modules-maybe) (unless<= br> >> org-local-vars
>> > ...) (substring ... ...)))
>> > =C2=A0org-mime-org-export("org" #("\nHTML test= \n\n~foo~\n=3Dbar=3D\n_baz_\n\n| 1 |
>> 2
>> > |\n| a | b |\n" 0 1 (fontified t) 1 11 (fontified t) 11 = 12 (fontified t)
>> 12
>> > 18 (fontified t) 18 24 (fontified t) 24 30 (fontified t) 30 3= 1 (fontified
>> t)
>> > 31 40 (fontified t face (gnus-cite-1 message-cited-text)) 40 = 41
>> (fontified
>> > t) 41 50 (fontified t face (gnus-cite-1 message-cited-text)) = 50 51
>> > (fontified t)) "/tmp/mail2522ZvL")
>> > =C2=A0(let* ((region-p ...) (html-start ...) (html-end ...) (= raw-body ...)
>> > (tmp-file ...) (body ...) (org-export-skip-text-before-1st-he= ading nil)
>> > (org-export-htmlize-output-type ...) (org-export-preserve-bre= aks
>> > org-mime-preserve-breaks) (html-and-images ...) (html-images = ...) (html
>> > ...)) (delete-region html-start html-end) (save-excursion (go= to-char
>> > html-start) (insert ... ...)))
>> > =C2=A0org-mime-htmlize(nil)
>> > =C2=A0call-interactively(org-mime-htmlize record nil)
>> >
>> > I tried this with orgstruct-mode off and on, but it was the s= ame error
>> > either way. =C2=A0Earlier, before I got the latest version, I= tried with
>> > orgstruct-mode on, and it successfull htmlized my mail. But, = when I
>> received
>> > it, the mail only contained the word "nil".
>> >
>> > On Mon, Apr 12, 2010 at 1:22 PM, Eric Schulte <schulte.eric@gmail.com
>> >wrote:
>> >
>> >> Hi Andrew,
>> >>
>> >> Thanks for the report. =C2=A0My guess is that somehow the= call to
>> >> org-export-as-html is erroring out because some org-mode = variables
>> >> aren't being set, maybe you don't have orgstruct-= mode as a minor-mode in
>> >> your email composition -- not that it's required, but= that could be the
>> >> difference between our setups which is causing you to see= the bug and
>> >> not me.
>> >>
>> >> I've changed the `org-mime-org-export' so it more= closely mimics the
>> >> `org-run-like-in-org-mode' wrapping function, which s= hould hopefully fix
>> >> this problem. =C2=A0Please let me know either way, and if= the problem
>> >> persists we can try to figure out exactly which variable = isn't being
>> >> initialized.
>> >>
>> >> Thanks for the report! -- Eric
>> >>
>> >> Andrew Hyatt <ahya= tt@gmail.com> writes:
>> >>
>> >> > This looks great. =C2=A0However, I get an error on m= y test mail:
>> >> >
>> >> > This is should be HTML mode.
>> >> >
>> >> > ~foo~
>> >> > =3Dbar=3D
>> >> > _baz_
>> >> >
>> >> > | Table | A |
>> >> > | 1 =C2=A0 =C2=A0 | 2 |
>> >> >
>> >> > On calling org-mime-htmlize
>> >> >
>> >> > Debugger entered--Lisp error: (wrong-type-argument s= tringp nil)
>> >> > =C2=A0 string-match(nil #("This is should be HT= ML mode." 0 28 (fontified
>> t)))
>> >> > =C2=A0 byte-code("\304\211. \305\n \"\203A=
>> >> > =C2=A0 org-html-handle-time-stamps(#("This is s= hould be HTML mode." 0 28
>> >> > (fontified t)))
>> >> > =C2=A0 byte-code(" \203.
>> >> > =C2=A0 org-export-as-html(nil nil nil string t)
>> >> > =C2=A0 (let nil (org-export-as-html nil nil nil (quo= te string) t))
>> >> > =C2=A0 eval((let nil (org-export-as-html nil nil nil= (quote string) t)))
>> >> > =C2=A0 (progn (insert org-mime-default-header) (inse= rt body) (write-file
>> >> > tmp-file) (eval (list ... org-local-vars ...)))
>> >> > =C2=A0 (unwind-protect (progn (insert org-mime-defau= lt-header) (insert
>> body)
>> >> > (write-file tmp-file) (eval ...)) (and (buffer-name = temp-buffer)
>> >> > (kill-buffer temp-buffer)))
>> >> > =C2=A0 (save-current-buffer (set-buffer temp-buffer)= (unwind-protect (progn
>> >> ...
>> >> > ... ... ...) (and ... ...)))
>> >> > =C2=A0 (with-current-buffer temp-buffer (unwind-prot= ect (progn ... ... ...
>> >> ...)
>> >> > (and ... ...)))
>> >> > =C2=A0 (let ((temp-buffer ...)) (with-current-buffer= temp-buffer
>> >> (unwind-protect
>> >> > ... ...)))
>> >> > =C2=A0 (with-temp-buffer (insert org-mime-default-he= ader) (insert body)
>> >> > (write-file tmp-file) (eval (list ... org-local-vars= ...)))
>> >> > =C2=A0 (save-excursion (with-temp-buffer (insert org= -mime-default-header)
>> >> (insert
>> >> > body) (write-file tmp-file) (eval ...)))
>> >> > =C2=A0 org-mime-org-export("html" #("= \nThis is should be HTML
>> >> > mode.\n\n~foo~\n=3Dbar=3D\n_baz_\n\n| Table | A |\n|= 1 =C2=A0 =C2=A0 | 2 | \n\n--
>> \n" 0
>> >> 1
>> >> > (fontified t) 1 42 (fontified t) 42 43 (fontified t)= 43 44
>> (article-type
>> >> > emphasis fontified t) 44 47 (fontified t) 47 48 (art= icle-type emphasis
>> >> > fontified t) 48 50 (fontified t) 50 63 (fontified t = face (gnus-cite-1
>> >> > message-cited-text)) 63 64 (fontified t) 64 78 (font= ified t face
>> >> > (gnus-cite-1 message-cited-text)) 78 79 (fontified t= rear-nonsticky t)
>> 79
>> >> 80
>> >> > (fontified t) 80 84 (fontified t)) "/tmp/mail25= 22NRw")
>> >> > =C2=A0 (org-mime-replace-images (org-mime-org-export= "html" raw-body
>> tmp-file)
>> >> > tmp-file)
>> >> > =C2=A0 (let* ((region-p ...) (html-start ...) (html-= end ...) (raw-body ...)
>> >> > (tmp-file ...) (body ...) (org-export-skip-text-befo= re-1st-heading
>> nil)
>> >> > (org-export-htmlize-output-type ...) (org-export-pre= serve-breaks
>> >> > org-mime-preserve-breaks) (html-and-images ...) (htm= l-images ...)
>> (html
>> >> > ...)) (delete-region html-start html-end) (save-excu= rsion (goto-char
>> >> > html-start) (insert ... ...)))
>> >> > =C2=A0 org-mime-htmlize(nil)
>> >> >
>> >> >
>> >> > On Fri, Apr 9, 2010 at 12:41 PM, Eric Schulte <schulte.eric@gmail.com
>> >> >wrote:
>> >> >
>> >> >> Announcing the addition of org-mime to the contr= ib directory of
>> Org-mode
>> >> >>
>> >> >> this allows sending HTML email using org-mode in= cluding...
>> >> >>
>> >> >>
>> >> >> =C2=A0 =C2=A0- *tables* =C2=A0 colname onecolnam= e two =C2=A011 24 39
>> >> >> =C2=A0 =C2=A0- *inline images* including latex e= quations [image: $f(n) =3D n +
>> >> >> =C2=A0 =C2=A0\frac{1}{n} \int_{0}^{n}{d_x f(x) += f(n - x)}$] and the results of
>> >> >> =C2=A0 =C2=A0ditaa blocks, etc=E2=80=A6
>> >> >>
>> >> >> [image: blue.png]
>> >> >>
>> >> >> =C2=A0 =C2=A0- *blockquotes*
>> >> >>
>> >> >> =C2=A0 =C2=A0HTML e-mail is the use of a subset = of HTML (often ill-defined) to
>> >> >> =C2=A0 =C2=A0provide formatting and semantic mar= kup capabilities in e-mail that
>> >> are not
>> >> >> =C2=A0 =C2=A0available with plain text. =E2=80= =93 wikipedia
>> >> >>
>> >> >> =C2=A0 =C2=A0 - fontified *code blocks* (shown b= elow)
>> >> >> =C2=A0 =C2=A0- and *HTML character* conversion, = like =E2=88=80 character c s.t. =E2=88=83 h =E2=88=88
>> >> *HTML
>> >> >> =C2=A0 =C2=A0characters* and c =E2=89=A1 h, org-= html-export of c results in h
>> >> >>
>> >> >>
>> >> >>
>> >> >> The original org-mode formatted plain text is in= cluded as a
>> text/plain
>> >> >> mime alternative to the generated html.
>> >> >>
>> >> >> Below find the org-mime export of the org-mime w= org page which will
>> be
>> >> >> available at http://orgmode.org/worg/org-con= trib/org-mime.php.
>> >> >>
>> >> >> Best -- Eric
>> >> >>
>> >> >> General
>> >> >>
>> >> >> org-mime can be used to send HTML email using Or= g-mode HTML export.
>> >> >>
>> >> >> This approximates a WYSiWYG HTML mail editor fro= m within Emacs, and
>> can
>> >> be
>> >> >> useful for sending tables, notified source code,= and inline images in
>> >> email.
>> >> >>
>> >> >> =C2=A0 How to use it
>> >> >> =C2=A0Setup
>> >> >>
>> >> >> org-mime exposes two functions
>> >> >> =C2=A0`org-mime-htmlize' can be called from = within a mail composition
>> buffer
>> >> to
>> >> >> export either the entire buffer or just the acti= ve region to html,
>> and
>> >> embed
>> >> >> the results into the buffer as a text/html mime = section.
>> >> >>
>> >> >> org-mime-htmlize is an interactive Lisp function= in `org-mime.el'.
>> >> >>
>> >> >> (org-mime-htmlize ARG)
>> >> >>
>> >> >> Export a portion of an email body composed using= `mml-mode' to
>> >> >> html using `org-mode'. =C2=A0If called with = an active region only
>> >> >> export that region, otherwise export the entire = body.
>> >> >>
>> >> >> =C2=A0`org-mime-org-buffer-htmlize' can be c= alled from within an Org-mode
>> >> >> buffer to export either the whole buffer or the = narrowed subtree or
>> >> active
>> >> >> region to HTML, and open a new email buffer incl= uding the resulting
>> HTML
>> >> >> content as an embedded mime section.
>> >> >>
>> >> >> org-mime-org-buffer-htmlize is an interactive Li= sp function in
>> >> >> `org-mime.el'.
>> >> >>
>> >> >> (org-mime-org-buffer-htmlize)
>> >> >>
>> >> >> Export the current org-mode buffer to HTML using=
>> >> >> `org-export-as-html' and package the results= into an email
>> >> >> handling with appropriate MIME encoding.
>> >> >>
>> >> >> =C2=A0The following key bindings are suggested, = which bind the C-c M-o key
>> >> >> sequence to the appropriate org-mime function in= both email and
>> Org-mode
>> >> >> buffers.
>> >> >>
>> >> >> (add-hook 'message-mode-hook
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (lambda () >> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (local= -set-key "\C-c\M-o" 'org-mime-htmlize)))
>> >> >> (add-hook 'org-mode-hook
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (lambda () >> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (local= -set-key "\C-c\M-o" 'org-mime-org-buffer-htmlize)))
>> >> >>
>> >> >> =C2=A0 CSS style customization
>> >> >>
>> >> >> Email clients will often strip all global CSS fr= om email messages. In
>> >> the
>> >> >> case of web-based email readers this is essentia= l in order to protect
>> >> the
>> >> >> CSS of the containing web site. To ensure that y= our CSS styles are
>> >> rendered
>> >> >> correctly they must be included in the actual bo= dy of the elements to
>> >> which
>> >> >> they apply.
>> >> >>
>> >> >> The `org-mime-html-hook' allows for the inse= rtion of these important
>> CSS
>> >> >> elements into the resulting HTML before mime enc= oding. The following
>> are
>> >> >> some possible uses of this hook.
>> >> >>
>> >> >> =C2=A0 =C2=A0- for those who use color themes wi= th Dark backgrounds it is
>> useful
>> >> to
>> >> >> =C2=A0 =C2=A0set a dark background for all expor= ted code blocks and example
>> >> regions. This
>> >> >> =C2=A0 =C2=A0can be accomplished with the follow= ing
>> >> >>
>> >> >> =C2=A0 =C2=A0(add-hook 'org-mime-html-hook >> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (lambda ()
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0(org-mime-change-element-style
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 "pre" (format "color: %s; background-color: %s;
>> padding:
>> >> 0.5em;"
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "#E6E1DC"= ; "#232323"))))
>> >> >>
>> >> >> =C2=A0 =C2=A0 - the following can be used to nic= ely offset block quotes in
>> email
>> >> >> =C2=A0 =C2=A0bodies
>> >> >>
>> >> >> =C2=A0 =C2=A0(add-hook 'org-mime-html-hook >> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (lambda ()
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0(org-mime-change-element-style
>> >> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 "blockquote" "border-left: 2px solid gray;
>> padding-left:
>> >> 4px;")))
>> >> >>
>> >> >>
>> >> >> For other customization options see the org-mime= customization group.
>> >> >> =C2=A0 Credits
>> >> >>
>> >> >> org-mime was developed by Eric Schulte with much= -appreciated help and
>> >> >> discussion from everyone on the "using orgm= ode to send html mail<
>> >> http://thread.gmane.org/gmane.emacs.orgmode/23153
>"
>> >> >> thread especially David Maus.
>> >> >>
>> >> >> "Eric Schulte" <
schulte.eric@gmail.com> writes:
>> >> >>
>> >> >> > Carsten Dominik <carsten.dominik@gmail.com> writes:
>> >> >> >
>> >> >> >> On Apr 5, 2010, at 7:39 AM, Eric Schult= e wrote:
>> >> >> >>
>> >> >> >>> Hi,
>> >> >> >>>
>> >> >> >>> It is now possible to send HTML mai= l directly form an org-mode
>> >> buffer.
>> >> >> >>>
>> >> >> >>> Calling `org-mime-org-buffer-htmliz= e' (could probably use a
>> better
>> >> >> >>> name)
>> >> >> >>> from inside of an org-mode buffer w= ill use `org-export-as-html'
>> to
>> >> >> >>> generate HTML of the buffer (respec= ting regions and subtree
>> >> >> >>> narrowing),
>> >> >> >>> and will then package the resulting= HTML with all linked images
>> into
>> >> a
>> >> >> >>> message buffer.
>> >> >> >>>
>> >> >> >>> As usual thanks to Carsten's th= oughtfully organized functions and
>> >> >> >>> control variables this was surprisi= ngly easy to implement.
>> >> >> >>>
>> >> >> >>> Cheers -- Eric
>> >> >> >>>
>> >> >> >>> The code is still up at http://github.com/es= chulte/org-mime
>> >> >> >>
>> >> >> >> CONTIRB? =C2=A0yes, after the release..= ...
>> >> >> >>
>> >> >> >
>> >> >> > Sounds great, I'm move this into contri= b then. -- Eric
>> >> >> >
>> >> >> >>
>> >> >> >> - Carsten
>> >> >> >>
>> >> >> >>>
>> >> >> >>> "Eric Schulte" <schulte.eric@gmail.com> writes:<= br> >> >> >> >>>
>> >> >> >>>> Dan Davison <davison@stats.ox.ac.uk> writes:
>> >> >> >>>>
>> >> >> >>>> [...]
>> >> >> >>>>
>> >> >> >>>>>
>> >> >> >>>>> As I understand it the code= you've written is designed to be
>> >> >> >>>>> called in a
>> >> >> >>>>> message-mode buffer with or= gstruct-mode in force. Would it make
>> >> >> >>>>> sense to
>> >> >> >>>>> also include in your packag= e a complementary function, that one
>> >> >> >>>>> calls in
>> >> >> >>>>> an org-mode buffer? I envis= age this generating the HTML,
>> forming
>> >> the
>> >> >> >>>>> multipart email contents, a= nd then saving it to the kill ring,
>> so
>> >> >> >>>>> that
>> >> >> >>>>> it can be pasted into an em= ail.
>> >> >> >>>>>
>> >> >> >>>>> This function would have ac= cess to the directory-name and so
>> >> >> >>>>> should be
>> >> >> >>>>> able to resolve relative pa= ths. Also, there might be some other
>> >> >> >>>>> advantages -- for example w= hen exporting just a region or
>> subtree,
>> >> >> >>>>> buffer-wide properties such= as #+TITLE and #+AUTHOR are picked
>> up
>> >> >> >>>>> by the
>> >> >> >>>>> org exporter and packaged i= nto the HTML.
>> >> >> >>>>>
>> >> >> >>>>> In other words, can I use y= our machinery to package up the HTML
>> >> >> >>>>> generated by Org's C-e = dispatcher into an
>> >> appropriately-constructed
>> >> >> >>>>> email?
>> >> >> >>>>>
>> >> >> >>>>
>> >> >> >>>> Hi Dan,
>> >> >> >>>>
>> >> >> >>>> That sounds like a good idea, I= 've added it to a fledgling task
>> >> list
>> >> >> >>>> packaged in the README at [1]. = =C2=A0I'd say there are two options.
>> >> >> >>>>
>> >> >> >>>> 1) which you mentioned saving t= he entire exported content to the
>> >> >> >>>> =C2=A0 kill-ring. =C2=A0One pro= blem here is that everything is still text
>> and
>> >> >> >>>> =C2=A0 pastable only *before* t= he mime export process, which means
>> that
>> >> >> >>>> =C2=A0 linked images wouldn'= ;t resolve after pasting into the email
>> >> client.
>> >> >> >>>>
>> >> >> >>>> 2) having the function generate= a new mail buffer containing the
>> >> >> >>>> =C2=A0 exported content. =C2=A0= This buffer would need to have it's
>> >> >> >>>> =C2=A0 `buffer-file-name' s= et, for images to resolve during export.
>> =C2=A0I'm
>> >> >> >>>> not
>> >> >> >>>> =C2=A0 sure how this should bes= t work.
>> >> >> >>>>
>> >> >> >>>> Thanks -- Eric
>> >> >> >>>>
>> >> >> >>>> Footnotes:
>> >> >> >>>> [1] =C2=A0http://github.com/eschulte/org= -mime
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> ___________________________________= ____________
>> >> >> >>> Emacs-orgmode mailing list
>> >> >> >>> Please use `Reply All' to send = replies to the list.
>> >> >> >>> Emacs-orgmode@gnu.org
>> >> >> >>> http://lists.gnu.org/mailman= /listinfo/emacs-orgmode
>> >> >> >>
>> >> >> >> - Carsten
>> >> >>
>> >> >> _______________________________________________<= br> >> >> >> Emacs-orgmode mailing list
>> >> >> Please use `Reply All' to send replies to th= e list.
>> >> >> Emacs-o= rgmode@gnu.org
>> >> >> http://lists.gnu.org/mailman/listinfo/ema= cs-orgmode
>> >> >>
>> >> >>
>> >>
>>


--00504502c71892920104843625ad-- --===============0802635669== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --===============0802635669==--