* lisp/eshell: Minor fixes.
* lisp/eshell/em-ls.el (show-almost-all): Declare. (eshell-do-ls): Add support for -A argument. * lisp/eshell/esh-proc.el (eshell/kill): Rewrite.
This commit is contained in:
parent
8ca3092052
commit
276a61a690
3 changed files with 56 additions and 40 deletions
|
@ -1,3 +1,10 @@
|
|||
2013-02-08 Aidan Gauland <aidalgol@no8wireless.co.nz>
|
||||
|
||||
* eshell/esh-proc.el (eshell/kill): Rewrite.
|
||||
|
||||
* eshell/em-ls.el (show-almost-all): Declare.
|
||||
(eshell-do-ls): Add support for -A argument.
|
||||
|
||||
2013-02-08 Jambunathan K <kjambunathan@gmail.com>
|
||||
|
||||
* icomplete.el (icomplete-forward-completions)
|
||||
|
|
|
@ -328,6 +328,7 @@ instead."
|
|||
(defvar numeric-uid-gid)
|
||||
(defvar reverse-list)
|
||||
(defvar show-all)
|
||||
(defvar show-almost-all)
|
||||
(defvar show-recursive)
|
||||
(defvar show-size)
|
||||
(defvar sort-method)
|
||||
|
@ -337,13 +338,15 @@ instead."
|
|||
(defun eshell-do-ls (&rest args)
|
||||
"Implementation of \"ls\" in Lisp, passing ARGS."
|
||||
(funcall flush-func -1)
|
||||
;; process the command arguments, and begin listing files
|
||||
;; Process the command arguments, and begin listing files.
|
||||
(eshell-eval-using-options
|
||||
"ls" (if eshell-ls-initial-args
|
||||
(list eshell-ls-initial-args args)
|
||||
args)
|
||||
`((?a "all" nil show-all
|
||||
"show all files in directory")
|
||||
"do not ignore entries starting with .")
|
||||
(?A "almost-all" nil show-almost-all
|
||||
"do not list implied . and ..")
|
||||
(?c nil by-ctime sort-method
|
||||
"sort by last status change time")
|
||||
(?d "directory" nil dir-literal
|
||||
|
@ -558,7 +561,17 @@ relative to that directory."
|
|||
;; later when we are going to
|
||||
;; display user and group names.
|
||||
(if numeric-uid-gid 'integer 'string))))
|
||||
(when (and (not show-all) eshell-ls-exclude-regexp)
|
||||
(when (and show-almost-all
|
||||
(not show-all))
|
||||
(setq entries
|
||||
(remove-if
|
||||
(lambda (entry)
|
||||
(let ((filename (caar entry)))
|
||||
(or (string= filename ".")
|
||||
(string= filename ".."))))
|
||||
entries)))
|
||||
(when (and (not show-all)
|
||||
eshell-ls-exclude-regexp)
|
||||
(while (and entries (string-match eshell-ls-exclude-regexp
|
||||
(caar entries)))
|
||||
(setq entries (cdr entries)))
|
||||
|
|
|
@ -165,43 +165,39 @@ The signals which will cause this to happen are matched by
|
|||
(list-processes)))
|
||||
|
||||
(defun eshell/kill (&rest args)
|
||||
"Kill processes, buffers, symbol or files."
|
||||
(let ((ptr args)
|
||||
(signum 'SIGINT))
|
||||
(while ptr
|
||||
(if (or (eshell-processp (car ptr))
|
||||
(and (stringp (car ptr))
|
||||
(string-match "^[A-Za-z/][A-Za-z0-9<>/]+$"
|
||||
(car ptr))))
|
||||
;; What about when $lisp-variable is possible here?
|
||||
;; It could very well name a process.
|
||||
(setcar ptr (get-process (car ptr))))
|
||||
(setq ptr (cdr ptr)))
|
||||
(while args
|
||||
(let ((id (if (eshell-processp (car args))
|
||||
(process-id (car args))
|
||||
(car args))))
|
||||
(when id
|
||||
(cond
|
||||
((null id)
|
||||
(error "kill: bad signal spec"))
|
||||
((and (numberp id) (= id 0))
|
||||
(error "kill: bad signal spec `%d'" id))
|
||||
((and (stringp id)
|
||||
(string-match "^-?[0-9]+$" id))
|
||||
(setq signum (abs (string-to-number id))))
|
||||
((stringp id)
|
||||
(let (case-fold-search)
|
||||
(if (string-match "^-\\([A-Z]+[12]?\\)$" id)
|
||||
(setq signum
|
||||
(intern (concat "SIG" (match-string 1 id))))
|
||||
(error "kill: bad signal spec `%s'" id))))
|
||||
((< id 0)
|
||||
(setq signum (abs id)))
|
||||
(t
|
||||
(signal-process id signum)))))
|
||||
(setq args (cdr args)))
|
||||
nil))
|
||||
"Kill processes.
|
||||
Usage: kill [-<signal>] <pid>|<process> ...
|
||||
Accepts PIDs and process objects."
|
||||
;; If the first argument starts with a dash, treat it as the signal
|
||||
;; specifier.
|
||||
(let ((signum 'SIGINT))
|
||||
(let ((arg (car args))
|
||||
(case-fold-search nil))
|
||||
(when (stringp arg)
|
||||
(cond
|
||||
((string-match "^-[[:digit:]]+$" arg)
|
||||
(setq signum (abs (string-to-number arg)))
|
||||
((or (string-match "^-[[:upper:]]+$" arg)
|
||||
(string-match "^-[[:lower:]]+$" arg))
|
||||
(setq signum (abs (string-to-number arg))))))
|
||||
(setq args (cdr args))))
|
||||
(while args
|
||||
(let ((arg (if (eshell-processp (car args))
|
||||
(process-id (car args))
|
||||
(car args))))
|
||||
(when arg
|
||||
(cond
|
||||
((null arg)
|
||||
(error "kill: null pid. Process may actually be a network connection."))
|
||||
((not (numberp arg))
|
||||
(error "kill: invalid argument type: %s" (type-of arg)))
|
||||
((and (numberp arg)
|
||||
(<= arg 0))
|
||||
(error "kill: bad pid: %d" arg))
|
||||
(t
|
||||
(signal-process arg signum)))))
|
||||
(setq args (cdr args))))
|
||||
nil)
|
||||
|
||||
(defun eshell-read-process-name (prompt)
|
||||
"Read the name of a process from the minibuffer, using completion.
|
||||
|
|
Loading…
Add table
Reference in a new issue