Ich möchte den ersten Teil eines Oszilloskops anzeigen, wenn dieser nicht mehr auf dem Bildschirm angezeigt wird.
Beispiel:
namespace a
{
...
--------------------- <- display frame
... |
}* | * when cursor is here display "namespace a" in the minibuffer
--------------------- or on screen
Dies könnte für viele Programmiersprachen funktionieren, aber ich denke hauptsächlich an C ++.
Um ein bisschen mehr zu verdeutlichen und für diejenigen, die VS kennen, möchte ich eine ähnliche Funktion wie für Visual Studio. Wenn Sie den Cursor am Ende eines Bereichs positionieren, wird der Anfang des Bereichs oben im Bearbeitungspuffer angezeigt.
Gibt es diese Funktion bereits irgendwo?
minibuffer
c++
programming
log0
quelle
quelle
Antworten:
Wenn Sie C / C ++ / Java / Emacs Lisp / Python schreiben, macht der Semantic-Sticky-Func-Modus das, was Sie wollen.
HINWEIS : Dies scheint mit CEDET von Git zu funktionieren, nicht mit CEDET, das derzeit in Emacs 24.4 verfügbar ist. So erhalten Sie Emacs von Git:
Und laden Sie CEDET zuerst über alles in Ihre Init-Datei:
Bei Aktivierung zeigt dieser Modus an, dass sich der Funktionspunkt derzeit in der ersten Zeile des aktuellen Puffers befindet. Dies ist nützlich, wenn Sie eine sehr lange Funktion haben, die sich über mehr als einen Bildschirm erstreckt, und nicht nach oben scrollen müssen, um den Funktionsnamen zu lesen, und dann nach unten zur ursprünglichen Position scrollen müssen.
Es zeigt die vollständige Funktionsoberfläche (Rückgabetyp, Funktionsname und Parameter) an, nicht nur den Funktionsnamen.
Fügen Sie diesen Code in Ihre Init-Datei ein, um ihn zu aktivieren:
UPDATE : Eines der Probleme mit current
semantic-stickyfunc-mode
ist, dass nicht alle Parameter angezeigt werden, die auf mehrere Zeilen verteilt sind. Um dieses Problem zu lösen, habe ich das Paket stickyfunc-boost erstellt .DEMO :
Hier ist eine Demo in C:
Hier ist eine Demo in Emacs Lisp:
UPDATE : Alternativ können Sie helm-semantic-or-imenu verwenden . Wenn Sie sich in einer Funktion befinden und den Befehl ausführen, befindet sich der Cursor direkt auf der Funktion in der Liste, sodass Sie immer die vollständige Funktionsoberfläche sehen können. DEMO:
Zuerst
helm-semantic-or-imenu
bewege ich mich zur Funktionhelm-define-key-with-subkeys
und verschiebe dort den Punkt.Dann starte ich
helm-semantic-or-imenu
erneut und binhelm-define-key-with-subkeys
vorausgewählt.Dann bewege ich den Punkt zur Variablen helm-map und führe
helm-semantic-or-imenu
zwei Funktionen erneut aus: helm-next-source und helm-previous-source. Dieses Mal werden anstelle des aktuellen semantischen Tags, in dem ich arbeite (die Helmkarte), die beiden anderen Tags im Helm-Semantik-Puffer angezeigt. Dies liegt daran, dass ich vor dem Ausführen des Befehls ein Präfixargument angegeben habe.Auch diese Demo ist in Emacs Lisp, sie funktioniert auch für C / C ++ und ist flexibler, wenn Sie eine wirklich lange Funktionsoberfläche haben.
quelle
emacs -Q
aber ich erhalte nicht das Verhalten, das Sie beim Surfen beschreiben, zorg.el
.Sie können einschalten,
which-function-mode
indem Sie tunM-x
which-function-mode
RETFügen Sie hinzu, um die Einstellung dauerhaft zu machen
zu Ihrer Init-Datei.
Aus der Dokumentation:
Hinweis : Der Name deutet nicht wirklich darauf hin, aber dies funktioniert nicht nur für "Funktionen", sondern auch für andere Arten von Bereichen. Zum Beispiel in
org-mode
,which-function-mode
Position der Anzeigen des aktuellen Teilbaums.quelle