domtool-publish: ensure mail files exist before using
[hcoop/domtool2.git] / elisp / domtool-mode.el
index db93b74..17c90c5 100644 (file)
@@ -83,8 +83,8 @@
           . domtool-font-lock-syntactic-keywords)
          (font-lock-syntactic-face-function
           . domtool-font-lock-syntactic-face-function)))
-  (set (make-local-variable 'comment-start) "(* ")
-  (set (make-local-variable 'comment-end) " *)")
+  (set (make-local-variable 'comment-start-regexp) "(\\*\\|{{")
+  (set (make-local-variable 'comment-end-regexp) "\\*)\\|}}")
   (set (make-local-variable 'comment-nested) t)
 
   (set (make-local-variable 'compile-command)
        (until-closed-helper (+ level 1)))
        ((= level 0)
        (current-indentation))
+       ((and
+        (string= (match-string 0) "with")
+        (save-excursion
+          (backward-char)
+          (looking-at "\\s-")))
+       (until-closed-helper level))
        (t
        (until-closed-helper (- level 1))))
 
     (back-to-indentation)
     (multiple-value-bind (previous-keyword base-indent)
         (save-excursion
-          (if (re-search-backward "\\_<\\(with\\|where\\|begin\\|end\\|let\\|in\\|val\\|type\\|if\\)\\_>"
+          (if (re-search-backward "\\_<\\(with\\|where\\|begin\\|end\\|let\\|in\\|val\\|type\\|if\\)\\_>\\|}}\\|{{"
                                   nil t)
               (values (match-string 0) (current-indentation))
             (values nil 0)))
           'noindent)
          ((nth 4 state)
           (domtool-calculate-comment-indent state))
+        ((looking-at "{{\\|\\_<\\(extern\\|val\\|type\\|context\\)\\_>")
+         0)
          ((looking-at "\\_<\\(with\\|end\\|in\\|else\\)\\_>")
           (until-closed))
          ((not previous-keyword)
           base-indent)
          ((string= previous-keyword "end")
           base-indent)
+         ((looking-at "\\_<\\(val\\|extern\\|context\\)\\_>")
+          base-indent)
          (t
           (+ base-indent domtool-indent)))))))