Subject: 29.1; Prefixed find-file-at-point fails when ido-mode is active.
From: Stéphane Soppera <[email-masked]>
To: [email-masked]
Date: Fri, 6 Oct 2023 20:41:39 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Recipe to reproduce:

  emacs -Q
  M-x ido-mode
  M-x ffap-bindings
  C-u M-x find-file-at-point RET

(any file can be used; the default `~/` on Unix works)

This fails with:

  apply: Wrong number of arguments: #<subr ido--ffap-find-file>, 2

After doing M-x toggle-debug-on-error, the full stack is:

  Debugger entered--Lisp error: (wrong-number-of-arguments #<subr
ido--ffap-find-file> 2)
      ido--ffap-find-file("~/" t)
      apply(ido--ffap-find-file ("~/" t))
      #f(advice ido--ffap-find-file :override find-file)("~/" t)
      funcall-interactively(#f(advice ido--ffap-find-file :override
find-file) "~/" t)
      find-file-at-point()
      funcall-interactively(find-file-at-point)
      command-execute(find-file-at-point record)
      execute-extended-command((4) "find-file-at-point" nil)
      funcall-interactively(execute-extended-command (4)
"find-file-at-point" nil)
      command-execute(execute-extended-command)

This regression seems to come from `(call-interactively
ffap-file-finder)` with `(advice ido--ffap-find-file :override
find-file)`. Since `ido--ffap-find-file` is not interactive, the
`interactive` of `find-file` is used, which uses `find-file-read-args`
which returns two arguments and not simply one.

The function `ido--ffap-find-file` was added to fix bug #50279.

In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.37,
 cairo version 1.16.0) of 2023-09-04, modified by Debian built on

-- 
Stéphane SOPPERA