Function: combobulate-query-mode
combobulate-query-mode is a natively compiled function defined in
combobulate-query.el.
Signature
(combobulate-query-mode)
Documentation
Major mode for interactively constructing tree-sitter queries.
To use, call M-x combobulate-query-builder (combobulate-query-builder).
In addition to any hooks its parent mode prog-mode might have run,
this mode runs the hook combobulate-query-mode-hook, as the final or
penultimate step during initialization.
Source Code
;; Defined in /nix/store/b5fvrwzi3zvkabyzx0in6gw1cj963z46-emacs-packages-deps/share/emacs/site-lisp/combobulate-query.el
(define-derived-mode combobulate-query-mode prog-mode "Combobulate Query Builder"
"Major mode for interactively constructing tree-sitter queries.
To use, call \\[combobulate-query-builder]."
:syntax-table combobulate-query-syntax-table
:interactive nil
:group 'combobulate
:abbrev-table scheme-mode-abbrev-table
(let ((parser-lang-name (combobulate-parser-language combobulate-query-builder-parser)))
(setq combobulate-query-builder-rules (combobulate-production-rules-get-rules parser-lang-name))
(setq combobulate-query-builder-rule-names (combobulate-production-rules-get-types parser-lang-name))
(setq combobulate-query-builder-field-names
(mapcar #'combobulate-query-builder-prop-name-to-field-name
(seq-remove (lambda (prop) (equal prop :*unnamed*))
(seq-uniq (mapcan #'map-keys (mapcar #'cadr (combobulate-production-rules-get-rules parser-lang-name)))))))
(setq-local comment-start ";"
comment-end "")
(setq-local completion-at-point-functions '(combobulate-query-builder-completion-at-point-function))
(combobulate-query-builder-update-header "Ready")
(setq-local combobulate-query-builder-font-lock-keywords
;; all the various supported rule names
`((,(regexp-opt combobulate-query-builder-rule-names)
. 'combobulate-query-query-constant-face)
;; `field:' names
(,(regexp-opt
combobulate-query-builder-field-names)
. 'combobulate-query-query-keyword-face)
,@combobulate-query-match-face-alist
;; @match capturing groups
("#\\([a-zA-Z0-9-_?]+\\)" . 'combobulate-query-query-builtin-face)
;; #predicates
("#\\([a-zA-Z0-9-_?]+\\)" . 'combobulate-query-query-predicate-builtin-face)
;; misc. quantifiers and operators
("\\([?!+*]\\)" . 'combobulate-query-query-doc-markup-face)
;; match `.' anchors
("\\Sw<\\([.]\\)\\Sw" . 'combobulate-query-query-constant-face)
;; strings
("\"\\([^\"]*\\)\"" . 'combobulate-query-query-string-face)
;; anonymous named and unnamed nodes
("\\((_)\\)\\|\\(\s-+_\s-+\\)" . 'combobulate-query-query-anonymous-face)))
(setq-local font-lock-defaults '(combobulate-query-builder-font-lock-keywords t))))