Значение символа в качестве переменной равно void: debian-emacs-flavour при запуске ispell для файла tex - PullRequest
0 голосов
/ 05 сентября 2011

Я получаю эту ошибку, когда пытаюсь запустить ispell. Я не уверен, откуда возникла проблема, но я недавно обновил (на Ubuntu 10.04) до новейшей версии emacs 23.3 из 23.1. Я только что скопировал emacs-goodies-el из сопровождающего пакета debian в мой site-lisp, который я поместил в свою домашнюю папку. Кажется, все работает нормально, если я начну с файлов, которые не были отредактированы в старой версии, или создаю новые файлы. Если я открываю текс-файлы, которые я редактировал ранее, это сбрасывает их. Тогда любой файл, который я пытаюсь открыть после, имеет те же ошибки ниже. На другом компьютере с аналогичной настройкой я проделал то же самое с тем же .emacs, и у него нет проблем. Я могу открыть эти самые текс-файлы просто отлично. Есть ли где-то некоторая информация, как это, хранится или предложения о том, где искать. Если я открываю новый файл, он говорит:

Enabling Flyspell mode gave an error

Тогда запуск M-x ispell дает:

not: Symbol's value as variable is void: debian-emacs-flavor

Вот ошибка. Что сейчас странно: flyspell / ispell отлично работает в файле, с которым у меня были проблемы раньше, но если я создаю новые файлы, он, похоже, не работает. Если я создаю новые файлы не в текстовом режиме, у меня, похоже, нет проблем. Также я должен отметить, что когда я работаю над латексом / текс, я обычно запускаю emacs -q --load ~\.emacstex. У меня есть чувство, может быть, эта переменная установлена ​​в default.el (не уверен в этом) ?? Вот ошибка:

Debugger entered--Lisp error: (void-variable debian-emacs-flavor)
  (member debian-emacs-flavor (quote (emacs20 emacs21)))
  (not (member debian-emacs-flavor (quote ...)))
  (if (not (member debian-emacs-flavor ...)) (delete-process ispell-process) (process-send-eof ispell-process) (if (eq ... ...) (ispell-accept-output 1)) (if (eq ... ...) (kill-process ispell-process)) (while (not ...) (if ... ... ...)))
  ispell-delete-ispell-process()
  (if ispell-async-processp (ispell-delete-ispell-process) (ispell-send-string "\n") (kill-buffer ispell-output-buffer) (kill-buffer ispell-session-buffer) (setq ispell-output-buffer nil ispell-session-buffer nil))
  (if (not (and ispell-process ...)) (or no-error (error "There is no ispell process running!")) (if ispell-async-processp (ispell-delete-ispell-process) (ispell-send-string "\n") (kill-buffer ispell-output-buffer) (kill-buffer ispell-session-buffer) (setq ispell-output-buffer nil ispell-session-buffer nil)) (setq ispell-process nil) (message "Ispell process killed") nil)
  ispell-kill-ispell(t)
  (if (and ispell-buffer-local-name (not ...)) (ispell-kill-ispell t))
  ispell-buffer-local-words()
  ispell-accept-buffer-local-defs()
  (if (not recheckp) (ispell-accept-buffer-local-defs))
  ispell-region(1 24)
  ispell-buffer()
  (if (and (boundp ...) transient-mark-mode (boundp ...) mark-active) (ispell-region (region-beginning) (region-end)) (ispell-buffer))
  ispell()
  call-interactively(ispell t nil)
  execute-extended-command(nil)
  call-interactively(execute-extended-command nil nil)

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

debian-emacs-flavor, очевидно, является переменной, установленной сопровождающими пакетов Debian Она не будет существовать в других дистрибутивах Emacs, но я предполагаю из вашей ошибки, что это требуется в emacs-goodies.el , Два решения: уродливым хаком было бы добавить следующее в ваш .emacs для предоставления переменной.

 (defconst debian-emacs-flavor 'emacs23
   "A symbol representing the particular debian flavor of emacs running.
 Something like 'emacs20, 'xemacs20, etc.")

Это может решить непосредственную проблему, рискуя при этом вызвать новые проблемы с другими частями пакета emacs-goodies.el.

Лучшим решением было бы не смешивать пакеты Ubuntu и Debian, а просто установить нужные вам пакеты из репозиториев Ubuntu или из исходного кода. Больше работы, но меньше вероятность возникновения подобных конфликтов в будущем.

1 голос
/ 06 сентября 2011

Отсутствие определения для переменной debian-emacs-flavor почти наверняка вызвано использованием emacs -q при запуске.Обычный способ избежать загрузки ненужной ненужной информации - сделать условия в вашем .emacs условными, возможно, вот так;

(eval-after-load 'tex-mode '(load-file (expand-file-name "~/.emacstex")))

Таким образом, эти настройки будут загружены только тогда, когда вы действительно откроете файл в режиме TeX.(или производный режим ... я думаю).Вам нужно будет сделать что-то дополнительное, чтобы избежать загрузки ненужных вещей из вашего .emacs, когда вы действительно хотите редактировать файлы TeX.(Выходить и перезапускать Emacs все равно не рекомендуется, так как вы теряете историю уничтоженных вызовов и т.1013 * Редактировать : Рефакторинг после более внимательного прочтения ваших вопросов.

...