aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2024-02-05 16:47:45 -0800
committerGravatar Tom Willemse2024-02-05 16:47:45 -0800
commit68d911f08d5e6559f20c89eadcc8741bf6d3f5e1 (patch)
treeccaf8501848ea536e36fddd1642dd54b0fa55e95
parenta91df5e4ae9acd4a7796cdf0c6dbd1912cd79646 (diff)
downloademacs-config-68d911f08d5e6559f20c89eadcc8741bf6d3f5e1.tar.gz
emacs-config-68d911f08d5e6559f20c89eadcc8741bf6d3f5e1.zip
[oni-yaml] Use ‘yaml-ts-mode’ when it is available
-rw-r--r--oni-yaml.el29
1 files changed, 21 insertions, 8 deletions
diff --git a/oni-yaml.el b/oni-yaml.el
index 734386b..d05a402 100644
--- a/oni-yaml.el
+++ b/oni-yaml.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2024.0202.110614
+;; Version: 2024.0205.164705
;; Package-Requires: (yaml-mode oni-flycheck oni-highlight-indent-guides indent-tools yaml-imenu yaml-pro)
;; This program is free software; you can redistribute it and/or modify
@@ -29,20 +29,33 @@
(require 'indent-tools)
(require 'yaml-imenu)
+;; Don't mind if treesit can't be loaded, maybe this Emacs doesn't have it.
+(require 'treesit nil t)
+
(defun oni-yaml--auto-fill-mode ()
"Enable ‘auto-fill-mode’ only for comments."
(setq-local comment-auto-fill-only-comments t)
(auto-fill-mode))
+(defun oni-yaml--enable-hooks (hook)
+ "Enable all hooks I use for editing yaml files for HOOK."
+ (add-hook hook 'display-fill-column-indicator-mode)
+ (add-hook hook 'electric-indent-local-mode)
+ (add-hook hook 'electric-pair-local-mode)
+ (add-hook hook 'highlight-indent-guides-mode)
+ (add-hook hook 'oni-yaml--auto-fill-mode)
+ (add-hook hook 'yaml-imenu-enable)
+ (add-hook hook 'yaml-pro-mode))
+
(define-key yaml-mode-map (kbd "C-c >") 'indent-tools-hydra/body)
-(add-hook 'yaml-mode-hook 'display-fill-column-indicator-mode)
-(add-hook 'yaml-mode-hook 'electric-indent-local-mode)
-(add-hook 'yaml-mode-hook 'electric-pair-local-mode)
-(add-hook 'yaml-mode-hook 'highlight-indent-guides-mode)
-(add-hook 'yaml-mode-hook 'oni-yaml--auto-fill-mode)
-(add-hook 'yaml-mode-hook 'yaml-imenu-enable)
-(add-hook 'yaml-mode-hook 'yaml-pro-mode)
+(oni-yaml--enable-hooks 'yaml-mode-hook)
+
+(when (and (functionp 'treesit-available-p)
+ (treesit-available-p)
+ (treesit-ready-p 'yaml))
+ (add-to-list 'major-mode-remap-alist '(yaml-mode . yaml-ts-mode))
+ (oni-yaml--enable-hooks 'yaml-ts-mode-hook))
(provide 'oni-yaml)
;;; oni-yaml.el ends here