0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-22 06:10:43 +00:00

Merge branch 'master' of orgmode.org:org-mode

This commit is contained in:
Bastien Guerry 2013-02-28 10:21:08 +01:00
commit fb920a38ad

View file

@ -297,6 +297,10 @@ This variable is set with `org-export-define-backend' and
The value should be a list. Its CAR is the action, as a symbol, The value should be a list. Its CAR is the action, as a symbol,
and its CDR is a list of export options.") and its CDR is a list of export options.")
(defvar org-export-dispatch-last-position (make-marker)
"The position where the last export command was created using the dispatcher.
This marker will be used with `C-u C-c C-e' to make sure export repetition
uses the same subtree if the previous command was restricted to a subtree.")
;;; User-configurable Variables ;;; User-configurable Variables
@ -5310,17 +5314,23 @@ When ARG is \\[universal-argument] \\[universal-argument], display the asynchron
((and arg org-export-dispatch-last-action)) ((and arg org-export-dispatch-last-action))
(t (save-window-excursion (t (save-window-excursion
(unwind-protect (unwind-protect
;; Store this export command. (progn
(setq org-export-dispatch-last-action ;; Remember where we are
(org-export--dispatch-ui (move-marker org-export-dispatch-last-position
(list org-export-initial-scope (point))
(and org-export-in-background 'async)) ;; Get and store an export command
nil (setq org-export-dispatch-last-action
org-export-dispatch-use-expert-ui)) (org-export--dispatch-ui
(list org-export-initial-scope
(and org-export-in-background 'async))
nil
org-export-dispatch-use-expert-ui)))
(and (get-buffer "*Org Export Dispatcher*") (and (get-buffer "*Org Export Dispatcher*")
(kill-buffer "*Org Export Dispatcher*"))))))) (kill-buffer "*Org Export Dispatcher*")))))))
(action (car input)) (action (car input))
(optns (cdr input))) (optns (cdr input)))
(unless (memq 'subtree optns)
(move-marker org-export-dispatch-last-position nil))
(case action (case action
;; First handle special hard-coded actions. ;; First handle special hard-coded actions.
(stack (org-export-stack)) (stack (org-export-stack))
@ -5336,13 +5346,23 @@ When ARG is \\[universal-argument] \\[universal-argument], display the asynchron
(memq 'force optns) (memq 'force optns)
(memq 'async optns))) (memq 'async optns)))
(publish-all (org-publish-all (memq 'force optns) (memq 'async optns))) (publish-all (org-publish-all (memq 'force optns) (memq 'async optns)))
(otherwise (funcall action (otherwise
;; Return a symbol instead of a list to ease (save-excursion
;; asynchronous export macro use. (when arg
(and (memq 'async optns) t) ;; Repeating command, maybe move cursor
(and (memq 'subtree optns) t) ;; to restore subtree context
(and (memq 'visible optns) t) (if (eq (marker-buffer org-export-dispatch-last-position)
(and (memq 'body optns) t)))))) (current-buffer))
(goto-char org-export-dispatch-last-position)
;; We are in a differnet buffer, forget position
(move-marker org-export-dispatch-last-position nil)))
(funcall action
;; Return a symbol instead of a list to ease
;; asynchronous export macro use.
(and (memq 'async optns) t)
(and (memq 'subtree optns) t)
(and (memq 'visible optns) t)
(and (memq 'body optns) t)))))))
(defun org-export--dispatch-ui (options first-key expertp) (defun org-export--dispatch-ui (options first-key expertp)
"Handle interface for `org-export-dispatch'. "Handle interface for `org-export-dispatch'.