From bf56eba935f73c1803ea9964671a36bccb4efa21 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Mon, 1 Dec 2014 01:00:06 +0000 Subject: Define and use sx-question-mode-display-buffer-function --- sx-question-mode.el | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'sx-question-mode.el') diff --git a/sx-question-mode.el b/sx-question-mode.el index 01a980a..6423ad8 100644 --- a/sx-question-mode.el +++ b/sx-question-mode.el @@ -30,6 +30,14 @@ ;;; Displaying a question +(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-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--window nil "Window where the content of questions is displayed.") @@ -71,7 +79,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) -- cgit v1.2.3 From 867224348a5d979af7a965c9bbe476dea3c3638f Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Mon, 1 Dec 2014 01:46:34 +0000 Subject: Refactor sx-question-mode--window into a function. It made little sense the way it was, and it was complicated. Now that it's a function, it's always up to date. --- sx-question-mode.el | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'sx-question-mode.el') diff --git a/sx-question-mode.el b/sx-question-mode.el index 6423ad8..bee3e29 100644 --- a/sx-question-mode.el +++ b/sx-question-mode.el @@ -38,15 +38,20 @@ This is not used when navigating the question list with `\\[sx-question-list-vie :type 'function :group 'sx-question-mode) -(defvar sx-question-mode--window nil - "Window where the content of questions is displayed.") - (defvar sx-question-mode--buffer nil "Buffer being used to display questions.") (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. -- cgit v1.2.3