Forgot that `ob-dot.el` exists in Org. I blindly expected the `graphviz-dot-mode` package to provide babel support inf6b7e8a
. Also, `org-src-lang-modes` expects its CDRs to omit the -mode suffix, which should fix syntax highlighting of graphviz/dot babel blocks. Amend:f6b7e8ae48
Ref: #7546
37 lines
1.5 KiB
EmacsLisp
37 lines
1.5 KiB
EmacsLisp
;;; lang/graphviz/config.el -*- lexical-binding: t; -*-
|
|
|
|
(use-package! graphviz-dot-mode
|
|
:mode "\\.\\(?:nw\\|rack\\)diag\\'"
|
|
:init
|
|
(after! org-src
|
|
(add-to-list 'org-src-lang-modes '("dot" . graphviz-dot)))
|
|
:config
|
|
(set-company-backend! 'graphviz-dot-mode 'company-graphviz-dot-backend)
|
|
(set-formatter! 'graphviz-dot #'+graphviz-formatter :modes '(graphviz-dot-mode))
|
|
(set-tree-sitter-lang! 'graphviz-dot-mode 'dot)
|
|
|
|
(when (modulep! +tree-sitter)
|
|
(add-hook 'graphiz-dot-mode-hook #'tree-sitter!))
|
|
|
|
(after! dtrt-indent
|
|
(add-to-list 'dtrt-indent-hook-mapping-list '(graphviz-mode graphviz-dot-indent-width)))
|
|
|
|
(when (and (modulep! :checker syntax)
|
|
(not (modulep! :checker syntax +flymake)))
|
|
(after! flycheck
|
|
(flycheck-define-checker graphviz-dot
|
|
"A checker using graphviz dot."
|
|
:command ("dot")
|
|
:standard-input t
|
|
:error-patterns ((error line-start "Error: <stdin>: " (message "syntax error in line " line (* nonl)))
|
|
;; I have no idea if this can actually be printed
|
|
(error line-start "Error: <stdin>: " (message)))
|
|
:modes graphviz-dot-mode)
|
|
(add-to-list 'flycheck-checkers 'graphviz-dot)))
|
|
|
|
(map! :map graphviz-dot-mode-map
|
|
:localleader
|
|
:desc "External view" :nv "e" #'graphviz-dot-view
|
|
:desc "Preview" :nv "p" #'graphviz-dot-preview
|
|
:prefix ("t" . "toggle")
|
|
:desc "Preview" :nv "p" #'+graphviz/toggle-preview))
|