From 2c3ad40da258ae8a2be1d95f548ff20066b083bb Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Thu, 24 Jul 2008 13:59:56 +0000 Subject: 2008-07-24 Carsten Dominik * org-exp.el (org-export-region-as-html, org-export-as-html): Make sure that calls from `org-export-region-as-html' do not do the special check for a subtree. * org-agenda.el (org-batch-store-agenda-views): Fix parsing bug. * org.el (org-open-file): Use `org-open-directory-means-index-dot-org'. (org-open-directory-means-index-dot-org): New option. * org.el (org-make-link-string): Remove link attributes from description. (org-open-at-point): Remove link attributes bevore using the path. * org-exp.el (org-export-as-html): Handle link attributes. * org.el (org-extract-attributes, org-attributes-to-string): New functions. * org-table.el (org-table-to-lisp): New function. * org.el (org-narrow-to-subtree): Do not include the final newline into the narrowed region. * org-agenda.el (org-agenda-custom-commands-local-options): Fixed bug with user-define skipping condition. * org-agenda.el (org-agenda-get-restriction-and-command): Fixed typo. * org-exp.el (org-export-html-style-default): Automatic overflow handling for pre fields. (org-export-as-ascii, org-export-as-html): Change default format for time stamp. * org-table.el (org-table-export): Offer completion for translator functions, and do not require a heading above the table. * org.el (org-renumber-ordered-list, org-beginning-of-item-list): Cater for the case of a list starting in the first line of the buffer. * org-publish.el (org-publish-find-title): Bug fix. (org-publish-org-index): Implement new :index-style option. * org-publish.el (org-publish-timestamp-filename): Use SHA1-encoded file names in the timestamp directory. * org-publish.el (org-publish-needed-p): Be verbose about files published and files skipped. * org-exp.el (org-export-preprocess-string): Swap link normalization and inernal link targeting. * org-publish.el (org-publish-needed-p): Create timestamp directory when it does not exist. * org-clock.el (org-clock-out-when-done): Doc fix. * org.el (org-agenda-skip-unavailable-files): Doc fix. * org-exp.el (org-export-remove-comment-blocks-and-subtrees): Ignore case when searching for the COMMENT cookie at export time. * org-exp.el (org-get-file-contents) (org-get-and-remove-property): New functions. (org-export-handle-include-files): Handle the new prefix options. (org-export-as-html): Fix the verse environment. * org.el (org-time=, org-time<, org-time<=, org-time>) (org-time>=, org-time<>, org-2ft): New functions. (org-op-to-function): Also provide for the time testing fucntions. * org-exp.el (org-export-html-style-default): New constant. * org-exp.el (org-export-html-style-extra): New variable. (org-export-splice-style): New function. * org-exp.el (org-export-plist-vars, org-export-as-html): Implement `org-export-creator-info'. (org-export-creator-info): New option. * org.el (org-clock-drawer-start-re, org-clock-drawer-end-re) (org-property-drawer-re, org-clock-drawer-re): New constants. * org-exp.el (org-icalendar-use-deadline) (org-icalendar-use-scheduled): New options. (org-icalendar-include-todo): Default changed to t. (org-print-icalendar-entries): Implement better utilization of scheduling and deadline time stamps. (org-export-target-internal-links, org-export-as-html): Allow file lines without the "file:" prefix if the file path is an absolute path or starts with ".". * org-clock.el (org-clocktable-shift): Also undertand yesterday, lastweek etc. (org-clock-special-range): Also undertand yesterday, lastweek etc. * org.el (org-agenda-skip-archived-trees): Docstring now discourages using this. (org-scan-tags): Check for org-agenda-archives-mode. (org-map-entries): Make sure org-agenda-archives-mode is nil. (org-agenda-files): Functionality of second arg changed. * org-agenda.el (org-agenda-archives-mode): New variable (org-write-agenda, org-prepare-agenda, org-agenda-list) (org-search-view, org-todo-list, org-tags-view) (org-agenda-list-stuck-projects): Call `org-agenda-files' with `ifmode' argument. (org-agenda-quit): Reset the archives mode. (org-agenda-archives-mode): New command. (org-agenda-set-mode-name): Include archives info. * org.el (org-paste-subtree): Make sure the yanked headline is visible if it was yanked at a visible point. (org-move-item-up): Fix the bug with moving white space at the end of the item. (org-show-empty-lines-in-parent): New function. --- lisp/org/org-publish.el | 92 ++++++++++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 36 deletions(-) (limited to 'lisp/org/org-publish.el') diff --git a/lisp/org/org-publish.el b/lisp/org/org-publish.el index 65c49e7b9c9..f239aa2ca08 100644 --- a/lisp/org/org-publish.el +++ b/lisp/org/org-publish.el @@ -4,7 +4,7 @@ ;; Author: David O'Toole ;; Maintainer: Bastien Guerry ;; Keywords: hypermedia, outlines, wp -;; Version: 6.05a +;; Version: 6.06a ;; This file is part of GNU Emacs. ;; @@ -263,7 +263,12 @@ index of files or summary page for a given project. :index-function Plugin function to use for generation of index. Defaults to `org-publish-org-index', which generates a plain list of links to all files - in the project." + in the project. + :index-style Can be `list' (index is just an itemized list + of the titles of the files involved) or + `tree' (the directory structure of the source + files is reflected in the index). Defaults to + `tree'." :group 'org-publish :type 'alist) @@ -297,24 +302,29 @@ If functions in this hook modify the buffer, it will be saved." (defun org-publish-timestamp-filename (filename) "Return path to timestamp file for filename FILENAME." - (while (string-match - (if (eq system-type 'windows-nt) "~\\|/\\|:" "~\\|/") filename) - (setq filename (replace-match "_" nil t filename))) - (concat org-publish-timestamp-directory filename ".timestamp")) + (concat (file-name-as-directory org-publish-timestamp-directory) + "X" (if (fboundp 'sha1) (sha1 filename) (md5 filename)))) (defun org-publish-needed-p (filename) "Return `t' if FILENAME should be published." - (if org-publish-use-timestamps-flag - (if (file-exists-p org-publish-timestamp-directory) - ;; first handle possible wrong timestamp directory - (if (not (file-directory-p org-publish-timestamp-directory)) - (error "Org publish timestamp: %s is not a directory" - org-publish-timestamp-directory) - ;; there is a timestamp, check if FILENAME is newer - (file-newer-than-file-p - filename (org-publish-timestamp-filename filename)))) - ;; don't use timestamps, always return t - t)) + (let ((rtn + (if org-publish-use-timestamps-flag + (if (file-exists-p org-publish-timestamp-directory) + ;; first handle possible wrong timestamp directory + (if (not (file-directory-p org-publish-timestamp-directory)) + (error "Org publish timestamp: %s is not a directory" + org-publish-timestamp-directory) + ;; there is a timestamp, check if FILENAME is newer + (file-newer-than-file-p + filename (org-publish-timestamp-filename filename))) + (make-directory org-publish-timestamp-directory) + t) + ;; don't use timestamps, always return t + t))) + (if rtn + (message "Publishing file %s" filename) + (message "Skipping unmodified file %s" filename)) + rtn)) (defun org-publish-update-timestamp (filename) "Update publishing timestamp for file FILENAME. @@ -602,6 +612,8 @@ Default for INDEX-FILENAME is 'index.org'." (index-filename (concat dir (or index-filename "index.org"))) (index-title (or (plist-get project-plist :index-title) (concat "Index for project " (car project)))) + (index-style (or (plist-get project-plist :index-style) + 'tree)) (index-buffer (find-buffer-visiting index-filename)) (ifn (file-name-nondirectory index-filename)) file) @@ -616,25 +628,32 @@ Default for INDEX-FILENAME is 'index.org'." (oldlocal localdir)) ;; index shouldn't index itself (unless (string= fn ifn) - (setq localdir (concat (file-name-as-directory dir) - (file-name-directory link))) - (unless (string= localdir oldlocal) - (if (string= localdir dir) - (setq indent-str (make-string 2 ?\ )) - (let ((subdirs - (split-string - (directory-file-name - (file-name-directory - (file-relative-name localdir dir))) "/")) - (subdir "")) - (setq indent-str (make-string 2 ?\ )) - (dolist (d subdirs) - (setq subdir (concat subdir d "/")) - (insert (concat indent-str " + [[file:" subdir "][" d "/]]\n")) - (setq indent-str (make-string (+ (length indent-str) 2) ?\ )))))) + (if (eq index-style 'list) + (message "Generating list-style index for %s" index-title) + (message "Generating tree-style index for %s" index-title) + (setq localdir (concat (file-name-as-directory dir) + (file-name-directory link))) + (unless (string= localdir oldlocal) + (if (string= localdir dir) + (setq indent-str (make-string 2 ?\ )) + (let ((subdirs + (split-string + (directory-file-name + (file-name-directory + (file-relative-name localdir dir))) "/")) + (subdir "")) + (setq indent-str (make-string 2 ?\ )) + (dolist (d subdirs) + (setq subdir (concat subdir d "/")) + (insert (concat indent-str " + [[file:" + subdir "][" d "/]]\n")) + (setq indent-str (make-string + (+ (length indent-str) 2) ?\ ))))))) + ;; This is common to 'flat and 'tree (insert (concat indent-str " + [[file:" link "][" - (file-name-sans-extension fn) - "]]\n"))))) + (org-publish-find-title file) + "]]\n")) + ))) (write-file index-filename) (kill-buffer (current-buffer))))) @@ -648,7 +667,8 @@ Default for INDEX-FILENAME is 'index.org'." (and (not (plist-get opt-plist :skip-before-1st-heading)) (org-export-grab-title-from-buffer)) - (file-name-sans-extension file))))) + (file-name-nondirectory (file-name-sans-extension file)))))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Interactive publishing functions -- cgit v1.2.1