Я изменил настройки в Emacs. Теперь, каждый раз, когда я пытаюсь открыть файл из командной строки, это открывает a *scratch*
буфер сверху файла. Существует ли способ избавиться от этого? Или способ сбросить мой emacs запускает настройки?
Если вы хотите сбросить настройки emacs, вы можете переименовать текущий файл .emacs во что-нибудь еще, чтобы иметь резервную копию, а затем перезапустите Emacs.
M-x customize-group
initialization
Затем при выборе начального буфера вы можете выбрать один из следующих вариантов:
Наконец, нажмите сохранить для будущих сеансов .
Вы также можете включить / выключить его. Посмотрим, поможет ли это.
(Другая вещь, которую вы, вероятно, захотите сделать, - это открыть только один буфер при запуске. Я не помню наизусть, как это делается. Я опубликую обновление, если найду это).
Вы можете перезагрузить ваш .emacs
файл с помощью M-x load-file ~/.emacs. Есть и другие способы сделать это, посмотрите вопрос Как загрузить изменения в .emacs без перезагрузки 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
. Быстрый поиск в этом файле приводит меня к ошибке, и я могу ее исправить.