we.16nov22-14:40 -- ♦ Šeit ir uz šo dienu [2022-11-16] svaigākā ace.js editora failu kolekcija: • no direktorijas [W:\HCJ\HCJEngine\ace2022\ace-builds-master\src]: • vajadzīgie spraudņa faili: ace.js, ext-language_tools.js, ext-searchbox.js • direktorija [/snippets] ar tikai uzturamo valodu failiem • kļūdu labošanas skripti worker-*.js uzturamajām valodām ▲ šos pietiek nomainīt, kad iznāk jaunāka versija ● no vecā (hcj4) ace direktorijas [W:\HCJ\HCJEngine\ace]: • mūsu pielāgotie valodu lexeri: mode-css/hcj*/hsf/html/htx/javascript/php/sql/xml.js • tēmas fails theme-hcj.js (kaut arī neko vērtīgu nesatur un reāli nestrādā, toties norauj defaulto, kas ļauj lapā ielādēt mūsu css) ● hcj.css - aktuālie valodu linteru css (krāsojumi) - šī ir vienīgā/centrālā vieta, kur šie glabājas 1 exemplārā (backups:) • worker-html.js - šeit ir jaunās versijas oriģinālais fails ar hcj korekcijām (atslēgti traucējošie paziņojumi) ▲ mode-text/xml met err Consolē, šos vienalga nelietojam, tpc disablēti (ja vajag, tad jāsalabo) ▲ šeit [mode-javascript.js] ir paņemts jaunākais (2022-11-16) oriģinālais fails, kurā manuāli ienesti mūsu customizējumi no vecā hcj4 (visas vietas iemarķētas ar //¤hcjred¤) - pa tiešo vecais strādā ļoti nestabili (katru n-to reizi tikai nokrāso bookmarkus un info-bloku), kamēr šitais jaunais ar vecajiem hcj-customizējumiem iet stabili -- ♦ Šādā ▲ failu komplektācijā viss krāsojas korekti (ieskaitot mūsu css-customizējumus, marķierus un hcj-modi) un strādā autoComplete (bez snippetiem). ♦ Lai strādātu Snippeti, mode-*.js failos jābūt snippetu atsaucei - faila beigās rinda [this.snippetFileId = "ace/snippets/javascript";] ♦ Papildus, failā ace.js 3 vietās (iemarķētas ar /*♦♦♦hcjKorekcija: ..*/) ienesti sekojoši uzlabojumi: • var CstyleBehaviour = function.. fjā pielikta trūkstošā aizverošā "}" • this.$getDisplayTokens = function.. fjā disablēta case c>39.. • define("ace/css/editor.css",["require.. css stilos pārdizainētas guttera foldējuma podziņas -- ▲ būtībā, vairāk nekas failos nav jādara.. ja nu vienīgi vēl var papildināt snippetus (jo tagad strādā) pēc vajadzības utt. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ ♦ Integrēšana projektā (hcj5 elementa skriptā): ▌ aktuālo sk. hcj45 projekta elementa [Hcj editors] skriptā HNDS.push(function(evt,arg) { //ed. th.8dec22-12:40 let aid="hcjed"; //-- if (evt=="READY"||evt=="UPD") { //-- //♦ hcj-editora metodes: [https://ace.c9.io/#nav=howto] P.HCJED=function(arg) { //šīs fjas izsaukumiem var lietot hcj5.hcjj pārejas fju HCJED() /*♦ arg - jsons ar sek. parametriem: • rnm - editora fiziskā elementa rnm; editoru dom-elementus identificējam pēc rnm||aid; ja ir vairāki editori ar vienādu rnm, tiek lietots tikai pirmais, visi pārējie - ignorēti; def =arg.rnm||aid • sid - sessijas identifikators: def =arg.sid||dtv/sid||rnm||aid - ja padots, tiek aktivēta (padarīta par curento) sessija ar šādu identifikatoru • cnt - ja padots, tad tiek ielādēts rnm- editorā • mod - ja padots, tad tiek piemērots sid- vai currentajai sessijai ("javascript,hcj,php,css" utt) • hnd - vienota handleru fja hnd(ev,args) - ja padota fja, tad tā tiek raisīta pie visiem hcj-editora eventiem • cb - fja cb(arg) raisās pēc visu darbību izpildes; atgriež padoto arg: ja vajag tg, tad var padot iekš arg cik patīk ● foc - ja true, tad fokusē editoru pēc ielādes ● get - ja true, tad atgriež jsonu ar prasītā eid-editora/sid-sessijas currentajām vērtībām {cnt,eds} */ //♦ fiziskos editorus identificējam pa rnm||aid, sessijas - pa sid||rnm||aid //---- if (!E.aceJsLoaded) { //skripti vēl nav ielādēti TMR(50, P.HCJED, arg); //cilpojam, kamēr būs izvesta editora ieläde return; } //♦ P.hcjed formāts: P.hcjed={ e[eid]:{edt:‹Editor›,hnd,sid,ron,mxl}, s[sid]:{ses:‹Session›,mod,eid } } let rnm=arg.rnm||aid, el=$("."+rnm+":first"); let eid=rnm||aid; //pēc eid tiek identificēti editori let sid=arg.sid||el.data("sid")||eid; //pēc sid tiek identificētas sessijas (vienā editorā var lādēt dažādas sessijas) //~~~~~~~~~~~~~~~~~~~~~~ let getEds=function(sid) { //atgriež prasītās sid-sessijas editora stringu (selekciju,foldējumus,bookmarkus) let eds=""; if (P.hcjed.s[sid]) { let ses=P.hcjed.s[sid].ses, rng; //• selekcija: if (ses.selection.rangeCount===0) { //single selection rng=ses.selection.getRange(); } else { //multiple selections - nolasām tikai pirmo rng=ses.selection.ranges[0]; } let rows=rng.start.row, cols=rng.start.column, rowe=rng.end.row, cole=rng.end.column; eds+=""+rows+","+cols+","+rowe+","+cole; //• foldējumi: let readSubFlds=function(sFlds,rs0) { //rekursīva fja subFoldējumu nolasei let sres=""; if (sFlds.length>0) { //šim foldējumam ir subFoldējumi for (let i=0; i2 && d<21) { P.HCJEDtoggleBkm(sid,e.getDocumentPosition().row); //no guttera-click togglējam defaulto bkm (bez krāsas numura) e.stop(); } }); //• piešķiram sākuma gabarītus: ANI({el:el, ani:"fsz"}, function(eid) { P.hcjed.e[eid].edt.resize(); //bez šī paliek neredzams },eid); //} } if (!P.hcjed.s[sid]) { //sid- sessija vēl nav tikusi radīta P.hcjed.s[sid]={ ses:ace.createEditSession("","ace/mode/"+mod), hnd:null, mod:mod, eid:eid, bkm:[], curpos:{row:0,column:0} }; P.hcjed.s[sid].ses.id=sid; //lai vieglāk atrast sid handleros P.hcjed.s[sid].ses.setUseWrapMode(true); } else if (P.hcjed.s[sid].mod!=mod) { //mod maiņa esošai sessijai P.hcjed.s[sid].ses.setMode("ace/mode/"+mod); P.hcjed.s[sid].mod=mod; //sid- sessijas currentais mod } if (P.hcjed.e[eid].sid!=sid) { P.hcjed.e[eid].edt.setSession(P.hcjed.s[sid].ses); //piešķir sessiju editoram P.hcjed.e[eid].sid=sid; //eid- editora patlaban ielādētās sessijas sid } //} //• customizējumi: { if (ron!==P.hcjed.e[eid].ron) { //read-only maiņa vai pirmā piešķiršana let opt={}; if (ron) { opt.readOnly=true; P.hcjed.e[eid].edt.setHighlightActiveLine(false); P.hcjed.e[eid].edt.setHighlightGutterLine(false); } else { opt.enableBasicAutocompletion=true; //šis ļauj atvērt autocomplete ar ctrl+space // opt.enableLiveAutocompletion=true; ← šitais traucē (atver suggestionus automātiski ievades brīdī) opt.enableSnippets=true; //▲ šitie (tikai) lieto ext-language_tools.js } P.hcjed.e[eid].edt.setOptions(opt); P.hcjed.e[eid].ron=ron; //eid- editora currentais ron } if (mxl!=P.hcjed.e[eid].mxl && (mxl>0||P.hcjed.e[eid].mxl!==null)) { P.hcjed.e[eid].mxl=mxl; //lai nenostrādā vēlreiz if (mxl>0) { mxl=MAX(3,mxl); } //pēc analoģijas ar HcjStudio - ja <3, tad visu nokar P.hcjed.e[eid].edt.setOption("maxLines",mxl); } //} //• eventu handleri: { if (typeof arg.hnd=="function") { if (!P.hcjed.s[sid].hnd) { //sid-sessijas handleri vēl nav uzstādīti P.hcjed.s[sid].hnd=arg.hnd; let ses=P.hcjed.s[sid].ses; ses.on("change", function(delta,Session) { let sid=Session.id, eid=P.hcjed.s[sid].eid; let cmd=Session.curOp.command.name; //cmd iespējamās vērtības: insertstring,del,backspace,cut,paste,undo,redo,indent,outdent,Tab,expandSnippet,insertMatch,Return,ctrlD,altUp utt. P.hcjed.e[eid].hnd("chg", {eid:eid, sid:sid, cmd:cmd, dlt:delta, ses:Session}); }); ses.selection.on("changeSelection", function(e,Selection) { let sid=Selection.session.id, eid=P.hcjed.s[sid].eid; P.hcjed.e[eid].hnd("sel", {eid:eid, sid:sid, e:e, sel:Selection}); }); ses.selection.on("changeCursor", function(e,Selection) { let sid=Selection.session.id, eid=P.hcjed.s[sid].eid; //-- let pos=P.hcjed.e[eid].edt.getCursorPosition(); //Object {row: N, column: M} -0-based let r0=P.hcjed.s[sid].curpos.row; P.hcjed.s[sid].curpos=pos; if (pos.row!=r0) { P.HCJEDsetCurFn(sid,pos.row); } //mainījusies kursora rinda //-- P.hcjed.e[eid].hnd("crs", {eid:eid, sid:sid, e:e, sel:Selection, pos:pos}); }); ses.on("changeFold", function(e,Session) { let sid=Session.id, eid=P.hcjed.s[sid].eid; P.hcjed.e[eid].hnd("fld", {eid:eid, sid:sid, e:e, ses:Session}); }); } if (!P.hcjed.e[eid].hnd) { //eid-editora handleri vēl nav uzstādīti P.hcjed.e[eid].hnd=arg.hnd; let edt=P.hcjed.e[eid].edt; edt.on("focus", function(e,Editor) { let sid=Editor.session.id, eid=P.hcjed.s[sid].eid; P.hcjed.e[eid].hnd("foc", {eid:eid, sid:sid, e:e, edt:Editor}); }); edt.on("blur", function(e,Editor) { let sid=Editor.session.id, eid=P.hcjed.s[sid].eid; P.hcjed.e[eid].hnd("blr", {eid:eid, sid:sid, e:e, edt:Editor}); }); //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ if (false) { //♦ šeit ir paraugs, kā ganīt bookmarku pārvietošanos pie editora contenta labojumiem - šito varētu atstrādāt, jo šeit e.lines satur ietekmēto rindu klāstu, kas nav sessijas change eventā.. //▲ avots: https://github.com/ajaxorg/ace/issues/1282 edt.on("change", function(e,editor) { if (e.lines.length > 1 && (e.action==='insert' || e.action==='remove')){ const breakpointsArrayOld = editor.session.getBreakpoints(); let breakpointsArrayNew = []; const amountOfLinesAffected = e.lines.length - 1; const startRow = e.start.row; const endRow = e.end.row; for (const key of Object.keys(breakpointsArrayOld)) { let breakpointRow = parseInt(key) if (e.action==='insert') { // new lines if (breakpointRow > startRow ){ // breakpoint forward breakpointsArrayNew[breakpointRow + amountOfLinesAffected] = "ace_breakpoint" } else { // unaffected by insert breakpointsArrayNew[breakpointRow] = "ace_breakpoint" } } else if (e.action==='remove') { // removed lines if (breakpointRow > startRow && breakpointRow <= endRow ){ // breakpoint removed } else if (breakpointRow >= endRow ){ // breakpoint behind breakpointsArrayNew[breakpointRow - amountOfLinesAffected] = "ace_breakpoint" } else { // unaffected by remove breakpointsArrayNew[breakpointRow] = "ace_breakpoint" } } } // remove all old breakpoints for (const key of Object.keys(breakpointsArrayOld)) { let breakpointRow = parseInt(key) editor.session.clearBreakpoint(breakpointRow); } // add all new breakpoints for (const key of Object.keys(breakpointsArrayNew)) { let breakpointRow = parseInt(key) editor.session.setBreakpoint(breakpointRow); } } }); } //≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ } } //} //-- //• vērtības ielāde: { if (arg.cnt!==undefined && P.hcjed.e[eid].edt.getValue()!=arg.cnt) { //vērtības ielāde editorā //♦ ja sessijā contents jau ir, tad nepārrakstām (lai saglabājas selekcija utt) P.hcjed.e[eid].edt.setValue(arg.cnt||""); //• editora strings: (selekcija/foldējumi/bookmarki) P.HCJEDapplyEds(sid,arg.eds); /*-*///▌▌ pabeidz šeit pahodu // ANI({el:P.hcjed[sid].el, ani:"fsz"}, function(sid) { // P.hcjed.e[eid].edt.resize(); //bez šī paliek neredzams // }, sid); // P.hcjed.e[eid].edt.scrollToLine(1, true, true, function () {}); // P.hcjed.e[eid].edt.gotoLine(50, 10, true); // P.hcjed.e[eid].edt.gotoLine(1); //šitais jādara pēc resize } //} if (typeof arg.cb=="function") { arg.cb(arg); } //paziņojam par visu darbību izpildi if (arg.foc) { P.hcjed.e[eid].edt.focus(); } }; //function P.HCJED() //-- //–––––––––––––––––––– P.HCJEDapplyEds=function(sid,eds) { //piemēro eds stringu prasītajai sessijai //♦ eds: rows,cols,rowe,colerows,cols,rowe,cole;rows,cols,rowe,cole..> let arr, rows, cols, rowe, cole, rng; let ses=P.hcjed.s[sid].ses; //• selekcija: let sel=ARG(eds,"sel"); //rows,cols,rowe,cole arr=sel.SPL(",",4); rows=TN(arr[0]); cols=TN(arr[1]); rowe=TN(arr[2]); cole=TN(arr[3]); rng={start:{row:rows,column:cols}, end:{row:rowe,column:cole}}; P.HCJEDapplySelTr(sid,rng); //• foldējumi: let fld=ARG(eds,"fld"); //rows,cols,rowe,cole;rows2,cols2,rowe2,cole2;.. arr=fld.SPL(";"); rows=ses.getLength(); for (let i=0; i=rows||rng.end.row>=rows) { continue; } ses.addFold("...",rng); } //• bookmarki: let bkm=ARG(eds,"bkm"); //0B-r1,14-r2,..,07-rN ← bkm veida apz. dodam sākumā ‹clr›-‹r› // bkm="01-0,0B-1,02-3,04-5,13-6" arr=bkm.SPL(","); for (let i=0; ises.getLength()) { r=ses.getLength(); } //-- if (on===undefined) { //toggle let breakpointsArray=ses.getBreakpoints(); on=!(r in breakpointsArray); } if (on) { //creating bkm ses.setBreakpoint(r,cls); if (!P.hcjed.s[sid].bkm) { P.hcjed.s[sid].bkm=[]; } if (P.hcjed.s[sid].bkm[r]) { //šitai rindai anchors jau existē - nodzēšam vispirms P.HCJEDtoggleBkm(sid,r,"",false,true); //nodzēš veco un dettachē eventu } P.hcjed.s[sid].bkm[r]={}; let doc=ses.getDocument(); P.hcjed.s[sid].bkm[r].b=doc.createAnchor(r,0); //ieliekam breakpointa rindā anchoru, jo tas ļauj vaktēt anhorēto rindu pārvietošanas P.hcjed.s[sid].bkm[r].c=clr; //• bkm vietas maiņas handleris: doc.sid=sid; //ienesam document-ā, jo handlerī ir tikai document P.hcjed.s[sid].bkm[r].b.on("change", function(e,a) { //← Fires whenever the anchor position changes //♦ anchoriem ir tikai "change" evnets if (P.hcjedBlBkmPch) { return; } let sid=a.document.sid, rowO=e.old.row, rowN=e.value.row; P.hcjedBlBkmPch=true; //lai neierosinās if (P.hcjed.s[sid].bkm[rowO]) { let clr=P.hcjed.s[sid].bkm[rowO].c; P.HCJEDtoggleBkm(sid,rowO,clr,false,true); //noņem bkm no vecās vietas } P.HCJEDtoggleBkm(sid,rowN,clr,true); //uzliek jaunajā vietā (TMR ļauj novērst sadursmes ar vecajiem/citiem) P.hcjedBlBkmPch=false; }); } else { //removing bookmark ses.clearBreakpoint(r); if (P.hcjed.s[sid].bkm[r] && P.hcjed.s[sid].bkm[r].b) { //papildus drošība P.hcjed.s[sid].bkm[r].b.detach(); //When called, the 'change' event listener is removed } delete P.hcjed.s[sid].bkm[r]; } } if (!nohnd && P.hcjed.s[sid].hnd) { let eid=P.hcjed.s[sid].eid; P.hcjed.e[eid].hnd("bkm", {eid:eid, sid:sid, row:row, clr:clr, on:on, bkm:P.hcjed.s[sid].bkm}); } return on; }; P.HCJEDbkmMovWline=function(editor,up) { //moves bkm of currently moving row by alt+up/dn //šī fja atrisina problēmu, kad pie bookmarkotu rindu pārvietošanas ar alt+up/dn bookmarki negāja līdzi.. let sid=$(editor.container).data("sid"); if (!P.hcjed.s[sid].bkm) { return; } let rng=editor.selection.getRange(), rmin=MIN(rng.start.row,rng.end.row), rmax=MAX(rng.start.row,rng.end.row); let lines=P.hcjed.s[sid].ses.getLength()-1; for (let r=rmin; r<=rmax; r++) { if (!P.hcjed.s[sid].bkm[r]) { continue; } //šitai rindai anchora nav let c=P.hcjed.s[sid].bkm[r].c; let r1=r+IIF(up,-1,1); if (r1<0||r1>lines) { return; } P.HCJEDtoggleBkm(sid,r,c,false); //noņem bkm no vecās vietas TMR(20, P.HCJEDtoggleBkm, sid,r1,c,true); //uzliek jaunajā vietā (TMR ļauj novērst sadursmes ar vecajiem/citiem) } }; P.HCJEDnavigBkm=function(sid,nxt,clr) { //navigējas uz nxt/prv clr-bkm //♦ ja clr="*", tad navigējas bez clr-filtra if (P.hcjed.s[sid].bkm) { let eid=P.hcjed.s[sid].eid, pos=P.hcjed.e[eid].edt.getCursorPosition(); // Object {row: N, column: M} let r0=TN(pos.row); //• vispirms sasortējam bookmarkus: let rs=""; for (let r in P.hcjed.s[sid].bkm) { if (clr!="*" && P.hcjed.s[sid].bkm[r].c!=clr) { continue; } if (P.hcjed.s[sid].bkm[r]) { rs+=","+r; } } if (rs.SW(",")) { rs=rs.CL(1); } if (!rs) { return SND("https://faili.mediatrix.lv/snd/bkmend.wav"); } let arr=rs.SPL(","); ARRSORT(arr,true); //• izvedam navigāciju: let r=r0; if (nxt) { //navigācija uz nākamo bkm for (let i=0; ir0) { break; } } if (r==r0) { r=arr[0]; } if (r==arr[arr.length-1]) { //atrastais bkm ir pēdējais dokumentā SND("https://faili.mediatrix.lv/snd/bkmend.wav"); } } else { //navigācija uz iepr. bkm for (let i=arr.length-1; i>=0; i--) { r=arr[i]; if (r=0; i--) { rng1.start.column=i; let chr=LE(ses.getTextRange(rng1),1) if (IIN(chr,"._,_ _=_-_+_;_/_*_(_)_{_}_[_]_<_>_&_|_!_?","_")) { rng1.start.column=i+1; break; } } for (let i=cols; i<999; i++) { rng1.end.column=i; let chr=RI(ses.getTextRange(rng1),1) if (IIN(chr,"._,_ _=_-_+_;_/_*_(_)_{_}_[_]_<_>_&_|_!_?","_")) { rng1.end.column=i-1; break; } } let fnnm=TRIM(ses.getTextRange(rng1)); //meklējamais atslēgvārds (mainīgā vai fjas nos.) if (CT(fnnm,"'")||CT(fnnm,'"')||fnnm==""||ONLYDIG(LE(fnnm,1))) { return; } //fn/var/let name can't contain '/" P.hcjed.s[sid].curpos0=editor.getCursorPosition(); //iegaumējam patlabanējo kursora pozīciju - lai var atgriezties ar shift //–––––––– //♦ šeit ir primitīvs hcj5-variants - sekmīgi atrod fjas, mainīgos neuztur (tiem vajag regex, kas nezk. šeit nestrādā) let opts={ backwards:true, wrap:true, caseSensitive:true, wholeWord:true, skipCurrent:true}; let res=editor.find("function "+fnnm+"(",opts); if (!res) { res=editor.find("let "+fnnm+"=function(",opts); if (!res) { res=editor.find("var "+fnnm+"=function(",opts); } } if (res) { var pos=editor.getCursorPosition(); //atrastās occurences pozīcija editor.find(fnnm,{ caseSensitive:true, wholeWord:true, start:{row:pos.row}}); } else { SND("https://faili.mediatrix.lv/snd/notfound.wav"); } return; //–––––––– }, readOnly:false //lai nestrādā readOnly modē }); //ctrl/ edcmd.addCommand({ name: "ctrlShift/", bindKey: {win:"Ctrl-Shift-/", mac:"Command-Shift-/"}, exec: function(editor,line) { //♦ atpakaļvirzienā pēc go-to-definition navigējamies tikai 1 soli (history navigācijai ir savs hotKey): dziļāka navigācija te jauktu gaisu, tādēļ, ka pēc navigācijas uz priekšu, ir iespējams novietot kursoru citur un tad vēlrez uz citu priekšu utt, bet atpakaļ atgriežoties vairāk par 1 soli, zūd iespēja atkal doties uz priekšu, jo uz priekšu dodas tikai pēc principa "go-to-definition".. līdz ar to, šis handleris ir tikai vienkāršai pēdējās go-to-def atsaukšanai.. let sid=$(editor.container).data("sid"); if (P.hcjed.s[sid].curpos0) { editor.clearSelection(); editor.moveCursorTo(P.hcjed.s[sid].curpos0.row,P.hcjed.s[sid].curpos0.column); editor.scrollToLine(P.hcjed.s[sid].curpos0.row,true); } }, readOnly:false //lai nestrādā readOnly modē }); //ctrlShift/ } //bookmarki, navigācija }; //-- //• ielādējam ace-skriptus: if (E.aceJsLoaded===undefined) { //ace.js vēl nav ielādēts E.aceJsLoaded=false; //rāda, ka uzsākta skriptu ielāde - lai neizsauc otra instance //♦ ace* skriptus ielādējam manuāli - ja pielinko vietnei vai ļauj ace.js-am pašam pievilkt modes/snippetus, tad jaucas konteksti ar vecāka mdCM un ielādē neaktuālos //▲ reālajā dzīvē vienalga jauncas konteksti - jādomā, ka tīrā hcj5-projektā (bez mdCM) šitais novērsīsies - ja nē, tad var mēģināt lietot noconflict versiju (tad jāpielāgo arī visi mode-*.js faili noconflict modei) $.when ( //{ $.getScript("https://faili.mediatrix.lv/ace/ace.js") ).done(function(a,b,c) { //ace-skripts ir ielādējies //♦ ja šitos ▼ lādē kopā ar ace.js, tad consolē dafiga kļūdu "ace not declared" $.when ( //{ $.getScript("https://faili.mediatrix.lv/ace/ext-language_tools.js") //priekš autoComplete/snippets /* ♦ kaut arī (teorijā) ace.js šitos ▼ pats pievelk, vienalga forsējam manuālu ielādi katram skriptam - citādi lieto kkādu kešotu versiju un izmaiņas nestājas spēkā vai arī jaucas ar mdCM kešoto.. */ ,$.getScript("https://faili.mediatrix.lv/ace/theme-hcj.js") //-- valodu lexeri un snippeti: ,$.getScript("https://faili.mediatrix.lv/ace/mode-css.js") ,$.getScript("https://faili.mediatrix.lv/ace/snippets/css.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-hcj.js") // ,$.getScript("https://faili.mediatrix.lv/ace/snippets/hcj.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-hcjb.js") // ,$.getScript("https://faili.mediatrix.lv/ace/snippets/hcjb.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-hcjr.js") // ,$.getScript("https://faili.mediatrix.lv/ace/snippets/hcjr.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-hcjt.js") // ,$.getScript("https://faili.mediatrix.lv/ace/snippets/hcjt.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-hsf.js") // ,$.getScript("https://faili.mediatrix.lv/ace/snippets/hsf.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-htx.js") // ,$.getScript("https://faili.mediatrix.lv/ace/snippets/htx.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-html.js") ,$.getScript("https://faili.mediatrix.lv/ace/snippets/html.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-javascript.js") ,$.getScript("https://faili.mediatrix.lv/ace/snippets/javascript.js") ,$.getScript("https://faili.mediatrix.lv/ace/mode-php.js") ,$.getScript("https://faili.mediatrix.lv/ace/snippets/php.js") // ,$.getScript("https://faili.mediatrix.lv/ace/worker-html.js?sfx=asdf") //■ text, xml consolē met kkādu err, tpc nelietojam (kad ievajagās, salabo) //▲ ext-language_tools.js un /snippets faili - priekš autoCompletion/snippets, tikai //} skriptu ielāde ).done(function(a,b,c) { //skripts ir ielādējies //• linteru krāsojumu css: $("", { rel: "stylesheet", type: "text/css", href: "https://faili.mediatrix.lv/ace/hcj.css" }).appendTo("head"); //• ace- inicializācija: ace.config.set("basePath", "https://faili.mediatrix.lv/ace"); E.aceJsLoaded=true; //rāda, ka ace skripti ielādēti }); }); //} } } //case evt=READY/UPD else if (evt=="flxrszpns") { //elementa Paneļi resize for (let eid in P.hcjed.e) { if (typeof P.hcjed.e[eid].edt=="undefined") { continue; } P.hcjed.e[eid].edt.resize(); } } }); ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ elementa dizains: @[rnm|txtwmx2001Atsauces vārdsИмя для ссылкиReference name>>] @[mod|cmbH15mr20RežīmsРежимMode> TekstsТекстText>() javascript(javascript) html(html) php(php) css(css) xml(xml) hcj(hcj) hcjb(hcjb) hcjr(hcjr) hcjt(hcjt) hsf(hsf) htx(htx) > ] @[ron|cmbHmr20Tikai lasīšanaiТолько для чтенияRead only> НетNo>() ДаYes>(1) > ] @[mxl|txtnHRindu skaitsКол-во строкLine count>] -- @[bg|bg50020FonsФонBackground>>] @[fcss|fcss>] ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ b[<##>,id/#,cls/hcjed,dtv/aid hcjed,cls/<#rnm>,dtv/rnm <#rnm>,dtv/sid, dtv/ron <#ron>,dtv/mod <#mod>,dtv/mxl <#mxl>,<#bg>,<#fcss>] /*info: th.8dec22-12:38 ♦ ace.js-based hcj-editors; šobrīd ielāde tiek uzturēta tikai no (projekta) skripta • bērni netiek uzturēti • mxl - ja padots, tad strādā kā auto-height (saistošs ar ron helpā) • editori tiek identificēti pēc rnm||aid, sessijas - pēc sid||rnm||aid (vienā fiziskā editorā var ielādēt dažādas sessijas: normāli, katram ielādējamajam contentam jāpadod atšķirīgs sid, lai bookmarki, foldējumi utt tiek attiecināti uz konkrēto contentu) • ctrl+space atver auto-complete */