Get rid of all the manual purecopy calls in menu-bar definitions.
* lisp/loadup.el (purify-flag): Pre-grow the hash-table to reduce the memory use. * lisp/bindings.el (bindings--define-key): New function. * lisp/vc/vc-hooks.el, lisp/replace.el, lisp/menu-bar.el: * lisp/international/mule-cmds.el, lisp/emacs-lisp/lisp-mode.el: * lisp/buff-menu.el, lisp/bookmark.el: * bindings.el: Use it to purecopy define-key bindings. * src/fns.c (maybe_resize_hash_table): Output message when growing the purify-hashtable.
This commit is contained in:
parent
e309e2a566
commit
1ec4b7b259
14 changed files with 1226 additions and 1190 deletions
|
@ -264,110 +264,111 @@ font-lock keywords will not be case sensitive."
|
|||
(define-key map "\e\t" 'completion-at-point)
|
||||
(define-key map "\e\C-x" 'eval-defun)
|
||||
(define-key map "\e\C-q" 'indent-pp-sexp)
|
||||
(define-key map [menu-bar emacs-lisp] (cons (purecopy "Emacs-Lisp") menu-map))
|
||||
(define-key menu-map [eldoc]
|
||||
`(menu-item ,(purecopy "Auto-Display Documentation Strings") eldoc-mode
|
||||
(bindings--define-key map [menu-bar emacs-lisp]
|
||||
(cons "Emacs-Lisp" menu-map))
|
||||
(bindings--define-key menu-map [eldoc]
|
||||
'(menu-item "Auto-Display Documentation Strings" eldoc-mode
|
||||
:button (:toggle . (bound-and-true-p eldoc-mode))
|
||||
:help ,(purecopy "Display the documentation string for the item under cursor")))
|
||||
(define-key menu-map [checkdoc]
|
||||
`(menu-item ,(purecopy "Check Documentation Strings") checkdoc
|
||||
:help ,(purecopy "Check documentation strings for style requirements")))
|
||||
(define-key menu-map [re-builder]
|
||||
`(menu-item ,(purecopy "Construct Regexp") re-builder
|
||||
:help ,(purecopy "Construct a regexp interactively")))
|
||||
(define-key menu-map [tracing] (cons (purecopy "Tracing") tracing-map))
|
||||
(define-key tracing-map [tr-a]
|
||||
`(menu-item ,(purecopy "Untrace All") untrace-all
|
||||
:help ,(purecopy "Untrace all currently traced functions")))
|
||||
(define-key tracing-map [tr-uf]
|
||||
`(menu-item ,(purecopy "Untrace Function...") untrace-function
|
||||
:help ,(purecopy "Untrace function, and possibly activate all remaining advice")))
|
||||
(define-key tracing-map [tr-sep] menu-bar-separator)
|
||||
(define-key tracing-map [tr-q]
|
||||
`(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 ,(purecopy "Trace Function...") trace-function
|
||||
:help ,(purecopy "Trace the function given as an argument")))
|
||||
(define-key menu-map [profiling] (cons (purecopy "Profiling") prof-map))
|
||||
(define-key prof-map [prof-restall]
|
||||
`(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 ,(purecopy "Remove Instrumentation for Function...") elp-restore-function
|
||||
:help ,(purecopy "Restore an instrumented function to its original definition")))
|
||||
:help "Display the documentation string for the item under cursor"))
|
||||
(bindings--define-key menu-map [checkdoc]
|
||||
'(menu-item "Check Documentation Strings" checkdoc
|
||||
:help "Check documentation strings for style requirements"))
|
||||
(bindings--define-key menu-map [re-builder]
|
||||
'(menu-item "Construct Regexp" re-builder
|
||||
:help "Construct a regexp interactively"))
|
||||
(bindings--define-key menu-map [tracing] (cons "Tracing" tracing-map))
|
||||
(bindings--define-key tracing-map [tr-a]
|
||||
'(menu-item "Untrace All" untrace-all
|
||||
:help "Untrace all currently traced functions"))
|
||||
(bindings--define-key tracing-map [tr-uf]
|
||||
'(menu-item "Untrace Function..." untrace-function
|
||||
:help "Untrace function, and possibly activate all remaining advice"))
|
||||
(bindings--define-key tracing-map [tr-sep] menu-bar-separator)
|
||||
(bindings--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"))
|
||||
(bindings--define-key tracing-map [tr-f]
|
||||
'(menu-item "Trace Function..." trace-function
|
||||
:help "Trace the function given as an argument"))
|
||||
(bindings--define-key menu-map [profiling] (cons "Profiling" prof-map))
|
||||
(bindings--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"))
|
||||
(bindings--define-key prof-map [prof-restfunc]
|
||||
'(menu-item "Remove Instrumentation for Function..." elp-restore-function
|
||||
:help "Restore an instrumented function to its original definition"))
|
||||
|
||||
(define-key prof-map [sep-rem] menu-bar-separator)
|
||||
(define-key prof-map [prof-resall]
|
||||
`(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 ,(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 ,(purecopy "Show Profiling Results") elp-results
|
||||
:help ,(purecopy "Display current profiling results")))
|
||||
(define-key prof-map [prof-pack]
|
||||
`(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 ,(purecopy "Instrument Function...") elp-instrument-function
|
||||
:help ,(purecopy "Instrument a function for profiling")))
|
||||
(define-key menu-map [lint] (cons (purecopy "Linting") lint-map))
|
||||
(define-key lint-map [lint-di]
|
||||
`(menu-item ,(purecopy "Lint Directory...") elint-directory
|
||||
:help ,(purecopy "Lint a directory")))
|
||||
(define-key lint-map [lint-f]
|
||||
`(menu-item ,(purecopy "Lint File...") elint-file
|
||||
:help ,(purecopy "Lint a file")))
|
||||
(define-key lint-map [lint-b]
|
||||
`(menu-item ,(purecopy "Lint Buffer") elint-current-buffer
|
||||
:help ,(purecopy "Lint the current buffer")))
|
||||
(define-key lint-map [lint-d]
|
||||
`(menu-item ,(purecopy "Lint Defun") elint-defun
|
||||
:help ,(purecopy "Lint the function at point")))
|
||||
(define-key menu-map [edebug-defun]
|
||||
`(menu-item ,(purecopy "Instrument Function for Debugging") edebug-defun
|
||||
:help ,(purecopy "Evaluate the top level form point is in, stepping through with Edebug")
|
||||
:keys ,(purecopy "C-u C-M-x")))
|
||||
(define-key menu-map [separator-byte] menu-bar-separator)
|
||||
(define-key menu-map [disas]
|
||||
`(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 ,(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 ,(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 ,(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] menu-bar-separator)
|
||||
(define-key menu-map [ielm]
|
||||
`(menu-item ,(purecopy "Interactive Expression Evaluation") ielm
|
||||
:help ,(purecopy "Interactively evaluate Emacs Lisp expressions")))
|
||||
(define-key menu-map [eval-buffer]
|
||||
`(menu-item ,(purecopy "Evaluate Buffer") eval-buffer
|
||||
:help ,(purecopy "Execute the current buffer as Lisp code")))
|
||||
(define-key menu-map [eval-region]
|
||||
`(menu-item ,(purecopy "Evaluate Region") eval-region
|
||||
:help ,(purecopy "Execute the region as Lisp code")
|
||||
(bindings--define-key prof-map [sep-rem] menu-bar-separator)
|
||||
(bindings--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"))
|
||||
(bindings--define-key prof-map [prof-resfunc]
|
||||
'(menu-item "Reset Counters for Function..." elp-reset-function
|
||||
:help "Reset the profiling information for a function"))
|
||||
(bindings--define-key prof-map [prof-res]
|
||||
'(menu-item "Show Profiling Results" elp-results
|
||||
:help "Display current profiling results"))
|
||||
(bindings--define-key prof-map [prof-pack]
|
||||
'(menu-item "Instrument Package..." elp-instrument-package
|
||||
:help "Instrument for profiling all function that start with a prefix"))
|
||||
(bindings--define-key prof-map [prof-func]
|
||||
'(menu-item "Instrument Function..." elp-instrument-function
|
||||
:help "Instrument a function for profiling"))
|
||||
(bindings--define-key menu-map [lint] (cons "Linting" lint-map))
|
||||
(bindings--define-key lint-map [lint-di]
|
||||
'(menu-item "Lint Directory..." elint-directory
|
||||
:help "Lint a directory"))
|
||||
(bindings--define-key lint-map [lint-f]
|
||||
'(menu-item "Lint File..." elint-file
|
||||
:help "Lint a file"))
|
||||
(bindings--define-key lint-map [lint-b]
|
||||
'(menu-item "Lint Buffer" elint-current-buffer
|
||||
:help "Lint the current buffer"))
|
||||
(bindings--define-key lint-map [lint-d]
|
||||
'(menu-item "Lint Defun" elint-defun
|
||||
:help "Lint the function at point"))
|
||||
(bindings--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"
|
||||
:keys "C-u C-M-x"))
|
||||
(bindings--define-key menu-map [separator-byte] menu-bar-separator)
|
||||
(bindings--define-key menu-map [disas]
|
||||
'(menu-item "Disassemble Byte Compiled Object..." disassemble
|
||||
:help "Print disassembled code for OBJECT in a buffer"))
|
||||
(bindings--define-key menu-map [byte-recompile]
|
||||
'(menu-item "Byte-recompile Directory..." byte-recompile-directory
|
||||
:help "Recompile every `.el' file in DIRECTORY that needs recompilation"))
|
||||
(bindings--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"))
|
||||
(bindings--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"))
|
||||
(bindings--define-key menu-map [separator-eval] menu-bar-separator)
|
||||
(bindings--define-key menu-map [ielm]
|
||||
'(menu-item "Interactive Expression Evaluation" ielm
|
||||
:help "Interactively evaluate Emacs Lisp expressions"))
|
||||
(bindings--define-key menu-map [eval-buffer]
|
||||
'(menu-item "Evaluate Buffer" eval-buffer
|
||||
:help "Execute the current buffer as Lisp code"))
|
||||
(bindings--define-key menu-map [eval-region]
|
||||
'(menu-item "Evaluate Region" eval-region
|
||||
:help "Execute the region as Lisp code"
|
||||
:enable mark-active))
|
||||
(define-key menu-map [eval-sexp]
|
||||
`(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] menu-bar-separator)
|
||||
(define-key menu-map [comment-region]
|
||||
`(menu-item ,(purecopy "Comment Out Region") comment-region
|
||||
:help ,(purecopy "Comment or uncomment each line in the region")
|
||||
(bindings--define-key menu-map [eval-sexp]
|
||||
'(menu-item "Evaluate Last S-expression" eval-last-sexp
|
||||
:help "Evaluate sexp before point; print value in minibuffer"))
|
||||
(bindings--define-key menu-map [separator-format] menu-bar-separator)
|
||||
(bindings--define-key menu-map [comment-region]
|
||||
'(menu-item "Comment Out Region" comment-region
|
||||
:help "Comment or uncomment each line in the region"
|
||||
:enable mark-active))
|
||||
(define-key menu-map [indent-region]
|
||||
`(menu-item ,(purecopy "Indent Region") indent-region
|
||||
:help ,(purecopy "Indent each nonblank line in the region")
|
||||
(bindings--define-key menu-map [indent-region]
|
||||
'(menu-item "Indent Region" indent-region
|
||||
:help "Indent each nonblank line in the region"
|
||||
:enable mark-active))
|
||||
(define-key menu-map [indent-line]
|
||||
`(menu-item ,(purecopy "Indent Line") lisp-indent-line))
|
||||
(bindings--define-key menu-map [indent-line]
|
||||
'(menu-item "Indent Line" lisp-indent-line))
|
||||
map)
|
||||
"Keymap for Emacs Lisp mode.
|
||||
All commands in `lisp-mode-shared-map' are inherited by this map.")
|
||||
|
@ -430,16 +431,16 @@ if that value is non-nil."
|
|||
(set-keymap-parent map lisp-mode-shared-map)
|
||||
(define-key map "\e\C-x" 'lisp-eval-defun)
|
||||
(define-key map "\C-c\C-z" 'run-lisp)
|
||||
(define-key map [menu-bar lisp] (cons (purecopy "Lisp") menu-map))
|
||||
(define-key menu-map [run-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 ,(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 ,(purecopy "Indent sexp") indent-sexp
|
||||
:help ,(purecopy "Indent each line of the list starting just after point")))
|
||||
(bindings--define-key map [menu-bar lisp] (cons "Lisp" menu-map))
|
||||
(bindings--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*'"))
|
||||
(bindings--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"))
|
||||
(bindings--define-key menu-map [ind-sexp]
|
||||
'(menu-item "Indent sexp" indent-sexp
|
||||
:help "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.")
|
||||
|
@ -487,23 +488,24 @@ if that value is non-nil."
|
|||
(define-key map "\e\C-q" 'indent-pp-sexp)
|
||||
(define-key map "\e\t" 'completion-at-point)
|
||||
(define-key map "\n" 'eval-print-last-sexp)
|
||||
(define-key map [menu-bar lisp-interaction] (cons (purecopy "Lisp-Interaction") menu-map))
|
||||
(define-key menu-map [eval-defun]
|
||||
`(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 ,(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 ,(purecopy "Instrument Function for Debugging") edebug-defun
|
||||
:help ,(purecopy "Evaluate the top level form point is in, stepping through with Edebug")
|
||||
:keys ,(purecopy "C-u C-M-x")))
|
||||
(define-key menu-map [indent-pp-sexp]
|
||||
`(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 [complete-symbol]
|
||||
`(menu-item ,(purecopy "Complete Lisp Symbol") completion-at-point
|
||||
:help ,(purecopy "Perform completion on Lisp symbol preceding point")))
|
||||
(bindings--define-key map [menu-bar lisp-interaction]
|
||||
(cons "Lisp-Interaction" menu-map))
|
||||
(bindings--define-key menu-map [eval-defun]
|
||||
'(menu-item "Evaluate Defun" eval-defun
|
||||
:help "Evaluate the top-level form containing point, or after point"))
|
||||
(bindings--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"))
|
||||
(bindings--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"
|
||||
:keys "C-u C-M-x"))
|
||||
(bindings--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"))
|
||||
(bindings--define-key menu-map [complete-symbol]
|
||||
'(menu-item "Complete Lisp Symbol" completion-at-point
|
||||
:help "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.")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue