emacs development-environment elisp

emacs - Programación Elisp-¿Cuál es la mejor configuración?



development-environment (7)

Como se indicó, Emacs ya es el entorno de desarrollo elisp definitivo e internamente le proporciona la mayoría de la funcionalidad que probablemente desee.

También podría usar ctags / etags para generar un índice externo para su base de código elisp, si desea saltar a definiciones de funciones que aún no estaban cargadas (y que carecían de declaraciones de carga automática). Mx find-function RET maneja esto de otra manera. (Ato eso a Ch Cf )

Las funciones "a propósito" son claves para encontrar cosas en general. Uso los siguientes enlaces para un fácil acceso:

(define-prefix-command ''Apropos-Prefix nil "Apropos (a,c,d,i,l,v,C-v)") (global-set-key (kbd "C-h C-a") ''Apropos-Prefix) (define-key Apropos-Prefix (kbd "a") ''apropos) (define-key Apropos-Prefix (kbd "C-a") ''apropos) (define-key Apropos-Prefix (kbd "c") ''apropos-command) (define-key Apropos-Prefix (kbd "d") ''apropos-documentation) (define-key Apropos-Prefix (kbd "i") ''info-apropos) (define-key Apropos-Prefix (kbd "l") ''apropos-library) (define-key Apropos-Prefix (kbd "v") ''apropos-variable) (define-key Apropos-Prefix (kbd "C-v") ''apropos-value) ;; Use prefix arg (C-u) to see more results for a call, ;; or uncomment the next line to do this by default: ;; (setq apropos-do-all t) ;; See C-h v apropos-do-all RET for details.

También eldoc-mode y tengo un imenu-ido-goto-symbol (pero muy raramente utilizado).

Hay otras bibliotecas que pueden resultar útiles. Sé que algunas personas juran por ParEdit , por ejemplo. Es cierto que es un poco difícil orientar una búsqueda de bibliotecas elisp que sean útiles para escribir elisp. ¿No estoy seguro de si el Emacs Wiki tiene una categoría para esto?

Hay todo tipo de modos de lenguaje de programación geniales en Emacs, escritos en elisp, pero aparentemente no hay soporte especial para elisp en sí.

Como slime no funciona para elisp, me pregunto si todo ese código de elisp es simplemente pirateado en el búfer de rasguño . ¿No hay necesidad de algo como limo al escribir elisp, o simplemente no está ahí? ¿Alguien está utilizando el BCE y la semántica para proyectos más grandes?


Creo que añadir esto a ti .emacs

(define-key emacs-lisp-mode-map (kbd "M-.") ''find-function-at-point)

será muy útil.


Siempre existe el modo emacs-lisp-mode , que (al menos en Emacs 23) se carga automáticamente cada vez que edita un archivo .el. Esto parece ser lo que muchos piratas informáticos emacs lisp utilizan para escribir sus programas. Tiene algunas características interesantes (como compilar o evaluar un búfer, algunas herramientas de depuración, creación de perfiles). El búfer * scratch * se edita por defecto desde el modo de interacción lisp, que es un poco diferente.

No es tan completo como, por ejemplo, slime (elisp tiene una comunidad mucho más pequeña que la normal), pero definitivamente funciona. Tendría que buscar en la documentación y experimentar con el modo para ver qué tipo de funciones puede usar.


ielm es el ielm Emacs Lisp: Modo Emacs Lisp interactivo.

Mx ielm te lleva allí.


Emacs en sí viene con soporte de Emacs Lisp. Los elementos básicos a intermedios, como la finalización ( M-TAB ), la búsqueda en la biblioteca ( Mx apropos ), la documentación ( Ch f , Ch v , Ch S ), el código en ejecución ( CMx , M-: CMx funcionan directamente en El Emacs corriendo.

El propósito principal de Slime es la interacción con un proceso externo. No necesitas eso para Emacs Lisp (a menos que estés desarrollando una versión diferente de Emacs, pero eso es una preocupación poco común).

Las características del BCE y la semántica son en su mayoría útiles para proyectos grandes (que consisten en más de un puñado de archivos de origen). La gente no tiende a escribir grandes proyectos en Emacs Lisp.


M-x edebug-defun

Para depurar la función, creo que estas son las mejores herramientas de depuración para elisp.


  • Generalmente uso emacs-lisp-mode en preferencia al modo predeterminado para *scratch* . El 99% de las veces quiero guardar incluso pruebas interactivas desechables (al menos temporalmente), por lo que más a menudo uso un archivo *.el que *scratch* .

  • Los carámbanos pueden ayudar mucho al interactuar con Emacs Lisp. Las formas son demasiado numerosas para enumerarlas aquí. Aquí hay dos descripciones generales que pueden dar una idea:

http://www.emacswiki.org/emacs/EmacsNewbieWithIcicles

http://www.emacswiki.org/emacs/Icicles_-_Nutshell_View