Emacs script pro parsovani chyboveho vystupu z Maven2

Obrázek uživatele benzin@jabber.cz
Vložil benzin@jabber.cz, Út, 2007-05-01 13:47 :: | | | |

Programuju v jazyce JAVA a jako vyvojove prostredi (IDE) pouzivam Emacs resp. XEmacs. Ke zprave projektu (build, deploy, dokumentace atp.) jsem pouzival drive Ant, ale pred nekolika mesici jsem prevedl vsechny sve projektu na Maven2. Jedina a posledni bolistka, ktera oproti Antu zustavala byla horsi podpora prave v Emacsu. Z toho daleko nejvice mne stave absence rychle navigace v chybach.vzniklych pri kompilaci.

Proto, aby vse fungovalo jak se na spravne IDE slusi ma Emacs seznam chybovych vystupu a zpusobu jejich parsovani v promene compilation-error-regexp-alist. Pro maven je potreba tento seznam rozsirit, ale zadna metoda ktere jsem nasel nefungovaly. Napriklad naleznete hned tri zpusoby jak na to. Ani jedena z uprav mi nepomohla, pri entru na chybe se nic nestalo.

Proto jsem vytvoril svuj vlastni skript. Ten skrip parsuje vystup z mavenu a umoznuje v nem pohyb dopredu a dozadu. Zaroven nastavuje kurzor do zdrojaku na pozici chyby. Jenze cele to prestane fungovat ve chvili jak zmenite pocet radku ve zdrojauk, treba pridate import, na ktery jste zapomeli. Cislo radku v chybovem vystupu prestane sedet s cislem radku v souboru. Kurzor se tak stavi na spatnou pozici. Nicmene i pres tento nedostatek, se da skript jakz tak pouzivat. Nastavil jsem si klavesove zkratky \C-c \C-e \C-f, \C-c \C-e \C-n, \C-c \C-e \C-p pro skok na prvni, nasledujici a predchozi chybu.

Po dvou mesicich pouzivani meho skriptu, jsem se rozhodl, ze jej zverejnim. Pri psani prispevku do blogu, jsem jeste jednou zkousel upravovat compilation-error-regexp-alist, abych jenom neblabolil. Nakonec jsem prisel na nastaveni ktere mi funguje:

(require 'compile)
(add-to-list 'compilation-error-regexp-alist
 '("^\\(.*\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\]" 1 2 3 2 1))

Nicmene prestoze je muj skript uz zcela zbytecny rozhodl prece jej pridam. Kdyz uz jsem se dal do jeho zverejnovani, tak mne nejake jednodussi reseni, nemuze zastavit Smiling. Takze nastaveni klavesovych zkratek, ktere mam v init.el a jako priloha je script, ktery vsechno vykonava (jen chci upozornit, ze sem to testoval na jdk 1.6).

(global-set-key "\C-c\C-e\C-f" 'benzin-goto-first-error)
(global-set-key "\C-c\C-e\C-p" 'benzin-goto-previous-error-message)
(global-set-key "\C-c\C-e\C-n" 'benzin-goto-next-error-message)

Poznamka:

  1. Script je prilozen s priponou txt, protoze tento blogovaci system neumoznuje prikladat soubory s priponou .el.
  2. Nepouzival jsem diakritiku, protoze mam takovy kuriozni problem s ceskou klavesnci v X. Kdyz spustim aplikaci, ktera pouziva knihovny QT, bez zapnute ceske klavesnice muze psat pouze anglicky. Kdyz ji mam ale predtim zaplou, muzu pak uz libovolne prepinat mezi EN a CZ (proste primarni a sekundarni). No a s aplikacemi pod GTK, je to krapet horsi, pac ty maji pristup jenom k rozlozeni se kterym byly zpusteny. Zatim jsem to neresil, protoze OpenOffice i XEmacs si ridi rozlozeni klavesnice po svoje takze v nich tenhle problem neni, tudiz mne to prilis neobtezuje.
PřílohaVelikost
benzin-jde-maven2-errors.txt5.53 KB