Вопрос : как я могу контролировать, где orgпоявляется буфер ключевых слов todo?
Ввод todoключевого слова с помощью C-c C-t( org-todo) открывает новый буфер с параметрами ключевого слова, а затем снова закрывает его после выбора. Все идет нормально. Тем не менее, для этого требуется другое окно, что не очень хорошо, тем более что ему действительно нужно отображать только одну или две строки с ключевыми словами.
Таким образом, при следующей компоновке нажатие C-c C-tв левом окне ( some-org-buffer) откроет *Org todo*в правом окне:
+---------------------+---------------------+
| | |
| | |
| | |
| | |
| some-org-buffer | some-other-buffer |
| | |
| | |
| | |
| | |
+---------------------+---------------------+
Вместо этого я хотел бы, чтобы небольшое окно всплыло как вертикальное разделение, как показано ниже:
+---------------------+---------------------+
| | |
| | |
| some-org-buffer | some-other-buffer |
| | |
| | |
+---------------------+ |
| | |
| *Org todo* | |
| | |
+---------------------+---------------------+
Пользуясь
этим ответом , я написал функцию для добавления в 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))
Однако это не работает. Вздох. Что я сделал не так с display-buffer-alist? Если говорить более конкретно, как я могу получить
todoбуфер ключевых слов, чтобы он появлялся там, где я хочу?
org-switch-to-buffer-other-windowцелой куче других уродливых orgвнутренностей. Смотрите ответ на позорное «решение».
win. Есть ли причина, которую вы не можете просто использовать (selected-window)здесь?
org-switch-to-buffer-other-windowчтобы сделать то, что вы хотите - вы можете создать условие, которое делает все, что вы хотите.