[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/lisp ChangeLog pcomplete.el eshell/em-pro...
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] emacs/lisp ChangeLog pcomplete.el eshell/em-pro... |
Date: |
Sat, 28 Nov 2009 17:06:34 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Stefan Monnier <monnier> 09/11/28 17:06:34
Modified files:
lisp : ChangeLog pcomplete.el
lisp/eshell : em-prompt.el
Log message:
* eshell/em-prompt.el (eshell-prompt-function): Abbreviate pwd, since
`cd' doesn't always do it for us (bug#5067).
* pcomplete.el (pcomplete-entries): Revert change installed mistakenly
on 2009-10-25 as part of some other change (bug#5067).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16758&r2=1.16759
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/pcomplete.el?cvsroot=emacs&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/eshell/em-prompt.el?cvsroot=emacs&r1=1.20&r2=1.21
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16758
retrieving revision 1.16759
diff -u -b -r1.16758 -r1.16759
--- ChangeLog 27 Nov 2009 22:03:04 -0000 1.16758
+++ ChangeLog 28 Nov 2009 17:06:30 -0000 1.16759
@@ -1,3 +1,11 @@
+2009-11-28 Stefan Monnier <address@hidden>
+
+ * eshell/em-prompt.el (eshell-prompt-function): Abbreviate pwd, since
+ `cd' doesn't always do it for us (bug#5067).
+
+ * pcomplete.el (pcomplete-entries): Revert change installed mistakenly
+ on 2009-10-25 as part of some other change (bug#5067).
+
2009-11-27 Stefan Monnier <address@hidden>
* emacs-lisp/bytecomp.el (byte-compile-warning-types): New type
Index: pcomplete.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/pcomplete.el,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- pcomplete.el 19 Nov 2009 03:12:52 -0000 1.46
+++ pcomplete.el 28 Nov 2009 17:06:34 -0000 1.47
@@ -891,46 +891,65 @@
\(files for which the PREDICATE returns nil will be excluded).
If no directory information can be extracted from the completed
component, `default-directory' is used as the basis for completion."
- ;; FIXME: obey pcomplete-file-ignore and pcomplete-dir-ignore.
- ;; FIXME: obey pcomplete-compare-entry-function (tho only if there
- ;; are less than pcomplete-cycle-cutoff-length completions).
- ;; FIXME: expand envvars? shouldn't this be done globally instead?
- (let* ((reg-pred (when regexp
- (lexical-let ((re regexp))
- (lambda (f)
- ;; (let ((name (file-name-nondirectory f)))
- ;; (if (zerop (length name))
- ;; (setq name (file-name-as-directory
- ;; (file-name-nondirectory
- ;; (directory-file-name f)))))
- ;; (string-match re name))
- (string-match re f)))))
- (pred (cond
- ((null predicate) reg-pred)
- ((null reg-pred) predicate)
- (t (lexical-let ((predicate predicate)
- (reg-pred reg-pred))
- (lambda (f)
- (and (funcall predicate f)
- (funcall reg-pred f)))))))
- (fun
- (lexical-let ((pred pred)
- (dir default-directory))
- (lambda (s p a)
- ;; Remember the default-directory that was active when we built
- ;; the completion table.
- (let ((default-directory dir)
- ;; The old code used only file-name-all-completions
- ;; which ignores completion-ignored-extensions.
- (completion-ignored-extensions nil))
- (completion-table-with-predicate
- 'completion-file-name-table pred 'strict s p a)))))
- ;; Indirect through a symbol rather than returning a lambda
- ;; expression, so as to help catch bugs where the caller
- ;; might treat the lambda expression as a list of completions.
- (sym (make-symbol "pcomplete-read-file-name-internal")))
- (fset sym fun)
- sym))
+ (let* ((name (substitute-env-vars pcomplete-stub))
+ (completion-ignore-case pcomplete-ignore-case)
+ (default-directory (expand-file-name
+ (or (file-name-directory name)
+ default-directory)))
+ above-cutoff)
+ (setq name (file-name-nondirectory name)
+ pcomplete-stub name)
+ (let ((completions
+ (file-name-all-completions name default-directory)))
+ (if regexp
+ (setq completions
+ (pcomplete-pare-list
+ completions nil
+ (function
+ (lambda (file)
+ (not (string-match regexp file)))))))
+ (if predicate
+ (setq completions
+ (pcomplete-pare-list
+ completions nil
+ (function
+ (lambda (file)
+ (not (funcall predicate file)))))))
+ (if (or pcomplete-file-ignore pcomplete-dir-ignore)
+ (setq completions
+ (pcomplete-pare-list
+ completions nil
+ (function
+ (lambda (file)
+ (if (eq (aref file (1- (length file)))
+ ?/)
+ (and pcomplete-dir-ignore
+ (string-match pcomplete-dir-ignore file))
+ (and pcomplete-file-ignore
+ (string-match pcomplete-file-ignore file))))))))
+ (setq above-cutoff (and pcomplete-cycle-cutoff-length
+ (> (length completions)
+ pcomplete-cycle-cutoff-length)))
+ (sort completions
+ (function
+ (lambda (l r)
+ ;; for the purposes of comparison, remove the
+ ;; trailing slash from directory names.
+ ;; Otherwise, "foo.old/" will come before "foo/",
+ ;; since . is earlier in the ASCII alphabet than
+ ;; /
+ (let ((left (if (eq (aref l (1- (length l)))
+ ?/)
+ (substring l 0 (1- (length l)))
+ l))
+ (right (if (eq (aref r (1- (length r)))
+ ?/)
+ (substring r 0 (1- (length r)))
+ r)))
+ (if above-cutoff
+ (string-lessp left right)
+ (funcall pcomplete-compare-entry-function
+ left right)))))))))
(defsubst pcomplete-all-entries (&optional regexp predicate)
"Like `pcomplete-entries', but doesn't ignore any entries."
Index: eshell/em-prompt.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/eshell/em-prompt.el,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- eshell/em-prompt.el 1 Sep 2009 16:17:57 -0000 1.20
+++ eshell/em-prompt.el 28 Nov 2009 17:06:34 -0000 1.21
@@ -46,9 +46,9 @@
(defcustom eshell-prompt-function
(function
(lambda ()
- (concat (eshell/pwd)
+ (concat (abbreviate-file-name (eshell/pwd))
(if (= (user-uid) 0) " # " " $ "))))
- "*A function that returns the Eshell prompt string.
+ "A function that returns the Eshell prompt string.
Make sure to update `eshell-prompt-regexp' so that it will match your
prompt."
:type 'function
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs/lisp ChangeLog pcomplete.el eshell/em-pro...,
Stefan Monnier <=