Doom-emacs: Comment déplacer une fenêtre REPL ?

Créé le 8 août 2017  ·  3Commentaires  ·  Source: hlissner/doom-emacs

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!

discussion

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 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 :

  1. 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.

  2. 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)
    
  3. 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!

Tous les 3 commentaires

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 :

  1. 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.

  2. 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)
    
  3. 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 ! ??

Cette page vous a été utile?
0 / 5 - 0 notes