Cattura e analizza il buffer di taglio xterm in emacs


1

Mi piacerebbe creare un controllo indiretto per Emacs (in Ubuntu Linux) in modo da poter scorrere un testo in un xterm con il cursore, taglarlo nel buffer X cut, quindi eseguire una macro in Emacs per analizzare il testo del buffer di taglio cercare il testo che dice "riga XXXX" dove X è tutte le cifre, quindi vai a quella riga nel buffer Emacs corrente.

Penso che questo sia possibile usando emacsclient per ottenere emacs per eseguire una macro, quindi la macro analizza il buffer di taglio, quindi invia un comando goto-line al numero che è stato analizzato.

Il mio problema è che non so come scrivere lo script emacs per leggere il buffer X cut e analizzarlo .. Ho esaminato degli esempi di libri di cucina ma nessuno sembra adattarsi.

Il mio obiettivo è di facilitare lo sviluppo. Quando ho un errore / informazione / messaggio di stato stampato in un xterm, voglio scorrere il messaggio di errore che dice qualcosa come "Errore di sintassi sulla riga 2776" quindi premere una scorciatoia da tastiera che Ubuntu interpreterà per avviare emacsclient, il che causa il mio già -Apri Emacs per afferrare quel testo, analizzarlo e andare al numero di riga che ho appena sfiorato. Solo quest'ultima fase di analisi è la parte difficile.

(Sì, so che puoi eseguire una shell INSIDE di emacs, ma questo non si adatta al mio flusso di lavoro)

Come faccio a fare in modo che Emacs guardi il buffer X cut e analizzi il numero di riga e invii il comando "goto-line" al buffer corrente?

Grazie!

Risposte:


1

(x-get-selection) è una funzione elisp che restituisce il testo selezionato X11 corrente.

Inoltre, il modo standard per ottenere un messaggio di errore e usarlo in emacs per essere in grado di passare direttamente al file / riga specificato è eseguire M-x compilare, oppure utilizzare un comando che personalizza la modalità di compilazione. emacs riconosce già l'output di gcc, g ++ e molti altri programmi. Con M-x compile emacs genera automaticamente link cliccabili per i messaggi di errore che riconosce, e con le versioni più recenti di emacs rispondono al clic sinistro, piuttosto che al default facendo clic con il tasto centrale.


1

Se è possibile analizzare l'output con qualche altra utilità per ottenere il nome file e il numero di riga, è possibile aprire facilmente quel file con il cursore sulla linea specificata eseguendo:

emacsclient +LINE_NUMBER FILE_NAME

Ciò dovrebbe causare che emacsclient prenda il buffer più vicino e lo sostituisca con FILE_NAME alla LINE_NUMBER.


Mi piace questa idea .. fai il parsing in un one-liner o qualcosa del Perl. Emacs è chiaramente abbastanza potente da farlo, ma potrebbe essere più facile usare il launcher per analizzarlo. Ora per capire come ottenere il buffer X cut in Perl ...
BobBanana
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.