2010-03-17 2 views
2

J'essaye de placer le compilation-error-regexp-alist dans une fonction que j'ajoute en tant que crochet de mode.emacs: Puis-je définir compilation-error-regexp-alist dans un mode hook fn?

(defun cheeso-javascript-mode-fn() 
    (turn-on-font-lock) 

    ...bunch of other stuff 

    ;; for JSLINT 
    (make-local-variable 'compilation-error-regexp-alist) 
    (setq compilation-error-regexp-alist 
     '(
("^[ \t]*\\([A-Za-z.0-9_: \\-]+\\)(\\([0-9]+\\)[,]\\(*[0-9]+\\))\\(Microsoft JScript runtime error\\| JSLINT\\): \\(.+\\)$" 1 2 3) 
)) 

    ;;(make-local-variable 'compile-command) 
    (setq compile-command 
     (let ((file (file-name-nondirectory buffer-file-name))) 
     (concat "%windir%\\system32\\cscript.exe \\cheeso\\bin\\jslint.js " file))) 

) 

(add-hook 'javascript-mode-hook 'cheeso-javascript-mode-fn) 

Le hook de mode s'exécute. Les différentes choses que je définis dans le mode crochet fonctionnent. Le compile-command est défini. Mais pour une raison quelconque, la valeur compilation-error-regexp-alist ne prend pas effet.

Si je fais plus tard un M-x describe-variable sur compilation-error-regexp-alist, il me montre la valeur que je pense qu'il devrait avoir. Mais .. les erreurs dans le tampon de compilation ne sont pas mises en évidence, et M-x next-error ne fonctionne pas.

alt text http://i40.tinypic.com/drb3g4.jpg

Si j'ajoute la valeur regexp d'erreur au compilation-error-regexp-alist via setq-default, comme ceci:

(setq-default compilation-error-regexp-alist 
    '(
    ... jslint regexp here ... 
    ... many other regexp's here... 
    )) 

... alors cela fonctionne. Les erreurs dans le tampon de compilation sont correctement mises en surbrillance et M-x next-error fonctionne comme prévu.

alt text http://i40.tinypic.com/10nclxv.jpg

Répondre

2

Je ne crois pas que la commande compilehérite la valeur locale que vous avez défini pour compilation-error-regexp-alist. La solution serait de personnaliser un crochet pour le tampon *compilation* lui-même, voir compilation-mode-hook et compilation-start-hook.

+0

aha! Merci beaucoup. – Cheeso