Come principiante di Emacs, sto lavorando alla scrittura di una modalità secondaria. Il mio attuale (ingenuo) metodo di programmazione elisp consiste nel fare un cambiamento, chiudere Emacs, riavviare Emacs e osservare il cambiamento. Come posso ottimizzare questo processo? C'è un comando per aggiornare tutto?Come posso ricaricare facilmente il codice Lisp di Emacs mentre lo sto modificando?
risposta
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.
M-x eval-buffer dovrebbe farlo.
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&
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.
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".
perché hai la (quando ...) forma? Altrimenti, ama questo! – ftravers
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"
- 1. Come ricaricare un UITableView mentre lo sto guardando
- 2. Come testare facilmente il codice?
- 3. Come eseguire il file che sto modificando in Vi (m)
- 4. Debug di codice Lisp
- 5. Cosa significa^L in (Emacs Lisp) codice sorgente?
- 6. Evidenziazione sintassi Emacs Lisp
- 7. Come posso verificare se un file esiste usando Emacs Lisp?
- 8. Debug Emacs Lisp modo maggiore
- 9. Differenza di struttura tra common lisp ed emacs lisp
- 10. PPRINT in Emacs Lisp?
- 11. Emacs senza Lisp
- 12. Schema dialetto di Lisp in Emacs
- 13. Come far ricaricare automaticamente il file TAGS da Emacs?
- 14. quale shell-command in emacs lisp?
- 15. Come posso convertire facilmente il codice FORTRAN in codice Python (codice reale, non wrapper)
- 16. Sovrascrittura di una funzione in Emacs Lisp
- 17. In Emacs Lisp, come trovare dove è definito il simbolo
- 18. Come posso far aprire NERDTree sulla stessa unità del file che sto modificando?
- 19. Come aggiungo le date in Emacs usando Emacs Lisp?
- 20. Come copiare negli appunti in Emacs Lisp
- 21. Rails3 Non ricaricare il codice in lib, mentre in modalità di sviluppo
- 22. Come ottenere il testo selezionato in Emacs Lisp?
- 23. Come eseguire facilmente il codice C# sul server Linux?
- 24. Ricaricare il codice Clojure in Tomcat
- 25. Come posso vedere facilmente il grafico di inclusione C/C++?
- 26. moltiplicazione della lista vuota in emacs lisp
- 27. Come leggere mentalmente codice Lisp/Clojure
- 28. Emacs lisp: come posso ottenere il file più nuovo in una directory?
- 29. emacs lisp: Come rimuovere/eliminare un elemento di una lista?
- 30. Emacs Lisp: valuta variabile in alist
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
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