[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cfengine-mode fails to colorize escaped double-quoted
From: |
Stefan Monnier |
Subject: |
Re: cfengine-mode fails to colorize escaped double-quoted |
Date: |
Fri, 08 Sep 2006 12:00:31 -0400 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) |
>> cfengine-mode fails to colorize escaped double-quoted
>>
>> Here's the smallest file I can reproduce the bug with:
>>
>> # -*- mode: cfengine -*-
>>
>> editfiles:
>> { /etc/lilo.conf
>> InsertLine "append=\"ip=dhcp\""
>> }
> It's because of the following line in `cfengine-mode'. I don't know
> Cfengine, so if someone could propose a fix, that would be nice.
> ;; Doze path separators:
> (modify-syntax-entry ?\\ "_" cfengine-mode-syntax-table)
Maybe the patch below is a solution?
Stefan
--- cfengine.el 23 fév 2006 11:34:11 -0500 1.9
+++ cfengine.el 08 sep 2006 11:59:44 -0400
@@ -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