emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Info-insert-dir


From: Richard Stallman
Subject: Re: Info-insert-dir
Date: Mon, 19 Mar 2007 01:15:13 -0400

    My last statement was incorrect.  The value of `default-directory' in
    the *info* buffer is not nil but a directory that doesn't exist.

This nonexistent directory came from `Info-additional-directory-list',
right?  So I think that if this is a bug, the bug would be at the
earlier stage, where the value of `Info-additional-directory-list' was
set up.  Do you disagree?

      More disconcerting,
    however, is that any part of Emacs that relies on a valid, existing
    default directory won't work reliably.

You can set `default-directory' to any string, so Emacs facilities
should not assume it is an existing directory unless it part of
their definition to need that.

Therefore, those other features such as spell checking should be
changed not to depend on this.  As far as I know, ispell and aspell
have no need to use the default directory.  Indeed one call-process
call in ispell.el already handles the case of nonexistent default
directory.

Does this patch make it work?


*** ispell.el   17 Feb 2007 15:40:35 -0500      1.208
--- ispell.el   18 Mar 2007 19:27:09 -0500      
***************
*** 895,901 ****
    (let* ((dictionaries
          (split-string
           (with-temp-buffer
!            (call-process ispell-program-name nil t nil "dicts")
             (buffer-string))))
         ;; Search for the named dictionaries.
         (found
--- 895,904 ----
    (let* ((dictionaries
          (split-string
           (with-temp-buffer
!            (let ((default-directory default-directory))
!              (unless (file-exists-p default-directory)
!                (setq default-directory (expand-file-name "~/")))
!              (call-process ispell-program-name nil t nil "dicts"))
             (buffer-string))))
         ;; Search for the named dictionaries.
         (found
***************
*** 928,934 ****
    "Return value of Aspell configuration option KEY.
  Assumes that value contains no whitespace."
    (with-temp-buffer
!     (call-process ispell-program-name nil t nil "config" key)
      (car (split-string (buffer-string)))))
  
  (defun ispell-aspell-find-dictionary (dict-name)
--- 931,940 ----
    "Return value of Aspell configuration option KEY.
  Assumes that value contains no whitespace."
    (with-temp-buffer
!     (let ((default-directory default-directory))
!       (unless (file-exists-p default-directory)
!       (setq default-directory (expand-file-name "~/")))
!       (call-process ispell-program-name nil t nil "config" key))
      (car (split-string (buffer-string)))))
  
  (defun ispell-aspell-find-dictionary (dict-name)
***************
*** 1499,1509 ****
              (set-buffer output-buf)
              (erase-buffer)
              (set-buffer session-buf)
!             (setq status
!                   (apply 'call-process-region (point-min) (point-max)
!                          ispell-program-name nil
!                          output-buf nil
!                          "-a" "-m" ispell-args))
              (set-buffer output-buf)
              (goto-char (point-min))
              (save-match-data
--- 1505,1518 ----
              (set-buffer output-buf)
              (erase-buffer)
              (set-buffer session-buf)
!             (let ((default-directory default-directory))
!               (unless (file-exists-p default-directory)
!                 (setq default-directory (expand-file-name "~/")))
!               (setq status
!                     (apply 'call-process-region (point-min) (point-max)
!                            ispell-program-name nil
!                            output-buf nil
!                            "-a" "-m" ispell-args)))
              (set-buffer output-buf)
              (goto-char (point-min))
              (save-match-data
***************
*** 2197,2209 ****
            (while (search-backward "*" nil t) (insert "."))
            (setq word (buffer-string))
            (erase-buffer))
!         (setq status (apply 'call-process prog nil t nil
!                             (nconc (if (and args (> (length args) 0))
!                                        (list args)
!                                      (if look-p nil
!                                        (list "-e")))
!                                    (list word)
!                                    (if lookup-dict (list lookup-dict)))))
          ;; grep returns status 1 and no output when word not found, which
          ;; is a perfectly normal thing.
          (if (stringp status)
--- 2206,2221 ----
            (while (search-backward "*" nil t) (insert "."))
            (setq word (buffer-string))
            (erase-buffer))
!         (let ((default-directory default-directory))
!           (unless (file-exists-p default-directory)
!             (setq default-directory (expand-file-name "~/")))
!           (setq status (apply 'call-process prog nil t nil
!                               (nconc (if (and args (> (length args) 0))
!                                          (list args)
!                                        (if look-p nil
!                                          (list "-e")))
!                                      (list word)
!                                      (if lookup-dict (list lookup-dict))))))
          ;; grep returns status 1 and no output when word not found, which
          ;; is a perfectly normal thing.
          (if (stringp status)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]