Doom-emacs: Как можно переместить окно REPL?

Созданный на 8 авг. 2017  ·  3Комментарии  ·  Источник: hlissner/doom-emacs

Когда я открываю REPL с помощью C-c C-l , окно, которое он создает, кажется особенным (более темный фон, завершает процесс при закрытии, ...).

Также всегда кажется, что мой экран разбивается по горизонтали, что иногда полезно, иногда раздражает. Не зная достаточно о emacs, я не могу найти способ переместить это окно на правую сторону.
Мне удалось получить его в другом кадре с помощью команд switch-buffer, но я не могу закрыть исходный, потому что он убивает процесс и все кадры, в которых есть буфер.

Не могли бы вы подсказать, как работать с этим специальным буфером и как он отображается? :(

Спасибо!

discussion

Самый полезный комментарий

Хм, здесь много движущихся частей. Я не уверен, к чему у вас привязан 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 .

Итак, как нам это исправить?

Вот три способа:

  1. Просто укажите приоритетное правило для вашего ответа, в частности:

    (set! :popup "*my-repl-buffer*" :align 'left :noesc t)
    

    Подробнее см. M-x doom/describe-setting RET :popup .

  2. Включите второстепенный режим +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)
    
  3. Свяжите C-c C-l с +eval/repl и используйте его вместо этого для вызова своего ответа. Большинство режимов имеют разумные значения по умолчанию. Если он не открывает нужный ответ, вы можете изменить ассоциацию major-mode-> repl с помощью параметра :repl , например

    (set! :repl 'python-mode #'+python/repl)

    Функция: repl Want должна возвращать буфер, содержащий реплику.


Надеюсь, это поможет!

Все 3 Комментарий

Хм, здесь много движущихся частей. Я не уверен, к чему у вас привязан 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 .

Итак, как нам это исправить?

Вот три способа:

  1. Просто укажите приоритетное правило для вашего ответа, в частности:

    (set! :popup "*my-repl-buffer*" :align 'left :noesc t)
    

    Подробнее см. M-x doom/describe-setting RET :popup .

  2. Включите второстепенный режим +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)
    
  3. Свяжите 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 , работал как шарм!

Спасибо, что нашли время мне все это объяснить! Не думаю, что смог бы разобраться в этом самостоятельно за сколько-нибудь разумное время! 👍

Была ли эта страница полезной?
0 / 5 - 0 рейтинги