diff --git a/modules/lang/qt/README.org b/modules/lang/qt/README.org index 2470b3b5d..a549e0292 100644 --- a/modules/lang/qt/README.org +++ b/modules/lang/qt/README.org @@ -13,10 +13,16 @@ This module provides language functionality for [[https://qt.io][Qt]] specific f *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]] ** Module flags -/This module has no flags./ +- +lsp :: + Enable LSP support for ~qml-mode~/~qml-ts-mode~. Requires [[doom-module::tools lsp]] + and a langserver (supports [[https://doc.qt.io/qt-6/qtqml-tooling-qmlls.html][qmlls]]). +- +tree-sitter :: + Leverages tree-sitter for better syntax highlighting and structural text + editing. Requires [[doom-module::tools tree-sitter]]. ** Packages - [[doom-package:qml-mode]] +- [[doom-package:qml-ts-mode]] if [[doom-module:+tree-sitter]] - [[doom-package:qt-pro-mode]] ** Hacks diff --git a/modules/lang/qt/autoload.el b/modules/lang/qt/autoload.el index ba5db146c..805be65b1 100644 --- a/modules/lang/qt/autoload.el +++ b/modules/lang/qt/autoload.el @@ -2,3 +2,13 @@ ;;;###autoload (add-to-list 'auto-mode-alist '("\\.pr[io]\\'" . qt-pro-mode)) + +;;;###autoload +(when (modulep! +tree-sitter) + (set-tree-sitter! 'qml-mode 'qml-ts-mode + '((qmljs :url "https://github.com/yuja/tree-sitter-qmljs")))) + +;;;###autoload +(when (modulep! +lsp) + (add-hook 'qml-mode-local-vars-hook #'lsp! 'append) + (add-hook 'qml-ts-mode-local-vars-hook #'lsp! 'append)) diff --git a/modules/lang/qt/doctor.el b/modules/lang/qt/doctor.el new file mode 100644 index 000000000..1fb1dd978 --- /dev/null +++ b/modules/lang/qt/doctor.el @@ -0,0 +1,9 @@ +;;; lang/qt/doctor.el -*- lexical-binding: t; -*- + +(assert! (or (not (modulep! +lsp)) + (modulep! :tools lsp)) + "This module requires (:tools lsp)") + +(assert! (or (not (modulep! +tree-sitter)) + (modulep! :tools tree-sitter)) + "This module requires (:tools tree-sitter)") diff --git a/modules/lang/qt/packages.el b/modules/lang/qt/packages.el index 22f01ef77..b60c95f0a 100644 --- a/modules/lang/qt/packages.el +++ b/modules/lang/qt/packages.el @@ -3,3 +3,9 @@ (package! qml-mode :pin "6c5f33ba88ae010bf201a80ee8095e20a724558c") (package! qt-pro-mode :pin "7a2da323de834294b413cbbb3c92f42f54913643") + +(when (modulep! +tree-sitter) + (package! qml-ts-mode + :recipe (:host github + :repo "xhcoding/qml-ts-mode") + :pin "b80c6663521b4d0083e416e6712ebc02d37b7aec"))