2010-03-10 2 views
6

Я изменил настройку в Emacs. Теперь, когда я пытаюсь открыть файл из командной строки, он открывает буфер *scratch* поверх файла. Есть ли способ избавиться от этого? Или способ сбросить настройки запуска emacs?Открытие emacs без буфера нуля при открытии файла

+1

Скорее всего, вы установили 'initial-buffer-choice''' ', возможно, через среду настройки -> Инициализация. – starblue

ответ

3

Вы можете перезагрузить свой файл .emacs с помощью M-x load-file ~/.emacs. Есть и другие способы сделать это, посмотрите вопрос How can I load changes to my .emacs without rebooting Emacs?.

Если вы думаете, у вас есть проблема с файлом .emacs, попробуйте открыть с помощью -q вариант:

emacs -q somefile 

Если это работает, как ожидалось, вы, вероятно, есть ошибка в вашем .emacs, и хороший способ для отладки .emacs является использование опции --debug-init:

emacs --debug-init 

который расскажет Emacs, чтобы обеспечить трассировку стека любой ошибки он сталкивается при загрузке вашего .emacs, что-то вроде:

Debugger entered--Lisp error: (wrong-type-argument symbolp (car n)) 
(setq (car n) 3) 
(let ((n ...)) (setq (car n) 3)) 
eval-buffer(#<buffer *load*<2>> nil "/home/tjackson/.emacs.tjackson.el" nil t) ; Reading at buffer position 161460 
load-with-code-conversion("/home/tjackson/.emacs.tjackson.el" "/home/tjackson/.emacs.tjackson.el" nil nil) 
load("/home/tjackson/.emacs.tjackson.el") 
(let ((debug-on-error t)) (load user-init-file)) 
(if init-file-debug (let (...) (load user-init-file)) (error (format "Problems while loading the file %s: %s" user-init-file ...))) 
(condition-case err (load user-init-file) (error (if init-file-debug ... ...))) 
(if (file-exists-p user-init-file) (condition-case err (load user-init-file) (error ...))) 
eval-buffer(#<buffer *load*> nil "/home/tjackson/.emacs" nil t) ; Reading at buffer position 12150 
load-with-code-conversion("/home/tjackson/.emacs" "/home/tjackson/.emacs" t t) 
load("~/.emacs" t t) 
#[nil "....."] 
command-line() 
normal-top-level() 

И что в целом может указывать на то, что может быть неправильным. В моем случае выше, я неправильно использую setq, и похоже, что он находится внутри оператора let, который находится внутри файла /home/tjackson/.emacs.tjackson.el. Быстрый поиск в этом файле приводит меня к ошибке, и я могу это исправить.

+1

Ник сказал, что он открывает буфер нуля в верхней части файла (выделение мое), что означает для меня, что он вызывает emacs с «emacs foo», и в этом случае foo должен появиться поверх * scratch *. царапины будут, но foo должен быть указанным буфером ... –

+0

@Brian Спасибо, я обновил ответ, чтобы отразить вашу интерпретацию (что звучит разумно). –

1

Если вы хотите сбросить настройки emacs, вы можете переименовать текущий файл .emacs в другое, чтобы иметь резервную копию, а затем перезапустить Emacs.

4
M-x customize-group 
initialization 

Затем на Initial буфера выбора, вы можете выбрать среди:

  • Экран загрузки
  • Каталог
  • Файл
  • царапанию буфер

Наконец, нажмите на сохранить для будущих сессий.

Вы также можете включить или выключить его. Посмотрите, поможет ли это.

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

1

Моя ~/.emacs.d папка принадлежала root с ограниченными правами r/w/x, поэтому мне не удалось получить доступ как к любому пользователю, не являющемуся пользователем root.

Убедитесь, что у вашего текущего пользователя есть привилегии чтения для конфигурационных файлов/каталогов emacs.

Это фиксированное для меня:

sudo chown -R user:group ~/.emacs.d/ 

В -R работает рекурсивно в каталоге.

0

Я удалил свой каталог ~/.emacs.d и исправил ситуацию для меня.

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