Раньше в моем файле emacs .init.el были две следующие строки, используемые для блокировки заставки и переключения на анонимный буфер.

(setq inhibit-splash-screen t) (switch-to-buffer "**")

Недавно я начал использовать emacs --daemon и emacsclient и мой начальный буфер установлен на *scratch* . Я не хочу взаимодействия с Лиспом и надоедливого скретч-сообщения, поэтому я написал следующую строку в моем init.el

(setq initial-buffer-choice "**")

Проблема в том, что новый начальный буфер отличается от традиционного ** буфера. Фактически, при закрытии emacs мне предлагается сохранить файл с именем ** , хотя я не хочу такого поведения, я просто хочу свой традиционный ** анонимный буфер.

Я знаю, что могу вручную установить initial-major-mode и initial-scratch-message и продолжать использовать *scratch* но я действительно хотел бы использовать ** вместо этого.

Как я могу решить эту проблему?

1 ответ1

0

Из документации по initial-buffer-choice :

Если значение равно nil, а'hibit-startup-screen 'равно nil, показать экран запуска. Если значение является строкой, переключитесь на буфер, который посещает указанный файл или каталог. Если значение является функцией, вызовите его без аргументов и переключитесь на буфер, который он возвращает. Если t, откройте буфер нуля .

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

Вместо этого вы можете установить значение как функцию, возвращающую буфер, который вы хотите выбрать:

(setq initial-buffer-choice (lambda () (get-buffer-create "**")))

Обратите внимание, что я использовал get-buffer-create , потому что, если буфер не существует, переданная функция вернет nil , что может вызвать проблемы при создании новых фреймов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .