Doom-emacs: Wie kann man ein REPL-Fenster verschieben?

Erstellt am 8. Aug. 2017  ·  3Kommentare  ·  Quelle: hlissner/doom-emacs

Wenn ich eine REPL mit C-c C-l öffne, erscheint das erzeugte Fenster etwas Besonderes (dunkler Hintergrund, beendet den Prozess beim Schließen, ...).

Es scheint auch immer meinen Bildschirm horizontal zu teilen, was manchmal nützlich, manchmal nervig ist. Da ich nicht genug über Emacs weiß, kann ich anscheinend keine Möglichkeit finden, dieses Fenster auf die rechte Seite zu verschieben.
Ich habe es geschafft, es mit den Switch-Buffer-Befehlen in einen anderen Frame zu bekommen, aber ich kann das Original nicht schließen, weil es den Prozess und alle Frames beendet, die den Puffer enthalten.

Können Sie mir Hinweise geben, wie mit diesem speziellen Puffer umzugehen ist und wie er angezeigt wird? :(

Vielen Dank!

discussion

Hilfreichster Kommentar

Hmm, hier gibt es viele bewegliche Teile. Ich bin mir nicht sicher, woran Sie C-c C-l gebunden haben. Wenn Sie den Befehl +eval/repl nicht verwenden, um die Repl eines Modus zu starten, behandelt Doom den Repl-Puffer wie einen gewöhnlichen Spezialpuffer.

In diesem Fall sind die beiden relevanten Variablen shackle-default-alignment und shackle-rules , die Emacs mitteilen, wie mit Fenstern umzugehen ist, die bestimmte Kriterien erfüllen.

Am Ende von shackle-rules gibt es zwei Auffangregeln:

(set! :popup 
  '("^\\*"  :regexp t :noselect t :autokill t)
  '("^ \\*" :regexp t :size 12 :noselect t :autokill t :autoclose t))))

Die beiden Probleme hier sind :autokill t (was sicherstellt, dass ein Puffer und die zugehörigen Prozesse zusammen beendet werden) und da kein :align angegeben ist, wird auf shackle-default-alignment , der standardmäßig auf gesetzt ist 'below .

Also, wie können wir das beheben?

Hier sind drei Möglichkeiten:

  1. Geben Sie einfach eine überschreibende Regel insbesondere für Ihren Vertreter an:

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

    Weitere Informationen finden Sie unter M-x doom/describe-setting RET :popup .

  2. Aktivieren Sie den Nebenmodus +eval-repl-mode in Ihrer Antwort:

    (add-hook 'inferior-python-mode-hook #'+eval-repl-mode)

    Sie finden diese Popup-Regel in modules/feature/eval/config.el :

    (set! :popup
     '(:custom (lambda (b &rest _) (buffer-local-value '+eval-repl-mode b)))
     :size 16 :noesc t)
    
  3. Binden Sie C-c C-l an +eval/repl und verwenden Sie dies stattdessen, um Ihre Repl. Die meisten Modi haben vernünftige Voreinstellungen. Wenn die gewünschte Replik nicht geöffnet wird, können Sie die Zuordnung major-mode->repl mit der Einstellung :repl ändern, z

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

    Die Funktion :repl will sollte einen Puffer zurückgeben, der das repl enthält.


Ich hoffe, das hilft!

Alle 3 Kommentare

Hmm, hier gibt es viele bewegliche Teile. Ich bin mir nicht sicher, woran Sie C-c C-l gebunden haben. Wenn Sie den Befehl +eval/repl nicht verwenden, um die Repl eines Modus zu starten, behandelt Doom den Repl-Puffer wie einen gewöhnlichen Spezialpuffer.

In diesem Fall sind die beiden relevanten Variablen shackle-default-alignment und shackle-rules , die Emacs mitteilen, wie mit Fenstern umzugehen ist, die bestimmte Kriterien erfüllen.

Am Ende von shackle-rules gibt es zwei Auffangregeln:

(set! :popup 
  '("^\\*"  :regexp t :noselect t :autokill t)
  '("^ \\*" :regexp t :size 12 :noselect t :autokill t :autoclose t))))

Die beiden Probleme hier sind :autokill t (was sicherstellt, dass ein Puffer und die zugehörigen Prozesse zusammen beendet werden) und da kein :align angegeben ist, wird auf shackle-default-alignment , der standardmäßig auf gesetzt ist 'below .

Also, wie können wir das beheben?

Hier sind drei Möglichkeiten:

  1. Geben Sie einfach eine überschreibende Regel insbesondere für Ihren Vertreter an:

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

    Weitere Informationen finden Sie unter M-x doom/describe-setting RET :popup .

  2. Aktivieren Sie den Nebenmodus +eval-repl-mode in Ihrer Antwort:

    (add-hook 'inferior-python-mode-hook #'+eval-repl-mode)

    Sie finden diese Popup-Regel in modules/feature/eval/config.el :

    (set! :popup
     '(:custom (lambda (b &rest _) (buffer-local-value '+eval-repl-mode b)))
     :size 16 :noesc t)
    
  3. Binden Sie C-c C-l an +eval/repl und verwenden Sie dies stattdessen, um Ihre Repl. Die meisten Modi haben vernünftige Voreinstellungen. Wenn die gewünschte Replik nicht geöffnet wird, können Sie die Zuordnung major-mode->repl mit der Einstellung :repl ändern, z

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

    Die Funktion :repl will sollte einen Puffer zurückgeben, der das repl enthält.


Ich hoffe, das hilft!

Oh, ich habe vergessen zu erwähnen: Es gibt derzeit keine Möglichkeit, ein Live-Popup-Fenster zu verschieben (das war noch nie nötig). Das ist etwas, was ich versuchen werde zu beheben.

Das scheint die ganze Hilfe zu sein, die ich brauchte!

Um genauer zu sein, sprach ich eigentlich von der intero REPL, die von einem Befehl namens intero-repl-load gestartet wird. Ich weiß nicht, welche Mechanismen es dann verwendet.

Am Ende ging ich mit:

(set! :popup "^\\*intero:" :regexp t :align 'right :size 80)

in meinem modules/private/ptival/init.el , funktionierte wie ein Zauber!

Danke, dass Sie sich die Zeit genommen haben, mir das alles zu erklären! Ich glaube nicht, dass ich das in angemessener Zeit alleine herausgefunden hätte! 👍

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen