Subject: RE: bug#9669: 24.0.50; `tramp-compat.el' in *Help* when it doesn't belong (?)

From: "Drew Adams" <[email-masked]>
Date: Wed, 5 Oct 2011 10:06:55 -0700

> > It is called when you turn on minor mode `icicle-mode'.
> >   icy-mode(1)
> 
> I'm not sure what that backtrace was about (the tip was different from
> the other one, for example),

I had hit `d' once, thinking that the info shown after `d' would be more
helpful.  That is the only difference from the previous backtrace I sent.

> and it still doesn't seem to include the beginning.

As I've tried to say a couple times now, it does not matter what calls
`icy-mode' (aka `icicle-mode') to turn on Icicle mode (the result is the same).
That's why I trimmed off the actual call to it.

> Basically, I'd expect this backtrace to have something to do 
> with Tramp, otherwise I have no clue how the defalias gets
> attributed to tramp-compat.el.

No, there is nothing about "tramp" in the backtrace.  I already looked for that.
I have no clue either.

I've included the entire backtrace again (below), this time as soon as the
debugger is entered, rather than after hitting `d' once, and this time including
the call to `execute-extended-command' that invokes `icy-mode' to enter Icicle
mode.

> > In this example, `icicle-display-completion-list' would be the file
> > that Emacs thinks is defined in `tramp-compat.el'.
> 
> Huh?  You said Emacs told you:
>  icicle-read-char-by-name is a compiled Lisp function.
> I.e. the actual function has no associated file (rather than being
> associated to tramp-compat.el), while the defalias is associated with
> tramp-compat.el.

Correct.  That's what I meant, but I misspoke.  In that example,
`icicle-display-completion-list' is the function that Emacs thinks has no
associated file, and `display-completion-list' is the function Emacs thinks is
defined in `tramp-compat.el'.

In case it helps, after toggling Icicle mode OFF, this is what the help buffer
says:

 read-char-by-name is an alias for `old-read-char-by-name' in
 `tramp-compat.el'.

Again, that's correct except for the file name.  But this time, if you click the
function name it _correctly_ shows this:

 old-read-char-by-name is a compiled Lisp function in `icicles-fn.el'.

So the second problem (no file name) does not occur in this case.  But the first
problem (file = tramp-compat.el) is still there.  And yes, this is repeatable
(turning on/off Icicle mode).

HTH.

--------------

Debugger entered: nil
  (progn (debug) (defalias fn (intern (concat "icicle-" (symbol-name fn)))))
  (if (fboundp (intern (concat "old-" (symbol-name fn)))) (progn (debug)
(defalias fn (intern (concat "icicle-" (symbol-name fn))))))
  (when (fboundp (intern (concat "old-" (symbol-name fn)))) (debug) (defalias fn
(intern (concat "icicle-" (symbol-name fn)))))
  (while --cl-dolist-temp-- (setq fn (car --cl-dolist-temp--)) (when (fboundp
(intern (concat "old-" (symbol-name fn)))) (debug) (defalias fn (intern (concat
"icicle-" (symbol-name fn))))) (setq --cl-dolist-temp-- (cdr
--cl-dolist-temp--)))
  (let ((--cl-dolist-temp-- icicle-functions-to-redefine) fn) (while
--cl-dolist-temp-- (setq fn (car --cl-dolist-temp--)) (when (fboundp (intern
(concat "old-" (symbol-name fn)))) (debug) (defalias fn (intern (concat
"icicle-" (symbol-name fn))))) (setq --cl-dolist-temp-- (cdr
--cl-dolist-temp--))))
  (catch (quote --cl-block-nil--) (let ((--cl-dolist-temp--
icicle-functions-to-redefine) fn) (while --cl-dolist-temp-- (setq fn (car
--cl-dolist-temp--)) (when (fboundp (intern (concat "old-" (symbol-name fn))))
(debug) (defalias fn (intern (concat "icicle-" (symbol-name fn))))) (setq
--cl-dolist-temp-- (cdr --cl-dolist-temp--)))))
  (cl-block-wrapper (catch (quote --cl-block-nil--) (let ((--cl-dolist-temp--
icicle-functions-to-redefine) fn) (while --cl-dolist-temp-- (setq fn (car
--cl-dolist-temp--)) (when (fboundp (intern (concat "old-" ...))) (debug)
(defalias fn (intern (concat "icicle-" ...)))) (setq --cl-dolist-temp-- (cdr
--cl-dolist-temp--))))))
  (block nil (let ((--cl-dolist-temp-- icicle-functions-to-redefine) fn) (while
--cl-dolist-temp-- (setq fn (car --cl-dolist-temp--)) (when (fboundp (intern
(concat "old-" (symbol-name fn)))) (debug) (defalias fn (intern (concat
"icicle-" (symbol-name fn))))) (setq --cl-dolist-temp-- (cdr
--cl-dolist-temp--)))))
  (dolist (fn icicle-functions-to-redefine) (when (fboundp (intern (concat
"old-" (symbol-name fn)))) (debug) (defalias fn (intern (concat "icicle-"
(symbol-name fn))))))
  (progn (dolist (fn icicle-functions-to-redefine) (when (fboundp (intern
(concat "old-" (symbol-name fn)))) (debug) (defalias fn (intern (concat
"icicle-" (symbol-name fn)))))))
  (if (fboundp (quote icicle-completing-read)) (progn (dolist (fn
icicle-functions-to-redefine) (when (fboundp (intern (concat "old-" (symbol-name
fn)))) (debug) (defalias fn (intern (concat "icicle-" (symbol-name fn))))))))
  (when (fboundp (quote icicle-completing-read)) (dolist (fn
icicle-functions-to-redefine) (when (fboundp (intern (concat "old-" (symbol-name
fn)))) (debug) (defalias fn (intern (concat "icicle-" (symbol-name fn)))))))
  icicle-redefine-standard-functions()
  (cond (icicle-mode (icicle-define-icicle-maps) (icicle-bind-other-keymap-keys)
(add-hook (quote minibuffer-setup-hook) (quote icicle-minibuffer-setup))
(add-hook (quote minibuffer-exit-hook) (quote icicle-cancel-Help-redirection))
(add-hook (quote minibuffer-exit-hook) (quote icicle-restore-region-face))
(add-hook (quote minibuffer-exit-hook) (quote icicle-unhighlight-lighter))
(add-hook (quote icicle-post-command-hook) (quote icicle-activate-mark) (quote
append)) (add-hook (quote completion-setup-hook) (quote icicle-set-calling-cmd)
(quote append)) (when icicle-customize-save-flag (add-hook (quote
kill-emacs-hook) (quote icicle-command-abbrev-save))) (add-hook (quote
comint-mode-hook) (quote icicle-comint-hook-fn)) (add-hook (quote
compilation-mode-hook) (quote icicle-compilation-hook-fn)) (add-hook (quote
compilation-minor-mode-hook) (quote icicle-compilation-hook-fn))
(icicle-undo-std-completion-faces) (icicle-redefine-std-completion-fns)
(icicle-redefine-standard-functions) (icicle-redefine-standard-options) (when
(ad-find-some-advice (quote describe-face) (quote before) (quote
icicle-respect-WYSIWYG)) (ad-enable-advice (quote describe-face) (quote before)
(quote icicle-respect-WYSIWYG))) (when (fboundp (quote
minibuffer-depth-indicate-mode)) (minibuffer-depth-indicate-mode 99)) (if
icicle-menu-items-to-history-flag (add-hook (quote pre-command-hook) (quote
icicle-add-menu-item-to-cmd-history)) (remove-hook (quote pre-command-hook)
(quote icicle-add-menu-item-to-cmd-history))) (when (> emacs-major-version 22)
(when icicle-populate-interactive-history-flag (ad-enable-advice (quote
call-interactively) (quote after) (quote icicle-save-to-history))) (ad-activate
(quote call-interactively))) (dolist (fn icicle-inhibit-advice-functions) (when
(and (fboundp fn) (ad-is-active fn)) (push (cons fn (ad-copy-advice-info fn))
icicle-advice-info-list) (ad-deactivate fn)))) (t (makunbound (quote
icicle-mode-map)) (icicle-restore-other-keymap-keys) (remove-hook (quote
minibuffer-setup-hook) (quote icicle-minibuffer-setup)) (remove-hook (quote
minibuffer-exit-hook) (quote icicle-cancel-Help-redirection)) (remove-hook
(quote minibuffer-exit-hook) (quote icicle-restore-region-face)) (remove-hook
(quote icicle-post-command-hook) (quote icicle-activate-mark)) (remove-hook
(quote pre-command-hook) (quote icicle-top-level-prep)) (remove-hook (quote
pre-command-hook) (quote icicle-run-icicle-pre-command-hook) t) (remove-hook
(quote post-command-hook) (quote icicle-run-icicle-post-command-hook) t)
(remove-hook (quote completion-setup-hook) (quote icicle-set-calling-cmd))
(remove-hook (quote kill-emacs-hook) (quote icicle-command-abbrev-save))
(remove-hook (quote comint-mode-hook) (quote icicle-comint-hook-fn))
(remove-hook (quote compilation-mode-hook) (quote icicle-compilation-hook-fn))
(remove-hook (quote compilation-minor-mode-hook) (quote
icicle-compilation-hook-fn)) (icicle-restore-std-completion-fns)
(icicle-restore-standard-functions) (icicle-restore-standard-options) (when
(ad-find-some-advice (quote describe-face) (quote before) (quote
icicle-respect-WYSIWYG)) (ad-disable-advice (quote describe-face) (quote before)
(quote icicle-respect-WYSIWYG))) (when (fboundp (quote
minibuffer-depth-indicate-mode)) (minibuffer-depth-indicate-mode -99))
(remove-hook (quote pre-command-hook) (quote
icicle-add-menu-item-to-cmd-history)) (when (> emacs-major-version 22)
(ad-disable-advice (quote call-interactively) (quote after) (quote
icicle-save-to-history)) (ad-activate (quote call-interactively))) (dolist (fn
icicle-inhibit-advice-functions) (let ((info (memq fn icicle-advice-info-list)))
(when (and (fboundp fn) info) (ad-set-advice-info fn info) (when (ad-is-active
fn) (ad-activate fn)))))))
  (let ((last-message (current-message))) (setq icicle-mode (if (eq arg (quote
toggle)) (not icicle-mode) (> (prefix-numeric-value arg) 0))) (cond (icicle-mode
(icicle-define-icicle-maps) (icicle-bind-other-keymap-keys) (add-hook (quote
minibuffer-setup-hook) (quote icicle-minibuffer-setup)) (add-hook (quote
minibuffer-exit-hook) (quote icicle-cancel-Help-redirection)) (add-hook (quote
minibuffer-exit-hook) (quote icicle-restore-region-face)) (add-hook (quote
minibuffer-exit-hook) (quote icicle-unhighlight-lighter)) (add-hook (quote
icicle-post-command-hook) (quote icicle-activate-mark) (quote append)) (add-hook
(quote completion-setup-hook) (quote icicle-set-calling-cmd) (quote append))
(when icicle-customize-save-flag (add-hook (quote kill-emacs-hook) (quote
icicle-command-abbrev-save))) (add-hook (quote comint-mode-hook) (quote
icicle-comint-hook-fn)) (add-hook (quote compilation-mode-hook) (quote
icicle-compilation-hook-fn)) (add-hook (quote compilation-minor-mode-hook)
(quote icicle-compilation-hook-fn)) (icicle-undo-std-completion-faces)
(icicle-redefine-std-completion-fns) (icicle-redefine-standard-functions)
(icicle-redefine-standard-options) (when (ad-find-some-advice (quote
describe-face) (quote before) (quote icicle-respect-WYSIWYG)) (ad-enable-advice
(quote describe-face) (quote before) (quote icicle-respect-WYSIWYG))) (when
(fboundp (quote minibuffer-depth-indicate-mode)) (minibuffer-depth-indicate-mode
99)) (if icicle-menu-items-to-history-flag (add-hook (quote pre-command-hook)
(quote icicle-add-menu-item-to-cmd-history)) (remove-hook (quote
pre-command-hook) (quote icicle-add-menu-item-to-cmd-history))) (when (>
emacs-major-version 22) (when icicle-populate-interactive-history-flag
(ad-enable-advice (quote call-interactively) (quote after) (quote
icicle-save-to-history))) (ad-activate (quote call-interactively))) (dolist (fn
icicle-inhibit-advice-functions) (when (and (fboundp fn) (ad-is-active fn))
(push (cons fn (ad-copy-advice-info fn)) icicle-advice-info-list) (ad-deactivate
fn)))) (t (makunbound (quote icicle-mode-map))
(icicle-restore-other-keymap-keys) (remove-hook (quote minibuffer-setup-hook)
(quote icicle-minibuffer-setup)) (remove-hook (quote minibuffer-exit-hook)
(quote icicle-cancel-Help-redirection)) (remove-hook (quote
minibuffer-exit-hook) (quote icicle-restore-region-face)) (remove-hook (quote
icicle-post-command-hook) (quote icicle-activate-mark)) (remove-hook (quote
pre-command-hook) (quote icicle-top-level-prep)) (remove-hook (quote
pre-command-hook) (quote icicle-run-icicle-pre-command-hook) t) (remove-hook
(quote post-command-hook) (quote icicle-run-icicle-post-command-hook) t)
(remove-hook (quote completion-setup-hook) (quote icicle-set-calling-cmd))
(remove-hook (quote kill-emacs-hook) (quote icicle-command-abbrev-save))
(remove-hook (quote comint-mode-hook) (quote icicle-comint-hook-fn))
(remove-hook (quote compilation-mode-hook) (quote icicle-compilation-hook-fn))
(remove-hook (quote compilation-minor-mode-hook) (quote
icicle-compilation-hook-fn)) (icicle-restore-std-completion-fns)
(icicle-restore-standard-functions) (icicle-restore-standard-options) (when
(ad-find-some-advice (quote describe-face) (quote before) (quote
icicle-respect-WYSIWYG)) (ad-disable-advice (quote describe-face) (quote before)
(quote icicle-respect-WYSIWYG))) (when (fboundp (quote
minibuffer-depth-indicate-mode)) (minibuffer-depth-indicate-mode -99))
(remove-hook (quote pre-command-hook) (quote
icicle-add-menu-item-to-cmd-history)) (when (> emacs-major-version 22)
(ad-disable-advice (quote call-interactively) (quote after) (quote
icicle-save-to-history)) (ad-activate (quote call-interactively))) (dolist (fn
icicle-inhibit-advice-functions) (let ((info (memq fn icicle-advice-info-list)))
(when (and (fboundp fn) info) (ad-set-advice-info fn info) (when (ad-is-active
fn) (ad-activate fn))))))) (unless (eq icicle-guess-commands-in-path (quote
load)) (setq icicle-shell-command-candidates-cache nil)) (message "Turning %s
Icicle mode..." (if icicle-mode "ON" "OFF")) (icicle-define-minibuffer-maps
icicle-mode) (run-hooks (quote icicle-mode-hook)) (message "Turning %s Icicle
mode...done" (if icicle-mode "ON" "OFF")) (run-hooks (quote icicle-mode-hook)
(if icicle-mode (quote icicle-mode-on-hook) (quote icicle-mode-off-hook))) (if
(called-interactively-p (quote any)) (progn (customize-mark-as-set (quote
icicle-mode)) (unless (and (current-message) (not (equal last-message
(current-message)))) (message "Icicle mode %sabled" (if icicle-mode "en"
"dis"))))))
  icy-mode(toggle)
  call-interactively(icy-mode t nil)
  execute-extended-command(nil)
  call-interactively(execute-extended-command nil nil)