emacs-devel
[Top][All Lists]
Advanced

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

Re: ispell-aspell-find-dictionary: Opening input file: no such file or d


From: Richard M. Stallman
Subject: Re: ispell-aspell-find-dictionary: Opening input file: no such file or directory
Date: Mon, 17 Oct 2005 00:33:18 -0400

    I don't know where the bug, but may be fallback to default value of
    ispell-dictionary-alist if (ispell-aspell-find-dictionary)
    unsuccessfull? This is not fix bug, but fix spell checking in cases
    like described.

I think this change should do it.  Does it give good results?

*** ispell.el   09 Oct 2005 11:42:04 -0400      1.181
--- ispell.el   16 Oct 2005 20:32:45 -0400      
***************
*** 900,906 ****
            (call-process ispell-program-name nil t nil "dicts")
            (buffer-string)))))
      (setq ispell-dictionary-alist
!         (mapcar #'ispell-aspell-find-dictionary dictionaries))
      (ispell-aspell-add-aliases)
      ;; Add a default entry
      (let* ((english-dict (assoc "en" ispell-dictionary-alist))
--- 900,907 ----
            (call-process ispell-program-name nil t nil "dicts")
            (buffer-string)))))
      (setq ispell-dictionary-alist
!         (delq nil 
!               (mapcar #'ispell-aspell-find-dictionary dictionaries)))
      (ispell-aspell-add-aliases)
      ;; Add a default entry
      (let* ((english-dict (assoc "en" ispell-dictionary-alist))
***************
*** 922,927 ****
--- 923,931 ----
      (car (split-string (buffer-string)))))
  
  (defun ispell-aspell-find-dictionary (dict-name)
+   ;; This returns nil if the data file does not exist.
+   ;; Can someone please explain the return value format when the
+   ;; file does exist -- rms?
    (let* ((lang ;; Strip out region, variant, etc.
          (and (string-match "^[[:alpha:]]+" dict-name)
               (match-string 0 dict-name)))
***************
*** 931,965 ****
                            (ispell-get-aspell-config-value "data-dir")))
                  "/" lang ".dat"))
         otherchars)
!     ;; This file really should exist; there is no sensible recovery.
!     (with-temp-buffer
!       (insert-file-contents data-file)
!       ;; There is zero or one line with special characters declarations.
!       (when (search-forward-regexp "^special" nil t)
!       (let ((specials (split-string
!                        (buffer-substring (point)
!                                          (progn (end-of-line) (point))))))
!         ;; The line looks like: special ' -** - -** . -** : -*-
!         ;; -** means that this character
!         ;;    - doesn't appear at word start
!         ;;    * may appear in the middle of a word
!         ;;    * may appear at word end
!         ;; `otherchars' is about the middle case.
!         (while specials
!           (when (eq (aref (cadr specials) 1) ?*)
!             (push (car specials) otherchars))
!           (setq specials (cddr specials))))))
!     (list dict-name
!         "[[:alpha:]]"
!         "[^[:alpha:]]"
!         (regexp-opt otherchars)
!         t                             ; We can't tell, so set this to t
!         (list "-d" dict-name "--encoding=utf-8")
!         nil                           ; aspell doesn't support this
!         ;; Here we specify the encoding to use while communicating with
!         ;; aspell.  This doesn't apply to command line arguments, so
!         ;; just don't pass words to spellcheck as arguments...
!         'utf-8)))
  
  (defun ispell-aspell-add-aliases ()
    "Find aspell's dictionary aliases and add them to 
`ispell-dictionary-alist'."
--- 935,971 ----
                            (ispell-get-aspell-config-value "data-dir")))
                  "/" lang ".dat"))
         otherchars)
!     (condition-case ()
!       (with-temp-buffer
!         (insert-file-contents data-file)
!         ;; There is zero or one line with special characters declarations.
!         (when (search-forward-regexp "^special" nil t)
!           (let ((specials (split-string
!                            (buffer-substring (point)
!                                              (progn (end-of-line) (point))))))
!             ;; The line looks like: special ' -** - -** . -** : -*-
!             ;; -** means that this character
!             ;;    - doesn't appear at word start
!             ;;    * may appear in the middle of a word
!             ;;    * may appear at word end
!             ;; `otherchars' is about the middle case.
!             (while specials
!               (when (eq (aref (cadr specials) 1) ?*)
!                 (push (car specials) otherchars))
!               (setq specials (cddr specials)))))
!         (list dict-name
!               "[[:alpha:]]"
!               "[^[:alpha:]]"
!               (regexp-opt otherchars)
!               t                            ; We can't tell, so set this to t
!               (list "-d" dict-name "--encoding=utf-8")
!               nil                             ; aspell doesn't support this
!               ;; Here we specify the encoding to use while communicating with
!               ;; aspell.  This doesn't apply to command line arguments, so
!               ;; just don't pass words to spellcheck as arguments...
!               'utf-8))
!       (file-error
!        nil))))
  
  (defun ispell-aspell-add-aliases ()
    "Find aspell's dictionary aliases and add them to 
`ispell-dictionary-alist'."




reply via email to

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