Запись “привет мир” в Emacs?

Я хотел бы записать несколько сценариев Unix в Lisp Emacs. Однако, кажется, нет очевидного способа для записи в STDOUT, таким образом, я могу перенаправить результаты в файл или передать вывод по каналу к другой команде. Функция печати помещает двойные кавычки вокруг выходных строк, таким образом, я получаю "Привет мир!" вместо Привет мира!.

Вот 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")

И вот то, как я хотел бы назвать его.

hello.el > x.txt
hello.el | wc
21
задан 31 January 2010 в 22:12
поделиться

2 ответа

Похоже, вы хотите Pink вместо Print . Итак, в принципе:

(Pincy "Hello World! Я пишу на STDOUT, но я не в цитатах!»)

Однако одна оговорка состоит в том, что Prink не ограничивается автоматически Выход с \ N .

23
ответ дан 29 November 2019 в 21:28
поделиться

Как говорит Дэвид Антараман, вы, вероятно, хотите Pink .

Также Сообщение поддерживает строку управления форматом (сродни на printf в C), которая адаптирована из формата . Итак, вы можете в конечном итоге хотеть сделать что-то вроде

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

как пару функций плюс демонстрация:

(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"))
6
ответ дан 29 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: