1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-06 05:52:32 -08:00
emacs/lisp
Stefan Kangas afde53cd81 Improve substitute-command-keys performance
The previous conversion of describe_vector from C to Lisp for the
keymap and char table case lead to an unacceptable performance hit.
Moving back to the C version, as we do here, makes this function
around 50 times faster.

The Lisp version of `substitute-command-keys' was benchmarked using
the form `(documentation 'dired-mode)', which now takes less than 8 ms
on my machine.  This is around 16 times slower than the previous C
version.

Thanks to Stefan Monnier for helpful pointers on benchmarking.

* src/keymap.c (Fhelp__describe_vector): New defun to expose
describe_vector to Lisp for keymaps and char tables.
(syms_of_keymap): New defsubr for Fhelp__describe_vector.
* lisp/help.el (describe-map): Use above defun instead of Lisp
version.
(help--describe-vector): Remove defun; keep it commented out for now.
2020-10-18 17:25:23 +02:00
..
calc
calendar
cedet ; Revert some spelling fixes 2020-10-16 11:52:33 +02:00
emacs-lisp Merge from origin/emacs-27 2020-10-17 09:48:54 -07:00
emulation
erc Make erc expand the final abbrev 2020-10-16 17:36:26 +02:00
eshell
gnus Fix up smiley emoji application to make it reversible 2020-10-18 09:42:25 +02:00
image
international
language
leim/quail
mail
mh-e
net Merge from origin/emacs-27 2020-10-17 09:48:54 -07:00
nxml Make nxml-newline-and-indent argument optional 2020-10-18 03:17:58 +02:00
obsolete
org
play
progmodes * lisp/progmodes/ld-script.el: Use lexical-binding. 2020-10-18 02:27:29 +02:00
term
textmodes
url * lisp/url/url-vars.el: Use lexical-binding. 2020-10-17 15:55:42 +02:00
vc Avoid infloop in which-function-mode when a vc file has changed 2020-10-17 10:29:15 +02:00
abbrev.el
align.el
allout-widgets.el
allout.el
ansi-color.el
apropos.el
arc-mode.el Remove some references to Emacs 18 and 19 2020-10-16 15:27:25 +02:00
array.el
auth-source-pass.el
auth-source.el
autoarg.el
autoinsert.el
autorevert.el
avoid.el
battery.el
bindings.el
bookmark.el Base bookmark-bmenu-mode on tabulated-list-mode (Bug#39293) 2020-10-17 17:56:44 +02:00
bs.el
buff-menu.el
button.el Substitute command keys in button help-echo values 2020-10-16 09:32:48 +02:00
calculator.el
case-table.el
cdl.el
ChangeLog.1
ChangeLog.2
ChangeLog.3
ChangeLog.4
ChangeLog.5
ChangeLog.6
ChangeLog.7
ChangeLog.8
ChangeLog.9
ChangeLog.10
ChangeLog.11
ChangeLog.12
ChangeLog.13
ChangeLog.14
ChangeLog.15
ChangeLog.16
ChangeLog.17
char-fold.el
chistory.el
cmuscheme.el
color.el
comint.el
completion.el
composite.el
COPYING
cus-dep.el
cus-edit.el
cus-face.el
cus-start.el
cus-theme.el
custom.el
dabbrev.el
delim-col.el
delsel.el
descr-text.el
desktop.el
dframe.el
dired-aux.el
dired-x.el
dired.el
dirtrack.el
disp-table.el
display-fill-column-indicator.el
display-line-numbers.el
dnd.el
doc-view.el
dom.el
dos-fns.el
dos-vars.el
dos-w32.el
double.el
dynamic-setting.el
ebuff-menu.el
echistory.el
ecomplete.el
edmacro.el
ehelp.el
elec-pair.el
electric.el
elide-head.el
emacs-lock.el
env.el
epa-dired.el
epa-file.el
epa-hook.el
epa-mail.el
epa.el
epg-config.el
epg.el
expand.el
ezimage.el
face-remap.el
facemenu.el
faces.el
ffap.el
filecache.el
fileloop.el
filenotify.el
files-x.el
files.el
filesets.el
find-cmd.el
find-dired.el
find-file.el
find-lisp.el
finder.el
flow-ctrl.el
foldout.el
follow.el
font-core.el
font-lock.el
format-spec.el
format.el
forms.el
frame.el
frameset.el
fringe.el
generic-x.el
help-at-pt.el
help-fns.el
help-macro.el
help-mode.el
help.el Improve substitute-command-keys performance 2020-10-18 17:25:23 +02:00
hex-util.el
hexl.el
hfy-cmap.el
hi-lock.el
hilit-chg.el
hippie-exp.el
hl-line.el
htmlfontify.el
ibuf-ext.el
ibuf-macs.el
ibuffer.el
icomplete.el
ido.el
ielm.el
iimage.el
image-dired.el
image-file.el
image-mode.el
image.el
imenu.el
indent.el indent-rigidly doc string clarification 2020-10-16 17:52:56 +02:00
info-look.el
info-xref.el
info.el Merge from origin/emacs-27 2020-10-17 09:48:54 -07:00
informat.el
isearch.el
isearchb.el
jit-lock.el
jka-cmpr-hook.el
jka-compr.el
json.el
jsonrpc.el
kermit.el
kmacro.el
ldefs-boot.el
linum.el
loadhist.el
loadup.el
locate.el
lpr.el
ls-lisp.el
macros.el
Makefile.in Merge from origin/emacs-27 2020-10-17 09:48:54 -07:00
makesum.el
man.el
master.el
mb-depth.el
md4.el
menu-bar.el
midnight.el
minibuf-eldef.el
minibuffer.el Merge from origin/emacs-27 2020-10-17 09:48:54 -07:00
misc.el
misearch.el
mouse-copy.el
mouse-drag.el
mouse.el
mpc.el
msb.el
mwheel.el
newcomment.el
notifications.el
novice.el
obarray.el
outline.el
paren.el
password-cache.el
pcmpl-cvs.el
pcmpl-gnu.el
pcmpl-linux.el
pcmpl-rpm.el
pcmpl-unix.el
pcmpl-x.el
pcomplete.el
pixel-scroll.el
plstore.el
printing.el
proced.el
profiler.el
ps-bdf.el
ps-def.el
ps-mule.el
ps-print.el
ps-samp.el
README
recentf.el
rect.el
register.el
registry.el
repeat.el
replace.el
reposition.el
reveal.el
rfn-eshadow.el
rot13.el
rtree.el
ruler-mode.el
savehist.el
saveplace.el
scroll-all.el
scroll-bar.el
scroll-lock.el
select.el
server.el
ses.el
shadowfile.el
shell.el New shell-mode command to narrow to the command under point 2020-10-17 13:16:24 +02:00
simple.el Extend next-error-message face to the edge of the window (bug#32676) 2020-10-17 23:23:10 +03:00
skeleton.el
so-long.el
sort.el
soundex.el
speedbar.el
startup.el
strokes.el
subr.el
svg.el
t-mouse.el
tab-bar.el
tab-line.el
tabify.el
talk.el
tar-mode.el
tempo.el
term.el
thingatpt.el
thread.el
thumbs.el
time-stamp.el
time.el
timezone.el
tmm.el
tool-bar.el
tooltip.el
tree-widget.el
tutorial.el
type-break.el Remove some Emacs 19 compat code 2020-10-16 15:27:43 +02:00
uniquify.el
userlock.el
vcursor.el
version.el
view.el
vt-control.el
vt100-led.el
w32-fns.el
w32-vars.el
wdired.el
whitespace.el
wid-browse.el
wid-edit.el
widget.el
windmove.el
window.el
winner.el
woman.el Make woman ignore the new groff kerning operators 2020-10-17 12:17:10 +02:00
x-dnd.el
xdg.el
xml.el
xt-mouse.el
xwidget.el

This directory contains source code for the parts of Emacs that are
written in Emacs Lisp.  *.el files are Emacs Lisp source, and the
corresponding *.elc files are byte-compiled versions.  Byte-compiled
files are architecture-independent.

The term subdirectory contains Lisp files that customize Emacs for
certain terminal types.  When Emacs starts, it checks the TERM
environment variable to get the terminal type and loads
'term/${TERM}.el' if it exists.

The other subdirectories hold Lisp packages grouped by their general
purpose.