diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-10-11 21:30:12 +0200 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-10-11 21:32:21 +0200 |
commit | 0a99cf72492ad28b673627227b8f7fda64751122 (patch) | |
tree | 23446dbe12b88fe5f5d177aa5cdf292025fd627a | |
parent | c23dea156337bdfdc0da5f88259ff5ae397eb7c2 (diff) | |
download | 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.el | 50 |
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. |