# HG changeset patch # User Dan Nicolaescu # Date 1256365923 0 # Node ID b0a732611398bdc227717c2614c6bcdd186b3e4a # Parent f8478bbd8ebedb6c816c677b319bddf2436bfdd5 * keymap.c (Fmake_sparse_keymap): Purecopy the name. * eval.c (Fautoload): Purecopy the filename. Simplify. * category.c (Fdefine_category): Purecopy docstring. * international/mule-cmds.el (set-language-info-alist): Purecopy lang-env. (leim-list-header, leim-list-entry-regexp): Change defvars to defconst. (charset): Purecopy the name. (define-char-code-property): Purecopy string arguments. * emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable): Purecopy string arguments. * emacs-lisp/lisp-mode.el (emacs-lisp-mode-map): * ediff-hook.el (menu-bar-ediff-menu): * buff-menu.el (Buffer-menu-mode-map): Purecopy names and tooltips. * bookmark.el (menu-bar-bookmark-map): Add :help and purecopy the name. diff -r f8478bbd8ebe -r b0a732611398 lisp/ChangeLog --- a/lisp/ChangeLog Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/ChangeLog Sat Oct 24 06:32:03 2009 +0000 @@ -1,3 +1,18 @@ +2009-10-24 Dan Nicolaescu + + * international/mule-cmds.el (set-language-info-alist): Purecopy lang-env. + (leim-list-header, leim-list-entry-regexp): Change defvars to defconst. + (charset): Purecopy the name. + (define-char-code-property): Purecopy string arguments. + + * emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable): + Purecopy string arguments. + + * emacs-lisp/lisp-mode.el (emacs-lisp-mode-map): + * ediff-hook.el (menu-bar-ediff-menu): + * buff-menu.el (Buffer-menu-mode-map): Purecopy names and tooltips. + * bookmark.el (menu-bar-bookmark-map): Add :help and purecopy the name. + 2009-10-24 Glenn Morris * comint.el (comint-dynamic-list-completions): diff -r f8478bbd8ebe -r b0a732611398 lisp/bookmark.el --- a/lisp/bookmark.el Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/bookmark.el Sat Oct 24 06:32:03 2009 +0000 @@ -2101,16 +2101,36 @@ ;;;###autoload (defvar menu-bar-bookmark-map (let ((map (make-sparse-keymap "Bookmark functions"))) - (define-key map [load] '("Load a Bookmark File..." . bookmark-load)) - (define-key map [write] '("Save Bookmarks As..." . bookmark-write)) - (define-key map [save] '("Save Bookmarks" . bookmark-save)) - (define-key map [edit] '("Edit Bookmark List" . bookmark-bmenu-list)) - (define-key map [delete] '("Delete Bookmark..." . bookmark-delete)) - (define-key map [rename] '("Rename Bookmark..." . bookmark-rename)) - (define-key map [locate] '("Insert Location..." . bookmark-locate)) - (define-key map [insert] '("Insert Contents..." . bookmark-insert)) - (define-key map [set] '("Set Bookmark..." . bookmark-set)) - (define-key map [jump] '("Jump to Bookmark..." . bookmark-jump)) + (define-key map [load] + `(menu-item ,(purecopy "Load a Bookmark File...") bookmark-load + :help ,(purecopy "Load bookmarks from a bookmark file)"))) + (define-key map [write] + `(menu-item ,(purecopy "Save Bookmarks As...") bookmark-write + :help ,(purecopy "Write bookmarks to a file (reading the file name with the minibuffer)"))) + (define-key map [save] + `(menu-item ,(purecopy "Save Bookmarks") bookmark-save + :help ,(purecopy "Save currently defined bookmarks"))) + (define-key map [edit] + `(menu-item ,(purecopy "Edit Bookmark List") bookmark-bmenu-list + :help ,(purecopy "Display a list of existing bookmarks"))) + (define-key map [delete] + `(menu-item ,(purecopy "Delete Bookmark...") bookmark-delete + :help ,(purecopy "Delete a bookmark from the bookmark list"))) + (define-key map [rename] + `(menu-item ,(purecopy "Rename Bookmark...") bookmark-rename + :help ,(purecopy "Change the name of a bookmark"))) + (define-key map [locate] + `(menu-item ,(purecopy "Insert Location...") bookmark-locate + :help ,(purecopy "Insert the name of the file associated with a bookmark"))) + (define-key map [insert] + `(menu-item ,(purecopy "Insert Contents...") bookmark-insert + :help ,(purecopy "Insert the text of the file pointed to by a bookmark"))) + (define-key map [set] + `(menu-item ,(purecopy "Set Bookmark...") bookmark-set + :help ,(purecopy "Set a bookmark named inside a file."))) + (define-key map [jump] + `(menu-item ,(purecopy "Jump to Bookmark...") bookmark-jump + :help ,(purecopy "Jump to a bookmark (a point in some file)"))) map)) ;;;###autoload diff -r f8478bbd8ebe -r b0a732611398 lisp/buff-menu.el --- a/lisp/buff-menu.el Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/buff-menu.el Sat Oct 24 06:32:03 2009 +0000 @@ -153,67 +153,67 @@ (define-key map (kbd "M-s a M-C-s") 'Buffer-menu-isearch-buffers-regexp) (define-key map [menu-bar Buffer-menu-mode] (cons "Buffer Menu" menu-map)) (define-key menu-map [quit] - '(menu-item "Quit" quit-window - :help "Mark buffer on this line to be deleted by x command")) + `(menu-item ,(purecopy "Quit") quit-window + :help ,(purecopy "Mark buffer on this line to be deleted by x command"))) (define-key menu-map [rev] - '(menu-item "Refresh" revert-buffer - :help "Refresh the *Buffer List* buffer contents")) + `(menu-item ,(purecopy "Refresh") revert-buffer + :help ,(purecopy "Refresh the *Buffer List* buffer contents"))) (define-key menu-map [s0] '("--")) (define-key menu-map [tf] - '(menu-item "Show only file buffers" Buffer-menu-toggle-files-only + `(menu-item ,(purecopy "Show only file buffers") Buffer-menu-toggle-files-only :button (:toggle . Buffer-menu-files-only) - :help "Toggle whether the current buffer-menu displays only file buffers")) + :help ,(purecopy "Toggle whether the current buffer-menu displays only file buffers"))) (define-key menu-map [s1] '("--")) ;; FIXME: The "Select" entries could use better names... (define-key menu-map [sel] - '(menu-item "Select marked" Buffer-menu-select - :help "Select this line's buffer; also display buffers marked with `>'")) + `(menu-item ,(purecopy "Select marked") Buffer-menu-select + :help ,(purecopy "Select this line's buffer; also display buffers marked with `>'"))) (define-key menu-map [bm2] - '(menu-item "Select two" Buffer-menu-2-window - :help "Select this line's buffer, with previous buffer in second window")) + `(menu-item ,(purecopy "Select two") Buffer-menu-2-window + :help ,(purecopy "Select this line's buffer, with previous buffer in second window"))) (define-key menu-map [bm1] - '(menu-item "Select current" Buffer-menu-1-window - :help "Select this line's buffer, alone, in full frame")) + `(menu-item ,(purecopy "Select current") Buffer-menu-1-window + :help ,(purecopy "Select this line's buffer, alone, in full frame"))) (define-key menu-map [ow] - '(menu-item "Select in other window" Buffer-menu-other-window - :help "Select this line's buffer in other window, leaving buffer menu visible")) + `(menu-item ,(purecopy "Select in other window") Buffer-menu-other-window + :help ,(purecopy "Select this line's buffer in other window, leaving buffer menu visible"))) (define-key menu-map [tw] - '(menu-item "Select in current window" Buffer-menu-this-window - :help "Select this line's buffer in this window")) + `(menu-item ,(purecopy "Select in current window") Buffer-menu-this-window + :help ,(purecopy "Select this line's buffer in this window"))) (define-key menu-map [s2] '("--")) (define-key menu-map [is] - '(menu-item "Regexp Isearch marked buffers" Buffer-menu-isearch-buffers-regexp - :help "Search for a regexp through all marked buffers using Isearch")) + `(menu-item ,(purecopy "Regexp Isearch marked buffers") Buffer-menu-isearch-buffers-regexp + :help ,(purecopy "Search for a regexp through all marked buffers using Isearch"))) (define-key menu-map [ir] - '(menu-item "Isearch marked buffers" Buffer-menu-isearch-buffers - :help "Search for a string through all marked buffers using Isearch")) + `(menu-item ,(purecopy "Isearch marked buffers") Buffer-menu-isearch-buffers + :help ,(purecopy "Search for a string through all marked buffers using Isearch"))) (define-key menu-map [s3] '("--")) (define-key menu-map [by] - '(menu-item "Bury" Buffer-menu-bury - :help "Bury the buffer listed on this line")) + `(menu-item ,(purecopy "Bury") Buffer-menu-bury + :help ,(purecopy "Bury the buffer listed on this line"))) (define-key menu-map [vt] - '(menu-item "Set unmodified" Buffer-menu-not-modified - :help "Mark buffer on this line as unmodified (no changes to save)")) + `(menu-item ,(purecopy "Set unmodified") Buffer-menu-not-modified + :help ,(purecopy "Mark buffer on this line as unmodified (no changes to save)"))) (define-key menu-map [ex] - '(menu-item "Execute" Buffer-menu-execute - :help "Save and/or delete buffers marked with s or k commands")) + `(menu-item ,(purecopy "Execute") Buffer-menu-execute + :help ,(purecopy "Save and/or delete buffers marked with s or k commands"))) (define-key menu-map [s4] '("--")) (define-key menu-map [delb] - '(menu-item "Mark for delete and move backwards" Buffer-menu-delete-backwards - :help "Mark buffer on this line to be deleted by x command and move up one line")) + `(menu-item ,(purecopy "Mark for delete and move backwards") Buffer-menu-delete-backwards + :help ,(purecopy "Mark buffer on this line to be deleted by x command and move up one line"))) (define-key menu-map [del] - '(menu-item "Mark for delete" Buffer-menu-delete - :help "Mark buffer on this line to be deleted by x command")) + `(menu-item ,(purecopy "Mark for delete") Buffer-menu-delete + :help ,(purecopy "Mark buffer on this line to be deleted by x command"))) (define-key menu-map [sv] - '(menu-item "Mark for save" Buffer-menu-save - :help "Mark buffer on this line to be saved by x command")) + `(menu-item ,(purecopy "Mark for save") Buffer-menu-save + :help ,(purecopy "Mark buffer on this line to be saved by x command"))) (define-key menu-map [umk] - '(menu-item "Unmark" Buffer-menu-unmark - :help "Cancel all requested operations on buffer on this line and move down")) + `(menu-item ,(purecopy "Unmark") Buffer-menu-unmark + :help ,(purecopy "Cancel all requested operations on buffer on this line and move down"))) (define-key menu-map [mk] - '(menu-item "Mark" Buffer-menu-mark - :help "Mark buffer on this line for being displayed by v command")) + `(menu-item ,(purecopy "Mark") Buffer-menu-mark + :help ,(purecopy "Mark buffer on this line for being displayed by v command"))) map) "Local keymap for `Buffer-menu-mode' buffers.") diff -r f8478bbd8ebe -r b0a732611398 lisp/ediff-hook.el --- a/lisp/ediff-hook.el Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/ediff-hook.el Sat Oct 24 06:32:03 2009 +0000 @@ -144,7 +144,7 @@ ;; define ediff compare menu (define-key menu-bar-ediff-menu [ediff-misc] - (list 'menu-item "Ediff Miscellanea" menu-bar-ediff-misc-menu)) + `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu)) (define-key menu-bar-ediff-menu [separator-ediff-misc] '("--")) (define-key menu-bar-ediff-menu [window] `(menu-item ,(purecopy "This Window and Next Window") compare-windows diff -r f8478bbd8ebe -r b0a732611398 lisp/emacs-lisp/byte-run.el --- a/lisp/emacs-lisp/byte-run.el Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/emacs-lisp/byte-run.el Sat Oct 24 06:32:03 2009 +0000 @@ -127,7 +127,7 @@ (if (eq 'byte-compile-obsolete handler) (setq handler (nth 1 (get obsolete-name 'byte-obsolete-info))) (put obsolete-name 'byte-compile 'byte-compile-obsolete)) - (put obsolete-name 'byte-obsolete-info (list current-name handler when))) + (put obsolete-name 'byte-obsolete-info (list current-name handler (purecopy when)))) obsolete-name) (set-advertised-calling-convention ;; New code should always provide the `when' argument. @@ -166,7 +166,11 @@ (if (equal str "") (error "")) (intern str)) (car (read-from-string (read-string "Obsoletion replacement: "))))) - (put obsolete-name 'byte-obsolete-variable (cons current-name when)) + (put obsolete-name 'byte-obsolete-variable + (cons + (if (stringp current-name) + (purecopy current-name) + current-name) (purecopy when))) obsolete-name) (set-advertised-calling-convention ;; New code should always provide the `when' argument. diff -r f8478bbd8ebe -r b0a732611398 lisp/emacs-lisp/lisp-mode.el --- a/lisp/emacs-lisp/lisp-mode.el Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Sat Oct 24 06:32:03 2009 +0000 @@ -285,105 +285,105 @@ (define-key map "\e\C-q" 'indent-pp-sexp) (define-key map [menu-bar emacs-lisp] (cons "Emacs-Lisp" menu-map)) (define-key menu-map [eldoc] - '(menu-item "Auto-Display Documentation Strings" eldoc-mode + `(menu-item ,(purecopy "Auto-Display Documentation Strings") eldoc-mode :button (:toggle . (bound-and-true-p eldoc-mode)) - :help "Display the documentation string for the item under cursor")) + :help ,(purecopy "Display the documentation string for the item under cursor"))) (define-key menu-map [checkdoc] - '(menu-item "Check Documentation Strings" checkdoc - :help "Check documentation strings for style requirements")) + `(menu-item ,(purecopy "Check Documentation Strings") checkdoc + :help ,(purecopy "Check documentation strings for style requirements"))) (define-key menu-map [re-builder] - '(menu-item "Construct Regexp" re-builder - :help "Construct a regexp interactively")) + `(menu-item ,(purecopy "Construct Regexp") re-builder + :help ,(purecopy "Construct a regexp interactively"))) (define-key menu-map [tracing] (cons "Tracing" tracing-map)) (define-key tracing-map [tr-a] - '(menu-item "Untrace all" untrace-all - :help "Untrace all currently traced functions")) + `(menu-item ,(purecopy "Untrace all") untrace-all + :help ,(purecopy "Untrace all currently traced functions"))) (define-key tracing-map [tr-uf] - '(menu-item "Untrace function..." untrace-function - :help "Untrace function, and possibly activate all remaining advice")) + `(menu-item ,(purecopy "Untrace function...") untrace-function + :help ,(purecopy "Untrace function, and possibly activate all remaining advice"))) (define-key tracing-map [tr-sep] '("--")) (define-key tracing-map [tr-q] - '(menu-item "Trace function quietly..." trace-function-background - :help "Trace the function with trace output going quietly to a buffer")) + `(menu-item ,(purecopy "Trace function quietly...") trace-function-background + :help ,(purecopy "Trace the function with trace output going quietly to a buffer"))) (define-key tracing-map [tr-f] - '(menu-item "Trace function..." trace-function - :help "Trace the function given as an argument")) + `(menu-item ,(purecopy "Trace function...") trace-function + :help ,(purecopy "Trace the function given as an argument"))) (define-key menu-map [profiling] (cons "Profiling" prof-map)) (define-key prof-map [prof-restall] - '(menu-item "Remove Instrumentation for All Functions" elp-restore-all - :help "Restore the original definitions of all functions being profiled")) + `(menu-item ,(purecopy "Remove Instrumentation for All Functions") elp-restore-all + :help ,(purecopy "Restore the original definitions of all functions being profiled"))) (define-key prof-map [prof-restfunc] - '(menu-item "Remove Instrumentation for Function..." elp-restore-function - :help "Restore an instrumented function to its original definition")) + `(menu-item ,(purecopy "Remove Instrumentation for Function...") elp-restore-function + :help ,(purecopy "Restore an instrumented function to its original definition"))) (define-key prof-map [sep-rem] '("--")) (define-key prof-map [prof-resall] - '(menu-item "Reset Counters for All Functions" elp-reset-all - :help "Reset the profiling information for all functions being profiled")) + `(menu-item ,(purecopy "Reset Counters for All Functions") elp-reset-all + :help ,(purecopy "Reset the profiling information for all functions being profiled"))) (define-key prof-map [prof-resfunc] - '(menu-item "Reset Counters for Function..." elp-reset-function - :help "Reset the profiling information for a function")) + `(menu-item ,(purecopy "Reset Counters for Function...") elp-reset-function + :help ,(purecopy "Reset the profiling information for a function"))) (define-key prof-map [prof-res] - '(menu-item "Show Profiling Results" elp-results - :help "Display current profiling results")) + `(menu-item ,(purecopy "Show Profiling Results") elp-results + :help ,(purecopy "Display current profiling results"))) (define-key prof-map [prof-pack] - '(menu-item "Instrument Package..." elp-instrument-package - :help "Instrument for profiling all function that start with a prefix")) + `(menu-item ,(purecopy "Instrument Package...") elp-instrument-package + :help ,(purecopy "Instrument for profiling all function that start with a prefix"))) (define-key prof-map [prof-func] - '(menu-item "Instrument Function..." elp-instrument-function - :help "Instrument a function for profiling")) + `(menu-item ,(purecopy "Instrument Function...") elp-instrument-function + :help ,(purecopy "Instrument a function for profiling"))) (define-key menu-map [lint] (cons "Linting" lint-map)) (define-key lint-map [lint-di] - '(menu-item "Lint Directory..." elint-directory - :help "Lint a directory")) + `(menu-item ,(purecopy "Lint Directory...") elint-directory + :help ,(purecopy "Lint a directory"))) (define-key lint-map [lint-f] - '(menu-item "Lint File..." elint-file - :help "Lint a file")) + `(menu-item ,(purecopy "Lint File...") elint-file + :help ,(purecopy "Lint a file"))) (define-key lint-map [lint-b] - '(menu-item "Lint Buffer" elint-current-buffer - :help "Lint the current buffer")) + `(menu-item ,(purecopy "Lint Buffer") elint-current-buffer + :help ,(purecopy "Lint the current buffer"))) (define-key lint-map [lint-d] - '(menu-item "Lint Defun" elint-defun - :help "Lint the function at point")) + `(menu-item ,(purecopy "Lint Defun") elint-defun + :help ,(purecopy "Lint the function at point"))) (define-key menu-map [edebug-defun] - '(menu-item "Instrument Function for Debugging" edebug-defun - :help "Evaluate the top level form point is in, stepping through with Edebug" + `(menu-item ,(purecopy "Instrument Function for Debugging") edebug-defun + :help ,(purecopy "Evaluate the top level form point is in, stepping through with Edebug") :keys "C-u C-M-x")) (define-key menu-map [separator-byte] '("--")) (define-key menu-map [disas] - '(menu-item "Disassemble byte compiled object..." disassemble - :help "Print disassembled code for OBJECT in a buffer")) + `(menu-item ,(purecopy "Disassemble byte compiled object...") disassemble + :help ,(purecopy "Print disassembled code for OBJECT in a buffer"))) (define-key menu-map [byte-recompile] - '(menu-item "Byte-recompile Directory..." byte-recompile-directory - :help "Recompile every `.el' file in DIRECTORY that needs recompilation")) + `(menu-item ,(purecopy "Byte-recompile Directory...") byte-recompile-directory + :help ,(purecopy "Recompile every `.el' file in DIRECTORY that needs recompilation"))) (define-key menu-map [emacs-byte-compile-and-load] - '(menu-item "Byte-compile And Load" emacs-lisp-byte-compile-and-load - :help "Byte-compile the current file (if it has changed), then load compiled code")) + `(menu-item ,(purecopy "Byte-compile And Load") emacs-lisp-byte-compile-and-load + :help ,(purecopy "Byte-compile the current file (if it has changed), then load compiled code"))) (define-key menu-map [byte-compile] - '(menu-item "Byte-compile This File" emacs-lisp-byte-compile - :help "Byte compile the file containing the current buffer")) + `(menu-item ,(purecopy "Byte-compile This File") emacs-lisp-byte-compile + :help ,(purecopy "Byte compile the file containing the current buffer"))) (define-key menu-map [separator-eval] '("--")) (define-key menu-map [ielm] - '(menu-item "Interactive Expression Evaluation" ielm - :help "Interactively evaluate Emacs Lisp expressions")) + `(menu-item ,(purecopy "Interactive Expression Evaluation") ielm + :help ,(purecopy "Interactively evaluate Emacs Lisp expressions"))) (define-key menu-map [eval-buffer] - '(menu-item "Evaluate Buffer" eval-buffer - :help "Execute the current buffer as Lisp code")) + `(menu-item ,(purecopy "Evaluate Buffer") eval-buffer + :help ,(purecopy "Execute the current buffer as Lisp code"))) (define-key menu-map [eval-region] - '(menu-item "Evaluate Region" eval-region - :help "Execute the region as Lisp code" + `(menu-item ,(purecopy "Evaluate Region") eval-region + :help ,(purecopy "Execute the region as Lisp code") :enable mark-active)) (define-key menu-map [eval-sexp] - '(menu-item "Evaluate Last S-expression" eval-last-sexp - :help "Evaluate sexp before point; print value in minibuffer")) + `(menu-item ,(purecopy "Evaluate Last S-expression") eval-last-sexp + :help ,(purecopy "Evaluate sexp before point; print value in minibuffer"))) (define-key menu-map [separator-format] '("--")) (define-key menu-map [comment-region] - '(menu-item "Comment Out Region" comment-region - :help "Comment or uncomment each line in the region" + `(menu-item ,(purecopy "Comment Out Region") comment-region + :help ,(purecopy "Comment or uncomment each line in the region") :enable mark-active)) (define-key menu-map [indent-region] - '(menu-item "Indent Region" indent-region - :help "Indent each nonblank line in the region" + `(menu-item ,(purecopy "Indent Region") indent-region + :help ,(purecopy "Indent each nonblank line in the region") :enable mark-active)) (define-key menu-map [indent-line] '("Indent Line" . lisp-indent-line)) map) @@ -458,14 +458,14 @@ (define-key map "\C-c\C-z" 'run-lisp) (define-key map [menu-bar lisp] (cons "Lisp" menu-map)) (define-key menu-map [run-lisp] - '(menu-item "Run inferior Lisp" run-lisp - :help "Run an inferior Lisp process, input and output via buffer `*inferior-lisp*'")) + `(menu-item ,(purecopy "Run inferior Lisp") run-lisp + :help ,(purecopy "Run an inferior Lisp process, input and output via buffer `*inferior-lisp*'"))) (define-key menu-map [ev-def] - '(menu-item "Eval defun" lisp-eval-defun - :help "Send the current defun to the Lisp process made by M-x run-lisp")) + `(menu-item ,(purecopy "Eval defun") lisp-eval-defun + :help ,(purecopy "Send the current defun to the Lisp process made by M-x run-lisp"))) (define-key menu-map [ind-sexp] - '(menu-item "Indent sexp" indent-sexp - :help "Indent each line of the list starting just after point")) + `(menu-item ,(purecopy "Indent sexp") indent-sexp + :help ,(purecopy "Indent each line of the list starting just after point"))) map) "Keymap for ordinary Lisp mode. All commands in `lisp-mode-shared-map' are inherited by this map.") @@ -522,21 +522,21 @@ (define-key map "\n" 'eval-print-last-sexp) (define-key map [menu-bar lisp-interaction] (cons "Lisp-Interaction" menu-map)) (define-key menu-map [eval-defun] - '(menu-item "Evaluate Defun" eval-defun - :help "Evaluate the top-level form containing point, or after point")) + `(menu-item ,(purecopy "Evaluate Defun") eval-defun + :help ,(purecopy "Evaluate the top-level form containing point, or after point"))) (define-key menu-map [eval-print-last-sexp] - '(menu-item "Evaluate and print" eval-print-last-sexp - :help "Evaluate sexp before point; print value into current buffer")) + `(menu-item ,(purecopy "Evaluate and print") eval-print-last-sexp + :help ,(purecopy "Evaluate sexp before point; print value into current buffer"))) (define-key menu-map [edebug-defun-lisp-interaction] - '(menu-item "Instrument Function for Debugging" edebug-defun - :help "Evaluate the top level form point is in, stepping through with Edebug" + `(menu-item ,(purecopy "Instrument Function for Debugging") edebug-defun + :help ,(purecopy "Evaluate the top level form point is in, stepping through with Edebug") :keys "C-u C-M-x")) (define-key menu-map [indent-pp-sexp] - '(menu-item "Indent or Pretty-Print" indent-pp-sexp - :help "Indent each line of the list starting just after point, or prettyprint it")) + `(menu-item ,(purecopy "Indent or Pretty-Print") indent-pp-sexp + :help ,(purecopy "Indent each line of the list starting just after point, or prettyprint it"))) (define-key menu-map [lisp-complete-symbol] - '(menu-item "Complete Lisp Symbol" lisp-complete-symbol - :help "Perform completion on Lisp symbol preceding point")) + `(menu-item ,(purecopy "Complete Lisp Symbol") lisp-complete-symbol + :help ,(purecopy "Perform completion on Lisp symbol preceding point"))) map) "Keymap for Lisp Interaction mode. All commands in `lisp-mode-shared-map' are inherited by this map.") diff -r f8478bbd8ebe -r b0a732611398 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Sat Oct 24 03:54:58 2009 +0000 +++ b/lisp/international/mule-cmds.el Sat Oct 24 06:32:03 2009 +0000 @@ -1174,8 +1174,10 @@ Describe Language Environment and Set Language Environment menus. For example, (\"European\") means to put this language environment in the European submenu in each of those two menus." - (if (symbolp lang-env) - (setq lang-env (symbol-name lang-env))) + (cond ((symbolp lang-env) + (setq lang-env (symbol-name lang-env))) + ((stringp lang-env) + (setq lang-env (purecopy lang-env)))) (let ((describe-map describe-language-environment-map) (setup-map setup-language-environment-map)) (if parents @@ -1249,7 +1251,7 @@ in the format of Lisp expression for registering each input method. Emacs loads this file at startup time.") -(defvar leim-list-header (format +(defconst leim-list-header (format ";;; %s -- list of LEIM (Library of Emacs Input Method) -*-coding: utf-8;-*- ;; ;; This file is automatically generated. @@ -1272,7 +1274,7 @@ leim-list-file-name) "Header to be inserted in LEIM list file.") -(defvar leim-list-entry-regexp "^(register-input-method" +(defconst leim-list-entry-regexp "^(register-input-method" "Regexp matching head of each entry in LEIM list file. See also the variable `leim-list-header'.") @@ -1865,7 +1867,7 @@ (force-mode-line-update t)) (define-widget 'charset 'symbol - "An Emacs charset." + (purecopy "An Emacs charset.") :tag "Charset" :complete-function (lambda () (interactive) @@ -2745,12 +2747,13 @@ (error "Invalid char-table: %s" table)) (or (stringp table) (error "Not a char-table nor a file name: %s" table))) + (if (stringp table) (purecopy table)) (let ((slot (assq name char-code-property-alist))) (if slot (setcdr slot table) (setq char-code-property-alist (cons (cons name table) char-code-property-alist)))) - (put name 'char-code-property-documentation docstring)) + (put name 'char-code-property-documentation (purecopy docstring))) (defvar char-code-property-table (make-char-table 'char-code-property-table) diff -r f8478bbd8ebe -r b0a732611398 src/ChangeLog --- a/src/ChangeLog Sat Oct 24 03:54:58 2009 +0000 +++ b/src/ChangeLog Sat Oct 24 06:32:03 2009 +0000 @@ -1,3 +1,11 @@ +2009-10-24 Dan Nicolaescu + + * keymap.c (Fmake_sparse_keymap): Purecopy the name. + + * eval.c (Fautoload): Purecopy the filename. Simplify. + + * category.c (Fdefine_category): Purecopy docstring. + 2009-10-23 Andreas Schwab * lisp.h (FIXNUM_OVERFLOW_P): Remove cast to avoid overflow. diff -r f8478bbd8ebe -r b0a732611398 src/category.c --- a/src/category.c Sat Oct 24 03:54:58 2009 +0000 +++ b/src/category.c Sat Oct 24 06:32:03 2009 +0000 @@ -136,6 +136,8 @@ if (!NILP (CATEGORY_DOCSTRING (table, XFASTINT (category)))) error ("Category `%c' is already defined", XFASTINT (category)); + if (!NILP (Vpurify_flag)) + docstring = Fpurecopy (docstring); CATEGORY_DOCSTRING (table, XFASTINT (category)) = docstring; return Qnil; diff -r f8478bbd8ebe -r b0a732611398 src/eval.c --- a/src/eval.c Sat Oct 24 03:54:58 2009 +0000 +++ b/src/eval.c Sat Oct 24 06:32:03 2009 +0000 @@ -2096,7 +2096,6 @@ return Qnil; } -/* ARGSUSED */ DEFUN ("autoload", Fautoload, Sautoload, 2, 5, 0, doc: /* Define FUNCTION to autoload from FILE. FUNCTION is a symbol; FILE is a file name string to pass to `load'. @@ -2113,9 +2112,7 @@ (function, file, docstring, interactive, type) Lisp_Object function, file, docstring, interactive, type; { -#ifdef NO_ARG_ARRAY Lisp_Object args[4]; -#endif CHECK_SYMBOL (function); CHECK_STRING (file); @@ -2131,16 +2128,15 @@ not useful and else we get loads of them from the loaddefs.el. */ LOADHIST_ATTACH (Fcons (Qautoload, function)); -#ifdef NO_ARG_ARRAY - args[0] = file; + if (NILP (Vpurify_flag)) + args[0] = file; + else + args[0] = Fpurecopy (file); args[1] = docstring; args[2] = interactive; args[3] = type; return Ffset (function, Fcons (Qautoload, Flist (4, &args[0]))); -#else /* NO_ARG_ARRAY */ - return Ffset (function, Fcons (Qautoload, Flist (4, &file))); -#endif /* not NO_ARG_ARRAY */ } Lisp_Object diff -r f8478bbd8ebe -r b0a732611398 src/keymap.c --- a/src/keymap.c Sat Oct 24 03:54:58 2009 +0000 +++ b/src/keymap.c Sat Oct 24 06:32:03 2009 +0000 @@ -170,7 +170,11 @@ Lisp_Object string; { if (!NILP (string)) - return Fcons (Qkeymap, Fcons (string, Qnil)); + { + if (!NILP (Vpurify_flag)) + string = Fpurecopy (string); + return Fcons (Qkeymap, Fcons (string, Qnil)); + } return Fcons (Qkeymap, Qnil); }