Как сделать открытые буферы org-capture в новом вертикальном разделенном окне в emacs? - PullRequest
0 голосов
/ 07 мая 2020

Как я могу изменить поведение org-capture и заставить его разместить вновь открытый буфер после выбора шаблона в новом вертикально разделенном окне в Emacs? Точнее, как сделать так, чтобы окно шаблона захвата располагалось ниже (разделенное окно ниже) текущего сфокусированного или самого левого окна?

1 Ответ

0 голосов
/ 10 мая 2020

Это сложный предмет (который я не совсем понимаю - будьте осторожны, покупатель!). Проблема в том, что существует большое концептуальное расстояние между org-capture и функцией, которая фактически выполняет разделение окна, функцией с именем split-window-sensibly. Итак, есть много мест, где вы могли бы предположительно вмешаться в изменение поведения, но проблема в том, что все, что вы делаете таким образом, может нарушить множество других вещей, которые не имеют ничего общего с захватом.

Do c строка для split-window-sensibly (do C-h f split-window-sensibly RET, чтобы прочитать ее) упоминает две переменные, однако:

По умолчанию процедуры display-buffer вызывают эту функцию для разделения самого большого или наименее использованного окна. Чтобы изменить значение по умолчанию, настройте параметр split-window-preferred-function.

. Вы можете заставить эту функцию не разбивать WINDOW по горизонтали, установив (или привязав) переменную split-width-threshold к нулю. Если, кроме того, вы установите split-height-threshold на ноль, вероятность того, что эта функция действительно разбивает WINDOW по вертикали, возрастает.

Чтобы не разбивать WINDOW по вертикали, установите (или привяжите) переменную split-height-threshold к nil. Кроме того, вы можете установить для параметра `split-width-threshold 'значение 0, чтобы повысить вероятность горизонтального разделения.

Поэтому я бы рекомендовал вам определить свою собственную функцию org-capture, которая устанавливает эти переменные используя let-bind перед вызовом "реального" `org-capture:

(defun my-org-capture ()
  (interactive)
  (let ((split-width-threshold nil)
        (split-height-threshold 0))
     (org-capture)))

и используйте it вместо« реального ». Например, вы можете привязать его к тому, что рекомендует руководство по режиму организации, выполнив

     (global-set-key (kbd "C-c c") 'my-org-capture)

(или изменив любую используемую вами привязку клавиш).

Преимущество этого в том, что это только изменяет способ вызова org-capture, поэтому практически нет шансов сломать что-нибудь еще. И при необходимости вы можете легко отменить изменение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...