summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2012-10-11 19:30:12 (GMT)
committer Nicolas Goaziou <n.goaziou@gmail.com>2012-10-11 19:32:21 (GMT)
commit0a99cf72492ad28b673627227b8f7fda64751122 (patch)
tree23446dbe12b88fe5f5d177aa5cdf292025fd627a
parentc23dea156337bdfdc0da5f88259ff5ae397eb7c2 (diff)
downloadorg-mode-0a99cf72492ad28b673627227b8f7fda64751122.zip
org-mode-0a99cf72492ad28b673627227b8f7fda64751122.tar.gz
org-export: Tweak dispatch UI
* contrib/lisp/org-export.el (org-export-dispatch-use-expert-ui): Complete docstring. (org-export-dispatch): Fix docstring. Clean dispatch buffer, if any, each time the function is called. (org-export-dispatch-ui): Make sure window containing dispatch buffer is active when user is prompted for a key. Also remove cursor from view. (org-export-dispatch-action): Ring a bell when a wrong key is pressed. In regular UI, also inform the user by a message.
-rw-r--r--contrib/lisp/org-export.el50
1 files changed, 26 insertions, 24 deletions
diff --git a/contrib/lisp/org-export.el b/contrib/lisp/org-export.el
index 72709b9..d654e73 100644
--- a/contrib/lisp/org-export.el
+++ b/contrib/lisp/org-export.el
@@ -672,11 +672,12 @@ these cases."
(defcustom org-export-dispatch-use-expert-ui nil
"Non-nil means using a non-intrusive `org-export-dispatch'.
In that case, no help buffer is displayed. Though, an indicator
-for current export scope is added to the prompt \(i.e. \"b\" when
+for current export scope is added to the prompt (\"b\" when
output is restricted to body only, \"s\" when it is restricted to
-the current subtree and \"v\" when only visible elements are
-considered for export\). Also, \[?] allows to switch back to
-standard mode."
+the current subtree, \"v\" when only visible elements are
+considered for export and \"f\" when publishing functions should
+be passed the FORCE argument). Also, \[?] allows to switch back
+to standard mode."
:group 'org-export-general
:type 'boolean)
@@ -4428,13 +4429,15 @@ It provides an access to common export related tasks in a buffer.
Its interface comes in two flavours: standard and expert. While
both share the same set of bindings, only the former displays the
valid keys associations. Set `org-export-dispatch-use-expert-ui'
-to switch to one or the other.
-
-Return an error if key pressed has no associated command."
+to switch to one or the other."
(interactive)
- (let* ((input (org-export-dispatch-ui (list org-export-initial-scope)
- nil
- org-export-dispatch-use-expert-ui))
+ (let* ((input (save-window-excursion
+ (unwind-protect
+ (org-export-dispatch-ui (list org-export-initial-scope)
+ nil
+ org-export-dispatch-use-expert-ui)
+ (and (get-buffer "*Org Export Dispatcher*")
+ (kill-buffer "*Org Export Dispatcher*")))))
(action (car input))
(optns (cdr input)))
(case action
@@ -4558,8 +4561,8 @@ back to standard interface."
(format
"Export command (Options: %s%s%s%s) [%s]: "
(if (memq 'body options) (funcall fontify-key "b" t) "-")
- (if (memq 'subtree options) (funcall fontify-key "s" t) "-")
(if (memq 'visible options) (funcall fontify-key "v" t) "-")
+ (if (memq 'subtree options) (funcall fontify-key "s" t) "-")
(if (memq 'force options) (funcall fontify-key "f" t) "-")
(concat allowed-keys)))))
;; With expert UI, just read key with a fancy prompt. In standard
@@ -4567,20 +4570,17 @@ back to standard interface."
(if expertp
(org-export-dispatch-action
expert-prompt allowed-keys backends options first-key expertp)
- (save-window-excursion
+ ;; At first call, create frame layout in order to display menu.
+ (unless (get-buffer "*Org Export Dispatcher*")
(delete-other-windows)
- (unwind-protect
- (progn
- (with-current-buffer
- (get-buffer-create "*Org Export Dispatcher*")
- (erase-buffer)
- (save-excursion (insert help)))
- (org-fit-window-to-buffer
- (display-buffer "*Org Export Dispatcher*"))
- (org-export-dispatch-action
- standard-prompt allowed-keys backends options first-key expertp))
- (and (get-buffer "*Org Export Dispatcher*")
- (kill-buffer "*Org Export Dispatcher*")))))))
+ (org-switch-to-buffer-other-window
+ (get-buffer-create "*Org Export Dispatcher*"))
+ (setq cursor-type nil))
+ (with-current-buffer "*Org Export Dispatcher*"
+ (erase-buffer)
+ (insert help))
+ (org-export-dispatch-action
+ standard-prompt allowed-keys backends options first-key expertp))))
(defun org-export-dispatch-action
(prompt allowed-keys backends options first-key expertp)
@@ -4603,6 +4603,8 @@ options as CDR."
;; Ignore non-standard characters (i.e. "M-a") and
;; undefined associations.
((not (memq key allowed-keys))
+ (ding)
+ (unless expertp (message "Invalid key") (sit-for 1))
(org-export-dispatch-ui options first-key expertp))
;; q key at first level aborts export. At second
;; level, cancel first key instead.