branch: scratch/editorconfig-cc
commit 044453e7ac857b08001b86df0be9773b690c1ffc
Author: 10sr <8slashes+...@gmail.com>
Commit: Stefan Monnier <monn...@iro.umontreal.ca>

    Add editorconfig-conf-mode
    
    A major-mode for editing .editorconfig file.
---
 editorconfig.el | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/editorconfig.el b/editorconfig.el
index 3972539ee1..7d9ea968cd 100644
--- a/editorconfig.el
+++ b/editorconfig.el
@@ -39,6 +39,8 @@
 
 ;;; Code:
 
+(require 'conf-mode)
+
 (declare-function editorconfig-core-get-properties-hash
   "editorconfig-core"
   nil)
@@ -278,7 +280,40 @@ It calls `editorconfig-get-properties-from-exec' if
       (add-hook hook 'editorconfig-apply)
       (remove-hook hook 'editorconfig-apply))))
 
+
+
+;;;###autoload
+(define-derived-mode editorconfig-conf-mode conf-mode "EditorConfig"
+  "Major mode for editing .editorconfig files."
+  (set-variable 'indent-line-function 'indent-relative)
+  (conf-mode-initialize
+    "#"
+    `(
+       ("^#.*\\|^;.*\\| #.*\\| ;.*" 0 font-lock-comment-face)
+       ("^[ \t]*\\(root\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(indent_style\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(indent_size\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(tab_width\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(end_of_line\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(charset\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(trim_trailing_whitespace\\)[ \t]*[=:]" 1 
font-lock-builtin-face)
+       ("^[ \t]*\\(insert_final_newline\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+       ("^[ \t]*\\(max_line_length\\)[ \t]*[=:]" 1 font-lock-builtin-face)
+
+       ("[=:][ \t]*\\(true\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+       ("[=:][ \t]*\\(false\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+       ("[=:][ \t]*\\(lf\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+       ("[=:][ \t]*\\(cr\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+       ("[=:][ \t]*\\(crlf\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+       ("[=:][ \t]*\\(space\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+       ("[=:][ \t]*\\(tab\\)\\([ \t]\\|$\\)" 1 font-lock-constant-face)
+
+       ("^[ \t]*\\[\\(.+?\\)\\]" 1 'font-lock-type-face)
+       ("^[ \t]*\\(.+?\\)[ \t]*[=:]" 1 'font-lock-variable-name-face)
+       )))
+
 ;;;###autoload
-(add-to-list 'auto-mode-alist '("/\\.editorconfig\\'" . conf-unix-mode))
+(add-to-list 'auto-mode-alist
+  '("/\\.editorconfig\\'" . editorconfig-conf-mode))
 
 (provide 'editorconfig)

Reply via email to