En tant que débutant Emacs, je travaille sur l'écriture d'un mode mineur. Ma méthode actuelle (naïve) de programmation elisp consiste à faire un changement, fermer Emacs, redémarrer Emacs, et observer le changement. Comment puis-je rationaliser ce processus? Y a-t-il une commande pour tout rafraîchir?Comment recharger facilement le code Lisp d'Emacs lorsque je l'édite?
Répondre
Vous pouvez essayer d'utiliser M-C-x (eval-defun
), qui réévaluera la forme de premier niveau autour du point. Contrairement à M-x eval-tampon ou C-x C-e (exal-last-sexp
) pour réinitialiser les variables déclarées avec defvar
et defcustom
à leurs valeurs initiales, ce qui pourrait ce qui vous trébuchement.
M-x eval-buffer devrait le faire.
Tout dépend de ce que vous écrivez et comment vous l'avez écrit. En basculant le mode devrait vous obtenir le nouveau comportement. Si vous utilisez [define-minor-mode][1]
, vous pouvez ajouter du code dans le corps de la macro que les clés au large de la variable mode:
(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
)
Mais, une autre façon de le vérifier serait rapidement frayer un nouveau Emacs de votre existant :
M-x shell-command emacs&
essayez aussi C-u C-M-x
qui évalue la définition au point et définit un point de jonction, de sorte que vous obtenez est tombé dans le débogueur lorsque vous appuyez sur cette fonction.
M-x ielm
est également très utile en tant que LPL REPL riche en fonctionnalités lors du développement du code Emacs.
Ce que dit Sean. En outre, j'ai (eval-defun)
lié à une clé, avec un test. La boucle de développement devient alors: 1) modifier la fonction, 2) appuyer sur la touche eval-and-test, 3) observer les résultats, 4) répéter. Ceci est extrêmement rapide.
Pendant le développement, j'écris un test, le lie à jmc-test
, puis utilise la clé ci-dessus pour l'exécuter sur ma fonction qui vient d'être éditée. J'édite plus, puis j'appuie à nouveau sur la touche pour le tester à nouveau. Lorsque la fonction fonctionne, je zappe jmc-test
, édite une autre fonction et écris une autre fonction jmc-test. Ils sont presque toujours une ligne de code, si facile à frapper juste. Lors de l'édition de "myfunc", si j'appuie sur le clavier enter, il affiche "out: 3".
Pourquoi avez-vous le formulaire (quand ...)? Sinon, aime ça! – ftravers
je définis juste une fonction appelée LDF (abréviation de charge-file) dans mon fichier .emacs, comme ceci:
(defun LDF (arg) (interactive "P") (charge-fichier (tampon -file-name)))
Comme vous pouvez le voir, cette petite fonction recherche le nom de fichier du tampon courant, puis charge le fichier. Chaque fois que j'ai besoin de recharger le fichier elisp du tampon, tapez "M-x ldf"
Eval-buffer réévalue le code, mais le comportement du mode mineur ne semble pas être mis à jour, même si je l'éteins et le rallume. Y a-t-il une commande que je peux utiliser en combinaison avec celle-ci pour recharger le mode mineur? – davidscolgan
Eh bien, j'ai supposé que les modes mineurs fonctionnaient de manière similaire aux modifications de fichiers .emacs, mais je me trompe clairement. Ma prochaine conjecture était que le.emacs devrait aussi être rafraîchi - pas de dés. Je suppose que nous devrons tous les deux attendre que quelqu'un sache de quoi ils parlent. Désolé pour la mauvaise tentative. – Greg