Documentation

Commentary

This package uses a Tree-sitter parser to provide syntax highlighting,
indentation, alignment, completion, xref navigation and code checking
for the Puppet domain-specific language.

Syntax highlighting: Fontification is supported using custom faces for
  Puppet syntax elements like comments, strings, variables, constants,
  keywords, resource types and their metaparameters.  Syntax errors can be
  shown using a warning face by setting `treesit-font-lock-level' to 4.
  Some generic syntax elements (comments, strings, numbers,...) use the
  default Emacs faces.  This allows other packages like `flyspell' to
  spell-check comments and strings without any additional setup.

Indentation: Automatic indentation according to the Puppet coding
  standards is provided.

Alignment: Alignment rules for common Puppet expressions are included.
  The function `puppet-ts-align-block' (bound to "C-c C-a") aligns the
  current block with respect to "=>" for attributes and hashes or "=" for
  parameter lists.  The fat arrow and equal sign are electric and they
  perform automatic alignment.  Electricity is controlled by
  `puppet-ts-greater-is-electric' and `puppet-ts-equal-is-electric'.

Completion: The mode updates the `completion-at-point' component to
  complete variable names, resource types and resource parameters.
  Tree-sitter is used to extract the local variable names from the
  current buffer.

Imenu: Navigation to the resource types and variable assignments used in
  a file is implemented using the imenu facility.

Cross-reference navigation: When point is on an identifier for a class,
  defined type, data type or custom function, the definition of that
  element can easily be opened with `xref-find-definitions' (bound to
  "M-.").  The list of directories that will be searched to locate the
  definition is customized in `puppet-ts-module-path'.

Code checking: Validate the syntax of the current buffer with
  `puppet-ts-validate' (bound to "C-c C-v").  Lint the current buffer for
  semantic errors with `puppet-ts-lint' (bound to "C-c C-l").  Apply the
  current buffer in noop-mode with `puppet-ts-apply' (bound to "C-c C-c").

The package uses a Tree-sitter library to parse Puppet code and you need
to install the appropriate parser (which is defined by the constant
`puppet-ts-mode-treesit-language-source').  This can be done by using
this Elisp code:

   (require 'puppet-ts-mode)
   (puppet-ts-mode-install-grammar)

Note that a C compiler is required for this step.  Using the function
provided by the package ensures that a version of the parser matching the
package will be installed.  These commands should also be used to update
the parser to the correct version when the package is updated.

Requires

Dependencies

Consumers

Reverse Dependencies

No reverse dependencies recorded.