1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-01 18:00:40 -08:00
emacs/lisp/eshell
Jim Porter cde38f0df3 Avoid parsing some Eshell forms when performing completion
During completion, we want to evaluate most Eshell forms
(e.g. variable references), but skip others (e.g. globbing,
subcommands).  For globbing, we want to pass the literal glob to
Pcomplete so it can use the glob for selecting completion candidates.
For subcommands (including Lisp forms), we especially want to avoid
evaluation, since they can produce arbitary side effects!  (Bug#50470)

* lisp/eshell/esh-cmd.el (eshell-allow-commands): New variable...
(eshell-commands-forbidden): New error...
(eshell-named-command, eshell-lisp-command): ... use them.

* lisp/eshell/em-cmpl.el (eshell-complete--eval-argument-form):
Disallow command forms and handle errors ourselves.
(eshell-complete-parse-arguments): Don't parse glob characters.

* test/lisp/eshell/em-cmpl-tests.el
(em-cmpl-test/parse-arguments/unevaluated-subcommand)
(em-cmpl-test/parse-arguments/unevaluated-lisp-form)
(em-cmpl-test/parse-arguments/unevaluated-inner-subcommand)
(em-cmpl-test/file-completion/glob, em-cmpl-test/command-completion)
(em-cmpl-test/subcommand-completion): New tests.
(em-cmpl-test/parse-arguments/pipeline): Remove superfluous
let-binding.
(em-cmpl-test/file-completion/after-list): Use a list variable rather
than a subexpression; the latter is no longer evaluated during
completion.
(em-cmpl-test/lisp-function-completion): Check "$(func)" syntax.
2023-03-28 12:03:29 -07:00
..
em-alias.el Merge from origin/emacs-29 2023-01-01 05:47:47 -05:00
em-banner.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
em-basic.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
em-cmpl.el Avoid parsing some Eshell forms when performing completion 2023-03-28 12:03:29 -07:00
em-dirs.el Fix expansion of globs that contain a ~USER reference 2023-03-27 21:04:27 -07:00
em-elecslash.el Make 'eshell-bol' obsolete 2023-01-14 11:09:02 -08:00
em-extpipe.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00
em-glob.el Fix expansion of globs that contain a ~USER reference 2023-03-27 21:04:27 -07:00
em-hist.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00
em-ls.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00
em-pred.el ; Throw strings as the values for 'eshell-incomplete' 2023-02-23 14:09:36 -08:00
em-prompt.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
em-rebind.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
em-script.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
em-smart.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00
em-term.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
em-tramp.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
em-unix.el Merge from origin/emacs-29 2023-01-01 05:47:47 -05:00
em-xtra.el ; Don't require 'eshell' in other Eshell files 2023-02-15 15:45:50 -08:00
esh-arg.el Add support for completing special references (e.g. buffers) in Eshell 2023-03-11 18:49:28 -08:00
esh-cmd.el Avoid parsing some Eshell forms when performing completion 2023-03-28 12:03:29 -07:00
esh-ext.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
esh-io.el Set the 'field' property for Eshell output 2023-01-14 11:09:02 -08:00
esh-mode.el ; Throw strings as the values for 'eshell-incomplete' 2023-02-23 14:09:36 -08:00
esh-module.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00
esh-opt.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00
esh-proc.el Ensure that Eshell users can run lines of command output as input 2023-02-09 22:32:51 -08:00
esh-util.el Ensure that Eshell users can run lines of command output as input 2023-02-09 22:32:51 -08:00
esh-var.el Simplify parsing subcommands slightly 2023-03-28 12:02:46 -07:00
eshell.el Allow unloading Eshell 2023-02-15 17:31:52 -08:00