[COMMIT] Don't assume multiple values are lists, mmm-class.el

Marcus Harnisch marcus.harnisch at gmx.net
Wed Feb 17 16:41:21 EST 2010


Hi Aidan

Aidan Kehoe <kehoea at parhasard.net> writes:

> APPROVE COMMIT
>
> NOTE: This patch has been committed. 
>
> ChangeLog addition:
>
> 2010-02-07  Aidan Kehoe  <kehoea at parhasard.net>
>
> 	* mmm-class.el: Add compiler magic so code using multiple values
> 	compiled on 21.4 works on 21.5.
> 	(mmm-ify): Call #'multiple-value-bind here instead of assuming
> 	#'values always returns a list; thanks for the bug report, Marcus.

Somethings still fishy. When opening files that had been treated fine
by mmm-mode in the past, XEmacs now hangs. After hitting C-g, the file
displays and the proper mode is applied to certain regions. Without
fontification however. In any case, I got this stack trace:

Debugger entered--Lisp error: (quit)
  ("(in map-extents-internal)" "[internal]")
  map-extents(#<compiled-function (ex junk) "...(8)" [ex function *result* nil] 2> nil 969 971 nil all-extents-closed-open overlay nil)
  mapcar-extents(identity nil nil 969 971 all-extents-closed-open overlay)
  overlays-in(969 971)
  mmm-overlays-at(970 beg)
  mmm-submode-at(970 beg)
  mmm-valid-submode-region(asm-mode 970 1134)
  mmm-make-region(asm-mode 970 1134 :face mmm-code-submode-face :front nil :back nil :evaporation front :match-front "__asm void func_asm(struct bf1_31 \\*p, int n, int a)\n{" :match-back "}" :beg-sticky t :end-sticky t :name nil :delimiter-mode fundamental-mode :front-face nil :back-face nil :creation-hook nil)
  byte-code("..." [face matched-face end beg submode matched-submode mmm-make-region :face :front :back :evaporation front :match-front :match-back :beg-sticky :end-sticky :name :delimiter-mode :front-face :back-face :creation-hook front-pos back-pos matched-front matched-back beg-sticky end-sticky matched-name delimiter-mode front-face back-face creation-hook ok-resume] 30)
  mmm-ify(:start 1 :stop 1316 :submode asm-mode :face mmm-code-submode-face :front "__asm\\b.+?)[ \n	]*\\({\\)" :back mmm-end-of-sexp :private t :face nil)
  apply(mmm-ify :start 1 :stop 1316 (:submode asm-mode :face mmm-code-submode-face :front "__asm\\b.+?)[ \n	]*\\({\\)" :back mmm-end-of-sexp :private t :face nil))
  mmm-apply-class(c-asm-1 1 1316 nil)
  mmm-apply-classes((c-asm-1 c-asm-2 c-asm-4 c-asm-5) :start 1 :stop 1316 :face nil)
  mmm-ify(:start 1 :stop 1316 :classes (c-asm-1 c-asm-2 c-asm-4 c-asm-5) :face nil)
  apply(mmm-ify :start 1 :stop 1316 (:classes (c-asm-1 c-asm-2 c-asm-4 c-asm-5) :face nil))
  mmm-apply-class(c 1 1316 nil)
  mmm-apply-classes((universal c) :start 1 :stop 1316)
  mmm-apply-all()
  mmm-mode-on()
  mmm-mode-on-maybe()
  funcall(mmm-mode-on-maybe)
  mmm-run-major-mode-hook()
  mmm-check-changed-buffers()
  (dispatch-event "[internal]")

I'll try to find out more, but maybe this rings a bell already.

Thanks
Marcus



More information about the XEmacs-Patches mailing list