Ошибка с второстепенным режимом в Emacs 24 на MacBook
Это была функция, которую я где-то нашел в Интернете, и у меня никогда не было проблем в Linux, но при запуске на MacBook в Emacs 24 я получаю сообщение об ошибке ниже. Любая помощь будет оценена.
;; (define-minor-mode sensitive-mode
;; "For sensitive files like password lists.
;; It disables backup creation and auto saving.
;; With no argument, this command toggles the mode.
;; Non-null prefix argument turns on the mode.
;; Null prefix argument turns off the mode."
;; ;; The initial value.
;; -1
;; ;; The indicator for the mode line.
;; " Sensitive"
;; ;; The minor mode bindings.
;; -1
;; (if (symbol-value sensitive-mode)
;; (progn
;; ;; disable backups
;; (set (make-local-variable 'backup-inhibited) 1)
;; ;; disable auto-save
;; (if auto-save-default
;; (auto-save-mode -1)))
;; ;resort to default value of backup-inhibited
;; (kill-local-variable 'backup-inhibited)
;; ;resort to default auto save setting
;; (if auto-save-default
;; (auto-save-mode 1))))
;; (setq auto-mode-alist
;; (append '(("\\.gpg$" . sensitive-mode))
;; auto-mode-alist))
Ошибка:
Debugger entered--Lisp error: (error "Invalid keymap -1")
2 signal(error ("Invalid keymap -1"))
3 error("Invalid keymap %S" -1)
4 (cond ((keymapp m) m) ((listp m) (easy-mmode-define-keymap m)) (t (error "Invalid keymap %S" m)))
5 (let ((m -1)) (cond ((keymapp m) m) ((listp m) (easy-mmode-define-keymap m)) (t (error "Invalid keymap %S" m))))
6 (defvar sensitive-mode-map (let ((m -1)) (cond ((keymapp m) m) ((listp m) (easy-mmode-define-keymap m)) (t (error "$
7 (progn (progn :autoload-end (defvar sensitive-mode -1 "Non-nil if Sensitive mode is enabled.\nUse the command `sens$
8 eval-buffer(#<buffer *load*-983931> nil "/Users/bigtyme/Dropbox/SyncedPrograms/emacs/initFiles/setup.el" nil t) ;$
9 load-with-code-conversion("/Users/bigtyme/Dropbox/SyncedPrograms/emacs/initFiles/setup.el" "/Users/bigtyme/Dropbox/$
10 load("/Users/bigtyme/Dropbox/SyncedPrograms/emacs/initFiles/setup.el" nil nil t)
11 load-file("~/Dropbox/SyncedPrograms/emacs/initFiles/setup.el")
12 eval-buffer(#<buffer *load*> nil "/Users/bigtyme/.emacs" nil t) ; Reading at buffer position 2000
13 load-with-code-conversion("/Users/bigtyme/.emacs" "/Users/bigtyme/.emacs" t t)
14 load("~/.emacs" t t)
15 #[0 "^H\205\262^@ \306=\203^Q^@\307^H\310Q\202;^@ \311=\204^^^@\307^H\312Q\202;^@\313\307\314\315#\203*^@\316\2$
16 command-line()
17 normal-top-level()
2 ответа
5-й параметр define-minor-mode
ожидается, что это будет таблица ключей, где ваш пример передает значение -1
,
Вы должны изменить это на nil
если у вас нет карты ключей.
...
;; The minor mode bindings.
nil ;; Not -1
(if (symbol-value sensitive-mode)
...
Также, проходя -1
как init-value
на самом деле не имеет смысла, это также должно быть nil
,
Покажите код, который определяет второстепенный режим (без комментариев). Покажите любой код, который связывает ключи в раскладке вспомогательного режима. Отображаемая ошибка не имеет прямого отношения к отображаемому вами коду.
В частности, показать defvar
который определяет раскладку sensitive-mode-map
, Это то, что defvar
Кажется, что проблема в сексе.
Это код, используемый defvar
, по-видимому:
(let ((m -1))
(cond ((keymapp m) m)
((listp m) (easy-mmode-define-keymap m))
(t (error "Invalid keymap %S" m)))
И ясно, что связывание m
в -1
означает, что 3-й cond
пункт оценивается. Это никогда не могло бы работать на любой платформе Emacs, IMO - если ваш файл инициализации или какой-либо другой код на самом деле не установили значение этой раскладки клавиатуры до этого defvar
оценивается. В этом случае defvar
не будет ничего делать