mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-29 11:02:01 +00:00
2008-11-23 Carsten Dominik <carsten.dominik@gmail.com>
* org-clock.el (org-dblock-write:clocktable): Make sure the clocktable sees the first line. (org-clock-in): Warn if the clock cannot be resumed. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-open-at-point): Fix mixup about interactive and non-interactive elisp links. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-preprocess-string): Allow one comment line before the first headline to always be included. This is to not miss a commented target. * org-mouse.el (org-mouse-insert-item): Call `org-indent-to-column' instead of `indent-to', for XEmacs compatibility. * org.el (org-refile-targets): Fix customize definition so that it works also in XEmacs. (org-fixup-indentation): Call `org-indent-to-column' instead of `indent-to', for XEmacs compatibility. 2008-11-23 Tokuya Kameshima <kames@fa2.so-net.ne.jp> * org-mew.el (org-mew-store-link): Get the correct case folder for refiled messages. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-as-ascii): Remove the "\\" forced line break indicators. * org.el (org-ido-completing-read): Remove the "i:" prefix for ido-completion propts. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-apply-template): Use `org-substring-no-properties'. * org-compat.el (org-substring-no-properties): New function. * org-remember.el (org-remember-apply-template): Use `org-substring-no-properties' for compatibility. * org-list.el (org-list-two-spaces-after-bullet-regexp): New option. (org-fix-bullet-type): respect `org-list-two-spaces-after-bullet-regexp'. * org-clock.el (org-clock-load): Clean up the code. * org.el (org-adaptive-fill-function): Allow two spaces after "1." as a list bullet. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-save, org-clock-load): Check for live buffers, existing files, and buffer file names to ensure consistent information. (org-clock-persist): Make `clock' a special value of this variable, and improve docstring. * org-list.el (org-cycle-list-bullet, org-fix-bullet-type) (org-get-string-indentation): Adapt indentation when the bullet width changes. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-finalize): Make interactive. (org-remember-kill): New command. (org-remember-finish-immediately): Call `org-remember-finalize' directly. (org-remember-finalize): Make `org-remember-finalize' an interactive function. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-apply-template): No ido completion for free prompts in remember templates. (org-remember-before-finalize-hook): New hook. (org-remember-mode): New minor mode. (org-remember-apply-template): Turn on `org-remember-mode'. * org-id.el (org-id-add-location): Avoid error when no file is given. * org-remember.el (org-remember-apply-template): Fix the way how the list of allowed properties is retrieved from the target file. * org.el (org-insert-link): Improve file link matching. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-colview.el (org-columns-display-here): New argument DATELINE, to trigger using the new face. (org-agenda-colview-summarize): Call `org-columns-display-here' with the new argument. * org-faces.el (org-agenda-column-dateline): New face. * org-publish.el (org-publish-org-index): Use index-title at page title, not as section. * org-exp.el (org-export-html-format-desc): Respect the org-protect property. (org-export-as-html): Protect image specifiers that are in the description part of a link. * org.el (org-sort-entries-or-items, org-completing-read) (org-refile-get-location, org-olpath-completing-read, org-todo) (org-show-todo-tree, org-sparse-tree, org-make-tags-matcher) (org-set-tags, org-change-tag-in-region, org-fast-tag-selection) (org-set-property, org-delete-property) (org-delete-property-globally): Use `org-ido-completing-read'. * org-remember.el (org-remember-apply-template): Use `org-ido-completing-read'. * org-publish.el (org-publish): Use `org-ido-completing-read'. * org-colview.el (org-columns-edit-value, org-columns-new) (org-insert-columns-dblock): Use `org-ido-completing-read'. * org-colview-xemacs.el (org-columns-edit-value) (org-columns-new, org-insert-columns-dblock): Use `org-ido-completing-read'. * org-attach.el (org-attach-delete-one, org-attach-open): Use `org-ido-completing-read'. * org-agenda.el (org-todo-list, org-agenda-filter-by-tag): Use `org-ido-completing-read'. * org.el (org-time-today): New function. (org-matcher-time): Use `org-time-today'. Add special treatment for "<tomorrow>" and "<yesterday>". (org-ido-completing-read): New function. (org-completion-use-ido): New option. * org-exp.el (org-export-format-source-code): Fix bug in require htmlize code. (org-export-target-internal-links): Fix bug in search for text property. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-export-latex.el (org-export-latex-subcontent): Interprete target aliases as additonal labels. * org-exp.el (org-export-target-aliases): New variable. (org-export-preprocess-string) (org-export-handle-invisible-targets): Fill the alias alist. (org-export-as-html): Remove the from the anchor, and also assign an id. (org-html-level-start): Insert the target aliases as additonal anchors. * org.el (org-edit-fixed-width-region): Fix bug when starting a new picture area. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-open-at-mouse): Ensure correct link abbreviations when following a link with the mouse from the agenda. * org-exp.el (org-export-as-html): Avoid lone </div> when no headlines are created. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-link-translation-function): New option. (org-open-at-point): Call `org-link-translation-function' if non-nil. (org-translate-link): New function. (org-translate-link-from-planner): New function. (org-open-at-point): Allow interactive commands in elisp links. * org-exp.el (org-icalendar-cleanup-string): Restore the old iCalendar quoting. The new one seems to caus problems with applications. * org.el (org-yank): Set `this-command' to `yank', so that `yank-pop' will work. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-icalendar-cleanup-string): Improve RFC2455 compliance as far as quoting is concerned. * org.el (org-link-expand-abbrev): Implement %h as an escape for a hexified version of the tag. * org-vm.el (org-vm-follow-link): Require `vm-search'. * org.el (org-up-heading-safe, org-forward-same-level): Always call `org-back-to-heading' instead of `outline-back-to-heading'. (org-back-to-heading): New wrapper around outline-back-to-heading, with a useful error message telling where the error happened. * org-list.el (org-update-checkbox-count): Always call `org-back-to-heading' instead of `outline-back-to-heading'. * org-exp.el (org-export-as-html): Make sure that each <img> tag has an `alt' attribute, to ensure XHTML validation. 2008-11-23 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish-attachment): Allow publishing to overwrite attachment files. * org-agenda.el (org-agenda-timerange-leaders): New option. (org-agenda-get-blocks): Use `org-agenda-timerange-leaders'. * org.el (org-edit-src-exit): Untabify ASCII image before returning.
This commit is contained in:
parent
770f39cf50
commit
ce4fdcb95a
@ -1,3 +1,11 @@
|
||||
2008-11-23 Carsten Dominik <dominik@science.uva.nl>
|
||||
|
||||
* org.texi (Setting up Remember): Document `org-remember-mode'.
|
||||
(External links): Document that bbdb links can use a regular
|
||||
expression.
|
||||
(External links): Document that elisp links can contain interactive
|
||||
commands.
|
||||
|
||||
2008-11-22 Michael Kifer <kifer@cs.stonybrook.edu>
|
||||
|
||||
* viper.texi (viper-translate-all-ESC-keysequences):
|
||||
|
@ -6,7 +6,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -878,6 +878,20 @@ to occupy a fixed space in the agenda display."
|
||||
:group 'org-agenda-line-format
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-agenda-timerange-leaders '("" "(%d/%d): ")
|
||||
"Text preceding timerange entries in the agenda view.
|
||||
This is a list with two strings. The first applies when the range
|
||||
is entirely on one day. The second applies if the range spans several days.
|
||||
The strings may have two \"%d\" format specifiers which will be filled
|
||||
with the sequence number of the days, and the total number of days in the
|
||||
range, respectively."
|
||||
:group 'org-agenda-line-format
|
||||
:type '(list
|
||||
(string :tag "Deadline today ")
|
||||
(choice :tag "Deadline relative"
|
||||
(string :tag "Format string")
|
||||
(function))))
|
||||
|
||||
(defcustom org-agenda-scheduled-leaders '("Scheduled: " "Sched.%2dx: ")
|
||||
"Text preceeding scheduled items in the agenda view.
|
||||
This is a list with two strings. The first applies when the item is
|
||||
@ -2722,7 +2736,7 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
|
||||
rtn rtnall files file pos)
|
||||
(when (equal arg '(4))
|
||||
(setq org-select-this-todo-keyword
|
||||
(completing-read "Keyword (or KWD1|K2D2|...): "
|
||||
(org-ido-completing-read "Keyword (or KWD1|K2D2|...): "
|
||||
(mapcar 'list kwds) nil nil)))
|
||||
(and (equal 0 arg) (setq org-select-this-todo-keyword nil))
|
||||
(org-set-local 'org-last-arg arg)
|
||||
@ -3384,7 +3398,7 @@ the documentation of `org-diary'."
|
||||
(push txt ee))))
|
||||
(nreverse ee)))
|
||||
|
||||
(defalias 'org-get-closed 'org-agenda-get-progress)
|
||||
(defalias 'org-get-closed 'org-get-progress)
|
||||
(defun org-agenda-get-progress ()
|
||||
"Return the logged TODO entries for agenda display."
|
||||
(let* ((props (list 'mouse-face 'highlight
|
||||
@ -3398,7 +3412,7 @@ the documentation of `org-diary'."
|
||||
(items (if (consp org-agenda-show-log)
|
||||
org-agenda-show-log
|
||||
org-agenda-log-mode-items))
|
||||
(parts
|
||||
(parts
|
||||
(delq nil
|
||||
(list
|
||||
(if (memq 'closed items) (concat "\\<" org-closed-string))
|
||||
@ -3677,8 +3691,10 @@ FRACTION is what fraction of the head-warning time has passed."
|
||||
(org-entry-is-done-p)
|
||||
(throw :skip t))
|
||||
(setq txt (org-format-agenda-item
|
||||
(format (if (= d1 d2) "" "(%d/%d): ")
|
||||
(1+ (- d0 d1)) (1+ (- d2 d1)))
|
||||
(format
|
||||
(nth (if (= d1 d2) 0 1)
|
||||
org-agenda-timerange-leaders)
|
||||
(1+ (- d0 d1)) (1+ (- d2 d1)))
|
||||
head category tags
|
||||
(if (= d0 d1) timestr))))
|
||||
(setq txt org-agenda-no-heading-message))
|
||||
@ -4255,7 +4271,7 @@ to switch to narrowing."
|
||||
(org-set-local 'org-global-tags-completion-table
|
||||
(org-global-tags-completion-table)))
|
||||
(let ((completion-ignore-case t))
|
||||
(setq tag (completing-read
|
||||
(setq tag (org-ido-completing-read
|
||||
"Tag: " org-global-tags-completion-table))))
|
||||
(cond
|
||||
((equal char ?/) (org-agenda-filter-by-tag-show-all))
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
;; Author: John Wiegley <johnw@newartisans.com>
|
||||
;; Keywords: org data task
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -153,6 +153,9 @@ D Delete all of a task's attachments. A safer way is
|
||||
"Return the directory associated with the current entry.
|
||||
If the directory does not exist and CREATE-IF-NOT-EXISTS-P is non-nil,
|
||||
the directory and the corresponding ID will be created."
|
||||
(when (and (not (buffer-file-name (buffer-base-buffer)))
|
||||
(not (file-name-absolute-p org-attach-directory)))
|
||||
(error "Need absolute `org-attach-directory' to attach in buffers without filename."))
|
||||
(let ((uuid (org-id-get (point) create-if-not-exists-p)))
|
||||
(when (or uuid create-if-not-exists-p)
|
||||
(unless uuid
|
||||
@ -245,7 +248,7 @@ The attachment is created as an Emacs buffer."
|
||||
(let* ((attach-dir (org-attach-dir t))
|
||||
(files (org-attach-file-list attach-dir))
|
||||
(file (or file
|
||||
(completing-read
|
||||
(org-ido-completing-read
|
||||
"Delete attachment: "
|
||||
(mapcar (lambda (f)
|
||||
(list (file-name-nondirectory f)))
|
||||
@ -320,7 +323,7 @@ If IN-EMACS is non-nil, force opening in Emacs."
|
||||
(files (org-attach-file-list attach-dir))
|
||||
(file (if (= (length files) 1)
|
||||
(car files)
|
||||
(completing-read "Open attachment: "
|
||||
(org-ido-completing-read "Open attachment: "
|
||||
(mapcar 'list files) nil t))))
|
||||
(org-open-file (expand-file-name file attach-dir) in-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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -104,9 +104,19 @@ has not been closed, resume the clock from that point"
|
||||
|
||||
(defcustom org-clock-persist nil
|
||||
"When non-nil, save the running clock when emacs is closed, and
|
||||
resume it next time emacs is started."
|
||||
resume it next time emacs is started.
|
||||
When this is t, both the running clock, and the entire clock
|
||||
history are saved. When this is the symbol `clock', only the
|
||||
running clock is saved.
|
||||
|
||||
When Emacs restarts with saved clock information, the file containing the
|
||||
running clock as well as all files mentioned in the clock history will
|
||||
be visited."
|
||||
:group 'org-clock
|
||||
:type 'boolean)
|
||||
:type '(choice
|
||||
(const :tag "Just the running clock" clock)
|
||||
(const :tag "Clock and history" t)
|
||||
(const :tag "No persistence" nil)))
|
||||
|
||||
(defcustom org-clock-persist-file "~/.emacs.d/org-clock-save.el"
|
||||
"File to save clock data to"
|
||||
@ -246,7 +256,7 @@ of a different task.")
|
||||
'help-echo (concat help-text ": " org-clock-heading))
|
||||
(org-propertize clock-string 'help-echo help-text)))
|
||||
'local-map org-clock-mode-map
|
||||
'mouse-face '(face mode-line-highlight)))
|
||||
'mouse-face (if (featurep 'xemacs) 'highlight 'mode-line-highlight)))
|
||||
(force-mode-line-update)))
|
||||
|
||||
(defvar org-clock-mode-line-entry nil
|
||||
@ -260,88 +270,102 @@ 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'."
|
||||
(interactive "P")
|
||||
(let ((interrupting (marker-buffer org-clock-marker))
|
||||
ts selected-task target-pos)
|
||||
(when (equal select '(4))
|
||||
(setq selected-task (org-clock-select-task "Clock-in on task: "))
|
||||
(if selected-task
|
||||
(setq selected-task (copy-marker selected-task))
|
||||
(error "Abort")))
|
||||
(when interrupting
|
||||
;; We are interrupting the clocking of a differnt task.
|
||||
;; Save a marker to this task, so that we can go back.
|
||||
(move-marker org-clock-interrupted-task
|
||||
(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))
|
||||
;; There is a selected task, move to the correct buffer
|
||||
;; and set the new target position.
|
||||
(set-buffer (org-base-buffer (marker-buffer selected-task)))
|
||||
(setq target-pos (marker-position selected-task))
|
||||
(move-marker selected-task nil))
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
(widen)
|
||||
(goto-char target-pos)
|
||||
(catch 'abort
|
||||
(let ((interrupting (marker-buffer org-clock-marker))
|
||||
ts selected-task target-pos)
|
||||
(when (equal select '(4))
|
||||
(setq selected-task (org-clock-select-task "Clock-in on task: "))
|
||||
(if selected-task
|
||||
(setq selected-task (copy-marker selected-task))
|
||||
(error "Abort")))
|
||||
(when interrupting
|
||||
;; We are interrupting the clocking of a differnt task.
|
||||
;; Save a marker to this task, so that we can go back.
|
||||
(move-marker org-clock-interrupted-task
|
||||
(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)
|
||||
(or interrupting (move-marker org-clock-interrupted-task nil))
|
||||
(org-clock-history-push)
|
||||
(cond ((functionp org-clock-in-switch-to-state)
|
||||
(looking-at org-complex-heading-regexp)
|
||||
(let ((newstate (funcall org-clock-in-switch-to-state (match-string 2))))
|
||||
(if newstate (org-todo newstate))))
|
||||
((and org-clock-in-switch-to-state
|
||||
(not (looking-at (concat outline-regexp "[ \t]*"
|
||||
org-clock-in-switch-to-state
|
||||
"\\>"))))
|
||||
(org-todo org-clock-in-switch-to-state)))
|
||||
(setq org-clock-heading-for-remember
|
||||
(and (looking-at org-complex-heading-regexp)
|
||||
(match-end 4)
|
||||
(org-trim (buffer-substring (match-end 1) (match-end 4)))))
|
||||
(setq org-clock-heading
|
||||
(cond ((and org-clock-heading-function
|
||||
(functionp org-clock-heading-function))
|
||||
(funcall org-clock-heading-function))
|
||||
((looking-at org-complex-heading-regexp)
|
||||
(match-string 4))
|
||||
(t "???")))
|
||||
(setq org-clock-heading (org-propertize org-clock-heading 'face nil))
|
||||
(org-clock-find-position)
|
||||
(if (and org-clock-in-resume
|
||||
(looking-at (concat "^[ \\t]* " org-clock-string
|
||||
" \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}"
|
||||
" +\\sw+ +[012][0-9]:[0-5][0-9]\\)\\]$")))
|
||||
(progn (message "Matched %s" (match-string 1))
|
||||
(setq ts (concat "[" (match-string 1) "]"))
|
||||
(goto-char (match-end 1))
|
||||
(setq org-clock-start-time
|
||||
(apply 'encode-time (org-parse-time-string (match-string 1)))))
|
||||
(progn
|
||||
(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))
|
||||
;; There is a selected task, move to the correct buffer
|
||||
;; and set the new target position.
|
||||
(set-buffer (org-base-buffer (marker-buffer selected-task)))
|
||||
(setq target-pos (marker-position selected-task))
|
||||
(move-marker selected-task nil))
|
||||
(save-excursion
|
||||
(save-restriction
|
||||
(widen)
|
||||
(goto-char target-pos)
|
||||
(org-back-to-heading t)
|
||||
(or interrupting (move-marker org-clock-interrupted-task nil))
|
||||
(org-clock-history-push)
|
||||
(cond ((functionp org-clock-in-switch-to-state)
|
||||
(looking-at org-complex-heading-regexp)
|
||||
(let ((newstate (funcall org-clock-in-switch-to-state
|
||||
(match-string 2))))
|
||||
(if newstate (org-todo newstate))))
|
||||
((and org-clock-in-switch-to-state
|
||||
(not (looking-at (concat outline-regexp "[ \t]*"
|
||||
org-clock-in-switch-to-state
|
||||
"\\>"))))
|
||||
(org-todo org-clock-in-switch-to-state)))
|
||||
(setq org-clock-heading-for-remember
|
||||
(and (looking-at org-complex-heading-regexp)
|
||||
(match-end 4)
|
||||
(org-trim (buffer-substring (match-end 1)
|
||||
(match-end 4)))))
|
||||
(setq org-clock-heading
|
||||
(cond ((and org-clock-heading-function
|
||||
(functionp org-clock-heading-function))
|
||||
(funcall org-clock-heading-function))
|
||||
((looking-at org-complex-heading-regexp)
|
||||
(match-string 4))
|
||||
(t "???")))
|
||||
(setq org-clock-heading (org-propertize org-clock-heading
|
||||
'face nil))
|
||||
(org-clock-find-position)
|
||||
(cond
|
||||
((and org-clock-in-resume
|
||||
(looking-at
|
||||
(concat "^[ \\t]* " org-clock-string
|
||||
" \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}"
|
||||
" +\\sw+ +[012][0-9]:[0-5][0-9]\\)\\][ \t]*$")))
|
||||
(message "Matched %s" (match-string 1))
|
||||
(setq ts (concat "[" (match-string 1) "]"))
|
||||
(goto-char (match-end 1))
|
||||
(setq org-clock-start-time
|
||||
(apply 'encode-time
|
||||
(org-parse-time-string (match-string 1)))))
|
||||
((eq org-clock-in-resume 'auto-restart)
|
||||
;; called from org-clock-load during startup,
|
||||
;; do not interrupt, but warn!
|
||||
(message "Cannot restart clock because task does not contain unfinished clock")
|
||||
(ding)
|
||||
(sit-for 2)
|
||||
(throw 'abort nil))
|
||||
(t
|
||||
(insert "\n") (backward-char 1)
|
||||
(org-indent-line-function)
|
||||
(insert org-clock-string " ")
|
||||
(setq org-clock-start-time (current-time))
|
||||
(setq ts (org-insert-time-stamp org-clock-start-time 'with-hm 'inactive))))
|
||||
(move-marker org-clock-marker (point) (buffer-base-buffer))
|
||||
(or global-mode-string (setq global-mode-string '("")))
|
||||
(or (memq 'org-mode-line-string global-mode-string)
|
||||
(setq global-mode-string
|
||||
(append global-mode-string '(org-mode-line-string))))
|
||||
(org-update-mode-line)
|
||||
(setq org-mode-line-timer
|
||||
(run-with-timer 60 60 'org-update-mode-line))
|
||||
(message "Clock started at %s" ts))))))
|
||||
(move-marker org-clock-marker (point) (buffer-base-buffer))
|
||||
(or global-mode-string (setq global-mode-string '("")))
|
||||
(or (memq 'org-mode-line-string global-mode-string)
|
||||
(setq global-mode-string
|
||||
(append global-mode-string '(org-mode-line-string))))
|
||||
(org-update-mode-line)
|
||||
(setq org-mode-line-timer
|
||||
(run-with-timer 60 60 'org-update-mode-line))
|
||||
(message "Clock started at %s" ts)))))))
|
||||
|
||||
(defun org-clock-find-position ()
|
||||
"Find the location where the next clock line should be inserted."
|
||||
@ -820,7 +844,7 @@ the currently selected interval size."
|
||||
(block (plist-get params :block))
|
||||
(link (plist-get params :link))
|
||||
ipos time p level hlc hdl content recalc formula pcol
|
||||
cc beg end pos tbl tbl1 range-text rm-file-column scope-is-list)
|
||||
cc beg end pos tbl tbl1 range-text rm-file-column scope-is-list st)
|
||||
(setq org-clock-file-total-minutes nil)
|
||||
(when step
|
||||
(unless (or block (and ts te))
|
||||
@ -902,7 +926,11 @@ the currently selected interval size."
|
||||
(unless scope-is-list
|
||||
(org-clock-sum ts te)
|
||||
(goto-char (point-min))
|
||||
(while (setq p (next-single-property-change (point) :org-clock-minutes))
|
||||
(setq st t)
|
||||
(while (or (and (bobp) (prog1 st (setq st nil))
|
||||
(get-text-property (point) :org-clock-minutes)
|
||||
(setq p (point-min)))
|
||||
(setq p (next-single-property-change (point) :org-clock-minutes)))
|
||||
(goto-char p)
|
||||
(when (setq time (get-text-property p :org-clock-minutes))
|
||||
(save-excursion
|
||||
@ -1062,71 +1090,92 @@ This function is made for clock tables."
|
||||
0))))
|
||||
|
||||
(defun org-clock-save ()
|
||||
"Persist various clock-related data to disk"
|
||||
(with-current-buffer (find-file (expand-file-name org-clock-persist-file))
|
||||
(progn (delete-region (point-min) (point-max))
|
||||
;;Store clock
|
||||
(insert (format ";; org-persist.el - %s at %s\n"
|
||||
system-name (format-time-string
|
||||
(cdr org-time-stamp-formats))))
|
||||
(if (and org-clock-persist (marker-buffer org-clock-marker)
|
||||
(or (not org-clock-persist-query-save)
|
||||
(y-or-n-p (concat "Save current clock ("
|
||||
(substring-no-properties org-clock-heading)
|
||||
")"))))
|
||||
(insert "(setq resume-clock '(\""
|
||||
(buffer-file-name (marker-buffer org-clock-marker))
|
||||
"\" . " (int-to-string (marker-position org-clock-marker))
|
||||
"))\n"))
|
||||
;;Store clocked task history. Tasks are stored reversed to make
|
||||
;;reading simpler
|
||||
(if org-clock-history
|
||||
(insert "(setq stored-clock-history '("
|
||||
(mapconcat
|
||||
(lambda (m)
|
||||
(when (marker-buffer m)
|
||||
(concat "(\"" (buffer-file-name (marker-buffer m))
|
||||
"\" . " (int-to-string (marker-position m))
|
||||
")")))
|
||||
(reverse org-clock-history) " ") "))\n"))
|
||||
(save-buffer)
|
||||
(kill-buffer (current-buffer)))))
|
||||
"Persist various clock-related data to disk.
|
||||
The details of what will be saved are regulated by the variable
|
||||
`org-clock-persist'."
|
||||
(when org-clock-persist
|
||||
(let (b)
|
||||
(with-current-buffer (find-file (expand-file-name org-clock-persist-file))
|
||||
(progn
|
||||
(delete-region (point-min) (point-max))
|
||||
;;Store clock
|
||||
(insert (format ";; org-persist.el - %s at %s\n"
|
||||
system-name (format-time-string
|
||||
(cdr org-time-stamp-formats))))
|
||||
(if (and (setq b (marker-buffer org-clock-marker))
|
||||
(setq b (or (buffer-base-buffer b) b))
|
||||
(buffer-live-p b)
|
||||
(buffer-file-name b)
|
||||
(or (not org-clock-persist-query-save)
|
||||
(y-or-n-p (concat "Save current clock ("
|
||||
(substring-no-properties org-clock-heading)
|
||||
") "))))
|
||||
(insert "(setq resume-clock '(\""
|
||||
(buffer-file-name (marker-buffer org-clock-marker))
|
||||
"\" . " (int-to-string (marker-position org-clock-marker))
|
||||
"))\n"))
|
||||
;; Store clocked task history. Tasks are stored reversed to make
|
||||
;; reading simpler
|
||||
(when (and org-clock-history (eq org-clock-persist t))
|
||||
(insert
|
||||
"(setq stored-clock-history '("
|
||||
(mapconcat
|
||||
(lambda (m)
|
||||
(when (and (setq b (marker-buffer m))
|
||||
(setq b (or (buffer-base-buffer b) b))
|
||||
(buffer-live-p b)
|
||||
(buffer-file-name b))
|
||||
(concat "(\"" (buffer-file-name b)
|
||||
"\" . " (int-to-string (marker-position m))
|
||||
")")))
|
||||
(reverse org-clock-history) " ") "))\n"))
|
||||
(save-buffer)
|
||||
(kill-buffer (current-buffer)))))))
|
||||
|
||||
(defvar org-clock-loaded nil)
|
||||
(defvar org-clock-loaded nil
|
||||
"Was the clock file loaded?")
|
||||
|
||||
(defun org-clock-load ()
|
||||
"Load various clock-related data from disk, optionally resuming
|
||||
a stored clock"
|
||||
(if (not org-clock-loaded)
|
||||
(let ((filename (expand-file-name org-clock-persist-file))
|
||||
(org-clock-in-resume t))
|
||||
(if (file-readable-p filename)
|
||||
(progn
|
||||
(message "%s" "Restoring clock data")
|
||||
(setq org-clock-loaded t)
|
||||
(load-file filename)
|
||||
;; load history
|
||||
(if (boundp 'stored-clock-history)
|
||||
(save-window-excursion
|
||||
(mapc (lambda (task)
|
||||
(org-clock-history-push (cdr task)
|
||||
(find-file (car task))))
|
||||
stored-clock-history)))
|
||||
;; resume clock
|
||||
(if (and (boundp 'resume-clock) org-clock-persist
|
||||
(or (not org-clock-persist-query-resume)
|
||||
(y-or-n-p
|
||||
(concat
|
||||
"Resume clock ("
|
||||
(with-current-buffer (find-file (car resume-clock))
|
||||
(progn (goto-char (cdr resume-clock))
|
||||
(looking-at org-complex-heading-regexp)
|
||||
(match-string 4))) ")"))))
|
||||
(with-current-buffer (find-file (car resume-clock))
|
||||
(progn (goto-char (cdr resume-clock))
|
||||
(org-clock-in)))))
|
||||
(when (and org-clock-persist (not org-clock-loaded))
|
||||
(let ((filename (expand-file-name org-clock-persist-file))
|
||||
(org-clock-in-resume 'auto-restart)
|
||||
resume-clock stored-clock-history)
|
||||
(if (not (file-readable-p filename))
|
||||
(message "Not restoring clock data; %s not found"
|
||||
org-clock-persist-file)))))
|
||||
org-clock-persist-file)
|
||||
(message "%s" "Restoring clock data")
|
||||
(setq org-clock-loaded t)
|
||||
(load-file filename)
|
||||
;; load history
|
||||
(when stored-clock-history
|
||||
(save-window-excursion
|
||||
(mapc (lambda (task)
|
||||
(if (file-exists-p (car task))
|
||||
(org-clock-history-push (cdr task)
|
||||
(find-file (car task)))))
|
||||
stored-clock-history)))
|
||||
;; resume clock
|
||||
(when (and resume-clock org-clock-persist
|
||||
(file-exists-p (car resume-clock))
|
||||
(or (not org-clock-persist-query-resume)
|
||||
(y-or-n-p
|
||||
(concat
|
||||
"Resume clock ("
|
||||
(with-current-buffer (find-file (car resume-clock))
|
||||
(save-excursion
|
||||
(goto-char (cdr resume-clock))
|
||||
(org-back-to-heading t)
|
||||
(and (looking-at org-complex-heading-regexp)
|
||||
(match-string 4))))
|
||||
") "))))
|
||||
(when (file-exists-p (car resume-clock))
|
||||
(with-current-buffer (find-file (car resume-clock))
|
||||
(goto-char (cdr resume-clock))
|
||||
(org-clock-in)
|
||||
(if (org-invisible-p)
|
||||
(org-show-context)))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-clock-persistence-insinuate ()
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -130,7 +130,7 @@ This is the compiled version of the format.")
|
||||
(push ov org-columns-overlays)
|
||||
ov))
|
||||
|
||||
(defun org-columns-display-here (&optional props)
|
||||
(defun org-columns-display-here (&optional props dateline)
|
||||
"Overlay the current line with column display."
|
||||
(interactive)
|
||||
(let* ((fmt org-columns-current-fmt-compiled)
|
||||
@ -145,6 +145,7 @@ This is the compiled version of the format.")
|
||||
'default))
|
||||
(color (list :foreground (face-attribute ref-face :foreground)))
|
||||
(face (list color 'org-column ref-face))
|
||||
(face1 (list color 'org-agenda-column-dateline ref-face))
|
||||
(pl (or (get-text-property (point-at-bol) 'prefix-length) 0))
|
||||
(cphr (get-text-property (point-at-bol) 'org-complex-heading-regexp))
|
||||
pom property ass width f string ov column val modval s1 s2 title)
|
||||
@ -189,7 +190,7 @@ This is the compiled version of the format.")
|
||||
;; Create the overlay
|
||||
(org-unmodified
|
||||
(setq ov (org-columns-new-overlay
|
||||
beg (setq beg (1+ beg)) string face))
|
||||
beg (setq beg (1+ beg)) string (if dateline face1 face)))
|
||||
(org-overlay-put ov 'keymap org-columns-map)
|
||||
(org-overlay-put ov 'org-columns-key property)
|
||||
(org-overlay-put ov 'org-columns-value (cdr ass))
|
||||
@ -425,7 +426,7 @@ Where possible, use the standard interface for changing this line."
|
||||
(t
|
||||
(setq allowed (org-property-get-allowed-values pom key 'table))
|
||||
(if allowed
|
||||
(setq nval (completing-read "Value: " allowed nil t))
|
||||
(setq nval (org-ido-completing-read "Value: " allowed nil t))
|
||||
(setq nval (read-string "Edit: " value)))
|
||||
(setq nval (org-trim nval))
|
||||
(when (not (equal nval value))
|
||||
@ -675,7 +676,7 @@ around it."
|
||||
(interactive)
|
||||
(let ((editp (and prop (assoc prop org-columns-current-fmt-compiled)))
|
||||
cell)
|
||||
(setq prop (completing-read
|
||||
(setq prop (org-ido-completing-read
|
||||
"Property: " (mapcar 'list (org-buffer-property-keys t nil t))
|
||||
nil nil prop))
|
||||
(setq title (read-string (concat "Column title [" prop "]: ") (or title prop)))
|
||||
@ -683,7 +684,7 @@ around it."
|
||||
(if (string-match "\\S-" width)
|
||||
(setq width (string-to-number width))
|
||||
(setq width nil))
|
||||
(setq fmt (completing-read "Summary [none]: "
|
||||
(setq fmt (org-ido-completing-read "Summary [none]: "
|
||||
'(("none") ("add_numbers") ("currency") ("add_times") ("checkbox") ("checkbox-n-of-m") ("checkbox-percent"))
|
||||
nil t))
|
||||
(if (string-match "\\S-" fmt)
|
||||
@ -1151,7 +1152,7 @@ and tailing newline characters."
|
||||
"Create a dynamic block capturing a column view table."
|
||||
(interactive)
|
||||
(let ((defaults '(:name "columnview" :hlines 1))
|
||||
(id (completing-read
|
||||
(id (org-ido-completing-read
|
||||
"Capture columns (local, global, entry with :ID: property) [local]: "
|
||||
(append '(("global") ("local"))
|
||||
(mapcar 'list (org-property-values "ID"))))))
|
||||
@ -1282,7 +1283,7 @@ This will add overlays to the date lines, to show the summary for each day."
|
||||
0 (length lsum) 'face 'bold lsum)
|
||||
(cons prop lsum))))
|
||||
fmt))
|
||||
(org-columns-display-here props)
|
||||
(org-columns-display-here props 'dateline)
|
||||
(org-set-local 'org-agenda-columns-active t)))
|
||||
(if (bobp) (throw 'exit t))
|
||||
(beginning-of-line 0))))))
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -277,9 +277,16 @@ that can be added."
|
||||
|
||||
(defun org-propertize (string &rest properties)
|
||||
(if (featurep 'xemacs)
|
||||
(add-text-properties 0 (length string) properties string)
|
||||
(progn
|
||||
(add-text-properties 0 (length string) properties string)
|
||||
string)
|
||||
(apply 'propertize string properties)))
|
||||
|
||||
(defun org-substring-no-properties (string &optional from to)
|
||||
(if (featurep 'xemacs)
|
||||
(org-no-properties (substring string from to))
|
||||
(substring-no-properties string from to)))
|
||||
|
||||
(provide 'org-compat)
|
||||
|
||||
;; arch-tag: a0a0579f-e68c-4bdf-9e55-93768b846bbe
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -1415,6 +1415,9 @@ translations. There is currently no way for users to extend this.")
|
||||
|
||||
;;; General functions for all backends
|
||||
|
||||
(defvar org-export-target-aliases nil
|
||||
"Alist of targets with invisible aliases.")
|
||||
|
||||
(defun org-export-preprocess-string (string &rest parameters)
|
||||
"Cleanup STRING so that that the true exported has a more consistent source.
|
||||
This function takes STRING, which should be a buffer-string of an org-file
|
||||
@ -1431,6 +1434,8 @@ on this string to produce the exported version."
|
||||
(outline-regexp "\\*+ ")
|
||||
target-alist rtn)
|
||||
|
||||
(setq org-export-target-aliases nil)
|
||||
|
||||
(with-current-buffer (get-buffer-create " org-mode-tmp")
|
||||
(erase-buffer)
|
||||
(insert string)
|
||||
@ -1464,7 +1469,7 @@ on this string to produce the exported version."
|
||||
;; Get the correct stuff before the first headline
|
||||
(when (plist-get parameters :skip-before-1st-heading)
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "^\\*+[ \t]" nil t)
|
||||
(when (re-search-forward "\\(^#.*\n\\)^\\*+[ \t]" nil t)
|
||||
(delete-region (point-min) (match-beginning 0))
|
||||
(goto-char (point-min))
|
||||
(insert "\n")))
|
||||
@ -1576,7 +1581,7 @@ The new targets are added to TARGET-ALIST, which is also returned."
|
||||
(defun org-export-handle-invisible-targets (target-alist)
|
||||
"Find targets in comments and move them out of comments.
|
||||
Mark them as invisible targets."
|
||||
(let (target tmp)
|
||||
(let (target tmp a)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^#.*?\\(<<<?\\([^>\r\n]+\\)>>>?\\).*" nil t)
|
||||
;; Check if the line before or after is a headline with a target
|
||||
@ -1587,8 +1592,13 @@ Mark them as invisible targets."
|
||||
(setq tmp (match-string 2))
|
||||
(replace-match "")
|
||||
(and (looking-at "\n") (delete-char 1))
|
||||
(push (cons (org-solidify-link-text tmp) target)
|
||||
target-alist))
|
||||
(push (cons (setq tmp (org-solidify-link-text tmp)) target)
|
||||
target-alist)
|
||||
(setq a (or (assoc target org-export-target-aliases)
|
||||
(progn
|
||||
(push (list target) org-export-target-aliases)
|
||||
(car org-export-target-aliases))))
|
||||
(push tmp (cdr a)))
|
||||
;; Make an invisible target
|
||||
(replace-match "\\1(INVISIBLE)"))))
|
||||
target-alist)
|
||||
@ -1622,8 +1632,8 @@ let the link point to the corresponding section."
|
||||
(or (get-text-property (point) 'target)
|
||||
(get-text-property
|
||||
(max (point-min)
|
||||
(1- (previous-single-property-change
|
||||
(point) 'target)))
|
||||
(1- (or (previous-single-property-change
|
||||
(point) 'target) 0)))
|
||||
'target))))))))
|
||||
(when target
|
||||
(set-match-data md)
|
||||
@ -1885,7 +1895,8 @@ When it is nil, all comments will be removed."
|
||||
(goto-char (1- (match-end 0)))
|
||||
(org-if-unprotected
|
||||
(let* ((xx (save-match-data
|
||||
(org-link-expand-abbrev (match-string 1))))
|
||||
(org-translate-link
|
||||
(org-link-expand-abbrev (match-string 1)))))
|
||||
(s (concat
|
||||
"[[" xx "]"
|
||||
(if (match-end 3)
|
||||
@ -2149,7 +2160,7 @@ backends, it converts the segment into an EXAMPLE segment."
|
||||
(cond
|
||||
(htmlp
|
||||
;; We are exporting to HTML
|
||||
(condition-case nil (require 'htmlize) (nil t))
|
||||
(require 'htmlize nil t)
|
||||
(if (not (fboundp 'htmlize-region-for-paste))
|
||||
(progn
|
||||
;; we do not have htmlize.el, or an old version of it
|
||||
@ -2423,6 +2434,9 @@ underlined headlines. The default is 3."
|
||||
"\n") "\n")))
|
||||
(t
|
||||
(setq line (org-fix-indentation line org-ascii-current-indentation))
|
||||
;; Remove forced line breaks
|
||||
(if (string-match "\\\\\\\\[ \t]*$" line)
|
||||
(setq line (replace-match "" t t line)))
|
||||
(if (and org-export-with-fixed-width
|
||||
(string-match "^\\([ \t]*\\)\\(:\\)" line))
|
||||
(setq line (replace-match "\\1" nil nil line)))
|
||||
@ -3183,9 +3197,10 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||
(cond
|
||||
((match-end 2)
|
||||
(setq line (replace-match
|
||||
(concat "@<a name=\""
|
||||
(org-solidify-link-text (match-string 1 line))
|
||||
"\">\\nbsp@</a>")
|
||||
(format
|
||||
"@<a name=\"%s\" id=\"%s\">@</a>"
|
||||
(org-solidify-link-text (match-string 1 line))
|
||||
(org-solidify-link-text (match-string 1 line)))
|
||||
t t line)))
|
||||
((and org-export-with-toc (equal (string-to-char line) ?*))
|
||||
;; FIXME: NOT DEPENDENT on TOC?????????????????????
|
||||
@ -3233,7 +3248,9 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||
(save-match-data
|
||||
(if (string-match "^file:" desc)
|
||||
(setq desc (substring desc (match-end 0)))))
|
||||
(setq desc (concat "<img src=\"" desc "\"/>")))
|
||||
(setq desc (org-add-props
|
||||
(concat "<img src=\"" desc "\"/>")
|
||||
'(org-protected t))))
|
||||
;; FIXME: do we need to unescape here somewhere?
|
||||
(cond
|
||||
((equal type "internal")
|
||||
@ -3250,7 +3267,10 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||
(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 "\"" attr "/>"))
|
||||
(setq rpl (concat "<img src=\"" type ":" path "\""
|
||||
(if (string-match "\\<alt=" attr)
|
||||
attr (concat attr " alt=\"" path "\""))
|
||||
"/>"))
|
||||
(setq link (concat type ":" path))
|
||||
(setq rpl (concat "<a href=\""
|
||||
(org-export-html-format-href link)
|
||||
@ -3308,7 +3328,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 "\"" attr "/>")
|
||||
(concat "<img src=\"" thefile "\""
|
||||
(if (string-match "alt=" attr)
|
||||
attr
|
||||
(concat attr " alt=\""
|
||||
thefile "\"")) "/>")
|
||||
(concat "<a href=\"" thefile "\"" attr ">"
|
||||
(org-export-html-format-desc desc)
|
||||
"</a>")))
|
||||
@ -3503,7 +3527,7 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||
(and org-export-with-toc (<= level umax))
|
||||
head-count)
|
||||
;; the </div> to close the last text-... div.
|
||||
(insert "</div>\n")
|
||||
(when (and (> umax 0) first-heading-pos) (insert "</div>\n"))
|
||||
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
@ -3604,7 +3628,7 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||
|
||||
(defun org-export-html-format-desc (s)
|
||||
"Make sure the S is valid as a description in a link."
|
||||
(if s
|
||||
(if (and s (not (get-text-property 1 'org-protected s)))
|
||||
(save-match-data
|
||||
(org-html-do-expand s))
|
||||
s))
|
||||
@ -4143,9 +4167,15 @@ stacked delimiters is N. Escaping delimiters is not possible."
|
||||
"Insert a new level in HTML export.
|
||||
When TITLE is nil, just close all open levels."
|
||||
(org-close-par-maybe)
|
||||
(let ((target (and title (org-get-text-property-any 0 'target title)))
|
||||
(l org-level-max)
|
||||
snumber)
|
||||
(let* ((target (and title (org-get-text-property-any 0 'target title)))
|
||||
(extra-targets
|
||||
(mapconcat (lambda (x)
|
||||
(format "<a name=\"%s\" id=\"%s\"></a>"
|
||||
x x))
|
||||
(cdr (assoc target org-export-target-aliases))
|
||||
""))
|
||||
(l org-level-max)
|
||||
snumber)
|
||||
(while (>= l level)
|
||||
(if (aref org-levels-open (1- l))
|
||||
(progn
|
||||
@ -4173,13 +4203,13 @@ When TITLE is nil, just close all open levels."
|
||||
(progn
|
||||
(org-close-li)
|
||||
(if target
|
||||
(insert (format "<li id=\"%s\">" target) title "<br/>\n")
|
||||
(insert (format "<li id=\"%s\">" target) extra-targets title "<br/>\n")
|
||||
(insert "<li>" title "<br/>\n")))
|
||||
(aset org-levels-open (1- level) t)
|
||||
(org-close-par-maybe)
|
||||
(if target
|
||||
(insert (format "<ul>\n<li id=\"%s\">" target)
|
||||
title "<br/>\n")
|
||||
extra-targets title "<br/>\n")
|
||||
(insert "<ul>\n<li>" title "<br/>\n"))))
|
||||
(aset org-levels-open (1- level) t)
|
||||
(setq snumber (org-section-number level))
|
||||
@ -4187,8 +4217,8 @@ When TITLE is nil, just close all open levels."
|
||||
(setq title (concat snumber " " title)))
|
||||
(setq level (+ level org-export-html-toplevel-hlevel -1))
|
||||
(unless (= head-count 1) (insert "\n</div>\n"))
|
||||
(insert (format "\n<div id=\"outline-container-%s\" class=\"outline-%d\">\n<h%d id=\"sec-%s\">%s</h%d>\n<div id=\"text-%s\">\n"
|
||||
snumber level level snumber title level snumber))
|
||||
(insert (format "\n<div id=\"outline-container-%s\" class=\"outline-%d\">\n<h%d id=\"sec-%s\">%s%s</h%d>\n<div id=\"text-%s\">\n"
|
||||
snumber level level snumber extra-targets title level snumber))
|
||||
(org-open-par)))))
|
||||
|
||||
(defun org-get-text-property-any (pos prop &optional object)
|
||||
@ -4523,10 +4553,10 @@ characters."
|
||||
(while (string-match "\\([,;]\\)" s start)
|
||||
(setq start (+ (match-beginning 0) 2)
|
||||
s (replace-match "\\\\\\1" nil nil s))))
|
||||
(setq s (org-trim s))
|
||||
(when is-body
|
||||
(while (string-match "[ \t]*\n[ \t]*" s)
|
||||
(setq s (replace-match "\\n" t t s))))
|
||||
(setq s (org-trim s))
|
||||
(if is-body
|
||||
(if maxlength
|
||||
(if (and (numberp maxlength)
|
||||
@ -4534,6 +4564,32 @@ characters."
|
||||
(setq s (substring s 0 maxlength)))))
|
||||
s))
|
||||
|
||||
(defun org-icalendar-cleanup-string-rfc2455 (s &optional is-body maxlength)
|
||||
"Take out stuff and quote what needs to be quoted.
|
||||
When IS-BODY is non-nil, assume that this is the body of an item, clean up
|
||||
whitespace, newlines, drawers, and timestamps, and cut it down to MAXLENGTH
|
||||
characters.
|
||||
This seems to be more like RFC 2455, but it causes problems, so it is
|
||||
not used right now."
|
||||
(if (not s)
|
||||
nil
|
||||
(if is-body
|
||||
(let ((re (concat "\\(" org-drawer-regexp "\\)[^\000]*?:END:.*\n?"))
|
||||
(re2 (concat "^[ \t]*" org-keyword-time-regexp ".*\n?")))
|
||||
(while (string-match re s) (setq s (replace-match "" t t s)))
|
||||
(while (string-match re2 s) (setq s (replace-match "" t t s)))
|
||||
(setq s (org-trim s))
|
||||
(while (string-match "[ \t]*\n[ \t]*" s)
|
||||
(setq s (replace-match "\\n" t t s)))
|
||||
(if maxlength
|
||||
(if (and (numberp maxlength)
|
||||
(> (length s) maxlength))
|
||||
(setq s (substring s 0 maxlength)))))
|
||||
(setq s (org-trim s)))
|
||||
(while (string-match "\"" s) (setq s (replace-match "''" t t s)))
|
||||
(when (string-match "[;,:]" s) (setq s (concat "\"" s "\"")))
|
||||
s))
|
||||
|
||||
(defun org-get-entry ()
|
||||
"Clean-up description string."
|
||||
(save-excursion
|
||||
|
@ -4,7 +4,7 @@
|
||||
;;
|
||||
;; Emacs Lisp Archive Entry
|
||||
;; Filename: org-export-latex.el
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;; Author: Bastien Guerry <bzg AT altern DOT org>
|
||||
;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
|
||||
;; Keywords: org, wp, tex
|
||||
@ -613,7 +613,9 @@ If NUM, export sections as numerical sections."
|
||||
(occur (number-to-string (cdr (assoc 'occur subcontent))))
|
||||
(content (cdr (assoc 'content subcontent)))
|
||||
(subcontent (cadr (assoc 'subcontent subcontent)))
|
||||
(label (org-get-text-property-any 0 'target heading)))
|
||||
(label (org-get-text-property-any 0 'target heading))
|
||||
(label-list (cons label (cdr (assoc label
|
||||
org-export-target-aliases)))))
|
||||
(cond
|
||||
;; Normal conversion
|
||||
((<= level org-export-latex-sectioning-depth)
|
||||
@ -624,7 +626,9 @@ If NUM, export sections as numerical sections."
|
||||
end (nth (if num 1 3) sec))
|
||||
(setq start (if num (car sec) (cdr sec))))
|
||||
(insert (format start heading) "\n")
|
||||
(when label (insert (format "\\label{%s}\n" label)))
|
||||
(when label
|
||||
(insert (mapconcat (lambda (l) (format "\\label{%s}" l))
|
||||
label-list "\n") "\n"))
|
||||
(insert (org-export-latex-content content))
|
||||
(cond ((stringp subcontent) (insert subcontent))
|
||||
((listp subcontent) (org-export-latex-sub subcontent)))
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -203,6 +203,12 @@ column view defines special faces for each outline level. See the file
|
||||
:height (face-attribute 'default :height)
|
||||
:family (face-attribute 'default :family)))
|
||||
|
||||
(defface org-agenda-column-dateline
|
||||
(org-compatible-face 'org-column
|
||||
'((t nil)))
|
||||
"Face used in agenda column view for datelines with summaries."
|
||||
:group 'org-faces)
|
||||
|
||||
(defface org-warning
|
||||
(org-compatible-face 'font-lock-warning-face
|
||||
'((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
|
||||
|
@ -3,9 +3,10 @@
|
||||
;; Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Tassilo Horn <tassilo at member dot fsf dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -37,7 +38,11 @@
|
||||
|
||||
;; Customization variables
|
||||
|
||||
(defcustom org-usenet-links-prefer-google nil
|
||||
(when (fboundp 'defvaralias)
|
||||
(defvaralias 'org-usenet-links-prefer-google 'org-gnus-prefer-web-links
|
||||
"Deprecated name for `org-gnus-prefer-web-links'."))
|
||||
|
||||
(defcustom org-gnus-prefer-web-links nil
|
||||
"Non-nil means, `org-store-link' will create web links to Google groups.
|
||||
When nil, Gnus will be used for such links.
|
||||
Using a prefix arg to the command \\[org-store-link] (`org-store-link')
|
||||
@ -57,50 +62,83 @@ negates this setting for the duration of the command."
|
||||
(add-hook 'org-store-link-functions 'org-gnus-store-link)
|
||||
|
||||
;; Implementation
|
||||
|
||||
(defun org-gnus-group-link (group)
|
||||
"Create a link to the Gnus group GROUP.
|
||||
If GROUP is a newsgroup and `org-gnus-prefer-web-links' is
|
||||
non-nil, create a link to groups.google.com or gmane.org.
|
||||
Otherwise create a link to the group inside Gnus.
|
||||
|
||||
If `org-store-link' was called with a prefix arg the meaning of
|
||||
`org-gnus-prefer-web-links' is reversed."
|
||||
(let ((unprefixed-group (replace-regexp-in-string "^[^:]+:" "" group)))
|
||||
(if (and (string-match "^nntp" group) ;; Only for nntp groups
|
||||
(org-xor current-prefix-arg
|
||||
org-gnus-prefer-web-links))
|
||||
(concat (if (string-match "gmane" unprefixed-group)
|
||||
"http://news.gmane.org/"
|
||||
"http://groups.google.com/group/")
|
||||
unprefixed-group)
|
||||
(concat "gnus:" group))))
|
||||
|
||||
(defun org-gnus-article-link (group newsgroups message-id x-no-archive)
|
||||
"Create a link to a Gnus article.
|
||||
The article is specified by its MESSAGE-ID. Additional
|
||||
parameters are the Gnus GROUP, the NEWSGROUPS the article was
|
||||
posted to and the X-NO-ARCHIVE header value of that article.
|
||||
|
||||
If GROUP is a newsgroup and `org-gnus-prefer-web-links' is
|
||||
non-nil, create a link to groups.google.com or gmane.org.
|
||||
Otherwise create a link to the article inside Gnus.
|
||||
|
||||
If `org-store-link' was called with a prefix arg the meaning of
|
||||
`org-gnus-prefer-web-links' is reversed."
|
||||
(if (and (org-xor current-prefix-arg org-gnus-prefer-web-links)
|
||||
newsgroups ;; Make web links only for nntp groups
|
||||
(not x-no-archive)) ;; and if X-No-Archive isn't set.
|
||||
(format (if (string-match "gmane\\." newsgroups)
|
||||
"http://mid.gmane.org/%s"
|
||||
"http://groups.google.com/groups/search?as_umsgid=%s")
|
||||
(org-fixup-message-id-for-http
|
||||
(replace-regexp-in-string "[<>]" "" message-id)))
|
||||
(org-make-link "gnus:" group "#" message-id)))
|
||||
|
||||
(defun org-gnus-store-link ()
|
||||
"Store a link to a Gnus folder or message."
|
||||
(cond
|
||||
((eq major-mode 'gnus-group-mode)
|
||||
(let ((group (cond ((fboundp 'gnus-group-group-name) ; depending on Gnus
|
||||
(gnus-group-group-name)) ; version
|
||||
((fboundp 'gnus-group-name)
|
||||
(gnus-group-name))
|
||||
(t "???")))
|
||||
desc link)
|
||||
(let* ((group (cond ((fboundp 'gnus-group-group-name) ; depending on Gnus
|
||||
(gnus-group-group-name)) ; version
|
||||
((fboundp 'gnus-group-name)
|
||||
(gnus-group-name))
|
||||
(t "???")))
|
||||
desc link)
|
||||
(unless group (error "Not on a group"))
|
||||
(org-store-link-props :type "gnus" :group group)
|
||||
(setq desc (concat
|
||||
(if (org-xor current-prefix-arg
|
||||
org-usenet-links-prefer-google)
|
||||
"http://groups.google.com/groups?group="
|
||||
"gnus:")
|
||||
group)
|
||||
(setq desc (org-gnus-group-link group)
|
||||
link (org-make-link desc))
|
||||
(org-add-link-props :link link :description desc)
|
||||
link))
|
||||
|
||||
((memq major-mode '(gnus-summary-mode gnus-article-mode))
|
||||
(and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary))
|
||||
(and (eq major-mode 'gnus-summary-mode) (gnus-summary-show-article))
|
||||
(let* ((group gnus-newsgroup-name)
|
||||
(article (gnus-summary-article-number))
|
||||
(header (gnus-summary-article-header article))
|
||||
(from (mail-header-from header))
|
||||
(message-id (mail-header-id header))
|
||||
(date (mail-header-date header))
|
||||
(extra (mail-header-extra header))
|
||||
(to (cdr (assoc 'To extra)))
|
||||
(header (with-current-buffer gnus-article-buffer
|
||||
(gnus-summary-toggle-header 1)
|
||||
(goto-char (point-min))
|
||||
(mail-header-extract-no-properties)))
|
||||
(from (mail-header 'from header))
|
||||
(message-id (mail-header 'message-id header))
|
||||
(date (mail-header 'date header))
|
||||
(to (mail-header 'to header))
|
||||
(newsgroups (mail-header 'newsgroups header))
|
||||
(x-no-archive (mail-header 'x-no-archive header))
|
||||
(subject (gnus-summary-subject-string))
|
||||
desc link)
|
||||
(org-store-link-props :type "gnus" :from from :subject subject
|
||||
:message-id message-id :group group :to to)
|
||||
(setq desc (org-email-link-description))
|
||||
(if (org-xor current-prefix-arg org-usenet-links-prefer-google)
|
||||
(setq link
|
||||
(format "http://groups.google.com/groups?as_umsgid=%s"
|
||||
(org-fixup-message-id-for-http message-id)))
|
||||
(setq link (org-make-link "gnus:" group "#"
|
||||
(or message-id
|
||||
(number-to-string article)))))
|
||||
(setq desc (org-email-link-description)
|
||||
link (org-gnus-article-link group newsgroups message-id x-no-archive))
|
||||
(org-add-link-props :link link :description desc)
|
||||
link))))
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -376,15 +376,16 @@ Store the relation between files and corresponding ID's."
|
||||
|
||||
(defun org-id-add-location (id file)
|
||||
"Add the ID with location FILE to the database of ID loations."
|
||||
(unless org-id-locations (org-id-locations-load))
|
||||
(catch 'exit
|
||||
(let ((locs org-id-locations) list)
|
||||
(while (setq list (pop locs))
|
||||
(when (equal (file-truename file) (file-truename (car list)))
|
||||
(setcdr list (cons id (cdr list)))
|
||||
(throw 'exit t))))
|
||||
(push (list file id) org-id-locations))
|
||||
(org-id-locations-save))
|
||||
(when (and id file) ; don't error when called from a buffer with no file
|
||||
(unless org-id-locations (org-id-locations-load))
|
||||
(catch 'exit
|
||||
(let ((locs org-id-locations) list)
|
||||
(while (setq list (pop locs))
|
||||
(when (equal (file-truename file) (file-truename (car list)))
|
||||
(setcdr list (cons id (cdr list)))
|
||||
(throw 'exit t))))
|
||||
(push (list file id) org-id-locations))
|
||||
(org-id-locations-save)))
|
||||
|
||||
;; Finding entries with specified id
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -27,7 +27,7 @@
|
||||
;; Org-mode loads this module by default - if this is not what you want,
|
||||
;; configure the variable `org-modules'.
|
||||
;;
|
||||
;; Please customize the variable `org-default-extensions' to select
|
||||
;; Please customize the variable `org-modules' to select
|
||||
;; extensions you would like to use, and to deselect those which you don't
|
||||
;; want.
|
||||
;;
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
|
@ -6,7 +6,7 @@
|
||||
;; Bastien Guerry <bzg AT altern DOT org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -72,6 +72,18 @@ the safe choice."
|
||||
(const :tag "paren like in \"2)\"" ?\))
|
||||
(const :tab "both" t)))
|
||||
|
||||
(defcustom org-list-two-spaces-after-bullet-regexp nil
|
||||
"A regular expression matching bullets that should have 2 spaces after them.
|
||||
When nil, no bullet will have two spaces after them.
|
||||
When a string, it will be used as a regular expression. When the bullet
|
||||
type of a list is changed, the new bullet type will be matched against this
|
||||
regexp. If it matches, there will be two spaces instead of one after
|
||||
the bullet in each item of he list."
|
||||
:group 'org-plain-list
|
||||
:type '(choice
|
||||
(const :tag "never" nil)
|
||||
(regexp)))
|
||||
|
||||
(defcustom org-empty-line-terminates-plain-lists nil
|
||||
"Non-nil means, an empty line ends all plain list levels.
|
||||
When nil, empty lines are part of the preceeding item."
|
||||
@ -259,7 +271,7 @@ the whole buffer."
|
||||
(save-excursion
|
||||
(let* ((buffer-invisibility-spec (org-inhibit-invisibility)) ; Emacs 21
|
||||
(beg (condition-case nil
|
||||
(progn (outline-back-to-heading) (point))
|
||||
(progn (org-back-to-heading) (point))
|
||||
(error (point-min))))
|
||||
(end (move-marker (make-marker)
|
||||
(progn (outline-next-heading) (point))))
|
||||
@ -589,7 +601,7 @@ If WHICH is a string, use that as the new bullet. If WHICH is an integer,
|
||||
(beginning-of-line 1)
|
||||
(let ((current (match-string 0))
|
||||
(prevp (eq which 'previous))
|
||||
new)
|
||||
new old)
|
||||
(setq new (cond
|
||||
((and (numberp which)
|
||||
(nth (1- which) '("-" "+" "*" "1." "1)"))))
|
||||
@ -597,10 +609,14 @@ If WHICH is a string, use that as the new bullet. If WHICH is an integer,
|
||||
((string-match "\\+" current)
|
||||
(if prevp "-" (if (looking-at "\\S-") "1." "*")))
|
||||
((string-match "\\*" current) (if prevp "+" "1."))
|
||||
((string-match "\\." current) (if prevp "*" "1)"))
|
||||
((string-match "\\." current)
|
||||
(if prevp (if (looking-at "\\S-") "+" "*") "1)"))
|
||||
((string-match ")" current) (if prevp "1." "-"))
|
||||
(t (error "This should not happen"))))
|
||||
(and (looking-at "\\([ \t]*\\)\\S-+") (replace-match (concat "\\1" new)))
|
||||
(and (looking-at "\\([ \t]*\\)\\(\\S-+\\)")
|
||||
(setq old (match-string 2))
|
||||
(replace-match (concat "\\1" new)))
|
||||
(org-shift-item-indentation (- (length new) (length old)))
|
||||
(org-fix-bullet-type)
|
||||
(org-maybe-renumber-ordered-list))))
|
||||
|
||||
@ -629,7 +645,7 @@ 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 bobp)
|
||||
fmt bobp old new)
|
||||
;; find where this list begins
|
||||
(org-beginning-of-item-list)
|
||||
(setq bobp (bobp))
|
||||
@ -647,26 +663,32 @@ with something like \"1.\" or \"2)\"."
|
||||
(if (> ind1 ind) (throw 'next t))
|
||||
(if (< ind1 ind) (throw 'exit t))
|
||||
(if (not (org-at-item-p)) (throw 'exit nil))
|
||||
(setq old (match-string 2))
|
||||
(delete-region (match-beginning 2) (match-end 2))
|
||||
(goto-char (match-beginning 2))
|
||||
(insert (format fmt (setq n (1+ n)))))))
|
||||
(insert (setq new (format fmt (setq n (1+ n)))))
|
||||
(org-shift-item-indentation (- (length new) (length old))))))
|
||||
(goto-line line)
|
||||
(org-move-to-column col)))
|
||||
|
||||
(defun org-fix-bullet-type ()
|
||||
"Make sure all items in this list have the same bullet as the firsst item."
|
||||
"Make sure all items in this list have the same bullet as the first item.
|
||||
Also, fix the indentation."
|
||||
(interactive)
|
||||
(unless (org-at-item-p) (error "This is not a list"))
|
||||
(let ((line (org-current-line))
|
||||
(col (current-column))
|
||||
(ind (current-indentation))
|
||||
ind1 bullet)
|
||||
ind1 bullet oldbullet)
|
||||
;; find where this list begins
|
||||
(org-beginning-of-item-list)
|
||||
(beginning-of-line 1)
|
||||
;; find out what the bullet type is
|
||||
(looking-at "[ \t]*\\(\\S-+\\)")
|
||||
(setq bullet (match-string 1))
|
||||
(setq bullet (concat (match-string 1) " "))
|
||||
(if (and org-list-two-spaces-after-bullet-regexp
|
||||
(string-match org-list-two-spaces-after-bullet-regexp bullet))
|
||||
(setq bullet (concat bullet " ")))
|
||||
;; walk forward and replace these numbers
|
||||
(beginning-of-line 0)
|
||||
(catch 'exit
|
||||
@ -680,13 +702,31 @@ with something like \"1.\" or \"2)\"."
|
||||
(if (< ind1 ind) (throw 'exit t))
|
||||
(if (not (org-at-item-p)) (throw 'exit nil))
|
||||
(skip-chars-forward " \t")
|
||||
(looking-at "\\S-+")
|
||||
(replace-match bullet))))
|
||||
(looking-at "\\S-+ *")
|
||||
(setq oldbullet (match-string 0))
|
||||
(replace-match bullet)
|
||||
(org-shift-item-indentation (- (length bullet) (length oldbullet))))))
|
||||
(goto-line line)
|
||||
(org-move-to-column col)
|
||||
(if (string-match "[0-9]" bullet)
|
||||
(org-renumber-ordered-list 1))))
|
||||
|
||||
(defun org-shift-item-indentation (delta)
|
||||
"Shift the indentation in current item by DELTA."
|
||||
(save-excursion
|
||||
(let ((beg (point-at-bol))
|
||||
(end (progn (org-end-of-item) (point)))
|
||||
i)
|
||||
(goto-char end)
|
||||
(beginning-of-line 0)
|
||||
(while (> (point) beg)
|
||||
(when (looking-at "[ \t]*\\S-")
|
||||
;; this is not an empty line
|
||||
(setq i (org-get-indentation))
|
||||
(if (and (> i 0) (> (setq i (+ i delta)) 0))
|
||||
(indent-line-to i)))
|
||||
(beginning-of-line 0)))))
|
||||
|
||||
(defun org-beginning-of-item-list ()
|
||||
"Go to the beginning of the current item list.
|
||||
I.e. to the first item in this list."
|
||||
|
@ -3,7 +3,7 @@
|
||||
;; Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: John Wiegley <johnw@gnu.org>
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
@ -34,21 +34,23 @@
|
||||
(require 'org)
|
||||
|
||||
(defgroup org-mew nil
|
||||
"Options concerning the Mew link."
|
||||
:tag "Org Startup"
|
||||
:group 'org-link)
|
||||
"Options concerning the Mew link."
|
||||
:tag "Org Startup"
|
||||
:group 'org-link)
|
||||
|
||||
(defcustom org-mew-link-to-refile-destination t
|
||||
"Create a link to the refile destination if the message is marked as refile."
|
||||
:group 'org-mew
|
||||
:type 'boolean)
|
||||
"Create a link to the refile destination if the message is marked as refile."
|
||||
:group 'org-mew
|
||||
:type 'boolean)
|
||||
|
||||
;; Declare external functions and variables
|
||||
(declare-function mew-cache-hit "ext:mew-cache" (fld msg &optional must-hit))
|
||||
(declare-function mew-case-folder "ext:mew-func" (case folder))
|
||||
(declare-function mew-header-get-value "ext:mew-header"
|
||||
(field &optional as-list))
|
||||
(declare-function mew-init "ext:mew" ())
|
||||
(declare-function mew-refile-get "ext:mew-refile" (msg))
|
||||
(declare-function mew-sinfo-get-case "ext:mew-summary" ())
|
||||
(declare-function mew-summary-display "ext:mew-summary2" (&optional redisplay))
|
||||
(declare-function mew-summary-folder-name "ext:mew-syntax" (&optional ext))
|
||||
(declare-function mew-summary-get-mark "ext:mew-mark" ())
|
||||
@ -69,17 +71,18 @@
|
||||
|
||||
;; Implementation
|
||||
(defun org-mew-store-link ()
|
||||
"Store a link to a Mew folder or message."
|
||||
(when (memq major-mode '(mew-summary-mode mew-virtual-mode))
|
||||
(let* ((msgnum (mew-summary-message-number2))
|
||||
"Store a link to a Mew folder or message."
|
||||
(when (memq major-mode '(mew-summary-mode mew-virtual-mode))
|
||||
(let* ((msgnum (mew-summary-message-number2))
|
||||
(mark-info (mew-summary-get-mark))
|
||||
(folder-name
|
||||
(if (and org-mew-link-to-refile-destination
|
||||
(eq mark-info ?o)) ; marked as refile
|
||||
(nth 1 (mew-refile-get msgnum))
|
||||
(mew-case-folder (mew-sinfo-get-case)
|
||||
(nth 1 (mew-refile-get msgnum)))
|
||||
(mew-summary-folder-name)))
|
||||
message-id from to subject desc link)
|
||||
(save-window-excursion
|
||||
(save-window-excursion
|
||||
(if (fboundp 'mew-summary-set-message-buffer)
|
||||
(mew-summary-set-message-buffer folder-name msgnum)
|
||||
(set-buffer (mew-cache-hit folder-name msgnum t)))
|
||||
@ -87,35 +90,35 @@
|
||||
(setq from (mew-header-get-value "From:"))
|
||||
(setq to (mew-header-get-value "To:"))
|
||||
(setq subject (mew-header-get-value "Subject:")))
|
||||
(org-store-link-props :type "mew" :from from :to to
|
||||
(org-store-link-props :type "mew" :from from :to to
|
||||
:subject subject :message-id message-id)
|
||||
(setq message-id (org-remove-angle-brackets message-id))
|
||||
(setq desc (org-email-link-description))
|
||||
(setq link (org-make-link "mew:" folder-name
|
||||
(setq message-id (org-remove-angle-brackets message-id))
|
||||
(setq desc (org-email-link-description))
|
||||
(setq link (org-make-link "mew:" folder-name
|
||||
"#" message-id))
|
||||
(org-add-link-props :link link :description desc)
|
||||
link)))
|
||||
(org-add-link-props :link link :description desc)
|
||||
link)))
|
||||
|
||||
(defun org-mew-open (path)
|
||||
"Follow the Mew message link specified by PATH."
|
||||
(let (folder msgnum)
|
||||
(cond ((string-match "\\`\\(+.*\\)+\\+\\([0-9]+\\)\\'" path) ; for Bastien's
|
||||
"Follow the Mew message link specified by PATH."
|
||||
(let (folder msgnum)
|
||||
(cond ((string-match "\\`\\(+.*\\)+\\+\\([0-9]+\\)\\'" path) ; for Bastien's
|
||||
(setq folder (match-string 1 path))
|
||||
(setq msgnum (match-string 2 path)))
|
||||
((string-match "\\`\\(\\(%#\\)?[^#]+\\)\\(#\\(.*\\)\\)?" path)
|
||||
(setq folder (match-string 1 path))
|
||||
(setq msgnum (match-string 4 path)))
|
||||
(t (error "Error in Mew link")))
|
||||
(require 'mew)
|
||||
(mew-window-push)
|
||||
(unless mew-init-p (mew-init))
|
||||
(mew-summary-visit-folder folder)
|
||||
(when msgnum
|
||||
(if (not (string-match "\\`[0-9]+\\'" msgnum))
|
||||
(require 'mew)
|
||||
(mew-window-push)
|
||||
(unless mew-init-p (mew-init))
|
||||
(mew-summary-visit-folder folder)
|
||||
(when msgnum
|
||||
(if (not (string-match "\\`[0-9]+\\'" msgnum))
|
||||
(let* ((pattern (concat "message-id=" msgnum))
|
||||
(msgs (mew-summary-pick-with-mewl pattern folder nil)))
|
||||
(setq msgnum (car msgs))))
|
||||
(if (mew-summary-search-msg msgnum)
|
||||
(if (mew-summary-search-msg msgnum)
|
||||
(if mew-summary-goto-line-then-display
|
||||
(mew-summary-display))
|
||||
(error "Message not found")))))
|
||||
|
@ -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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -144,7 +144,7 @@
|
||||
(defvar org-agenda-undo-list)
|
||||
(defvar org-agenda-custom-commands)
|
||||
(declare-function org-agenda-change-all-lines "org-agenda"
|
||||
(newhead hdmarker &optional fixface just-this))
|
||||
(newhead hdmarker &optional fixface))
|
||||
(declare-function org-verify-change-for-undo "org-agenda" (l1 l2))
|
||||
|
||||
(defvar org-mouse-plain-list-regexp "\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) "
|
||||
@ -584,7 +584,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
|
||||
(beginning-of-line)
|
||||
(looking-at "[ \t]*")
|
||||
(open-line 1)
|
||||
(indent-to (- (match-end 0) (match-beginning 0)))
|
||||
(org-indent-to-column (- (match-end 0) (match-beginning 0)))
|
||||
(insert "+ "))
|
||||
|
||||
(:middle ; insert after
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Eric Schulte <schulte dot eric at gmail dot com>
|
||||
;; Keywords: tables, plotting
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -626,7 +626,7 @@ Default for INDEX-FILENAME is 'index.org'."
|
||||
(if index-buffer
|
||||
(kill-buffer index-buffer))
|
||||
(with-temp-buffer
|
||||
(insert (concat "* " index-title "\n\n"))
|
||||
(insert (concat "#+TITLE: " index-title "\n\n"))
|
||||
(while (setq file (pop files))
|
||||
(let ((fn (file-name-nondirectory file))
|
||||
(link (file-relative-name file dir))
|
||||
@ -703,7 +703,7 @@ Default for INDEX-FILENAME is 'index.org'."
|
||||
(if force nil org-publish-use-timestamps-flag)))
|
||||
(org-publish-projects
|
||||
(list (or project
|
||||
(assoc (completing-read
|
||||
(assoc (org-ido-completing-read
|
||||
"Publish project: "
|
||||
org-publish-project-alist nil t)
|
||||
org-publish-project-alist)))))))
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -54,7 +54,7 @@
|
||||
(defcustom org-remember-store-without-prompt t
|
||||
"Non-nil means, `C-c C-c' stores remember note without further prompts.
|
||||
It then uses the file and headline specified by the template or (if the
|
||||
themplate does not specify them) by the variables `org-default-notes-file'
|
||||
template does not specify them) by the variables `org-default-notes-file'
|
||||
and `org-remember-default-headline'. To force prompting anyway, use
|
||||
`C-u C-c C-c' to file the note.
|
||||
|
||||
@ -195,6 +195,26 @@ calendar | %:type %:date"
|
||||
(symbol :tag "Major mode"))
|
||||
(function :tag "Perform a check against function")))))
|
||||
|
||||
(defcustom org-remember-before-finalize-hook nil
|
||||
"Hook that is run right before a remember process is finalized.
|
||||
The remember buffer is still current when this hook runs."
|
||||
:group 'org-remember
|
||||
:type 'hook)
|
||||
|
||||
(defvar org-remember-mode-map (make-sparse-keymap)
|
||||
"Keymap for org-remember-mode, a minor mode.
|
||||
Use this map to set additional keybindings for when Org-mode is used
|
||||
for a Remember buffer.")
|
||||
(defvar org-remember-mode-hook nil
|
||||
"Hook for the minor `org-remember-mode'.")
|
||||
|
||||
(define-minor-mode org-remember-mode
|
||||
"Minor mode for special key bindings in a remember buffer."
|
||||
nil " Rem" org-remember-mode-map
|
||||
(run-hooks 'org-remember-mode-hook))
|
||||
(define-key org-remember-mode-map "\C-c\C-c" 'org-remember-finalize)
|
||||
(define-key org-remember-mode-map "\C-c\C-k" 'org-remember-kill)
|
||||
|
||||
(defcustom org-remember-clock-out-on-exit 'query
|
||||
"Non-nil means, stop the clock when exiting a clocking remember buffer.
|
||||
This only applies if the clock is running in the remember buffer. If the
|
||||
@ -360,7 +380,7 @@ to be run from that hook to function properly."
|
||||
v-a))
|
||||
(v-n user-full-name)
|
||||
(v-k (if (marker-buffer org-clock-marker)
|
||||
(substring-no-properties org-clock-heading)))
|
||||
(org-substring-no-properties org-clock-heading)))
|
||||
(v-K (if (marker-buffer org-clock-marker)
|
||||
(org-make-link-string
|
||||
(buffer-file-name (marker-buffer org-clock-marker))
|
||||
@ -446,8 +466,7 @@ to be run from that hook to function properly."
|
||||
(replace-match x t t))))
|
||||
|
||||
;; Turn on org-mode in the remember buffer, set local variables
|
||||
(let ((org-inhibit-startup t)) (org-mode))
|
||||
(org-set-local 'org-finish-function 'org-remember-finalize)
|
||||
(let ((org-inhibit-startup t)) (org-mode) (org-remember-mode 1))
|
||||
(if (and file (string-match "\\S-" file) (not (file-directory-p file)))
|
||||
(org-set-local 'org-default-notes-file file))
|
||||
(if headline
|
||||
@ -474,7 +493,7 @@ to be run from that hook to function properly."
|
||||
(org-global-tags-completion-table
|
||||
(if (equal char "G") (org-agenda-files) (and file (list file)))))
|
||||
(org-add-colon-after-tag-completion t)
|
||||
(ins (completing-read
|
||||
(ins (org-ido-completing-read
|
||||
(if prompt (concat prompt ": ") "Tags: ")
|
||||
'org-tags-completion-function nil nil nil
|
||||
'org-tags-history)))
|
||||
@ -501,17 +520,23 @@ to be run from that hook to function properly."
|
||||
(car clipboards))))))
|
||||
((equal char "p")
|
||||
(let*
|
||||
((prop (substring-no-properties prompt))
|
||||
(allowed (with-current-buffer
|
||||
(get-buffer (file-name-nondirectory file))
|
||||
(org-property-get-allowed-values nil prop 'table)))
|
||||
((prop (org-substring-no-properties prompt))
|
||||
(pall (concat prop "_ALL"))
|
||||
(allowed
|
||||
(with-current-buffer
|
||||
(get-buffer (file-name-nondirectory file))
|
||||
(or (cdr (assoc pall org-file-properties))
|
||||
(cdr (assoc pall org-global-properties))
|
||||
(cdr (assoc pall org-global-properties-fixed)))))
|
||||
(existing (with-current-buffer
|
||||
(get-buffer (file-name-nondirectory file))
|
||||
(mapcar 'list (org-property-values prop))))
|
||||
(propprompt (concat "Value for " prop ": "))
|
||||
(val (if allowed
|
||||
(org-completing-read propprompt allowed nil
|
||||
'req-match)
|
||||
(org-completing-read
|
||||
propprompt
|
||||
(mapcar 'list (org-split-string allowed "[ \t]+"))
|
||||
nil 'req-match)
|
||||
(org-completing-read propprompt existing nil nil
|
||||
"" nil ""))))
|
||||
(org-set-property prop val)))
|
||||
@ -524,17 +549,17 @@ to be run from that hook to function properly."
|
||||
(member char '("u" "U"))
|
||||
nil nil (list org-end-time-was-given)))
|
||||
(t
|
||||
(insert (org-completing-read
|
||||
(concat (if prompt prompt "Enter string")
|
||||
(if default (concat " [" default "]"))
|
||||
": ")
|
||||
completions nil nil nil histvar default)))))
|
||||
(let (org-completion-use-ido)
|
||||
(insert (org-completing-read
|
||||
(concat (if prompt prompt "Enter string")
|
||||
(if default (concat " [" default "]"))
|
||||
": ")
|
||||
completions nil nil nil histvar default))))))
|
||||
(goto-char (point-min))
|
||||
(if (re-search-forward "%\\?" nil t)
|
||||
(replace-match "")
|
||||
(and (re-search-forward "^[^#\n]" nil t) (backward-char 1))))
|
||||
(let ((org-inhibit-startup t)) (org-mode))
|
||||
(org-set-local 'org-finish-function 'org-remember-finalize))
|
||||
(let ((org-inhibit-startup t)) (org-mode) (org-remember-mode 1)))
|
||||
(when (save-excursion
|
||||
(goto-char (point-min))
|
||||
(re-search-forward "%&" nil t))
|
||||
@ -551,8 +576,7 @@ to be run from that hook to function properly."
|
||||
This should be run in `post-command-hook' and will remove itself
|
||||
from that hook."
|
||||
(remove-hook 'post-command-hook 'org-remember-finish-immediately)
|
||||
(when org-finish-function
|
||||
(funcall org-finish-function)))
|
||||
(org-remember-finalize))
|
||||
|
||||
(defun org-remember-visit-immediately ()
|
||||
"File remember note immediately.
|
||||
@ -572,6 +596,10 @@ from that hook."
|
||||
(defvar org-clock-marker) ; Defined in org.el
|
||||
(defun org-remember-finalize ()
|
||||
"Finalize the remember process."
|
||||
(interactive)
|
||||
(unless org-remember-mode
|
||||
(error "This does not seem to be a remember buffer for Org-mode"))
|
||||
(run-hooks 'org-remember-before-finalize-hook)
|
||||
(unless (fboundp 'remember-finalize)
|
||||
(defalias 'remember-finalize 'remember-buffer))
|
||||
(when (and org-clock-marker
|
||||
@ -587,6 +615,12 @@ from that hook."
|
||||
(setq buffer-file-name nil))
|
||||
(remember-finalize))
|
||||
|
||||
(defun org-remember-kill ()
|
||||
"Abort the current remember process."
|
||||
(interactive)
|
||||
(let ((org-note-abort t))
|
||||
(org-remember-finalize)))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-remember (&optional goto org-force-remember-template-char)
|
||||
"Call `remember'. If this is already a remember buffer, re-apply template.
|
||||
@ -610,7 +644,7 @@ associated with a template in `org-remember-templates'."
|
||||
;; `org-select-remember-template'
|
||||
(setq org-select-template-temp-major-mode major-mode)
|
||||
(setq org-select-template-original-buffer (current-buffer))
|
||||
(if (eq org-finish-function 'org-remember-finalize)
|
||||
(if org-remember-mode
|
||||
(progn
|
||||
(when (< (length org-remember-templates) 2)
|
||||
(error "No other template available"))
|
||||
@ -769,6 +803,10 @@ See also the variable `org-reverse-note-order'."
|
||||
(not fastp))
|
||||
(org-refile nil (or visiting (find-file-noselect file)))
|
||||
(and visitp (run-with-idle-timer 0.01 nil 'org-remember-visit-immediately))
|
||||
(save-excursion
|
||||
(bookmark-jump "org-refile-last-stored")
|
||||
(bookmark-set "org-remember-last-stored")
|
||||
(move-marker org-remember-last-stored-marker (point)))
|
||||
(throw 'quit t))
|
||||
;; Find the file
|
||||
(if (not visiting) (find-file-noselect file))
|
||||
|
@ -5,7 +5,7 @@
|
||||
;; Author: Carsten Dominik <carsten at orgmode dot org>
|
||||
;; Keywords: outlines, hypermedia, calendar, wp
|
||||
;; Homepage: http://orgmode.org
|
||||
;; Version: 6.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; 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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -111,6 +111,7 @@
|
||||
(funcall (cdr (assq 'vm org-link-frame-setup)) folder readonly)
|
||||
(sit-for 0.1)
|
||||
(when article
|
||||
(require 'vm-search)
|
||||
(vm-select-folder-buffer)
|
||||
(widen)
|
||||
(let ((case-fold-search t))
|
||||
|
@ -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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
|
343
lisp/org/org.el
343
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.12a
|
||||
;; Version: 6.13
|
||||
;;
|
||||
;; This file is part of GNU Emacs.
|
||||
;;
|
||||
@ -92,7 +92,7 @@
|
||||
|
||||
;;; Version
|
||||
|
||||
(defconst org-version "6.12a"
|
||||
(defconst org-version "6.13"
|
||||
"The version number of the file org.el.")
|
||||
|
||||
(defun org-version (&optional here)
|
||||
@ -125,7 +125,7 @@ With prefix arg HERE, insert it at point."
|
||||
"Have the modules been loaded already?")
|
||||
|
||||
(defun org-load-modules-maybe (&optional force)
|
||||
"Load all extensions listed in `org-default-extensions'."
|
||||
"Load all extensions listed in `org-modules'."
|
||||
(when (or force (not org-modules-loaded))
|
||||
(mapc (lambda (ext)
|
||||
(condition-case nil (require ext)
|
||||
@ -180,7 +180,9 @@ to add the symbol `xyz', and the package must have a call to
|
||||
(const :tag "C depend: TODO dependencies for Org-mode" org-depend)
|
||||
(const :tag "C elisp-symbol: Org links to emacs-lisp symbols" org-elisp-symbol)
|
||||
(const :tag "C eval: Include command output as text" org-eval)
|
||||
(const :tag "C eval-light: Evaluate inbuffer-code on demand" org-eval-light)
|
||||
(const :tag "C expiry: Expiry mechanism for Org entries" org-expiry)
|
||||
(const :tag "C exp-blocks: Pre-process blocks for export" org-exp-blocks)
|
||||
(const :tag "C id: Global id's for identifying entries" org-id)
|
||||
(const :tag "C interactive-query: Interactive modification of tags query" org-interactive-query)
|
||||
(const :tag "C mairix: Hook mairix search into Org for different MUAs" org-mairix)
|
||||
@ -843,7 +845,9 @@ links in Org-mode buffers can have an optional tag after a double colon, e.g.
|
||||
[[linkkey:tag][description]]
|
||||
|
||||
If REPLACE is a string, the tag will simply be appended to create the link.
|
||||
If the string contains \"%s\", the tag will be inserted there.
|
||||
If the string contains \"%s\", the tag will be inserted there. Alternatively,
|
||||
the placeholder \"%h\" will cause a url-encoded version of the tag to
|
||||
be inserted at that point (see the function `url-hexify-string').
|
||||
|
||||
REPLACE may also be a function that will be called with the tag as the
|
||||
only argument to create the link, which should be returned as a string.
|
||||
@ -979,6 +983,20 @@ more efficient."
|
||||
:tag "Org Follow Link"
|
||||
:group 'org-link)
|
||||
|
||||
(defcustom org-link-translation-function nil
|
||||
"Function to translate links with different syntax to Org syntax.
|
||||
This can be used to translate links created for example by the Planner
|
||||
or emacs-wiki packages to Org syntax.
|
||||
The function must accept two parameters, a TYPE containing the link
|
||||
protocol name like \"rmail\" or \"gnus\" as a string, and the linked path,
|
||||
which is everything after the link protocol. It should return a cons
|
||||
with possibly modifed values of type and path.
|
||||
Org contains a function for this, so if you set this variable to
|
||||
`org-translate-link-from-planner', you should be able follow many
|
||||
links created by planner."
|
||||
:group 'org-link-follow
|
||||
:type 'function)
|
||||
|
||||
(defcustom org-follow-link-hook nil
|
||||
"Hook that is run after a link has been followed."
|
||||
:group 'org-link-follow
|
||||
@ -1304,11 +1322,11 @@ are used, equivalent to the value `((nil . (:level . 1))'."
|
||||
(const :tag "Current buffer" nil)
|
||||
(function) (variable) (file))
|
||||
(choice :tag "Identify target headline by"
|
||||
(cons :tag "Specific tag" (const :tag) (string))
|
||||
(cons :tag "TODO keyword" (const :todo) (string))
|
||||
(cons :tag "Regular expression" (const :regexp) (regexp))
|
||||
(cons :tag "Level number" (const :level) (integer))
|
||||
(cons :tag "Max Level number" (const :maxlevel) (integer))))))
|
||||
(cons :tag "Specific tag" (const :value :tag) (string))
|
||||
(cons :tag "TODO keyword" (const :value :todo) (string))
|
||||
(cons :tag "Regular expression" (const :value :regexp) (regexp))
|
||||
(cons :tag "Level number" (const :value :level) (integer))
|
||||
(cons :tag "Max Level number" (const :value :maxlevel) (integer))))))
|
||||
|
||||
(defcustom org-refile-use-outline-path nil
|
||||
"Non-nil means, provide refile targets as paths.
|
||||
@ -1699,7 +1717,7 @@ end of the second format."
|
||||
org-mode generates a time duration."
|
||||
:group 'org-time
|
||||
:type 'string)
|
||||
|
||||
|
||||
(defcustom org-deadline-warning-days 14
|
||||
"No. of days before expiration during which a deadline becomes active.
|
||||
This variable governs the display in sparse trees and in the agenda.
|
||||
@ -1996,7 +2014,8 @@ These are fixed values, for the preset properties.")
|
||||
|
||||
(defcustom org-global-properties nil
|
||||
"List of property/value pairs that can be inherited by any entry.
|
||||
You can set buffer-local values for this by adding lines like
|
||||
You can set buffer-local values for the same purpose in the variable
|
||||
`org-file-properties' this by adding lines like
|
||||
|
||||
#+PROPERTY: NAME VALUE"
|
||||
:group 'org-properties
|
||||
@ -2319,6 +2338,11 @@ Use customize to modify this, or restart Emacs after changing it."
|
||||
:tag "Org Completion"
|
||||
:group 'org)
|
||||
|
||||
(defcustom org-completion-use-ido nil
|
||||
"Non-ni means, use ido completion wherever possible."
|
||||
:group 'org-completion
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom org-completion-fallback-command 'hippie-expand
|
||||
"The expansion command called by \\[org-complete] in normal context.
|
||||
Normal means, no org-mode-specific context."
|
||||
@ -2357,11 +2381,12 @@ Normal means, no org-mode-specific context."
|
||||
(extra txt &optional category tags dotime noprefix remove-re))
|
||||
(declare-function org-agenda-new-marker "org-agenda" (&optional pos))
|
||||
(declare-function org-agenda-change-all-lines "org-agenda"
|
||||
(newhead hdmarker &optional fixface just-this))
|
||||
(newhead hdmarker &optional fixface))
|
||||
(declare-function org-agenda-set-restriction-lock "org-agenda" (&optional type))
|
||||
(declare-function org-agenda-maybe-redo "org-agenda" ())
|
||||
(declare-function org-agenda-save-markers-for-cut-and-paste "org-agenda"
|
||||
(beg end))
|
||||
(declare-function org-agenda-copy-local-variable "org-agenda" (var))
|
||||
(declare-function parse-time-string "parse-time" (string))
|
||||
(declare-function remember "remember" (&optional initial))
|
||||
(declare-function remember-buffer-desc "remember" ())
|
||||
@ -2565,7 +2590,7 @@ Otherwise, return nil."
|
||||
(<= org-clock-marker (point-at-eol)))
|
||||
;; The clock is running here
|
||||
(setq org-clock-start-time
|
||||
(apply 'encode-time
|
||||
(apply 'encode-time
|
||||
(org-parse-time-string (match-string 1))))
|
||||
(org-update-mode-line)))
|
||||
(t
|
||||
@ -2612,17 +2637,19 @@ If yes, offer to stop it and to save the buffer with the changes."
|
||||
(defcustom org-archive-location "%s_archive::"
|
||||
"The location where subtrees should be archived.
|
||||
|
||||
Otherwise, the value of this variable is a string, consisting of two
|
||||
parts, separated by a double-colon.
|
||||
The value of this variable is a string, consisting of two parts,
|
||||
separated by a double-colon. The first part is a filename and
|
||||
the second part is a headline.
|
||||
|
||||
The first part is a file name - when omitted, archiving happens in the same
|
||||
file. %s will be replaced by the current file name (without directory part).
|
||||
Archiving to a different file is useful to keep archived entries from
|
||||
contributing to the Org-mode Agenda.
|
||||
When the filename is omitted, archiving happens in the same file.
|
||||
%s in the filename will be replaced by the current file
|
||||
name (without the directory part). Archiving to a different file
|
||||
is useful to keep archived entries from contributing to the
|
||||
Org-mode Agenda.
|
||||
|
||||
The part after the double colon is a headline. The archived entries will be
|
||||
filed under that headline. When omitted, the subtrees are simply filed away
|
||||
at the end of the file, as top-level entries.
|
||||
The archived entries will be filed as subtrees of the specified
|
||||
headline. When the headline is omitted, the subtrees are simply
|
||||
filed away at the end of the file, as top-level entries.
|
||||
|
||||
Here are a few examples:
|
||||
\"%s_archive::\"
|
||||
@ -2738,8 +2765,8 @@ collapsed state."
|
||||
;; Autoload ID code
|
||||
|
||||
(org-autoload "org-id"
|
||||
'(org-id-get-create org-id-new org-id-copy org-id-get
|
||||
org-id-get-with-outline-path-completion
|
||||
'(org-id-get-create org-id-new org-id-copy org-id-get
|
||||
org-id-get-with-outline-path-completion
|
||||
org-id-get-with-outline-drilling
|
||||
org-id-goto org-id-find))
|
||||
|
||||
@ -3397,6 +3424,8 @@ The following commands are available:
|
||||
"Matches a link with spaces, optional angular brackets around it.")
|
||||
(defvar org-link-re-with-space2 nil
|
||||
"Matches a link with spaces, optional angular brackets around it.")
|
||||
(defvar org-link-re-with-space3 nil
|
||||
"Matches a link with spaces, only for internal part in bracket links.")
|
||||
(defvar org-angle-link-re nil
|
||||
"Matches link with angular brackets, spaces are allowed.")
|
||||
(defvar org-plain-link-re nil
|
||||
@ -3432,6 +3461,11 @@ This should be called after the variable `org-link-types' has changed."
|
||||
"\\([^" org-non-link-chars " ]"
|
||||
"[^\t\n\r]*"
|
||||
"[^" org-non-link-chars " ]\\)>?")
|
||||
org-link-re-with-space3
|
||||
(concat
|
||||
"<?\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
|
||||
"\\([^" org-non-link-chars " ]"
|
||||
"[^\t\n\r]*\\)")
|
||||
org-angle-link-re
|
||||
(concat
|
||||
"<\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
|
||||
@ -4915,7 +4949,7 @@ would end up with no indentation after the change, nothing at all is done."
|
||||
(goto-char (match-end 0))
|
||||
(setq col (current-column))
|
||||
(if (< diff 0) (replace-match ""))
|
||||
(indent-to (+ diff col))))
|
||||
(org-indent-to-column (+ diff col))))
|
||||
(move-marker end nil))))
|
||||
|
||||
(defun org-convert-to-odd-levels ()
|
||||
@ -5094,7 +5128,7 @@ useful if the caller implements cut-and-paste as copy-then-paste-then-cut."
|
||||
(defun org-paste-subtree (&optional level tree for-yank)
|
||||
"Paste the clipboard as a subtree, with modification of headline level.
|
||||
The entire subtree is promoted or demoted in order to match a new headline
|
||||
level.
|
||||
level.
|
||||
|
||||
If the cursor is at the beginning of a headline, the same level as
|
||||
that headline is used to paste the tree
|
||||
@ -5369,13 +5403,13 @@ WITH-CASE, the sorting considers case as well."
|
||||
|
||||
(and (= (downcase sorting-type) ?f)
|
||||
(setq getkey-func
|
||||
(completing-read "Sort using function: "
|
||||
(org-ido-completing-read "Sort using function: "
|
||||
obarray 'fboundp t nil nil))
|
||||
(setq getkey-func (intern getkey-func)))
|
||||
|
||||
(and (= (downcase sorting-type) ?r)
|
||||
(setq property
|
||||
(completing-read "Property: "
|
||||
(org-ido-completing-read "Property: "
|
||||
(mapcar 'list (org-buffer-property-keys t))
|
||||
nil t))))
|
||||
|
||||
@ -5585,8 +5619,8 @@ exit by killing the buffer with \\[org-edit-src-exit]."
|
||||
(beginning-of-line 1)
|
||||
(if (looking-at "[ \t]*[^:\n \t]")
|
||||
nil
|
||||
(if (looking-at "[ \t]*\\(\n\\|\\'\\)]")
|
||||
(setq beg (point) end (match-end 0))
|
||||
(if (looking-at "[ \t]*\\(\n\\|\\'\\)")
|
||||
(setq beg (point) end beg)
|
||||
(save-excursion
|
||||
(if (re-search-backward "^[ \t]*[^:]" nil 'move)
|
||||
(setq beg (point-at-bol 2))
|
||||
@ -5595,32 +5629,32 @@ exit by killing the buffer with \\[org-edit-src-exit]."
|
||||
(if (re-search-forward "^[ \t]*[^:]" nil 'move)
|
||||
(setq end (1- (match-beginning 0)))
|
||||
(setq end (point))))
|
||||
(goto-line line)
|
||||
(if (get-buffer "*Org Edit Picture*")
|
||||
(kill-buffer "*Org Edit Picture*"))
|
||||
(switch-to-buffer (make-indirect-buffer (current-buffer)
|
||||
"*Org Edit Picture*"))
|
||||
(narrow-to-region beg end)
|
||||
(remove-text-properties beg end '(display nil invisible nil
|
||||
intangible nil))
|
||||
(when (fboundp 'font-lock-unfontify-region)
|
||||
(font-lock-unfontify-region (point-min) (point-max)))
|
||||
(cond
|
||||
((eq org-edit-fixed-width-region-mode 'artist-mode)
|
||||
(fundamental-mode)
|
||||
(artist-mode 1))
|
||||
(t (funcall org-edit-fixed-width-region-mode)))
|
||||
(set (make-local-variable 'org-edit-src-force-single-line) nil)
|
||||
(set (make-local-variable 'org-edit-src-from-org-mode) org-mode-p)
|
||||
(set (make-local-variable 'org-edit-src-picture) t)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^[ \t]*: " nil t)
|
||||
(replace-match ""))
|
||||
(goto-line line)
|
||||
(org-exit-edit-mode)
|
||||
(org-set-local 'header-line-format msg)
|
||||
(message "%s" msg)
|
||||
t))))
|
||||
(goto-line line))
|
||||
(if (get-buffer "*Org Edit Picture*")
|
||||
(kill-buffer "*Org Edit Picture*"))
|
||||
(switch-to-buffer (make-indirect-buffer (current-buffer)
|
||||
"*Org Edit Picture*"))
|
||||
(narrow-to-region beg end)
|
||||
(remove-text-properties beg end '(display nil invisible nil
|
||||
intangible nil))
|
||||
(when (fboundp 'font-lock-unfontify-region)
|
||||
(font-lock-unfontify-region (point-min) (point-max)))
|
||||
(cond
|
||||
((eq org-edit-fixed-width-region-mode 'artist-mode)
|
||||
(fundamental-mode)
|
||||
(artist-mode 1))
|
||||
(t (funcall org-edit-fixed-width-region-mode)))
|
||||
(set (make-local-variable 'org-edit-src-force-single-line) nil)
|
||||
(set (make-local-variable 'org-edit-src-from-org-mode) org-mode-p)
|
||||
(set (make-local-variable 'org-edit-src-picture) t)
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^[ \t]*: ?" nil t)
|
||||
(replace-match ""))
|
||||
(goto-line line)
|
||||
(org-exit-edit-mode)
|
||||
(org-set-local 'header-line-format msg)
|
||||
(message "%s" msg)
|
||||
t)))
|
||||
|
||||
|
||||
(defun org-edit-src-find-region-and-lang ()
|
||||
@ -5684,7 +5718,7 @@ the language, a switch telling of the content should be in a single line."
|
||||
(string-match "\\<style=\"\\([^ \t\n\"]+\\)\"" m))
|
||||
(match-string 1 m))
|
||||
(t "fundamental"))))
|
||||
|
||||
|
||||
(defun org-edit-src-exit ()
|
||||
"Exit special edit and protect problematic lines."
|
||||
(interactive)
|
||||
@ -5711,6 +5745,7 @@ the language, a switch telling of the content should be in a single line."
|
||||
(font-lock-unfontify-region (point-min) (point-max)))
|
||||
(put-text-property (point-min) (point-max) 'font-lock-fontified t))
|
||||
(when (org-bound-and-true-p org-edit-src-picture)
|
||||
(untabify (point-min) (point-max))
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^" nil t)
|
||||
(replace-match ": "))
|
||||
@ -5819,6 +5854,8 @@ off orgstruct-mode will *not* remove these additional settings."
|
||||
'([(meta shift right)] org-shiftmetaright)
|
||||
'([(shift up)] org-shiftup)
|
||||
'([(shift down)] org-shiftdown)
|
||||
'([(shift left)] org-shiftleft)
|
||||
'([(shift right)] org-shiftright)
|
||||
'("\C-c\C-c" org-ctrl-c-ctrl-c)
|
||||
'("\M-q" fill-paragraph)
|
||||
'("\C-c^" org-sort)
|
||||
@ -5975,6 +6012,8 @@ Possible values in the list of contexts are `table', `headline', and `item'."
|
||||
(cond
|
||||
((symbolp rpl) (funcall rpl tag))
|
||||
((string-match "%s" rpl) (replace-match (or tag "") t t rpl))
|
||||
((string-match "%h" rpl)
|
||||
(replace-match (url-hexify-string (or tag "")) t t rpl))
|
||||
(t (concat rpl tag)))))
|
||||
link))
|
||||
|
||||
@ -6049,7 +6088,7 @@ This link is added to `org-stored-links' and can later be inserted
|
||||
into an org-buffer with \\[org-insert-link].
|
||||
|
||||
For some link types, a prefix arg is interpreted:
|
||||
For links to usenet articles, arg negates `org-usenet-links-prefer-google'.
|
||||
For links to usenet articles, arg negates `org-gnus-prefer-web-links'.
|
||||
For file links, arg negates `org-context-in-file-links'."
|
||||
(interactive "P")
|
||||
(org-load-modules-maybe)
|
||||
@ -6287,7 +6326,7 @@ This is the list that is used for internal purposes.")
|
||||
This is the list that is used before handing over to the browser.")
|
||||
|
||||
(defun org-link-escape (text &optional table)
|
||||
"Escape characters in TEXT that are problematic for links."
|
||||
"Escape charaters in TEXT that are problematic for links."
|
||||
(setq table (or table org-link-escape-chars))
|
||||
(when text
|
||||
(let ((re (mapconcat (lambda (x) (regexp-quote
|
||||
@ -6485,7 +6524,7 @@ used as the link location instead of reading one interactively."
|
||||
;; Check if we are linking to the current file with a search option
|
||||
;; If yes, simplify the link by using only the search option.
|
||||
(when (and buffer-file-name
|
||||
(string-match "\\<file:\\(.+?\\)::\\([^>]+\\)" link))
|
||||
(string-match "^file:\\(.+?\\)::\\([^>]+\\)" link))
|
||||
(let* ((path (match-string 1 link))
|
||||
(case-fold-search nil)
|
||||
(search (match-string 2 link)))
|
||||
@ -6495,7 +6534,7 @@ used as the link location instead of reading one interactively."
|
||||
(setq link search)))))
|
||||
|
||||
;; Check if we can/should use a relative path. If yes, simplify the link
|
||||
(when (string-match "\\<file:\\(.*\\)" link)
|
||||
(when (string-match "^file:\\(.*\\)" link)
|
||||
(let* ((path (match-string 1 link))
|
||||
(origpath path)
|
||||
(case-fold-search nil))
|
||||
@ -6534,6 +6573,15 @@ used as the link location instead of reading one interactively."
|
||||
(let ((minibuffer-local-completion-map
|
||||
(copy-keymap minibuffer-local-completion-map)))
|
||||
(org-defkey minibuffer-local-completion-map " " 'self-insert-command)
|
||||
(apply 'org-ido-completing-read args)))
|
||||
|
||||
(defun org-ido-completing-read (&rest args)
|
||||
"Completing-read using `ido-mode' speedups if available"
|
||||
(if (and org-completion-use-ido
|
||||
(fboundp 'ido-completing-read)
|
||||
(boundp 'ido-mode) ido-mode
|
||||
(listp (second args)))
|
||||
(apply 'ido-completing-read (concat (car args)) (cdr args))
|
||||
(apply 'completing-read args)))
|
||||
|
||||
(defun org-extract-attributes (s)
|
||||
@ -6601,6 +6649,39 @@ If the link is in hidden text, expose it."
|
||||
(setq org-link-search-failed t)
|
||||
(error "No further link found"))))
|
||||
|
||||
(defun org-translate-link (s)
|
||||
"Translate a link string if a translation function has been defined."
|
||||
(if (and org-link-translation-function
|
||||
(fboundp org-link-translation-function)
|
||||
(string-match "\\([a-zA-Z0-9]+\\):\\(.*\\)" s))
|
||||
(progn
|
||||
(setq s (funcall org-link-translation-function
|
||||
(match-string 1) (match-string 2)))
|
||||
(concat (car s) ":" (cdr s)))
|
||||
s))
|
||||
|
||||
(defun org-translate-link-from-planner (type path)
|
||||
"Translate a link from Emacs Planner syntax so that Org can follow it.
|
||||
This is still an experimental function, your mileage may vary."
|
||||
(cond
|
||||
((member type '("http" "https" "news" "ftp"))
|
||||
;; standard Internet links are the same.
|
||||
nil)
|
||||
((and (equal type "irc") (string-match "^//" path))
|
||||
;; Planner has two / at the beginning of an irc link, we have 1.
|
||||
;; We should have zero, actually....
|
||||
(setq path (substring path 1)))
|
||||
((and (equal type "lisp") (string-match "^/" path))
|
||||
;; Planner has a slash, we do not.
|
||||
(setq type "elisp" path (substring path 1)))
|
||||
((string-match "^//\\(.?*\\)/\\(<.*>\\)$" path)
|
||||
;; A typical message link. Planner has the id after the fina slash,
|
||||
;; we separate it with a hash mark
|
||||
(setq path (concat (match-string 1 path) "#"
|
||||
(org-remove-angle-brackets (match-string 2 path)))))
|
||||
)
|
||||
(cons type path))
|
||||
|
||||
(defun org-find-file-at-mouse (ev)
|
||||
"Open file link or URL at mouse."
|
||||
(interactive "e")
|
||||
@ -6611,6 +6692,8 @@ If the link is in hidden text, expose it."
|
||||
"Open file link or URL at mouse."
|
||||
(interactive "e")
|
||||
(mouse-set-point ev)
|
||||
(if (eq major-mode 'org-agenda-mode)
|
||||
(org-agenda-copy-local-variable 'org-link-abbrev-alist-local))
|
||||
(org-open-at-point))
|
||||
|
||||
(defvar org-window-config-before-follow-link nil
|
||||
@ -6668,7 +6751,7 @@ application the system uses for this file type."
|
||||
((or (file-name-absolute-p link)
|
||||
(string-match "^\\.\\.?/" link))
|
||||
(setq type "file" path link))
|
||||
((string-match org-link-re-with-space2 link)
|
||||
((string-match org-link-re-with-space3 link)
|
||||
(setq type (match-string 1 link) path (match-string 2 link)))
|
||||
(t (setq type "thisfile" path link)))
|
||||
(throw 'match t)))
|
||||
@ -6703,6 +6786,11 @@ application the system uses for this file type."
|
||||
;; Remove any trailing spaces in path
|
||||
(if (string-match " +\\'" path)
|
||||
(setq path (replace-match "" t t path)))
|
||||
(if (and org-link-translation-function
|
||||
(fboundp org-link-translation-function))
|
||||
;; Check if we need to translate the link
|
||||
(let ((tmp (funcall org-link-translation-function type path)))
|
||||
(setq type (car tmp) path (cdr tmp))))
|
||||
|
||||
(cond
|
||||
|
||||
@ -6787,7 +6875,10 @@ application the system uses for this file type."
|
||||
(format "Execute \"%s\" as elisp? "
|
||||
(org-add-props cmd nil
|
||||
'face 'org-warning))))
|
||||
(message "%s => %s" cmd (eval (read cmd)))
|
||||
(message "%s => %s" cmd
|
||||
(if (equal (string-to-char cmd) ?\()
|
||||
(eval (read cmd))
|
||||
(call-interactively (read cmd))))
|
||||
(error "Abort"))))
|
||||
|
||||
(t
|
||||
@ -7311,7 +7402,7 @@ on the system \"/user@host:\"."
|
||||
(while (string-match "/" s)
|
||||
(setq s (replace-match "\\" t t s)))
|
||||
s)
|
||||
|
||||
|
||||
(defun org-get-outline-path ()
|
||||
"Return the outline path to the current entry, as a list."
|
||||
(let (rtn)
|
||||
@ -7415,7 +7506,7 @@ operation has put the subtree."
|
||||
(let* ((cbuf (current-buffer))
|
||||
(cfunc (if org-refile-use-outline-path
|
||||
'org-olpath-completing-read
|
||||
'completing-read))
|
||||
'org-ido-completing-read))
|
||||
(extra (if org-refile-use-outline-path "/" ""))
|
||||
(filename (buffer-file-name (buffer-base-buffer cbuf)))
|
||||
(fname (and filename (file-truename filename)))
|
||||
@ -7434,8 +7525,8 @@ operation has put the subtree."
|
||||
(defun org-olpath-completing-read (prompt collection &rest args)
|
||||
"Read an outline path like a file name."
|
||||
(let ((thetable collection))
|
||||
(apply
|
||||
'completing-read prompt
|
||||
(apply
|
||||
'org-ido-completing-read prompt
|
||||
(lambda (string predicate &optional flag)
|
||||
(let (rtn r s f (l (length string)))
|
||||
(cond
|
||||
@ -7591,7 +7682,7 @@ This function can be used in a hook."
|
||||
|
||||
(defcustom org-structure-template-alist
|
||||
'(
|
||||
("s" "#+begin_src ?\n\n#+end_src"
|
||||
("s" "#+begin_src ?\n\n#+end_src"
|
||||
"<src lang=\"?\">\n\n</src>")
|
||||
("e" "#+begin_example\n?\n#+end_example"
|
||||
"<example>\n?\n</example>")
|
||||
@ -7620,7 +7711,7 @@ for the file uning completion.
|
||||
There are two templates for each key, the first uses the original Org syntax,
|
||||
the second uses Emacs Muse-like syntax tags. These Muse-like tags become
|
||||
the default when the /org-mtags.el/ module has been loaded. See also the
|
||||
variable `org-mtags-prefere-muse-templates'.
|
||||
variable `org-mtags-prefer-muse-templates'.
|
||||
This is an experimental feature, it is undecided if it is going to stay in."
|
||||
:group 'org-completion
|
||||
:type '(repeat
|
||||
@ -7643,7 +7734,7 @@ expands them."
|
||||
|
||||
(defun org-complete-expand-structure-template (start cell)
|
||||
"Expand a structure template."
|
||||
(let* ((musep (org-bound-and-true-p org-mtags-prefere-muse-templates))
|
||||
(let* ((musep (org-bound-and-true-p org-mtags-prefer-muse-templates))
|
||||
(rpl (nth (if musep 2 1) cell)))
|
||||
(delete-region start (point))
|
||||
(when (string-match "\\`#\\+" rpl)
|
||||
@ -7654,7 +7745,7 @@ expands them."
|
||||
(t (newline))))
|
||||
(setq start (point))
|
||||
(if (string-match "%file" rpl)
|
||||
(setq rpl (replace-match
|
||||
(setq rpl (replace-match
|
||||
(concat
|
||||
"\""
|
||||
(save-match-data
|
||||
@ -7663,7 +7754,7 @@ expands them."
|
||||
t t rpl)))
|
||||
(insert rpl)
|
||||
(if (re-search-backward "\\?" start t) (delete-char 1))))
|
||||
|
||||
|
||||
|
||||
(defun org-complete (&optional arg)
|
||||
"Perform completion on word at point.
|
||||
@ -7919,7 +8010,7 @@ For calling through lisp, arg is also interpreted in the following way:
|
||||
(or (not org-use-fast-todo-selection)
|
||||
(not org-todo-key-trigger)))
|
||||
;; Read a state with completion
|
||||
(completing-read "State: " (mapcar (lambda(x) (list x))
|
||||
(org-ido-completing-read "State: " (mapcar (lambda(x) (list x))
|
||||
org-todo-keywords-1)
|
||||
nil t))
|
||||
((eq arg 'right)
|
||||
@ -8069,7 +8160,7 @@ For calling through lisp, arg is also interpreted in the following way:
|
||||
(condition-case nil
|
||||
(org-forward-same-level 1)
|
||||
(error (end-of-line 1)))))
|
||||
(replace-match
|
||||
(replace-match
|
||||
(if is-percent
|
||||
(format "[%d%%]" (/ (* 100 cnt-done) (max 1 cnt-all)))
|
||||
(format "[%d/%d]" cnt-done cnt-all)))
|
||||
@ -8106,7 +8197,7 @@ when there is a statistics cookie in the headline!
|
||||
(setq changes (append changes (cdr (assoc 'done l)))))
|
||||
(dolist (c changes)
|
||||
(org-toggle-tag (car c) (if (cdr c) 'on 'off)))))
|
||||
|
||||
|
||||
(defun org-local-logging (value)
|
||||
"Get logging settings from a property VALUE."
|
||||
(let* (words w a)
|
||||
@ -8329,7 +8420,7 @@ of `org-todo-keywords-1'."
|
||||
(kwd-re
|
||||
(cond ((null arg) org-not-done-regexp)
|
||||
((equal arg '(4))
|
||||
(let ((kwd (completing-read "Keyword (or KWD1|KWD2|...): "
|
||||
(let ((kwd (org-ido-completing-read "Keyword (or KWD1|KWD2|...): "
|
||||
(mapcar 'list org-todo-keywords-1))))
|
||||
(concat "\\("
|
||||
(mapconcat 'identity (org-split-string kwd "|") "\\|")
|
||||
@ -8507,7 +8598,7 @@ EXTRA is additional text that will be inserted into the notes buffer."
|
||||
(save-excursion
|
||||
(when findpos
|
||||
(org-back-to-heading t)
|
||||
(narrow-to-region (point) (save-excursion
|
||||
(narrow-to-region (point) (save-excursion
|
||||
(outline-next-heading) (point)))
|
||||
(looking-at (concat outline-regexp "\\( *\\)[^\r\n]*"
|
||||
"\\(\n[^\r\n]*?" org-keyword-time-not-clock-regexp
|
||||
@ -8641,9 +8732,9 @@ d Show deadlines due within `org-deadline-warning-days'."
|
||||
((equal ans ?T)
|
||||
(call-interactively 'org-tags-sparse-tree))
|
||||
((member ans '(?p ?P))
|
||||
(setq kwd (completing-read "Property: "
|
||||
(setq kwd (org-ido-completing-read "Property: "
|
||||
(mapcar 'list (org-buffer-property-keys))))
|
||||
(setq value (completing-read "Value: "
|
||||
(setq value (org-ido-completing-read "Value: "
|
||||
(mapcar 'list (org-property-values kwd))))
|
||||
(unless (string-match "\\`{.*}\\'" value)
|
||||
(setq value (concat "\"" value "\"")))
|
||||
@ -8991,10 +9082,10 @@ only lines with a TODO keyword are included in the output."
|
||||
(defvar todo-only) ;; dynamically scoped
|
||||
|
||||
(defun org-tags-sparse-tree (&optional todo-only match)
|
||||
"Create a sparse tree according to tags string MATCH.
|
||||
"Create a sparse tree according to tags string MATCH.
|
||||
MATCH can contain positive and negative selection of tags, like
|
||||
\"+WORK+URGENT-WITHBOSS\".
|
||||
If optional argument TODO-ONLY is non-nil, only select lines that are
|
||||
If optional argument TODO_ONLY is non-nil, only select lines that are
|
||||
also TODO lines."
|
||||
(interactive "P")
|
||||
(org-prepare-agenda-buffers (list (current-buffer)))
|
||||
@ -9039,7 +9130,7 @@ also TODO lines."
|
||||
;; Get a new match request, with completion
|
||||
(let ((org-last-tags-completion-table
|
||||
(org-global-tags-completion-table)))
|
||||
(setq match (completing-read
|
||||
(setq match (org-ido-completing-read
|
||||
"Match: " 'org-tags-completion-function nil nil nil
|
||||
'org-tags-history))))
|
||||
|
||||
@ -9187,11 +9278,19 @@ it as a time string and apply `float-time' to it. f S is nil, just return 0."
|
||||
(error 0.)))
|
||||
(t 0.)))
|
||||
|
||||
(defun org-time-today ()
|
||||
"Time in seconds today at 0:00.
|
||||
Returns the float number of seconds since the beginning of the
|
||||
epoch to the beginning of today (00:00)."
|
||||
(float-time (apply 'encode-time
|
||||
(append '(0 0 0) (nthcdr 3 (decode-time))))))
|
||||
|
||||
(defun org-matcher-time (s)
|
||||
(cond
|
||||
((equal s "<now>") (float-time))
|
||||
((equal s "<today>")
|
||||
(float-time (append '(0 0 0) (nthcdr 3 (decode-time)))))
|
||||
((string= s "<now>") (float-time))
|
||||
((string= s "<today>") (org-time-today))
|
||||
((string= s "<tomorrow>") (+ 86400.0 (org-time-today)))
|
||||
((string= s "<yesterday>") (- (org-time-today) 86400.0))
|
||||
(t (org-2ft s))))
|
||||
|
||||
(defun org-match-any-p (re list)
|
||||
@ -9349,7 +9448,7 @@ With prefix ARG, realign all tags in headings in the current buffer."
|
||||
(let ((org-add-colon-after-tag-completion t))
|
||||
(org-trim
|
||||
(org-without-partial-completion
|
||||
(completing-read "Tags: " 'org-tags-completion-function
|
||||
(org-ido-completing-read "Tags: " 'org-tags-completion-function
|
||||
nil nil current 'org-tags-history)))))))
|
||||
(while (string-match "[-+&]+" tags)
|
||||
;; No boolean logic, just a list
|
||||
@ -9392,7 +9491,7 @@ This works in the agenda, and also in an org-mode buffer."
|
||||
(if (org-mode-p)
|
||||
(org-get-buffer-tags)
|
||||
(org-global-tags-completion-table))))
|
||||
(completing-read
|
||||
(org-ido-completing-read
|
||||
"Tag: " 'org-tags-completion-function nil nil nil
|
||||
'org-tags-history))
|
||||
(progn
|
||||
@ -9603,7 +9702,7 @@ Returns the new tags string, or nil to not change the current settings."
|
||||
(if exit-after-next (setq exit-after-next 'now)))
|
||||
((= c ?\t)
|
||||
(condition-case nil
|
||||
(setq tg (completing-read
|
||||
(setq tg (org-ido-completing-read
|
||||
"Tag: "
|
||||
(or buffer-tags
|
||||
(with-current-buffer buf
|
||||
@ -9738,12 +9837,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
|
||||
@ -10078,7 +10177,7 @@ is set.")
|
||||
(move-marker org-entry-property-inherited-from (point))
|
||||
(throw 'ex tmp))
|
||||
(or (org-up-heading-safe) (throw 'ex nil)))))
|
||||
(or tmp
|
||||
(or tmp
|
||||
(cdr (assoc property org-file-properties))
|
||||
(cdr (assoc property org-global-properties))
|
||||
(cdr (assoc property org-global-properties-fixed))))))
|
||||
@ -10239,7 +10338,7 @@ in the current file."
|
||||
(interactive
|
||||
(let* ((completion-ignore-case t)
|
||||
(keys (org-buffer-property-keys nil t t))
|
||||
(prop0 (completing-read "Property: " (mapcar 'list keys)))
|
||||
(prop0 (org-ido-completing-read "Property: " (mapcar 'list keys)))
|
||||
(prop (if (member prop0 keys)
|
||||
prop0
|
||||
(or (cdr (assoc (downcase prop0)
|
||||
@ -10264,7 +10363,7 @@ in the current file."
|
||||
"In the current entry, delete PROPERTY."
|
||||
(interactive
|
||||
(let* ((completion-ignore-case t)
|
||||
(prop (completing-read
|
||||
(prop (org-ido-completing-read
|
||||
"Property: " (org-entry-properties nil 'standard))))
|
||||
(list prop)))
|
||||
(message "Property %s %s" property
|
||||
@ -10276,7 +10375,7 @@ in the current file."
|
||||
"Remove PROPERTY globally, from all entries."
|
||||
(interactive
|
||||
(let* ((completion-ignore-case t)
|
||||
(prop (completing-read
|
||||
(prop (org-ido-completing-read
|
||||
"Globally remove property: "
|
||||
(mapcar 'list (org-buffer-property-keys)))))
|
||||
(list prop)))
|
||||
@ -11129,7 +11228,7 @@ days in order to avoid rounding problems."
|
||||
"Convert a time stamp to an absolute day number.
|
||||
If there is a specifyer for a cyclic time stamp, get the closest date to
|
||||
DAYNR.
|
||||
PREFER and SHOW-ALL are passed through to `org-closest-date'."
|
||||
PREFER and SHOW_ALL are passed through to `org-closest-date'."
|
||||
(cond
|
||||
((and daynr (string-match "\\`%%\\((.*)\\)" s))
|
||||
(if (org-diary-sexp-entry (match-string 1 s) "" date)
|
||||
@ -11149,8 +11248,8 @@ PREFER and SHOW-ALL are passed through to `org-closest-date'."
|
||||
(defun org-small-year-to-year (year)
|
||||
"Convert 2-digit years into 4-digit years.
|
||||
38-99 are mapped into 1938-1999. 1-37 are mapped into 2001-2007.
|
||||
The year 2000 cannot be abbreviated. Any year larger than 99
|
||||
is returned unchanged."
|
||||
The year 2000 cannot be abbreviated. Any year lager than 99
|
||||
is retrned unchanged."
|
||||
(if (< year 38)
|
||||
(setq year (+ 2000 year))
|
||||
(if (< year 100)
|
||||
@ -11600,11 +11699,11 @@ If EXCLUDE-TMP is non-nil, ignore temporary buffers."
|
||||
(lambda (b) (string-match "\*Org .*Export" (buffer-name b))))
|
||||
((eq predicate 'agenda)
|
||||
(lambda (b)
|
||||
(with-current-buffer b
|
||||
(with-current-buffer b
|
||||
(and (eq major-mode 'org-mode)
|
||||
(setq bfn (buffer-file-name b))
|
||||
(member (file-truename bfn) agenda-files)))))
|
||||
(t (lambda (b) (with-current-buffer b
|
||||
(t (lambda (b) (with-current-buffer b
|
||||
(or (eq major-mode 'org-mode)
|
||||
(string-match "\*Org .*Export"
|
||||
(buffer-name b)))))))))
|
||||
@ -11822,7 +11921,7 @@ When a buffer is unmodified, it is just killed. When modified, it is saved
|
||||
(append org-done-keywords-for-agenda org-done-keywords))
|
||||
(setq org-todo-keyword-alist-for-agenda
|
||||
(append org-todo-keyword-alist-for-agenda org-todo-key-alist))
|
||||
(setq org-tag-alist-for-agenda
|
||||
(setq org-tag-alist-for-agenda
|
||||
(append org-tag-alist-for-agenda org-tag-alist))
|
||||
|
||||
(save-excursion
|
||||
@ -12574,7 +12673,14 @@ depending on context. See the individual commands for more information."
|
||||
(t (call-interactively 'org-next-item))))
|
||||
|
||||
(defun org-shiftright (&optional arg)
|
||||
"Next TODO keyword or timestamp one day later, depending on context."
|
||||
"Cycle the thing at point or in the current line, depending on context.
|
||||
Depending on context, this does one of the following:
|
||||
|
||||
- switch a timestamp at point one day into the future
|
||||
- on a headline, switch to the next TODO keyword.
|
||||
- on an item, switch entire list to the next bullet type
|
||||
- on a property line, switch to the next allowed value
|
||||
- on a clocktable definition line, move time block into the future"
|
||||
(interactive "P")
|
||||
(cond
|
||||
((org-at-timestamp-p t) (call-interactively 'org-timestamp-up-day))
|
||||
@ -12585,7 +12691,14 @@ depending on context. See the individual commands for more information."
|
||||
(t (org-shiftcursor-error))))
|
||||
|
||||
(defun org-shiftleft (&optional arg)
|
||||
"Previous TODO keyword or timestamp one day earlier, depending on context."
|
||||
"Cycle the thing at point or in the current line, depending on context.
|
||||
Depending on context, this does one of the following:
|
||||
|
||||
- switch a timestamp at point one day into the past
|
||||
- on a headline, switch to the previous TODO keyword.
|
||||
- on an item, switch entire list to the previous bullet type
|
||||
- on a property line, switch to the previous allowed value
|
||||
- on a clocktable definition line, move time block into the past"
|
||||
(interactive "P")
|
||||
(cond
|
||||
((org-at-timestamp-p t) (call-interactively 'org-timestamp-down-day))
|
||||
@ -13845,7 +13958,7 @@ work correctly."
|
||||
(goto-char (+ (match-beginning 1) 5))
|
||||
(goto-char (match-end 0)))
|
||||
(make-string (current-column) ?\ )))
|
||||
((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)] \\)?")
|
||||
((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)] ?\\)?")
|
||||
(save-excursion
|
||||
(goto-char (match-end 0))
|
||||
(make-string (current-column) ?\ )))
|
||||
@ -14011,13 +14124,14 @@ plainly yank the text as it is.
|
||||
\[1] Basically, the test checks if the first non-white line is a heading
|
||||
and if there are no other headings with fewer stars."
|
||||
(interactive "P")
|
||||
(setq this-command 'yank)
|
||||
(if arg
|
||||
(call-interactively 'yank)
|
||||
(let ((subtreep ; is kill a subtree, and the yank position appropriate?
|
||||
(and (org-kill-is-subtree-p)
|
||||
(or (bolp)
|
||||
(and (looking-at "[ \t]*$")
|
||||
(string-match
|
||||
(string-match
|
||||
"\\`\\*+\\'"
|
||||
(buffer-substring (point-at-bol) (point)))))))
|
||||
swallowp)
|
||||
@ -14046,12 +14160,15 @@ plainly yank the text as it is.
|
||||
"Yanked text not folded because that would swallow text"))
|
||||
(goto-char end)
|
||||
(skip-chars-forward " \t\n\r")
|
||||
(beginning-of-line 1)))
|
||||
(beginning-of-line 1)
|
||||
(push-mark beg 'nomsg)))
|
||||
((and subtreep org-yank-adjusted-subtrees)
|
||||
(org-paste-subtree nil nil 'for-yank))
|
||||
(let ((beg (point-at-bol)))
|
||||
(org-paste-subtree nil nil 'for-yank)
|
||||
(push-mark beg 'nomsg)))
|
||||
(t
|
||||
(call-interactively 'yank))))))
|
||||
|
||||
|
||||
(defun org-yank-folding-would-swallow-text (beg end)
|
||||
"Would hide-subtree at BEG swallow any text after END?"
|
||||
(let (level)
|
||||
@ -14086,7 +14203,13 @@ plainly yank the text as it is.
|
||||
(outline-invisible-p)
|
||||
(get-char-property (point) 'invisible))))
|
||||
|
||||
(defalias 'org-back-to-heading 'outline-back-to-heading)
|
||||
(defun org-back-to-heading (&optional invisible-ok)
|
||||
"Call `outline-back-to-heading', but provide a better error message."
|
||||
(condition-case nil
|
||||
(outline-back-to-heading invisible-ok)
|
||||
(error (error "Before first headline at position %d in buffer %s"
|
||||
(point) (current-buffer)))))
|
||||
|
||||
(defalias 'org-on-heading-p 'outline-on-heading-p)
|
||||
(defalias 'org-at-heading-p 'outline-on-heading-p)
|
||||
(defun org-at-heading-or-item-p ()
|
||||
@ -14111,7 +14234,7 @@ headline found, or nil if no higher level is found."
|
||||
(let ((pos (point)) start-level level
|
||||
(re (concat "^" outline-regexp)))
|
||||
(catch 'exit
|
||||
(outline-back-to-heading t)
|
||||
(org-back-to-heading t)
|
||||
(setq start-level (funcall outline-level))
|
||||
(if (equal start-level 1) (throw 'exit nil))
|
||||
(while (re-search-backward re nil t)
|
||||
@ -14187,7 +14310,7 @@ When ENTRY is non-nil, show the entire entry."
|
||||
Stop at the first and last subheadings of a superior heading.
|
||||
This is like outline-forward-same-level, but invisible headings are ok."
|
||||
(interactive "p")
|
||||
(outline-back-to-heading t)
|
||||
(org-back-to-heading t)
|
||||
(while (> arg 0)
|
||||
(let ((point-to-move-to (save-excursion
|
||||
(org-get-next-sibling))))
|
||||
|
Loading…
Reference in New Issue
Block a user