el/dot-emacs.el: Fix auto-fill magic for `//' comments in C-like modes.
[profile] / el / dot-emacs.el
index 2f61f96..8d88807 100644 (file)
@@ -807,11 +807,6 @@ doesn't match any of the regular expressions in
 
 ;; Make C indentation nice.
 
-(eval-after-load "cc-mode"
-  '(progn
-     (define-key c-mode-map "*" nil)
-     (define-key c-mode-map "/" nil)))
-
 (defun mdw-c-lineup-arglist (langelem)
   "Hack for DWIMmery in c-lineup-arglist."
   (if (save-excursion
@@ -850,6 +845,15 @@ doesn't match any of the regular expressions in
                  (statement-case-intro . +)))
               t))
 
+(defvar mdw-c-comment-fill-prefix
+  `((,(concat "\\([ \t]*/?\\)"
+             "\\(\*\\|//]\\)"
+             "\\([ \t]*\\)"
+             "\\([A-Za-z]+:[ \t]*\\)?"
+             mdw-hanging-indents)
+     (pad . 1) (match . 2) (pad . 3) (pad . 4) (pad . 5)))
+  "Fill prefix matching C comments (both kinds).")
+
 (defun mdw-fontify-c-and-c++ ()
 
   ;; Fiddle with some syntax codes.
@@ -862,12 +866,7 @@ doesn't match any of the regular expressions in
   (setq c-hanging-comment-ender-p nil)
   (setq c-backslash-column 72)
   (setq c-label-minimum-indentation 0)
-  (setq mdw-fill-prefix
-       `((,(concat "\\([ \t]*/?\\)"
-                   "\\([\*/][ \t]*\\)"
-                   "\\([A-Za-z]+:[ \t]*\\)?"
-                   mdw-hanging-indents)
-          (pad . 1) (match . 2) (pad . 3) (pad . 4))))
+  (setq mdw-fill-prefix mdw-c-comment-fill-prefix)
 
   ;; Now define things to be fontified.
   (make-local-variable 'font-lock-keywords)
@@ -1036,12 +1035,7 @@ doesn't match any of the regular expressions in
   (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))))
+  (setq mdw-fill-prefix mdw-c-comment-fill-prefix)
 
   ;; Now define things to be fontified.
   (make-local-variable 'font-lock-keywords)
@@ -1095,14 +1089,7 @@ doesn't match any of the regular expressions in
   (mdw-java-style)
   (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))))
+  (setq mdw-fill-prefix mdw-c-comment-fill-prefix)
 
   ;; Now define things to be fontified.
   (make-local-variable 'font-lock-keywords)
@@ -1164,14 +1151,7 @@ doesn't match any of the regular expressions in
   (mdw-csharp-style)
   (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))))
+  (setq mdw-fill-prefix mdw-c-comment-fill-prefix)
 
   ;; Now define things to be fontified.
   (make-local-variable 'font-lock-keywords)
@@ -1345,37 +1325,48 @@ strip numbers instead."
 ;;;--------------------------------------------------------------------------
 ;;; Python programming style.
 
-;; Define Python fontification style.
-
-(defun mdw-fontify-python ()
+(defun mdw-fontify-pythonic (keywords)
 
   ;; Miscellaneous fiddling.
   (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
 
   ;; Now define fontification things.
   (make-local-variable 'font-lock-keywords)
-  (let ((python-keywords
-        (mdw-regexps "and" "as" "assert" "break" "class" "continue" "def"
-                     "del" "elif" "else" "except" "exec" "finally" "for"
-                     "from" "global" "if" "import" "in" "is" "lambda"
-                     "not" "or" "pass" "print" "raise" "return" "try"
-                     "while" "with" "yield")))
-    (setq font-lock-keywords
-         (list
+  (setq font-lock-keywords
+       (list
 
-          ;; Set up the keywords defined above.
-          (list (concat "\\<\\(" python-keywords "\\)\\>")
-                '(0 font-lock-keyword-face))
+        ;; Set up the keywords defined above.
+        (list (concat "\\<\\(" keywords "\\)\\>")
+              '(0 font-lock-keyword-face))
 
-          ;; At least numbers are simpler than C.
-          (list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
-                        "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
-                        "\\([eE]\\([-+]\\|\\)[0-9_]+\\|[lL]\\|\\)")
-                '(0 mdw-number-face))
+        ;; At least numbers are simpler than C.
+        (list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
+                      "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
+                      "\\([eE]\\([-+]\\|\\)[0-9_]+\\|[lL]\\|\\)")
+              '(0 mdw-number-face))
 
-          ;; And anything else is punctuation.
-          (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
-                '(0 mdw-punct-face))))))
+        ;; And anything else is punctuation.
+        (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+              '(0 mdw-punct-face)))))
+
+;; Define Python fontification styles.
+
+(defun mdw-fontify-python ()
+  (mdw-fontify-pythonic
+   (mdw-regexps "and" "as" "assert" "break" "class" "continue" "def"
+               "del" "elif" "else" "except" "exec" "finally" "for"
+               "from" "global" "if" "import" "in" "is" "lambda"
+               "not" "or" "pass" "print" "raise" "return" "try"
+               "while" "with" "yield")))
+
+(defun mdw-fontify-pyrex ()
+  (mdw-fontify-pythonic
+   (mdw-regexps "and" "as" "assert" "break" "cdef" "class" "continue"
+               "ctypedef" "def" "del" "elif" "else" "except" "exec"
+               "extern" "finally" "for" "from" "global" "if"
+               "import" "in" "is" "lambda" "not" "or" "pass" "print"
+               "raise" "return" "struct" "try" "while" "with"
+               "yield")))
 
 ;;;--------------------------------------------------------------------------
 ;;; Icon programming style.