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.
This commit is contained in:
parent
6420e80c8c
commit
2c3ad40da2
28 changed files with 739 additions and 260 deletions
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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><" 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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
|
@ -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.
|
||||
;;
|
||||
|
|
214
lisp/org/org.el
214
lisp/org/org.el
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue