tutorial source para mac descargar code emacs elisp

source - emacs para mac



¿Escribir "Hello World" en Emacs? (2)

Me gustaría escribir algunos scripts de Unix en Emacs Lisp. Sin embargo, no parece haber una forma limpia de escribir en STDOUT, por lo que puedo redirigir los resultados a un archivo o canalizar la salida a otro comando. La función de impresión coloca comillas dobles alrededor de las cadenas de salida, así que obtengo "¡Hola mundo!" en lugar de hola mundo! .

Aquí está el script emacs.

#!/usr/bin/emacs --script ;; ;; Run me from a Unix shell: ./hello.el > x.txt ;; (message "Hello world! I''m writing to STDERR.") (print "Hello world! I''m writing to STDOUT but I''m in quotes") (insert "Hello world! I''m writing to an Emacs buffer") (write-file "y.txt")

Y así es como me gustaría llamarlo.

hello.el > x.txt hello.el | wc


Como dice David Antaramian, probablemente quieras princ .

Además, el message admite una cadena de control de formato (similar a printf en C) que está adaptada del format . Por lo tanto, es posible que desee hacer algo como

(princ (format "Hello, %s!/n" "World"))

Como un par de funciones más demostración:

(defun fmt-stdout (&rest args) (princ (apply ''format args))) (defun fmtln-stdout (&rest args) (princ (apply ''format (if (and args (stringp (car args))) (cons (concat (car args) "/n") (cdr args)) args)))) (defun test-fmt () (message "Hello, %s!" "message to stderr") (fmt-stdout "Hello, %s!/n" "fmt-stdout, explict newline") (fmtln-stdout "Hello, %s!" "fmtln-stdout, implicit newline"))


Parece que quieres princ lugar de print . Así que básicamente:

(princ "Hello world! I''m writing to STDOUT but I''m not in quotes!")

Sin embargo, una advertencia es que princ no termina automáticamente la salida con /n .