2010-10-26 7 views

risposta

15

Si potrebbe provare a utilizzare M-C-x (eval-defun), che rivaluterà il modulo di livello superiore attorno al punto. A differenza M-x eval-buffer o C-x C-e (exal-last-sexp), questo sarà resettare variabili dichiarate con defvar e defcustom ai valori iniziali, che potrebbero cosa ti inciampare.

2

M-x eval-buffer dovrebbe farlo.

+0

Eval-buffer rivaluta il codice, ma il comportamento della modalità minore non sembra essere aggiornato, anche se lo spengo e riaccendo. C'è un comando che posso usare in combinazione con questo per ricaricare la modalità minore? – davidscolgan

+0

Bene, ho pensato che le modalità minori funzionassero in modo simile alle modifiche ai file .emacs, ma sono chiaramente sbagliato. La mia prossima ipotesi fu che il.anche emacs dovrebbe essere aggiornato, niente da fare. Suppongo che avremo entrambi bisogno di aspettare qualcuno che sappia di cosa stanno parlando per passare. Scusa per il tentativo sbagliato. – Greg

1

Tutto dipende da cosa stai scrivendo e da come lo hai scritto. La commutazione della modalità dovrebbe ottenere il nuovo comportamento. Se stai usando [define-minor-mode][1], è possibile aggiungere codice nel corpo della macro che le chiavi fuori la variabile modalità:

(define-minor-mode my-minor-mode 
    "doc string" 
    nil 
    "" 
    nil 
    (if my-minor-mode 
     (progn 
     ;; do something when minor mode is on 
    ) 
    ;; do something when minor mode is off 
    ) 

Ma, un altro modo per controllare velocemente sarebbe quello di generare un nuovo Emacs da quello esistente :

M-x shell-command emacs& 
3

provare anche fuori C-u C-M-x che valuta la definizione a punto e imposta un punto di interruzione lì, in modo da ottenere sceso in debugger quando si colpisce quella funzione.

M-x ielm è anche molto utile come Lisp REPL più ricco di funzionalità durante lo sviluppo del codice Emacs.

1

Che cosa ha detto Sean. Inoltre, ho (eval-defun) associato a una chiave, insieme a un test. Il ciclo di sviluppo diventa quindi: 1) funzione di modifica, 2) premere il tasto eval-and-test, 3) osservare i risultati, 4) ripetere. Questo è estremamente veloce.

Durante lo sviluppo scrivo un test, lo leggo a jmc-test, quindi uso il tasto sopra per eseguirlo sulla mia funzione appena modificata. Modifica di più, quindi premo di nuovo il tasto, testandolo nuovamente. Quando la funzione funziona, eseguo lo zapping jmc-test, modifica un'altra funzione e scrivo un'altra funzione jmc-test. Sono quasi sempre una linea di codice, così facile da battere.

Quando si modifica "myfunc", se si preme Invio tastiera, stampa "out: 3".

+0

perché hai la (quando ...) forma? Altrimenti, ama questo! – ftravers

0

Ho appena definisco una funzione chiamata LDF (abbreviazione di load-file) nel mio file .emacs, come questo:

(defun LDF (arg)() (load-file "P" interattivo (tampone -file-name)))

Come si può vedere, questa piccola funzione cerca il nome file del buffer corrente e quindi carica il file. Ogni volta che ho bisogno di ricaricare l'attuale file buffer elisp, basta digitare "M-x ldf"

Problemi correlati