* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading @ 2011-01-26 21:48 Reuben Thomas 2011-01-29 23:29 ` Chong Yidong 0 siblings, 1 reply; 8+ messages in thread From: Reuben Thomas @ 2011-01-26 21:48 UTC (permalink / raw) To: 7924 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/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-01-26 21:48 bug#7924: 23.2.91; Documentation about CDPATH is a little misleading Reuben Thomas @ 2011-01-29 23:29 ` Chong Yidong 2011-01-30 13:34 ` Reuben Thomas ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Chong Yidong @ 2011-01-29 23:29 UTC (permalink / raw) To: Reuben Thomas; +Cc: 7924 Reuben Thomas <rrt@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). ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-01-29 23:29 ` Chong Yidong @ 2011-01-30 13:34 ` Reuben Thomas 2011-01-31 4:09 ` Stefan Monnier 2011-02-01 22:11 ` Stefan Monnier 2 siblings, 0 replies; 8+ messages in thread From: Reuben Thomas @ 2011-01-30 13:34 UTC (permalink / raw) To: Chong Yidong; +Cc: 7924 On 29 January 2011 23:29, Chong Yidong <cyd@stupidchicken.com> wrote: > Reuben Thomas <rrt@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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-01-29 23:29 ` Chong Yidong 2011-01-30 13:34 ` Reuben Thomas @ 2011-01-31 4:09 ` Stefan Monnier 2011-02-01 22:11 ` Stefan Monnier 2 siblings, 0 replies; 8+ messages in thread From: Stefan Monnier @ 2011-01-31 4:09 UTC (permalink / raw) To: Chong Yidong; +Cc: 7924, Reuben Thomas >> 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-01-29 23:29 ` Chong Yidong 2011-01-30 13:34 ` Reuben Thomas 2011-01-31 4:09 ` Stefan Monnier @ 2011-02-01 22:11 ` Stefan Monnier 2011-02-03 11:41 ` Reuben Thomas 2011-02-22 11:25 ` Andrew W. Nosenko 2 siblings, 2 replies; 8+ messages in thread From: Stefan Monnier @ 2011-02-01 22:11 UTC (permalink / raw) To: Chong Yidong; +Cc: 7924, Reuben Thomas >> 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) ; ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-02-01 22:11 ` Stefan Monnier @ 2011-02-03 11:41 ` Reuben Thomas 2011-02-18 17:27 ` Stefan Monnier 2011-02-22 11:25 ` Andrew W. Nosenko 1 sibling, 1 reply; 8+ messages in thread From: Reuben Thomas @ 2011-02-03 11:41 UTC (permalink / raw) To: Stefan Monnier; +Cc: 7924, Chong Yidong 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. ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-02-03 11:41 ` Reuben Thomas @ 2011-02-18 17:27 ` Stefan Monnier 0 siblings, 0 replies; 8+ messages in thread From: Stefan Monnier @ 2011-02-18 17:27 UTC (permalink / raw) To: Reuben Thomas; +Cc: 7924-done, Chong Yidong > 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 ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#7924: 23.2.91; Documentation about CDPATH is a little misleading 2011-02-01 22:11 ` Stefan Monnier 2011-02-03 11:41 ` Reuben Thomas @ 2011-02-22 11:25 ` Andrew W. Nosenko 1 sibling, 0 replies; 8+ messages in thread From: Andrew W. Nosenko @ 2011-02-22 11:25 UTC (permalink / raw) To: Stefan Monnier; +Cc: 7924, Chong Yidong, Reuben Thomas On Wed, Feb 2, 2011 at 00:11, Stefan Monnier <monnier@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@gmail.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-02-22 11:25 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-01-26 21:48 bug#7924: 23.2.91; Documentation about CDPATH is a little misleading Reuben Thomas 2011-01-29 23:29 ` Chong Yidong 2011-01-30 13:34 ` Reuben Thomas 2011-01-31 4:09 ` Stefan Monnier 2011-02-01 22:11 ` Stefan Monnier 2011-02-03 11:41 ` Reuben Thomas 2011-02-18 17:27 ` Stefan Monnier 2011-02-22 11:25 ` Andrew W. Nosenko
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).