Lorsque j'ouvre un REPL en utilisant C-c C-l
, la fenêtre qu'il crée semble spéciale (arrière-plan plus sombre, quitte le processus lorsqu'il est fermé, ...).
Il semble également toujours diviser mon écran horizontalement, ce qui est parfois utile, parfois ennuyeux. Ne connaissant pas assez Emacs, je n'arrive pas à trouver un moyen de déplacer cette fenêtre vers la droite.
J'ai réussi à l'obtenir dans une autre image en utilisant les commandes switch-buffer, mais je ne peux pas fermer l'original car cela tue le processus et toutes les images qui contiennent le tampon.
Pourriez-vous me donner des indications sur la façon de gérer ce tampon spécial et comment il s'affiche ? :(
Merci!
Hmm, il y a beaucoup de pièces mobiles ici. Je ne sais pas à quoi vous avez lié C-c C-l
. Si vous n'utilisez pas la commande +eval/repl
pour démarrer le repl d'un mode, alors Doom traitera le tampon repl comme un tampon spécial commun.
Dans ce cas, les deux variables pertinentes sont shackle-default-alignment
et shackle-rules
, qui indiquent à Emacs comment gérer les fenêtres répondant à certains critères.
À la fin de shackle-rules
il y a deux règles fourre-tout :
(set! :popup
'("^\\*" :regexp t :noselect t :autokill t)
'("^ \\*" :regexp t :size 12 :noselect t :autokill t :autoclose t))))
Les deux problèmes ici sont :autokill t
(qui garantit qu'un tampon et ses processus associés sont tués ensemble) et comme il n'y a pas de :align
spécifié, il recourt à shackle-default-alignment
, qui est par défaut 'below
.
Alors, comment réparons-nous cela?
Voici trois façons :
Spécifiez simplement une règle dérogatoire pour votre repl en particulier :
(set! :popup "*my-repl-buffer*" :align 'left :noesc t)
Voir M-x doom/describe-setting RET :popup
pour plus de détails.
Activez le mode mineur +eval-repl-mode
dans votre repl :
(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Vous trouverez cette règle contextuelle dans modules/feature/eval/config.el :
(set! :popup
'(:custom (lambda (b &rest _) (buffer-local-value '+eval-repl-mode b)))
:size 16 :noesc t)
Liez C-c C-l
à +eval/repl
et utilisez-le à la place pour invoquer votre repl. La plupart des modes ont des valeurs par défaut raisonnables. S'il n'ouvre pas le repl que vous voulez, vous pouvez modifier l'association major-mode->repl avec le paramètre :repl
, par exemple
(set! :repl 'python-mode #'+python/repl)
La fonction :repl want doit retourner un tampon contenant le repl.
J'espère que cela pourra aider!
Oh, j'ai oublié de mentionner : il n'y a actuellement aucun moyen de déplacer une fenêtre contextuelle en direct (je n'en ai jamais eu besoin). C'est quelque chose que je vais essayer de corriger.
Cela semble être toute l'aide dont j'avais besoin !
Pour être plus précis, je parlais en fait du intero
REPL, lancé par une commande appelée intero-repl-load
. Je ne sais pas quels mécanismes il utilise alors.
J'ai fini par y aller avec :
(set! :popup "^\\*intero:" :regexp t :align 'right :size 80)
dans mon modules/private/ptival/init.el
, a fonctionné comme un charme !
Merci d'avoir pris le temps de m'expliquer tout ça ! Je ne pense pas que j'aurais compris cela tout seul dans un laps de temps raisonnable ! ??
Commentaire le plus utile
Hmm, il y a beaucoup de pièces mobiles ici. Je ne sais pas à quoi vous avez lié
C-c C-l
. Si vous n'utilisez pas la commande+eval/repl
pour démarrer le repl d'un mode, alors Doom traitera le tampon repl comme un tampon spécial commun.Dans ce cas, les deux variables pertinentes sont
shackle-default-alignment
etshackle-rules
, qui indiquent à Emacs comment gérer les fenêtres répondant à certains critères.À la fin de
shackle-rules
il y a deux règles fourre-tout :Les deux problèmes ici sont
:autokill t
(qui garantit qu'un tampon et ses processus associés sont tués ensemble) et comme il n'y a pas de:align
spécifié, il recourt àshackle-default-alignment
, qui est par défaut'below
.Alors, comment réparons-nous cela?
Voici trois façons :
Spécifiez simplement une règle dérogatoire pour votre repl en particulier :
Voir
M-x doom/describe-setting RET :popup
pour plus de détails.Activez le mode mineur
+eval-repl-mode
dans votre repl :(add-hook 'inferior-python-mode-hook #'+eval-repl-mode)
Vous trouverez cette règle contextuelle dans modules/feature/eval/config.el :
Liez
C-c C-l
à+eval/repl
et utilisez-le à la place pour invoquer votre repl. La plupart des modes ont des valeurs par défaut raisonnables. S'il n'ouvre pas le repl que vous voulez, vous pouvez modifier l'association major-mode->repl avec le paramètre:repl
, par exemple(set! :repl 'python-mode #'+python/repl)
La fonction :repl want doit retourner un tampon contenant le repl.
J'espère que cela pourra aider!