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