Cuando abro un REPL usando C-c C-l
, la ventana que crea parece especial (fondo más oscuro, sale del proceso cuando se cierra, ...).
También siempre parece dividir mi pantalla horizontalmente, lo que a veces es útil, a veces molesto. Sin saber lo suficiente sobre emacs, parece que no puedo encontrar una manera de mover esta ventana hacia el lado derecho.
Me las arreglé para ponerlo en otro marco usando los comandos switch-buffer, pero no puedo cerrar el original porque mata el proceso y todos los marcos que tienen el búfer en él.
¿Podría darme sugerencias sobre cómo manejar este búfer especial y cómo se muestra? :(
¡Gracias!
Mmm, aquí hay muchas partes móviles. No estoy seguro de a qué tiene C-c C-l
vinculado. Si no estás usando el comando +eval/repl
para iniciar la respuesta de un modo, Doom tratará el búfer de respuesta como un búfer especial común.
En ese caso, las dos variables relevantes son shackle-default-alignment
y shackle-rules
, que le dicen a Emacs cómo manejar las ventanas que cumplen con ciertos criterios.
Al final de shackle-rules
hay dos reglas generales:
(set! :popup
'("^\\*" :regexp t :noselect t :autokill t)
'("^ \\*" :regexp t :size 12 :noselect t :autokill t :autoclose t))))
Los dos problemas aquí son :autokill t
(que asegura que un búfer y sus procesos asociados se eliminen juntos) y como no hay :align
especificado, recurre a shackle-default-alignment
, que por defecto es 'below
.
Entonces, ¿cómo solucionamos esto?
Aquí hay tres formas:
Simplemente especifique una regla primordial para su respuesta en particular:
(set! :popup "*my-repl-buffer*" :align 'left :noesc t)
Consulte M-x doom/describe-setting RET :popup
para obtener más detalles.
Habilite el modo menor +eval-repl-mode
en su respuesta:
(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Encontrará esta regla emergente en modules / feature / eval / config.el :
(set! :popup
'(:custom (lambda (b &rest _) (buffer-local-value '+eval-repl-mode b)))
:size 16 :noesc t)
Vincula C-c C-l
a +eval/repl
y utilízalo en su lugar para invocar tu respuesta. La mayoría de los modos tienen valores predeterminados razonables. Si no abre la respuesta que desea, puede cambiar la asociación major-mode-> repl con la configuración :repl
, por ejemplo
(set! :repl 'python-mode #'+python/repl)
La función: repl wants debería devolver un búfer que contenga el repl.
¡Espero que ayude!
Oh, me olvidé de mencionar: actualmente no hay forma de mover una ventana emergente en vivo (nunca lo he necesitado). Eso es algo que intentaré arreglar.
¡Esa parece toda la ayuda que necesitaba!
Para ser más específico, en realidad estaba hablando del intero
REPL, iniciado por un comando llamado intero-repl-load
. No sé qué mecanismos utiliza entonces.
Terminé yendo con:
(set! :popup "^\\*intero:" :regexp t :align 'right :size 80)
en mi modules/private/ptival/init.el
, ¡funcionó como un encanto!
¡Gracias por tomarte el tiempo de explicarme todo esto! ¡No creo que me hubiera dado cuenta de esto por mi cuenta en un período de tiempo razonable! 👍
Comentario más útil
Mmm, aquí hay muchas partes móviles. No estoy seguro de a qué tiene
C-c C-l
vinculado. Si no estás usando el comando+eval/repl
para iniciar la respuesta de un modo, Doom tratará el búfer de respuesta como un búfer especial común.En ese caso, las dos variables relevantes son
shackle-default-alignment
yshackle-rules
, que le dicen a Emacs cómo manejar las ventanas que cumplen con ciertos criterios.Al final de
shackle-rules
hay dos reglas generales:Los dos problemas aquí son
:autokill t
(que asegura que un búfer y sus procesos asociados se eliminen juntos) y como no hay:align
especificado, recurre ashackle-default-alignment
, que por defecto es'below
.Entonces, ¿cómo solucionamos esto?
Aquí hay tres formas:
Simplemente especifique una regla primordial para su respuesta en particular:
Consulte
M-x doom/describe-setting RET :popup
para obtener más detalles.Habilite el modo menor
+eval-repl-mode
en su respuesta:(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Encontrará esta regla emergente en modules / feature / eval / config.el :
Vincula
C-c C-l
a+eval/repl
y utilízalo en su lugar para invocar tu respuesta. La mayoría de los modos tienen valores predeterminados razonables. Si no abre la respuesta que desea, puede cambiar la asociación major-mode-> repl con la configuración:repl
, por ejemplo(set! :repl 'python-mode #'+python/repl)
La función: repl wants debería devolver un búfer que contenga el repl.
¡Espero que ayude!