   :ensure t
   :config
   (gcmh-mode 1))
+
+(use-package cc-mode
+  :mode (("\\.h\\'"    . c-mode)
+	 ("\\.c\\'"    . c-mode)
+	 ("\\.cpp\\'"  . c++-mode)
+	 ("\\.mm\\'"   . objc-mode)
+	 ("\\.java\\'" . java-mode)))
 
 (use-package exec-path-from-shell
   :defer nil

    ("sfo" lsp-workspace-folders-open "folder")
    ("sfr" lsp-workspace-folders-remove "folders -")
    ("sfb" lsp-workspace-blacklist-remove "blacklist -"))))

(straight-use-package
 '(tree-sitter :host github
               :repo "ubolonton/emacs-tree-sitter"
               :files ("lisp/*.el")))

(straight-use-package
 '(tree-sitter-langs :host github
                     :repo "ubolonton/emacs-tree-sitter"
                     :files ("langs/*.el" "langs/queries")))

(require 'tree-sitter-langs)
(global-tree-sitter-mode)

;; Enable tree-based syntax highlighting for supported languages:
(require 'tree-sitter-hl)
(add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode)

(mapcar #'(lambda (x)
	    (define-key global-map (kbd (car x)) (cdr x)))

(use-package notmuch
  :config
  (setq notmuch-search-oldest-first nil
	mail-user-agent 'message-user-agent
	notmuch-wash-wrap-lines-length 80
	notmuch-tree-show-out t)
  (setq notmuch-saved-searches
	'((:key "i" :name "inbox" :query "tag:inbox")
	  (:key "u" :name "unread" :query "tag:unread")
	  (:key "m" :name "to-me" :query "tag:to-me is:unread not tag:gh")
	  (:key "g" :name "github" :query "(tag:to-me and tag:gh) is:unread")
	  (:key "b" :name "bugs" :query "(tag:to-me and tag:bz) is:unread")
	  (:key "T" :name "today" :query "date:today" :sort-order oldest-first)
	  (:key "U" :name "unread today" :query "date:today to:me is:unread")
	  (:key "O" :name "OCP" :query "tag:lists/aos-devel is:unread")
	  (:key "F" :name "flagged" :query "tag:flagged")
	  (:key "S" :name "sent" :query "tag:Sent Mail"))))

(use-package langtool
  :config
