(require 'c-ts-mode) (defvar d-ts--keywords (list ;; declarations "alias" "class" "interface" "module" "struct" "template" "union" ;; expressions "__FILE__" "__FILE_FULL_PATH__" "__MODULE__" "__LINE__" "__FUNCTION__" "_PRETTY_FUNCTION_" "__traits" "__parameters" "cast" "is" "new" ;; labels "case" "default" ;; modifiers "__gshared" "abstract" "align" "auto" "const" "deprecated" "enum" "export" "extern" "final" "immutable" "in" "inout" "lazy" "nothrow" "out" "override" "package" "pragma" "private" "protected" "public" "pure" "ref" "scope" "shared" "static" "synchronized" "@disable" "@nogc" "@property" "@safe" "@system" "@trusted" ;; statements "asm" "assert" "break" "catch" "continue" "debug" "do" "else" "finally" "for" "foreach" "foreach_reverse" "goto" "if" "import" "invariant" "mixin" "return" "super" "switch" "this" "throw" "try" "typeid" "typeof" "unittest" "version" "while" "with" ;; unused "macro")) (defvar d-ts--font-lock-rules (treesit-font-lock-rules :language 'd :feature 'keyword `([,@d-ts--keywords] @font-lock-keyword-face))) (define-derived-mode d-ts-mode c-ts-base-mode "D" "Major mode for editing D, powered by tree-sitter." (when (treesit-ready-p 'd) ;; Font-lock. (setq-local treesit-font-lock-settings d-ts--font-lock-rules) (treesit-major-mode-setup))) (add-to-list 'auto-mode-alist '("\\.di?\\'" . d-ts-mode)) (provide 'd-ts-mode)