(((class color)) :foreground "yellow" :background "blue"
:box (:line-width 1 :style released-button))
(t :inverse-video t))
+(mdw-define-face nobreak-space
+ (((type tty)))
+ (t :inherit escape-glyph :underline t))
(mdw-define-face scroll-bar
(t :foreground "black" :background "lightgrey"))
(mdw-define-face fringe
(((type tty)) :foreground "yellow") (t :foreground "burlywood2"))
(mdw-define-face mdw-number-face
(t :foreground "yellow"))
+(mdw-define-face mdw-trivial-face)
(mdw-define-face font-lock-function-name-face
(t :slant italic))
(mdw-define-face font-lock-keyword-face
(mdw-post-config-mode-hack))
;;;--------------------------------------------------------------------------
+;;; Scala programming configuration.
+
+(defun mdw-fontify-scala ()
+
+ ;; Comment filling.
+ (setq mdw-fill-prefix mdw-c-comment-fill-prefix)
+
+ ;; Define things to be fontified.
+ (make-local-variable 'font-lock-keywords)
+ (let ((scala-keywords
+ (mdw-regexps "abstract" "case" "catch" "class" "def" "do" "else"
+ "extends" "final" "finally" "for" "forSome" "if"
+ "implicit" "import" "lazy" "match" "new" "object"
+ "override" "package" "private" "protected" "return"
+ "sealed" "throw" "trait" "try" "type" "val"
+ "var" "while" "with" "yield"))
+ (scala-constants
+ (mdw-regexps "false" "null" "super" "this" "true"))
+ (punctuation "[-!%^&*=+:@#~/?\\|`]"))
+
+ (setq font-lock-keywords
+ (list
+
+ ;; Magical identifiers between backticks.
+ (list (concat "`\\([^`]+\\)`")
+ '(1 font-lock-variable-name-face))
+
+ ;; Handle the keywords defined above.
+ (list (concat "\\_<\\(" scala-keywords "\\)\\_>")
+ '(0 font-lock-keyword-face))
+
+ ;; Handle the constants defined above.
+ (list (concat "\\_<\\(" scala-constants "\\)\\_>")
+ '(0 font-lock-variable-name-face))
+
+ ;; Magical identifiers between backticks.
+ (list (concat "`\\([^`]+\\)`")
+ '(1 font-lock-variable-name-face))
+
+ ;; Handle numbers too.
+ ;;
+ ;; As usual, not quite right.
+ (list (concat "\\_<\\("
+ "0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
+ "[0-9]+\\(\\.[0-9]*\\|\\)"
+ "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[lLfFdD]?")
+ '(0 mdw-number-face))
+
+ ;; Identifiers with trailing operators.
+ (list (concat "_\\(" punctuation "\\)+")
+ '(0 mdw-trivial-face))
+
+ ;; And everything else is punctuation.
+ (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+ '(0 mdw-punct-face)))
+
+ font-lock-syntactic-keywords
+ (list
+
+ ;; Single quotes around characters. But not when used to quote
+ ;; symbol names. Ugh.
+ (list (concat "\\('\\)"
+ "\\(" "."
+ "\\|" "\\\\" "\\(" "\\\\\\\\" "\\)*"
+ "u+" "[0-9a-fA-F]\\{4\\}"
+ "\\|" "\\\\" "[0-7]\\{1,3\\}"
+ "\\|" "\\\\" "." "\\)"
+ "\\('\\)")
+ '(1 "\"")
+ '(4 "\"")))))
+
+ (mdw-post-config-mode-hack))
+
+;;;--------------------------------------------------------------------------
;;; C# programming configuration.
;; Make indentation nice.