Emacs
Emacs 我如何解釋這個 Lisp 調試器報告
我正在嘗試
.emacs
在我的新 Fedora 20 電腦上創建一個文件,並在使用emacs -debug-init &
. 我希望這是一個微不足道的錯誤,但我發現這方面的幫助過於詳細和令人困惑,所以任何人都可以為我解釋它並說出錯誤可能是什麼?Debugger entered--Lisp error: (file-error "Cannot open load file" "browse-kill-ring") require(browse-kill-ring) eval-buffer(#<buffer *load*> nil "/home/Harry/.emacs" nil t) ; Reading at buffer position 2772 load-with-code-conversion("/home/Harry/.emacs" "/home/Harry/.emacs" t t) load("~/.emacs" t t) command-line() normal-top-level()
這是我的 .init 文件:
;; Uncomment next line to give response to check .emacs loaded (warn "Loading .emacs") ;; ----------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Set up colors ; (defun good-colors () (progn (set-background-color "DimGray") (set-foreground-color "LightGray") (set-cursor-color "DarkSlateBlue") (set-border-color "DimGray") (set-mouse-color "DarkSlateBlue") (set-face-background 'default "DimGray") (set-face-background 'region "DarkSlateGray") (set-face-background 'highlight "DarkSlateBlue") (set-face-background 'modeline "DarkSlateBlue") ;;; CornflowerBlue") (set-face-foreground 'default "LightGray") (set-face-foreground 'region "Ivory") (set-face-foreground 'highlight "LightGray") ;;; DimGray") (set-face-foreground 'modeline "LightGray") )) ;; (good-colors) ;; calls the previously-defined function ;; ==================== ;; insert date and time (defvar current-date-time-format "%a %b %d %H:%M:%S %Z %Y" "Format of date to insert with `insert-current-date-time' func See help of `format-time-string' for possible replacements") (defvar current-time-format "%a %H:%M:%S" "Format of date to insert with `insert-current-time' func. Note the weekly scope of the command's precision.") (defun insert-current-date-time () "insert the current date and time into current buffer. Uses `current-date-time-format' for the formatting the date/time." (interactive) (insert "==========\n") ; (insert (let () (comment-start))) (insert (format-time-string current-date-time-format (current-time))) (insert "\n") ) (defun insert-current-time () "insert the current time (1-week scope) into the current buffer." (interactive) (insert (format-time-string current-time-format (current-time))) (insert "\n") ) (global-set-key "\C-c\C-d" 'insert-current-date-time) (global-set-key "\C-c\C-t" 'insert-current-time) ;; Set current line as title in my Hints file, e.g. "TITLE" becomes .. ;; -------- TITLE -------- (fset 'title (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([1 45 45 45 45 45 45 45 45 32 5 32 45 45 45 45 45 45 45 45 1 escape 120 99 101 110 116 tab 108 105 tab return] 0 "%d")) arg))) (global-set-key "\C-c\C-T" 'title) ;; * Customization defaults in this file ;; From: http://mwolson.org/notes/PlugEmacsConfPresentation.html ;; ;; Uncomment this to cause the Tab key to insert spaces instead of ;; tabs. The default is to insert tabs. ;; (setq-default indent-tabs-mode nil) ;; ;; Enable browsing of kill ring (that is, recently-killed/cut text) ;; when you hit M-y (require 'browse-kill-ring) (defadvice yank-pop (around kill-ring-browse-maybe (arg)) "If last action was not a yank, run `browse-kill-ring' instead." (if (not (eq last-command 'yank)) (browse-kill-ring) ad-do-it)) (ad-activate 'yank-pop) ;; ;; - Put backup data into the ~/.emacs.d/backup directory, instead of ;; putting backup files in the current directory. I find this to ;; be much cleaner. ;; (custom-set-variables '(backup-directory-alist (quote (("." . "~/.emacs.d/backup")))) ) (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(inhibit-startup-buffer-menu t) '(inhibit-startup-screen t)) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. )
解決了:
我按照@sds 和@Drew 的答案,
browse-kill-ring.el
在我的目錄中安裝了包.emacs.d
,並使用以下資訊: http ://ergoemacs.org/emacs/emacs_installing_packages.html 將以下內容放入我的.init
文件中;; Tell emacs where is your personal elisp lib dir ;; this is default dir for extra packages (add-to-list 'load-path "~/.emacs.d/") ;; load the packaged named xyz. (load "browse-kill-ring") ;; best not to include the ending “.el” or “.elc”
這一切都正確,感謝@sds 和@Drew,可惜我不能同時接受這兩個答案。
報告的意思在前兩行:
Debugger entered--Lisp error: (file-error "Cannot open load file" "browse-kill-ring") require(browse-kill-ring)
您正在嘗試載入
browse-kill-ring
,而 emacs 無法做到。您需要先安裝此軟體包,然後才能使用它。
您需要將庫的位置添加
browse-kill-ring.el
到您的變數load-path
中。例如,如果browse-kill-ring.el
在 location 中,/some/directory/browse-kill-ring.el
則將其添加到您的 init 文件 (~/.emacs
) 中:(add-to-list 'load-path "some/directory/browse-kill-ring.el")