Как я могу emacsclient -a '' -n
создать новый кадр, только если его еще нет?
Проблема с -c
флагом заключается в том, что он каждый раз создает новый кадр. Проблема без него состоит в том, что если нет открытого кадра, он откроется в командной строке.
Если я могу проверить, есть ли открытый фрейм Emacs из оболочки, я могу вызвать с или без, в -c
зависимости от этого, чтобы получить поведение, которое я хочу. Я попытался:
$ emacsclient -a '' --eval '(frames-on-display-list)'
(#<frame F1 0xba2740>)
Я всегда получаю один и тот же результат.
Я мог бы использовать временные файлы или pgrep, но эти подходы очень подвержены ошибкам.
Это похоже на этот вопрос , но оно не является дубликатом, так как OP был удовлетворен необходимостью открыть кадр перед вызовом emacsclient
.
elisp
,bash
иsh
ответы.