2016-12-25 2 views
1

У меня есть этот код в моем .emacs файле:Как запрограммировать файл .emacs в конечном итоге в определенном буфере?

(load "ielm" nil t) 
(switch-to-buffer "*ielm*") 
(inferior-emacs-lisp-mode) 
(set-buffer-modified-p nil) 

В Emacs 21 и раньше, я закончил с *ielm* в качестве текущего буфера, но начиная с Emacs 22 Я в конечном итоге с *GNU Emacs* в качестве текущего буфера. Что изменилось в emacs 22, чтобы вызвать новое поведение, и что я могу сделать, чтобы автоматически попасть в буфер *ielm*?

+0

Emacs 22 довольно древний. Текущая версия - 25. – sds

+0

Да, поведение изменилось довольно давно, но это не отвечает на мой вопрос. Мой вопрос относится к emacs версии 22 и выше, включая версию 25. –

+0

Вопрос звучит как проблема археологии, tho. – Stefan

ответ

1

Руководство Emacs, узел Entering Emacs говорит вам:

Вы также можете заставить Emacs для отображения файла или каталога при запуске с помощью установки переменной initial-buffer-choice в строку имен, что файла или каталога. Значение initial-buffer-choice также может быть функцией (без аргументов), которая должна вернуть буфер, который затем отображается . Если initial-buffer-choice не является nil, то если вы укажете любые файлы в командной строке, Emacs по-прежнему их посещает, но не отображает их на начальном этапе.

Вы можете найти этот узел в руководстве с помощью C-h r (открыть руководство), а затем i startup TAB (поиск по индексу для "startup"), и выберите startup screen. (Другие варианты выбора также возьмут вас там.)

-1

Спасибо, @Drew. Добавление следующего в мой файл .emacs дает мне поведение, которое я желаю.

(if (= (length command-line-args) 1) 
    (setq initial-buffer-choice 
     (lambda() (get-buffer "*ielm*")))) 
+0

Вам действительно не нужен оператор if. У вас может быть только setq в вашем init. Кроме того, это не сработает, если вы не запустили ielm в файле инициализации, потому что он будет работать только в том случае, если буфер существует, и он будет существовать только в том случае, если вы вызвали функцию ielm. Вероятно, вам просто нужно установить выбор исходного буфера для функции ielm. –

+0

Tim X, мне кажется, что мне действительно нужен оператор if, потому что, если я вызываю 'emacs foo', я хочу видеть только файл foo. Без оператора if я заканчиваю с '* ielm *' в верхнем окне и 'foo' в нижнем окне. –

+0

Кроме того, я думал, что было бы слишком очевидно упомянуть, что буфер должен существовать первым, но, я думаю, нет. –