]> git.eshelyaron.com Git - emacs.git/commitdiff
2008-07-24 Carsten Dominik <dominik@science.uva.nl>
authorCarsten Dominik <dominik@science.uva.nl>
Thu, 24 Jul 2008 13:59:56 +0000 (13:59 +0000)
committerCarsten Dominik <dominik@science.uva.nl>
Thu, 24 Jul 2008 13:59:56 +0000 (13:59 +0000)
* 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.

28 files changed:
lisp/org/ChangeLog
lisp/org/org-agenda.el
lisp/org/org-archive.el
lisp/org/org-bbdb.el
lisp/org/org-bibtex.el
lisp/org/org-clock.el
lisp/org/org-colview.el
lisp/org/org-compat.el
lisp/org/org-exp.el
lisp/org/org-export-latex.el
lisp/org/org-faces.el
lisp/org/org-gnus.el
lisp/org/org-id.el
lisp/org/org-info.el
lisp/org/org-irc.el
lisp/org/org-jsinfo.el
lisp/org/org-mac-message.el
lisp/org/org-macs.el
lisp/org/org-mew.el
lisp/org/org-mhe.el
lisp/org/org-mouse.el
lisp/org/org-publish.el
lisp/org/org-remember.el
lisp/org/org-rmail.el
lisp/org/org-table.el
lisp/org/org-vm.el
lisp/org/org-wl.el
lisp/org/org.el

index 5b633cc9211fb874902738cc55d25536ea9a4df1..ca55cd320ebe6532c670e887e6b2cde5d4e90115 100644 (file)
@@ -1,3 +1,122 @@
+2008-07-24  Carsten Dominik  <dominik@science.uva.nl>
+
+       * 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.
+
 2008-07-19  Juri Linkov  <juri@jurta.org>
 
        * org.el (narrow-map): Bind `org-narrow-to-subtree' to "s" on the
index 32efe5d8413bce02df2deb160b6ece8f0f5af3dc..23cda508a9a0a6d0a764e5cf99813a0769e05f85 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -211,9 +211,8 @@ you can \"misuse\" it to also add other text to the header.  However,
                             (const :tag "no deadline" 'notdeadline))))))
            (list :tag "Non-standard skipping condition"
                  :value (org-agenda-skip-function)
-                 (list
-                  (const org-agenda-skip-function)
-                  (sexp :tag "Function or form (quoted!)")))))
+                 (const org-agenda-skip-function)
+                 (sexp :tag "Function or form (quoted!)"))))
   "Selection of examples for agenda command settings.
 This will be spliced into the custom type of
 `org-agenda-custom-commands'.")
@@ -392,6 +391,13 @@ or `C-c a #' to produce the list."
  :tag "Org Agenda Skip"
  :group 'org-agenda)
 
+(defvar org-agenda-archives-mode nil
+  "Non-nil means, the agenda will include archived items.
+If this is the symbol `trees', trees in the selected agenda scope
+that are marked with the ARCHIVE tag will be included anyway.  When this is
+t, also all archive files associated with the current selection of agenda
+files will be included.")
+
 (defcustom org-agenda-skip-comment-trees t
   "Non-nil means, skip trees that start with teh COMMENT keyword.
 When nil, these trees are also scand by agenda commands."
@@ -1105,6 +1111,7 @@ The following commands are available:
 (org-defkey org-agenda-mode-map "f" 'org-agenda-follow-mode)
 (org-defkey org-agenda-mode-map "R" 'org-agenda-clockreport-mode)
 (org-defkey org-agenda-mode-map "l" 'org-agenda-log-mode)
+(org-defkey org-agenda-mode-map "v" 'org-agenda-archives-mode)
 (org-defkey org-agenda-mode-map "D" 'org-agenda-toggle-diary)
 (org-defkey org-agenda-mode-map "G" 'org-agenda-toggle-time-grid)
 (org-defkey org-agenda-mode-map "r" 'org-agenda-redo)
@@ -1234,14 +1241,25 @@ The following commands are available:
      ["Year View" org-agenda-year-view :active (org-agenda-check-type nil 'agenda)
       :style radio :selected (member org-agenda-ndays '(365 366))]
      "--"
-     ["Show Logbook entries" org-agenda-log-mode
-      :style toggle :selected org-agenda-show-log :active (org-agenda-check-type nil 'agenda 'timeline)]
-     ["Show clock report" org-agenda-clockreport-mode
-     :style toggle :selected org-agenda-clockreport-mode :active (org-agenda-check-type nil 'agenda)]
      ["Include Diary" org-agenda-toggle-diary
-      :style toggle :selected org-agenda-include-diary :active (org-agenda-check-type nil 'agenda)]
+      :style toggle :selected org-agenda-include-diary
+      :active (org-agenda-check-type nil 'agenda)]
      ["Use Time Grid" org-agenda-toggle-time-grid
-      :style toggle :selected org-agenda-use-time-grid :active (org-agenda-check-type nil 'agenda)])
+      :style toggle :selected org-agenda-use-time-grid
+      :active (org-agenda-check-type nil 'agenda)]
+     "--"
+     ["Show clock report" org-agenda-clockreport-mode
+      :style toggle :selected org-agenda-clockreport-mode
+      :active (org-agenda-check-type nil 'agenda)]
+    "--"
+     ["Show Logbook entries" org-agenda-log-mode
+      :style toggle :selected org-agenda-show-log
+      :active (org-agenda-check-type nil 'agenda 'timeline)]
+     ["Include archived trees" org-agenda-archives-mode 
+      :style toggle :selected org-agenda-archives-mode :active t]
+     ["Include archive files" (org-agenda-archives-mode t)
+      :style toggle :selected (eq org-agenda-archives-mode t) :active t
+      :keys "C-u v"])
     ["Write view to file" org-write-agenda t]
     ["Rebuild buffer" org-agenda-redo t]
     ["Save all Org-mode Buffers" org-save-all-org-buffers t]
@@ -1475,7 +1493,7 @@ Pressing `<' twice means to restrict to the current subtree or region
        (insert (eval-when-compile
                  (let ((header
 "
-Press key for an agenda command:        <   Buffer,subtree/region restriction
+Press key for an agenda command:        <   Buffer, subtree/region restriction
 --------------------------------        >   Remove restriction
 a   Agenda for current week or day      e   Export agenda views
 t   List of all TODO entries            T   Entries with special TODO kwd
@@ -1790,7 +1808,7 @@ so the export commands can easily use it."
   (let ((cmds (org-agenda-normalize-custom-commands org-agenda-custom-commands))
        (pop-up-frames nil)
        (dir default-directory)
-       pars cmd thiscmdkey files opts)
+       pars cmd thiscmdkey files opts cmd-or-set)
     (while parameters
       (push (list (pop parameters) (if parameters (pop parameters))) pars))
     (setq pars (reverse pars))
@@ -1798,8 +1816,9 @@ so the export commands can easily use it."
       (while cmds
        (setq cmd (pop cmds)
              thiscmdkey (car cmd)
-             opts (nth 4 cmd)
-             files (nth 5 cmd))
+             cmd-or-set (nth 2 cmd)
+             opts (nth (if (listp cmd-or-set) 3 4) cmd)
+             files (nth (if (listp cmd-or-set) 4 5) cmd))
        (if (stringp files) (setq files (list files)))
        (when files
          (eval (list 'let (append org-agenda-exporter-settings opts pars)
@@ -1855,7 +1874,8 @@ higher priority settings."
                   (org-agenda-collect-markers)))
                 (org-icalendar-verify-function 'org-check-agenda-marker-table)
                 (org-combined-agenda-icalendar-file file))
-            (apply 'org-export-icalendar 'combine (org-agenda-files))))
+            (apply 'org-export-icalendar 'combine
+                   (org-agenda-files nil 'ifmode))))
          (t
           (let ((bs (buffer-string)))
             (find-file file)
@@ -1937,7 +1957,7 @@ higher priority settings."
     (org-agenda-reset-markers)
     (setq org-agenda-contributing-files nil)
     (setq org-agenda-columns-active nil)
-    (org-prepare-agenda-buffers (org-agenda-files))
+    (org-prepare-agenda-buffers (org-agenda-files nil 'ifmode))
     (setq org-todo-keywords-for-agenda
          (org-uniquify org-todo-keywords-for-agenda))
     (setq org-done-keywords-for-agenda
@@ -2032,7 +2052,7 @@ it is through options in org-agenda-custom-commands.")
 Also moves point to the end of the skipped region, so that search can
 continue from there."
   (let ((p (point-at-bol)) to fp)
-    (and org-agenda-skip-archived-trees
+    (and org-agenda-skip-archived-trees (not org-agenda-archives-mode)
         (get-text-property p :org-archived)
         (org-end-of-subtree t)
         (throw :skip t))
@@ -2255,7 +2275,7 @@ given in `org-agenda-start-on-weekday'."
   (let* ((org-agenda-start-on-weekday
          (if (or (equal ndays 7) (and (null ndays) (equal 7 org-agenda-ndays)))
              org-agenda-start-on-weekday nil))
-        (thefiles (org-agenda-files))
+        (thefiles (org-agenda-files nil 'ifmode))
         (files thefiles)
         (today (time-to-days
                 (time-subtract (current-time)
@@ -2373,7 +2393,7 @@ given in `org-agenda-start-on-weekday'."
            (put-text-property s (1- (point)) 'day d)
            (put-text-property s (1- (point)) 'org-day-cnt day-cnt))))
     (when (and org-agenda-clockreport-mode clocktable-start)
-      (let ((org-agenda-files (org-agenda-files))
+      (let ((org-agenda-files (org-agenda-files nil 'ifmode))
            ;; the above line is to ensure the restricted range!
            (p org-agenda-clockreport-parameter-plist)
            tbl)
@@ -2502,7 +2522,7 @@ in `org-agenda-text-search-extra-files'."
       (setq regexp (pop regexps+))
       (if hdl-only (setq regexp (concat "^" org-outline-regexp ".*?"
                                        regexp))))
-    (setq files (org-agenda-files))
+    (setq files (org-agenda-files nil 'ifmode))
     (when (eq (car org-agenda-text-search-extra-files) 'agenda-archives)
       (pop org-agenda-text-search-extra-files)
       (setq files (org-add-archive-files files)))
@@ -2633,7 +2653,7 @@ for a keyword.  A numeric prefix directly selects the Nth keyword in
     (org-set-local 'org-last-arg arg)
     (setq org-agenda-redo-command
          '(org-todo-list (or current-prefix-arg org-last-arg)))
-    (setq files (org-agenda-files)
+    (setq files (org-agenda-files nil 'ifmode)
          rtnall nil)
     (while (setq file (pop files))
       (catch 'nextfile
@@ -2690,7 +2710,7 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
     (setq org-agenda-redo-command
          (list 'org-tags-view (list 'quote todo-only)
                (list 'if 'current-prefix-arg nil 'org-agenda-query-string)))
-    (setq files (org-agenda-files)
+    (setq files (org-agenda-files nil 'ifmode)
          rtnall nil)
     (while (setq file (pop files))
       (catch 'nextfile
@@ -2827,7 +2847,8 @@ MATCH is being ignored."
         (todo (nth 1 org-stuck-projects))
         (todo-wds (if (member "*" todo)
                       (progn
-                        (org-prepare-agenda-buffers (org-agenda-files))
+                        (org-prepare-agenda-buffers (org-agenda-files
+                                                     nil 'ifmode))
                         (org-delete-all
                          org-done-keywords-for-agenda
                          (copy-sequence org-todo-keywords-for-agenda)))
@@ -4002,7 +4023,8 @@ If ERROR is non-nil, throw an error, otherwise just return nil."
       (if (not (one-window-p)) (delete-window))
       (kill-buffer buf)
       (org-agenda-reset-markers)
-      (org-columns-remove-overlays))
+      (org-columns-remove-overlays)
+      (setq org-agenda-archives-mode nil))
     ;; Maybe restore the pre-agenda window configuration.
     (and org-agenda-restore-windows-after-quit
         (not (eq org-agenda-window-setup 'other-frame))
@@ -4340,6 +4362,24 @@ so that the date SD will be in that range."
   (message "Log mode is %s"
           (if org-agenda-show-log "on" "off")))
 
+(defun org-agenda-archives-mode (&optional with-files)
+  "Toggle log mode in an agenda buffer."
+  (interactive "P")
+  (setq org-agenda-archives-mode
+       (if with-files t (if org-agenda-archives-mode nil 'trees)))
+  (org-agenda-set-mode-name)
+  (org-agenda-redo)
+  (message
+   "%s"
+   (cond
+    ((eq org-agenda-archives-mode nil)
+     "No archives are included")
+    ((eq org-agenda-archives-mode 'trees)
+     (format "Trees with :%s: tag are included" org-archive-tag))
+    ((eq org-agenda-archives-mode t)
+     (format "Trees with :%s: tag and all active archive files are included"
+            org-archive-tag)))))
+
 (defun org-agenda-toggle-diary ()
   "Toggle diary inclusion in an agenda buffer."
   (interactive)
@@ -4370,6 +4410,11 @@ so that the date SD will be in that range."
                (if org-agenda-include-diary   " Diary"  "")
                (if org-agenda-use-time-grid   " Grid"   "")
                (if org-agenda-show-log        " Log"    "")
+               (if org-agenda-archives-mode
+                   (if (eq org-agenda-archives-mode t)
+                       " Archives"
+                     (format " :%s:" org-archive-tag))
+                 "")
                (if org-agenda-clockreport-mode " Clock"   "")))
   (force-mode-line-update))
 
index 3d7d06f3453d8c475f64b973302a8abc4251498e..0ddac74d8839ae827eef5a90be18f5ef69bd7390 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 4dd6b2332c4797addd0e69fd78940100817c17e5..fb913a09f439f61666b041cb416d8cdc75363c15 100644 (file)
@@ -6,7 +6,7 @@
 ;;         Thomas Baumann <thomas dot baumann at ch dot tum dot de>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index e314f452e9fdd16fab0839c2155aab82f3c5519d..0fe619d5bc7331f866c17d67371955994fbc612b 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Bastien Guerry <bzg at altern dot org>
 ;;         Carsten Dominik <carsten dot dominik at gmail dot com>
 ;; Keywords: org, wp, remember
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 44d8840482ae37c6778b717c924b469376786629..6caf8393f94b6aabdd603616072ea688e20cdba0 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -54,8 +54,8 @@ reaches or exceeds this number, a drawer will be created."
          (integer :tag "When at least N clock entries")))
 
 (defcustom org-clock-out-when-done t
-  "When t, the clock will be stopped when the relevant entry is marked DONE.
-When nil, clock will keep running until stopped explicitly with
+  "When non-nil, the clock will be stopped when the relevant entry is marked DONE.
+A nil value means, clock will keep running until stopped explicitly with
 `C-c C-x C-o', or until the clock is started in a different item."
   :group 'org-clock
   :type 'boolean)
@@ -136,7 +136,7 @@ of a different task.")
   "Select a task that recently was associated with clocking."
   (interactive)
   (let (sel-list rpl file task (i 0) s)
-    (save-window-excursion
+    (save-window-excursion 
       (org-switch-to-buffer-other-window
        (get-buffer-create "*Clock Task Select*"))
       (erase-buffer)
@@ -190,7 +190,7 @@ of a different task.")
       (when (and cat task)
        (insert (format "[%c] %-15s %s\n" i cat task))
        (cons i marker)))))
-
+  
 (defun org-update-mode-line ()
   (let* ((delta (- (time-to-seconds (current-time))
                    (time-to-seconds org-clock-start-time)))
@@ -207,7 +207,7 @@ of a different task.")
 (defun org-clock-in (&optional select)
   "Start the clock on the current item.
 If necessary, clock-out of the currently active clock.
-With prefix arg SELECT, offer a list of recently clocked ta sks to
+With prefix arg SELECT, offer a list of recently clocked tasks to
 clock into.  When SELECT is `C-u C-u', clock into the current task and mark
 is as the default task, a special task that will always be offered in
 the clocking selection, associated with the letter `d'."
@@ -226,13 +226,13 @@ the clocking selection, associated with the letter `d'."
                   (marker-position org-clock-marker)
                   (marker-buffer org-clock-marker))
       (org-clock-out t))
-
+    
     (when (equal select '(16))
       ;; Mark as default clocking task
       (save-excursion
        (org-back-to-heading t)
        (move-marker org-clock-default-task (point))))
-
+    
     (setq target-pos (point))  ;; we want to clock in at this location
     (save-excursion
       (when (and selected-task (marker-buffer selected-task))
@@ -261,7 +261,7 @@ the clocking selection, associated with the letter `d'."
              (setq org-clock-heading "???")))
          (setq org-clock-heading (propertize org-clock-heading 'face nil))
          (org-clock-find-position)
-
+         
          (insert "\n") (backward-char 1)
          (indent-relative)
          (insert org-clock-string " ")
@@ -638,7 +638,7 @@ the returned times will be formatted strings."
      ((string-match "\\([-+][0-9]+\\)$" skey)
       (setq shift (string-to-number (match-string 1 skey))
            key (intern (substring skey 0 (match-beginning 1))))))
-    (unless shift
+    (when (= shift 0)
       (cond ((eq key 'yesterday) (setq key 'today shift -1))
            ((eq key 'lastweek)  (setq key 'week  shift -1))
            ((eq key 'lastmonth) (setq key 'month shift -1))
@@ -689,6 +689,11 @@ the currently selected interval size."
       (let* ((b (match-beginning 1)) (e (match-end 1))
             (s (match-string 1))
             block shift ins y mw d date wp m)
+       (cond
+        ((equal s "yesterday") (setq s "today-1"))
+        ((equal s "lastweek") (setq s "thisweek-1"))
+        ((equal s "lastmonth") (setq s "thismonth-1"))
+        ((equal s "lastyear") (setq s "thisyear-1")))
        (cond
         ((string-match "^\\(today\\|thisweek\\|thismonth\\|thisyear\\)\\([-+][0-9]+\\)?$" s)
          (setq block (match-string 1 s)
@@ -735,9 +740,9 @@ the currently selected interval size."
           (ins (make-marker))
           (total-time nil)
           (scope (plist-get params :scope))
-          (tostring (plist-get params :tostring))
-          (multifile (plist-get params :multifile))
-          (header (plist-get params :header))
+          (tostring (plist-get  params :tostring))
+          (multifile (plist-get  params :multifile))
+          (header (plist-get  params :header))
           (maxlevel (or (plist-get params :maxlevel) 3))
           (step (plist-get params :step))
           (emph (plist-get params :emphasize))
index 95a5aa3fccf0894b6bbf273cd313b998472e50b0..ef7bb6908621f120d18c2d663441a8fff8a947c3 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -1013,13 +1013,13 @@ of fields."
     (let* ((title (mapcar 'cadr org-columns-current-fmt-compiled))
           (n (length title)) row tbl)
       (goto-char (point-min))
-      (while (and (re-search-forward "^\\(\\*+\\) " nil t)
-                 (or (null maxlevel)
-                     (>= maxlevel
-                         (if org-odd-levels-only
-                             (/ (1+ (length (match-string 1))) 2)
-                           (length (match-string 1))))))
-       (when (get-char-property (match-beginning 0) 'org-columns-key)
+      (while (re-search-forward "^\\(\\*+\\) " nil t)
+       (when (and (or (null maxlevel)
+                       (>= maxlevel
+                           (if org-odd-levels-only
+                               (/ (1+ (length (match-string 1))) 2)
+                             (length (match-string 1)))))
+                   (get-char-property (match-beginning 0) 'org-columns-key))
          (setq row nil)
          (loop for i from 0 to (1- n) do
                (push (or (get-char-property (+ (match-beginning 0) i) 'org-columns-value-modified)
index bc21429cb37aef5329bf1d7fb664f40b9aa0b71e..0ba1dcc75b34ad33dc70166d61457532a5900405 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 0ebcdbbfb89c6d905b5aa15767bb3eaecba1001a..cf02d1808daabaa81f6c4d90acab8645bc7b1805 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -209,6 +209,12 @@ e.g. \"author-info:nil\"."
   :group 'org-export-general
   :type 'boolean)
 
+(defcustom org-export-creator-info t
+  "Non-nil means, the postamle should contain a creator sentence.
+This sentence is \"HTML generated by org-mode XX in emacs XXX\"."
+  :group 'org-export-general
+  :type 'boolean)
+
 (defcustom org-export-time-stamp-file t
   "Non-nil means, insert a time stamp into the exported file.
 The time stamp shows when the file was created.
@@ -466,57 +472,69 @@ Org-mode file."
   :group 'org-export-html
   :type '(string :tag "File or URL"))
 
-(defcustom org-export-html-style
+(defconst org-export-html-style-default
 "<style type=\"text/css\">
-  html {
-       font-family: Times, serif;
-       font-size: 12pt;
-  }
-  .title { text-align: center; }
-  .todo  { color: red; }
-  .done { color: green; }
+  html { font-family: Times, serif; font-size: 12pt; }
+  .title  { text-align: center; }
+  .todo   { color: red; }
+  .done   { color: green; }
+  .tag    { background-color:lightblue; font-weight:normal }
+  .target { }
   .timestamp { color: grey }
   .timestamp-kwd { color: CadetBlue }
-  .tag { background-color:lightblue; font-weight:normal }
-  .target { }
+  p.verse { margin-left: 3% }
   pre {
        border: 1pt solid #AEBDCC;
        background-color: #F3F5F7;
        padding: 5pt;
        font-family: courier, monospace;
         font-size: 90%;
+        overflow:auto;
   }
   table { border-collapse: collapse; }
-  td, th {
-       vertical-align: top;
-       <!--border: 1pt solid #ADB9CC;-->
-  }
+  td, th { vertical-align: top; }
   dt { font-weight: bold; }
 </style>"
   "The default style specification for exported HTML files.
-Since there are different ways of setting style information, this variable
-needs to contain the full HTML structure to provide a style, including the
-surrounding HTML tags.  The style specifications should include definitions
-for new classes todo, done, title, and deadline.  For example, valid values
-would be:
+Please use the variables `org-export-html-style' and
+`org-export-html-style-extra' to add to this style.")
+
+(defcustom org-export-html-style ""
+  "Org-wide style definitions for exported HTML files.
+
+This variable needs to contain the full HTML structure to provide a style,
+including the surrounding HTML tags.  If you set the value of this variable,
+you should consider to include definitions for the following classes:
+ title, todo, done, timestamp, timestamp-kwd, tag, target.
+
+For example, a valid value would be:
 
    <style type=\"text/css\">
        p { font-weight: normal; color: gray; }
        h1 { color: black; }
       .title { text-align: center; }
-      .todo, .deadline { color: red; }
+      .todo, .timestamp-kwd { color: red; }
       .done { color: green; }
    </style>
 
-or, if you want to keep the style in a file,
+If you'd like to refer to en external style file, use something like
 
    <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\">
 
 As the value of this option simply gets inserted into the HTML <head> header,
-you can \"misuse\" it to add arbitrary text to the header."
+you can \"misuse\" it to add arbitrary text to the header.
+See also the variable `org-export-html-style-extra'."
   :group 'org-export-html
   :type 'string)
 
+(defcustom org-export-html-style-extra ""
+  "Additional style information for HTML export.
+The value of this variable is inserted into the HTML buffer right after
+the value of `org-export-html-style'.  Use this variable for per-file
+settings of style information, and do not forget to surround the style
+settings with <style>...</style> tags."
+  :group 'org-export-html
+  :type 'string)
 
 (defcustom org-export-html-title-format "<h1 class=\"title\">%s</h1>\n"
   "Format for typesetting the document title in HTML export."
@@ -625,6 +643,46 @@ The file name should be absolute, the file will be overwritten without warning."
   :group 'org-export-icalendar
   :type 'file)
 
+(defcustom org-icalendar-combined-name "OrgMode"
+  "Calendar name for the combined iCalendar representing all agenda files."
+  :group 'org-export-icalendar
+  :type 'string)
+
+(defcustom org-icalendar-use-deadline '(event-if-not-todo todo-due)
+  "Contexts where iCalendar export should use a deadline time stamp.
+This is a list with several symbols in it.  Valid symbol are:
+
+event-if-todo       Deadlines in TODO entries become calendar events.
+event-if-not-todo   Deadlines in non-TODO entries become calendar events.
+todo-due            Use deadlines in TODO entries as due-dates"
+  :group 'org-export-icalendar
+  :type '(set :greedy t
+             (const :tag "Deadlines in non-TODO entries become events"
+                    event-if-not-todo)
+             (const :tag "Deadline in TODO entries become events"
+                    event-if-todo)
+             (const :tag "Deadlines in TODO entries become due-dates"
+                    todo-due)))
+
+(defcustom org-icalendar-use-scheduled '(todo-start)
+  "Contexts where iCalendar export should use a scheduling time stamp.
+This is a list with several symbols in it.  Valid symbol are:
+
+event-if-todo       Scheduling time stamps in TODO entries become an event.
+event-if-not-todo   Scheduling time stamps in non-TODO entries become an event.
+todo-start          Scheduling time stamps in TODO entries become start date.
+                    Some calendar applications show TODO entries only after
+                    that date."
+  :group 'org-export-icalendar
+  :type '(set :greedy t
+             (const :tag
+                    "SCHEDULED timestamps in non-TODO entries become events"
+                    event-if-not-todo)
+             (const :tag "SCHEDULED timestamps in TODO entries become events"
+                    event-if-todo)
+             (const :tag "SCHEDULED in TODO entries become start date"
+                    todo-start)))
+
 (defcustom org-icalendar-include-todo nil
   "Non-nil means, export to iCalendar files should also cover TODO items."
   :group 'org-export-icalendar
@@ -650,11 +708,6 @@ The text will be inserted into the DESCRIPTION field."
          (const :tag "Everything" t)
          (integer :tag "Max characters")))
 
-(defcustom org-icalendar-combined-name "OrgMode"
-  "Calendar name for the combined iCalendar representing all agenda files."
-  :group 'org-export-icalendar
-  :type 'string)
-
 (defcustom org-icalendar-store-UID nil
   "Non-nil means, store any created UIDs in properties.
 The iCalendar standard requires that all entries have a unique identifyer.
@@ -709,10 +762,12 @@ or if they are only using it locally."
     (:fixed-width          . org-export-with-fixed-width)
     (:timestamps           . org-export-with-timestamps)
     (:author-info          . org-export-author-info)
+    (:creator-info         . org-export-creator-info)
     (:time-stamp-file      . org-export-time-stamp-file)
     (:tables               . org-export-with-tables)
     (:table-auto-headline  . org-export-highlight-first-table-line)
     (:style                . org-export-html-style)
+    (:style-extra          . org-export-html-style-extra)
     (:agenda-style         . org-agenda-export-html-style)
     (:convert-org-links    . org-export-html-link-org-files-as-html)
     (:inline-images        . org-export-html-inline-images)
@@ -1361,15 +1416,15 @@ on this string to produce the exported version."
       ;; Find all links that contain a newline and put them into a single line
       (org-export-concatenate-multiline-links)
 
+      ;; Normalize links: Convert angle and plain links into bracket links
+      ;; and expand link abbreviations
+      (org-export-normalize-links)
+
       ;; Find all internal links.  If they have a fuzzy match (i.e. not
       ;; a *dedicated* target match, let the link  point to the
       ;; corresponding section.
       (org-export-target-internal-links target-alist)
 
-      ;; Normalize links: Convert angle and plain links into bracket links
-      ;; and expand link abbreviations
-      (org-export-normalize-links)
-
       ;; Find multiline emphasis and put them into single line
       (when (plist-get parameters :emph-multiline)
        (org-export-concatenate-multiline-emphasis))
@@ -1380,10 +1435,12 @@ on this string to produce the exported version."
 
 (defun org-export-kill-licensed-text ()
   "Remove all text that is marked with a :org-license-to-kill property."
-  (let (p)
+  (let (p q)
     (while (setq p (text-property-any (point-min) (point-max)
                                      :org-license-to-kill t))
-      (delete-region p (next-single-property-change p :org-license-to-kill)))))
+      (delete-region
+       p (or (next-single-property-change p :org-license-to-kill)
+            (point-max))))))
 
 (defun org-export-define-heading-targets (target-alist)
   "Find all headings and define the targets for them.
@@ -1437,20 +1494,25 @@ let the link  point to the corresponding section."
            (slink (org-solidify-link-text link))
            found props pos
            (target
-            (or (cdr (assoc slink target-alist))
-                (save-excursion
-                  (unless (string-match org-link-types-re link)
-                    (setq found (condition-case nil (org-link-search link)
-                                  (error nil)))
-                    (when (and found
-                               (or (org-on-heading-p)
-                                   (not (eq found 'dedicated))))
-                      (or (get-text-property (point) 'target)
-                          (get-text-property
-                           (max (point-min)
-                                (1- (previous-single-property-change
-                                     (point) 'target)))
-                           'target))))))))
+            (cond
+             ((cdr (assoc slink target-alist)))
+             ((string-match org-link-types-re link) nil)
+             ((or (file-name-absolute-p link)
+                  (string-match "^\\." link))
+              nil)
+             (t
+              (save-excursion
+                (setq found (condition-case nil (org-link-search link)
+                              (error nil)))
+                (when (and found
+                           (or (org-on-heading-p)
+                               (not (eq found 'dedicated))))
+                  (or (get-text-property (point) 'target)
+                      (get-text-property
+                       (max (point-min)
+                            (1- (previous-single-property-change
+                                 (point) 'target)))
+                       'target))))))))
        (when target
         (set-match-data md)
         (goto-char (match-beginning 1))
@@ -1577,7 +1639,8 @@ These special cookies will later be interpreted by the backend."
 
 (defun org-export-remove-comment-blocks-and-subtrees ()
   "Remove the comment environment, and also commented subtrees."
-  (let ((re-commented (concat "^\\*+[ \t]+" org-comment-string "\\>")))
+  (let ((re-commented (concat "^\\*+[ \t]+" org-comment-string "\\>"))
+        (case-fold-search nil))
     ;; Remove comment environment
     (goto-char (point-min))
     (while (re-search-forward
@@ -1653,6 +1716,7 @@ When it is nil, all comments will be removed."
         (replace-match s t t))))
     (goto-char (point-min))
     (while (re-search-forward org-bracket-link-regexp nil t)
+      (goto-char (1- (match-end 0)))
       (org-if-unprotected
        (let* ((xx (save-match-data
                    (org-link-expand-abbrev (match-string 1))))
@@ -1835,10 +1899,12 @@ TYPE must be a string, any of:
 (defun org-export-handle-include-files ()
   "Include the contents of include files, with proper formatting."
   (let ((case-fold-search t)
-       params file markup lang start end)
+       params file markup lang start end prefix prefix1)
     (goto-char (point-min))
     (while (re-search-forward "^#\\+INCLUDE:?[ \t]+\\(.*\\)" nil t)
       (setq params (read (concat "(" (match-string 1) ")"))
+           prefix (org-get-and-remove-property 'params :prefix)
+           prefix1 (org-get-and-remove-property 'params :prefix1)
            file (org-symname-or-string (pop params))
            markup (org-symname-or-string (pop params))
            lang (org-symname-or-string (pop params)))
@@ -1854,17 +1920,45 @@ TYPE must be a string, any of:
            (setq start (format "#+begin_%s\n" markup)
                  end  (format "#+end_%s" markup))))
        (insert (or start ""))
-       (forward-char (nth 1 (insert-file-contents (expand-file-name file))))
+       (insert (org-get-file-contents (expand-file-name file) prefix prefix1))
        (or (bolp) (newline))
        (insert (or end ""))))))
 
+(defun org-get-file-contents (file &optional prefix prefix1)
+  "Get the contents of FILE and return them as a string.
+If PREFIX is a string, prepend it to each line.  If PREFIX1
+is a string, prepend it to the first line instead of PREFIX."
+  (with-temp-buffer
+    (insert-file-contents file)
+    (when (or prefix prefix1)
+      (goto-char (point-min))
+      (while (not (eobp))
+       (insert (or prefix1 prefix))
+       (setq prefix1 nil)
+       (beginning-of-line 2)))
+    (buffer-string)))
+
+(defun org-get-and-remove-property (listvar prop)
+  "Check if the value of LISTVAR contains PROP as a property.
+If yes, return the value of that property (i.e. the element following
+in the list) and remove property and value from the list in LISTVAR."
+  (let ((list (symbol-value listvar)) m v)
+    (when (setq m (member prop list))
+      (setq v (nth 1 m))
+      (if (equal (car list) prop)
+         (set listvar (cddr list))
+       (setcdr (nthcdr (- (length list) (length m) 1) list)
+               (cddr m))
+       (set listvar list)))
+    v))
+
 (defun org-symname-or-string (s)
   (if (symbolp s)
       (if s (symbol-name s) s)
     s))
 
 ;;; Fontification of code
-;; Currently only for th HTML backend, but who knows....
+;; Currently only for the HTML backend, but who knows....
 (defun org-export-replace-src-segments ()
   "Replace source code segments with special code for export."
   (let ((case-fold-search t)
@@ -1915,8 +2009,9 @@ backends, it converts the segment into an EXAMPLE segment."
                  (org-export-htmlize-region-for-paste
                   (point-min) (point-max)))))
          (if (string-match "<pre\\([^>]*\\)>\n?" htmltext)
-             (setq htmltext (replace-match "<pre class=\"src\">"
-                                           t t htmltext)))
+             (setq htmltext (replace-match
+                             (format "<pre class=\"src src-%s\">" lang)
+                             t t htmltext)))
          (concat "#+BEGIN_HTML\n" htmltext "\n#+END_HTML\n"))))
      (t
       ;; This is not HTML, so just make it an example.
@@ -2053,7 +2148,7 @@ underlined headlines.  The default is 3."
      ((and date (string-match "%" date))
       (setq date (format-time-string date)))
      (date)
-     (t (setq date (format-time-string "%Y/%m/%d %X"))))
+     (t (setq date (format-time-string "%Y-%m-%d %T %Z"))))
 
     (if (and date org-export-time-stamp-file)
        (insert (concat (nth 2 lang-words) ": " date"\n")))
@@ -2516,12 +2611,13 @@ in a window.  A non-interactive call will only return the buffer."
   (when (interactive-p)
     (setq buffer "*Org HTML Export*"))
   (let ((transient-mark-mode t) (zmacs-regions t)
-       rtn)
+       ext-plist rtn)
+    (setq ext-plist (plist-put ext-plist :ignore-subree-p t))
     (goto-char end)
     (set-mark (point)) ;; to activate the region
     (goto-char beg)
     (setq rtn (org-export-as-html
-              nil nil nil
+              nil nil ext-plist
               buffer body-only))
     (if (fboundp 'deactivate-mark) (deactivate-mark))
     (if (and (interactive-p) (bufferp rtn))
@@ -2568,7 +2664,9 @@ PUB-DIR is set, use this as the publishing directory."
                               ext-plist
                               (org-infile-export-plist))))
 
-        (style (plist-get opt-plist :style))
+        (style (concat org-export-html-style-default
+                       (plist-get opt-plist :style)
+                       (plist-get opt-plist :style-extra)))
         (html-extension (plist-get opt-plist :html-extension))
         (link-validate (plist-get opt-plist :link-validation-function))
         valid thetoc have-headings first-heading-pos
@@ -2577,11 +2675,13 @@ PUB-DIR is set, use this as the publishing directory."
         (rbeg (and region-p (region-beginning)))
         (rend (and region-p (region-end)))
         (subtree-p
-         (when region-p
-           (save-excursion
-             (goto-char rbeg)
-             (and (org-at-heading-p)
-                  (>= (org-end-of-subtree t t) rend)))))
+         (if (plist-get opt-plist :ignore-subree-p)
+             nil
+           (when region-p
+             (save-excursion
+               (goto-char rbeg)
+               (and (org-at-heading-p)
+                    (>= (org-end-of-subtree t t) rend))))))
         (opt-plist (if subtree-p 
                        (org-export-add-subtree-options opt-plist rbeg)
                      opt-plist))
@@ -2629,6 +2729,7 @@ PUB-DIR is set, use this as the publishing directory."
         (quote-re    (concat "^\\(\\*+\\)\\([ \t]+" org-quote-string "\\>\\)"))
         (inquote     nil)
         (infixed     nil)
+        (inverse     nil)
         (in-local-list nil)
         (local-list-type nil)
         (local-list-indent nil)
@@ -2671,7 +2772,7 @@ PUB-DIR is set, use this as the publishing directory."
         table-open type
         table-buffer table-orig-buffer
         ind item-type starter didclose
-        rpl path desc descp desc1 desc2 link
+        rpl path attr desc descp desc1 desc2 link
         snumber fnc item-tag
         )
 
@@ -2690,7 +2791,7 @@ PUB-DIR is set, use this as the publishing directory."
      ((and date (string-match "%" date))
       (setq date (format-time-string date)))
      (date)
-     (t (setq date (format-time-string "%Y/%m/%d %X"))))
+     (t (setq date (format-time-string "%Y-%m-%d %T %Z"))))
 
     ;; Get the language-dependent settings
     (setq lang-words (or (assoc language org-export-language-setup)
@@ -2836,12 +2937,12 @@ lang=\"%s\" xml:lang=\"%s\">
            (insert (org-html-protect line) "\n")
            (throw 'nextline nil))
 
-         ;; verbatim lines
+         ;; Fixed-width, verbatim lines (examples)
          (when (and org-export-with-fixed-width
                     (string-match "^[ \t]*:\\(.*\\)" line))
            (when (not infixed)
              (setq infixed t)
-             (insert "<pre>\n"))
+             (insert "<pre class=\"example\">\n"))
            (insert (org-html-protect (match-string 1 line)) "\n")
            (when (or (not lines)
                      (not (string-match "^[ \t]*\\(:.*\\)"
@@ -2879,11 +2980,20 @@ lang=\"%s\" xml:lang=\"%s\">
            (insert "</p>\n</blockquote>\n")
            (throw 'nextline nil))
          (when (equal "ORG-VERSE-START" line)
-           (insert "<verse>\n<p>\n")
+           (insert "\n<p class=\"verse\">\n")
+           (setq inverse t)
            (throw 'nextline nil))
          (when (equal "ORG-VERSE-END" line)
-           (insert "</p>\n</verse>\n")
+           (insert "</p>\n")
+           (setq inverse nil)
            (throw 'nextline nil))
+         (when inverse
+           (setq i (org-get-string-indentation line))
+           (if (> i 0)
+               (setq line (concat (mapconcat 'identity
+                                             (make-list (* 2 i) "\\nbsp") "")
+                                  " " (org-trim line))))
+           (setq line (concat line " \\\\")))
 
          ;; make targets to anchors
          (while (string-match "<<<?\\([^<>]*\\)>>>?\\((INVISIBLE)\\)?[ \t]*\n?" line)
@@ -2919,8 +3029,18 @@ lang=\"%s\" xml:lang=\"%s\">
          (setq start 0)
          (while (string-match org-bracket-link-analytic-regexp line start)
            (setq start (match-beginning 0))
-           (setq type (if (match-end 2) (match-string 2 line) "internal"))
-           (setq path (match-string 3 line))
+           (setq path (save-match-data (org-link-unescape
+                                        (match-string 3 line))))
+           (setq type (cond
+                       ((match-end 2) (match-string 2 line))
+                       ((save-match-data
+                          (or (file-name-absolute-p path)
+                              (string-match "^\\.\\.?/" path)))
+                        "file")
+                       (t "internal")))
+           (setq path (org-extract-attributes path))
+           (setq attr (org-attributes-to-string
+                       (get-text-property 0 'org-attributes path)))
            (setq desc1 (if (match-end 5) (match-string 5 line))
                  desc2 (if (match-end 2) (concat type ":" path) path)
                  descp (and desc1 (not (equal desc1 desc2)))
@@ -2939,19 +3059,27 @@ lang=\"%s\" xml:lang=\"%s\">
                     "<a href=\"#"
                     (org-solidify-link-text
                      (save-match-data (org-link-unescape path)) nil)
-                    "\">" desc "</a>")))
+                    "\"" attr ">" desc "</a>")))
             ((member type '("http" "https"))
              ;; standard URL, just check if we need to inline an image
              (if (and (or (eq t org-export-html-inline-images)
                           (and org-export-html-inline-images (not descp)))
                       (org-file-image-p path))
-                 (setq rpl (concat "<img src=\"" type ":" path "\"/>"))
+                 (setq rpl (concat "<img src=\"" type ":" path "\"" attr "/>"))
                (setq link (concat type ":" path))
-               (setq rpl (concat "<a href=\"" link "\">" desc "</a>"))))
+               (setq rpl (concat "<a href=\"" link "\"" attr ">"
+                                 desc "</a>"))))
             ((member type '("ftp" "mailto" "news"))
              ;; standard URL
              (setq link (concat type ":" path))
              (setq rpl (concat "<a href=\"" link "\">" desc "</a>")))
+
+            ((functionp (setq fnc (nth 2 (assoc type org-link-protocols))))
+             ;; The link protocol has a function for format the link
+             (setq rpl
+                   (save-match-data
+                     (funcall fnc (org-link-unescape path) desc1 'html))))
+
             ((string= type "file")
              ;; FILE link
              (let* ((filename path)
@@ -2988,15 +3116,11 @@ lang=\"%s\" xml:lang=\"%s\">
                                   (or (eq t org-export-html-inline-images)
                                       (and org-export-html-inline-images
                                            (not descp))))
-                             (concat "<img src=\"" thefile "\"/>")
-                           (concat "<a href=\"" thefile "\">" desc "</a>")))
+                             (concat "<img src=\"" thefile "\"" attr "/>")
+                           (concat "<a href=\"" thefile "\"" attr ">"
+                                   desc "</a>")))
                (if (not valid) (setq rpl desc))))
 
-            ((functionp (setq fnc (nth 2 (assoc type org-link-protocols))))
-             (setq rpl
-                   (save-match-data
-                     (funcall fnc (org-link-unescape path) desc1 'html))))
-
             (t
              ;; just publish the path, as default
              (setq rpl (concat "<i>&lt;" type ":"
@@ -3199,8 +3323,9 @@ lang=\"%s\" xml:lang=\"%s\">
            (insert "<p class=\"date\"> "
                    (nth 2 lang-words) ": "
                    date "</p>\n"))
-         (insert (format "<p>HTML generated by org-mode %s in emacs %s<\p>\n"
-                         org-version emacs-major-version))
+         (when org-export-creator-info
+           (insert (format "<p>HTML generated by org-mode %s in emacs %s<\p>\n"
+                           org-version emacs-major-version)))
          (insert "</div>"))
 
        (if org-export-html-with-timestamp
@@ -3256,6 +3381,7 @@ lang=\"%s\" xml:lang=\"%s\">
            (kill-buffer (current-buffer)))
        (current-buffer)))))
 
+
 (defvar org-table-colgroup-info nil)
 (defun org-format-table-ascii (lines)
   "Format a table for ascii export."
@@ -3516,6 +3642,16 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
     (set-buffer " org-tmp2 ")
     (buffer-substring (point-min) (point-max))))
 
+(defun org-export-splice-style (style extra)
+  "Splice EXTRA into STYLE, just before \"</style>\"."
+  (if (and (stringp extra)
+          (string-match "\\S-" extra)
+          (string-match "</style>" style))
+      (concat (substring style 0 (match-beginning 0))
+             "\n" extra "\n"
+             (substring style (match-beginning 0)))
+    style))
+
 (defun org-html-handle-time-stamps (s)
   "Format time stamps in string S, or remove them."
   (catch 'exit
@@ -3932,7 +4068,7 @@ When COMBINE is non nil, add the category to each line."
              (format-time-string (cdr org-time-stamp-formats) (current-time))
              "DTSTART"))
        hd ts ts2 state status (inc t) pos b sexp rrule
-       scheduledp deadlinep prefix
+       scheduledp deadlinep todo prefix due start
        tmp pri category entry location summary desc uid
        (sexp-buffer (get-buffer-create "*ical-tmp*")))
     (org-refresh-category-properties)
@@ -3981,8 +4117,21 @@ When COMBINE is non nil, add the category to each line."
                        ts)
                  deadlinep (string-match org-deadline-regexp tmp)
                  scheduledp (string-match org-scheduled-regexp tmp)
+                 todo (org-get-todo-state)
                  ;; donep (org-entry-is-done-p)
                  ))
+         (when (and
+                deadlinep
+                (if todo
+                    (not (memq 'event-if-todo org-icalendar-use-deadline))
+                  (not (memq 'event-if-not-todo org-icalendar-use-deadline))))
+           (throw :skip t))
+         (when (and
+                scheduledp
+                (if todo
+                    (not (memq 'event-if-todo org-icalendar-use-scheduled))
+                  (not (memq 'event-if-not-todo org-icalendar-use-scheduled))))
+           (throw :skip t))
          (setq prefix (if deadlinep "DL-" (if scheduledp "SC-" "TS-")))
          (if (or (string-match org-tr-regexp hd)
                  (string-match org-ts-regexp hd))
@@ -4070,9 +4219,16 @@ END:VEVENT\n"
                          t org-icalendar-include-body)
                    location (org-icalendar-cleanup-string
                              (org-entry-get nil "LOCATION"))
+                   due (and (member 'todo-due org-icalendar-use-deadline)
+                            (org-entry-get nil "DEADLINE"))
+                   start (and (member 'todo-start org-icalendar-use-scheduled)
+                            (org-entry-get nil "SCHEDULED"))
                    uid (if org-icalendar-store-UID
                            (org-id-get-create)
                          (or (org-id-get) (org-id-new))))
+             (and due (setq due (org-ical-ts-to-string due "DUE")))
+             (and start (setq start (org-ical-ts-to-string start "DTSTART")))
+
              (if (string-match org-bracket-link-regexp hd)
                  (setq hd (replace-match (if (match-end 3) (match-string 3 hd)
                                            (match-string 1 hd))
@@ -4088,19 +4244,20 @@ END:VEVENT\n"
              (princ (format "BEGIN:VTODO
 UID: %s
 %s
-SUMMARY:%s%s%s
+SUMMARY:%s%s%s%s
 CATEGORIES:%s
 SEQUENCE:1
 PRIORITY:%d
 STATUS:%s
 END:VTODO\n"
                             (concat prefix uid)
-                            dts
+                            (or start dts)
                             (or summary hd)
                             (if (and location (string-match "\\S-" location))
                                 (concat "\nLOCATION: " location) "")
                             (if (and desc (string-match "\\S-" desc))
                                 (concat "\nDESCRIPTION: " desc) "")
+                            (if due (concat "\n" due) "")
                             category
                             pri status)))))))))
 
@@ -4269,4 +4426,3 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
 ;; arch-tag: 65985fe9-095c-49c7-a7b6-cb4ee15c0a95
 
 ;;; org-exp.el ends here
-
index 11354fcd501c00226a1470db6e2581a9677b2b10..b17bc02d0c6a15af837ccbd6f83720dac151cde9 100644 (file)
@@ -4,7 +4,7 @@
 ;;
 ;; Emacs Lisp Archive Entry
 ;; Filename: org-export-latex.el
-;; Version: 6.05a
+;; Version: 6.06a
 ;; Author: Bastien Guerry <bzg AT altern DOT org>
 ;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
 ;; Keywords: org, wp, tex
@@ -762,11 +762,22 @@ org-protect property."
          (replace-match "")
        (replace-match (format "\\texttt{%s}" (match-string 0)) t t)))
     ;; convert tags
-    (when (re-search-forward "\\(:[a-zA-Z0-9]+\\)+:" nil t)
+    (when (re-search-forward "\\(:[a-zA-Z0-9_@]+\\)+:" nil t)
       (if (or (not org-export-with-tags)
              (plist-get remove-list :tags))
          (replace-match "")
-       (replace-match (format "\\texttt{%s}" (match-string 0)) t t)))))
+       (replace-match 
+        (org-export-latex-protect-string
+         (format "\\texttt{%s}" (save-match-data
+                                  (org-quote-chars (match-string 0)))))
+        t t)))))
+
+(defun org-quote-chars (s)
+  (let ((start 0))
+    (while (string-match "_" s start)
+      (setq start (+ 2 (match-beginning 0))
+           s (replace-match "\\_" t t s))))
+  s)
 
 (defun org-export-latex-fontify-headline (string)
   "Fontify special words in string."
@@ -777,10 +788,10 @@ org-protect property."
     (goto-char (point-min))
     (when (plist-get org-export-latex-options-plist :emphasize)
       (org-export-latex-fontify))
-    (org-export-latex-special-chars
-     (plist-get org-export-latex-options-plist :sub-superscript))
     (org-export-latex-keywords-maybe
      org-export-latex-remove-from-headlines)
+    (org-export-latex-special-chars
+     (plist-get org-export-latex-options-plist :sub-superscript))
     (org-export-latex-links)
     (org-trim (buffer-substring-no-properties (point-min) (point-max)))))
 
@@ -1051,7 +1062,7 @@ Regexps are those from `org-export-latex-special-string-regexps'."
      (let* ((re-radio org-export-latex-all-targets-re)
            (remove (list (match-beginning 0) (match-end 0)))
            (type (match-string 2))
-           (raw-path (match-string 3))
+           (raw-path (org-extract-attributes (match-string 3)))
            (full-raw-path (concat (match-string 1) raw-path))
            (desc (match-string 5))
            imgp radiop
index 102bec9db05a8d0df9131e11a4adc05f053e2850..2e6f9c24c982df656f6381278c9268bacfd0a778 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index e006f854e3da613811c755371af3f6b8889e5b88..9702f41a614bd6784ec17b88deac01207ede9478 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index c818ec0b802011c52d041dbdef6df844ff90df6d..fef64915cf40a823a8ace9a67dcc8a15cbc251a9 100644 (file)
@@ -4,7 +4,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index a81eaa793da00bb8f6cd1d4b66a01c226e579369..e574605efeaeca7c2d9c2fa00b169ff4a7850d8f 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 16a677c7ba2fc068afe2e1c4482f95755027b743..13844f08a2ba92ab0c1844094381cdb1267fe17c 100644 (file)
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Philip Jackson <emacs@shellarchive.co.uk>
 ;; Keywords: erc, irc, link, org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 337886c057c24eab42685fff72ecfb6bf38cb73d..6766a9d0144a1d9fbfc592f7b12d46d2f14318bb 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 8f1607ffc47b7e0fa04e0038cfd69ec69efc3b9d..aef009d12cd4598f4e9f959c52d950b38cca667c 100644 (file)
@@ -3,7 +3,7 @@
 ;; Copyright (C) 2008 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
-;; Version: 6.05a
+;; Version: 6.06a
 ;; Keywords: outlines, hypermedia, calendar, wp
 
 ;; This file is part of GNU Emacs.
index 3434c57ec7bddb9246e71cd1900d9f7296b9e2a7..b3cdc0602015ea11cdaa372063259c1a2e5fe19c 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 655e344e4ffc6e4b9092366d857907f200644623..fe9f7413c590d56516e9b83abfd39085c3cd37bb 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 
 ;; This file is part of GNU Emacs.
 
index 66f1bcc31a8af3a782f789091e26cfd9e31e531b..0f84d02d14a17225fd69e22d1586221f3aedbcc7 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Thomas Baumann <thomas dot baumann at ch dot tum dot de>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 623afac29fc9508899ee21d51a631b33747a1c6c..a098fc4cefce615d3718fedd772c731dfac4515c 100644 (file)
@@ -4,7 +4,7 @@
 ;;
 ;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com>
 ;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 65c49e7b9c9b54d661b19b4a7f1fc76d50c86e25..f239aa2ca08cc0741cea59ffa5b0281635a22c3f 100644 (file)
@@ -4,7 +4,7 @@
 ;; Author: David O'Toole <dto@gnu.org>
 ;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
 ;; 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
index a97fd647337386d76db1022d5240048bca2e4e7d..2bbb20ef0e61add216f15948be6fdec3c84366a2 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 337909f3af7989671a724280eab65cf732687c01..d54dfdddd30688b41a17c5ed444d178309a7896b 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 7050ecaabac8edd3a16bd143349e5aea5a08d950..68963032ff246b8380111133d2ae83d17ebb9eec 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -445,8 +445,14 @@ property, locally or anywhere up in the hierarchy."
   (let* ((beg (org-table-begin))
         (end (org-table-end))
         (txt (buffer-substring-no-properties beg end))
-        (file (or file (org-entry-get beg "TABLE_EXPORT_FILE" t)))
-        (format (or format (org-entry-get beg "TABLE_EXPORT_FORMAT" t)))
+        (file (or file
+                  (condition-case nil
+                      (org-entry-get beg "TABLE_EXPORT_FILE" t)
+                    (error nil))))
+        (format (or format
+                    (condition-case nil
+                        (org-entry-get beg "TABLE_EXPORT_FORMAT" t)
+                      (error nil))))
         buf deffmt-readable)
     (unless file
       (setq file (read-file-name "Export table to: "))
@@ -464,8 +470,13 @@ property, locally or anywhere up in the hierarchy."
        (setq deffmt-readable (replace-match "\\t" t t deffmt-readable)))
       (while (string-match "\n" deffmt-readable)
        (setq deffmt-readable (replace-match "\\n" t t deffmt-readable)))
-      (setq format (read-string "Format: " deffmt-readable)))
-
+      (setq format (org-completing-read
+                   "Format: "
+                   '("orgtbl-to-tsv" "orgtbl-to-csv"
+                     "orgtbl-to-latex" "orgtbl-to-html"
+                     "orgtbl-to-generic" "orgtbl-to-texinfo"
+                     "orgtbl-to-orgtbl") nil nil
+                     deffmt-readable)))
     (if (string-match "\\([^ \t\r\n]+\\)\\( +.*\\)?" format)
        (let* ((transform (intern (match-string 1 format)))
               (params (if (match-end 2)
@@ -1864,7 +1875,7 @@ For all numbers larger than LIMIT, shift them by DELTA."
                     (string-match "^[a-zA-Z][a-zA-Z0-9]*$" field))
              (push (cons field v) org-table-local-parameters)
              (push (list field line col) org-table-named-field-locations))))
-      ;; Analyze the line types
+      ;; Analyse the line types
       (goto-char beg)
       (setq org-table-current-begin-line (org-current-line)
            org-table-current-begin-pos (point)
@@ -3541,6 +3552,26 @@ a radio table."
        (delete-region beg (point))))
     (insert txt "\n")))
 
+(defun org-table-to-lisp (&optional txt)
+  "Convert the table at point to a Lisp structure.
+The structure will be a list.  Each item is either the symbol `hline'
+for a horizontal separator line, or a list of field values as strings.
+The table is taken from the parameter TXT, or from the buffer at point."
+  (unless txt
+    (unless (org-at-table-p)
+      (error "No table at point")))
+  (let* ((txt (or txt 
+                 (buffer-substring-no-properties (org-table-begin)
+                                                 (org-table-end))))
+        (lines (org-split-string txt "[ \t]*\n[ \t]*")))
+
+    (mapcar
+     (lambda (x)
+       (if (string-match org-table-hline-regexp x)
+          'hline
+        (org-split-string (org-trim x) "\\s-*|\\s-*")))
+     lines)))
+
 (defun orgtbl-send-table (&optional maybe)
   "Send a tranformed version of this table to the receiver position.
 With argument MAYBE, fail quietly if no transformation is defined for
index 032881e3eea7283ae121505e1b457f2ab3930b48..6f5e3aaded1d863f7011f6311879b324505ea9c6 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index 56ad2123972d262a7e5290e0b64c2b5403418940..433343ca29dba836f1a4238821fda4e808f17cd9 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
index b7d13f7cfb0dc73b847fbae59b392becd169f5a4..40515683075d8ff16f64fa909d278ef02122d039 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.05a
+;; Version: 6.06a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -91,7 +91,7 @@
 
 ;;; Version
 
-(defconst org-version "6.05a"
+(defconst org-version "6.06a"
   "The version number of the file org.el.")
 
 (defun org-version (&optional here)
@@ -1062,6 +1062,13 @@ When nil, an error will be generated."
   :group 'org-link-follow
   :type 'boolean)
 
+(defcustom org-open-directory-means-index-dot-org nil
+  "Non-nil means, a link to a directory really means to index.org.
+When nil, following a directory link will run dired or open a finder/explorer
+window on that directory."
+  :group 'org-link-follow
+  :type 'boolean)
+
 (defcustom org-link-mailto-program '(browse-url "mailto:%a?subject=%s")
   "Function and arguments to call for following mailto links.
 This is a list with the first element being a lisp function, and the
@@ -2573,7 +2580,9 @@ get the proper fontification."
 
 (defcustom org-agenda-skip-archived-trees t
   "Non-nil means, the agenda will skip any items located in archived trees.
-An archived tree is a tree marked with the tag ARCHIVE."
+An archived tree is a tree marked with the tag ARCHIVE.  The use of this
+variable is no longer recommended, you should leave it at the value t.
+Instead, use the key `v' to cycle the archives-mode in the agenda."
   :group 'org-archive
   :group 'org-agenda-skip
   :type 'boolean)
@@ -4206,6 +4215,12 @@ are at least `org-cycle-separator-lines' empty lines before the headeline."
             (= (match-end 0) (point-max)))
        (outline-flag-region (point) (match-end 0) nil))))
 
+(defun org-show-empty-lines-in-parent ()
+  "Move to the parent and re-show empty lines before visible headlines."
+  (save-excursion
+    (let ((context (if (org-up-heading-safe) 'children 'overview)))
+      (org-cycle-show-empty-lines context))))
+
 (defun org-cycle-hide-drawers (state)
   "Re-hide all drawers after a visibility state change."
   (when (and (org-mode-p)
@@ -4895,6 +4910,7 @@ is signaled in this case."
       (insert (make-string (- ne-ins ne-beg) ?\n)))
     (move-marker ins-point nil)
     (org-compact-display-after-subtree-move)
+    (org-show-empty-lines-in-parent)
     (unless folded
       (org-show-entry)
       (show-children)
@@ -4974,7 +4990,8 @@ If optional TREE is given, use this text instead of the kill ring."
     (error "%s"
      (substitute-command-keys
       "The kill is not a (set of) tree(s) - please use \\[yank] to yank anyway")))
-  (let* ((txt (or tree (and kill-ring (current-kill 0))))
+  (let* ((visp (not (org-invisible-p)))
+        (txt (or tree (and kill-ring (current-kill 0))))
         (^re (concat "^\\(" outline-regexp "\\)"))
         (re  (concat "\\(" outline-regexp "\\)"))
         (^re_ (concat "\\(\\*+\\)[  \t]*"))
@@ -5028,6 +5045,8 @@ If optional TREE is given, use this text instead of the kill ring."
     (goto-char beg)
     (skip-chars-forward " \t\n\r")
     (setq beg (point))
+    (if (and (org-invisible-p) visp)
+       (save-excursion (outline-show-heading)))
     ;; Shift if necessary
     (unless (= shift 0)
       (save-restriction
@@ -5109,7 +5128,7 @@ If yes, remember the marker and the distance to BEG."
     (save-match-data
       (narrow-to-region
        (progn (org-back-to-heading) (point))
-       (progn (org-end-of-subtree t t) (point))))))
+       (progn (org-end-of-subtree t) (point))))))
 
 
 ;;; Outline Sorting
@@ -5908,6 +5927,7 @@ so this really moves item trees."
       (setq beg (point)))
     (goto-char beg0)
     (org-end-of-item)
+    (org-back-over-empty-lines)
     (setq end (point))
     (goto-char beg0)
     (catch 'exit
@@ -5923,7 +5943,7 @@ so this really moves item trees."
              (throw 'exit t)))))
     (condition-case nil
        (org-beginning-of-item)
-      (error (goto-char beg)
+      (error (goto-char beg0)
             (error "Cannot move this item further up")))
     (setq ind1 (org-get-indentation))
     (if (and (org-at-item-p) (= ind ind1))
@@ -6021,9 +6041,10 @@ with something like \"1.\" or \"2)\"."
              (buffer-substring (point-at-bol) (match-beginning 3))))
        ;; (term (substring (match-string 3) -1))
        ind1 (n (1- arg))
-       fmt)
+       fmt bob)
     ;; find where this list begins
     (org-beginning-of-item-list)
+    (setq bobp (bobp))
     (looking-at "[ \t]*[0-9]+\\([.)]\\)")
     (setq fmt (concat "%d" (match-string 1)))
     (beginning-of-line 0)
@@ -6031,7 +6052,7 @@ with something like \"1.\" or \"2)\"."
     (catch 'exit
       (while t
        (catch 'next
-         (beginning-of-line 2)
+         (if bobp (setq bobp nil) (beginning-of-line 2))
          (if (eobp) (throw 'exit nil))
          (if (looking-at "[ \t]*$") (throw 'next nil))
          (skip-chars-forward " \t") (setq ind1 (current-column))
@@ -6097,7 +6118,8 @@ I.e. to the first item in this list."
          (if (or (< ind1 ind)
                  (and (= ind1 ind)
                       (not (org-at-item-p)))
-                 (bobp))
+                 (and (= (point-at-bol) (point-min))
+                      (setq pos (point-min))))
              (throw 'exit t)
            (when (org-at-item-p) (setq pos (point-at-bol)))))))
     (goto-char pos)))
@@ -6733,7 +6755,7 @@ according to FMT (default from `org-email-link-description-format')."
     (setq description nil))
   (when (and (not description)
             (not (equal link (org-link-escape link))))
-    (setq description link))
+    (setq description (org-extract-attributes link)))
   (concat "[[" (org-link-escape link) "]"
          (if description (concat "[" description "]") "")
          "]"))
@@ -7006,6 +7028,27 @@ used as the link location instead of reading one interactively."
     (org-defkey minibuffer-local-completion-map " " 'self-insert-command)
     (apply 'completing-read args)))
 
+(defun org-extract-attributes (s)
+  "Extract the attributes cookie from a string and set as text property."
+  (let (a attr (start 0))
+    (save-match-data
+      (when (string-match "{{\\([^}]+\\)}}$" s)
+       (setq a (match-string 1 s) s (substring s 0 (match-beginning 0)))
+       (while (string-match "\\([a-zA-Z]+\\)=\"\\([^\"]*\\)\"" a start)
+         (setq key (match-string 1 a) value (match-string 2 a)
+               start (match-end 0)
+               attr (plist-put attr (intern key) value))))
+      (org-add-props s nil 'org-attributes attr))
+    s))
+
+(defun org-attributes-to-string (plist)
+  "Format a property list into an HTML attribute list."
+  (let ((s "") key value)
+    (while plist
+      (setq key (pop plist) value (pop plist))
+      (setq s (concat s " "(symbol-name key) "=\"" value "\"")))
+    s))
+
 ;;; Opening/following a link
 
 (defvar org-link-search-failed nil)
@@ -7106,13 +7149,18 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
        (save-excursion
          (skip-chars-forward "^]\n\r")
          (when (org-in-regexp org-bracket-link-regexp)
-           (setq link (org-link-unescape (org-match-string-no-properties 1)))
+           (setq link (org-extract-attributes
+                       (org-link-unescape (org-match-string-no-properties 1))))
            (while (string-match " *\n *" link)
              (setq link (replace-match " " t t link)))
            (setq link (org-link-expand-abbrev link))
-           (if (string-match org-link-re-with-space2 link)
-               (setq type (match-string 1 link) path (match-string 2 link))
-             (setq type "thisfile" path link))
+           (cond
+            ((or (file-name-absolute-p link)
+                 (string-match "^\\.\\.?/" link))
+             (setq type "file" path link))
+            ((string-match org-link-re-with-space2 link)
+             (setq type (match-string 1 link) path (match-string 2 link)))
+            (t (setq type "thisfile" path link)))
            (throw 'match t)))
 
        (when (get-text-property (point) 'org-linked-text)
@@ -7530,6 +7578,9 @@ If the file does not exist, an error is thrown."
         (apps (append org-file-apps (org-default-apps)))
         (remp (and (assq 'remote apps) (org-file-remote-p file)))
         (dirp (if remp nil (file-directory-p file)))
+        (file (if (and dirp org-open-directory-means-index-dot-org)
+                  (concat (file-name-as-directory file) "index.org")
+                file))
         (dfile (downcase file))
         (old-buffer (current-buffer))
         (old-pos (point))
@@ -8586,7 +8637,7 @@ Returns the new TODO keyword, or nil if no state change should occur."
       nil)))
 
 (defun org-get-repeat ()
-  "Check if tere is a deadline/schedule with repeater in this entry."
+  "Check if there is a deadline/schedule with repeater in this entry."
   (save-match-data
     (save-excursion
       (org-back-to-heading t)
@@ -9196,6 +9247,7 @@ ACTION can be `set', `up', `down', or a character."
 
 ;;;; Tags
 
+(defvar org-agenda-archives-mode)
 (defun org-scan-tags (action matcher &optional todo-only)
   "Scan headline tags with inheritance and produce output ACTION.
 
@@ -9211,9 +9263,9 @@ only lines with a TODO keyword are included in the output."
                     (mapconcat 'regexp-quote org-todo-keywords-1 "\\|")
                     (org-re
                      "\\>\\)\\)? *\\(.*?\\)\\(:[[:alnum:]_@:]+:\\)?[ \t]*$")))
-        (props (list 'face nil
+        (props (list 'face 'default
                      'done-face 'org-done
-                     'undone-face nil
+                     'undone-face 'default
                      'mouse-face 'highlight
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
@@ -9265,8 +9317,11 @@ only lines with a TODO keyword are included in the output."
                    (org-remove-uniherited-tags (cdar tags-alist))))
          (when (and (or (not todo-only) (member todo org-not-done-keywords))
                     (eval matcher)
-                    (or (not org-agenda-skip-archived-trees)
-                        (not (member org-archive-tag tags-list))))
+                    (or
+                     (not (member org-archive-tag tags-list))
+                     ;; we have an archive tag, should we use this anyway?
+                     (or (not org-agenda-skip-archived-trees)
+                         (and (eq action 'agenda) org-agenda-archives-mode))))
            (unless (eq action 'sparse-tree) (org-agenda-skip))
 
            ;; select this headline
@@ -9420,8 +9475,10 @@ also TODO lines."
                           cat-p (equal pn "CATEGORY")
                           re-p (equal (string-to-char pv) ?{)
                           str-p (equal (string-to-char pv) ?\")
+                          time-p (save-match-data (string-match "^\"<.*>\"$" pv))
                           pv (if (or re-p str-p) (substring pv 1 -1) pv))
-                    (setq po (org-op-to-function po str-p))
+                    (if time-p (setq pv (org-matcher-time pv)))
+                    (setq po (org-op-to-function po (if time-p 'time str-p)))
                     (if (equal pn "CATEGORY")
                         (setq gv '(get-text-property (point) 'org-category))
                       (setq gv `(org-cached-entry-get nil ,pn)))
@@ -9476,21 +9533,46 @@ also TODO lines."
     (cons match0 matcher)))
 
 (defun org-op-to-function (op &optional stringp)
+  "Turn an operator into the appropriate function."
   (setq op
        (cond
-        ((equal  op   "<"       ) '(<     string<      ))
-        ((equal  op   ">"       ) '(>     org-string>  ))
-        ((member op '("<=" "=<")) '(<=    org-string<= ))
-        ((member op '(">=" "=>")) '(>=    org-string>= ))
-        ((member op '("="  "==")) '(=     string=      ))
-        ((member op '("<>" "!=")) '(org<> org-string<> ))))
-  (nth (if stringp 1 0) op))
+        ((equal  op   "<"       ) '(<     string<      org-time<))
+        ((equal  op   ">"       ) '(>     org-string>  org-time>))
+        ((member op '("<=" "=<")) '(<=    org-string<= org-time<=))
+        ((member op '(">=" "=>")) '(>=    org-string>= org-time>=))
+        ((member op '("="  "==")) '(=     string=      org-time=))
+        ((member op '("<>" "!=")) '(org<> org-string<> org-time<>))))
+  (nth (if (eq stringp 'time) 2 (if stringp 1 0)) op))
 
 (defun org<> (a b) (not (= a b)))
 (defun org-string<= (a b) (or (string= a b) (string< a b)))
 (defun org-string>= (a b) (not (string< a b)))
 (defun org-string>  (a b) (and (not (string= a b)) (not (string< a b))))
 (defun org-string<> (a b) (not (string= a b)))
+(defun org-time=  (a b) (=     (org-2ft a) (org-2ft b)))
+(defun org-time<  (a b) (<     (org-2ft a) (org-2ft b)))
+(defun org-time<= (a b) (<=    (org-2ft a) (org-2ft b)))
+(defun org-time>  (a b) (>     (org-2ft a) (org-2ft b)))
+(defun org-time>= (a b) (>=    (org-2ft a) (org-2ft b)))
+(defun org-time<> (a b) (org<> (org-2ft a) (org-2ft b)))
+(defun org-2ft (s)
+  "Convert S to a floating point time.
+If S is already a number, just return it.  If it is a string, parse
+it as a time string and apply `float-time' to it.  f S is nil, just return 0."
+  (cond
+   ((numberp s) s)
+   ((stringp s)
+    (condition-case nil
+       (float-time (apply 'encode-time (org-parse-time-string s)))
+      (error 0.)))
+   (t 0.)))
+
+(defun org-matcher-time (s)
+  (cond
+   ((equal s "<now>") (float-time))
+   ((equal s "<today>")
+    (float-time (append '(0 0 0) (nthcdr 3 (decode-time)))))
+   (t (org-2ft s))))
 
 (defun org-match-any-p (re list)
   "Does re match any element of list?"
@@ -9998,7 +10080,8 @@ the scanner.  The following items can be given here:
              the the function returns t, FUNC will not be called for that
              entry and search will continue from the point where the
              function leaves it."
-  (let* ((org-agenda-skip-archived-trees (memq 'archive skip))
+  (let* ((org-agenda-archives-mode nil) ; just to make sure
+        (org-agenda-skip-archived-trees (memq 'archive skip))
         (org-agenda-skip-comment-trees (memq 'comment skip))
         (org-agenda-skip-function
          (car (org-delete-all '(comment archive) skip)))
@@ -10009,12 +10092,12 @@ the scanner.  The following items can be given here:
      ((eq match t)   (setq matcher t))
      ((eq match nil) (setq matcher t))
      (t (setq matcher (if match (org-make-tags-matcher match) t))))
-
+    
     (when (eq scope 'tree)
       (org-back-to-heading t)
       (org-narrow-to-subtree)
       (setq scope nil))
-
+    
     (if (not scope)
        (progn
          (org-prepare-agenda-buffers
@@ -10069,6 +10152,22 @@ Being in this list makes sure that they are offered for completion.")
 (defconst org-property-end-re "^[ \t]*:END:[ \t]*$"
   "Regular expression matching the first line of a property drawer.")
 
+(defconst org-clock-drawer-start-re "^[ \t]*:CLOCK:[ \t]*$"
+  "Regular expression matching the first line of a property drawer.")
+
+(defconst org-clock-drawer-end-re "^[ \t]*:END:[ \t]*$"
+  "Regular expression matching the first line of a property drawer.")
+
+(defconst org-property-drawer-re
+  (concat "\\(" org-property-start-re "\\)[^\000]*\\("
+         org-property-end-re "\\)\n?")
+  "Matches an entire property drawer.")
+
+(defconst org-clock-drawer-re
+  (concat "\\(" org-clock-drawer-start-re "\\)[^\000]*\\("
+         org-property-end-re "\\)\n?")
+  "Matches an entire clock drawer.")
+
 (defun org-property-action ()
   "Do an action on properties."
   (interactive)
@@ -11475,7 +11574,7 @@ When SHOW-ALL is nil, only return the current occurence of a time stamp."
              date2 (list m d (+ y1 (* (if (< n1 cday) 1 -1) dn)))
              n2 (calendar-absolute-from-gregorian date2)))
        ((eq dw 'month)
-       ;; approx number of month between the tow dates
+       ;; approx number of month between the two dates
        (setq nmonths (floor (/ (- cday sday) 30.436875)))
        ;; How often does dn fit in there?
        (setq d (nth 1 start) m (car start) y (nth 2 start)
@@ -11489,12 +11588,11 @@ When SHOW-ALL is nil, only return the current occurence of a time stamp."
        (setq m2 (+ m dn) y2 y)
        (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12)))
        (setq n2 (calendar-absolute-from-gregorian (list m2 d y2)))
-       (while (< n2 cday)
+       (while (<= n2 cday)
          (setq n1 n2 m m2 y y2)
          (setq m2 (+ m dn) y2 y)
          (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12)))
          (setq n2 (calendar-absolute-from-gregorian (list m2 d y2))))))
-
       (if show-all
          (cond
           ((eq prefer 'past) n1)
@@ -11828,14 +11926,13 @@ If TMP is non-nil, don't include temporary buffers."
           (buffer-list)))
     (delete nil blist)))
 
-(defun org-agenda-files (&optional unrestricted ext)
+(defun org-agenda-files (&optional unrestricted archives)
   "Get the list of agenda files.
 Optional UNRESTRICTED means return the full list even if a restriction
 is currently in place.
-When EXT is non-nil, try to add all files that are created by adding EXT
-to the file nemes.  Basically, this is a way to add the archive files
-to the list, by setting EXT to \"_archive\"  If EXT is non-nil, but not
-a string, \"_archive\" will be used."
+When ARCHIVES is t, include all archive files hat are really being
+used by the agenda files.  If ARCHIVE is `ifmode', do this only if
+`org-agenda-archives-mode' is t."
   (let ((files
         (cond
          ((and (not unrestricted) (get 'org-agenda-files 'org-restrict)))
@@ -11855,16 +11952,9 @@ a string, \"_archive\" will be used."
                                 (lambda (file)
                                   (and (file-readable-p file) file)))
                                files))))
-    (when ext
-      (setq ext (if (and (stringp ext) (string-match "\\S-" ext))
-                   ext "_archive"))
-      (setq files (apply 'append
-                        (mapcar
-                         (lambda (f)
-                           (if (file-exists-p (concat f ext))
-                               (list f (concat f ext))
-                             (list f)))
-                         files))))
+    (when (or (eq archives t)
+             (and (eq archives 'ifmode) (eq org-agenda-archives-mode t)))
+      (setq files (org-add-archive-files files)))
     files))
 
 (defun org-edit-agenda-file-list ()
@@ -12327,13 +12417,15 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
       (cd dir))
     (if (not (file-exists-p dvifile))
        (progn (message "Failed to create dvi file from %s" texfile) nil)
-      (call-process "dvipng" nil nil nil
-                   "-E" "-fg" fg "-bg" bg
-                    "-D" dpi
-                   ;;"-x" scale "-y" scale
-                   "-T" "tight"
-                   "-o" pngfile
-                   dvifile)
+      (condition-case nil
+         (call-process "dvipng" nil nil nil
+                       "-E" "-fg" fg "-bg" bg
+                       "-D" dpi
+                       ;;"-x" scale "-y" scale
+                       "-T" "tight"
+                       "-o" pngfile
+                       dvifile)
+       (error nil))
       (if (not (file-exists-p pngfile))
          (progn (message "Failed to create png file from %s" texfile) nil)
        ;; Use the requested file name and clean up
@@ -12427,7 +12519,9 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
 
 (org-defkey org-mode-map "\C-c\C-a" 'show-all)  ; in case allout messed up.
 (org-defkey org-mode-map "\C-c\C-r" 'org-reveal)
-(org-defkey narrow-map "s" 'org-narrow-to-subtree)
+(if (boundp 'narrow-map)
+    (org-defkey narrow-map "s" 'org-narrow-to-subtree)
+  (org-defkey org-mode-map "\C-xns" 'org-narrow-to-subtree))
 (org-defkey org-mode-map "\C-c$"    'org-archive-subtree)
 (org-defkey org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree)
 (org-defkey org-mode-map "\C-c\C-x\C-a" 'org-toggle-archive-tag)
@@ -13220,9 +13314,6 @@ See the individual commands for more information."
      ["Cycling opens ARCHIVE trees"
       (setq org-cycle-open-archived-trees (not org-cycle-open-archived-trees))
       :style toggle :selected org-cycle-open-archived-trees]
-     ["Agenda includes ARCHIVE trees"
-      (setq org-agenda-skip-archived-trees (not org-agenda-skip-archived-trees))
-      :style toggle :selected (not org-agenda-skip-archived-trees)]
      "--"
      ["Move Subtree to Archive" org-advertized-archive-subtree t]
  ;    ["Check and Move Children" (org-archive-subtree '(4))
@@ -14390,7 +14481,9 @@ Show the heading too, if it is currently invisible."
 (eval-after-load "imenu"
   '(progn
      (add-hook 'imenu-after-jump-hook
-              (lambda () (org-show-context 'org-goto)))))
+              (lambda ()
+                (if (eq major-mode 'org-mode)
+                    (org-show-context 'org-goto))))))
 
 ;; Speedbar support
 
@@ -14513,4 +14606,3 @@ Still experimental, may disappear in the future."
 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
 
 ;;; org.el ends here
-