Q: how can I control where the org
todo keywords buffer appears?
Entering a todo
keyword with C-c C-t
(org-todo
) opens a new
buffer with the keyword options and then closes it again after I
select one. So far, so good. However, it takes over another
window to do so, which is less good, especially since it really
only needs to display a line or two with the keywords.
So, with the following layout, hitting C-c C-t
while in the left
window (some-org-buffer
) will open *Org todo*
in the right
window:
+---------------------+---------------------+
| | |
| | |
| | |
| | |
| some-org-buffer | some-other-buffer |
| | |
| | |
| | |
| | |
+---------------------+---------------------+
Instead, I would like to have a small window pop up as a vertical split, as below:
+---------------------+---------------------+
| | |
| | |
| some-org-buffer | some-other-buffer |
| | |
| | |
+---------------------+ |
| | |
| *Org todo* | |
| | |
+---------------------+---------------------+
Cribbing from
this answer, I wrote a
function to put in the display-buffer-alist
:
(defun org-todo-position (buffer alist)
(let ((win (car (cl-delete-if-not
(lambda (window)
(with-current-buffer (window-buffer window)
(memq major-mode
'(org-mode org-agenda-mode))))
(window-list)))))
(when win
(let ((new (split-window win -5 'below)))
(set-window-buffer new buffer)
new))))
(add-to-list 'display-buffer-alist
(list " \\*Org todo\\*" #'dan-org-todo-position))
However, that fails to work. Sigh. What have I done wrong with
the display-buffer-alist
? More to the point, how do I get my
todo
keyword buffer to pop up where I want it?