Когда я открываю REPL с помощью C-c C-l
, окно, которое он создает, кажется особенным (более темный фон, завершает процесс при закрытии, ...).
Также всегда кажется, что мой экран разбивается по горизонтали, что иногда полезно, иногда раздражает. Не зная достаточно о emacs, я не могу найти способ переместить это окно на правую сторону.
Мне удалось получить его в другом кадре с помощью команд switch-buffer, но я не могу закрыть исходный, потому что он убивает процесс и все кадры, в которых есть буфер.
Не могли бы вы подсказать, как работать с этим специальным буфером и как он отображается? :(
Спасибо!
Хм, здесь много движущихся частей. Я не уверен, к чему у вас привязан C-c C-l
. Если вы не используете команду +eval/repl
для запуска реплики режима, Doom будет рассматривать буфер реплики как обычный специальный буфер.
В этом случае двумя соответствующими переменными являются shackle-default-alignment
и shackle-rules
, которые сообщают Emacs, как работать с окнами, удовлетворяющими определенным критериям.
В конце shackle-rules
есть два универсальных правила:
(set! :popup
'("^\\*" :regexp t :noselect t :autokill t)
'("^ \\*" :regexp t :size 12 :noselect t :autokill t :autoclose t))))
Здесь две проблемы: :autokill t
(что обеспечивает одновременное уничтожение буфера и связанных с ним процессов), и поскольку :align
указано, он обращается к shackle-default-alignment
, которое по умолчанию 'below
.
Итак, как нам это исправить?
Вот три способа:
Просто укажите приоритетное правило для вашего ответа, в частности:
(set! :popup "*my-repl-buffer*" :align 'left :noesc t)
Подробнее см. M-x doom/describe-setting RET :popup
.
Включите второстепенный режим +eval-repl-mode
в своем ответе:
(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Вы найдете это правило всплывающего окна в modules / feature / eval / config.el :
(set! :popup
'(:custom (lambda (b &rest _) (buffer-local-value '+eval-repl-mode b)))
:size 16 :noesc t)
Свяжите C-c C-l
с +eval/repl
и используйте его вместо этого для вызова своего ответа. Большинство режимов имеют разумные значения по умолчанию. Если он не открывает нужный ответ, вы можете изменить ассоциацию major-mode-> repl с помощью параметра :repl
, например
(set! :repl 'python-mode #'+python/repl)
Функция: repl Want должна возвращать буфер, содержащий реплику.
Надеюсь, это поможет!
О, я забыл упомянуть: в настоящее время нет возможности переместить всплывающее окно в реальном времени (мне никогда не приходилось). Я постараюсь это исправить.
Похоже, это вся помощь, в которой я нуждался!
Чтобы быть более конкретным, я на самом деле говорил о intero
REPL, запущенном командой под названием intero-repl-load
. Я тогда не знаю, какие механизмы он использует.
Я закончил с:
(set! :popup "^\\*intero:" :regexp t :align 'right :size 80)
в моем modules/private/ptival/init.el
, работал как шарм!
Спасибо, что нашли время мне все это объяснить! Не думаю, что смог бы разобраться в этом самостоятельно за сколько-нибудь разумное время! 👍
Самый полезный комментарий
Хм, здесь много движущихся частей. Я не уверен, к чему у вас привязан
C-c C-l
. Если вы не используете команду+eval/repl
для запуска реплики режима, Doom будет рассматривать буфер реплики как обычный специальный буфер.В этом случае двумя соответствующими переменными являются
shackle-default-alignment
иshackle-rules
, которые сообщают Emacs, как работать с окнами, удовлетворяющими определенным критериям.В конце
shackle-rules
есть два универсальных правила:Здесь две проблемы:
:autokill t
(что обеспечивает одновременное уничтожение буфера и связанных с ним процессов), и поскольку:align
указано, он обращается кshackle-default-alignment
, которое по умолчанию'below
.Итак, как нам это исправить?
Вот три способа:
Просто укажите приоритетное правило для вашего ответа, в частности:
Подробнее см.
M-x doom/describe-setting RET :popup
.Включите второстепенный режим
+eval-repl-mode
в своем ответе:(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Вы найдете это правило всплывающего окна в modules / feature / eval / config.el :
Свяжите
C-c C-l
с+eval/repl
и используйте его вместо этого для вызова своего ответа. Большинство режимов имеют разумные значения по умолчанию. Если он не открывает нужный ответ, вы можете изменить ассоциацию major-mode-> repl с помощью параметра:repl
, например(set! :repl 'python-mode #'+python/repl)
Функция: repl Want должна возвращать буфер, содержащий реплику.
Надеюсь, это поможет!