Subject: bug#26258: 26.0.50; recentf and tramp

From: Stephen Berman <[email-masked]>
Date: Sun, 26 Mar 2017 23:48:43 +0200

On Sun, 26 Mar 2017 17:40:57 +0200 Michael Albinus <[email-masked]> wrote:

> Stephen Berman <[email-masked]> writes:
>
> Hi Stephen,
>
>> Now starting emacs raises the error "Variable binding depth exceeds
>> max-specpdl-size" and recentf-mode is not enabled.  Starting emacs with
>> --debug-init produces the attached backtrace.
>
> I've pushed a fix to master which shall fix the recursive load for
> Tramp, could you pls check?

Thanks, I rebuilt Emacs with your fix and confirm there's now no error
and recentf-mode does get enabled; but...

> I'm not a recentf user, so I don't know whether it behaves correctly in
> your scenario, loading remote recentf files.

... now the remote file "/su:root@rosalinde:/etc/" is removed from
recentf-save-file on enabling recentf-mode.  This does not happen in
Emacs 25.2.  The difference appears to be due to what happens when
file-remote-p is called (from recentf-keep-default-predicate): in 25.2
(file-remote-p "/su:root@rosalinde:/etc/") returns "/su:root@rosalinde:"
but in master with your fix, it raises a void-function error:

Debugger entered--Lisp error: (void-function tramp-file-name-handler)
  tramp-file-name-handler(file-remote-p "/su:root@rosalinde:/etc/" nil nil)
  file-remote-p("/su:root@rosalinde:/etc/")
  eval((file-remote-p "/su:root@rosalinde:/etc/") nil)
  elisp--eval-last-sexp(t)
  eval-last-sexp(t)
  eval-print-last-sexp(nil)
  funcall-interactively(eval-print-last-sexp nil)
  call-interactively(eval-print-last-sexp nil nil)
  command-execute(eval-print-last-sexp)

> Best regards, Michael.

Steve Berman