2010-10-26 10 views

Respuesta

15

Puede intentar usar M-C-x (eval-defun), que volverá a evaluar el formulario de nivel superior alrededor del punto. A diferencia de M-x eval-buffer o C-x C-e (exal-last-sexp), esto se restablecerá variables declaradas con defvar y defcustom a sus valores iniciales, lo que podría qué te tropezar.

2

M-x eval-buffer debería hacerlo.

+0

Eval-buffer reevalúa el código, pero el comportamiento del modo menor no parece actualizarse, incluso si lo apago y lo vuelvo a encender. ¿Hay algún comando que pueda usar en combinación con este para volver a cargar el modo secundario? – davidscolgan

+0

Bueno, supuse que los modos menores funcionaban de manera similar a las modificaciones de archivo .emacs, pero estoy claramente equivocado. Mi próxima conjetura fue que el.Los emacs también deberían refrescarse, sin dados. Supongo que ambos tendremos que esperar a que alguien que sabe de lo que están hablando se mueva. Perdón por el intento equivocado. – Greg

1

Todo depende de lo que esté escribiendo y cómo lo haya escrito. Alternar el modo debería obtener el nuevo comportamiento. Si está utilizando [define-minor-mode][1], puede agregar código en el cuerpo de la macro que las claves fuera la variable modo:

(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 
    ) 

embargo, otra manera de comprobar de forma rápida sería la de generar una nueva Emacs de su existente :

M-x shell-command emacs& 
3

también probar C-u C-M-x que evalúa la definición en el punto y establece un punto de interrupción allí, así que te dejan en el depurador cuando se pulse esa función.

M-x ielm es también muy útil como Lisp REPL con más funciones cuando se desarrolla el código de Emacs.

1

Lo que dijo Sean. Además, tengo (eval-defun) vinculado a una clave, junto con una prueba. El ciclo de desarrollo se convierte en: 1) función de edición, 2) presione la tecla eval y prueba, 3) observe los resultados, 4) repita. Esto es extremadamente rápido.

Durante el desarrollo, escribo una prueba, la enlace a jmc-test, luego uso la tecla anterior para ejecutarla en la función que acabo de editar. Edito más, luego presiono la tecla nuevamente, probándola nuevamente. Cuando la función funciona, desactivo jmc-test, edito otra función y escribo otra función jmc-test. Casi siempre son una línea de código, tan fácil de explotar.

(defun jmc-eval-and-test() 
    (interactive) 
    (eval-defun nil) 
    (jmc-test)) 
(define-key emacs-lisp-mode-map (kbd "<kp-enter>") 'jmc-eval-and-test) 

(when t 
    (defun myfunc (beer yum) 
    (+ beer yum)) 
    (defun jmc-test() (message "out: %s" (myfunc 1 2)))) 

Al editar "myfunc", si presiono el teclado, ingrese "out: 3".

+0

¿por qué tiene el formulario (cuando ...)? De lo contrario, me encanta esto! – ftravers

0

acabo de definir una función llamada LDF (abreviatura de carga de archivos) en mi archivo .emacs, así:

(defun LDF (arg) (interactivo "P") (load-file (tampón -file-name)))

Como puede ver, esta pequeña función busca el nombre de archivo del búfer en uso y luego carga el archivo. Cada vez que necesito volver a cargar el archivo elisp del búfer actual, simplemente escriba "M-x ldf"

Cuestiones relacionadas