2009-11-05 8 views
26

Nicht so lange Emacs verwenden (v23, Windows) und gerade entdeckt M-x ediff. Fantastisch. Obwohl ich nicht daran interessiert bin, dass es seine Hilfe/Navigation in einem separaten Frame/Fenster öffnet, bedeutet das, dass, wenn ich den Fokus auf dieses Fenster verliere, die einzelnen Tastenkürzel nicht funktionieren.Gibt es eine Möglichkeit, Ediff zu veranlassen, seine Navigationsschnittstelle nicht in einem externen Fenster zu öffnen?

Zum Beispiel, sobald ich drücke? um das Fenster zu erweitern, verschiebt es sich über mein aktuelles Fenster, also muss ich meine Maus nehmen und auf einen anderen Bildschirm bewegen. Wenn ich dann den Fokus auf dieses Fenster verliere und p/n/j oder irgendeinen anderen Schlüssel zum Arbeiten mit dem diff drücke, fügt es es in mein Dokument ein. Also muss ich rückgängig machen, Maus greifen, auf anderes Fenster fokussieren und wiederholen.

Gibt es eine Möglichkeit, diese Optionen so zu konfigurieren, dass sie stattdessen in einem Split angezeigt werden?

+0

Hmm, vielleicht bin ich ungeduldig und habe diese Frage ein bisschen zu früh gestellt. Wenn das Fenster nicht erweitert wird und in seinem Anfangszustand in der oberen rechten Ecke des Bildschirms bleibt, ist es überhaupt nicht aufdringlich. – Rob

+0

Einverstanden - es ist nicht so schlimm. Drücken Sie auch '?' wieder und es schrumpft zurück. Und willkommen bei Emacs. So einfach zu sein war für mich im Laufe der Jahre ein Geldmacher. –

Antwort

27

Ich wusste nicht, wie es geht, aber es ist normalerweise leicht, mit Emacs zu lernen. Zuerst fragte ich über ediff Anpassungen:

M-x customize-apropos 
ediff 

ich dort sah, ist etwas Ediff Fenster-Setup-Funktion genannt, die die Werte Multi Frame nimmt, Single Frame oder Andere Funktion. Mine wurde auf Multi Frame eingestellt und in Einzelbild geändert und für zukünftige Sitzungen gespeichert. Und Voila! wie sie irgendwo sagen.

+0

'M-x customize-apropos' hat nichts gefunden für ediff in Emacs 25.1. 'M-x anpassen-Gruppe RET ediff RET' tat. – GergelyPolonkai

19

einfach:

(setq ediff-window-setup-function 'ediff-setup-windows-plain) 

M-x describe-variable ediff-Fenster-Setup-Funktion wird erleuchten Sie weiter.

Für meine ediff Anpassung Referenz ist ziemlich einfach:

(if (locate-library "ediff") 
    (progn 
     (autoload 'ediff-files "ediff") 
     (autoload 'ediff-buffers "ediff") 

     (eval-after-load "ediff" '(progn 
       (message "doing ediff customisation") 
       (setq diff-switches    "-u" 
       ediff-custom-diff-options "-U3" 
       ediff-split-window-function 'split-window-horizontally 
       ediff-window-setup-function 'ediff-setup-windows-plain) 

       (add-hook 'ediff-startup-hook 'ediff-toggle-wide-display) 
       (add-hook 'ediff-cleanup-hook 'ediff-toggle-wide-display) 
       (add-hook 'ediff-suspend-hook 'ediff-toggle-wide-display))))) 
13

Von Kapitel Window and Frame Configuration in Handbuch Ediff Benutzer:

die folgende Variable steuert, wie Fenster eingerichtet sind:

Das Multiframe-Setup erfolgt über die ediff-setup-windows-multiframe -Funktion, die standardmäßig auf Windowing-Displays angezeigt wird. Die Ebene Setup ein, wo alle Fenster immer in ein Rahmen ist, erfolgt durch ediff-setup-windows-plain, die die Standardeinstellung auf einem nicht-Windowing Display (oder in einem xterm Fenster) ist. In der Tat, unter Emacs, können Sie frei zwischen diesen beiden Einstellungen umschalten, indem die Ausführung den Befehl ediff-toggle-multiframe Minipuffer des Menubar verwenden.

6
(custom-set-variables  
    ... 
'(ediff-window-setup-function (quote ediff-setup-windows-plain)) 
    ...) 

Nicht, dass Sie die Variable auf diese Weise festgelegt würde, aber es ermöglicht es Ihnen, diese Dinge zu wissen:

  • Die Variable, die Sie daran interessiert sind, ist ediff-window-setup-function
  • Der Wert, den es braucht, um eingestellt sein ist ediff-setup-windows-plain
  • Sie können die Variable von anpassen: M-x customize-group RET ediff-window

    konfigurieren

    Ediff-Fenster Setup-Funktion: Menü Single Frame

2

Hinweis: Sie können mit der Maus vermeiden, indem Sie M-x andere Rahmen zum ediff Kontrollfenster zurück zu gehen. Auch gefunden auf C-x 5 o.

0

Dies funktioniert nicht mehr im Jahr 2017 Emacs (24.5, 25.2, 2017) auf Windows

(setq ediff-window-setup-function 'ediff-setup-windows-plain) ; stopped working 

Selbst

ediff-toggle-multiframe ; no longer has any effect now. 

Es funktioniert in emacs22.3 auf Fenster, so dass ich älter verwenden Emacs von 2008!

Verwandte Themen