Byte compiler issue

Aidan Kehoe kehoea at parhasard.net
Wed May 16 11:57:42 EDT 2012


Hi Rodney,

 Ar an ceathrú lá déag de mí Bealtaine, scríobh Rodney Sparapani: 

 > I have a file that byte compiles with 21.4.22, but not with
 > the latest as of last Friday nor 21.5.31.  The file is
 > https://svn.r-project.org/ESS/trunk/lisp/ess-sas-a.el
 > 
 > The backtrace from the latest is:
 > 
 > Debugger entered--Lisp error: (invalid-function #<keymap map size 0 0x11e>)
 >    (map nil #<compiled-function (from 
 > "/home/rsparapa/hg/xemacs/lisp/bytecomp.elc") (&rest #:--rest--32884) 
 > "...(46)" [function #:--rest--32884 nargs 1 signal 
 > wrong-number-of-arguments nil put byte-compile-keyword-start] 5 
 > "\n\narguments: ((FUNCTION &rest NARGS))\n" 0x1afa> (quote (... ... ... 
 > ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
 > ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
 > ... ... ... ... ... ... ... ... ... ... ... ... ...)))

Thanks for the bug report! This is a problem with ESS, not with XEmacs; I’ve
a patch below.

Best,

Aidan

2012-05-16  Aidan Kehoe  <kehoea at parhasard.net>

	* ess-developer.el (ess-developer-map):
	* ess-developer.el (inferior-ess-mode-map):
	* ess-tracebug.el (ess-tracebug-map):
	* ess-tracebug.el (ess-debug-singlekey-map):
	Don't ever call (define-prefix-command 'map), this trashes the
	function binding of that symbol, which is important for those who
	call (require 'cl), including all XEmacs users.

diff --git a/lisp/ess-developer.el b/lisp/ess-developer.el
index 4b13508..5df7870 100644
--- a/lisp/ess-developer.el
+++ lisp/ess-developer.el
@@ -65,13 +65,13 @@
 ;;   :type 'string)
 
 (defvar ess-developer-map
-  (let ((map (make-sparse-keymap)))
-    (define-prefix-command 'map)
-    (define-key map "t" 'ess-developer)
-    (define-key map "a" 'ess-developer-add-package)
-    (define-key map "r" 'ess-developer-remove-package)
-    (define-key map "s" 'ess-developer-source-current-file)
-    map)
+  (let (ess-developer-map)
+    (define-prefix-command 'ess-developer-map)
+    (define-key ess-developer-map "t" 'ess-developer)
+    (define-key ess-developer-map "a" 'ess-developer-add-package)
+    (define-key ess-developer-map "r" 'ess-developer-remove-package)
+    (define-key ess-developer-map "s" 'ess-developer-source-current-file)
+    ess-developer-map)
   "Ess-developer keymap.")
 
 (define-key ess-mode-map "\C-cd"                ess-developer-map)
diff --git a/lisp/ess-tracebug.el b/lisp/ess-tracebug.el
index 3b1309e..4d1b7b0 100644
--- a/lisp/ess-tracebug.el
+++ lisp/ess-tracebug.el
@@ -129,41 +129,41 @@ Use `add-hook' to insert append your functions to this list.
   :type 'hook)
 
 (defvar ess-tracebug-map
-  (let ((map (make-sparse-keymap)))
-    (define-prefix-command 'map)
-    (define-key map "`" 'ess-show-R-traceback)
-    (define-key map "w" 'ess-watch)
-    (define-key map "i" 'ess-dbg-goto-input-event-marker)
-    (define-key map "I" 'ess-dbg-goto-input-event-marker)
-    (define-key map "d" 'ess-dbg-flag-for-debugging)
-    (define-key map "D" 'ess-dbg-unflag-for-debugging)
-    (define-key map "u" 'ess-dbg-unflag-for-debugging)
-    (define-key map "b" 'ess-bp-set)
-    (define-key map "B" 'ess-bp-set-conditional)
-    (define-key map "l" 'ess-bp-set-logger)
-    (define-key map "t" 'ess-bp-toggle-state)
-    (define-key map "k" 'ess-bp-kill)
-    (define-key map "K" 'ess-bp-kill-all)
-    (define-key map "\C-n" 'ess-bp-next)
-    (define-key map "\C-p" 'ess-bp-previous)
-    (define-key map "e" 'ess-dbg-toggle-error-action)
-    (define-key map "c" 'ess-dbg-singlekey-command)
-    (define-key map "n" 'ess-dbg-singlekey-command)
-    (define-key map "p" 'ess-dbg-singlekey-command)
-    (define-key map "q" 'ess-dbg-singlekey-command)
-    (define-key map "0" 'ess-dbg-singlekey-command)
-    (define-key map "1" 'ess-dbg-singlekey-command)
-    (define-key map "2" 'ess-dbg-singlekey-command)
-    (define-key map "3" 'ess-dbg-singlekey-command)
-    (define-key map "4" 'ess-dbg-singlekey-command)
-    (define-key map "5" 'ess-dbg-singlekey-command)
-    (define-key map "6" 'ess-dbg-singlekey-command)
-    (define-key map "7" 'ess-dbg-singlekey-command)
-    (define-key map "8" 'ess-dbg-singlekey-command)
-    (define-key map "9" 'ess-dbg-singlekey-command)
-    (define-key map "s" 'ess-tracebug-source-current-file)
-    (define-key map "?" 'ess-tracebug-show-help)
-    map)
+  (let (ess-tracebug-map)
+    (define-prefix-command 'ess-tracebug-map)
+    (define-key ess-tracebug-map "`" 'ess-show-R-traceback)
+    (define-key ess-tracebug-map "w" 'ess-watch)
+    (define-key ess-tracebug-map "i" 'ess-dbg-goto-input-event-marker)
+    (define-key ess-tracebug-map "I" 'ess-dbg-goto-input-event-marker)
+    (define-key ess-tracebug-map "d" 'ess-dbg-flag-for-debugging)
+    (define-key ess-tracebug-map "D" 'ess-dbg-unflag-for-debugging)
+    (define-key ess-tracebug-map "u" 'ess-dbg-unflag-for-debugging)
+    (define-key ess-tracebug-map "b" 'ess-bp-set)
+    (define-key ess-tracebug-map "B" 'ess-bp-set-conditional)
+    (define-key ess-tracebug-map "l" 'ess-bp-set-logger)
+    (define-key ess-tracebug-map "t" 'ess-bp-toggle-state)
+    (define-key ess-tracebug-map "k" 'ess-bp-kill)
+    (define-key ess-tracebug-map "K" 'ess-bp-kill-all)
+    (define-key ess-tracebug-map "\C-n" 'ess-bp-next)
+    (define-key ess-tracebug-map "\C-p" 'ess-bp-previous)
+    (define-key ess-tracebug-map "e" 'ess-dbg-toggle-error-action)
+    (define-key ess-tracebug-map "c" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "n" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "p" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "q" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "0" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "1" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "2" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "3" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "4" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "5" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "6" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "7" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "8" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "9" 'ess-dbg-singlekey-command)
+    (define-key ess-tracebug-map "s" 'ess-tracebug-source-current-file)
+    (define-key ess-tracebug-map "?" 'ess-tracebug-show-help)
+    ess-tracebug-map)
   "Keymap used as a binding for `ess-tracebug-prefix' key
  in ESS and iESS mode.
 
@@ -865,24 +865,24 @@ If nil, the currently debugged line is highlighted for
   :type 'boolean)
 
 (defvar ess-debug-singlekey-map
-  (let ((map (make-sparse-keymap)))
-    (define-prefix-command 'map)
-    (define-key map "c" 'ess-dbg-command-c)
-    (define-key map "n" 'ess-dbg-command-n)
-    (define-key map "p" 'ess-dbg-previous-error)
-    (define-key map "q" 'ess-dbg-command-Q)
-    (define-key map "0" 'ess-dbg-command-digit)
-    (define-key map "1" 'ess-dbg-command-digit)
-    (define-key map "2" 'ess-dbg-command-digit)
-    (define-key map "3" 'ess-dbg-command-digit)
-    (define-key map "4" 'ess-dbg-command-digit)
-    (define-key map "5" 'ess-dbg-command-digit)
-    (define-key map "6" 'ess-dbg-command-digit)
-    (define-key map "7" 'ess-dbg-command-digit)
-    (define-key map "8" 'ess-dbg-command-digit)
-    (define-key map "9" 'ess-dbg-command-digit)
-    (define-key map "?" 'ess-tracebug-show-help)
-    map)
+  (let (ess-debug-singlekey-map)
+    (define-prefix-command 'ess-debug-singlekey-map)
+    (define-key ess-debug-singlekey-map "c" 'ess-dbg-command-c)
+    (define-key ess-debug-singlekey-map "n" 'ess-dbg-command-n)
+    (define-key ess-debug-singlekey-map "p" 'ess-dbg-previous-error)
+    (define-key ess-debug-singlekey-map "q" 'ess-dbg-command-Q)
+    (define-key ess-debug-singlekey-map "0" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "1" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "2" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "3" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "4" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "5" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "6" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "7" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "8" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "9" 'ess-dbg-command-digit)
+    (define-key ess-debug-singlekey-map "?" 'ess-tracebug-show-help)
+    ess-debug-singlekey-map)
   "Keymap used to define commands for single key input mode.
 This commands are triggered by `ess-dbg-singlekey-command' .
 

-- 
‘Liston operated so fast that he once accidentally amputated an assistant’s 
fingers along with a patient’s leg, […] The patient and the assistant both 
died of sepsis, and a spectator reportedly died of shock, resulting in the 
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)



More information about the XEmacs-Beta mailing list