File: cfengine.el.html

Provides support for editing GNU CFEngine files, including font-locking, Imenu and indentation, but with no special keybindings.

By default, CFEngine 3.x syntax is used.

You can set it up so either cfengine2-mode (2.x and earlier) or cfengine3-mode (3.x) will be picked, depending on the buffer contents:

(add-to-list 'auto-mode-alist '("\\\\.cf\\\\'" . cfengine-auto-mode))

OR you can choose to always use a specific version, if you prefer it:

(add-to-list 'auto-mode-alist '("\\\\.cf\\\\'" . cfengine3-mode))
(add-to-list 'auto-mode-alist '("^cf\\\\." . cfengine2-mode))
(add-to-list 'auto-mode-alist '("^cfagent.conf\\\\'" . cfengine2-mode))

It's *highly* recommended that you enable the eldoc minor mode:

(add-hook 'cfengine3-mode-hook 'eldoc-mode)

You may also find the command cfengine3-reformat-json-string useful, just bind it to a key you prefer. It will take the current string and reformat it as JSON. So if you're editing JSON inside the policy, it's a quick way to make it more legible without manually reindenting it. For instance:

(global-set-key [(control f4)] 'cfengine3-reformat-json-string)

This is not the same as the mode written by Rolf Ebert
<ebert@waporo.muc.de>, distributed with cfengine-2.0.5. It does
better fontification and indentation, inter alia.

Defined variables (20)

cfengine-cf-promisesThe location of the cf-promises executable.
cfengine-indentSize of a CFEngine indentation step in columns.
cfengine-mode-debugWhether ‘cfengine-mode’ should print debugging info.
cfengine-mode-syntax-cacheCache for ‘cfengine-mode’ syntax trees obtained from ‘cf-promises -s json’.
cfengine-parameters-indentIndentation of CFEngine3 promise parameters (hanging indent).
cfengine2-actionsList of the action keywords supported by Cfengine.
cfengine2-imenu-expression‘imenu-generic-expression’ for CFEngine mode.
cfengine2-mode-abbrev-tableAbbrev table for ‘cfengine2-mode’.
cfengine2-mode-hookHook run after entering CFE2 mode.
cfengine2-mode-mapKeymap for ‘cfengine2-mode’.
cfengine2-mode-syntax-tableSyntax table for ‘cfengine2-mode’.
cfengine3-defun-full-reRegexp matching full defun declaration (excluding argument list).
cfengine3-defunsList of the CFEngine 3.x defun headings.
cfengine3-defuns-regexRegex to match the CFEngine 3.x defuns.
cfengine3-fallback-syntaxFallback CFEngine syntax, containing just function definitions.
cfengine3-mode-abbrev-tableAbbrev table for ‘cfengine3-mode’.
cfengine3-mode-hookHook run after entering CFE3 mode.
cfengine3-mode-mapKeymap for ‘cfengine3-mode’.
cfengine3-mode-syntax-tableSyntax table for ‘cfengine3-mode’.
cfengine3-vartypesList of the CFEngine 3.x variable types.

Defined functions (22)

cfengine-auto-mode()
cfengine-common-syntax(TABLE)
cfengine-fill-paragraph(&optional JUSTIFY)
cfengine-mode()
cfengine2-beginning-of-defun()
cfengine2-end-of-defun()
cfengine2-indent-line()
cfengine2-mode()
cfengine2-outline-level()
cfengine3--current-function()
cfengine3-beginning-of-defun()
cfengine3-clear-syntax-cache()
cfengine3-completion-function()
cfengine3-create-imenu-index()
cfengine3-current-defun()
cfengine3-documentation-function(&rest IGNORED)
cfengine3-end-of-defun()
cfengine3-format-function-docstring(FDEF)
cfengine3-indent-line()
cfengine3-make-syntax-cache()
cfengine3-mode()
cfengine3-reformat-json-string()

Defined faces (0)