Tramp problems (was: Norbert's PGP key expired)

Joachim Schrod jschrod at acm.org
Wed Mar 28 19:29:36 EDT 2007


>>>>> "MA" == Michael Albinus <michael.albinus at gmx.de> writes:
MA> Joachim Schrod <jschrod at acm.org> writes:

>> /me is now off to fight more with the pre-release tramp version and
>> the obnoxious error messages about wrong argument types that it spouts
>> at me. ;-)

MA> It would be great if you could provide the offered description of
MA> the first problem, a backtrace in case of the error might be a
MA> good starting point for me.

XEmacs 21.5.25, tramp from XEmacs packages CVS:

Start with xemacs -vanilla.
In the scratch buffer, evaluate
    (global-set-key 'f5 #'find-file-other-frame)

Open a dired window on a remote system with tramp (it uses the new
default method scp).
Press 'f5.
The error message is
    (wrong-type-argument characterp nil)

Actually, I had problems in producing a backtrace, and I don't know
why. When I set debug-on-error to t, sometimes no reaction appears, no
backtrace, nothing. Well, after executing a few other commands, I was
eventually able to produce a backtrace:

Debugger entered--Lisp error: (wrong-type-argument characterp nil)
  char-equal(nil ?\t)
  tramp-completion-mode("/[scp/comedy]/home/schrod/trans/")
  tramp-file-name-handler(abbreviate-file-name "/[scp/comedy]/home/schrod/trans/" t)
  abbreviate-file-name("/[scp/comedy]/home/schrod/trans/" t)
  apply(abbreviate-file-name ("/[scp/comedy]/home/schrod/trans/" t))
  dired-handler-fn(abbreviate-file-name "/[scp/comedy]/home/schrod/trans/" t)
  abbreviate-file-name("/[scp/comedy]/home/schrod/trans/" t)
  read-file-name-2(file-name-history "Find file in other frame: " nil nil nil nil read-file-name-internal)
  read-file-name-1(file file-name-history "Find file in other frame: " nil nil nil nil read-file-name-internal)
  read-file-name("Find file in other frame: ")
  (list (read-file-name "Find file in other frame: ") (and current-prefix-arg (read-coding-system "Coding system: ")) t)
  call-interactively(find-file-other-frame)

With that information, the error is quite clear: #'event-to-character
can return nil and that's not cared for in #'tramp-completion-mode. 
The following patch repairs the error at my installation:

Index: tramp.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/tramp/lisp/tramp.el,v
retrieving revision 1.40
diff -u -r1.40 tramp.el
--- tramp.el	2007/03/21 21:24:43	1.40
+++ tramp.el	2007/03/28 23:10:37
@@ -4548,6 +4548,8 @@
 		       (char-equal last-input-event ?\ )))))
 	;; XEmacs
 	(and (featurep 'xemacs)
+	     ;; last-input-event may have no character approximation
+	     (event-to-character last-input-event)
 	     (or
 	      ;; ?\t has event-modifier 'control
 	      (char-equal

But you might want to code that differently -- I didn't undertand why
you used funcall to call event-to-character in that function (or why
you didn't use #' instead of symbol-function), maybe it has to do with
compatibility to FSF Emacs.


Best,
	Joachim

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Joachim Schrod				Email: jschrod at acm.org
Roedermark, Germany




More information about the XEmacs-Beta mailing list