Function: dockerfile-ts-mode

dockerfile-ts-mode is an autoloaded, interactive and byte-compiled function defined in dockerfile-ts-mode.el.gz.

Signature

(dockerfile-ts-mode)

Documentation

Major mode for editing Dockerfiles, powered by tree-sitter.

In addition to any hooks its parent mode prog-mode might have run, this mode runs the hook dockerfile-ts-mode-hook, as the final or penultimate step during initialization.

Probably introduced at or before Emacs version 29.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/dockerfile-ts-mode.el.gz
;;;###autoload
(define-derived-mode dockerfile-ts-mode prog-mode "Dockerfile"
  "Major mode for editing Dockerfiles, powered by tree-sitter."
  :group 'dockerfile
  :syntax-table dockerfile-ts-mode--syntax-table

  ;; `treesit-ready-p' also checks for buffer size.
  (when (and (treesit-ensure-installed 'dockerfile)
             (treesit-ready-p 'dockerfile))
    (setq treesit-primary-parser (treesit-parser-create 'dockerfile))

    ;; Comments.
    (setq-local comment-start "# ")
    (setq-local comment-end "")
    (setq-local comment-start-skip (rx "#" (* (syntax whitespace))))

    ;; Imenu.
    (setq-local treesit-simple-imenu-settings
                `(("Stage" "\\`from_instruction\\'" nil dockerfile-ts-mode--stage-name)))
    (setq-local which-func-functions nil)

    ;; Indent.
    (setq-local treesit-simple-indent-rules
                dockerfile-ts-mode--indent-rules)

    ;; Navigation
    (setq-local treesit-thing-settings
                `((dockerfile
                   (sentence "instruction"))))

    ;; Font-lock.
    (setq-local treesit-font-lock-settings
                dockerfile-ts-mode--font-lock-settings)
    (setq-local treesit-font-lock-feature-list
                '((comment)
                  (keyword string string-expansion identifiers)
                  (image-spec number)
                  (bracket delimiter error operator)))

    (treesit-major-mode-setup)))