How can I modify org-capture's behavior and make it place the newly opened buffer, after selecting a template, in a new vertically split window on Emacs? More precisely, how to make capture's template window be placed below (split-window-below) current focused or leftmost window?
This is a complicated subject (which I don't understand completely - caveat emptor!). The problem is that there is a long conceptual distance between org-capture
and the function that actually does the window splitting, a function called split-window-sensibly
. So there are many places where you could conceivably interject a change in the behavior, but the trouble is that whatever you do that way might break a lot of other things that have nothing to do with capture.
The doc string for split-window-sensibly
(do C-h f split-window-sensibly RET
to read it) does mention two variables however:
By default
display-buffer
routines call this function to split the largest or least recently used window. To change the default customize the optionsplit-window-preferred-function
.
You can enforce this function to not split WINDOW horizontally, by setting (or binding) the variable
split-width-threshold
to nil. If, in addition, you setsplit-height-threshold
to zero, chances increase that this function does split WINDOW vertically.
In order to not split WINDOW vertically, set (or bind) the variable
split-height-threshold
to nil. Additionally, you can set `split-width-threshold' to zero to make a horizontal split more likely to occur.
So I would recommend that you define your own org-capture function that sets these variables using a let-bind before calling the "real" org-capture
:
(defun my-org-capture ()
(interactive)
(let ((split-width-threshold nil)
(split-height-threshold 0))
(org-capture)))
and use it instead of the "real" one. E.g. you can bind it to what the Org mode manual recommends by doing
(global-set-key (kbd "C-c c") 'my-org-capture)
(or modify whatever key binding you use).
The advantage of this is that it only modifies how you call org-capture
, so there is virtually no chance of breaking anything else. And you can easily undo the change if necessary.