File size: 2,130 Bytes
f59fbe2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import * as vscode from "vscode";
import type { ExtensionConfig } from "../../shared/types";
declare const __EXTENSION_VERSION__: string;
const EXTENSION_VERSION = typeof __EXTENSION_VERSION__ !== "undefined" ? __EXTENSION_VERSION__ : "0.0.0";
function getConfig() {
return vscode.workspace.getConfiguration("kimi");
}
export const VSCodeSettings = {
get yoloMode(): boolean {
return getConfig().get<boolean>("yoloMode", false);
},
get autosave(): boolean {
return getConfig().get<boolean>("autosave", true);
},
get enableNewConversationShortcut(): boolean {
return getConfig().get<boolean>("enableNewConversationShortcut", false);
},
get useCtrlEnterToSend(): boolean {
return getConfig().get<boolean>("useCtrlEnterToSend", false);
},
get showThinkingContent(): boolean {
return getConfig().get<boolean>("showThinkingContent", false);
},
get showThinkingExpanded(): boolean {
return getConfig().get<boolean>("showThinkingExpanded", false);
},
get editorContext(): "never" | "onConversationStart" | "onFileChange" {
return getConfig().get<"never" | "onConversationStart" | "onFileChange">("editorContext", "never");
},
getExtensionConfig(): ExtensionConfig {
return {
yoloMode: this.yoloMode,
autosave: this.autosave,
useCtrlEnterToSend: this.useCtrlEnterToSend,
enableNewConversationShortcut: this.enableNewConversationShortcut,
showThinkingContent: this.showThinkingContent,
showThinkingExpanded: this.showThinkingExpanded,
version: EXTENSION_VERSION,
};
},
};
export function onSettingsChange(callback: (changedKeys: string[]) => void): vscode.Disposable {
return vscode.workspace.onDidChangeConfiguration((e) => {
if (!e.affectsConfiguration("kimi")) {
return;
}
const keys = ["yoloMode", "autosave", "enableNewConversationShortcut", "useCtrlEnterToSend", "showThinkingContent", "showThinkingExpanded", "editorContext"];
const changedKeys = keys.filter((key) => e.affectsConfiguration(`kimi.${key}`));
if (changedKeys.length > 0) {
callback(changedKeys);
}
});
}
|