Subject: RE: bug#57649: 27.1; Spell check on remote file fails on windows.

From: Nick Longo <[email-masked]>
Date: Thu, 8 Sep 2022 14:49:21 +0000

Sure, I will be glad to try at any rate.  Let me know if this is what you were looking for.

--N

Here is my recipe...
Ingredients:
  A windows 10 install.
  An emacs installation
  A putty installation (on system path)
  Hunspell installed along with English dictionary (on system path)

Reproduction steps:
1. Customzie emacs to use the hunspell program, mine looks something like:
(custom-set-variables 
'(ispell-program-name "hunspell")
)
(setq ispell-alternate-dictionary "C:/path/to/hunspell/en_US.txt") 

2. Open a remote file 
C-x C-f /plinkx:homeoffice:/home/nmichalo/test.org

3. Find word in that file and call 
M-x ispell-word

The emacs debugger gives:
Debugger entered--Lisp error: (file-missing "Opening process input file" "No such file or directory" "/plinkx:homeoffice:/home/nmichalo/NUL")
  call-process("c:/NProgramFiles/bin/hunspell.exe" "NUL" t nil "-D" "-a" "NUL")
  apply(call-process ("c:/NProgramFiles/bin/hunspell.exe" "NUL" t nil "-D" "-a" "NUL"))
  ispell-call-process("c:/NProgramFiles/bin/hunspell.exe" "NUL" t nil "-D" "-a" "NUL")
  ispell-find-hunspell-dictionaries()
  ispell-set-spellchecker-params()
  ispell-word(nil nil nil t)
  funcall-interactively(ispell-word nil nil nil t)
  call-interactively(ispell-word record nil)
  command-execute(ispell-word record)
  execute-extended-command(nil "ispell-word" "ispell-w")
  funcall-interactively(execute-extended-command nil "ispell-word" "ispell-w")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)

Comments:
This only happens when editing remote files.  Otherwise ispell is working as expected.

The problem seems to resolve if I first open a local file, and call ispell-word on the local file first.  After that ispell-word seems to work in both the local and remote files.

While running "emacs -Q" if I first encounter the error in ispell-word on a remote file, then I always encounter an error with ispell-word even on local files.  This only seems to happen with the -Q option. The stack trace is different, included here for reference:
 Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  string-match("," nil 0)
  split-string(nil "," t)
  ispell-parse-hunspell-affix-file(nil)
  ispell-hunspell-fill-dictionary-entry(nil)
  ispell-start-process()
  ispell-init-process()
  ispell-buffer-local-words()
  ispell-accept-buffer-local-defs()
  ispell-word(nil nil nil t)
  funcall-interactively(ispell-word nil nil nil t)
  call-interactively(ispell-word nil nil)
  command-execute(ispell-word)

-----Original Message-----
From: Michael Albinus <[email-masked]> 
Sent: Thursday, September 8, 2022 2:37 AM
To: Nick Longo <[email-masked]>
Cc: [email-masked]
Subject: Re: bug#57649: 27.1; Spell check on remote file fails on windows.

Nick Longo <[email-masked]> writes:

Hi Nick,

> When working on a remote file from windows, if I try to invoke spell 
> check I get the
>
> following error message:
>
> "apply: Opening process input file: No such file or directory, 
> /plinkx:..."

Could you pls tell which spell package in Emacs is involved? I don't use spell in Emacs, so I need a starting point.

Best would be if you could give a recipe, starting with "emacs -Q". A Lisp backtrace would also help.

Best regards, Michael.