Make eshell/kill handle -<signal> and -<SIGNALNAME> (Bug#29156)
* lisp/eshell/esh-proc.el (eshell/kill): Handle the argument parsing and numeric conversion in function in order to parse -signal and -SIGNALNAME correctly. * doc/misc/eshell.texi (kill): Update docs to reflect new function behaviour. * etc/NEWS: Mention new eshell/kill behaviour.
This commit is contained in:
parent
1d47d777ef
commit
1be6a21fd8
3 changed files with 12 additions and 4 deletions
|
@ -330,7 +330,7 @@ List subprocesses of the Emacs process, if any, using the function
|
|||
@item kill
|
||||
@cmindex kill
|
||||
Kill processes. Takes a PID or a process object and an optional
|
||||
signal specifier.
|
||||
signal specifier which can either be a number or a signal name.
|
||||
|
||||
@item listify
|
||||
@cmindex listify
|
||||
|
|
5
etc/NEWS
5
etc/NEWS
|
@ -278,6 +278,11 @@ To restore the old behavior, use
|
|||
*** The function 'shell-uniquify-list' has been renamed from
|
||||
'eshell-uniqify-list'.
|
||||
|
||||
*** The function eshell/kill is now able to handle signal switches.
|
||||
Previously eshell/kill would fail if provided a kill signal to send to the
|
||||
process. It now accepts signals specified either by name or by its number.
|
||||
|
||||
|
||||
** Pcomplete
|
||||
*** The function 'pcomplete-uniquify-list' has been renamed from
|
||||
'pcomplete-uniqify-list'.
|
||||
|
|
|
@ -167,7 +167,8 @@ The signals which will cause this to happen are matched by
|
|||
(defun eshell/kill (&rest args)
|
||||
"Kill processes.
|
||||
Usage: kill [-<signal>] <pid>|<process> ...
|
||||
Accepts PIDs and process objects."
|
||||
Accepts PIDs and process objects. Optionally accept signals
|
||||
and signal names."
|
||||
;; If the first argument starts with a dash, treat it as the signal
|
||||
;; specifier.
|
||||
(let ((signum 'SIGINT))
|
||||
|
@ -178,12 +179,12 @@ Accepts PIDs and process objects."
|
|||
((string-match "\\`-[[:digit:]]+\\'" arg)
|
||||
(setq signum (abs (string-to-number arg))))
|
||||
((string-match "\\`-\\([[:upper:]]+\\|[[:lower:]]+\\)\\'" arg)
|
||||
(setq signum (abs (string-to-number arg)))))
|
||||
(setq signum (intern (substring arg 1)))))
|
||||
(setq args (cdr args))))
|
||||
(while args
|
||||
(let ((arg (if (eshell-processp (car args))
|
||||
(process-id (car args))
|
||||
(car args))))
|
||||
(string-to-number (car args)))))
|
||||
(when arg
|
||||
(cond
|
||||
((null arg)
|
||||
|
@ -198,6 +199,8 @@ Accepts PIDs and process objects."
|
|||
(setq args (cdr args))))
|
||||
nil)
|
||||
|
||||
(put 'eshell/kill 'eshell-no-numeric-conversions t)
|
||||
|
||||
(defun eshell-read-process-name (prompt)
|
||||
"Read the name of a process from the minibuffer, using completion.
|
||||
The prompt will be set to PROMPT."
|
||||
|
|
Loading…
Add table
Reference in a new issue