Подтвердить что ты не робот

Как я могу написать стандартный вывод в Emacs

Я пытаюсь отладить производительность программы Emacs. В частности, я испытываю чрезвычайно длительное время запуска (~ 5 'по сравнению с ~ 1' для голых Emacs) на удаленном соединении через WLAN, сотовый телефон и т.д. В этом контексте любая запись message не помогает, для отображения не обновляется вообще.

Что я хотел бы сделать, так это написать на "стандартный вывод" процесса Linux. Я знаю режим --batch, но это не помогает мне, потому что я хочу использовать Emacs в интерактивном режиме.

Итак, как я могу писать сообщения на выходе Linux-стандарта (в отличие от стандартного вывода Emacs)?

4b9b3361

Ответ 1

Вы можете вывести стандартную ошибку следующим образом:

(print "hello world" #'external-debugging-output)

или

(princ "hello world" #'external-debugging-output)

Это может быть буфером, поэтому будьте осторожны. В настоящее время невозможно выводить на стандарт. Я собираюсь добавить это, я думаю!

Ответ 2

Запустите emacs в качестве демона (emacs --daemon), и любые сообщения во время последовательности запуска будут отправлены на stdout или stderr, как описано lunaryorn.

Подключитесь к серверу с помощью emacsclient

Самый простой способ убить сервер: M-x kill-emacs RET

Подробнее см. C-h i g (emacs) Emacs Server RET

Ответ 3

Работает для меня в centos 6.8 (GNU Emacs 23.1.1):

(append-to-file "here I come to save the day\n" nil "/dev/stdout")

Попробуйте также использовать "/dev/tty" вместо "/dev/stdout":

Непонятно, если вы намерены перенаправить "emacs -nw" stdout в файл и контролировать этот файл извне (затем используйте "/dev/stdout" ); или в порядке с записью на "/dev/tty", таким образом, загрязняя те же самые тети основного экрана "emacs -nw".

Если вы запускаете графическую версию emacs, таким образом, она может потерять привязку к исходному tty, может злоупотреблять переменными окружения для передачи исходной оболочки tty в elisp.

Это работает для меня с помощью Aquamacs в Mac OS X. Запуск из оболочки bash:

$ MY_TTY=$(tty) open /Applications/Aquamacs\ Emacs.app &

затем в emacs:

(append-to-file "here I come to save the day\n" nil (getenv "MY_TTY"))