From c551230df1cb644d1d97c34a7fbdf9e3d8ca8c78 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Fri, 15 May 2026 02:21:57 -0500 Subject: fix(ai-vterm): autoload cj/toggle-gptel to silence cross-module warning make compile warned that cj/toggle-gptel is not known to be defined when ai-vterm.el is byte-compiled. The M-F9 binding still worked during normal startup because init.el loads ai-config.el after ai-vterm.el, but the dependency was implicit -- byte-compile saw the function symbol unresolved, and loading ai-vterm.el in isolation left M-F9 bound to an undefined function. Declare cj/toggle-gptel as an interactive autoload pointing at ai-config. This silences the warning, keeps ai-vterm.el free of a load-time (require 'ai-config), and makes the load-order contract explicit: the binding works as long as ai-config eventually loads. Test asserts that requiring ai-vterm in isolation leaves cj/toggle-gptel fboundp as an autoload sigil (not a real function). A regression that adds (require 'ai-config) at the top of ai-vterm.el would flip this, and a regression that drops the autoload form would leave fboundp nil. --- modules/ai-vterm.el | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'modules') diff --git a/modules/ai-vterm.el b/modules/ai-vterm.el index 108a73ca..18320eee 100644 --- a/modules/ai-vterm.el +++ b/modules/ai-vterm.el @@ -53,6 +53,12 @@ (declare-function vterm-send-return "vterm" ()) (defvar vterm-mode-map) +;; `cj/toggle-gptel' lives in ai-config.el. Declaring it as an interactive +;; autoload (rather than `require'ing ai-config here) silences the byte-compile +;; warning at line 685/696 while keeping ai-vterm.el free of a load-time +;; dependency on the full ai-config stack. +(autoload 'cj/toggle-gptel "ai-config" nil t) + (defgroup ai-vterm nil "In-Emacs AI-agent launcher with vertical-split vterm." :group 'tools) -- cgit v1.2.3