Erfassen und Analysieren von Xterm-Puffer in Emacs

969
BobBanana

Ich möchte eine indirekte Steuerung für Emacs (in Ubuntu Linux) vornehmen, damit ich mit dem Cursor Text in einem Xterm durchziehen und in den X-Cut-Puffer schneiden kann. Anschließend kann in Emacs ein Makro ausgeführt werden, um den Cut-Buffer-Text zu analysieren Um nach Text zu suchen, der "Zeile XXXX" enthält, wobei X alle Ziffern ist, gehen Sie zu dieser Zeile im aktuellen Emacs-Puffer.

Ich denke, das ist möglich, indem man mit emacsclient einen Makro ausführt, das Makro analysiert, den Cut-Puffer analysiert und dann einen goto-line-Befehl an die Nummer ausgibt, die geparst wurde.

Mein Problem ist, dass ich nicht das Emacs-Skript schreiben kann, um den X-Cut-Puffer zu lesen und ihn zu analysieren. Ich habe schon Kochbuchbeispiele durchgesehen, aber keiner scheint zu passen.

Mein Ziel ist es, die Entwicklung zu erleichtern. Wenn ich eine Fehler- / Informations- / Statusnachricht in einem xterm gedruckt habe, möchte ich die Fehlermeldung streichen, die etwa "Syntaxfehler in Zeile 2776" enthält, und dann eine Tastenkombination drücken, die Ubuntu interpretiert, um emacsclient zu starten, was meine bereits verursacht -open Emacs, um den Text zu packen, zu parsen und zu der Zeilennummer zu gehen, die ich gerade geklaut habe. Nur dieser letzte Schritt des Parsens ist der schwierige Teil.

(Ja, ich weiß, dass Sie eine Shell innerhalb von emacs ausführen können, aber dies passt nicht zu meinem Workflow.)

Wie würde ich Emacs dazu bringen, den X-Cut-Puffer anzusehen, die Zeilennummer zu analysieren und den Befehl "goto-line" an den aktuellen Puffer zu senden?

Vielen Dank!

1

2 Antworten auf die Frage

1
mattikus

Wenn Sie die Ausgabe mit einem anderen Dienstprogramm analysieren können, um den Dateinamen und die Zeilennummer zu erhalten, können Sie diese Datei mit dem Cursor in der angegebenen Zeile auf folgende Weise öffnen:

emacsclient +LINE_NUMBER FILE_NAME 

Dies sollte dazu führen, dass emacsclient den nächstgelegenen Puffer verwendet und durch LINE_NUMBER durch FILE_NAME ersetzt.

Ich mag diese Idee ... das Parsen in einem kleinen Perl-Einliner oder so. Emacs ist offensichtlich stark genug, um dies zu tun, aber es ist möglicherweise einfacher, den Launcher zum Parsen zu verwenden. Um herauszufinden, wie man den X-Cut-Puffer in Perl erhält ... BobBanana vor 14 Jahren 0
1
Justin Smith

(x-get-selection) ist eine Elisp-Funktion, die den aktuell ausgewählten X11-Text zurückgibt.

Die Standardmethode, eine Fehlermeldung zu erhalten und sie in emacs zu verwenden, um direkt zur angegebenen Datei / Zeile springen zu können, ist das Ausführen von Mx-Kompilierung oder die Verwendung eines Befehls, der den Kompilierungsmodus anpasst. emacs erkennt bereits die Ausgabe von gcc, g ++ und vielen anderen Programmen. Beim Mx-Kompilieren generiert emacs automatisch anklickbare Links für die erkannten Fehlermeldungen, und bei neueren Emacs-Versionen reagieren sie mit dem Linksklick und nicht mit einem Mittelklick.