changeset 72799:ff69721bef4a

(cfengine-font-lock-syntactic-keywords): New var. (cfengine-mode): Use it. Fix \ syntax to be like /.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 11 Sep 2006 07:12:37 +0000
parents 6e061fdbf037
children cd552bf3f6a7
files lisp/ChangeLog lisp/progmodes/cfengine.el
diffstat 2 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Sep 11 07:11:21 2006 +0000
+++ b/lisp/ChangeLog	Mon Sep 11 07:12:37 2006 +0000
@@ -1,5 +1,8 @@
 2006-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords): New var.
+	(cfengine-mode): Use it.  Fix \ syntax to be like /.
+
 	* bindings.el (mode-line-buffer-identification-keymap):
 	Move initialization into declaration.
 
--- a/lisp/progmodes/cfengine.el	Mon Sep 11 07:11:21 2006 +0000
+++ b/lisp/progmodes/cfengine.el	Mon Sep 11 07:12:37 2006 +0000
@@ -85,6 +85,12 @@
     ;; File, acl &c in group:   { token ... }
     ("{[ \t]*\\([^ \t\n]+\\)" 1 font-lock-constant-face)))
 
+(defconst cfengine-font-lock-syntactic-keywords
+  ;; In the main syntax-table, backslash is marked as a punctuation, because
+  ;; of its use in DOS-style directory separators.  Here we try to recognize
+  ;; the cases where backslash is used as an escape inside strings.
+  '(("\\(\\(?:\\\\\\)+\\)\"" . "\\")))
+
 (defvar cfengine-imenu-expression
   `((nil ,(concat "^[ \t]*" (eval-when-compile
 			      (regexp-opt cfengine-actions t))
@@ -218,7 +224,7 @@
   ;; variable substitution:
   (modify-syntax-entry ?$ "." cfengine-mode-syntax-table)
   ;; Doze path separators:
-  (modify-syntax-entry ?\\ "_" cfengine-mode-syntax-table)
+  (modify-syntax-entry ?\\ "." cfengine-mode-syntax-table)
   ;; Otherwise, syntax defaults seem OK to give reasonable word
   ;; movement.
 
@@ -237,7 +243,9 @@
   ;; functions in evaluated classes to string syntax, and then obey
   ;; syntax properties.
   (setq font-lock-defaults
-	'(cfengine-font-lock-keywords nil nil nil beginning-of-line))
+	'(cfengine-font-lock-keywords nil nil nil beginning-of-line
+          (font-lock-syntactic-keywords
+           . cfengine-font-lock-syntactic-keywords)))
   (setq imenu-generic-expression cfengine-imenu-expression)
   (set (make-local-variable 'beginning-of-defun-function)
        #'cfengine-beginning-of-defun)
@@ -249,5 +257,5 @@
 
 (provide 'cfengine)
 
-;;; arch-tag: 6b931be2-1505-4124-afa6-9675971e26d4
+;; arch-tag: 6b931be2-1505-4124-afa6-9675971e26d4
 ;;; cfengine.el ends here