From 3eb66fa34a80c7048299ef943fc1ddd6b53c1637 Mon Sep 17 00:00:00 2001 From: bietiaop <1527109126@qq.com> Date: Sun, 2 Feb 2025 15:34:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=B3=E9=97=AD=E7=BB=88=E7=AB=AF?= =?UTF-8?q?=E5=90=AF=E5=8A=A8QQ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file_manage/file_edit_modal.tsx | 38 +++++++++++++++++++ src/webui/src/terminal/terminal_manager.ts | 12 +++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/napcat.webui/src/components/file_manage/file_edit_modal.tsx b/napcat.webui/src/components/file_manage/file_edit_modal.tsx index cb34e51a..ca42e09c 100644 --- a/napcat.webui/src/components/file_manage/file_edit_modal.tsx +++ b/napcat.webui/src/components/file_manage/file_edit_modal.tsx @@ -25,6 +25,43 @@ export default function FileEditModal({ onSave, onContentChange }: FileEditModalProps) { + // 根据文件后缀返回对应语言 + const getLanguage = (filePath: string) => { + if (filePath.endsWith('.js')) return 'javascript' + if (filePath.endsWith('.ts')) return 'typescript' + if (filePath.endsWith('.tsx')) return 'tsx' + if (filePath.endsWith('.jsx')) return 'jsx' + if (filePath.endsWith('.vue')) return 'vue' + if (filePath.endsWith('.svelte')) return 'svelte' + if (filePath.endsWith('.json')) return 'json' + if (filePath.endsWith('.html')) return 'html' + if (filePath.endsWith('.css')) return 'css' + if (filePath.endsWith('.scss')) return 'scss' + if (filePath.endsWith('.less')) return 'less' + if (filePath.endsWith('.md')) return 'markdown' + if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) return 'yaml' + if (filePath.endsWith('.xml')) return 'xml' + if (filePath.endsWith('.sql')) return 'sql' + if (filePath.endsWith('.sh')) return 'shell' + if (filePath.endsWith('.bat')) return 'bat' + if (filePath.endsWith('.php')) return 'php' + if (filePath.endsWith('.java')) return 'java' + if (filePath.endsWith('.c')) return 'c' + if (filePath.endsWith('.cpp')) return 'cpp' + if (filePath.endsWith('.h')) return 'h' + if (filePath.endsWith('.hpp')) return 'hpp' + if (filePath.endsWith('.go')) return 'go' + if (filePath.endsWith('.py')) return 'python' + if (filePath.endsWith('.rb')) return 'ruby' + if (filePath.endsWith('.cs')) return 'csharp' + if (filePath.endsWith('.swift')) return 'swift' + if (filePath.endsWith('.vb')) return 'vb' + if (filePath.endsWith('.lua')) return 'lua' + if (filePath.endsWith('.pl')) return 'perl' + if (filePath.endsWith('.r')) return 'r' + return 'plaintext' + } + return ( @@ -39,6 +76,7 @@ export default function FileEditModal({ value={file?.content || ''} onChange={onContentChange} options={{ wordWrap: 'on' }} + language={file?.path ? getLanguage(file.path) : 'plaintext'} /> diff --git a/src/webui/src/terminal/terminal_manager.ts b/src/webui/src/terminal/terminal_manager.ts index 977c98c2..f9f7f59d 100644 --- a/src/webui/src/terminal/terminal_manager.ts +++ b/src/webui/src/terminal/terminal_manager.ts @@ -89,7 +89,11 @@ class TerminalManager { instance.sockets.delete(ws); if (instance.sockets.size === 0 && !instance.isClosing) { instance.isClosing = true; - instance.pty.kill(); + if (os.platform() === 'win32') { + process.kill(instance.pty.pid); + } else { + instance.pty.kill(); + } } }); } catch (err) { @@ -145,7 +149,11 @@ class TerminalManager { if (instance) { if (!instance.isClosing) { instance.isClosing = true; - instance.pty.kill(); + if (os.platform() === 'win32') { + process.kill(instance.pty.pid); + } else { + instance.pty.kill(); + } } instance.sockets.forEach((ws) => ws.close()); this.terminals.delete(id);