branch: externals/csharp-mode
commit 91c0f3c531afd0b5b65ed0cb38842c7addf38b55
Author: Theodor Thornhill <theodor.thornh...@frende.no>
Commit: Theodor Thornhill <theodor.thornh...@frende.no>

    Extract type matcher into defconst
---
 csharp-mode.el | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/csharp-mode.el b/csharp-mode.el
index fcee0bf..e5bb1fd 100644
--- a/csharp-mode.el
+++ b/csharp-mode.el
@@ -280,32 +280,46 @@
            (eval . (list "\\(!\\)[^=]" 1 c-negation-char-face-name))
            ))
 
+(defconst csharp--regex-type-name
+  "[A-Z][A-Za-z0-9_]*"
+  "Regex describing a type identifier in C#.")
+
+(defconst csharp--regex-type-name-matcher
+  (concat "\\(" csharp--regex-type-name "\\)")
+  "Regex matching a type identifier in C#.")
+
 (c-lang-defconst c-basic-matchers-after
   csharp (append
           ;; merge with cc-mode defaults
           (c-lang-const c-basic-matchers-after)
 
           ;; Hack: Last prop-identifier
-          `(("\\.\\([A-Z][A-Za-z0-9_]+\\)" 1 font-lock-variable-name-face t))
-          `(("^using\\s *\\([A-Z][A-Za-z0-9_]+\\);" 1 
font-lock-variable-name-face t))
-          `(("^namespace\\s *\\([A-Z][A-Za-z0-9_]+\\)\\s *" 1 
font-lock-variable-name-face t))
+          `((,(concat "\\." csharp--regex-type-name-matcher)
+             1 font-lock-variable-name-face t))
+          `((,(concat "^using\\s *" csharp--regex-type-name-matcher ";")
+             1 font-lock-variable-name-face t))
+          `((,(concat "^namespace\\s *" csharp--regex-type-name-matcher" \\s 
*")
+             1 font-lock-variable-name-face t))
 
           ;; function names
-          `(("\\([A-Za-z0-9_]+\\)\\(<[a-zA-Z0-9, ]+>\\)?(" 1 
font-lock-function-name-face t))
+          `(("\\([A-Za-z0-9_]+\\)\\(<[a-zA-Z0-9, ]+>\\)?("
+             1 font-lock-function-name-face t))
 
           ;; class names with inheritance
-          `(("\\<\\([A-Z][A-Za-z0-9_]+\\)\\s *:" 1 font-lock-type-face t))
+          `((,(concat "\\<" csharp--regex-type-name-matcher "\\s *:")
+             1 font-lock-type-face t))
 
           ;; Single identifier in attribute
-          `(("\\[\\([A-Z][A-Za-z0-9_]*\\)\\][^;]" 1 
font-lock-variable-name-face t))
+          `((,(concat "\\[" csharp--regex-type-name-matcher "\\][^;]")
+             1 font-lock-variable-name-face t))
 
           ;;  Types after 'new'
-          `((,(concat "new\\s *\\([" (c-lang-const c-symbol-chars) "]+\\)")
+          `((,(concat "new\\s *" csharp--regex-type-name-matcher)
              1 font-lock-type-face t))
           ))
 
 (defcustom csharp-font-lock-extra-types
-  (list "[A-Z][a-zA-Z0-9_]*")
+  (list csharp--regex-type-name)
   (c-make-font-lock-extra-types-blurb "C#" "csharp-mode" (concat))
   :type 'c-extra-types-widget
   :group 'c)

Reply via email to