This commit is contained in:
csh
2025-07-03 20:07:54 +08:00
parent 1906c8c421
commit 696618ff1d
9 changed files with 188 additions and 182 deletions
+36 -28
View File
@@ -20,45 +20,53 @@ function findSystemTslServer(): string | null {
}
export function activate(context: vscode.ExtensionContext) {
const bundledPath = context.asAbsolutePath(
path.join('bin', process.platform === 'win32' ? 'tsl-server.exe' : 'tsl-server')
)
// server配置项
const config = vscode.workspace.getConfiguration('tsl')
const customExecutable = config.get<string>('server.executable', '')
const serverArguments = config.get<string[]>('server.arguments')
// 查找路径优先级:插件目录 -> 系统 PATH
let serverExe: string | null = null
if (fs.existsSync(bundledPath)) {
serverExe = bundledPath
if (customExecutable) {
serverExe = customExecutable
} else {
serverExe = findSystemTslServer()
const bundledPath = context.asAbsolutePath(
path.join('bin', process.platform === 'win32' ? 'tsl-server.exe' : 'tsl-server')
)
// 查找路径优先级:插件目录 -> 系统 PATH
if (fs.existsSync(bundledPath)) {
serverExe = bundledPath
} else {
serverExe = findSystemTslServer()
}
}
if (!serverExe) {
vscode.window.showErrorMessage(
"Cannot find tsl-server. Please install it globally or include it in your extension's server directory."
)
return
}
const serverOptions: ServerOptions = {
run: {command: serverExe, transport: TransportKind.stdio, args: ['--log=trace', '--log-stderr']},
debug: {command: serverExe, transport: TransportKind.stdio}
}
const clientOptions: LanguageClientOptions = {
documentSelector: [{scheme: 'file', language: 'tsl'}],
synchronize: {
fileEvents: vscode.workspace.createFileSystemWatcher('**/*.tsl')
} else {
const serverOptions: ServerOptions = {
run: {command: serverExe, transport: TransportKind.stdio, args: serverArguments},
debug: {command: serverExe, transport: TransportKind.stdio, args: serverArguments}
}
const clientOptions: LanguageClientOptions = {
documentSelector: [{scheme: 'file', language: 'tsl'}],
synchronize: {
fileEvents: vscode.workspace.createFileSystemWatcher('**/*.tsl')
}
}
client = new LanguageClient(
'tslLanguageServer', // 客户端唯一ID
'TSL Language Server', // 用户可见名称
serverOptions,
clientOptions
)
client.start()
}
client = new LanguageClient(
'tslLanguageServer', // 客户端唯一ID
'TSL Language Server', // 用户可见名称
serverOptions,
clientOptions
)
client.start()
}
export function deactivate(): Thenable<void> | undefined {