0

I am trying to make up a .emacs file on my new Fedora 20 computer, and get this line when I use emacs -debug-init &. I expect it to be a trivial mistake, but I find the help on this too detailed and confusing, so can anyone please interpret it for me and say what the error is likely to be?

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

And here is my .init file:

;; 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.
 )

Solved:

I followed the answers from @sds and @Drew, installed the browse-kill-ring.el package in my .emacs.d directory, and used the information in: http://ergoemacs.org/emacs/emacs_installing_packages.html to put the following in my .init file

;; 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”

That put everything right, thanks @sds and @Drew, pity I can't accept both answers.

2

The meaning of the report is in the first two lines:

Debugger entered--Lisp error: (file-error "Cannot open load file" "browse-kill-ring")
  require(browse-kill-ring)

you are trying to load browse-kill-ring and emacs cannot do it.

You need to install this package before you can use it.

1

You need to add the location of library browse-kill-ring.el to your variable load-path. For example, if browse-kill-ring.el is at location /some/directory/browse-kill-ring.el then add this to your init file (~/.emacs):

(add-to-list 'load-path "some/directory/browse-kill-ring.el")

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.