1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-12 02:40:34 -08:00
emacs/lisp
Jim Porter 9682d385c1 Improve correctness of Eshell globs when using escape characters
This new implementation opts *in* to treating characters as glob
characters, rather than opting out.  This reduces the need to coordinate
with other parts of Eshell and should be harder to break (bug#74033).

* lisp/eshell/em-glob.el (eshell-parse-glob-chars): Return the
propertized globbing character directly.
(eshell--propertize-glob, eshell--glob-char-p)
(eshell--contains-glob-char-p, eshell--all-glob-chars-p): New functions.
(eshell-glob-p): Make obsolete.
(eshell-glob-regexp, eshell-glob-convert-1, eshell-glob-convert): Check
for 'eshell-glob-char' property.
(eshell-extended-glob): Remove text properties when returning no match.
(eshell--glob-anything): New constant.
(eshell-glob-entries): Propertize "*" to treat it as a glob.

* lisp/eshell/em-ls.el (eshell-ls--expand-wildcards): New function...
(eshell-ls--insert-directory): ... use it.

* test/lisp/eshell/em-glob-tests.el: Use 'eshell--propertize-glob' in
tests.
(em-glob-test/convert/literal-characters)
(em-glob-test/convert/mixed-literal-characters): New tests.

* lisp/eshell/em-glob.el (eshell-expand-glob): Rename from
'eshell-extended-glob'.  Update callers.
(eshell-extended-glob): New function to expand a GLOB that hasn't been
propertized yet, for use outside of Eshell command forms.
(eshell-parse-glob-chars): Return the propertized globbing character
directly.
(eshell-parse-glob-string, eshell--glob-char-p)
(eshell--contains-glob-char-p, eshell--all-glob-chars-p): New functions.
(eshell-glob-regexp, eshell-glob-convert-1, eshell-glob-convert): Check
for 'eshell-glob-char' property.
(eshell-glob-p): Make obsolete.
(eshell--glob-anything): New constant...
(eshell-glob-entries): ... use it.

* lisp/eshell/em-ls.el (eshell-ls--expand-wildcards): New function...
(eshell-ls--insert-directory): ... use it.

* test/lisp/eshell/em-glob-tests.el: Use 'eshell-parse-glob-string in
tests.
(em-glob-test/convert/literal-characters)
(em-glob-test/convert/mixed-literal-characters): New tests.
2024-10-31 22:38:10 -07:00
..
calc
calendar
cedet
emacs-lisp
emulation
erc
eshell
gnus
image
international
language
leim/quail
mail
mh-e
net
nxml
obsolete
org
play
progmodes
term
textmodes
url
use-package
vc
abbrev.el
align.el
allout-widgets.el
allout.el
ansi-color.el
ansi-osc.el
apropos.el
arc-mode.el
array.el
auth-source-pass.el
auth-source.el
autoinsert.el
autorevert.el
avoid.el
battery.el
bind-key.el
bindings.el
bookmark.el
bs.el
buff-menu.el
button.el
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-preview.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
editorconfig-conf-mode.el
editorconfig-core-handle.el
editorconfig-core.el
editorconfig-fnmatch.el
editorconfig-tools.el
editorconfig.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-ks.el
epa-mail.el
epa.el
epg-config.el
epg.el
expand.el
external-completion.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
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-file.el
image-mode.el
image.el
imenu.el
indent-aux.el
indent.el
info-look.el
info-xref.el
info.el
informat.el
isearch.el
isearchb.el
jit-lock.el
jka-cmpr-hook.el
jka-compr.el
json.el
jsonrpc.el
kermit.el
keymap.el
kmacro.el
ldefs-boot.el
loadhist.el
loadup.el
locate.el
lpr.el
ls-lisp.el
macros.el
Makefile.in
man.el
master.el
mb-depth.el
md4.el
menu-bar.el
midnight.el
minibuf-eldef.el
minibuffer.el
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-git.el
pcmpl-gnu.el
pcmpl-linux.el
pcmpl-rpm.el
pcmpl-unix.el
pcmpl-x.el
pcomplete.el
pgtk-dnd.el
pixel-scroll.el
plstore.el
printing.el
proced.el
profiler.el
ps-bdf.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
simple.el
skeleton.el
so-long.el
sort.el
soundex.el
speedbar.el
sqlite-mode.el
sqlite.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
time-stamp.el
time.el
timezone.el
tmm.el
tool-bar.el
tooltip.el
touch-screen.el
transient.el
tree-widget.el
treesit.el
tutorial.el
type-break.el
uniquify.el
userlock.el
vcursor.el
version.el
view.el
visual-wrap.el
w32-fns.el
w32-vars.el
wdired.el
which-key.el
whitespace.el
wid-browse.el
wid-edit.el
widget.el
windmove.el
window-tool-bar.el
window.el
winner.el
woman.el
x-dnd.el
xdg.el
xml.el
xt-mouse.el
xwidget.el
yank-media.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.