我正在尝试在我的新 Fedora 20 计算机上创建一个.emacs
文件,当我使用 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,遗憾的是我不能接受这两个答案。
答案1
报告的意思就在前两行:
Debugger entered--Lisp error: (file-error "Cannot open load file" "browse-kill-ring")
require(browse-kill-ring)
您正在尝试加载browse-kill-ring
,但 emacs 无法执行此操作。
你需要安装这个包在你可以使用它之前。
答案2
您需要将库的位置添加browse-kill-ring.el
到变量中load-path
。例如,如果browse-kill-ring.el
位于位置,/some/directory/browse-kill-ring.el
则将其添加到您的初始化文件 ( ~/.emacs
):
(add-to-list 'load-path "some/directory/browse-kill-ring.el")