diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2014-12-02 15:26:28 +0000 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2014-12-02 15:26:28 +0000 |
commit | 07dc04e1e5111fff7f2905a155271edde3ce754c (patch) | |
tree | 54939c415040a6b09292a2c562f586e3a07dbf04 /sx-question-mode.el | |
parent | cc7fd3336e0ee40280d343ba80cb1e89498f725e (diff) | |
parent | 8795a394f90f143239edeabd870bf0767303543d (diff) |
Merge pull request #126 from vermiculus/improve-display-engine
Improve display engine
Diffstat (limited to 'sx-question-mode.el')
-rw-r--r-- | sx-question-mode.el | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/sx-question-mode.el b/sx-question-mode.el index c44519c..91044ff 100644 --- a/sx-question-mode.el +++ b/sx-question-mode.el @@ -30,8 +30,13 @@ ;;; Displaying a question -(defvar sx-question-mode--window nil - "Window where the content of questions is displayed.") +(defcustom sx-question-mode-display-buffer-function #'switch-to-buffer + "Function used to display the question buffer. +Called, for instance, when hitting \\<sx-question-list-mode-map>`\\[sx-question-list-display-question]' on an entry in the +question list. +This is not used when navigating the question list with `\\[sx-question-list-view-next]." + :type 'function + :group 'sx-question-mode) (defvar sx-question-mode--buffer nil "Buffer being used to display questions.") @@ -39,6 +44,14 @@ (defvar sx-question-mode--data nil "The data of the question being displayed.") +(defun sx-question-mode--get-window () + "Return a window displaying a question, or nil." + (car-safe + (cl-member-if + (lambda (x) (with-selected-window x + (derived-mode-p 'sx-question-mode))) + (window-list nil 'never nil)))) + (defun sx-question-mode--display (data &optional window) "Display question given by DATA on WINDOW. If WINDOW is nil, use selected one. @@ -71,7 +84,8 @@ If WINDOW is given, use that to display the buffer." ;; No window, but the buffer is already being displayed somewhere. ((get-buffer-window sx-question-mode--buffer 'visible)) ;; Neither, so we create the window. - (t (switch-to-buffer sx-question-mode--buffer))) + (t (funcall sx-question-mode-display-buffer-function + sx-question-mode--buffer))) sx-question-mode--buffer) |