Mercurial > emacs
view lisp/org/org-xoxo.el @ 106168:83924fb4f59c
2009-11-20 Carsten Dominik <carsten.dominik@gmail.com>
* org-agenda.el (org-agenda-diary-entry-in-org-file): Rebuild
agenda after adding new entry.
* org-datetree.el (org-datetree-find-day-create): Fix regular
expression.
* org.el (org-display-outline-path): Use a format specifier for
message, to avoid problems with heading containing `%'.
* org-agenda.el (org-agenda-hide-tags-regexp): New option.
(org-format-agenda-item): Call `org-agenda-fix-displayed-tags'.
(org-agenda-fix-displayed-tags): New function.
(org-agenda-do-context-action): Just call
`org-display-outline-path', without piping the result through
`message'.
* org-latex.el (org-export-latex-preprocess): Protect secondary
footnote references.
* org-indent.el (org-indent-initialize): Avoid empty strings as
line prefixes.
* org-agenda.el (org-agenda-diary-entry-in-org-file): Make sure
hat checking for the mark does not throw an error.
(org-agenda-diary-entry-in-org-file): Catch the case that there is
not `day' text property in the cursor line.
* org.el (org-sort-entries-or-items): Make sure that the final
entry has a newline before doing the sorting.
* org-agenda.el (org-agenda-diary-entry-in-org-file): Get the text
property at the beginning of the line.
* org.el (org-make-link-string): Don't allow a description with
only white space.
* org-agenda.el (org-agenda-insert-diary-strategy): New variable.
(org-agenda-insert-diary-as-top-level): New function.
(org-agenda-add-entry-to-org-agenda-diary-file): Call
`org-agenda-insert-diary-as-top-level'.
* org.el (org-occur-in-agenda-files): Make sure none of the
buffers is narrowed.
(org-activate-plain-links): Add the face property here.
(org-set-font-lock-defaults): Do not add the face to plain links,
the activator function does this.
* org-habit.el (org-is-habit-p): Add doc string.
* org-archive.el (org-archive-subtree-default-with-confirmation):
Autoload.
* org-latex.el (org-export-latex-fontify): Fix regexp to make char
after match optional (happens at the end of a line...).
* org.el (org-fontify-meta-lines-and-blocks): Apply special faces
for special blocks.
* org-faces.el (org-copy-face): Set lisp indentation.
(org-quote, org-verse): New faces.
* org-agenda.el (org-agenda-remove-date): Remove variable.
* org-freemind.el (org-freemind-escape-str-from-org): Fix encoding.
* org-html.el (org-export-as-html): Move the home/up link into
the content div.
* org.el (org-export-latex-packages-alist): Option definition
moved here from org-latex.el.
* org-html.el (org-export-html-home/up-format): Add an ID to the
up/home div.
* org-wl.el (org-wl-store-link): Handle the case that
`wl-use-petname' is set.
* org.el (org-set-effort): Improve prompt.
(org-get-outline-path): Widen to get full path.
(org-compact-display-after-subtree-move): Function removed.
2009-11-20 Eric Schulte <schulte.eric@gmail.com>
* org-exp-blocks.el (org-export-blocks-format-ditaa): Use sha1
hash keys to cache and re-use images generated by the
org-exp-blocks interface to ditaa and dot.
* org.el (org-format-latex): Latex images are now saved to files
named by the sha1 hash of the latex source text avoiding
regeneration of identical images.
author | Carsten Dominik <dominik@science.uva.nl> |
---|---|
date | Fri, 20 Nov 2009 20:50:32 +0000 |
parents | b92e7ae35c75 |
children | 1d1d5d9bd884 |
line wrap: on
line source
;;; org-xoxo.el --- XOXO export for Org-mode ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 ;; Free Software Foundation, Inc. ;; Author: Carsten Dominik <carsten at orgmode dot org> ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://orgmode.org ;; Version: 6.33x ;; ;; 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: (require 'org-exp) ;;; XOXO export (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))) ;; 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