dot/emacs, el/dot-emacs.el: Add support for the Go programming language.
[profile] / el / dot-emacs.el
index 1112f35..7bb8214 100644 (file)
@@ -742,8 +742,7 @@ doesn't match any of the regular expressions in
   `(progn
      (make-face ',name)
      (defvar ,name ',name)
-     (put ',name 'face-defface-spec ',body)
-     ))
+     (put ',name 'face-defface-spec ',body)))
 
 (mdw-define-face default
   (((type w32)) :family "courier new" :height 85)
@@ -798,6 +797,8 @@ doesn't match any of the regular expressions in
   (t :slant italic))
 (mdw-define-face font-lock-builtin-face
   (t :weight bold))
+(mdw-define-face font-lock-type-face
+  (t :weight bold :slant italic))
 (mdw-define-face font-lock-reference-face
   (t :weight bold))
 (mdw-define-face font-lock-variable-name-face
@@ -1289,6 +1290,39 @@ doesn't match any of the regular expressions in
   "Major mode for editing C# code.")
 
 ;;;--------------------------------------------------------------------------
+;;; Go programming configuration.
+
+(defun mdw-fontify-go ()
+
+  (make-local-variable 'font-lock-keywords)
+  (let ((go-keywords
+        (mdw-regexps "break" "case" "chan" "const" "continue"
+                     "default" "defer" "else" "fallthrough" "for"
+                     "func" "go" "goto" "if" "import"
+                     "interface" "map" "package" "range" "return"
+                     "select" "struct" "switch" "type" "var")))
+
+    (setq font-lock-keywords
+         (list
+
+          ;; Handle the keywords defined above.
+          (list (concat "\\<\\(" go-keywords "\\)\\>")
+                '(0 font-lock-keyword-face))
+
+          ;; Handle numbers too.
+          ;;
+          ;; The following isn't quite right, but it's close enough.
+          (list (concat "\\<\\("
+                        "0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
+                        "[0-9]+\\(\\.[0-9]*\\|\\)"
+                        "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)")
+                '(0 mdw-number-face))
+
+          ;; And anything else is punctuation.
+          (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+                '(0 mdw-punct-face))))))
+
+;;;--------------------------------------------------------------------------
 ;;; Awk programming configuration.
 
 ;; Make Awk indentation nice.
@@ -2236,6 +2270,9 @@ strip numbers instead."
 
 (setq hs-hide-comments-when-hiding-all nil)
 
+(defadvice hs-hide-all (after hide-first-comment activate)
+  (save-excursion (hs-hide-initial-comment-block)))
+
 ;;;--------------------------------------------------------------------------
 ;;; Shell mode.