Закрытие emacs 23 в Ubuntu 12.04 и 14.04 занимает очень много времени. Я рекурсивно разделил пополам мой файл .emacs (согласно совету Дрю здесь ) и нашел следующий фрагмент в качестве оскорбительного бита:
;;auto-complete
(add-to-list 'load-path "~/.emacs.d/")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)
(define-key ac-completing-map "\t" 'ac-complete) ;; change return key with tab to ac
(define-key ac-completing-map [tab] 'ac-complete)
(define-key ac-completing-map [return] nil)
(require 'auto-complete-latex)
(setq ac-l-dict-directory "~/.emacs.d/ac-l-dict/")
;;(add-to-list 'ac-modes 'foo-mode)
;;(add-hook 'foo-mode-hook 'ac-l-setup)
(require 'ac-math)
(add-to-list 'ac-modes 'latex-mode) ; make auto-complete aware of {{{latex-mode}}}
(defun ac-latex-mode-setup () ; add ac-sources to default ac-sources
(setq ac-sources
(append '(ac-source-math-latex ac-source-latex-commands ac-source-math-unicode)
ac-sources))
)
;;(require 'auto-complete)
(add-hook 'LaTeX-mode-hook 'ac-latex-mode-setup)
;;(ac-flyspell-workaround) ; workaround if using flyspell
`
Любой совет, решающий эту не опасную для жизни, но раздражающую ошибку, очень приветствуется.
** Редактирование на основе ответов @lawlist и @Drew: ** Спасибо @lawlist и @Drew за потраченное время. переменная description не показывает ничего прикрепленного к моему .emacs
kill-emacs-hook is a variable defined in `C source code'.
Its value is
(ac-comphist-save bc-bookmarks-save save-place-kill-emacs-hook recentf-save-list)
kill-emacs-query-functions возвращает
kill-emacs-query-functions's value is (dictree-save-modified)
@Drew: настройка этих крючков выходит за рамки моих возможностей. Должен ли я прокомментировать элементы один за другим? Как? Еще раз спасибо.
M-x describe-variable RET kill-emacs-hook RET
и посмотреть, есть ли какие-то вещи, прикрепленные к этому хуку, которые загружаются кодом, нарушающим работу. Возможно также проверьте,kill-emacs-query-functions
что прикреплено к этому крюку. Вот ссылка на инструкции, описывающие использование этих крюков: gnu.org/software/emacs/manual/html_node/elisp/...M-x eval-expression RET (remove-hook 'kill-emacs-hook 'ac-comphist-save) RET
(remove-hook 'kill-emacs-hook 'ac-comphist-save)
, тогда BINGO! Все, что вам нужно сделать, это найти(add-hook 'kill-emacs-hook 'ac-comphist-save)
в файлах исходного кода и закомментировать его. Это, вероятно, в файле с именемauto-complete.el
. Если у вас естьauto-complete.elc
желание и удалите его. Как только все работает к вашему удовольствию, вы можете скомпилировать новый с помощью байтаM-x byte-compile . . .
. Что касается вашего ispell, вы, вероятно, изменили его как-то. Вы можете удалить ispell.elc и байтово скомпилировать новый.Ответы:
Проблема решена благодаря @lawlist, спасибо за ваше время и знания!
Если Emacs завершит работу сразу после оценки
(remove-hook 'kill-emacs-hook 'ac-comphist-save)
, тогда BINGO! Все, что вам нужно сделать, это найти(add-hook 'kill-emacs-hook 'ac-comphist-save)
в файлах исходного кода и закомментировать его. Это, вероятно, в файле с именемauto-complete.el
. Если у вас естьauto-complete.elc
желание и удалите его. Как только все работает к вашему удовольствию, вы можете скомпилировать новый с помощью Mx byte-compile.источник
ac-comphist-save
отвечает за задержку, которую вы испытываете при выходе из Emacs. Эта функция прикреплена к функцииkill-emacs-hook
, которая срабатывает при выходе из Emacs. Комментируя(add-hook 'kill-emacs-hook 'ac-comphist-save)
, вы предотвращаете присоединение функцииac-comphist-save
кkill-emacs-hook
. Если вы сейчас бежитеM-x describe-variable RET kill-emacs-hook RET
, вы должны увидеть, чтоac-comphist-save
его больше нет. Если библиотека все еще поддерживается, вы можете отправить отчет об ошибке сопровождающему в будущем.