summaryrefslogtreecommitdiff
path: root/doc/misc/eshell.texi
Commit message (Collapse)AuthorAgeFilesLines
* ; Add 2024 to copyright yearsPo Lu2024-01-021-1/+1
|
* Adapt Eshell manualMichael Albinus2023-08-271-1/+2
| | | | | * doc/misc/eshell.texi (Arguments): Mention more special characters to be quoted in remote file names. (Bug#65431)
* Fix command example in Eshell manualJim Porter2023-08-151-1/+1
| | | | | | * doc/misc/eshell.texi (Introduction): Fix example (bug#65303). Reported by Eric Gillespie <brickviking@gmail.com>.
* Add user options mentioned in the Eshell manual to the variable indexJim Porter2023-08-141-2/+33
| | | | | * doc/misc/eshell.texi: Make variable index entries use "code" style, and add indexing for any options already in the manual.
* ; * doc/misc/eshell.texi (Argument Modifiers): Fix typo in example.Jim Porter2023-08-021-1/+1
|
* ; * doc/misc/eshell.texi (Aliases): Remove stray "@end table".Eli Zaretskii2023-07-141-2/+0
|
* ; * doc/misc/eshell.texi (Variables): Add missing index for $INSIDE_EMACSJim Porter2023-07-131-0/+1
| | | | Do not merge to master. On master, this was fixed by 0bb8a011d57.
* ; * doc/misc/eshell.texi (Invocation): Whitespace cleanup.Michael Albinus2023-07-131-1/+1
| | | | Do not merge to master. This is a backport of 04710bd01b2.
* Add documentation about remote access in EshellJim Porter2023-07-131-1/+32
| | | | | | | | | Do not merge to master. This is a backport of 438921161ac. * doc/misc/eshell.texi (Invocation): Mention the '*' prefix. (Remote Access): New section... (Commands): ... link to it.
* ; * doc/misc/eshell.texi: Fix last change.Jim Porter2023-07-131-3/+3
| | | | Do not merge to master. This is a backport of 8c5fef4eb30.
* ; * doc/misc/eshell.texi: Fix typos and clean up unclear wording.Jim Porter2023-07-131-38/+39
| | | | Do not merge to master. This is a backport of 118582efb30.
* Document some missing Eshell commandsJim Porter2023-07-131-0/+24
| | | | | | | Do not merge to master. This is a backport of f7a899d7ca0. * doc/misc/eshell.texi (Built-ins): Document 'eshell-debug'. (Extra built-in commands): Document 'count', 'ff', and 'gf'.
* Document optional Eshell modulesJim Porter2023-07-131-83/+128
| | | | | | | | | | Do not merge to master. This is a backport of 77f13edab0f. * doc/misc/eshell.texi (Built-ins): Move disabled-by-default commands to... (Tramp extensions, Extra built-in commands): ...here (Optional modules, Key rebinding, Smart scrolling): Add documentation. (Bug and ideas): Documentation is no longer incomplete!
* Correct the Eshell documentation about how to write new modulesJim Porter2023-07-131-13/+17
| | | | | | | * doc/misc/eshell.texi (Writing a module): Fix the documentation. 'eshell-defgroup' doesn't exist anymore. Do not merge to master. This is a backport of 77f13edab0f.
* Restructure Eshell extension modules documentationJim Porter2023-07-131-42/+44
| | | | | | | | | | | | | | | | | This adds a section for documenting all the optional modules. Do not merge to master. This is a backport of f2981a1681d. * doc/misc/eshell.texi (Extension modules): Move explanation about writing modules to... (Writing a module): ... here. (Module testing): Remove. Testing an Eshell module doesn't require any special documentation. (Key binding, Smart scrolling, Electric forward slash): Move under... (Optional modules): ... here. (Directory handling, Terminal emulation): Remove. These modules are enabled by default, and so are documented above. (Tramp extensions, Extra built-in commands): New sections.
* ; * doc/misc/eshell.texi (Bugs and ideas): Remove implemented feature.Jim Porter2023-07-131-2/+0
| | | | Do not merge to master. This is a backport of 194de36ca9f.
* Add more detail about how to invoke Eshell commandsJim Porter2023-01-171-36/+100
| | | | | | | | | | * doc/misc/eshell.texi (Variables): Move footnote explaining "REPL" from here... (Top): ... to its first use here. (Commands): Move explanation about kernel functions to here. (Invocation): Describe command form and Lisp form. Fix documentation about priority of commands in command form. (Arguments): Add a cross reference to the Invocation node.
* ; Add 2023 to copyright years.Eli Zaretskii2023-01-011-1/+1
|
* Treat escaped newlines in Eshell as the empty stringJim Porter2022-12-071-6/+34
| | | | | | | | | | | | | | | | | | | | | | | | | This fixes a regression introduced during Emacs 29's development. * lisp/eshell/esh-arg.el (eshell-parse-argument): Handle 'eshell-empty-token' as the result of an argument-parsing hook. (eshell-parse-argument-hook): Document 'eshell-empty-token'. (eshell-parse-backslash): Return 'eshell-empty-token' when encountering an escaped newline. * test/lisp/eshell/eshell-tests.el (eshell-test/escape-nonspecial) (eshell-test/escape-nonspecial-unicode) (eshell-test/escape-nonspecial-quoted) (eshell-test/escape-special-quoted): Move from here... * test/lisp/eshell/esh-arg-tests.el (esh-arg-test/escape/nonspecial) (esh-arg-test/escape/nonspecial-unicode) (esh-arg-test/escape-quoted/nonspecial) (esh-arg-test/escape-quoted/special): ... to here. (esh-arg-test/escape/special, esh-arg-test/escape/newline) (esh-arg-test/escape-quoted/newline): New tests. * doc/misc/eshell.texi (Arguments): Explain escaping logic in more detail (bug#59622).
* ; Fix typos (duplicate words)Stefan Kangas2022-11-171-1/+1
|
* Add the "doas" alias to eshell.Brian Cully2022-11-051-3/+6
| | | | | | | | | | | | | * lisp/eshell/em-tramp.el (eshell/doas): new function. (eshell--method-wrap-directory): new function. (eshell/sudo): accept '-s'/'--shell' for interactive use. * test/lisp/eshell/em-tramp-tests.el (em-tramp-test/sudo-shell) (em-tramp-test/sudo-user-shell) (em-tramp-test/doas-basic) (em-tramp-test/doas-user) (em-tramp-test/doas-shell) (em-tramp-test/doas-user-shell): new tests. * etc/NEWS: mention new 'doas' eshell command. * doc/misc/eshell.texi: add 'doas' command documentation.
* ; Fix quoting of non-nil in texinfo sourcesStefan Kangas2022-10-271-3/+3
|
* ; Fix some invalid Eshell syntax in an exampleJim Porter2022-10-171-1/+1
| | | | | * doc/misc/eshell.texi (Expansion): * etc/NEWS: Fix invalid Eshell syntax.
* Improve handling of $PATH in Eshell for remote directoriesJim Porter2022-10-171-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/eshell/esh-util.el (eshell-path-env, eshell-parse-colon-path): Make obsolete. (eshell-path-env-list): New variable. (eshell-connection-default-profile): New connection-local profile. (eshell-get-path): Reimplement using 'eshell-path-env-list'; add LITERAL-P argument. (eshell-set-path): New function. * lisp/eshell/esh-var.el (eshell-variable-aliases-list): Add entry for $PATH. (eshell-var-initialize): Add 'eshell-path-env-list' to 'eshell-subcommand-bindings'. * lisp/eshell/esh-ext.el (eshell-search-path): Use 'file-name-concat' instead of 'concat'. (eshell/addpath): Use 'eshell-get-path' and 'eshell-set-path'. * lisp/net/tramp-integration.el: Only apply Eshell hooks when 'eshell-path-env-list' is unbound. * test/lisp/eshell/esh-var-tests.el (esh-var-test/path-var/local-directory) (esh-var-test/path-var/remote-directory, esh-var-test/path-var/set) (esh-var-test/path-var/set-locally) (esh-var-test/path-var-preserve-across-hosts): New tests. * test/lisp/eshell/esh-ext-tests.el: New file. * test/lisp/eshell/eshell-tests-helpers.el (with-temp-eshell): Set 'eshell-last-dir-ring-file-name' to nil. (eshell-tests-remote-accessible-p, eshell-last-input) (eshell-last-output): New functions. (eshell-match-output, eshell-match-output--explainer): Use 'eshell-last-input' and 'eshell-last-output'. * doc/misc/eshell.texi (Variables): Document $PATH. * etc/NEWS: Announce this change (bug#57556).
* Allow setting the values of variable aliases in EshellJim Porter2022-10-171-8/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes commands like "COLUMNS=40 some-command" work as expected. * lisp/eshell/esh-cmd.el (eshell-subcommand-bindings): Remove 'process-environment' from here... * lisp/eshell/esh-var.el (eshell-var-initialize): ... and add to here, along with 'eshell-variable-aliases-list'. (eshell-inside-emacs): Convert to a 'defvar-local' to make it settable in a particular Eshell buffer. (eshell-variable-aliases-list): Make $?, $$, and $* read-only and update docstring. (eshell-set-variable): New function... (eshell-handle-local-variables, eshell/export, eshell/unset): ... use it. (eshell/set, pcomplete/eshell-mode/set): New functions. (eshell-get-variable): Get the variable alias's getter function when appropriate and use a safer method for checking function arity. * test/lisp/eshell/esh-var-tests.el (esh-var-test/set/env-var) (esh-var-test/set/symbol, esh-var-test/unset/env-var) (esh-var-test/unset/symbol, esh-var-test/setq, esh-var-test/export) (esh-var-test/local-variables, esh-var-test/alias/function) (esh-var-test/alias/function-pair, esh-var-test/alias/string) (esh-var-test/alias/string/prefer-lisp, esh-var-test/alias/symbol) (esh-var-test/alias/symbol-pair, esh-var-test/alias/export) (esh-var-test/alias/local-variables): New tests. * doc/misc/eshell.texi (Built-ins): Add 'set' and update 'unset' documentation. (Variables): Expand documentation of how to get/set variables.
* ; Obsolete 'eshell/define'Jim Porter2022-10-171-5/+0
| | | | | | | * lisp/eshell/esh-var.el (eshell/define): Make obsolete, and explain its current state. * doc/misc/eshell.texi (Built-ins): Remove 'define'.
* ; Fix typosStefan Kangas2022-09-281-1/+1
|
* Add support for more kinds of redirect operators in EshellJim Porter2022-09-041-5/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/eshell/esh-arg.el: Require cl-lib. (eshell-finish-arg): Allow passing multiple ARGUMENTS. (eshell-quote-argument): Handle the case when 'eshell-finish-arg' was passed multiple arguments. * lisp/eshell/esh-cmd.el (eshell-do-pipelines) (eshell-do-pipelines-synchronously): Only set stdout output handle. * lisp/eshell/esh-io.el (eshell-redirection-operators-alist): New constant. (eshell-io-initialize): Prefer sharp quotes for functions. (eshell-parse-redirection, eshell-strip-redirections): Add support for more redirection forms. (eshell-copy-output-handle, eshell-set-all-output-handles): New functions. * test/lisp/eshell/esh-io-tests.el (esh-io-test/redirect-all/overwrite, esh-io-test/redirect-all/append) (esh-io-test/redirect-all/insert, esh-io-test/redirect-copy) (esh-io-test/redirect-copy-first, esh-io-test/redirect-pipe): New tests. * doc/misc/eshell.texi (Redirection): Document new redirection syntax. (Pipelines): Document '|&' syntax. (Bugs and ideas): Update item about redirection syntax. * etc/NEWS: Announce this change.
* Simplify Eshell handle functions and add tests/documentationJim Porter2022-09-041-28/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/eshell/esh-arg.el (eshell-parse-argument-hook): Explain how to use 'eshell-finish-arg'. * lisp/eshell/esh-io.el (eshell-create-handles): Only call 'eshell-get-target' for stderr if necessary. (eshell-protect-handles): Use 'dotimes'. (eshell-set-output-handle): Pass HANDLES and fix an edge case with setting a duplicate TARGET. * test/lisp/eshell/eshell-tests-helpers.el (eshell-with-temp-buffer): New macro. * test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/quoted-lisp-form) (esh-cmd-test/backquoted-lisp-form) (esh-cmd-test/backquoted-lisp-form/splice): New tests. * test/lisp/eshell/eshell-tests.el (eshell-test/redirect-buffer) (eshell-test/redirect-buffer-escaped): Move to... * test/lisp/eshell/esh-io-tests.el: ... here, and add other I/O tests. * doc/misc/eshell.texi (Arguments): Add documentation for special argument types. (Input/Output): Expand documentation for redirection and pipelines.
* Delete many references to Emacs 23 or older from docsStefan Kangas2022-08-131-5/+0
| | | | | | | | | | | | | | | | | | | * doc/emacs/glossary.texi (Glossary): * doc/emacs/msdos.texi (Windows Fonts): * doc/lispref/loading.texi (Library Search): * doc/lispref/processes.texi (Accepting Output): * doc/misc/auth.texi (GnuPG and EasyPG Assistant Configuration): * doc/misc/efaq-w32.texi (Font names): * doc/misc/efaq.texi (Turning on syntax highlighting) (Escape sequences in shell output): * doc/misc/eshell.texi (Bugs and ideas): * doc/misc/gnus.texi (nnmairix requirements): * doc/misc/gnus-faq.texi (FAQ 1-5): * doc/misc/idlwave.texi (Troubleshooting): * doc/misc/message.texi (Using S/MIME): * doc/misc/mh-e.texi (Preface, Incorporating Mail): * doc/misc/viper.texi (Viper Specials): Delete references to Emacs 23 or older.
* Make '$?' and '$$' variables more consistent in EshellJim Porter2022-08-121-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, '$?' (last exit code) was only useful for external commands, and '$$' (last result) was only useful for Lisp commands. * lisp/eshell/esh-cmd.el (eshell-lisp-form-nil-is-failure): New option. (eshell-lisp-command): Set last exit code to 1 when the command signals an error, and 2 if it returns nil (for Lisp forms only). * lisp/eshell/esh-proc.el (eshell-sentinel): Set last result to t if the command succeeded. * test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/while-loop-lisp-form, esh-cmd-test/until-loop-lisp-form) (esh-cmd-test/if-else-statement-lisp-form) (esh-cmd-test/if-else-statement-lisp-form-2) (esh-cmd-test/unless-else-statement-lisp-form): New tests. * test/lisp/eshell/esh-var-tests.el (esh-var-test/last-status-var-lisp-command) (esh-var-test/last-status-var-lisp-form) (esh-var-test/last-status-var-lisp-form-2) (esh-var-test/last-status-var-ext-cmd) (esh-var-test/last-status-var-ext-cmd): New tests. (esh-var-test/last-result-var2): Rename from this... ( esh-var-test/last-result-var-twice): ... to this. * doc/misc/eshell.texi (Variables): Update documentation about '$?' and '$$'. (Control Flow): Mention that '(lisp forms)' can be used as conditionals. * etc/NEWS: Announce this change (bug#57129).
* Allow using dollar expansions in Eshell conditionalsJim Porter2022-08-121-19/+24
| | | | | | | | | | | | | | | | | * lisp/eshell/esh-cmd.el (eshell-structure-basic-command): Forms beginning with 'eshell-escape-arg' are "data-wise". * test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/while-loop) (esh-cmd-test/until-loop, esh-cmd-test/if-statement) (esh-cmd-test/if-else-statement, esh-cmd-test/unless-statement) (esh-cmd-test/unless-else-statement): Use variable interpolation. (esh-cmd-test/while-loop-ext-cmd, esh-cmd-test/until-loop-ext-cmd) (esh-cmd-test/if-else-statement-ext-cmd) (esh-cmd-test/unless-else-statement-ext-cmd): New tests, adapted from the existing ones. * doc/misc/eshell.texi (Control Flow): Update documentation for conditionals (bug#57129).
* Only set Eshell execution result metavariables when non-nilJim Porter2022-08-121-17/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This simplifies usage of 'eshell-close-handles' in several places and makes it work more like the docstring indicated it would. * lisp/eshell/esh-io.el (eshell-close-handles): Only store EXIT-CODE and RESULT if they're non-nil. Also, use 'dotimes' and 'dolist' to simplify the implementation. * lisp/eshell/em-alias.el (eshell-write-aliases-list): * lisp/eshell/esh-cmd.el (eshell-rewrite-for-command) (eshell-structure-basic-command): Adapt calls to 'eshell-close-handles'. * test/lisp/eshell/eshell-tests.el (eshell-test/simple-command-result) (eshell-test/lisp-command, eshell-test/lisp-command-with-quote) (eshell-test/for-loop, eshell-test/for-name-loop) (eshell-test/for-name-shadow-loop, eshell-test/lisp-command-args) (eshell-test/subcommand, eshell-test/subcommand-args) (eshell-test/subcommand-lisp): Move from here... * test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/simple-command-result, esh-cmd-test/lisp-command) (esh-cmd-test/lisp-command-with-quote, esh-cmd-test/for-loop) (esh-cmd-test/for-name-loop, esh-cmd-test/for-name-shadow-loop) (esh-cmd-test/lisp-command-args, esh-cmd-test/subcommand) (esh-cmd-test/subcommand-args, esh-cmd-test/subcommand-lisp): ... to here. (esh-cmd-test/and-operator, esh-cmd-test/or-operator) (esh-cmd-test/for-loop-list, esh-cmd-test/for-loop-multiple-args) (esh-cmd-test/while-loop, esh-cmd-test/until-loop) (esh-cmd-test/if-statement, esh-cmd-test/if-else-statement) (esh-cmd-test/unless-statement, esh-cmd-test/unless-else-statement): New tests. * doc/misc/eshell.texi (Invocation): Explain '&&' and '||'. (for loop): Move from here... (Control Flow): ... to here, and add documentation for other control flow forms.
* ; Fix typosStefan Kangas2022-07-141-2/+2
|
* ; Fix typos: prefer American spellingStefan Kangas2022-07-141-1/+1
|
* ; Fix recent additions to the Eshell manualEli Zaretskii2022-07-121-13/+15
| | | | | * doc/misc/eshell.texi (Variables): Fix a @footnote. (Variables): Fix indexing and @item's in a @table.
* Improve tests/organization for built-in variablesJim Porter2022-07-121-12/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/eshell/em-dirs.el (eshell-inside-emacs) (eshell-dirs-initialize): Move 'INSIDE_EMACS' from here... * lisp/eshell/esh-var.el (eshell-inside-emacs) (eshell-variable-aliases-alist): ... to here, and improve doc string. * test/lisp/eshell/eshell-tests.el (eshell-test/inside-emacs-var): Move from here... * test/lisp/eshell/esh-var-tests.el (esh-var-test/inside-emacs-var): ... to here. (esh-var-test/last-arg-var-indices) (esh-var-test/last-arg-var-split-indices): New tests. * test/lisp/eshell/em-alias-tests.el: * test/lisp/eshell/em-dirs-tests.el: * test/lisp/eshell-em-script-tests.el: New files. * doc/misc/eshell.texi (Built-ins): Fix 'cd' documentation; it works with the directory ring, not the directory stack. Move built-in variables documentation from here... (Variables): ... to here, and add documentation for missing built-in variables.
* Doc fix; don't mention rloginStefan Kangas2022-07-111-5/+4
| | | | | | * doc/emacs/misc.texi (Remote Host): * doc/misc/eshell.texi (Bugs and ideas): Don't mention rlogin. (Bug#56461)
* Optionally signal an error if an Eshell predicate fails to match anythingJim Porter2022-06-261-5/+0
| | | | | | | | | | | | | | * lisp/eshell/em-pred.el (eshell-error-if-no-glob): Declare it. (eshell-apply-modifiers): Add STRING-DESC argument and signal an error if there are no matches and 'eshell-error-if-no-glob' is set. (eshell-parse-arg-modifier): Pass modifier string to 'eshell-apply-modifiers'. * test/lisp/eshell/em-pred-tests.el (eshell-eval-predicate): Simplify. (em-pred-test/no-matches): New test. * doc/misc/eshell.texi (Bugs and ideas): Remove todo entry about this change.
* Keep subcommands in pipelines from clobbering the head/tail processesJim Porter2022-05-241-8/+0
| | | | | | | | | | | | | * lisp/eshell/esh-cmd.el (eshell-execute-pipeline): Use 'make-symbol' for headproc and tailproc. (eshell-do-pipelines, eshell-do-pipelines-synchronously): Adapt to the above. * test/lisp/eshell/eshell-tests.el (eshell-test/pipe-subcommand) (eshell-test/pipe-subcommand-with-pipe): New test. * doc/misc/eshell.texi (Bugs and ideas): Remove item about piping to process from loop; this commit fixes it (bug#55590).
* ; * doc/misc/eshell.texi (Arguments): Fix cross-references.Eli Zaretskii2022-05-031-4/+4
|
* Improve the behavior of concatenating parts of Eshell argumentsJim Porter2022-05-031-4/+30
| | | | | | | | | | | | | | | | | | | | | | | Previously, concatenating a list to a string would first convert the list to a string. Now, the string is concatenated with the last element of the list. * lisp/eshell/esh-util.el (eshell-to-flat-string): Make obsolete. * lisp/eshell/esh-arg.el (eshell-concat, eshell-concat-1): New functions. (eshell-resolve-current-argument): Use 'eshell-concat'. * test/lisp/eshell/esh-var-tests.el (esh-var-test/interp-concat-cmd): Add check for concatenation of multiline output of subcommands. (esh-var-test/quoted-interp-concat-cmd): New test. * test/lisp/eshell/em-extpipe-tests.el (em-extpipe-test-13): Use 'eshell-concat'. * doc/misc/eshell.texi (Expansion): Document this behavior. * etc/NEWS: Announce the change (bug#55236).
* Return a list of numbers if all lines of an Eshell subcommand are numericJim Porter2022-05-031-3/+5
| | | | | | | | | | | | | | * lisp/eshell/esh-util.el (eshell-convertible-to-number-p) (eshell-convert-to-number): New functions... (eshell-convert): ... use them. * test/lisp/eshell/esh-var-tests.el (esh-var-test/interp-convert-cmd-string-newline): Add checks for numeric output. * doc/misc/eshell.texi (Dollars Expansion): Document the new behavior. * etc/NEWS: Announce the change (bug#55236).
* Eshell variable expansion should always return strings inside quotesJim Porter2022-05-031-12/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is closer in behavior to regular shells, and gives Eshell users greater flexibility in how variables are expanded. * lisp/eshell/esh-util.el (eshell-convert): Add TO-STRING argument. * lisp/eshell/esh-var.el (eshell-parse-variable-ref): Add MODIFIER-P argument and adjust how 'eshell-convert' and 'eshell-apply-indices' are called. (eshell-get-variable, eshell-apply-indices): Add QUOTED argument. * test/lisp/eshell/esh-var-tests.el (eshell-test-value): New defvar. (esh-var-test/interp-convert-var-number) (esh-var-test/interp-convert-var-split-indices) (esh-var-test/interp-convert-quoted-var-number) (esh-var-test/interp-convert-quoted-var-split-indices) (esh-var-test/interp-convert-cmd-string-newline) (esh-var-test/interp-convert-cmd-multiline) (esh-var-test/interp-convert-cmd-number) (esh-var-test/interp-convert-cmd-split-indices) (esh-var-test/quoted-interp-convert-var-number) (esh-var-test/quoted-interp-convert-var-split-indices) (esh-var-test/quoted-interp-convert-quoted-var-number) (esh-var-test/quoted-interp-convert-quoted-var-split-indices) (esh-var-test/quoted-interp-convert-cmd-string-newline) (esh-var-test/quoted-interp-convert-cmd-multiline) (esh-var-test/quoted-interp-convert-cmd-number) (esh-var-test/quoted-interp-convert-cmd-split-indices): New tests. * doc/misc/eshell.texi (Arguments): Expand this section, and document the new behavior. (Dollars Expansion): Provide more detail about '$(lisp)' and '${command}' forms. * etc/NEWS (Eshell): Announce this change (bug#55236).
* Fix punctuation in the Eshell manualEli Zaretskii2022-05-021-3/+3
| | | | | * doc/misc/eshell.texi (Argument Predication and Modification): Fix whitespace.
* Use a common set of string delimiters for all Eshell predicates/modifiersJim Porter2022-05-011-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/eshell/em-pred.el (eshell-pred-delimiter-pairs): New variable. (eshell-get-comparison-modifier-argument) (eshell-get-numeric-modifier-argument) (eshell-get-delimited-modifier-argument): New functions... (eshell-pred-user-or-group, eshell-pred-file-time) (eshell-pred-file-links, eshell-pred-file-size) (eshell-pred-substitute, eshell-join-memebers, eshell-split-members): ... and use them here. (eshell-include-members): Pass 'mod-char' and use 'eshell-get-delimited-modifier-argument'. (eshell-pred-file-type, eshell-pred-file-mode): Use 'when-let'. (eshell-modifier-alist): Pass modifier char to 'eshell-include-members'. * test/lisp/eshell/em-pred-tests.el (em-pred-test/predicate-delimiters): New test. (em-pred-test/predicate-uid, em-pred-test/predicate-gid, em-pred-test/modifier-include, em-pred-test/modifier-exclude): Remove cases covered by 'em-pred-test/predicate-delimiters'. (em-pred-test/modifier-substitute): Add test cases for new delimiter styles. * doc/misc/eshell.texi (Argument Predication and Modification): Explain how string parameters are delimited. (Argument Modifiers): Document some special delimiter behavior with the 's/PATTERN/REPLACE/' modifier (bug#55204). * etc/NEWS: Announce this change, and move the 'eshell-eval-using-options' entry to the Eshell section.
* New electric forward slash Eshell moduleSean Whitton2022-04-211-4/+61
| | | | | | | | * lisp/eshell/em-elecslash.el: New file. * etc/NEWS: * doc/misc/eshell.texi (Electric forward slash): Document the module. (Make / electric): Retitle to "Make / more electric", update, add "@noindent", and standardize terminology.
* Add 'G' argument predicate in EshellJim Porter2022-04-171-0/+3
| | | | | | | | | | * lisp/eshell/em-pred.el (eshell-predicate-alist): Add 'G' predicate. (eshell-predicate-help-string): Document it. (Bug#54470) * test/lisp/eshell/em-pred-tests.el (em-pred-test/predicate-effective-gid): New test. * doc/misc/eshell.text (Argument Predication): Document 'G' predicate.
* Add unit tests and documentation for Eshell predicates/modifiersJim Porter2022-04-171-0/+240
| | | | | | | | | | | | | | | | | | | | | * lisp/eshell/esh-cmd.el (eshell-eval-argument): New function. * lisp/eshell/esh-util.el (eshell-file-attributes): Pass original value of FILE to 'file-attributes'. * lisp/eshell/em-pred.el (eshell-predicate-alist): Change socket char to '=', since 's' conflicts with setuid. (eshell-modifier-alist): Fix 'E' (eval) modifier by using 'eshell-eval-argument'. Also improve performance of 'O' (reversed sort) modifier. (eshell-modifier-help-string): Fix documentation of global substitution modifier. (eshell-pred-substitute): Fix infinite loop in some global substitutions. (eshell-join-members): Fix joining with implicit " " delimiter. (Bug#54470) * test/lisp/eshell/em-pred-tests.el: New file. * doc/misc/eshell.texi (Argument Predication): New section.
* Add unit tests and documentation for Eshell pattern-based globsJim Porter2022-04-171-9/+85
| | | | | | | | | | * lisp/eshell/em-glob.el (eshell-extended-glob): Fix docstring. (eshell-glob-entries): Refer to '**/' in error (technically, '**' can end a glob, but it means the same thing as '*'). (Bug#54470) * test/lisp/eshell/em-glob-tests.el: New file. * doc/misc/eshell.texi (Globbing): Document pattern-based globs.