2012-04-18 12 views
18

elisp es un buen lenguaje, creo que puede manejar todo tipo de trabajos, pero ¿puedo usarlo como un script de shell?¿Ejecuta el programa elisp sin Emacs?

es decir, ejecutar algunos archivos * .el desde la consola, sin iniciar Emacs. O ejecuta Emacs, pero no ingreses al modo interactivo.

Respuesta

21

Definitivamente puede ejecutar scripts elisp en Emacs sin iniciar la interfaz del editor.

Aquí están las notas que he hecho/copiado de unos pocos Q & extremadamente útiles Como sobre el tema aquí en S.O. (y los siguientes dos en particular).

;;;; Elisp executable scripts 

;; --batch vs --script 
;; M-: (info "(emacs) Initial Options") RET 
;; M-: (info "(elisp) Batch Mode") RET 

;; Passing additional command-line arguments to Emacs: 
;; https://stackoverflow.com/questions/6238331/#6259330 
;; 
;; For robustness, it's important to both pass '--' as an argument 
;; (to prevent Emacs from trying to process option arguments intended 
;; for the script), and also set "argv" to nil at the end of the script 
;; (to prevent Emacs from visiting the non-option arguments as files). 
;; 
;; #!/bin/sh 
;; ":"; exec emacs --no-site-file --script "$0" -- "[email protected]" # -*-emacs-lisp-*- 
;; (print (+ 2 2)) 
;; (setq argv nil) ;; always end with this 

;; Processing with STDIN and STDOUT via --script: 
;; https://stackoverflow.com/questions/2879746/#2906967 
;; 
;; #!/usr/local/bin/emacs --script 
;; ;;-*- mode: emacs-lisp;-*- 
;; 
;; (defun process (string) 
;; "just reverse the string" 
;; (concat (nreverse (string-to-list string)))) 
;; 
;; (condition-case nil 
;;  (let (line) 
;;  ;; commented out b/c not relevant for `cat`, but potentially useful 
;;  ;; (princ "argv is ") 
;;  ;; (princ argv) 
;;  ;; (princ "\n") 
;;  ;; (princ "command-line-args is") 
;;  ;; (princ command-line-args) 
;;  ;; (princ "\n") 
;; 
;;  (while (setq line (read-from-minibuffer "")) 
;;   (princ (process line)) 
;;   (princ "\n"))) 
;; (error nil)) 

Emacs lado, el único otro elisp intérprete/compilador yo sepa es Guile. Si está interesado en la codificación general en elisp, debería merecer una visita (especialmente si el rendimiento es una preocupación).

+0

Gracias por su ayuda. –

Cuestiones relacionadas