mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
feat(dart): add treesit support
This does not port over the keybinds to dart-ts-mode. Those will be done separately.
This commit is contained in:
@ -23,9 +23,13 @@ This module wraps ~dart-mode~, with [[https://microsoft.github.io/language-serve
|
|||||||
- +lsp ::
|
- +lsp ::
|
||||||
Enable LSP support for ~dart-mode~. Requires [[doom-module::tools lsp]] and a langserver
|
Enable LSP support for ~dart-mode~. Requires [[doom-module::tools lsp]] and a langserver
|
||||||
(supports flutter).
|
(supports flutter).
|
||||||
|
- +tree-sitter ::
|
||||||
|
Leverages tree-sitter for better syntax highlighting and structural text
|
||||||
|
editing. Requires [[doom-module::tools tree-sitter]].
|
||||||
|
|
||||||
** Packages
|
** Packages
|
||||||
- [[doom-package:dart-mode]]
|
- [[doom-package:dart-mode]]
|
||||||
|
- [[doom-package:dart-ts-mode]] if [[doom-module:+tree-sitter]]
|
||||||
- [[doom-package:flutter.el]]
|
- [[doom-package:flutter.el]]
|
||||||
- [[doom-package:hover.el]]
|
- [[doom-package:hover.el]]
|
||||||
|
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
;;; lang/dart/config.el -*- lexical-binding: t; -*-
|
;;; lang/dart/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
(use-package! dart-mode
|
(defun +dart-common-config (mode)
|
||||||
:hook (dart-mode . rainbow-delimiters-mode)
|
(set-ligatures! mode
|
||||||
:config
|
|
||||||
(when (modulep! +lsp)
|
|
||||||
(add-hook 'dart-mode-local-vars-hook #'lsp! 'append))
|
|
||||||
(set-ligatures! '(dart-mode)
|
|
||||||
;; Functional
|
;; Functional
|
||||||
:def "Function"
|
:def "Function"
|
||||||
:lambda "() =>"
|
:lambda "() =>"
|
||||||
@ -23,7 +19,25 @@
|
|||||||
:for "for"
|
:for "for"
|
||||||
:return "return"
|
:return "return"
|
||||||
;; Other
|
;; Other
|
||||||
:yield "yield"))
|
:yield "yield")
|
||||||
|
|
||||||
|
(when (modulep! +lsp)
|
||||||
|
(add-hook (intern (format "%s-local-vars-hook" mode)) #'lsp! 'append)))
|
||||||
|
|
||||||
|
(use-package! dart-mode
|
||||||
|
:hook (dart-mode . rainbow-delimiters-mode)
|
||||||
|
:config
|
||||||
|
(+dart-common-config 'dart-mode))
|
||||||
|
|
||||||
|
|
||||||
|
(use-package! dart-ts-mode
|
||||||
|
:when (modulep! +tree-sitter)
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(set-tree-sitter! 'dart-mode 'dart-ts-mode
|
||||||
|
'((dart :url "https://github.com/ast-grep/tree-sitter-dart")))
|
||||||
|
:config
|
||||||
|
(+dart-common-config 'dart-ts-mode))
|
||||||
|
|
||||||
|
|
||||||
(use-package! flutter
|
(use-package! flutter
|
||||||
|
@ -4,5 +4,9 @@
|
|||||||
(modulep! :tools lsp))
|
(modulep! :tools lsp))
|
||||||
"This module requires (:tools lsp)")
|
"This module requires (:tools lsp)")
|
||||||
|
|
||||||
|
(assert! (or (not (modulep! +tree-sitter))
|
||||||
|
(modulep! :tools tree-sitter))
|
||||||
|
"This module requires (:tools tree-sitter)")
|
||||||
|
|
||||||
(unless (executable-find "dart")
|
(unless (executable-find "dart")
|
||||||
(warn! "Dart isn't on PATH."))
|
(warn! "Dart isn't on PATH."))
|
||||||
|
@ -3,6 +3,12 @@
|
|||||||
|
|
||||||
(package! dart-mode :pin "f82ff052309125b93d19bdd3f619266f908f43ce")
|
(package! dart-mode :pin "f82ff052309125b93d19bdd3f619266f908f43ce")
|
||||||
|
|
||||||
|
(when (modulep! +tree-sitter)
|
||||||
|
(package! dart-ts-mode
|
||||||
|
:recipe (:host github
|
||||||
|
:repo "50ways2sayhard/dart-ts-mode")
|
||||||
|
:pin "ab87873f25f7e0cc8d22daa2501aae141dbe98ad"))
|
||||||
|
|
||||||
(when (and (modulep! +lsp)
|
(when (and (modulep! +lsp)
|
||||||
(modulep! :tools lsp -eglot))
|
(modulep! :tools lsp -eglot))
|
||||||
(package! lsp-dart :pin "34e2a1191f723792d5f366b314cd6b07de4f1566"))
|
(package! lsp-dart :pin "34e2a1191f723792d5f366b314cd6b07de4f1566"))
|
||||||
|
Reference in New Issue
Block a user