]> code.delx.au - gnu-emacs/blobdiff - lisp/generic-x.el
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
[gnu-emacs] / lisp / generic-x.el
index c14700b9a1e861d4e52cd59ab48f0130253a6ab8..1e3a6e183b426b6a45d75f45ced78991d96cfcf2 100644 (file)
@@ -1,6 +1,6 @@
 ;;; generic-x.el --- A collection of generic modes
 
-;; Copyright (C) 1997-1998, 2001-2014 Free Software Foundation, Inc.
+;; Copyright (C) 1997-1998, 2001-2016 Free Software Foundation, Inc.
 
 ;; Author:  Peter Breton <pbreton@cs.umb.edu>
 ;; Created: Tue Oct 08 1996
@@ -62,7 +62,7 @@
 ;; Folding mode should use invisible text properties instead.  -- Dave
 ;; Love]
 ;;
-;; From Anders Lindgren <andersl@csd.uu.se>
+;; From Anders Lindgren
 ;;
 ;; Problem summary: Wayne Adams has found a problem when using folding
 ;; mode in conjunction with font-lock for a mode defined in
@@ -215,6 +215,7 @@ This hook will be installed if the variable
 
 (defconst generic-unix-modes
   '(alias-generic-mode
+    ansible-inventory-generic-mode
     etc-fstab-generic-mode
     etc-modules-conf-generic-mode
     etc-passwd-generic-mode
@@ -646,6 +647,30 @@ like an INI file.  You can add this hook to `find-file-hook'."
            '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2))))))
   "Generic mode for C Shell alias files."))
 
+;; Ansible inventory files
+(when (memq 'ansible-inventory-generic-mode generic-extras-enable-list)
+
+(define-generic-mode ansible-inventory-generic-mode
+  '(?#)
+  nil
+  '(("^\\s-*\\(\\[.*\\]\\)" 1 font-lock-constant-face)
+    ("^\\s-*\\([^ \n\r]*\\)" 1 font-lock-function-name-face)
+    ;; Variable assignments must be x=y, so highlight as warning if
+    ;; the value is missing.
+    ("\\s-\\([^ =\n\r]+\\)[\n\r ]" 1 font-lock-warning-face)
+    ;; Variable assignments: x=y
+    ("\\([^ =\n\r]+\\)=\\([^ \n\r]*\\)"
+     (1 font-lock-variable-name-face)
+     (2 font-lock-keyword-face)))
+  '("inventory")
+  (list
+   (function
+    (lambda ()
+      (setq imenu-generic-expression
+           '((nil "^\\s-*\\[\\(.*\\)\\]" 1)
+             ("*Variables*" "\\s-+\\([^ =\n\r]+\\)=" 1))))))
+  "Generic mode for Ansible inventory files."))
+
 ;;; Windows RC files
 ;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira)
 (when (memq 'rc-generic-mode generic-extras-enable-list)
@@ -1315,7 +1340,7 @@ like an INI file.  You can add this hook to `find-file-hook'."
 ;;;    comment-start-skip           ""
        )
   ;; (set-syntax-table rul-generic-mode-syntax-table)
-  (setq font-lock-syntax-table rul-generic-mode-syntax-table))
+  (setq-local font-lock-syntax-table rul-generic-mode-syntax-table))
 
 ;; moved mode-definition behind defun-definition to be warning-free - 15.11.02/RSan
 (define-generic-mode rul-generic-mode