+(defun message-xmas-maybe-fontify ()
+ (when (featurep 'font-lock)
+ (font-lock-set-defaults)))
+
+(defun message-xmas-make-caesar-translation-table (n)
+ "Create a rot table with offset N."
+ (let ((i -1)
+ (table (make-string 256 0))
+ (a (mm-char-int ?a))
+ (A (mm-char-int ?A)))
+ (while (< (incf i) 256)
+ (aset table i i))
+ (concat
+ (substring table 0 A)
+ (substring table (+ A n) (+ A n (- 26 n)))
+ (substring table A (+ A n))
+ (substring table (+ A 26) a)
+ (substring table (+ a n) (+ a n (- 26 n)))
+ (substring table a (+ a n))
+ (substring table (+ a 26) 255))))
+
+(add-hook 'message-mode-hook 'message-xmas-maybe-fontify)
+
+(defun message-xmas-redefine ()
+ "Redefine message functions for XEmacs."
+ (defalias 'message-exchange-point-and-mark
+ 'message-xmas-exchange-point-and-mark)
+
+ (when (>= emacs-major-version 20)
+ (defalias 'message-make-caesar-translation-table
+ 'message-xmas-make-caesar-translation-table)))
+
+(message-xmas-redefine)