GNU bug report logs -
#7924
23.2.91; Documentation about CDPATH is a little misleading
Previous Next
Reported by: Reuben Thomas <rrt <at> sc3d.org>
Date: Wed, 26 Jan 2011 21:41:02 UTC
Severity: minor
Found in version 23.2.91
Done: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 7924 in the body.
You can then email your comments to 7924 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Wed, 26 Jan 2011 21:41:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Reuben Thomas <rrt <at> sc3d.org>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Wed, 26 Jan 2011 21:41:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Both in the manual and in the docstring for `cd', one might reasonably
infer (as I did!) that CDPATH will be searched when completing relative
directory names, but this is not the case.
Is there in fact any way to get this to work? It’s something that one
can do nicely in bash in a terminal, for example, but not in shell-mode.
In any case, it would be nice to lower users’ expectations by pointing
out in the docstring for cd, and in the manual, that it doesn’t apply to
interactive completion.
In GNU Emacs 23.2.91.4 (i686-pc-linux-gnu, GTK+ Version 2.22.0)
of 2011-01-13 on canta
Windowing system distributor `The X.Org Foundation', version 11.0.10900000
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_GB.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
Major mode: Emacs-Lisp
Minor modes in effect:
shell-dirtrack-mode: t
recentf-mode: t
show-paren-mode: t
savehist-mode: t
minibuffer-electric-default-mode: t
iswitchb-mode: t
icomplete-mode: t
global-whitespace-mode: t
global-auto-revert-mode: t
desktop-save-mode: t
yas/global-mode: t
yas/minor-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
C-b C-b C-b C-b C-b <return> C-x 1 C-n C-n C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p C-p
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-n C-s C D
P A T H C-a C-n C-n C-n C-n C-n C-h v c d - p a t h
<return> C-x b <return> M-x c d <return> <M-backspace>
<M-backspace> <M-backspace> <M-backspace> <M-backspace>
<M-backspace> <M-backspace> <M-backspace> <backspace>
g p <tab> <backspace> r e <backspace> <tab> <tab> <tab>
<tab> C-g C-x b * s h <return> g r e p SPC c d - p
a t h S-SPC ~ ? . <backspace> <backspace> / . e m a
c s . d / * <return> <up> <down> M-p . e l <return>
M-p <left> <left> <left> <left> <left> <left> <left>
<left> <left> <left> <left> <left> <left> <left> <left>
<left> <M-backspace> <M-backspace> C D P A T H <return>
<up> <down> M-p <backspace> <backspace> <backspace>
<backspace> <M-backspace> <backspace> <M-backspace>
d e s <tab> <backspace> <backspace> <backspace> e m
a c s . d / <backspace> <tab> e e <tab> <backspace>
s <tab> <return> M-p <left> <left> <left> <left> <left>
<left> <left> <left> <left> <left> <left> <left> <left>
<left> <left> <left> <left> <left> <right> <M-backspace>
c d - p a t h <return> c d SPC g r e p - c <backspace>
d d <backspace> e c o m p r e s s <return> <help-echo>
<down-mouse-1> <mouse-1> M-> C-x b <return> C-s r e
a d - C-a M-x r e p o r t - e m a c s - b u g <ret
urn>
Recent messages:
No completions of ~/.des
Type space to flush; repeat completion command to scroll
No completions of ~/.emacs.dee
Completing file name...
No completions of ~/.emacs.dee
Partially completed
History item: 1
~/repo/grep-decompress
Mark set
Mark saved where search started
Load-path shadows:
/home/rrt/.emacs.d/elpa/ruby-mode-1.1/ruby-mode hides /usr/share/emacs-snapshot/site-lisp/ruby1.8-elisp/ruby-mode
/home/rrt/local/share/emacs/site-lisp/popup hides /usr/local/share/emacs/23.2.91/site-lisp/auto-complete/popup
/home/rrt/local/share/emacs/site-lisp/fuzzy hides /usr/local/share/emacs/23.2.91/site-lisp/auto-complete/fuzzy
/home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/23.2.91/site-lisp/css-mode/css-mode
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/link hides /usr/local/share/emacs/23.2.91/site-lisp/dictionary-el/link
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/connection hides /usr/local/share/emacs/23.2.91/site-lisp/dictionary-el/connection
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary-init hides /usr/local/share/emacs/23.2.91/site-lisp/dictionary-el/dictionary-init
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary hides /usr/local/share/emacs/23.2.91/site-lisp/dictionary-el/dictionary
/home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/23.2.91/lisp/textmodes/css-mode
/home/rrt/.emacs.d/elpa/ruby-mode-1.1/ruby-mode hides /usr/local/share/emacs/23.2.91/lisp/progmodes/ruby-mode
/home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/share/emacs/site-lisp/css-mode/css-mode
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-info hides /usr/share/emacs/site-lisp/auctex/tex-info
/usr/local/share/emacs/23.2.91/site-lisp/auctex/context-nl hides /usr/share/emacs/site-lisp/auctex/context-nl
/usr/local/share/emacs/23.2.91/site-lisp/auctex/context-en hides /usr/share/emacs/site-lisp/auctex/context-en
/usr/local/share/emacs/23.2.91/site-lisp/auctex/latex hides /usr/share/emacs/site-lisp/auctex/latex
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-mik hides /usr/share/emacs/site-lisp/auctex/tex-mik
/usr/local/share/emacs/23.2.91/site-lisp/dictionary-el/lpath hides /usr/share/emacs/site-lisp/auctex/lpath
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-buf hides /usr/share/emacs/site-lisp/auctex/tex-buf
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-jp hides /usr/share/emacs/site-lisp/auctex/tex-jp
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-bar hides /usr/share/emacs/site-lisp/auctex/tex-bar
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex hides /usr/share/emacs/site-lisp/auctex/tex
/usr/local/share/emacs/23.2.91/site-lisp/auctex/multi-prompt hides /usr/share/emacs/site-lisp/auctex/multi-prompt
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-fptex hides /usr/share/emacs/site-lisp/auctex/tex-fptex
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-font hides /usr/share/emacs/site-lisp/auctex/tex-font
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-fold hides /usr/share/emacs/site-lisp/auctex/tex-fold
/usr/local/share/emacs/23.2.91/site-lisp/auctex/texmathp hides /usr/share/emacs/site-lisp/auctex/texmathp
/usr/local/share/emacs/23.2.91/site-lisp/auctex/context hides /usr/share/emacs/site-lisp/auctex/context
/usr/local/share/emacs/23.2.91/site-lisp/auctex/font-latex hides /usr/share/emacs/site-lisp/auctex/font-latex
/usr/local/share/emacs/23.2.91/site-lisp/auctex/bib-cite hides /usr/share/emacs/site-lisp/auctex/bib-cite
/usr/local/share/emacs/23.2.91/site-lisp/auctex/toolbar-x hides /usr/share/emacs/site-lisp/auctex/toolbar-x
/usr/local/share/emacs/23.2.91/site-lisp/auctex/tex-style hides /usr/share/emacs/site-lisp/auctex/tex-style
Features:
(shadow sort mail-extr message sendmail ecomplete rfc822 mml mml-sec
password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231
rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util netrc
time-date mm-util mail-prsvr gmm-utils mailheader canlock sha1 hex-util
hashcash mail-utils emacsbug multi-isearch find-func pp help-mode
ansi-color shell gud jka-compr info m4-mode autoconf autoconf-mode view
inform-mode noutline outline tex-info texinfo tex sh-script executable
longlines make-mode vc-git face-remap filladapt flyspell completing-help
recentf tree-widget wid-edit uniquify paren savehist minibuf-eldef
iswitchb icomplete whitespace autorevert time cus-start cus-load desktop
server php-mode etags cc-langs cc-mode cc-fonts cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs speedbar sb-image ezimage
dframe lua-mode regexp-opt comint ring ropemacs pymacs etags-update
smart-quotes ispell auto-dictionary-autoloads css-mode-autoloads
dictionary-autoloads diff-git-autoloads dired-isearch-autoloads
full-ack-autoloads guess-style-autoloads http-post-simple-autoloads
js2-mode-autoloads magit-autoloads mv-shell-autoloads
ruby-mode-autoloads package reporter advice advice-preload yasnippet
help-fns derived edmacro kmacro easymenu assoc cl cl-19 muse-autoloads
emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs easy-mmode
bbdb-autoloads preview-latex tex-site auto-loads tooltip ediff-hook
vc-hooks lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mldrag mouse jit-lock font-lock syntax facemenu
font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev loaddefs button minibuffer faces
cus-face files text-properties overlay md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote
make-network-process dbusbind system-font-setting font-render-setting
gtk x-toolkit x multi-tty emacs)
--
http://rrt.sc3d.org/
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Sat, 29 Jan 2011 23:22:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 7924 <at> debbugs.gnu.org (full text, mbox):
Reuben Thomas <rrt <at> sc3d.org> writes:
> Both in the manual and in the docstring for `cd', one might reasonably
> infer (as I did!) that CDPATH will be searched when completing relative
> directory names, but this is not the case.
>
> Is there in fact any way to get this to work? It’s something that one
> can do nicely in bash in a terminal, for example, but not in shell-mode.
I think this needs new code in `read-file-name-internal' (the completion
function for read-file-name).
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Sun, 30 Jan 2011 13:27:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 7924 <at> debbugs.gnu.org (full text, mbox):
On 29 January 2011 23:29, Chong Yidong <cyd <at> stupidchicken.com> wrote:
> Reuben Thomas <rrt <at> sc3d.org> writes:
>
>> Both in the manual and in the docstring for `cd', one might reasonably
>> infer (as I did!) that CDPATH will be searched when completing relative
>> directory names, but this is not the case.
>>
>> Is there in fact any way to get this to work? It’s something that one
>> can do nicely in bash in a terminal, for example, but not in shell-mode.
>
> I think this needs new code in `read-file-name-internal' (the completion
> function for read-file-name).
Fair enough, but in that case is it worth adding "(this does not work
with filename completion)" to the docstring and manual?
--
http://rrt.sc3d.org
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Mon, 31 Jan 2011 04:02:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 7924 <at> debbugs.gnu.org (full text, mbox):
>> Both in the manual and in the docstring for `cd', one might reasonably
>> infer (as I did!) that CDPATH will be searched when completing relative
>> directory names, but this is not the case.
>>
>> Is there in fact any way to get this to work? It’s something that one
>> can do nicely in bash in a terminal, for example, but not in shell-mode.
> I think this needs new code in `read-file-name-internal' (the completion
> function for read-file-name).
Indeed, but only for `cd'. It shouldn't be too hard to do it either,
Stefan
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Tue, 01 Feb 2011 22:04:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 7924 <at> debbugs.gnu.org (full text, mbox):
>> Both in the manual and in the docstring for `cd', one might reasonably
>> infer (as I did!) that CDPATH will be searched when completing relative
>> directory names, but this is not the case.
>>
>> Is there in fact any way to get this to work? It’s something that one
>> can do nicely in bash in a terminal, for example, but not in shell-mode.
> I think this needs new code in `read-file-name-internal' (the completion
> function for read-file-name).
The patch below seems to work in my brief testing.
Stefan
=== modified file 'lisp/files.el'
--- lisp/files.el 2011-02-01 20:53:09 +0000
+++ lisp/files.el 2011-02-01 22:06:43 +0000
@@ -700,25 +700,36 @@
`path-separator') when resolving a relative directory name.
The path separator is colon in GNU and GNU-like systems."
(interactive
- (list (read-directory-name "Change default directory: "
+ (list
+ ;; FIXME: There's a subtle bug in the completion below. Seems linked
+ ;; to a fundamental difficulty of implementing `predicate' correctly.
+ ;; The manifestation is that TAB may list non-directories in the case where
+ ;; those files also correspond to valid directories (if your cd-path is (A/
+ ;; B/) and you have A/a a file and B/a a directory, then both `a' and `a/'
+ ;; will be listed as valid completions).
+ ;; This is because `a' (listed because of A/a) is indeed a valid choice
+ ;; (which will lead to the use of B/a).
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (setq minibuffer-completion-table
+ (apply-partially #'locate-file-completion-table
+ cd-path nil))
+ (setq minibuffer-completion-predicate
+ (lambda (dir)
+ (locate-file dir cd-path nil
+ (lambda (f) (and (file-directory-p f) 'dir-ok))))))
+ (unless cd-path
+ (setq cd-path (or (parse-colon-path (getenv "CDPATH"))
+ (list "./"))))
+ (read-directory-name "Change default directory: "
default-directory default-directory
- (and (member cd-path '(nil ("./")))
- (null (getenv "CDPATH"))))))
- (if (file-name-absolute-p dir)
- (cd-absolute (expand-file-name dir))
- (if (null cd-path)
- (let ((trypath (parse-colon-path (getenv "CDPATH"))))
- (setq cd-path (or trypath (list "./")))))
- (if (not (catch 'found
- (mapc
- (function (lambda (x)
- (let ((f (expand-file-name (concat x dir))))
- (if (file-directory-p f)
- (progn
- (cd-absolute f)
- (throw 'found t))))))
- cd-path)
- nil))
+ t))))
+ (unless cd-path
+ (setq cd-path (or (parse-colon-path (getenv "CDPATH"))
+ (list "./"))))
+ (cd-absolute
+ (or (locate-file dir cd-path nil
+ (lambda (f) (and (file-directory-p f) 'dir-ok)))
(error "No such directory found via CDPATH environment variable"))))
(defun load-file (file)
=== modified file 'src/lread.c'
--- src/lread.c 2011-01-31 18:47:03 +0000
+++ src/lread.c 2011-02-01 21:57:03 +0000
@@ -1223,7 +1223,9 @@
file name when searching.
If non-nil, PREDICATE is used instead of `file-readable-p'.
PREDICATE can also be an integer to pass to the access(2) function,
-in which case file-name-handlers are ignored. */)
+in which case file-name-handlers are ignored.
+This function will normally skip directories, so if you want it to find
+directories, make sure the PREDICATE function return `dir-ok' for them. */)
(Lisp_Object filename, Lisp_Object path, Lisp_Object suffixes, Lisp_Object predicate)
{
Lisp_Object file;
@@ -1233,6 +1235,7 @@
return file;
}
+static Lisp_Object Qdir_ok;
/* Search for a file whose name is STR, looking in directories
in the Lisp list PATH, and trying suffixes from SUFFIX.
@@ -1350,9 +1353,12 @@
if (NILP (predicate))
exists = !NILP (Ffile_readable_p (string));
else
- exists = !NILP (call1 (predicate, string));
- if (exists && !NILP (Ffile_directory_p (string)))
- exists = 0;
+ {
+ Lisp_Object tmp = call1 (predicate, string);
+ exists = !NILP (tmp)
+ && (EQ (tmp, Qdir_ok)
+ || !NILP (Ffile_directory_p (string)));
+ }
if (exists)
{
@@ -4369,6 +4375,9 @@
Qfile_truename = intern_c_string ("file-truename");
staticpro (&Qfile_truename) ;
+ Qdir_ok = intern_c_string ("dir-ok");
+ staticpro (&Qdir_ok);
+
Qdo_after_load_evaluation = intern_c_string ("do-after-load-evaluation");
staticpro (&Qdo_after_load_evaluation) ;
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Thu, 03 Feb 2011 11:34:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 7924 <at> debbugs.gnu.org (full text, mbox):
Thanks very much for this Stefan. Unfortunately I can't get emacs head
to build at the moment, and the patch doesn't apply to the emacs-23
branch.
Reply sent
to
Stefan Monnier <monnier <at> IRO.UMontreal.CA>
:
You have taken responsibility.
(Fri, 18 Feb 2011 17:28:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Reuben Thomas <rrt <at> sc3d.org>
:
bug acknowledged by developer.
(Fri, 18 Feb 2011 17:28:03 GMT)
Full text and
rfc822 format available.
Message #25 received at 7924-done <at> debbugs.gnu.org (full text, mbox):
> Thanks very much for this Stefan. Unfortunately I can't get Emacs's head
> to build at the moment, and the patch doesn't apply to the emacs-23
> branch.
I've installed it to the trunk, thanks.
Stefan
Information forwarded
to
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:
bug#7924
; Package
emacs
.
(Tue, 22 Feb 2011 11:26:02 GMT)
Full text and
rfc822 format available.
Message #28 received at 7924 <at> debbugs.gnu.org (full text, mbox):
On Wed, Feb 2, 2011 at 00:11, Stefan Monnier <monnier <at> iro.umontreal.ca> wrote:
>>> Both in the manual and in the docstring for `cd', one might reasonably
>>> infer (as I did!) that CDPATH will be searched when completing relative
>>> directory names, but this is not the case.
>>>
>>> Is there in fact any way to get this to work? It’s something that one
>>> can do nicely in bash in a terminal, for example, but not in shell-mode.
>
>> I think this needs new code in `read-file-name-internal' (the completion
>> function for read-file-name).
>
> The patch below seems to work in my brief testing.
>
>
> Stefan
>
>
> === modified file 'lisp/files.el'
> --- lisp/files.el 2011-02-01 20:53:09 +0000
> +++ lisp/files.el 2011-02-01 22:06:43 +0000
> @@ -700,25 +700,36 @@
> `path-separator') when resolving a relative directory name.
> The path separator is colon in GNU and GNU-like systems."
> (interactive
> - (list (read-directory-name "Change default directory: "
> + (list
> + ;; FIXME: There's a subtle bug in the completion below. Seems linked
> + ;; to a fundamental difficulty of implementing `predicate' correctly.
> + ;; The manifestation is that TAB may list non-directories in the case where
> + ;; those files also correspond to valid directories (if your cd-path is (A/
> + ;; B/) and you have A/a a file and B/a a directory, then both `a' and `a/'
> + ;; will be listed as valid completions).
> + ;; This is because `a' (listed because of A/a) is indeed a valid choice
> + ;; (which will lead to the use of B/a).
> + (minibuffer-with-setup-hook
> + (lambda ()
> + (setq minibuffer-completion-table
> + (apply-partially #'locate-file-completion-table
> + cd-path nil))
> + (setq minibuffer-completion-predicate
> + (lambda (dir)
> + (locate-file dir cd-path nil
> + (lambda (f) (and (file-directory-p f) 'dir-ok))))))
> + (unless cd-path
> + (setq cd-path (or (parse-colon-path (getenv "CDPATH"))
> + (list "./"))))
> + (read-directory-name "Change default directory: "
> default-directory default-directory
> - (and (member cd-path '(nil ("./")))
> - (null (getenv "CDPATH"))))))
> - (if (file-name-absolute-p dir)
> - (cd-absolute (expand-file-name dir))
> - (if (null cd-path)
> - (let ((trypath (parse-colon-path (getenv "CDPATH"))))
> - (setq cd-path (or trypath (list "./")))))
> - (if (not (catch 'found
> - (mapc
> - (function (lambda (x)
> - (let ((f (expand-file-name (concat x dir))))
> - (if (file-directory-p f)
> - (progn
> - (cd-absolute f)
> - (throw 'found t))))))
> - cd-path)
> - nil))
> + t))))
> + (unless cd-path
> + (setq cd-path (or (parse-colon-path (getenv "CDPATH"))
> + (list "./"))))
> + (cd-absolute
> + (or (locate-file dir cd-path nil
> + (lambda (f) (and (file-directory-p f) 'dir-ok)))
> (error "No such directory found via CDPATH environment variable"))))
>
> (defun load-file (file)
>
> === modified file 'src/lread.c'
> --- src/lread.c 2011-01-31 18:47:03 +0000
> +++ src/lread.c 2011-02-01 21:57:03 +0000
> @@ -1223,7 +1223,9 @@
> file name when searching.
> If non-nil, PREDICATE is used instead of `file-readable-p'.
> PREDICATE can also be an integer to pass to the access(2) function,
> -in which case file-name-handlers are ignored. */)
> +in which case file-name-handlers are ignored.
> +This function will normally skip directories, so if you want it to find
> +directories, make sure the PREDICATE function return `dir-ok' for them. */)
> (Lisp_Object filename, Lisp_Object path, Lisp_Object suffixes, Lisp_Object predicate)
> {
> Lisp_Object file;
> @@ -1233,6 +1235,7 @@
> return file;
> }
>
> +static Lisp_Object Qdir_ok;
>
> /* Search for a file whose name is STR, looking in directories
> in the Lisp list PATH, and trying suffixes from SUFFIX.
> @@ -1350,9 +1353,12 @@
> if (NILP (predicate))
> exists = !NILP (Ffile_readable_p (string));
> else
> - exists = !NILP (call1 (predicate, string));
> - if (exists && !NILP (Ffile_directory_p (string)))
> - exists = 0;
> + {
> + Lisp_Object tmp = call1 (predicate, string);
> + exists = !NILP (tmp)
> + && (EQ (tmp, Qdir_ok)
> + || !NILP (Ffile_directory_p (string)));
> + }
>
> if (exists)
> {
> @@ -4369,6 +4375,9 @@
> Qfile_truename = intern_c_string ("file-truename");
> staticpro (&Qfile_truename) ;
>
> + Qdir_ok = intern_c_string ("dir-ok");
> + staticpro (&Qdir_ok);
> +
> Qdo_after_load_evaluation = intern_c_string ("do-after-load-evaluation");
> staticpro (&Qdo_after_load_evaluation) ;
>
This patch breaks spell checking. Now ispell-word unable to find
installed aspell, tries to use ispell (as fallback?) and fails because
ispell is absent indeed.
Starting new Ispell process [default] ...
apply: Searching for program: no such file or directory, ispell
--
Andrew W. Nosenko <andrew.w.nosenko <at> gmail.com>
Message #29 received at 7924-done <at> debbugs.gnu.org (full text, mbox):
>>> I think this needs new code in `read-file-name-internal' (the completion
>>> function for read-file-name).
>>
>> The patch below seems to work in my brief testing.
Indeed, there was a silly typo in the patch. I believe it is fixed now
(thanks to Wolfgang Jenkner).
Stefan
Message #30 received at 7924-done <at> debbugs.gnu.org (full text, mbox):
On Tue, Feb 22, 2011 at 20:15, Stefan Monnier <monnier <at> iro.umontreal.ca> wrote:
>>>> I think this needs new code in `read-file-name-internal' (the completion
>>>> function for read-file-name).
>>>
>>> The patch below seems to work in my brief testing.
>
> Indeed, there was a silly typo in the patch. I believe it is fixed now
> (thanks to Wolfgang Jenkner).
>
Thanks! Wolfgang's patch solves problem indeed.
--
Andrew W. Nosenko <andrew.w.nosenko <at> gmail.com>
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 23 Mar 2011 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 13 years and 37 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.