2013-07-12 23 views
5

Emacs podaje użyteczne ostrzeżenia dotyczące kompilacji bajtów. Czy istnieje wtyczka, która dodaje ostrzeżenia o używanych niszczących operacjach? Tak, że kiedy piszę kodu:Ostrzegawcze ostrzeżenie o destrukcyjnym działaniu?

(defun get-countdown() 
    (let ((x (number-sequence 0 10))) 
    (message (format "%s" (sort x #'>))) 
    x))# 

Emacs narzeka:

temp.el:4:5:Warning: using variable modified by `sort'. 

Albo coś elisp-newbie-mode który podkreśla wszystkie funkcje destrukcyjne?

+0

To byłoby miłe, ale kompilator bajtów nie wykonuje wystarczająco wyrafinowanej analizy, aby podać takie informacje. Jeśli chodzi o wyróżnianie wywołań "sort", "nreverse", etc ... jest to oczywiście możliwe, ale nie znam żadnego gotowego do tego pakietu. Wygląda na to, że możesz napisać? – Stefan

+0

Chciałbym spróbować zrobić to samo z analizą. Może mógłbym tymczasowo przedefiniować lambda, aby śledzić jego argumenty za pomocą . –

Odpowiedz

1

Wysłałem łatkę do Emacsa Dev, która dodaje to do kompilatora bajtów.

To i tak początek. Zobacz Emacs bug #15122.

+0

Dzięki, to jest początek. Czy to generuje fałszywy alarm dla '(setq x (sort x # '>))? –

+0

Tak. Cóż, wydaje ostrzeżenie. (Ale jest to prawdopodobnie tylko fałszywy alarm.) Podobnie jak większość ostrzeżeń przed kompilacją bajtów, nie jest to zbyt mądre. – Drew

Powiązane problemy