diff --git a/modules/lang/cc/autoload.el b/modules/lang/cc/autoload.el index 1b94ade91..41b6ff1c4 100644 --- a/modules/lang/cc/autoload.el +++ b/modules/lang/cc/autoload.el @@ -156,6 +156,18 @@ the children of class at point." do (push (cons (1+ depth) child) tree))))))) (eglot--error "Hierarchy unavailable"))) +;;;###autoload +(defun +cc-cmake-lookup-documentation-fn (_) + "Look up the symbol at point in CMake's documentation." + (condition-case _ + (progn + (save-window-excursion (cmake-help)) + (when-let (buf (get-buffer "*CMake Help*")) + (pop-to-buffer buf) + t)) + (error nil))) + + ;; ;; Hooks diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index 5ddc937ea..8a90874b9 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -154,7 +154,10 @@ This is ignored by ccls.") ;; Major modes (after! cmake-mode - (set-docsets! 'cmake-mode "CMake")) + (set-docsets! 'cmake-mode "CMake") + (set-popup-rule! "^\\*CMake Help\\*" :size 0.4 :ttl t) + (set-lookup-handlers! 'cmake-mode + :documentation '+cc-cmake-lookup-documentation-fn)) (use-package! company-cmake ; for `cmake-mode' :when (featurep! :completion company)