2013-07-12 15 views
5

Emacs fornisce avvertimenti utili sulla compilazione di byte. Esiste un plug-in che aggiunge avvisi relativi alle operazioni distruttive in uso? Così che quando scrivo codice come questo:Avviso operazione distruttiva Elisp?

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

Emacs si lamenta:

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

O forse qualcosa di simile elisp-newbie-mode che mette in evidenza tutte le funzioni distruttive?

+0

Sarebbe bello, ma il compilatore di byte non fa un'analisi sufficientemente sofisticata per darti quel tipo di informazioni. Per quanto riguarda l'evidenziazione delle chiamate a 'sort',' nreverse', ecc ... è chiaramente possibile, ma non conosco nessun pacchetto pronto per questo. Sembra che potresti scriverne uno? – Stefan

+0

Mi piacerebbe provare a fare quello con l'analisi prima o poi. Forse potrei ridefinire temporaneamente lambda per tenere traccia di ciò che viene fatto con gli argomenti . –

risposta

1

Ho inviato una patch a Emacs Dev oggi che aggiunge questo al compilatore di byte.

È comunque un inizio. Vedi Emacs bug #15122.

+0

Grazie, è un inizio. Questo genera un falso positivo per '(setq x (sort x # '>))'? –

+0

Sì. Bene, emette l'avviso. (Ma è solo discutibilmente un falso positivo.) Come la maggior parte degli avvisi del compilatore di byte, non è estremamente esperto. – Drew