diff --git a/src/assets/index.js b/src/assets/index.js index aeb5e24..a982b9c 100644 --- a/src/assets/index.js +++ b/src/assets/index.js @@ -1,12 +1,20 @@ utools.onPluginEnter(async ({ code, type, payload }) => { utools.onPluginOut(() => { - var program = $('#program').val(); - $("#options").empty() - $("#out").empty() if (code == "code") { var cmd = window.editor.getValue(); - putDB('history', { cmd: cmd, program: program }, 'codeHistory') + var program = $('#program').val(), + scptarg = $('#scptarg').val(), + customoptions; + if (program == 'custom') customoptions = { + custombin: $('#custombin').val(), + customarg: $('#customarg').val(), + customext: $('#customext').val(), + customcodec: $('#customcodec').val() + } + putDB('history', { cmd: cmd, program: program, scptarg: scptarg, customoptions: customoptions }, 'codeHistory') } + $("#options").empty() + $("#out").empty() }) // 配置页面 if (code == 'options') { @@ -31,6 +39,7 @@ utools.onPluginEnter(async ({ code, type, payload }) => { }else{ option = programs[db.program]; } + option.scptarg = db.scptarg cmd = special(cmd); // 正则 if (type == 'regex') cmd = cmd.replace(/\{\{input\}\}/mg, payload); diff --git a/src/assets/options.js b/src/assets/options.js index ed09bbd..e852968 100644 --- a/src/assets/options.js +++ b/src/assets/options.js @@ -309,9 +309,10 @@ let showCustomize = () => {

脚 本 + - - + + @@ -497,14 +498,18 @@ let programCheck = () => { let mode = $('#program').val(); $('.customscript').hide(); $('.simulation').hide(); + $('#scptarg').show(); $('#showInTerm').prop("disabled", false); if (!hasCustomIcon()) $("#icon").attr('src', `logo/${mode}.png`); switch (mode) { case 'custom': $('.customscript').show(); + var customext = $('#customext').val() + customext && (mode = highlightIfKnown(customext)) break; case 'simulation': $('.simulation').show(); + $('#scptarg').hide(); $('#showInTerm').prop("disabled", true); mode = 'javascript'; break; @@ -578,6 +583,7 @@ $("#options").on('click', '.editBtn', function () { $('#program').val(data.program).trigger("change"); $('#output').val(data.output).trigger("change"); $('#desc').val(data.features.explain); + $('#scptarg').val(data.scptarg); $("#icon").attr('src', data.features.icon); let mode = data.program; if (mode == 'custom') { @@ -718,6 +724,7 @@ let SaveCurrentCommand = async () => { var code = `${type}_${uid}`; } var output = $('#output').val(); + var scptarg = $('#scptarg').val(); var cmd = window.editor.getValue(); // 合规性校验 if (type == 'key' @@ -812,7 +819,8 @@ let SaveCurrentCommand = async () => { program: program, cmd: cmd, output: output, - hasSubInput: hasSubInput + hasSubInput: hasSubInput, + scptarg: scptarg } if (tags) pushData.tags = tags if (program == 'custom') { @@ -933,6 +941,7 @@ let runCurrentCommand = async () => { "ext": $('#customext').val(), 'codec': $('#customcodec').val() } + option.scptarg = $('#scptarg').val() runCodeFile(cmd, option, terminal, (stdout, stderr) => { if (terminal) return if (stderr) return showRunResult(stderr, raw, false) @@ -955,30 +964,35 @@ let quitCurrentCommand = () => { } let highlightIfKnown = ext => { - // 未设置后缀时有自动补全bug var lang = Object.keys(programs).filter(p => programs[p].ext == ext) - if (lang.length) window.editor.setOption("mode", lang[0]) + if (lang.length) { + if (lang[0] == 'python') getPythonMods() + window.editor.setOption("mode", lang[0]) + return lang[0] + } } showCodeEditor = file => { let options = `` - var customWindow = `

- ${options} - - - + + + 运 行 + - 格式化 - ﹢动作 - ﹢按键 - ?帮助 + 格式化 + ﹢动作 + ﹢按键 + ?帮助
@@ -995,11 +1009,20 @@ showCodeEditor = file => { var fileinfo = getFileInfo({ type: 'file', argvs: file, readfile: true }) console.log(fileinfo); window.editor.setValue(fileinfo.data) - var program = Object.keys(programs).filter(x => `.${programs[x].ext}` == fileinfo.ext)[0] - $('#program').val(program) + var program = Object.keys(programs).filter(x => `.${programs[x].ext}` == fileinfo.ext) + if (program) $('#program').val(program[0]) runCurrentCommand() - } else { - db.history && $('#program').val(db.history.program) && window.editor.setValue(db.history.cmd) + } else if(db.history){ + window.editor.setValue(db.history.cmd) + $('#program').val(db.history.program) + $('#scptarg').val(db.history.scptarg) + var custom = db.history.customoptions + if (db.history.program = 'custom' && custom) { + $('#custombin').val(custom.custombin) + $('#customarg').val(custom.customarg) + $('#customext').val(custom.customext) + $('#customcodec').val(custom.customcodec) + } } programCheck() $('#program').select2({ diff --git a/src/assets/style/options.css b/src/assets/style/options.css index 4fba407..db7b714 100644 --- a/src/assets/style/options.css +++ b/src/assets/style/options.css @@ -335,7 +335,7 @@ #options #customize span.customscript > input { margin-left: 5px; - width: 16%; + width: 12%; } #options #featureList { @@ -391,6 +391,20 @@ width: 40%; } +#options #customize input#scptarg{ + width: 170px; + float: right; + background: white; + outline: none; + border: 2px solid #3085d6; + height: 30px; + border-radius: 4px; + padding: 2px 5px; + margin: 0px 5px; + text-align: center; + display: none +} + #options #customize input.customize:hover{ border-bottom-color: #9e9e9ec7; transition: 0.25s; diff --git a/src/preload.js b/src/preload.js index 57f979b..59f91f2 100644 --- a/src/preload.js +++ b/src/preload.js @@ -497,7 +497,8 @@ special = cmd => { runCodeFile = (cmd, option, terminal, callback) => { var bin = option.bin, argv = option.argv, - ext = option.ext; + ext = option.ext, + scptarg = option.scptarg || ""; let script = getQuickCommandScriptFile(ext) // 批处理和 powershell 默认编码为 GBK, 解决批处理的换行问题 if (ext == 'bat' || ext == 'ps1') cmd = iconv.encode(cmd.replace(/\n/g, '\r\n'), 'GBK'); @@ -509,14 +510,14 @@ runCodeFile = (cmd, option, terminal, callback) => { // } var child, cmdline if (bin.slice(-7) == 'csc.exe') { - cmdline = `${bin} ${argv} /out:"${script.slice(0, -2) + 'exe'}" "${script}" && "${script.slice(0, -2) + 'exe'}"` + cmdline = `${bin} ${argv} /out:"${script.slice(0, -2) + 'exe'}" "${script}" && "${script.slice(0, -2) + 'exe'}" ${scptarg}` } else if (bin == 'gcc') { var suffix = utools.isWindows() ? '.exe' : '' - cmdline = `${bin} ${argv} "${script.slice(0, -2)}" "${script}" && "${script.slice(0, -2) + suffix}"` + cmdline = `${bin} ${argv} "${script.slice(0, -2)}" "${script}" && "${script.slice(0, -2) + suffix}" ${scptarg}` } else if (utools.isWindows() && bin == 'bash') { - cmdline = `${bin} ${argv} "${script.replace(/\\/g, '/').replace(/C:/i, '/mnt/c')}"` + cmdline = `${bin} ${argv} "${script.replace(/\\/g, '/').replace(/C:/i, '/mnt/c')}" ${scptarg}` } else { - cmdline = `${bin} ${argv} "${script}"` + cmdline = `${bin} ${argv} "${script}" ${scptarg}` } // 在终端中输出 if (terminal) {