Frage

Für meinen Hauptjob lebe ich in Emacs.Vollkommen.Außerdem bin ich ziemlich auf CScope angewiesen, um Dinge im Code zu finden.

Normalerweise habe ich 2 Fenster in einem Split (C-x 3):Alternativtext http://bitthicket.com/files/emacs-2split.JPG

Und ich verwende das rechte Fenster für Codepuffer und das linke Fenster für den CScope-Suchpuffer.Wenn Sie eine CScope-Suche durchführen und ein Ergebnis auswählen, wird das rechte Fenster automatisch aktualisiert, um den Puffer anzuzeigen, auf den sich das Ergebnis bezieht.Das ist alles schön und gut, außer dass ich dadurch meinen Platz in einem anderen Puffer verliere, den ich studiert habe.Manchmal ist das kein Problem, denn [C-s u] bringt mich dorthin zurück, wo ich war.

Was jedoch besser wäre, wären drei geteilte Fenster wie dieses ([C-x 2] im linken Fenster):Alternativtext http://bitthicket.com/files/emacs-3split.jpg

Das untere linke Fenster soll den CScope-Suchpuffer enthalten und das obere linke Fenster soll der einzige Puffer sein, den CScope jemals aktualisiert.Auf diese Weise kann ich meine CScope-Suchen sehen und im Code navigieren, ohne den Puffer zu verlieren, auf den ich mich konzentriere.

Weiß jemand, wie ich das machen kann?

War es hilfreich?

Lösung

Fügen Sie dies in Ihre .emacs-Datei ein:

;; Toggle window dedication

(defun toggle-window-dedicated ()

"Toggle whether the current active window is dedicated or not"

(interactive)

(message 

 (if (let (window (get-buffer-window (current-buffer)))

       (set-window-dedicated-p window 

        (not (window-dedicated-p window))))

    "Window '%s' is dedicated"

    "Window '%s' is normal")

 (current-buffer)))

Binden Sie es dann an eine Taste – ich verwende die Pause-Taste:

(global-set-key [pause] 'toggle-window-dedicated)

Und verwenden Sie es dann, um das Fenster zu „widmen“, das Sie sperren möchten.dann kann cscope Dateien aus seinem Ergebnisfenster nur in einem ANDEREN Fenster öffnen.Wirkt wunderbar.Ich verwende es speziell für genau diesen Zweck – eine Quelldatei immer auf dem Bildschirm zu belassen, während ich cscope in einem zweiten Puffer/Fenster verwende und das Betrachten von cscope zu einem dritten Ergebnis führt.

Andere Tipps

Nun, ich habe beschlossen, keine Reputationshure zu sein und die Antwort selbst zu finden.Ich habe mir cscope.el angesehen, wie im Emacs-Wiki gezeigt, sowie xcscope.el, das im cscope RPM-Paket auf RHEL enthalten ist.

Keines von beiden scheint eine Möglichkeit zu bieten, das zu tun, was ich will.Der Weg besteht wahrscheinlich darin, das ELisp zu bearbeiten, indem man eine Paketvariable wie z. B. hinzufügt *browse-buffer* oder so und initialisieren Sie einfach diese Variable, wenn sie nicht bereits beim ersten Mal initialisiert wurde, wenn der Benutzer dies tut [C-c C-s g] oder was auch immer, und der resultierende Code wird immer angezeigt *browse-buffer*.Dann kann der Benutzer das eingeben *browse-buffer* wo immer er es will.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top