Ich habe einige Probleme mit dem Ruder, daher habe ich mich debug-on-error
bemüht, das Problem zu lokalisieren. Immer wenn das Problem auftritt, wird der *Backtrace*
Puffer wie erwartet angezeigt, aber ich bin immer noch in einem der Hauptmodi des Ruders und kann nicht im Backtrace-Puffer navigieren und normal debuggen.
Der Hauptmodus verwendet immer noch den Minibuffer und scheint auch meine Schlüsselsequenzen zu "stehlen" und mich am Debuggen zu hindern. Wenn ich den helm-mulit-occur
laufenden Vorgang beende, wird der Backtrace-Puffer gelöscht und ich kann das Debuggen nicht fortsetzen.
Gibt es eine Möglichkeit, einen Hauptmodus anzuhalten, während der elisp-Debugger ausgeführt wird, damit ich wie gewohnt debuggen kann?
debug-on-entry
on verwendethelm
(Debug-on-Error wurde nicht ausgelöst, da keine Fehler aufgetreten sind) und kann weiterhin debuggen.helm-multi-occur
und der spezifische Fehler, der einige Zeit nach dem erfolgreichen Ausführen des Helms auftritt, isthelm-interpret-value: Symbol must be a function or a variable
.other-window
macht in diesem Modus nichts und der Minibuffer scheint immer den Fokus zu haben.C-h m
ist dem Befehl zugeordnet,helm-help
aber das manuelle Ausführendescribe-mode
sagt mir, dass ich in binminibuffer-inactive-mode
.Antworten:
Der Befehl
helm-toggle-suspend-update
istC-!
standardmäßig gebunden . Das Ruder wird nicht geschlossen oder das rekursive Update wird beendet, aber der Rudermodus wird vorübergehend weniger "invasiv". Durch das Anhalten von Updates wird verhindert, dass das Ruder alle Tastatur- und Mauseingaben "stiehlt". Auf diese Weise können Sie den Ruderprozess in einem anderen Fenster debuggen.quelle
Es ist nicht möglich, einen Hauptmodus anzuhalten, aber wie in den Kommentaren zu Ihren Fragen vorgeschlagen, sollte es möglich sein, sich von dem Puffer, der den Fehler ausgelöst hat, zum Backtrace-Puffer zu entfernen. Wenn der Modus des Puffers, in dem der Fehler aufgetreten ist, die normalen globalen Bindungen überschreibt, um in einen anderen Puffer zu wechseln , können Sie durch Hinzufügen des Schlüssels explizit zu seiner Keymap möglicherweise wieder einen anderen Puffer auswählen.
Es ist jedoch auch möglich, dass der Modus Benutzereingaben auf schickere Weise liest, sodass es unmöglich ist, sich zu entfernen. Im Falle eines solchen Abschlusspuffers / -modus
helm
könnte dies sinnvoll sein.Möglicherweise können Sie jedoch einfach beenden
helm
und dann zu gehen*Backtrace*
. Der Puffer wird nicht mehr in einem Fenster angezeigt, sollte aber noch vorhanden sein und die neueste Rückverfolgung enthalten. Sie erwähnen, dass der "Backtrace-Puffer gelöscht wird"; verschwindet der Puffer einfach oder wird sein Inhalt wirklich gelöscht? Im letzteren Fall möchten Sie möglicherweise ein Problem imhelm
Repository öffnen , da dies als Fehler angesehen werden kann.quelle
M-x other-window
direkt aufzurufen , aber keines davon ermöglicht es mir, den Fokus vom Minibuffer für die Fertigstellung des Ruders zu entfernen. Wenn der Backtrace-Puffer zum ersten Mal angezeigt wird, ist dies das aktive Fenster, aber fast jeder Tastendruck wird vom Ruder "gestohlen" und bringt mich zurück in den Abschlussmodus. Wenn ich das Ruder verlasse, wirdC-g
der Backtrace-Puffer gelöscht, ohne dass Informationen rückgängig gemacht werden.(elisp)Recursive Editing
. Sinnvoll für ein Paket wiehelm
, bedeutet aber auch, dass das Beendenhelm
(durch regelmäßiges Aufrufen eines Befehls oder Abbrechen in Ihrem Fall) zur vorherigen Ebene zurückkehrt, wodurch die aktuelle Ebene verloren geht Sie waren also völlig auf dem richtigen Weg. Vielleicht bietet das Ruder bereits eine Lösung für dieses Problem, überprüfen Sie die FAQ, andernfalls öffnen Sie ein Problem.M-x fundamental-mode
Möglicherweise funktioniert es auch, obwohl es auch möglich ist, dass dies den Modus im falschen Puffer ändert.