[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Attempt to modify read-only value
From: |
Miles Bader |
Subject: |
Re: Attempt to modify read-only value |
Date: |
23 Apr 2002 17:43:17 +0900 |
Juanma Barranquero <address@hidden> writes:
> I'm getting "attempt to modify read-only value" while bootstraping.
I've fixed it in CVS:
2002-04-23 Miles Bader <address@hidden>
* menu-bar.el (menu-bar-update-buffers): Don't use constant lists
for command menu entries, since the low-level menu code modifies
them. Cache the resulting list.
(menu-bar-buffers-menu-command-entries): New variable.
Index: menu-bar.el
===================================================================
RCS file: /cvs/emacs/lisp/menu-bar.el,v
retrieving revision 1.207
retrieving revision 1.208
diff -u -p -r1.207 -r1.208
--- menu-bar.el 23 Apr 2002 05:01:50 -0000 1.207
+++ menu-bar.el 23 Apr 2002 08:34:57 -0000 1.208
@@ -1282,6 +1282,9 @@ key (or menu-item)"))
file))
(car elt)))
+;; Used to cache the menu entries for commands in the Buffers menu
+(defvar menu-bar-buffers-menu-command-entries nil)
+
(defun menu-bar-update-buffers (&optional force)
;; If user discards the Buffers item, play along.
(and (lookup-key (current-global-map) [menu-bar buffer])
@@ -1357,20 +1360,27 @@ key (or menu-item)"))
`((frames-separator "--")
(frames menu-item "Frames" ,frames-menu))))))
- ;; Add in some normal commands at the end of the menu
+ ;; Add in some normal commands at the end of the menu. We use
+ ;; the copy cached in `menu-bar-buffers-menu-command-entries'
+ ;; if it's been set already. Note that we can't use constant
+ ;; lists for the menu-entries, because the low-level menu-code
+ ;; modifies them.
+ (unless menu-bar-buffers-menu-command-entries
+ (setq menu-bar-buffers-menu-command-entries
+ (list '(command-separator "--")
+ (list 'select-named-buffer
+ 'menu-item
+ "Select Named Buffer..."
+ 'switch-to-buffer
+ :help "Prompt for a buffer name, and select that
buffer in the current window")
+ (list 'list-all-buffers
+ 'menu-item
+ "List All Buffers"
+ 'list-buffers
+ :help "Pop up a window listing all emacs buffers"
+ ))))
(setq buffers-menu
- (nconc buffers-menu
- '((command-separator "--")
- (select-named-buffer
- menu-item
- "Select Named Buffer..."
- switch-to-buffer
- :help "Prompt for a buffer name, and select that
buffer in the current window")
- (list-all-buffers
- menu-item
- "List All Buffers"
- list-buffers
- :help "Pop up a window listing all emacs buffers"))))
+ (nconc buffers-menu menu-bar-buffers-menu-command-entries))
(setq buffers-menu (cons 'keymap (cons "Select Buffer" buffers-menu)))
(define-key (current-global-map) [menu-bar buffer]
-Miles
--
80% of success is just showing up. --Woody Allen