dot-emacs: Make `trap' report the erroneous code.
[profile] / dot-emacs.el
index ca053b4..e10f9ed 100644 (file)
 ;;; it under the terms of the GNU General Public License as published by
 ;;; the Free Software Foundation; either version 2 of the License, or
 ;;; (at your option) any later version.
-;;; 
+;;;
 ;;; This program is distributed in the hope that it will be useful,
 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;;; GNU General Public License for more details.
-;;; 
+;;;
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with this program; if not, write to the Free Software Foundation,
 ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -34,7 +34,9 @@
   "Execute FORMS without allowing errors to propagate outside."
   `(condition-case err
        ,(if (cdr forms) (cons 'progn forms) (car forms))
-     (error (message "Error (trapped): %s" (error-message-string err)))))
+     (error (message "Error (trapped): %s in %s"
+                    (error-message-string err)
+                    ',forms))))
 
 ;; --- Configuration reading ---
 
@@ -79,18 +81,37 @@ path.  The non-nil value is the filename we found for the library."
 
 ;; --- Splitting windows ---
 
-(defconst mdw-scrollbar-width (if window-system 6 1)
-  "Guessed width of scroll bar.")
+(or (and (fboundp 'scroll-bar-columns)
+        (fboundp 'fringe-columns))
+    (progn
+      (defun scroll-bar-columns (side)
+       (cond ((eq side 'left) 0)
+             (window-system 3)
+             (t 1)))
+      (defun fringe-columns (side)
+       (cond ((not window-system) 0)
+             ((eq side 'left) 1)
+             (t 2)))))
+
 (defun mdw-divvy-window (&optional w)
   "Split a wide window into appropriate widths."
   (interactive)
-  (or w (setq w 78))
-  (let ((win (selected-window))
-       (c (/ (+ (window-width) mdw-scrollbar-width)
-             (+ w mdw-scrollbar-width))))
+  (or w (setq w (if (and window-system
+                        (>= emacs-major-version 22))
+                   77
+                 78)))
+  (let* ((win (selected-window))
+        (sb-width (if (not window-system)
+                      1
+                    (+ (scroll-bar-columns 'left)
+                       (scroll-bar-columns 'right)
+                       (fringe-columns 'left)
+                       (fringe-columns 'right))))
+        (c (/ (+ (window-width) sb-width)
+              (+ w sb-width))))
     (while (> c 1)
       (setq c (1- c))
-      (split-window-horizontally (+ w mdw-scrollbar-width))
+      (split-window-horizontally (+ w sb-width))
       (other-window 1))
     (select-window win)))
 
@@ -128,6 +149,19 @@ symbols `sunday', `monday', etc. (or a mixture).  If the date stored in
 
 ;;;----- Utility functions --------------------------------------------------
 
+(or (fboundp 'line-number-at-pos)
+    (defun line-number-at-pos (&optional pos)
+      (let ((opoint (or pos (point))) start)
+       (save-excursion
+         (save-restriction
+           (goto-char (point-min))
+           (widen)
+           (forward-line 0)
+           (setq start (point))
+           (goto-char opoint)
+           (forward-line 0)
+           (1+ (count-lines 1 (point))))))))
+
 ;; --- mdw-uniquify-alist ---
 
 (defun mdw-uniquify-alist (&rest alists)
@@ -226,9 +260,9 @@ input lists are not modified, although they'll probably become garbage."
   (interactive)
   (save-excursion
     (or arg (progn
-              (goto-char (point-max))
+             (goto-char (point-max))
              (insert "\nNP: ")
-              (insert-file np-file)))))
+             (insert-file np-file)))))
 
 (trap
   (require 'tramp)
@@ -299,12 +333,16 @@ Not much right now.  Just support for doing MailCrypt stuff."
 If NEW-SESSION-P, start a new session."
   (interactive "sURL: \nP")
   (save-excursion
-    (select-window (or (and (not new-session-p)
-                           (get-buffer-window "*w3m*"))
-                      (progn
-                        (if (one-window-p t) (split-window))
-                        (get-lru-window))))
-    (w3m-browse-url url new-session-p)))
+    (let ((window (selected-window)))
+      (unwind-protect
+         (progn
+           (select-window (or (and (not new-session-p)
+                                   (get-buffer-window "*w3m*"))
+                              (progn
+                                (if (one-window-p t) (split-window))
+                                (get-lru-window))))
+           (w3m-browse-url url new-session-p))
+       (select-window window)))))
 
 (defvar mdw-good-url-browsers
   '((w3m . mdw-w3m-browse-url)
@@ -485,16 +523,20 @@ doesn't cope with anything approximating a complicated case."
   (and mdw-auto-indent
        (cond ((eq major-mode 'lisp-mode)
              (local-set-key "\C-m" 'mdw-indent-newline-and-indent))
-            ((eq major-mode 'slime-repl-mode) nil)
+            ((or (eq major-mode 'slime-repl-mode)
+                 (eq major-mode 'asm-mode))
+             nil)
             (t
              (local-set-key "\C-m" 'newline-and-indent))))
   (local-set-key [C-return] 'newline)
-  (local-set-key [?\;] 'self-insert-command)
+  (or (eq major-mode 'asm-mode)
+      (local-set-key [?\;] 'self-insert-command))
   (local-set-key [?\#] 'self-insert-command)
   (local-set-key [?\"] 'self-insert-command)
   (setq comment-column 40)
   (auto-fill-mode 1)
   (setq fill-column 77)
+  (setq show-trailing-whitespace t)
   (mdw-set-font))
 
 ;; --- Set up all sorts of faces ---
@@ -508,26 +550,28 @@ doesn't cope with anything approximating a complicated case."
 
 ;;;----- General fontification ----------------------------------------------
 
-(defun mdw-set-fonts (frame ff)
-  (if ff (progn (set-face-attribute (caar ff) frame
-                                   :family 'unspecified
-                                   :width 'unspecified
-                                   :height 'unspecified
-                                   :weight 'unspecified
-                                   :slant 'unspecified
-                                   :foreground 'unspecified
-                                   :background 'unspecified
-                                   :underline 'unspecified
-                                   :overline 'unspecified
-                                   :strike-through 'unspecified
-                                   :box 'unspecified
-                                   :inverse-video 'unspecified
-                                   :stipple 'unspecified
-;                                  :font 'unspecified
-                                   :inherit 'unspecified
-                                   )
-               (apply 'set-face-attribute (caar ff) frame (cdar ff))
-               (mdw-set-fonts frame (cdr ff)))))
+(defun mdw-set-fonts (frame faces)
+  (while faces
+    (let ((face (caar faces)))
+      (or (facep face) (make-face face))
+      (set-face-attribute face frame
+                         :family 'unspecified
+                         :width 'unspecified
+                         :height 'unspecified
+                         :weight 'unspecified
+                         :slant 'unspecified
+                         :foreground 'unspecified
+                         :background 'unspecified
+                         :underline 'unspecified
+                         :overline 'unspecified
+                         :strike-through 'unspecified
+                         :box 'unspecified
+                         :inverse-video 'unspecified
+                         :stipple 'unspecified
+                         ;:font 'unspecified
+                         :inherit 'unspecified)
+      (apply 'set-face-attribute face frame (cdar faces))
+      (setq faces (cdr faces)))))
 
 (defun mdw-do-set-font (&optional frame)
   (interactive)
@@ -537,6 +581,8 @@ doesn't cope with anything approximating a complicated case."
               '(:family "courier new" :height 85))
              ((eq window-system 'x)
               '(:family "misc-fixed" :width semi-condensed))))
+    (fixed-pitch)
+    (minibuffer-prompt)
     (modeline :foreground "blue" :background "yellow"
              :box (:line-width 1 :style released-button))
     (scroll-bar :foreground "black" :background "lightgrey")
@@ -574,6 +620,7 @@ doesn't cope with anything approximating a complicated case."
     (diff-removed-face :foreground "white" :slant italic)
     (whizzy-slice-face :background "grey10")
     (whizzy-error-face :background "darkred")
+    (trailing-whitespace :background "red")
 )))
 
 (defun mdw-set-font ()
@@ -630,8 +677,6 @@ doesn't cope with anything approximating a complicated case."
   (setq c-hanging-comment-ender-p nil)
   (setq c-backslash-column 72)
   (setq c-label-minimum-indentation 0)
-  (setq comment-start "/* ")
-  (setq comment-end " */")
   (setq mdw-fill-prefix
        `((,(concat "\\([ \t]*/?\\)"
                    "\\([\*/][ \t]*\\)"
@@ -641,15 +686,15 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Now define things to be fontified ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((c-keywords
         (make-regexp '(
-                       ;; "and"        ;C++
-                       ;; "and_eq"     ;C++
+                       "and"           ;C++
+                       "and_eq"        ;C++
                        "asm"           ;K&R, GCC
                        "auto"          ;K&R, C89
-                       ;; "bitand"     ;C++
-                       ;; "bitor"      ;C++
+                       "bitand"        ;C++
+                       "bitor"         ;C++
                        "bool"          ;C++, C9X macro
                        "break"         ;K&R, C89
                        "case"          ;K&R, C89
@@ -657,7 +702,7 @@ doesn't cope with anything approximating a complicated case."
                        "char"          ;K&R, C89
                        "class"         ;C++
                        "complex"       ;C9X macro, C++ template type
-                       ;; "compl"      ;C++
+                       "compl"         ;C++
                        "const"         ;C89
                        "const_cast"    ;C++
                        "continue"      ;K&R, C89
@@ -671,12 +716,12 @@ doesn't cope with anything approximating a complicated case."
                        ;; "entry"      ;K&R -- never used
                        "enum"          ;C89
                        "explicit"      ;C++
-                       ;; "export"     ;C++
+                       "export"        ;C++
                        "extern"        ;K&R, C89
                        "false"         ;C++, C9X macro
                        "float"         ;K&R, C89
                        "for"           ;K&R, C89
-                       "fortran"       ;K&R
+                       ;; "fortran"    ;K&R
                        "friend"        ;C++
                        "goto"          ;K&R, C89
                        "if"            ;K&R, C89
@@ -688,8 +733,8 @@ doesn't cope with anything approximating a complicated case."
                        "namespace"     ;C++
                        "new"           ;C++
                        "operator"      ;C++
-                       ;; "or"         ;C++
-                       ;; "or_eq"      ;C++
+                       "or"            ;C++
+                       "or_eq"         ;C++
                        "private"       ;C++
                        "protected"     ;C++
                        "public"        ;C++
@@ -722,8 +767,8 @@ doesn't cope with anything approximating a complicated case."
                        "volatile"      ;C89
                        "wchar_t"       ;C++, C89 library type
                        "while"         ;K&R, C89
-                       ;; "xor"        ;C++
-                       ;; "xor_eq"     ;C++
+                       "xor"           ;C++
+                       "xor_eq"        ;C++
                        "_Bool"         ;C9X
                        "_Complex"      ;C9X
                        "_Imaginary"    ;C9X
@@ -753,7 +798,6 @@ doesn't cope with anything approximating a complicated case."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Fontify include files as strings ---
 
@@ -825,7 +869,7 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Now define things to be fontified ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((c-keywords
         (make-regexp '("break" "case" "cd" "continue" "define" "default"
                        "do" "else" "exit" "for" "global" "goto" "help" "if"
@@ -834,7 +878,6 @@ doesn't cope with anything approximating a complicated case."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Handle the keywords defined above ---
 
@@ -893,7 +936,7 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Now define things to be fontified ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((java-keywords
         (make-regexp '("abstract" "boolean" "break" "byte" "case" "catch"
                        "char" "class" "const" "continue" "default" "do"
@@ -909,7 +952,6 @@ doesn't cope with anything approximating a complicated case."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Handle the keywords defined above ---
 
@@ -932,6 +974,94 @@ doesn't cope with anything approximating a complicated case."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+;;;----- C# programming configuration ---------------------------------------
+
+;; --- Make indentation nice ---
+
+(defun mdw-csharp-style ()
+  (c-add-style "[mdw] C# style"
+              '((c-basic-offset . 2)
+                (c-tab-always-indent . nil)
+                (c-offsets-alist (substatement-open . 0)
+                                 (label . 0)
+                                 (case-label . +)
+                                 (access-label . 0)
+                                 (inclass . +)
+                                 (statement-case-intro . +)))
+              t))
+
+;; --- Declare C# fontification style ---
+
+(defun mdw-fontify-csharp ()
+
+  ;; --- Other stuff ---
+
+  (mdw-csharp-style)
+  (modify-syntax-entry ?_ "w")
+  (setq c-hanging-comment-ender-p nil)
+  (setq c-backslash-column 72)
+  (setq comment-start "/* ")
+  (setq comment-end " */")
+  (setq mdw-fill-prefix
+       `((,(concat "\\([ \t]*/?\\)"
+                   "\\([\*/][ \t]*\\)"
+                   "\\([A-Za-z]+:[ \t]*\\)?"
+                   mdw-hanging-indents)
+          (pad . 1) (match . 2) (pad . 3) (pad . 4))))
+
+  ;; --- Now define things to be fontified ---
+
+  (make-local-variable 'font-lock-keywords)
+  (let ((csharp-keywords
+        (make-regexp '("abstract" "as" "base" "bool" "break"
+                       "byte" "case" "catch" "char" "checked"
+                       "class" "const" "continue" "decimal" "default"
+                       "delegate" "do" "double" "else" "enum"
+                       "event" "explicit" "extern" "false" "finally"
+                       "fixed" "float" "for" "foreach" "goto"
+                       "if" "implicit" "in" "int" "interface"
+                       "internal" "is" "lock" "long" "namespace"
+                       "new" "null" "object" "operator" "out"
+                       "override" "params" "private" "protected" "public"
+                       "readonly" "ref" "return" "sbyte" "sealed"
+                       "short" "sizeof" "stackalloc" "static" "string"
+                       "struct" "switch" "this" "throw" "true"
+                       "try" "typeof" "uint" "ulong" "unchecked"
+                       "unsafe" "ushort" "using" "virtual" "void"
+                       "volatile" "while" "yield"))))
+
+    (setq font-lock-keywords
+         (list
+
+          ;; --- Handle the keywords defined above ---
+
+          (list (concat "\\<\\(" csharp-keywords "\\)\\>")
+                '(0 font-lock-keyword-face))
+
+          ;; --- Handle numbers too ---
+          ;;
+          ;; The following isn't quite right, but it's close enough.
+
+          (list (concat "\\<\\("
+                        "0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
+                        "[0-9]+\\(\\.[0-9]*\\|\\)"
+                        "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+                        "[lLfFdD]?")
+                '(0 mdw-number-face))
+
+          ;; --- And anything else is punctuation ---
+
+          (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+                '(0 mdw-punct-face))))))
+
+(defun csharp-mode ()
+  (interactive)
+  (java-mode)
+  (setq major-mode 'csharp-mode)
+  (setq mode-name "C#")
+  (mdw-fontify-csharp)
+  (run-hooks 'csharp-mode-hook))
+
 ;;;----- Awk programming configuration --------------------------------------
 
 ;; --- Make Awk indentation nice ---
@@ -958,7 +1088,7 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Now define things to be fontified ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((c-keywords
         (make-regexp '("BEGIN" "END" "ARGC" "ARGIND" "ARGV" "CONVFMT"
                        "ENVIRON" "ERRNO" "FIELDWIDTHS" "FILENAME" "FNR"
@@ -974,7 +1104,6 @@ doesn't cope with anything approximating a complicated case."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Handle the keywords defined above ---
 
@@ -1023,7 +1152,7 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Now define fontification things ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((perl-keywords
         (make-regexp '("and" "cmp" "continue" "do" "else" "elsif" "eq"
                        "for" "foreach" "ge" "gt" "goto" "if"
@@ -1033,7 +1162,6 @@ doesn't cope with anything approximating a complicated case."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Set up the keywords defined above ---
 
@@ -1081,7 +1209,7 @@ strip numbers instead."
 
   ;; --- Now define fontification things ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((python-keywords
         (make-regexp '("and" "as" "assert" "break" "class" "continue" "def"
                        "del" "elif" "else" "except" "exec" "finally" "for"
@@ -1090,7 +1218,6 @@ strip numbers instead."
                        "while" "yield"))))
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Set up the keywords defined above ---
 
@@ -1166,10 +1293,9 @@ strip numbers instead."
 
   ;; --- Fiddle with fontification ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (setq font-lock-keywords
        (list
-        't
 
         ;; --- Handle numbers too ---
         ;;
@@ -1201,15 +1327,22 @@ strip numbers instead."
 
   (run-hooks 'arm-assembler-mode-hook))
 
+;;;----- Assembler mode -----------------------------------------------------
+
+(defun mdw-fontify-asm ()
+  (modify-syntax-entry ?' "\"")
+  (modify-syntax-entry ?. "w")
+  (setf fill-prefix nil)
+  (mdw-standard-fill-prefix "\\([ \t]*;+[ \t]*\\)"))
+
 ;;;----- TCL configuration --------------------------------------------------
 
 (defun mdw-fontify-tcl ()
   (mapcar #'(lambda (ch) (modify-syntax-entry ch ".")) '(?$))
   (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (setq font-lock-keywords
        (list
-        't
         (list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
                       "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
                       "\\([eE]\\([-+]\\|\\)[0-9_]+\\|\\)")
@@ -1251,7 +1384,7 @@ strip numbers instead."
   (setq rexx-tab-always-indent nil)
   (setq rexx-cont-indent rexx-indent)
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((rexx-keywords
         (make-regexp '("address" "arg" "by" "call" "digits" "do" "drop"
                        "else" "end" "engineering" "exit" "expose" "for"
@@ -1278,7 +1411,6 @@ strip numbers instead."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Set up the keywords defined above ---
 
@@ -1311,7 +1443,7 @@ strip numbers instead."
 
   ;; --- Now define fontification things ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((sml-keywords
         (make-regexp '("abstype" "and" "andalso" "as"
                        "case"
@@ -1331,7 +1463,6 @@ strip numbers instead."
 
     (setq font-lock-keywords
          (list
-          't
 
           ;; --- Set up the keywords defined above ---
 
@@ -1342,10 +1473,10 @@ strip numbers instead."
 
           (list (concat "\\<\\(\\~\\|\\)"
                            "\\(0\\(\\([wW]\\|\\)[xX][0-9a-fA-F]+\\|"
-                                  "[wW][0-9]+\\)\\|"
-                               "\\([0-9]+\\(\\.[0-9]+\\|\\)"
-                                        "\\([eE]\\(\\~\\|\\)"
-                                               "[0-9]+\\|\\)\\)\\)")
+                                  "[wW][0-9]+\\)\\|"
+                               "\\([0-9]+\\(\\.[0-9]+\\|\\)"
+                                        "\\([eE]\\(\\~\\|\\)"
+                                               "[0-9]+\\|\\)\\)\\)")
                 '(0 mdw-number-face))
 
           ;; --- And anything else is punctuation ---
@@ -1372,7 +1503,7 @@ strip numbers instead."
 
   ;; --- Fiddle with fontification ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (let ((haskell-keywords
         (make-regexp '("as" "case" "ccall" "class" "data" "default"
                        "deriving" "do" "else" "foreign" "hiding" "if"
@@ -1382,7 +1513,6 @@ strip numbers instead."
 
     (setq font-lock-keywords
          (list
-          't
           (list "--.*$"
                 '(0 font-lock-comment-face))
           (list (concat "\\<\\(" haskell-keywords "\\)\\>")
@@ -1404,10 +1534,9 @@ strip numbers instead."
 
   ;; --- Real fontification things ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (setq font-lock-keywords
        (list
-        't
 
         ;; --- Environment names are keywords ---
 
@@ -1452,10 +1581,9 @@ strip numbers instead."
 
   ;; --- Real fontification things ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (setq font-lock-keywords
        (list
-        't
 
         ;; --- Environment names are keywords ---
 
@@ -1477,31 +1605,31 @@ strip numbers instead."
         ;; --- Handle @/.../ for italics ---
 
         ;; (list "\\(@/\\)\\([^/]*\\)\\(/\\)"
-        ;;       '(1 font-lock-keyword-face)
-        ;;       '(3 font-lock-keyword-face))
+        ;;       '(1 font-lock-keyword-face)
+        ;;       '(3 font-lock-keyword-face))
 
         ;; --- Handle @*...* for boldness ---
 
         ;; (list "\\(@\\*\\)\\([^*]*\\)\\(\\*\\)"
-        ;;       '(1 font-lock-keyword-face)
-        ;;       '(3 font-lock-keyword-face))
+        ;;       '(1 font-lock-keyword-face)
+        ;;       '(3 font-lock-keyword-face))
 
         ;; --- Handle @`...' for literal syntax things ---
 
         ;; (list "\\(@`\\)\\([^']*\\)\\('\\)"
-        ;;       '(1 font-lock-keyword-face)
-        ;;       '(3 font-lock-keyword-face))
+        ;;       '(1 font-lock-keyword-face)
+        ;;       '(3 font-lock-keyword-face))
 
         ;; --- Handle @<...> for nonterminals ---
 
         ;; (list "\\(@<\\)\\([^>]*\\)\\(>\\)"
-        ;;       '(1 font-lock-keyword-face)
-        ;;       '(3 font-lock-keyword-face))
+        ;;       '(1 font-lock-keyword-face)
+        ;;       '(3 font-lock-keyword-face))
 
         ;; --- Handle other @-commands ---
 
         ;; (list "@\\([^a-zA-Z]\\|[a-zA-Z]*\\)"
-        ;;       '(0 font-lock-keyword-face))
+        ;;       '(0 font-lock-keyword-face))
 
         ;; --- Make sure we get comments properly ---
 
@@ -1624,7 +1752,7 @@ strip numbers instead."
                              '(2 font-lock-string-face))
                        (list (concat "^\\([ \t]*#[ \t]*\\(\\("
                                      preprocessor-keywords
-                                     "\\)\\>\\|[0-9]+\\|$\\)\\)")
+                                     "\\)\\>\\|[0-9]+\\|$\\)\\)")
                              '(1 font-lock-keyword-face)))
                  message-mode-keywords)))
   (turn-on-font-lock-if-enabled)
@@ -1734,10 +1862,9 @@ strip numbers instead."
   (local-set-key "\C-i" 'smalltalk-reindent))
 
 (defun mdw-fontify-smalltalk ()
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (setq font-lock-keywords
        (list
-        't
         (list "\\<[A-Z][a-zA-Z0-9]*\\>"
               '(0 font-lock-keyword-face))
         (list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
@@ -1775,10 +1902,9 @@ strip numbers instead."
 
   ;; --- Not much fontification needed ---
 
-  (make-local-variable  'font-lock-keywords)
+  (make-local-variable 'font-lock-keywords)
   (setq font-lock-keywords
        (list
-        't
         (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
               '(0 mdw-punct-face)))))