Add: CFEngine config-files layer
This commit is contained in:
parent
14d3529ae2
commit
dcc3f2d5d9
118
layers/+config-files/cfengine/README.org
Normal file
118
layers/+config-files/cfengine/README.org
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
#+TITLE: CFEngine layer
|
||||||
|
#+HTML_HEAD_EXTRA: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css" />
|
||||||
|
|
||||||
|
#+CAPTION: logo
|
||||||
|
# The maximum height of the logo should be 200 pixels.
|
||||||
|
[[file:./img/agent.png]]
|
||||||
|
|
||||||
|
* Table of Contents :TOC_4_org:noexport:
|
||||||
|
- [[Description][Description]]
|
||||||
|
- [[Install & Configuration][Install & Configuration]]
|
||||||
|
- [[Key bindings][Key bindings]]
|
||||||
|
|
||||||
|
* Description
|
||||||
|
This layer makes working with CFEngine policy easier:
|
||||||
|
- Syntax highlighting
|
||||||
|
- On the fly syntax checks
|
||||||
|
- Auto completion
|
||||||
|
|
||||||
|
* Install & Configuration
|
||||||
|
|
||||||
|
Add =cfengine= to the =dotspacemacs-configuration-layers= in your =~/.spacemacs=
|
||||||
|
to use this layer.
|
||||||
|
|
||||||
|
For working with CFEngine policy I highly recommend the =syntax-checking=, and
|
||||||
|
=auto-completion= layers.
|
||||||
|
|
||||||
|
Here is an example:
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defun dotspacemacs/layers ()
|
||||||
|
"Configuration Layers declaration.
|
||||||
|
You should not put any user code in this function besides modifying the variable
|
||||||
|
values."
|
||||||
|
(setq-default
|
||||||
|
dotspacemacs-configuration-layers
|
||||||
|
'(
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; Example of useful layers you may want to use right away.
|
||||||
|
;; Uncomment some layer names and press <SPC f e R> (Vim style) or
|
||||||
|
;; <M-m f e R> (Emacs style) to install them.
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; CFEngine Related Layers
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
cfengine
|
||||||
|
syntax-checking
|
||||||
|
auto-completion
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; Other Userful Layers
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
git
|
||||||
|
github
|
||||||
|
markdown
|
||||||
|
org
|
||||||
|
spell-checking
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Delete whitespace while saving buffer. Possible values are `all'
|
||||||
|
;; to aggressively delete empty line and long sequences of whitespace,
|
||||||
|
;; `trailing' to delete only the whitespace at end of lines, `changed'to
|
||||||
|
;; delete only whitespace for changed lines or `nil' to disable cleanup.
|
||||||
|
;; (default nil)
|
||||||
|
;;
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; This is conservative, if you want to cleanup traling whitespace
|
||||||
|
;; left by the efforts from others consider setting it to `trailing'.
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
dotspacemacs-whitespace-cleanup 'changed
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------)
|
||||||
|
|
||||||
|
(defun dotspacemacs/user-config ()
|
||||||
|
"Configuration function for user code.
|
||||||
|
This function is called at the very end of Spacemacs initialization after
|
||||||
|
layers configuration. You are free to put any user code."
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; Enable line numbering for CFEngine policy files
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
(add-hook 'cfengine3-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(linum-mode 1)))
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
;; "Easy template" for quickly inserting cfengine3 code blocks in
|
||||||
|
;; org-mode. Simply type =<cfe= and then press TAB
|
||||||
|
;; ----------------------------------------------------------------
|
||||||
|
(eval-after-load 'org
|
||||||
|
'(progn
|
||||||
|
(add-to-list 'org-structure-template-alist
|
||||||
|
'("cfe" "#+begin_src cfengine3\n?\n#+end_src"))))
|
||||||
|
|
||||||
|
;; ----------------------------------------------------------------)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Use =M-x customize-group RET cfengine= to customize CFEngine Mode.
|
||||||
|
|
||||||
|
If you like attributes to be intended from the promiser set =Indentation amount
|
||||||
|
from anchor= to =2=. For example:
|
||||||
|
|
||||||
|
#+begin_src cfengine3
|
||||||
|
bundle agent main
|
||||||
|
{
|
||||||
|
vars:
|
||||||
|
|
||||||
|
"promiser"
|
||||||
|
string => "value",
|
||||||
|
comment => "Indented 2 spaces from promiser";
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Key bindings
|
||||||
|
|
||||||
|
| Key Binding | Description |
|
||||||
|
|-------------+-----------------------|
|
||||||
|
| ~<SPC> m j~ | Reformats JSON string |
|
15
layers/+config-files/cfengine/config.el
Normal file
15
layers/+config-files/cfengine/config.el
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
;; Figure out which cfengine mode (cfengine2 or cfengine3) to use for =.cf=
|
||||||
|
;; files based on file content.
|
||||||
|
;; (add-to-list 'auto-mode-alist '("\\.cf\\'" . cfengine-auto-mode))
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.cf\\'" . cfengine3-mode))
|
||||||
|
|
||||||
|
;; Perhaps we should bind this to something some day.
|
||||||
|
;; (global-set-key [(control f4)] 'cfengine3-reformat-json-string)
|
||||||
|
|
||||||
|
;; Enable eldoc-mode for cfengine
|
||||||
|
;; This puts function prototypes into the minibuffer when hovering
|
||||||
|
;; over the function.
|
||||||
|
(add-hook 'cfengine3-mode-hook 'eldoc-mode)
|
||||||
|
|
||||||
|
;; Enable auto completion for cfengine
|
||||||
|
(spacemacs|defvar-company-backends cfengine3-mode)
|
BIN
layers/+config-files/cfengine/img/agent.png
Normal file
BIN
layers/+config-files/cfengine/img/agent.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.8 KiB |
47
layers/+config-files/cfengine/packages.el
Normal file
47
layers/+config-files/cfengine/packages.el
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
;;; packages.el --- cfengine layer packages file for Spacemacs.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
|
||||||
|
;;
|
||||||
|
;; Author: Nick Anderson <nick@cmdln.org>
|
||||||
|
;; URL: https://github.com/syl20bnr/spacemacs
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;;; License: GPLv3
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; See the Spacemacs documentation and FAQs for instructions on how to implement
|
||||||
|
;; a new layer:
|
||||||
|
;;
|
||||||
|
;; SPC h SPC layers RET
|
||||||
|
;;
|
||||||
|
;;
|
||||||
|
;; Briefly, each package to be installed or configured by this layer should be
|
||||||
|
;; added to `cfengine-packages'. Then, for each package PACKAGE:
|
||||||
|
;;
|
||||||
|
;; - If PACKAGE is not referenced by any other Spacemacs layer, define a
|
||||||
|
;; function `cfengine/init-PACKAGE' to load and initialize the package.
|
||||||
|
|
||||||
|
;; - Otherwise, PACKAGE is already referenced by another Spacemacs layer, so
|
||||||
|
;; define the functions `cfengine/pre-init-PACKAGE' and/or
|
||||||
|
;; `cfengine/post-init-PACKAGE' to customize the package as it is loaded.
|
||||||
|
|
||||||
|
(setq cfengine-packages
|
||||||
|
'(
|
||||||
|
flycheck
|
||||||
|
company))
|
||||||
|
;; cfengine3-mode is included in emacs itself.
|
||||||
|
|
||||||
|
(defun cfengine/init-cfengine()
|
||||||
|
(use-package cfengine3-mode
|
||||||
|
:init
|
||||||
|
(progn
|
||||||
|
(spacemacs/set-leader-keys-for-major-mode 'cfengine3-mode
|
||||||
|
"j" 'cfengine3-reformat-json-string))))
|
||||||
|
|
||||||
|
(defun cfengine/post-init-company ()
|
||||||
|
(spacemacs|add-company-hook cfengine3-mode))
|
||||||
|
|
||||||
|
(defun cfengine/post-init-flycheck ()
|
||||||
|
(spacemacs/add-flycheck-hook 'cfengine3-mode-hook))
|
Loading…
Reference in a new issue