2015-08-11 2 views
1

В emacsclient существует ли способ открыть файл из командной строки, чтобы его буфер оставался открытым на сервере после закрытия клиента?Emacsclient сохранить буферы после закрытия

В качестве альтернативы, есть ли команда, с которой я могу работать в клиенте, чтобы сказать ей эффективно отделить от буфера, чтобы буфер не был убит при выходе клиента?

Обычно при закрытии emacsclient с C-x C-c или C-x # буфера (-ы), связанные с этим клиентом, убиваются, что обычно удобно, но иногда я хотел бы, чтобы буферы оставались в живых после закрытия. До сих пор единственным способом, который я нашел для этого, является запуск клиента без указания каких-либо файлов, а затем посещение их с помощью C-x C-f, но мне интересно, есть ли лучший способ сделать это.

ответ

1

Таким образом, один из вариантов заключается в использовании опции командной строки eval командной строки emacsclient для запуска команды lisp для поиска нужного файла.

emacsclient -c -e '(find-file "my_file")'

Очевидно, что это намного больше, чтобы набрать, чем последовательность команд emacsclient -c, C-x C-f, my_file, но это может быть довольно легко завернутые в сценарий, который принимает дополнительный аргумент, чтобы сказать ему, нужно ли просто выбрать файл или использовать find-file.

Кто-то более хорошо разбирается в elisp, чем я мог бы просто добавить опцию непосредственно в emacs.

1

Вы должны быть в состоянии сделать это, используя опцию -n. Это означает, что он не будет ждать, пока вы «закончите» буфер, и он останется в списке буферов. Я использую это с emacsclient.

+0

Это заставляет его открываться в существующем клиенте, если у меня уже есть один открытый. Я все еще хочу, чтобы он открылся в терминале, на котором я нахожусь. – zstewart

+0

О, я думаю, вам нужно -t для этого. HTH –

+0

'-t' сохраняет проблему с буферами, умирающими при закрытии клиента. '-t' и' -n' являются взаимоисключающими, но каждый имеет * некоторые * свойств, которые я хочу. Я хочу создать новые кадры из '-t' и отделяемых буферов от' -n'. – zstewart

0

Согласно инфо руководству, если вы никогда не хотите убить emacsclient буферов, когда вы закончите с ними, вы можете настроить server-kill-new-buffers переменные (более подробную информацию на C-h v server-kill-new-buffers) в.

Для вас вариант использования, в зависимости от того, как часто вы хотите, чтобы буферы убили или нет, вы можете установить переменную выше nil, а затем вручную убить буферы, которые вы сделать хотят убить.

Смежные вопросы