#+TITLE: yang layer #+TAGS: dsl|layer|markup|programming * Table of Contents :TOC_5_gh:noexport: - [[#description][Description]] - [[#features][Features:]] - [[#install][Install]] - [[#syntax-checking-with-flycheck][Syntax checking with flycheck]] - [[#configuration][Configuration]] * Description This layer provides support for the YANG file format. ** Features: - Syntax highlighting - Syntax checking via [[http://www.flycheck.org/en/latest/languages.html#yaml][flycheck]] * Install To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =yang= to the existing =dotspacemacs-configuration-layers= list in this file. #+BEGIN_SRC emacs-lisp (setq-default dotspacemacs-configuration-layers '(yang)) #+END_SRC * Syntax checking with flycheck Flycheck is used to check the yang syntax utilizing =pyang= which needs to be installed on your system. Documentation for pyang can be found at the [[https://github.com/mbj4668/pyang][pyang repository]], and can be installed using python packaging mechanisms ** Configuration By default the syntax checking is done according to ~pyang --lint~ which uses rules outlined in RFC 6020. To use a different set of rules set the ~yang-pyang-rules~ variable. The valid values at the time of writing were: - mef Validate the module(s) according to MEF rules. - ietf Validate the module(s) according to IETF rules. - bbf Validate the module(s) according to BBF rules. - ieee Validate the module(s) according to IEEE rules. - lint Validate the module(s) according to RFC 6087 rules. #+BEGIN_SRC emacs-lisp (setq-default dotspacemacs-configuration-layers '((yang :variables yang-pyang-rules "ietf"))) #+END_SRC To allow further customization one can set the ~yang-pyang-extra-args~ variable to a string that will be passed directly to the =pyang= command. #+BEGIN_SRC emacs-lisp (setq-default dotspacemacs-configuration-layers '((yang :variables yang-pyang-extra-args "--max-line-length=69"))) #+END_SRC