新增: 文件操作增强与预览扩展
- 文件剪贴板复制剪切粘贴,重名自动副本 - SFTP下载到本机与外部文件拖入,目录递归 - 传输进度浮动面板,transfer-progress事件链 - Drawio预览,Excel工作线程,冻结看门狗 - cmd与bat自写batch语法高亮,psm1等映射补齐
This commit is contained in:
@@ -89,6 +89,36 @@ export async function loadLanguageExtension(language) {
|
||||
extension = StreamLanguage.define(powerShell)
|
||||
break
|
||||
}
|
||||
case 'batch': {
|
||||
// 自写 DOS batch 流式模式:REM/:: 整行注释,%var% 变量,常用关键字
|
||||
const { StreamLanguage } = await import('@codemirror/language')
|
||||
const batchKeywords = new Set('echo off on set setlocal endlocal enabledelayedexpansion if not exist defined equ neq lss leq gtr geq for in do goto call exit exitb start del erase copy move ren rename md mkdir rd rmdir cd chdir type cls pause shift errorlevel title ver vol prompt pushd popd xcopy robocopy powershell cmd'.split(' '))
|
||||
extension = StreamLanguage.define({
|
||||
name: 'batch',
|
||||
token(stream) {
|
||||
if (stream.sol()) {
|
||||
stream.eatSpace()
|
||||
// 行首 REM(大小写不敏感)或 :: 开头的整行注释;:标签名 视作 keyword
|
||||
if (stream.match(/^rem(?:\s|$)/i) || stream.match(/^::/)) {
|
||||
stream.skipToEnd()
|
||||
return 'comment'
|
||||
}
|
||||
if (stream.match(/^:[\w.-]+/)) return 'keyword'
|
||||
}
|
||||
if (stream.eatSpace()) return null
|
||||
if (stream.match(/^"(?:[^"\r\n]|"")*"?/)) return 'string'
|
||||
if (stream.eat('^')) return 'operator'
|
||||
// !var! 延迟变量、%var% 环境变量、%~d0 类批处理参数
|
||||
if (stream.match(/^!\w+!/) || stream.match(/^%\w+%/) || stream.match(/^%~[a-z]*[\d*]/i)) return 'atom'
|
||||
if (stream.match(/^\w+/)) {
|
||||
return batchKeywords.has(stream.current().toLowerCase()) ? 'keyword' : null
|
||||
}
|
||||
stream.next()
|
||||
return null
|
||||
}
|
||||
})
|
||||
break
|
||||
}
|
||||
case 'dart': {
|
||||
const { StreamLanguage, clike: dart } = await import('@codemirror/legacy-modes/mode/clike')
|
||||
extension = StreamLanguage.define(dart)
|
||||
|
||||
Reference in New Issue
Block a user