X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/ed5d93a40995ad81589b819ee04d046552eddc89..7b5903d85319addd6399a1e07a5f1b1204035885:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 80f0f81..2c5fa53 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -875,6 +875,9 @@ doesn't match any of the regular expressions in (((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 @@ -914,6 +917,7 @@ doesn't match any of the regular expressions in (((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 @@ -1487,6 +1491,81 @@ doesn't match any of the regular expressions in (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.