chiark / gitweb /
dot/emacs, el/dot-emacs.el: Fontification for Pyrex code.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 4 Oct 2009 23:09:21 +0000 (00:09 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 4 Oct 2009 23:09:21 +0000 (00:09 +0100)
One function doing the heavy lifting, with separate lists of keywords.

dot/emacs
el/dot-emacs.el

index 35e4f7a07510d2e9971ebc601649a208db253131..9e1f688d6366ae9a87b1351bbf610f97e6d181d4 100644 (file)
--- a/dot/emacs
+++ b/dot/emacs
 (mapcar (lambda (hook) (add-hook hook 'mdw-misc-mode-config))
        '(c-mode-hook c++-mode-hook objc-mode-hook java-mode-hook
          csharp-mode-hook perl-mode-hook cperl-mode-hook
-         python-mode-hook icon-mode-hook awk-mode-hook tcl-mode-hook
+         python-mode-hook pyrec-mode-hook icon-mode-hook awk-mode-hook
+         tcl-mode-hook
          asm-mode-hook TeX-mode-hook LaTeX-mode-hook
          TeXinfo-mode-hook tex-mode-hook latex-mode-hook
          texinfo-mode-hook emacs-lisp-mode-hook scheme-mode-hook
 
 (setq-default py-indent-offset 2)
 (add-hook 'python-mode-hook 'mdw-fontify-python t)
+(add-hook 'pyrex-mode-hook 'mdw-fontify-pyrex t)
 (setq py-python-command-args `("-i" "-colors" ,(if mdw-black-background
                                                   "Linux"
                                                 "LightBG")))
index d0be013fe9fea3bfc81842101a3dafb75290b5b6..c9b9623eb25c379af5d696e2dd505617d196339c 100644 (file)
@@ -1372,9 +1372,7 @@ (defun perl-number-tests (&optional arg)
 
 ;;;----- Python programming style -------------------------------------------
 
-;; --- Define Python fontification style ---
-
-(defun mdw-fontify-python ()
+(defun mdw-fontify-pythonic (keywords)
 
   ;; --- Miscellaneous fiddling ---
 
@@ -1383,31 +1381,44 @@ (defun mdw-fontify-python ()
   ;; --- 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 ---
+        ;; --- Set up the keywords defined above ---
 
-          (list (concat "\\<\\(" python-keywords "\\)\\>")
-                '(0 font-lock-keyword-face))
+        (list (concat "\\<\\(" keywords "\\)\\>")
+              '(0 font-lock-keyword-face))
 
-          ;; --- At least numbers are simpler than C ---
+        ;; --- 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))
+        (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 ---
+        ;; --- And anything else is punctuation ---
 
-          (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
-                '(0 mdw-punct-face))))))
+        (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+              '(0 mdw-punct-face)))))
+
+;; --- Define Python fontification style ---
+
+(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 ---------------------------------------------