Mercurial > emacs
view lisp/org/org-xoxo.el @ 112199:6c6130ccdefd
New arg RETURN-ACTION for compose-mail, and related functions.
* lisp/mail/sendmail.el (mail-return-action): New var.
(mail-mode): Make it buffer-local.
(mail-bury): Obey it. Move special Rmail window handling to
rmail-mail-return.
(mail, mail-setup): New arg RETURN-ACTION.
(sendmail-user-agent-compose): Move from simple.el.
* lisp/simple.el (sendmail-user-agent-compose): Move to sendmail.el.
(compose-mail): New arg RETURN-ACTION.
(compose-mail-other-window, compose-mail-other-frame): Likewise.
* lisp/gnus/gnus-msg.el (gnus-msg-mail): New arg RETURN-ACTION. Pass it to
message-mail.
* lisp/gnus/message.el (message-mail): New arg RETURN-ACTION.
(message-return-action): New var.
(message-bury): Use it.
(message-mode): Make it buffer-local.
(message-send-and-exit): Always call message-bury.
(message-tool-bar-gnome): Tweak tool-bar items. Add :vert-only tags.
* lisp/mail/rmail.el (rmail-mail-return): New function.
(rmail-start-mail): Pass it to compose-mail.
* lisp/mh-e/mh-comp.el (mh-user-agent-compose): New arg RETURN-ACTION.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Wed, 12 Jan 2011 23:23:41 -0500 |
parents | a7740098b594 |
children | 417b1e4d63cd |
line wrap: on
line source
;;; org-xoxo.el --- XOXO export for Org-mode ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 ;; Free Software Foundation, Inc. ;; Author: Carsten Dominik <carsten at orgmode dot org> ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://orgmode.org ;; Version: 7.4 ;; ;; This file is part of GNU Emacs. ;; ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; XOXO export ;;; Code: (require 'org-exp) (defvar org-export-xoxo-final-hook nil "Hook run after XOXO export, in the new buffer.") (defun org-export-as-xoxo-insert-into (buffer &rest output) (with-current-buffer buffer (apply 'insert output))) (put 'org-export-as-xoxo-insert-into 'lisp-indent-function 1) ;;;###autoload (defun org-export-as-xoxo (&optional buffer) "Export the org buffer as XOXO. The XOXO buffer is named *xoxo-<source buffer name>*" (interactive (list (current-buffer))) (run-hooks 'org-export-first-hook) ;; A quickie abstraction ;; Output everything as XOXO (with-current-buffer (get-buffer buffer) (let* ((pos (point)) (opt-plist (org-combine-plists (org-default-export-plist) (org-infile-export-plist))) (filename (concat (file-name-as-directory (org-export-directory :xoxo opt-plist)) (file-name-sans-extension (file-name-nondirectory buffer-file-name)) ".html")) (out (find-file-noselect filename)) (last-level 1) (hanging-li nil)) (goto-char (point-min)) ;; CD: beginning-of-buffer is not allowed. ;; Check the output buffer is empty. (with-current-buffer out (erase-buffer)) ;; Kick off the output (org-export-as-xoxo-insert-into out "<ol class='xoxo'>\n") (while (re-search-forward "^\\(\\*+\\)[ \t]+\\(.+\\)" (point-max) 't) (let* ((hd (match-string-no-properties 1)) (level (length hd)) (text (concat (match-string-no-properties 2) (save-excursion (goto-char (match-end 0)) (let ((str "")) (catch 'loop (while 't (forward-line) (if (looking-at "^[ \t]\\(.*\\)") (setq str (concat str (match-string-no-properties 1))) (throw 'loop str))))))))) ;; Handle level rendering (cond ((> level last-level) (org-export-as-xoxo-insert-into out "\n<ol>\n")) ((< level last-level) (dotimes (- (- last-level level) 1) (if hanging-li (org-export-as-xoxo-insert-into out "</li>\n")) (org-export-as-xoxo-insert-into out "</ol>\n")) (when hanging-li (org-export-as-xoxo-insert-into out "</li>\n") (setq hanging-li nil))) ((equal level last-level) (if hanging-li (org-export-as-xoxo-insert-into out "</li>\n"))) ) (setq last-level level) ;; And output the new li (setq hanging-li 't) (if (equal ?+ (elt text 0)) (org-export-as-xoxo-insert-into out "<li class='" (substring text 1) "'>") (org-export-as-xoxo-insert-into out "<li>" text)))) ;; Finally finish off the ol (dotimes (- last-level 1) (if hanging-li (org-export-as-xoxo-insert-into out "</li>\n")) (org-export-as-xoxo-insert-into out "</ol>\n")) (goto-char pos) ;; Finish the buffer off and clean it up. (switch-to-buffer-other-window out) (indent-region (point-min) (point-max) nil) (run-hooks 'org-export-xoxo-final-hook) (save-buffer) (goto-char (point-min)) ))) (provide 'org-xoxo) ;; arch-tag: 16e6a31f-f4f5-46f1-af18-48dc89faa702 ;;; org-xoxo.el ends here