Skip to content

Commit b3bd175

Browse files
committed
feat: Add previous mode shortcut (Cmd/Ctrl+/) and update hint
1 parent 951cefc commit b3bd175

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

webview-ui/src/components/chat/ChatView.tsx

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0
4646

4747
const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryView }: ChatViewProps) => {
4848
const { t } = useAppTranslation()
49-
const modeShortcutText = `${isMac ? "⌘" : "Ctrl"} + . ${t("chat:forNextMode")}`
49+
const modeShortcutText = `${isMac ? "⌘" : "Ctrl"} + . next or / prev mode` // Updated shortcut hint format
5050
const {
5151
version,
5252
clineMessages: messages,
@@ -1130,16 +1130,39 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
11301130
})
11311131
}, [mode, setMode, customModes])
11321132

1133+
// Function to switch to the previous mode
1134+
const switchToPreviousMode = useCallback(() => {
1135+
const allModes = getAllModes(customModes)
1136+
const currentModeIndex = allModes.findIndex((m) => m.slug === mode)
1137+
if (currentModeIndex === -1) return // Should not happen
1138+
1139+
// Calculate previous index with wrap-around
1140+
const previousModeIndex = (currentModeIndex - 1 + allModes.length) % allModes.length
1141+
const previousMode = allModes[previousModeIndex]
1142+
1143+
// Update local state and notify extension to sync mode change
1144+
setMode(previousMode.slug)
1145+
vscode.postMessage({
1146+
type: "mode",
1147+
text: previousMode.slug,
1148+
})
1149+
// Consider adding playSound("progress_loop") here if desired for consistency
1150+
}, [mode, setMode, customModes])
1151+
11331152
// Add keyboard event handler
11341153
const handleKeyDown = useCallback(
11351154
(event: KeyboardEvent) => {
1136-
// Check for Command + . (period)
1155+
// Check for Command + . (period) for next mode
11371156
if ((event.metaKey || event.ctrlKey) && event.key === ".") {
11381157
event.preventDefault() // Prevent default browser behavior
11391158
switchToNextMode()
1159+
// Check for Command + / (slash) for previous mode
1160+
} else if ((event.metaKey || event.ctrlKey) && event.key === "/") {
1161+
event.preventDefault() // Prevent default browser behavior
1162+
switchToPreviousMode()
11401163
}
11411164
},
1142-
[switchToNextMode],
1165+
[switchToNextMode, switchToPreviousMode], // Added switchToPreviousMode dependency
11431166
)
11441167

11451168
// Add event listener

0 commit comments

Comments
 (0)