命令面板 — Ctrl+P 打开,Popup + TextInput + SlashCommands 自动补全。
功能
- Ctrl+P 打开(任何时候,包括 pending_ask/approval 关闭后)
- 实时输入过滤命令列表(模糊匹配前缀)
- Up/Down 选择命令
- Enter 执行选中命令
- Esc 关闭
SlashCommands 内嵌补全(Textarea 中)
当 Textarea 内容以 / 开头时,在 Chat 区域上方叠加一个小 autocomplete popup,
不打开命令面板。用户继续输入过滤,Up/Down 选择,Enter 执行(先清空 textarea)。
此逻辑在 CmdcTui.Dialogs.SlashAutocomplete 中处理。
Summary
Functions
@spec match_count(String.t()) :: non_neg_integer()
过滤命令列表数量(用于边界检查)。
@spec render(CmdcTui.State.t(), ExRatatui.Layout.Rect.t()) :: [ {ExRatatui.widget(), ExRatatui.Layout.Rect.t()} ]
渲染命令面板 Popup(仅 command_palette_open 为 true 时)。
@spec selected_command(CmdcTui.State.t()) :: String.t() | nil
获取当前选中命令名称(用于 Enter 执行)。