0

これは私がどこかでオンラインで見つけた機能であり、Linux で問題が発生したことはありませんでしたが、emacs 24 の macbook で実行すると、以下のエラーが発生します。どんな助けでも大歓迎です。

;; (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()
4

2 に答える 2

1

の 5 番目のパラメーターdefine-minor-modeはキーマップであると予想され、例では value が渡されます-1

nilキーマップがない場合は、に変更する必要があります。

...
;; The minor mode bindings.
nil                                  ;; Not -1
(if (symbol-value sensitive-mode)
...

-1また、として渡すinit-valueこともあまり意味がありません。一般的には である必要がありますnil

于 2015-12-04T21:54:18.480 に答える
0

マイナー モードを定義するコードを表示します (コメントなし)。マイナー モードのキーマップでキーをバインドするコードを表示します。表示するエラーは、表示するコードとは直接関係ありません。

特に、defvarkeymap を定義する を表示しますsensitive-mode-mapdefvar問題と思われるのは、そのsexpです。

これは によって使用されるコードですdefvar。明らかに:

(let ((m -1))
   (cond ((keymapp m) m)
         ((listp m) (easy-mmode-define-keymap m))
         (t (error "Invalid keymap %S" m)))

そして明らかに、to のバインディングはm-13 番目のcond句が評価されることを意味します。これは、Emacsプラットフォーム、IMOでは機能しませんでした---initファイルまたは他のコードが、defvar評価される前にそのキーマップの値を実際に設定しない限り。その場合、defvarは何もしません。

于 2015-12-04T16:13:40.773 に答える