From 29e5dc0eaecb940cfe57f64e4cb98b16cf01491e Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 15 Mar 2014 14:09:06 +0000 Subject: [PATCH] Language related items moved to seperate files Makes it easier for users to customise languages supported --- editor.php | 10 +-- files.php | 1 + lib/file-type-icons.css | 17 ++++ lib/file-types.css | 20 +---- lib/ice-coder.js | 132 ++---------------------------- processes/on-editor-load.php | 152 +++++++++++++++++++++++++++++++++++ 6 files changed, 179 insertions(+), 153 deletions(-) create mode 100644 lib/file-type-icons.css create mode 100644 processes/on-editor-load.php diff --git a/editor.php b/editor.php index 1d14e00..01f06cc 100644 --- a/editor.php +++ b/editor.php @@ -54,6 +54,7 @@ h2 {color: rgba(0,198,255,0.7)} .heading {color:#888} + @@ -150,13 +151,6 @@ CodeMirror.keyMap.ICEcoder = { "Ctrl-Down" : false, fallthrough: ["default"] }; -CodeMirror.commands.autocomplete = function(cm) { - var langType = top.ICEcoder.caretLocType; - if (["JavaScript","CoffeeScript","SQL","CSS","HTML","XML","Content"].indexOf(langType)>-1) { - if (langType=="XML"||langType=="Content") {langType="HTML"}; - CodeMirror.showHint(cm,CodeMirror.hint[langType.toLowerCase()]); - } -} function createNewCMInstance(num) { var fileName = top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]; @@ -317,6 +311,8 @@ var debounce; + + \ No newline at end of file diff --git a/files.php b/files.php index 69865e5..9bd854e 100644 --- a/files.php +++ b/files.php @@ -7,6 +7,7 @@ + diff --git a/lib/file-type-icons.css b/lib/file-type-icons.css new file mode 100644 index 0000000..3981f7e --- /dev/null +++ b/lib/file-type-icons.css @@ -0,0 +1,17 @@ +/* Additional file types */ +.fileManager LI.ext-coffee:before {background-position: -48px 0} +.fileManager LI.ext-css:before {background-position: -64px 0} +.fileManager LI.ext-gif:before {background-position: -80px 0} +.fileManager LI.ext-htm:before, .fileManager LI.ext-html:before {background-position: -96px 0} +.fileManager LI.ext-jpg:before, .fileManager LI.ext-jpeg:before {background-position: -112px 0} +.fileManager LI.ext-js:before, .fileManager LI.ext-json:before {background-position: -128px 0} +.fileManager LI.ext-less:before {background-position: -144px 0} +.fileManager LI.ext-md:before {background-position: -160px 0} +.fileManager LI.ext-php:before {background-position: -176px 0} +.fileManager LI.ext-png:before {background-position: -192px 0} +.fileManager LI.ext-py:before {background-position: -208px 0} +.fileManager LI.ext-rb:before, .fileManager LI.ext-ruby:before {background-position: -224px 0} +.fileManager LI.ext-sql:before {background-position: -240px 0} +.fileManager LI.ext-txt:before {background-position: -256px 0} +.fileManager LI.ext-xml:before {background-position: -272px 0} +.fileManager LI.ext-zip:before {background-position: -288px 0} \ No newline at end of file diff --git a/lib/file-types.css b/lib/file-types.css index b0b9b89..084ecd8 100644 --- a/lib/file-types.css +++ b/lib/file-types.css @@ -22,22 +22,4 @@ margin-top: -19px; } } -.fileManager LI.pft-file:before {background-position: -32px 0} - -/* Additional file types */ -.fileManager LI.ext-coffee:before {background-position: -48px 0} -.fileManager LI.ext-css:before {background-position: -64px 0} -.fileManager LI.ext-gif:before {background-position: -80px 0} -.fileManager LI.ext-htm:before, .fileManager LI.ext-html:before {background-position: -96px 0} -.fileManager LI.ext-jpg:before, .fileManager LI.ext-jpeg:before {background-position: -112px 0} -.fileManager LI.ext-js:before, .fileManager LI.ext-json:before {background-position: -128px 0} -.fileManager LI.ext-less:before {background-position: -144px 0} -.fileManager LI.ext-md:before {background-position: -160px 0} -.fileManager LI.ext-php:before {background-position: -176px 0} -.fileManager LI.ext-png:before {background-position: -192px 0} -.fileManager LI.ext-py:before {background-position: -208px 0} -.fileManager LI.ext-rb:before, .fileManager LI.ext-ruby:before {background-position: -224px 0} -.fileManager LI.ext-sql:before {background-position: -240px 0} -.fileManager LI.ext-txt:before {background-position: -256px 0} -.fileManager LI.ext-xml:before {background-position: -272px 0} -.fileManager LI.ext-zip:before {background-position: -288px 0} \ No newline at end of file +.fileManager LI.pft-file:before {background-position: -32px 0} \ No newline at end of file diff --git a/lib/ice-coder.js b/lib/ice-coder.js index 43c3949..1971a9c 100644 --- a/lib/ice-coder.js +++ b/lib/ice-coder.js @@ -297,31 +297,9 @@ var ICEcoder = { return false; }, - // Switch the CodeMirror mode on demand - switchMode: function(mode) { - var cM, fileName; - - cM = ICEcoder.getcMInstance(); - fileName = ICEcoder.openFiles[ICEcoder.selectedTab-1]; - if (cM && mode) { - cM.setOption("mode",mode); - } else if (cM && fileName) { - fileName.indexOf('.js')>0 ? cM.setOption("mode","javascript") - : fileName.indexOf('.coffee')>0 ? cM.setOption("mode","coffeescript") - : fileName.indexOf('.rb')>0 ? cM.setOption("mode","ruby") - : fileName.indexOf('.py')>0 ? cM.setOption("mode","python") - : fileName.indexOf('.css')>0 ? cM.setOption("mode","css") - : fileName.indexOf('.less')>0 ? cM.setOption("mode","less") - : fileName.indexOf('.md')>0 ? cM.setOption("mode","markdown") - : fileName.indexOf('.xml')>0 ? cM.setOption("mode","xml") - : fileName.indexOf('.sql')>0 ? cM.setOption("mode","text/x-mysql") // also text/x-sql, text/x-mariadb, text/x-cassandra or text/x-plsql - : cM.setOption("mode","application/x-httpd-php"); - } - }, - // Comment/uncomment line or selected range on keypress lineCommentToggle: function() { - var cM, cursorPos, linePos, lineContent, lCLen, adjustCursor, startLine, endLine; + var cM, cursorPos, linePos, lineContent, lCLen, adjustCursor; cM = ICEcoder.getcMInstance(); cursorPos = cM.getCursor().ch; @@ -330,51 +308,8 @@ var ICEcoder = { lCLen = lineContent.length; adjustCursor = 2; - if (["JavaScript","CoffeeScript","PHP","Python","Ruby","CSS","SQL"].indexOf(ICEcoder.caretLocType)>-1) { - if (cM.somethingSelected()) { - if (ICEcoder.caretLocType=="Ruby"||ICEcoder.caretLocType=="Python") { - startLine = cM.getCursor(true).line; - endLine = cM.getCursor().line; - for (var i=startLine; i<=endLine; i++) { - cM.setLine(i, cM.getLine(i).slice(0,1)!="#" - ? "#" + cM.getLine(i) - : cM.getLine(i).slice(1,cM.getLine(i).length)); - } - } else { - cM.replaceSelection(cM.getSelection().slice(0,2)!="/*" - ? "/*" + cM.getSelection() + "*/" - : cM.getSelection().slice(2,cM.getSelection().length-2)); - } - } else { - if (["CoffeeScript","CSS","SQL"].indexOf(ICEcoder.caretLocType)>-1) { - cM.setLine(linePos, lineContent.slice(0,2)!="/*" - ? "/*" + lineContent + "*/" - : lineContent.slice(2,lCLen).slice(0,lCLen-4)); - if (lineContent.slice(0,2)=="/*") {adjustCursor = -adjustCursor}; - } else if (ICEcoder.caretLocType=="Ruby") { - cM.setLine(linePos, lineContent.slice(0,1)!="#" - ? "#" + lineContent - : lineContent.slice(1,lCLen)); - if (lineContent.slice(0,1)=="#") {adjustCursor = -adjustCursor}; - } else { - cM.setLine(linePos, lineContent.slice(0,2)!="//" - ? "//" + lineContent - : lineContent.slice(2,lCLen)); - if (lineContent.slice(0,2)=="//") {adjustCursor = -adjustCursor}; - } - } - } else { - if (cM.somethingSelected()) { - cM.replaceSelection(cM.getSelection().slice(0,4)!="<\!--" - ? "<\!--" + cM.getSelection() + "//-->" - : cM.getSelection().slice(4,cM.getSelection().length-5)); - } else { - cM.setLine(linePos, lineContent.slice(0,4)!="<\!--" - ? "<\!--" + lineContent + "//-->" - : lineContent.slice(4,lCLen).slice(0,lCLen-9)); - adjustCursor = lineContent.slice(0,4)=="<\!--" ? -4 : 4; - } - } + ICEcoder.lineCommentToggleSub(cM, cursorPos, linePos, lineContent, lCLen, adjustCursor); + if (!cM.somethingSelected()) {cM.setCursor(linePos, cursorPos+adjustCursor)}; }, @@ -1337,7 +1272,7 @@ var ICEcoder = { // Work out the nesting depth location on demand and update our display if required getNestLocation: function(updateNestDisplay) { - var cM, nestCheck, state, cx, startPos, fileName, events; + var cM, nestCheck, state, cx, startPos, fileName; cM = ICEcoder.getcMInstance(); if (cM) { @@ -1376,41 +1311,13 @@ var ICEcoder = { ICEcoder.nestDisplay.innerHTML = ""; if ("undefined" != typeof ICEcoder.openFiles[ICEcoder.selectedTab-1]) { fileName = ICEcoder.openFiles[ICEcoder.selectedTab-1]; - if (["js","coffee","css","less","sql"].indexOf(fileName.split(".")[1])<0 && - (nestCheck.indexOf("include(")==-1)&&(nestCheck.indexOf("include_once(")==-1)) { - // Then for all the array items, output as the nest display - for (var i=0;i'}; - ICEcoder.nestDisplay.innerHTML += ''+ICEcoder.htmlTagArray[i]+''; - ICEcoder.nestDisplay.innerHTML += i' - : '
'; - } - if (ICEcoder.tagString != "script") { - ICEcoder.nestDisplay.innerHTML += 'content'; - } - } + ICEcoder.getNestLocationSub(nestCheck, fileName); } } } }, - // Indicate if the nesting structure of the code is OK - updateNestingIndicator: function() { - var cM, nestOK, fileName; - - cM = ICEcoder.getcMInstance(); - nestOK = true; - fileName = ICEcoder.openFiles[ICEcoder.selectedTab-1]; - if (cM && fileName && ["js","coffee","css","less","sql"].indexOf(fileName.split(".")[1])==-1) { - nestOK = cM.getTokenAt({line:cM.lineCount(),ch:cM.lineInfo(cM.lineCount()-1).text.length}).className != "error" ? true : false; - } - ICEcoder.nestValid.style.background = nestOK ? "#0b0" : "#f00"; - ICEcoder.nestValid.title = nestOK ? "Nesting OK" : "Nesting Broken"; - }, - // Get the caret position getCaretPosition: function() { var cM, line, ch, chPos; @@ -1446,35 +1353,6 @@ var ICEcoder = { top.ICEcoder.charDisplay.style.display = show == "char" ? "inline-block" : "none"; }, - // Determine which area of the document we're in - caretLocationType: function() { - var cM, caretLocType, caretChunk, fileName; - - cM = ICEcoder.getcMInstance(); - caretLocType = "Unknown"; - caretChunk = cM.getValue().substr(0,ICEcoder.caretPos+1); - if (caretChunk.lastIndexOf("caretChunk.lastIndexOf("")&&caretLocType=="Unknown") {caretLocType = "JavaScript"} - else if (caretChunk.lastIndexOf("caretChunk.lastIndexOf("?>")&&caretLocType=="Unknown") {caretLocType = "PHP"} - else if (caretChunk.lastIndexOf("<%")>caretChunk.lastIndexOf("%>")&&caretLocType=="Unknown") {caretLocType = "Ruby"} - else if (caretChunk.lastIndexOf("<")>caretChunk.lastIndexOf(">")&&caretLocType=="Unknown") {caretLocType = "HTML"} - else if (caretLocType=="Unknown") {caretLocType = "Content"}; - - fileName = ICEcoder.openFiles[ICEcoder.selectedTab-1]; - if (fileName) { - if (fileName.indexOf(".js")>0) {caretLocType="JavaScript"} - else if (fileName.indexOf(".coffee")>0) {caretLocType="CoffeeScript"} - else if (fileName.indexOf(".py")>0) {caretLocType="Python"} - else if (fileName.indexOf(".rb")>0) {caretLocType="Ruby"} - else if (fileName.indexOf(".css")>0) {caretLocType="CSS"} - else if (fileName.indexOf(".less")>0) {caretLocType="LESS"} - else if (fileName.indexOf(".md")>0) {caretLocType="Markdown"} - else if (fileName.indexOf(".xml")>0) {caretLocType="XML"} - else if (fileName.indexOf(".sql")>0) {caretLocType="SQL"}; - } - - ICEcoder.caretLocType = caretLocType; - }, - // Show & hide target element showHide: function(doVis,elem) { elem.style.visibility = doVis=="show" ? 'visible' : 'hidden'; diff --git a/processes/on-editor-load.php b/processes/on-editor-load.php new file mode 100644 index 0000000..b2c012c --- /dev/null +++ b/processes/on-editor-load.php @@ -0,0 +1,152 @@ + + \ No newline at end of file