From: Eugene Vlasov <eugene@ikz.ru>
Cc: mange@freemail.hu, emacs-devel@gnu.org
Subject: Re: ispell-aspell-find-dictionary: Opening input file: no such file or directory
Date: Wed, 19 Oct 2005 12:24:27 +0600 [thread overview]
Message-ID: <20051019062427.GB8451@eugene-home.ikz.ru> (raw)
In-Reply-To: <E1ES3vt-0006lP-7n@fencepost.gnu.org>
On Tue, Oct 18, 2005 at 10:44:01PM -0400 Richard M. Stallman wrote:
> This patch tries to preserve standard elements of ispell-dictionary-alist
> for dictionaries that are not found by ispell-aspell-find-dictionary.
> Does it do the job for you?
Yes, with this patch I can check spell with russian dictionary. But
here error:
> --- 898,915 ----
> (split-string
> (with-temp-buffer
> (call-process ispell-program-name nil t nil "dicts")
> ! (buffer-string))))
> ! ;; Search for the named dictionaries.
> ! (found
> ! (delq nil
> ! (mapcar #'ispell-aspell-find-dictionary dictionaries))))
Variable dictionaries not bound at this time. I use let*:
--- emacs/lisp/textmodes/ispell.el 2005-10-09 19:02:50 +0600
+++ emacs.build/lisp/textmodes/ispell.el 2005-10-19 12:08:20 +0600
@@ -894,13 +894,22 @@
"Find Aspell's dictionaries, and record in `ispell-dictionary-alist'."
(unless ispell-really-aspell
(error "This function only works with aspell"))
- (let ((dictionaries
+ (let* ((dictionaries
(split-string
(with-temp-buffer
(call-process ispell-program-name nil t nil "dicts")
- (buffer-string)))))
- (setq ispell-dictionary-alist
- (mapcar #'ispell-aspell-find-dictionary dictionaries))
+ (buffer-string))))
+ ;; Search for the named dictionaries.
+ (found
+ (delq nil
+ (mapcar #'ispell-aspell-find-dictionary dictionaries))))
+ ;; Merge into FOUND any elements from the standard ispell-dictionary-alist
+ ;; which have no element in FOUND at all.
+ (dolist (dict ispell-dictionary-alist)
+ (unless (assoc (car dict) found)
+ (setq found (nconc found (list dict)))))
+ (setq ispell-dictionary-alist found)
+
(ispell-aspell-add-aliases)
;; Add a default entry
(let* ((english-dict (assoc "en" ispell-dictionary-alist))
@@ -922,6 +931,9 @@
(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,35 +943,37 @@
(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)))
+ (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'."
With this changes spell checking works for me.
--
WBR, Eugene Vlasov mailto:eugvv at altlinux.ru
JID: eugvv@jabber.ru
next prev parent reply other threads:[~2005-10-19 6:24 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-29 17:18 ispell-aspell-find-dictionary: Opening input file: no such file or directory Eugene Vlasov
2005-10-13 12:44 ` Magnus Henoch
2005-10-13 14:47 ` Stefan Monnier
2005-10-13 15:48 ` Eugene Vlasov
2005-10-17 4:33 ` Richard M. Stallman
2005-10-17 7:21 ` Eugene Vlasov
2005-10-18 3:39 ` Richard M. Stallman
2005-10-18 6:24 ` Eugene Vlasov
2005-10-19 2:44 ` Richard M. Stallman
2005-10-19 6:24 ` Eugene Vlasov [this message]
2005-10-14 17:37 ` Richard M. Stallman
2005-10-14 18:31 ` Eugene Vlasov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051019062427.GB8451@eugene-home.ikz.ru \
--to=eugene@ikz.ru \
--cc=emacs-devel@gnu.org \
--cc=mange@freemail.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.