mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
feat(zig): add treesit support
This commit is contained in:
@ -22,10 +22,11 @@ This module adds [[https://ziglang.org/][Zig]] support, with optional (but recom
|
|||||||
this.
|
this.
|
||||||
- +tree-sitter ::
|
- +tree-sitter ::
|
||||||
Leverages tree-sitter for better syntax highlighting and structural text
|
Leverages tree-sitter for better syntax highlighting and structural text
|
||||||
editing. Requires [[doom-module::tools tree-sitter]].
|
editing. Requires Emacs 29.1+ and [[doom-module::tools tree-sitter]].
|
||||||
|
|
||||||
** Packages
|
** Packages
|
||||||
- [[doom-package:zig-mode]]
|
- [[doom-package:zig-mode]]
|
||||||
|
- [[doom-package:zig-ts-mode]] if [[doom-module:+tree-sitter]]
|
||||||
|
|
||||||
** Hacks
|
** Hacks
|
||||||
/No hacks documented for this module./
|
/No hacks documented for this module./
|
||||||
|
@ -8,30 +8,46 @@
|
|||||||
;;
|
;;
|
||||||
;;; Packages
|
;;; Packages
|
||||||
|
|
||||||
(use-package! zig-mode
|
(defun +zig-common-config (mode)
|
||||||
:hook (zig-mode . rainbow-delimiters-mode)
|
|
||||||
:config
|
|
||||||
(setq zig-format-on-save nil) ; rely on :editor format instead
|
|
||||||
|
|
||||||
(when (modulep! +lsp)
|
(when (modulep! +lsp)
|
||||||
(add-hook 'zig-mode-local-vars-hook #'lsp! 'append))
|
(add-hook (intern (format "%s-local-vars-hook" mode)) #'lsp! 'append))
|
||||||
|
(map! :localleader
|
||||||
|
:map ,(symbol-value (intern (format "%s-map" mode)))
|
||||||
|
"b" #'zig-compile
|
||||||
|
"f" #'zig-format-buffer
|
||||||
|
"r" #'zig-run
|
||||||
|
"t" #'zig-test-buffer))
|
||||||
|
|
||||||
(when (modulep! +tree-sitter)
|
|
||||||
(add-hook 'zig-mode-local-vars-hook #'tree-sitter! 'append))
|
|
||||||
|
|
||||||
(when (modulep! :checkers syntax -flymake)
|
(when (modulep! :checkers syntax -flymake)
|
||||||
|
(after! flycheck
|
||||||
(eval '(flycheck-define-checker zig
|
(eval '(flycheck-define-checker zig
|
||||||
"A zig syntax checker using zig's `ast-check` command."
|
"A zig syntax checker using zig's `ast-check` command."
|
||||||
:command ("zig" "ast-check" (eval (buffer-file-name)))
|
:command ("zig" "ast-check" (eval (buffer-file-name)))
|
||||||
:error-patterns
|
:error-patterns
|
||||||
((error line-start (file-name) ":" line ":" column ": error: " (message) line-end))
|
((error line-start (file-name) ":" line ":" column ": error: " (message) line-end))
|
||||||
:modes zig-mode)
|
:modes (zig-mode zig-ts-mode))
|
||||||
t)
|
t)
|
||||||
(add-to-list 'flycheck-checkers 'zig))
|
(add-to-list 'flycheck-checkers 'zig)))
|
||||||
|
|
||||||
(map! :localleader
|
|
||||||
:map zig-mode-map
|
(use-package! zig-mode
|
||||||
"b" #'zig-compile
|
:hook (zig-mode . rainbow-delimiters-mode)
|
||||||
"f" #'zig-format-buffer
|
:config
|
||||||
"r" #'zig-run
|
(setq zig-format-on-save nil) ; rely on :editor format instead
|
||||||
"t" #'zig-test-buffer))
|
(+zig-common-config 'zig-mode))
|
||||||
|
|
||||||
|
|
||||||
|
(use-package! zig-ts-mode
|
||||||
|
:when (modulep! +tree-sitter)
|
||||||
|
:when (fboundp 'zig-ts-mode)
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(set-tree-sitter! 'zig-mode 'zig-ts-mode
|
||||||
|
'((zig :url "https://github.com/tree-sitter/zig-tree-sitter"
|
||||||
|
:rev "v0.25.0")))
|
||||||
|
:config
|
||||||
|
;; HACK: Rely on `major-mode-remap-defaults'
|
||||||
|
(cl-callf2 rassq-delete-all 'zig-ts-mode auto-mode-alist)
|
||||||
|
|
||||||
|
(+zig-common-config 'zig-ts-mode))
|
||||||
|
@ -2,3 +2,7 @@
|
|||||||
;;; lang/zig/packages.el
|
;;; lang/zig/packages.el
|
||||||
|
|
||||||
(package! zig-mode :pin "c46d024733b7c1d6af829bb610fc9629b060bc9e")
|
(package! zig-mode :pin "c46d024733b7c1d6af829bb610fc9629b060bc9e")
|
||||||
|
|
||||||
|
(when (and (modulep! +tree-sitter)
|
||||||
|
(fboundp 'treesit-available-p))
|
||||||
|
(package! zig-ts-mode :pin "3898b70d6f72da688e086323fa2922f1542d1318"))
|
||||||
|
Reference in New Issue
Block a user