2012-04-18 3 views
18

elisp ist eine gute Sprache, ich finde es kann alle Arten von Jobs verarbeiten, aber kann ich es wie ein Shell-Skript verwenden?Run elisp Programm ohne Emacs?

d. H. Einige * .el-Dateien von der Konsole ausführen, ohne Emacs zu starten. Oder starten Sie Emacs, aber gehen Sie nicht in den interaktiven Modus.

Antwort

21

Sie können Elisp-Skripte definitiv in Emacs ausführen, ohne die Editor-Schnittstelle zu starten.

Hier sind die Notizen, die ich gemacht habe/kopiert von ein paar sehr nützliche Q & Wie hier bei S.O. (und die folgenden zwei insbesondere).

;;;; 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 zur Seite, die einzige andere elisp Interpreter/Compiler, den ich von Guile ist sich dessen bewusst bin. Wenn Sie sich für die allgemeine Programmierung in elisp interessieren, sollte das einen Blick wert sein (besonders, wenn Leistung ein Problem ist).

+0

Danke für Ihre Hilfe. –