Add better support for keywords.
authorBill Wendling <isanbard@gmail.com>
Tue, 27 Mar 2007 20:23:56 +0000 (20:23 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 27 Mar 2007 20:23:56 +0000 (20:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35386 91177308-0d34-0410-b5e6-96231b3b80d8

utils/emacs/tablegen-mode.el

index 56a672321e93578c63baf55e20c8bb409d653e87..af33cbd37fbfcf8e2194a4b97e7c7770cf436d1a 100644 (file)
@@ -1,32 +1,51 @@
 ;; Maintainer:  The LLVM team, http://llvm.org/
 ;; Description: Major mode for TableGen description files (part of LLVM project)
-;; Updated:     2003-08-11
+;; Updated:     2007-03-26
+
+(require 'comint)
+(require 'custom)
+(require 'ansi-color)
 
 ;; Create mode-specific tables.
 (defvar tablegen-mode-syntax-table nil
   "Syntax table used while in TableGen mode.")
 
+(defvar td-decorators-face 'td-decorators-face
+  "Face method decorators.")
+(make-face 'td-decorators-face)
+
 (defvar tablegen-font-lock-keywords
-  (list
-   ;; Comments
-   '("\/\/.*" . font-lock-comment-face)
-   ;; Strings
-   '("\"[^\"]+\"" . font-lock-string-face)
-   ;; Hex constants
-   '("0x[0-9A-Fa-f]+" . font-lock-preprocessor-face)
-   ;; Binary constants
-   '("0b[01]+" . font-lock-preprocessor-face)
-   ;; Integer literals
-   '("[-]?[0-9]+" . font-lock-preprocessor-face)
-   ;; Floating point constants
-   '("[-+]?[0-9]+\.[0-9]*\([eE][-+]?[0-9]+\)?" . font-lock-preprocessor-face)
-   ;; Keywords
-   '("include\\|def\\|let\\|in\\|code\\|dag\\|field" . font-lock-keyword-face)
-   ;; Types
-   '("class\\|int\\|string\\|list\\|bits?" . font-lock-type-face)
-   )
-  "Syntax highlighting for TableGen"
-  )
+  (let ((kw (mapconcat 'identity
+                       '("class" "def" "defm" "field" "in" "include"
+                         "let" "multiclass")
+                       "\\|"))
+        (type-kw (mapconcat 'identity
+                            '("bit" "bits" "code" "dag" "int" "list" "string")
+                            "\\|"))
+        )
+    (list
+     ;; Comments
+     '("\/\/" . font-lock-comment-face)
+     ;; Strings
+     '("\"[^\"]+\"" . font-lock-string-face)
+     ;; Hex constants
+     '("0x[0-9A-Fa-f]+" . font-lock-preprocessor-face)
+     ;; Binary constants
+     '("0b[01]+" . font-lock-preprocessor-face)
+     ;; Integer literals
+     '("[-]?[0-9]+" . font-lock-preprocessor-face)
+     ;; Floating point constants
+     '("[-+]?[0-9]+\.[0-9]*\([eE][-+]?[0-9]+\)?" . font-lock-preprocessor-face)
+
+     '("^[ \t]*\\(@.+\\)" 1 'td-decorators-face)
+     ;; Keywords
+     (cons (concat "\\<\\(" kw "\\)\\>[ \n\t(]") 1)
+
+     ;; Type keywords
+     (cons (concat "\\<\\(" type-kw "\\)[ \n\t(]") 1)
+     ))
+  "Additional expressions to highlight in TableGen mode.")
+(put 'tablegen-mode 'font-lock-defaults '(tablegen-font-lock-keywords))
 
 ;; ---------------------- Syntax table ---------------------------
 ;; Shamelessly ripped from jasmin.el