diff --git a/game/codemirror.js b/game/codemirror.js index 2e904500f..6114e137e 100644 --- a/game/codemirror.js +++ b/game/codemirror.js @@ -10164,6 +10164,24 @@ if (cur.render) cur.render(elt, data, cur); else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur))); elt.hintId = i; + CodeMirror.on(elt, "mouseover", function (e) { + widget.changeActive(this.hintId); + }); + CodeMirror.on(elt, "touchstart", function (e) { + widget.changeActive(this.hintId); + }); + CodeMirror.on(elt, "touchend", function (e) { + var cur = cm.getCursor(); + var self = this; + setTimeout(function () { + cm.focus(); + var cur2 = cm.getCursor(); + if (cur2.line == cur.line && cur2.ch == 0) { + var textLen = self.innerText.length; + cm.setCursor({ line: cur.line, ch: cur.ch + textLen }); + } + }, 10); + }); } var container = completion.options.container || ownerDocument.body; @@ -10267,7 +10285,7 @@ setTimeout(function () { cm.focus(); }, 20); }); - //滑动修复// + //滑动修复 CodeMirror.on(hints, "touchmove", function (event) { if (ios && this.scrollHeight <= this.offsetHeight + 5 && this.scrollWidth <= this.offsetWidth + 5) { event.preventDefault(); @@ -10537,8 +10555,6 @@ "if in import instanceof let new null return super switch this throw true try typeof var void while with yield").split(" "); var coffeescriptKeywords = ("and break catch class continue delete do else extends false finally for " + "if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" "); - //var nonameWords = ("_status ai audio card charlotte content control damage enable event extension fixed forced gainable game get group identity lib lose loseHp mod mode nobracket player recover remove result select set source superCharlotte target trigger ui viewAs").split(" "); - //var extension = ["ai:{\n},", "content:function(){\n},", "enable:\"phaseUse\",", "event.player", "event.source", "event.target", "filter:function(event,player,name){\n},", "init:function(player){\n},", "for(var i = 0; i < xx.length; i++) {\n}", "for(var i in xx){\n}", "for(var i of xx){\n}", "mod:{\n},", "skill = {\n\ttrigger:{},\n\tfilter:function(event,player,name){},\n\tcontent:function(){},\n}", "switch(){\n}", "trigger:{\n},", "trigger.name", "trigger.player", "trigger.source", "trigger.target", "try{\n}catch(e){\n}", "usable:1,", "while(){\n}", "window"]; function forAllProps(obj, callback) { if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) { for (var name in obj) callback(name) @@ -10596,8 +10612,6 @@ gatherCompletions(global);*/ forEach(keywords, maybeAdd); forEach(coffeescriptKeywords, maybeAdd); - //forEach(nonameWords, maybeAdd); - //forEach(extension, maybeAdd); } return found.sort(function (a, b) { return (a + '').localeCompare(b + ''); diff --git a/game/game.js b/game/game.js index dab78d16b..1aead17d9 100644 --- a/game/game.js +++ b/game/game.js @@ -7554,13 +7554,13 @@ if(str.lastIndexOf(start,0)==0&&!list.includes(str)) list.push(str); } for(let v=token.state.localVars;v;v=v.next) maybeAdd(v.name); - for(let c=token.state.context;c;c=c.prev) for (let v=c.vars;v;v=v.next) maybeAdd(v.name) + for(let c=token.state.context;c;c=c.prev) for(let v=c.vars;v;v=v.next) maybeAdd(v.name) for(let v=token.state.globalVars;v;v=v.next) maybeAdd(v.name); if(options&&options.additionalContext!=null) for(let key in options.additionalContext) maybeAdd(key); list.addArray(keys); } return { - list:list.filter(key=>key.startsWith(token.string)), + list:list.filter(key=>key.startsWith(token.string)).sort((a,b)=>(a+'').localeCompare(b+'')), from:CodeMirror.Pos(cur.line,token.start), to:CodeMirror.Pos(cur.line,token.end), }; @@ -8521,15 +8521,15 @@ if(lines.length>=10){ if(line>4){ for(let i=line-5;i`${i}| ${line==i+1?'⚠️':''}${_line}\n`).toString(); + showCode=lines.map((_line,i)=>`${i+1}| ${line==i+1?'⚠️':''}${_line}\n`).toString(); } return showCode; } @@ -40919,6 +40919,9 @@ this.focus(); click.call(this); }); + elt.onmousemove=elt.ontouchstart=()=>{ + setActive(i); + }; } } createList.push(ul); @@ -40974,7 +40977,7 @@ } const self=this; const pos=this.getBoundingClientRect(); - const list=['撤销\t\tCtrl+Z', '恢复撤销\tCtrl+Y'/* , '全选\t\tCtrl+A' */]; + const list=['撤销 Ctrl+Z', '恢复撤销 Ctrl+Y']; const click=function(e){ const num=this.innerHTML.indexOf("Ctrl"); const inner=this.innerHTML.slice(num).replace("+", "-"); diff --git a/layout/default/codemirror.css b/layout/default/codemirror.css index 11033ca4d..4451eeabd 100644 --- a/layout/default/codemirror.css +++ b/layout/default/codemirror.css @@ -457,11 +457,32 @@ div.cm-s-mdn-like span.CodeMirror-matchingbracket { outline:1px solid grey; colo background: white; font-size: 90%; font-family: monospace; + text-shadow: none; max-height: 20em; overflow-y: auto; } +.CodeMirror-hints::-webkit-scrollbar { + width: 15px; + display: block; +} + +@media (max-width: 1000px) { + .CodeMirror-hints::-webkit-scrollbar { + width: 25px; + } +} + +.CodeMirror-hints::-webkit-scrollbar-thumb { + background-color: rgb(218, 215, 215); + height: 50px; +} + +.CodeMirror-hints::-webkit-scrollbar-track { + background-color: #6b6565; +} + .CodeMirror-hint { margin: 0; padding: 0 4px;