2016-12-26 16 views
1

Чтобы запустить мой сценарий Emacs Lisp из оболочки, я использую эту команду:Emacs Lisp: подавление «Сохранение файла» текст во время работы Elisp файла из оболочки

emacs --script my-script.el -f my-function 

В моем сценарии я сохраняю 3 буфера до 3 файлов. И он работает нормально. Но когда скрипт работает на оболочке, он печатает текст:

Using vacuous schema 

Saving file "some-file-to-save" 

Wrote "some-file-to-save" 

Этот текст напечатан 3 раза. Как я могу подавить этот текст?

ответ

0

Я не знаю, экспромтом, как это исправить «правильно» в Elisp, но простое решение было бы просто выбросить выход:

emacs --script my-script.el -f my-function > /dev/null 

Это говорит оболочке, чтобы отправить все стандартный вывод в /dev/null (который отбрасывает все данные, записанные на него). Очевидно, для этого требуется a) операционная система, которая имеет /dev/null (то есть большинство Unices, включая macOS), и b) оболочку, которая не сосать (то есть не cmd.exe).

+0

Это не помогает, потому что в моем сценарии я использую «интерактивный» режим, и пользователю необходимо ввести некоторые данные, чтобы запустить мой скрипт. Также мне нужно напечатать некоторый текст справки, например «start script», «finish script». – Alexei

+0

@Alexei gotcha. надеюсь, кто-то еще придет, кто лучше вооружен, чтобы помочь вам. – strugee

0

Определите вызовы функций, которые сбрасывают эти сообщения в вашем скрипте.

Предполагая, что первое сообщение поступает от функции save-buffer, которая вызывает функцию message (files.el), просто переопределить поведение message, заменив в скрипте, призывание save-buffer (или тот, кто называется) по:

(cl-letf (((symbol-function 'message) #'ignore)) 
    (save-buffer)) 

Ваша потребность добавить

(require 'cl-lib) 

на верхней части вашего скрипта, если уже не там.