Function: toml-ts-mode

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

Signature

(toml-ts-mode)

Documentation

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

In addition to any hooks its parent mode text-mode might have run, this mode runs the hook toml-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/textmodes/toml-ts-mode.el.gz
;;;###autoload
(define-derived-mode toml-ts-mode text-mode "TOML"
  "Major mode for editing TOML, powered by tree-sitter."
  :group 'toml-mode
  :syntax-table toml-ts-mode--syntax-table

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

    ;; Comments
    (setq-local comment-start "# ")
    (setq-local comment-end "")

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

    ;; Navigation.
    (setq-local treesit-defun-type-regexp
                (rx (or "table" "table_array_element")))
    (setq-local treesit-defun-name-function #'toml-ts-mode--defun-name)
    (setq-local treesit-thing-settings
                `((toml
                   (list
                    ,(rx bos (or "array" "inline_table") eos))
                   (sentence
                    ,(rx bos (or "pair") eos))
                   (text
                    ,(rx bos (or "comment") eos)))))

    ;; Font-lock.
    (setq-local treesit-font-lock-settings toml-ts-mode--font-lock-settings)
    (setq-local treesit-font-lock-feature-list toml-ts-mode--font-lock-feature-list)

    ;; Imenu.
    (setq-local treesit-simple-imenu-settings
                '(("Header" "\\`table\\'" nil nil)
                  ("Array" "\\`table_array_element\\'" nil nil)))

    (treesit-major-mode-setup)))