├── .gitignore ├── CFScript.sublime-completions ├── CFScript.tmPreferences ├── CFScriptEmbedded.tmPreferences ├── CFScriptFunctionArgs.sublime-completions ├── Cfscript.tmLanguage ├── ColdFusion.sublime-settings ├── ColdFusion.tmPreferences ├── ColdFusionCFC.tmLanguage ├── Coldfusion.tmLanguage ├── Default (OSX).sublime-keymap ├── Default.sublime-commands ├── Default.sublime-keymap ├── HTML+CFML.tmLanguage ├── JavaDoc Add Line.sublime-macro ├── JavaDoc Delete Line.sublime-macro ├── LICENSE ├── Main.sublime-menu ├── Symbol List Queries.tmPreferences ├── Symbol List.tmPreferences ├── Terminate Statement.sublime-macro ├── brackets.tmPreferences ├── cflib.py ├── cfml.py ├── coldfusiontagcompletions.py ├── functioncompletions.py ├── importer └── import.cfc ├── ondotcompletions.py ├── package-metadata.json ├── readme.md ├── snippets └── cfscript │ ├── CFScript-NewCFC.sublime-snippet │ ├── CFScript-NewFunction.sublime-snippet │ ├── CFScript-SwitchCase.sublime-snippet │ └── CFScript-TryCatch.sublime-snippet ├── taglib ├── __init__.py ├── cf10.py ├── cf7.py ├── cf8.py └── cf9.py └── tagoperators.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.cache 2 | *.pyc 3 | 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /CFScript.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "meta.name.interpolated.hash, source.cfscript - source.sql - text.html.cfm - string - meta - comment, source.cfscript.embedded.cfml - string", 3 | "completions": 4 | [ 5 | 6 | // misc completions 7 | { "trigger": "var", "contents": "var $1 = $2"}, 8 | 9 | { "trigger": "true", "contents": "true"}, 10 | { "trigger": "false", "contents": "false"}, 11 | 12 | { "trigger": "TRUE", "contents": "TRUE"}, 13 | { "trigger": "FALSE", "contents": "FALSE"}, 14 | 15 | { "trigger": "return", "contents": "return "}, 16 | { "trigger": "RETURN", "contents": "RETURN "}, 17 | 18 | // scopes 19 | { "trigger": "application", "contents": "application"}, 20 | { "trigger": "APPLICATION", "contents": "APPLICATION"}, 21 | 22 | { "trigger": "arguments", "contents": "arguments"}, 23 | { "trigger": "ARGUMENTS", "contents": "ARGUMENTS"}, 24 | 25 | { "trigger": "attributes", "contents": "attributes"}, 26 | { "trigger": "ATTRIBUTES", "contents": "ATTRIBUTES"}, 27 | 28 | { "trigger": "caller", "contents": "caller"}, 29 | { "trigger": "CALLER", "contents": "CALLER"}, 30 | 31 | { "trigger": "CGI", "contents": "CGI"}, 32 | { "trigger": "ThisTag", "contents": "ThisTag"}, 33 | 34 | { "trigger": "client", "contents": "client"}, 35 | { "trigger": "CLIENT", "contents": "CLIENT"}, 36 | 37 | { "trigger": "cookie", "contents": "cookie"}, 38 | { "trigger": "COOKIE", "contents": "COOKIE"}, 39 | 40 | { "trigger": "form", "contents": "form"}, 41 | { "trigger": "FORM", "contents": "FORM"}, 42 | 43 | { "trigger": "request", "contents": "request"}, 44 | { "trigger": "REQUEST", "contents": "REQUEST"}, 45 | 46 | { "trigger": "local", "contents": "local"}, 47 | { "trigger": "LOCAL", "contents": "LOCAL"}, 48 | 49 | { "trigger": "server", "contents": "server"}, 50 | { "trigger": "SERVER", "contents": "SERVER"}, 51 | 52 | { "trigger": "session", "contents": "session"}, 53 | { "trigger": "SESSION", "contents": "SESSION"}, 54 | 55 | { "trigger": "thread", "contents": "thread"}, 56 | { "trigger": "THREAD", "contents": "THREAD"}, 57 | 58 | { "trigger": "url", "contents": "url"}, 59 | { "trigger": "URL", "contents": "URL"}, 60 | 61 | { "trigger": "this", "contents": "this"}, 62 | { "trigger": "THIS", "contents": "THIS"}, 63 | 64 | { "trigger": "variables", "contents": "variables"}, 65 | { "trigger": "VARIABLES", "contents": "VARIABLES"}, 66 | 67 | // functions 68 | { "trigger": "abs\tfn. (cfscript)", "contents": "abs(${1:${2:number}})"}, 69 | { "trigger": "aCos\tfn. (cfscript)", "contents": "aCos(${1:${2:number}})"}, 70 | { "trigger": "arrayAppend\tfn. (cfscript)", "contents": "arrayAppend(${1:${2:array}, ${3:value}})"}, 71 | { "trigger": "arrayAvg\tfn. (cfscript)", "contents": "arrayAvg(${1:${2:array}})"}, 72 | { "trigger": "arrayClear\tfn. (cfscript)", "contents": "arrayClear(${1:${2:array}})"}, 73 | { "trigger": "arrayDeleteAt\tfn. (cfscript)", "contents": "arrayDeleteAt(${1:${2:array}, ${3:position}})"}, 74 | { "trigger": "arrayInsertAt\tfn. (cfscript)", "contents": "arrayInsertAt(${1:${2:array}, ${3:position}, ${4:value}})"}, 75 | { "trigger": "arrayIsEmpty\tfn. (cfscript)", "contents": "arrayIsEmpty(${1:${2:array}})"}, 76 | { "trigger": "arrayLen\tfn. (cfscript)", "contents": "arrayLen(${1:${2:array}})"}, 77 | { "trigger": "arrayMax\tfn. (cfscript)", "contents": "arrayMax(${1:${2:array}})"}, 78 | { "trigger": "arrayMin\tfn. (cfscript)", "contents": "arrayMin(${1:${2:array}})"}, 79 | { "trigger": "arrayNew\tfn. (cfscript)", "contents": "arrayNew(${1:${2:dimension}})"}, 80 | { "trigger": "arrayPrepend\tfn. (cfscript)", "contents": "arrayPrepend(${1:${2:array}, ${3:value}})"}, 81 | { "trigger": "arrayResize\tfn. (cfscript)", "contents": "arrayResize(${1:${2:array}, ${3:size}})"}, 82 | { "trigger": "arraySet\tfn. (cfscript)", "contents": "arraySet(${1:${2:array}, ${3:start_pos}, ${4:end_pos}, ${5:value}})"}, 83 | { "trigger": "arraySort\tfn. (cfscript)", "contents": "arraySort(${1:${2:array}, \"${3:sort_type}\"${4:, [sort_order]}})"}, 84 | { "trigger": "arraySum\tfn. (cfscript)", "contents": "arraySum(${1:${2:array}})"}, 85 | { "trigger": "arraySwap\tfn. (cfscript)", "contents": "arraySwap(${1:${2:array}, ${3:position1}, ${4:position2}})"}, 86 | { "trigger": "arrayToList\tfn. (cfscript)", "contents": "arrayToList(${1:${2:array}${3:, [delimiter]}})"}, 87 | { "trigger": "asc\tfn. (cfscript)", "contents": "asc(${1:\"${2:string}\"})"}, 88 | { "trigger": "aSin\tfn. (cfscript)", "contents": "aSin(${1:${2:number}})"}, 89 | { "trigger": "atn\tfn. (cfscript)", "contents": "atn(${1:${2:number}})"}, 90 | { "trigger": "binaryDecode\tfn. (cfscript)", "contents": "binaryDecode(${1:\"${2:string}\", \"${3:binaryencoding}\"})"}, 91 | { "trigger": "binaryEncode\tfn. (cfscript)", "contents": "binaryEncode(${1:${2:binarydata}, \"${3:encoding}\"})"}, 92 | { "trigger": "bitAnd\tfn. (cfscript)", "contents": "bitAnd(${1:${2:number1}, ${3:number2}})"}, 93 | { "trigger": "bitMaskClear\tfn. (cfscript)", "contents": "bitMaskClear(${1:${2:number}, ${3:start}, ${4:length}})"}, 94 | { "trigger": "bitMaskRead\tfn. (cfscript)", "contents": "bitMaskRead(${1:${2:number}, ${3:start}, ${4:length}})"}, 95 | { "trigger": "bitMaskSet\tfn. (cfscript)", "contents": "bitMaskSet(${1:${2:number}, ${3:mask}, ${4:start}, ${5:length}})"}, 96 | { "trigger": "bitNot\tfn. (cfscript)", "contents": "bitNot(${1:${2:number}})"}, 97 | { "trigger": "bitOr\tfn. (cfscript)", "contents": "bitOr(${1:${2:number1}, ${3:number2}})"}, 98 | { "trigger": "bitSHLN\tfn. (cfscript)", "contents": "bitSHLN(${1:${2:number}, ${3:count}})"}, 99 | { "trigger": "bitSHRN\tfn. (cfscript)", "contents": "bitSHRN(${1:${2:number}, ${3:count}})"}, 100 | { "trigger": "bitXor\tfn. (cfscript)", "contents": "bitXor(${1:${2:number1}, ${3:number2}})"}, 101 | { "trigger": "ceiling\tfn. (cfscript)", "contents": "ceiling(${1:${2:number}})"}, 102 | { "trigger": "charsetDecode\tfn. (cfscript)", "contents": "charsetDecode(${1:\"${2:string}\", \"${3:encoding}\"})"}, 103 | { "trigger": "charsetEncode\tfn. (cfscript)", "contents": "charsetEncode(${1:${2:binaryobject}, \"${3:encoding}\"})"}, 104 | { "trigger": "chr\tfn. (cfscript)", "contents": "chr(${1:${2:number}})"}, 105 | { "trigger": "cJustify\tfn. (cfscript)", "contents": "cJustify(${1:\"${2:string}\", ${3:length}})"}, 106 | { "trigger": "compare\tfn. (cfscript)", "contents": "compare(${1:\"${2:string1}\", \"${3:string2}\"})"}, 107 | { "trigger": "compareNoCase\tfn. (cfscript)", "contents": "compareNoCase(${1:\"${2:string1}\", \"${3:string2}\"})"}, 108 | { "trigger": "cos\tfn. (cfscript)", "contents": "cos(${1:${2:number}})"}, 109 | { "trigger": "createDate\tfn. (cfscript)", "contents": "createDate(${1:${2:year}, ${3:month}, ${4:day}})"}, 110 | { "trigger": "createDateTime\tfn. (cfscript)", "contents": "createDateTime(${1:${2:year}, ${3:month}, ${4:day}, ${5:hour}, ${6:minute}, ${7:second}})"}, 111 | { "trigger": "createObject\tfn. (cfscript)", "contents": "createObject(${1:\"${2:type}\", \"${3:context}\", \"${4:class}\", \"${5:locale}\", \"${6:servername}\", \"${7:component_name}\", \"${8:urltowsdl}\"${9:, [portname]}})"}, 112 | { "trigger": "createODBCDate\tfn. (cfscript)", "contents": "createODBCDate(${1:${2:date}})"}, 113 | { "trigger": "createODBCDateTime\tfn. (cfscript)", "contents": "createODBCDateTime(${1:${2:date}})"}, 114 | { "trigger": "createODBCTime\tfn. (cfscript)", "contents": "createODBCTime(${1:${2:date}})"}, 115 | { "trigger": "createTime\tfn. (cfscript)", "contents": "createTime(${1:${2:hour}, ${3:minute}, ${4:second}})"}, 116 | { "trigger": "createTimeSpan\tfn. (cfscript)", "contents": "createTimeSpan(${1:${2:days}, ${3:hours}, ${4:minutes}, ${5:seconds}})"}, 117 | { "trigger": "createUUID\tfn. (cfscript)", "contents": "createUUID(${1:})"}, 118 | { "trigger": "dateAdd\tfn. (cfscript)", "contents": "dateAdd(${1:\"${2:datepart}\", ${3:number}, ${4:date}})"}, 119 | { "trigger": "dateCompare\tfn. (cfscript)", "contents": "dateCompare(${1:${2:date1}, ${3:date2}${4:, [datePart]}})"}, 120 | { "trigger": "dateConvert\tfn. (cfscript)", "contents": "dateConvert(${1:\"${2:type}\", ${3:date}})"}, 121 | { "trigger": "dateDiff\tfn. (cfscript)", "contents": "dateDiff(${1:\"${2:datepart}\", ${3:date1}, ${4:date2}})"}, 122 | { "trigger": "dateFormat\tfn. (cfscript)", "contents": "dateFormat(${1:${2:date}${3:, [mask]}})"}, 123 | { "trigger": "datePart\tfn. (cfscript)", "contents": "datePart(${1:\"${2:datepart}\", ${3:date}})"}, 124 | { "trigger": "day\tfn. (cfscript)", "contents": "day(${1:${2:date}})"}, 125 | { "trigger": "dayOfWeek\tfn. (cfscript)", "contents": "dayOfWeek(${1:${2:date}})"}, 126 | { "trigger": "dayOfWeekAsString\tfn. (cfscript)", "contents": "dayOfWeekAsString(${1:${2:day_of_week}})"}, 127 | { "trigger": "dayOfYear\tfn. (cfscript)", "contents": "dayOfYear(${1:${2:date}})"}, 128 | { "trigger": "daysInMonth\tfn. (cfscript)", "contents": "daysInMonth(${1:${2:date}})"}, 129 | { "trigger": "daysInYear\tfn. (cfscript)", "contents": "daysInYear(${1:${2:date}})"}, 130 | { "trigger": "de\tfn. (cfscript)", "contents": "de(${1:\"${2:string}\"})"}, 131 | { "trigger": "decimalFormat\tfn. (cfscript)", "contents": "decimalFormat(${1:${2:number}})"}, 132 | { "trigger": "decrementValue\tfn. (cfscript)", "contents": "decrementValue(${1:${2:number}})"}, 133 | { "trigger": "decrypt\tfn. (cfscript)", "contents": "decrypt(${1:\"${2:encrypted_string}\", \"${3:seed}\"})"}, 134 | { "trigger": "deleteClientVariable\tfn. (cfscript)", "contents": "deleteClientVariable(${1:\"${2:name}\"})"}, 135 | { "trigger": "deserializeJSON\tfn. (cfscript)", "contents": "deserializeJSON(${1:string})"}, 136 | { "trigger": "directoryList\tfn. (cfscript)", "contents": "directoryList(${1:\"${2:path}\"${3:, [recurse]}${4:, [listInfo]}${5:, [filter]}${6:, [sort]}})"}, 137 | { "trigger": "directoryExists\tfn. (cfscript)", "contents": "directoryExists(${1:\"${2:absolute_path}\"})"}, 138 | { "trigger": "dollarFormat\tfn. (cfscript)", "contents": "dollarFormat(${1:${2:number}})"}, 139 | { "trigger": "duplicate\tfn. (cfscript)", "contents": "duplicate(${1:${2:variable}})"}, 140 | { "trigger": "encrypt\tfn. (cfscript)", "contents": "encrypt(${1:\"${2:string}\", \"${3:key}\"${4:, [algorithm]}${5:, [encoding]}})"}, 141 | { "trigger": "evaluate\tfn. (cfscript)", "contents": "evaluate(${1:\"${2:expression1}\"${3:, [expression2]}${4:, [expressionN]}})"}, 142 | { "trigger": "exp\tfn. (cfscript)", "contents": "exp(${1:${2:number}})"}, 143 | { "trigger": "expandPath\tfn. (cfscript)", "contents": "expandPath(${1:\"${2:relative_path}\"})"}, 144 | { "trigger": "fileExists\tfn. (cfscript)", "contents": "fileExists(${1:\"${2:path}\"})"}, 145 | { "trigger": "find\tfn. (cfscript)", "contents": "find(${1:\"${2:substring}\", \"${3:string}\"${4:, [start]}})"}, 146 | { "trigger": "findNoCase\tfn. (cfscript)", "contents": "findNoCase(${1:\"${2:substring}\", \"${3:string}\"${4:, [start]}})"}, 147 | { "trigger": "findOneOf\tfn. (cfscript)", "contents": "findOneOf(${1:\"${2:set}\", \"${3:string}\"${4:, [start]}})"}, 148 | { "trigger": "firstDayOfMonth\tfn. (cfscript)", "contents": "firstDayOfMonth(${1:${2:date}})"}, 149 | { "trigger": "fix\tfn. (cfscript)", "contents": "fix(${1:${2:number}})"}, 150 | { "trigger": "formatBaseN\tfn. (cfscript)", "contents": "formatBaseN(${1:${2:number}, ${3:radix}})"}, 151 | { "trigger": "generateSecretKey\tfn. (cfscript)", "contents": "generateSecretKey(${1:${2:[algorithm]}})"}, 152 | { "trigger": "getAuthUser\tfn. (cfscript)", "contents": "getAuthUser(${1:})"}, 153 | { "trigger": "getBaseTagData\tfn. (cfscript)", "contents": "getBaseTagData(${1:\"${2:tagname}\"${3:, [instancenumber]}})"}, 154 | { "trigger": "getBaseTagList\tfn. (cfscript)", "contents": "getBaseTagList(${1:})"}, 155 | { "trigger": "getBaseTemplatePath\tfn. (cfscript)", "contents": "getBaseTemplatePath(${1:})"}, 156 | { "trigger": "getClientVariablesList\tfn. (cfscript)", "contents": "getClientVariablesList(${1:})"}, 157 | { "trigger": "getContextRoot\tfn. (cfscript)", "contents": "getContextRoot(${1:})"}, 158 | { "trigger": "getCurrentTemplatePath\tfn. (cfscript)", "contents": "getCurrentTemplatePath(${1:})"}, 159 | { "trigger": "getDirectoryFromPath\tfn. (cfscript)", "contents": "getDirectoryFromPath(${1:\"${2:path}\"})"}, 160 | { "trigger": "getEncoding\tfn. (cfscript)", "contents": "getEncoding(${1:\"${2:scope_name}\"})"}, 161 | { "trigger": "getException\tfn. (cfscript)", "contents": "getException(${1:${2:javaobject}})"}, 162 | { "trigger": "getFileFromPath\tfn. (cfscript)", "contents": "getFileFromPath(${1:\"${2:path}\"})"}, 163 | { "trigger": "getFunctionList\tfn. (cfscript)", "contents": "getFunctionList(${1:})"}, 164 | { "trigger": "getGatewayHelper\tfn. (cfscript)", "contents": "getGatewayHelper(${1:\"${2:gatewayID}\"})"}, 165 | { "trigger": "getHTTPRequestData\tfn. (cfscript)", "contents": "getHTTPRequestData(${1:})"}, 166 | { "trigger": "getHTTPTimeString\tfn. (cfscript)", "contents": "getHTTPTimeString(${1:${2:datetime}})"}, 167 | { "trigger": "getK2ServerDocCount\tfn. (cfscript)", "contents": "getK2ServerDocCount(${1:})"}, 168 | { "trigger": "getK2ServerDocCountLimit\tfn. (cfscript)", "contents": "getK2ServerDocCountLimit(${1:})"}, 169 | { "trigger": "getLocale\tfn. (cfscript)", "contents": "getLocale(${1:})"}, 170 | { "trigger": "getLocaleDisplayName\tfn. (cfscript)", "contents": "getLocaleDisplayName(${1:})"}, 171 | { "trigger": "getMetaData\tfn. (cfscript)", "contents": "getMetaData(${1:${2:object}})"}, 172 | { "trigger": "getMetricData\tfn. (cfscript)", "contents": "getMetricData(${1:\"${2:mode}\"})"}, 173 | { "trigger": "getPageContext\tfn. (cfscript)", "contents": "getPageContext(${1:})"}, 174 | { "trigger": "getProfileSections\tfn. (cfscript)", "contents": "getProfileSections(${1:\"${2:inifile}\"})"}, 175 | { "trigger": "getProfileString\tfn. (cfscript)", "contents": "getProfileString(${1:\"${2:inipath}\", \"${3:section}\", \"${4:entry}\"})"}, 176 | { "trigger": "getSOAPRequest\tfn. (cfscript)", "contents": "getSOAPRequest(${1:})"}, 177 | { "trigger": "getSOAPRequestHeader\tfn. (cfscript)", "contents": "getSOAPRequestHeader(${1:\"${2:namespace}\", \"${3:name}\"${4:, [asXML]}})"}, 178 | { "trigger": "getSOAPResponse\tfn. (cfscript)", "contents": "getSOAPResponse(${1:\"${2:webservice}\"})"}, 179 | { "trigger": "getSOAPResponseHeader\tfn. (cfscript)", "contents": "getSOAPResponseHeader(${1:${2:webservice}, \"${3:namespace}\", \"${4:name}\"${5:, [asXML]}})"}, 180 | { "trigger": "getTempDirectory\tfn. (cfscript)", "contents": "getTempDirectory(${1:})"}, 181 | { "trigger": "getTempFile\tfn. (cfscript)", "contents": "getTempFile(${1:\"${2:dir}\", \"${3:prefix}\"})"}, 182 | { "trigger": "getTemplatePath\tfn. (cfscript)", "contents": "getTemplatePath(${1:})"}, 183 | { "trigger": "getTickCount\tfn. (cfscript)", "contents": "getTickCount(${1:})"}, 184 | { "trigger": "getTimeZoneInfo\tfn. (cfscript)", "contents": "getTimeZoneInfo(${1:\"${2:text}\"})"}, 185 | { "trigger": "getToken\tfn. (cfscript)", "contents": "getToken(${1:\"${2:string}\", ${3:index}${4:, [delimiters]}})"}, 186 | { "trigger": "hash\tfn. (cfscript)", "contents": "hash(${1:\"${2:string}\"${3:, [algorithm]}${4:, [encoding]}})"}, 187 | { "trigger": "hour\tfn. (cfscript)", "contents": "hour(${1:${2:date}})"}, 188 | { "trigger": "htmlCodeFormat\tfn. (cfscript)", "contents": "htmlCodeFormat(${1:\"${2:string}\"${3:, [version]}})"}, 189 | { "trigger": "htmlEditFormat\tfn. (cfscript)", "contents": "htmlEditFormat(${1:\"${2:string}\"${3:, [version]}})"}, 190 | { "trigger": "iif\tfn. (cfscript)", "contents": "iif(${1:${2:condition}, \"${3:expression1}\", \"${4:expression2}\"})"}, 191 | { "trigger": "incrementValue\tfn. (cfscript)", "contents": "incrementValue(${1:${2:number}})"}, 192 | { "trigger": "inputBaseN\tfn. (cfscript)", "contents": "inputBaseN(${1:\"${2:string}\", \"${3:radix}\"})"}, 193 | { "trigger": "insert\tfn. (cfscript)", "contents": "insert(${1:\"${2:substring}\", \"${3:string}\", ${4:position}})"}, 194 | { "trigger": "int\tfn. (cfscript)", "contents": "int(${1:${2:number}})"}, 195 | { "trigger": "isArray\tfn. (cfscript)", "contents": "isArray(${1:${2:value}${3:, [number]}})"}, 196 | { "trigger": "isBinary\tfn. (cfscript)", "contents": "isBinary(${1:${2:value}})"}, 197 | { "trigger": "isBoolean\tfn. (cfscript)", "contents": "isBoolean(${1:${2:value}})"}, 198 | { "trigger": "isCustomFunction\tfn. (cfscript)", "contents": "isCustomFunction(${1:${2:object}})"}, 199 | { "trigger": "isDate\tfn. (cfscript)", "contents": "isDate(${1:${2:object}})"}, 200 | { "trigger": "isDebugMode\tfn. (cfscript)", "contents": "isDebugMode(${1:})"}, 201 | { "trigger": "isDefined\tfn. (cfscript)", "contents": "isDefined(${1:\"${2:variable_name}\"})"}, 202 | { "trigger": "isK2ServerABroker\tfn. (cfscript)", "contents": "isK2ServerABroker(${1:})"}, 203 | { "trigger": "isK2ServerDocCountExceeded\tfn. (cfscript)", "contents": "isK2ServerDocCountExceeded(${1:})"}, 204 | { "trigger": "isK2ServerOnline\tfn. (cfscript)", "contents": "isK2ServerOnline(${1:})"}, 205 | { "trigger": "isLeapYear\tfn. (cfscript)", "contents": "isLeapYear(${1:${2:year}})"}, 206 | { "trigger": "isNumeric\tfn. (cfscript)", "contents": "isNumeric(${1:\"${2:string}\"})"}, 207 | { "trigger": "isNumericDate\tfn. (cfscript)", "contents": "isNumericDate(${1:${2:number}})"}, 208 | { "trigger": "isObject\tfn. (cfscript)", "contents": "isObject(${1:${2:value}})"}, 209 | { "trigger": "isQuery\tfn. (cfscript)", "contents": "isQuery(${1:\"${2:value}\"})"}, 210 | { "trigger": "isSimpleValue\tfn. (cfscript)", "contents": "isSimpleValue(${1:${2:value}})"}, 211 | { "trigger": "isSOAPRequest\tfn. (cfscript)", "contents": "isSOAPRequest(${1:})"}, 212 | { "trigger": "isStruct\tfn. (cfscript)", "contents": "isStruct(${1:${2:variable}})"}, 213 | { "trigger": "isUserInRole\tfn. (cfscript)", "contents": "isUserInRole(${1:\"${2:role_name}\"})"}, 214 | { "trigger": "isValid\tfn. (cfscript)", "contents": "isValid(${1:\"${2:type}\", ${3:value}, ${4:min}, ${5:max}, \"${6:pattern}\"})"}, 215 | { "trigger": "isWDDX\tfn. (cfscript)", "contents": "isWDDX(${1:${2:value}})"}, 216 | { "trigger": "isXML\tfn. (cfscript)", "contents": "isXML(${1:\"${2:value}\"})"}, 217 | { "trigger": "isXMLAttribute\tfn. (cfscript)", "contents": "isXMLAttribute(${1:${2:value}})"}, 218 | { "trigger": "isXMLDoc\tfn. (cfscript)", "contents": "isXMLDoc(${1:${2:value}})"}, 219 | { "trigger": "isXMLElem\tfn. (cfscript)", "contents": "isXMLElem(${1:${2:value}})"}, 220 | { "trigger": "isXMLNode\tfn. (cfscript)", "contents": "isXMLNode(${1:${2:value}})"}, 221 | { "trigger": "isXMLRoot\tfn. (cfscript)", "contents": "isXMLRoot(${1:${2:value}})"}, 222 | { "trigger": "javaCast\tfn. (cfscript)", "contents": "javaCast(${1:\"${2:type}\", \"${3:variable}\"})"}, 223 | { "trigger": "JSStringFormat\tfn. (cfscript)", "contents": "JSStringFormat(${1:\"${2:string}\"})"}, 224 | { "trigger": "lCase\tfn. (cfscript)", "contents": "lCase(${1:\"${2:string}\"})"}, 225 | { "trigger": "left\tfn. (cfscript)", "contents": "left(${1:\"${2:string}\", ${3:count}})"}, 226 | { "trigger": "len\tfn. (cfscript)", "contents": "len(${1:${2:object}})"}, 227 | { "trigger": "listAppend\tfn. (cfscript)", "contents": "listAppend(${1:\"${2:list}\", \"${3:value}\"${4:, [delimiters]}})"}, 228 | { "trigger": "listChangeDelims\tfn. (cfscript)", "contents": "listChangeDelims(${1:\"${2:list}\", \"${3:new_delimiter}\"${4:, [delimiters]}})"}, 229 | { "trigger": "listContains\tfn. (cfscript)", "contents": "listContains(${1:\"${2:list}\", \"${3:substring}\"${4:, [delimiters]}})"}, 230 | { "trigger": "listContainsNoCase\tfn. (cfscript)", "contents": "listContainsNoCase(${1:\"${2:list}\", \"${3:substring}\"${4:, [delimiters]}})"}, 231 | { "trigger": "listDeleteAt\tfn. (cfscript)", "contents": "listDeleteAt(${1:\"${2:list}\", ${3:position}${4:, [delimiters]}})"}, 232 | { "trigger": "listFind\tfn. (cfscript)", "contents": "listFind(${1:\"${2:list}\", \"${3:value}\"${4:, [delimiters]}})"}, 233 | { "trigger": "listFindNoCase\tfn. (cfscript)", "contents": "listFindNoCase(${1:\"${2:list}\", \"${3:value}\"${4:, [delimiters]}})"}, 234 | { "trigger": "listFirst\tfn. (cfscript)", "contents": "listFirst(${1:\"${2:list}\"${3:, [delimiters]}})"}, 235 | { "trigger": "listGetAt\tfn. (cfscript)", "contents": "listGetAt(${1:\"${2:list}\", ${3:position}${4:, [delimiters]}})"}, 236 | { "trigger": "listInsertAt\tfn. (cfscript)", "contents": "listInsertAt(${1:\"${2:list}\", ${3:position}, \"${4:value}\"${5:, [delimiters]}})"}, 237 | { "trigger": "listLast\tfn. (cfscript)", "contents": "listLast(${1:\"${2:list}\"${3:, [delimiters]}})"}, 238 | { "trigger": "listLen\tfn. (cfscript)", "contents": "listLen(${1:\"${2:list}\"${3:, [delimiters]}})"}, 239 | { "trigger": "listPrepend\tfn. (cfscript)", "contents": "listPrepend(${1:\"${2:list}\", \"${3:value}\"${4:, [delimiters]}})"}, 240 | { "trigger": "listQualify\tfn. (cfscript)", "contents": "listQualify(${1:\"${2:list}\", \"${3:qualifier}\"${4:, [delimiters]}${5:, [elements]}})"}, 241 | { "trigger": "listRest\tfn. (cfscript)", "contents": "listRest(${1:\"${2:list}\"${3:, [delimiters]}})"}, 242 | { "trigger": "listSetAt\tfn. (cfscript)", "contents": "listSetAt(${1:\"${2:list}\", ${3:position}, \"${4:value}\"${5:, [delimiters]}})"}, 243 | { "trigger": "listSort\tfn. (cfscript)", "contents": "listSort(${1:\"${2:list}\", \"${3:sort_type}\"${4:, [sort_order]}${5:, [delimiters]}})"}, 244 | { "trigger": "listToArray\tfn. (cfscript)", "contents": "listToArray(${1:\"${2:list}\"${3:, [delimiters]}})"}, 245 | { "trigger": "listValueCount\tfn. (cfscript)", "contents": "listValueCount(${1:\"${2:list}\", \"${3:value}\"${4:, [delimiters]}})"}, 246 | { "trigger": "listValueCountNoCase\tfn. (cfscript)", "contents": "listValueCountNoCase(${1:\"${2:list}\", \"${3:value}\"${4:, [delimiters]}})"}, 247 | { "trigger": "lJustify\tfn. (cfscript)", "contents": "lJustify(${1:\"${2:string}\", ${3:length}})"}, 248 | { "trigger": "log\tfn. (cfscript)", "contents": "log(${1:${2:number}})"}, 249 | { "trigger": "log10\tfn. (cfscript)", "contents": "log10(${1:${2:number}})"}, 250 | { "trigger": "LSCurrencyFormat\tfn. (cfscript)", "contents": "LSCurrencyFormat(${1:${2:number}${3:, [type]}})"}, 251 | { "trigger": "LSDateFormat\tfn. (cfscript)", "contents": "LSDateFormat(${1:${2:date}${3:, [mask]}})"}, 252 | { "trigger": "LSEuroCurrencyFormat\tfn. (cfscript)", "contents": "LSEuroCurrencyFormat(${1:\"${2:currency}\", \"${3:type}\"})"}, 253 | { "trigger": "LSIsCurrency\tfn. (cfscript)", "contents": "LSIsCurrency(${1:\"${2:string}\"})"}, 254 | { "trigger": "LSIsDate\tfn. (cfscript)", "contents": "LSIsDate(${1:\"${2:string}\"})"}, 255 | { "trigger": "LSIsNumeric\tfn. (cfscript)", "contents": "LSIsNumeric(${1:\"${2:string}\"})"}, 256 | { "trigger": "LSNumberFormat\tfn. (cfscript)", "contents": "LSNumberFormat(${1:${2:number}${3:, [mask]}})"}, 257 | { "trigger": "LSParseCurrency\tfn. (cfscript)", "contents": "LSParseCurrency(${1:\"${2:string}\"})"}, 258 | { "trigger": "LSParseDateTime\tfn. (cfscript)", "contents": "LSParseDateTime(${1:\"${2:dt_string}\"})"}, 259 | { "trigger": "LSParseEuroCurrency\tfn. (cfscript)", "contents": "LSParseEuroCurrency(${1:\"${2:currency_string}\"})"}, 260 | { "trigger": "LSParseNumber\tfn. (cfscript)", "contents": "LSParseNumber(${1:\"${2:string}\"})"}, 261 | { "trigger": "LSTimeFormat\tfn. (cfscript)", "contents": "LSTimeFormat(${1:${2:time}${3:, [mask]}})"}, 262 | { "trigger": "lTrim\tfn. (cfscript)", "contents": "lTrim(${1:\"${2:string}\"})"}, 263 | { "trigger": "max\tfn. (cfscript)", "contents": "max(${1:${2:number1}, ${3:number2}})"}, 264 | { "trigger": "mid\tfn. (cfscript)", "contents": "mid(${1:\"${2:string}\", ${3:start}, ${4:count}})"}, 265 | { "trigger": "min\tfn. (cfscript)", "contents": "min(${1:${2:number1}, ${3:number2}})"}, 266 | { "trigger": "minute\tfn. (cfscript)", "contents": "minute(${1:${2:date}})"}, 267 | { "trigger": "month\tfn. (cfscript)", "contents": "month(${1:${2:date}})"}, 268 | { "trigger": "monthAsString\tfn. (cfscript)", "contents": "monthAsString(${1:${2:month_number}})"}, 269 | { "trigger": "now\tfn. (cfscript)", "contents": "now(${1:})"}, 270 | { "trigger": "numberFormat\tfn. (cfscript)", "contents": "numberFormat(${1:${2:number}${3:, [mask]}})"}, 271 | { "trigger": "paragraphFormat\tfn. (cfscript)", "contents": "paragraphFormat(${1:\"${2:string}\"})"}, 272 | { "trigger": "parseDateTime\tfn. (cfscript)", "contents": "parseDateTime(${1:\"${2:dt_string}\"${3:, [pop_conversion]}})"}, 273 | { "trigger": "pi\tfn. (cfscript)", "contents": "pi(${1:})"}, 274 | { "trigger": "preserveSingleQuotes\tfn. (cfscript)", "contents": "preserveSingleQuotes(${1:\"${2:variable}\"})"}, 275 | { "trigger": "quarter\tfn. (cfscript)", "contents": "quarter(${1:${2:date}})"}, 276 | { "trigger": "queryAddColumn\tfn. (cfscript)", "contents": "queryAddColumn(${1:${2:query}, \"${3:column-name}\"${4:, [datatype]}, ${5:array-name}})"}, 277 | { "trigger": "queryAddRow\tfn. (cfscript)", "contents": "queryAddRow(${1:${2:query}${3:, [number]}})"}, 278 | { "trigger": "queryNew\tfn. (cfscript)", "contents": "queryNew(${1:\"${2:columnlist}\"${3:, [columntypelist]}})"}, 279 | { "trigger": "querySetCell\tfn. (cfscript)", "contents": "querySetCell(${1:${2:query}, \"${3:column_name}\", ${4:value}${5:, [row_number]}})"}, 280 | { "trigger": "quotedValueList\tfn. (cfscript)", "contents": "quotedValueList(${1:${2:column}${3:, [delimiter]}})"}, 281 | { "trigger": "rand\tfn. (cfscript)", "contents": "rand(${1:${2:[algorithm]}})"}, 282 | { "trigger": "randomize\tfn. (cfscript)", "contents": "randomize(${1:${2:number}${3:, [algorithm]}})"}, 283 | { "trigger": "randRange\tfn. (cfscript)", "contents": "randRange(${1:${2:number1}, ${3:number2}${4:, [algorithm]}})"}, 284 | { "trigger": "reFind\tfn. (cfscript)", "contents": "reFind(${1:${2:reg_expression}, \"${3:string}\"${4:, [start]}${5:, [returnsubexpressions]}})"}, 285 | { "trigger": "reFindNoCase\tfn. (cfscript)", "contents": "reFindNoCase(${1:${2:reg_expression}, \"${3:string}\"${4:, [start]}${5:, [returnsubexpressions]}})"}, 286 | { "trigger": "releaseComObject\tfn. (cfscript)", "contents": "releaseComObject(${1:${2:objectName}})"}, 287 | { "trigger": "removeChars\tfn. (cfscript)", "contents": "removeChars(${1:\"${2:string}\", ${3:start}, ${4:count}})"}, 288 | { "trigger": "repeatString\tfn. (cfscript)", "contents": "repeatString(${1:\"${2:string}\", ${3:count}})"}, 289 | { "trigger": "replace\tfn. (cfscript)", "contents": "replace(${1:\"${2:string}\", \"${3:substring1}\", \"${4:substring2}\"${5:, [scope]}})"}, 290 | { "trigger": "replaceList\tfn. (cfscript)", "contents": "replaceList(${1:\"${2:string}\", \"${3:list1}\", \"${4:list2}\"})"}, 291 | { "trigger": "replaceNoCase\tfn. (cfscript)", "contents": "replaceNoCase(${1:\"${2:string}\", \"${3:substring1}\", \"${4:substring2}\"${5:, [scope]}})"}, 292 | { "trigger": "reReplace\tfn. (cfscript)", "contents": "reReplace(${1:\"${2:string}\", ${3:reg_expression}, \"${4:substring}\"${5:, [scope]}})"}, 293 | { "trigger": "reReplaceNoCase\tfn. (cfscript)", "contents": "reReplaceNoCase(${1:\"${2:string}\", ${3:reg_expression}, \"${4:substring}\"${5:, [scope]}})"}, 294 | { "trigger": "reverse\tfn. (cfscript)", "contents": "reverse(${1:\"${2:string}\"})"}, 295 | { "trigger": "right\tfn. (cfscript)", "contents": "right(${1:\"${2:string}\", ${3:count}})"}, 296 | { "trigger": "rJustify\tfn. (cfscript)", "contents": "rJustify(${1:\"${2:string}\", ${3:length}})"}, 297 | { "trigger": "round\tfn. (cfscript)", "contents": "round(${1:${2:number}})"}, 298 | { "trigger": "rTrim\tfn. (cfscript)", "contents": "rTrim(${1:\"${2:string}\"})"}, 299 | { "trigger": "second\tfn. (cfscript)", "contents": "second(${1:${2:date}})"}, 300 | { "trigger": "sendGatewayMessage\tfn. (cfscript)", "contents": "sendGatewayMessage(${1:\"${2:gatewayID}\", ${3:data}})"}, 301 | { "trigger": "serialize\tfn. (cfscript)", "contents": "serialize(${1:variable_name})"}, 302 | { "trigger": "serializeJSON\tfn. (cfscript)", "contents": "serializeJSON(${1:variable_name})"}, 303 | { "trigger": "setEncoding\tfn. (cfscript)", "contents": "setEncoding(${1:\"${2:scope_name}\", \"${3:charset}\"})"}, 304 | { "trigger": "setLocale\tfn. (cfscript)", "contents": "setLocale(${1:\"${2:new_locale}\"})"}, 305 | { "trigger": "setProfileString\tfn. (cfscript)", "contents": "setProfileString(${1:\"${2:inipath}\", \"${3:section}\", \"${4:entry}\", \"${5:value}\"})"}, 306 | { "trigger": "setVariable\tfn. (cfscript)", "contents": "setVariable(${1:\"${2:name}\", \"${3:value}\"})"}, 307 | { "trigger": "sgn\tfn. (cfscript)", "contents": "sgn(${1:${2:number}})"}, 308 | { "trigger": "sin\tfn. (cfscript)", "contents": "sin(${1:${2:number}})"}, 309 | { "trigger": "spanExcluding\tfn. (cfscript)", "contents": "spanExcluding(${1:\"${2:string}\", \"${3:set}\"})"}, 310 | { "trigger": "spanIncluding\tfn. (cfscript)", "contents": "spanIncluding(${1:\"${2:string}\", \"${3:set}\"})"}, 311 | { "trigger": "sqr\tfn. (cfscript)", "contents": "sqr(${1:${2:number}})"}, 312 | { "trigger": "stripCR\tfn. (cfscript)", "contents": "stripCR(${1:\"${2:string}\"})"}, 313 | { "trigger": "structAppend\tfn. (cfscript)", "contents": "structAppend(${1:${2:struct1}, ${3:struct2}${4:, [overwriteFlag]}})"}, 314 | { "trigger": "structClear\tfn. (cfscript)", "contents": "structClear(${1:${2:structure}})"}, 315 | { "trigger": "structCopy\tfn. (cfscript)", "contents": "structCopy(${1:${2:structure}})"}, 316 | { "trigger": "structCount\tfn. (cfscript)", "contents": "structCount(${1:${2:structure}})"}, 317 | { "trigger": "structDelete\tfn. (cfscript)", "contents": "structDelete(${1:\"${2:structure}\", \"${3:key}\"${4:, [indicatenotexisting]}})"}, 318 | { "trigger": "structFind\tfn. (cfscript)", "contents": "structFind(${1:${2:structure}, \"${3:key}\"})"}, 319 | { "trigger": "structFindKey\tfn. (cfscript)", "contents": "structFindKey(${1:${2:top}, \"${3:value}\", \"${4:scope}\"})"}, 320 | { "trigger": "structFindValue\tfn. (cfscript)", "contents": "structFindValue(${1:${2:top}, \"${3:value}\"${4:, [scop]}})"}, 321 | { "trigger": "structGet\tfn. (cfscript)", "contents": "structGet(${1:\"${2:pathdesired}\"})"}, 322 | { "trigger": "structInsert\tfn. (cfscript)", "contents": "structInsert(${1:${2:structure}, \"${3:key}\", ${4:value}${5:, [allowoverwrite]}})"}, 323 | { "trigger": "structIsEmpty\tfn. (cfscript)", "contents": "structIsEmpty(${1:${2:structure}})"}, 324 | { "trigger": "structKeyArray\tfn. (cfscript)", "contents": "structKeyArray(${1:${2:structure}})"}, 325 | { "trigger": "structKeyExists\tfn. (cfscript)", "contents": "structKeyExists(${1:${2:structure}, \"${3:key}\"})"}, 326 | { "trigger": "structKeyList\tfn. (cfscript)", "contents": "structKeyList(${1:${2:structure}${3:, [delimiter]}})"}, 327 | { "trigger": "structNew\tfn. (cfscript)", "contents": "structNew(${1:})"}, 328 | { "trigger": "structSort\tfn. (cfscript)", "contents": "structSort(${1:${2:base}, \"${3:sorttype}\", \"${4:sortorder}\", \"${5:pathtosubelement}\"})"}, 329 | { "trigger": "structUpdate\tfn. (cfscript)", "contents": "structUpdate(${1:${2:structure}, \"${3:key}\", ${4:value}})"}, 330 | { "trigger": "tan\tfn. (cfscript)", "contents": "tan(${1:${2:number}})"}, 331 | { "trigger": "timeFormat\tfn. (cfscript)", "contents": "timeFormat(${1:${2:time}${3:, [mask]}})"}, 332 | { "trigger": "toBase64\tfn. (cfscript)", "contents": "toBase64(${1:${2:string_or_object}${3:, [encoding]}})"}, 333 | { "trigger": "toBinary\tfn. (cfscript)", "contents": "toBinary(${1:${2:base64_or_object}})"}, 334 | { "trigger": "toScript\tfn. (cfscript)", "contents": "toScript(${1:${2:cfvar}, \"${3:javascriptvar}\"${4:, [outputformat]}${5:, [ASFormat]}})"}, 335 | { "trigger": "toString\tfn. (cfscript)", "contents": "toString(${1:${2:any_value}${3:, [encoding]}})"}, 336 | { "trigger": "trim\tfn. (cfscript)", "contents": "trim(${1:\"${2:string}\"})"}, 337 | { "trigger": "uCase\tfn. (cfscript)", "contents": "uCase(${1:\"${2:string}\"})"}, 338 | { "trigger": "urlDecode\tfn. (cfscript)", "contents": "urlDecode(${1:\"${2:urlencodedstring}\"${3:, [charset]}})"}, 339 | { "trigger": "urlEncodedFormat\tfn. (cfscript)", "contents": "urlEncodedFormat(${1:\"${2:string}\"${3:, [charset]}})"}, 340 | { "trigger": "urlSessionFormat\tfn. (cfscript)", "contents": "urlSessionFormat(${1:${2:requesturl}})"}, 341 | { "trigger": "val\tfn. (cfscript)", "contents": "val(${1:\"${2:string}\"})"}, 342 | { "trigger": "valueList\tfn. (cfscript)", "contents": "valueList(${1:${2:column}${3:, [delimiter]}})"}, 343 | { "trigger": "week\tfn. (cfscript)", "contents": "week(${1:${2:date}})"}, 344 | { "trigger": "wrap\tfn. (cfscript)", "contents": "wrap(${1:\"${2:string}\", ${3:limit}${4:, [strip]}})"}, 345 | { "trigger": "writeDump\tfn. (cfscript)", "contents": "writeDump(${1:var})"}, 346 | { "trigger": "writeOutput\tfn. (cfscript)", "contents": "writeOutput(${1:\"${2:string}\"})"}, 347 | { "trigger": "xmlChildPos\tfn. (cfscript)", "contents": "xmlChildPos(${1:${2:elem}, \"${3:childname}\", ${4:n}})"}, 348 | { "trigger": "xmlElemNew\tfn. (cfscript)", "contents": "xmlElemNew(${1:${2:xmlobj}${3:, [namespace]}, \"${4:childname}\"})"}, 349 | { "trigger": "xmlFormat\tfn. (cfscript)", "contents": "xmlFormat(${1:\"${2:string}\"})"}, 350 | { "trigger": "xmlGetNodeType\tfn. (cfscript)", "contents": "xmlGetNodeType(${1:${2:xmlNode}})"}, 351 | { "trigger": "xmlNew\tfn. (cfscript)", "contents": "xmlNew(${1:${2:[casesensitive]}})"}, 352 | { "trigger": "xmlParse\tfn. (cfscript)", "contents": "xmlParse(${1:\"${2:xmlstring}\"${3:, [casesensitive]}${4:, [validator]}})"}, 353 | { "trigger": "xmlSearch\tfn. (cfscript)", "contents": "xmlSearch(${1:${2:xmldoc}, \"${3:xpathstring}\"})"}, 354 | { "trigger": "xmlTransform\tfn. (cfscript)", "contents": "xmlTransform(${1:\"${2:xml}\", \"${3:xsl}\"${4:, [parameters]}})"}, 355 | { "trigger": "xmlValidate\tfn. (cfscript)", "contents": "xmlValidate(${1:${2:xmlDoc}${3:, [validator]}})"}, 356 | { "trigger": "year\tfn. (cfscript)", "contents": "year(${1:${2:date}})"}, 357 | { "trigger": "yesNoFormat\tfn. (cfscript)", "contents": "yesNoFormat(${1:${2:value}})"}, 358 | //Other constructs 359 | { "trigger": "for-in-loop\tfn. (cfscript)", "contents": "for(${1:item} in ${2:collection}) {\n ${3:code};\n}"} 360 | 361 | ] 362 | } 363 | -------------------------------------------------------------------------------- /CFScript.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | CFscript 7 | scope 8 | source.cfscript.embedded.cfml, source.cfscript 9 | settings 10 | 11 | shellVariables 12 | 13 | 14 | name 15 | TM_COMMENT_START 16 | value 17 | // 18 | 19 | 20 | name 21 | TM_COMMENT_START_2 22 | value 23 | /* 24 | 25 | 26 | name 27 | TM_COMMENT_END_2 28 | value 29 | */ 30 | 31 | 32 | name 33 | TM_LINE_TERMINATOR 34 | value 35 | ; 36 | 37 | 38 | 39 | uuid 40 | 81BFADA4-ED09-30E3-33D3-17CBBEECD012 41 | 42 | 43 | -------------------------------------------------------------------------------- /CFScriptEmbedded.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | CFscript - Embedded 7 | scope 8 | text.html.cfm meta.tag.inline.cfml source.cfscript.embedded.cfml, text.html.cfm meta.tag.block.conditional.cfml source.cfscript.embedded.cfml 9 | settings 10 | 11 | shellVariables 12 | 13 | 14 | name 15 | TM_COMMENT_START 16 | value 17 | <!--- 18 | 19 | 20 | name 21 | TM_COMMENT_END 22 | value 23 | ---> 24 | 25 | 26 | name 27 | TM_LINE_TERMINATOR 28 | value 29 | 30 | 31 | 32 | 33 | uuid 34 | 0A6EFC50-A9C6-11E1-AFA6-0800200C9A66 35 | 36 | 37 | -------------------------------------------------------------------------------- /CFScriptFunctionArgs.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source.cfscript meta.function.parameters", 3 | "completions": 4 | [ 5 | { "trigger": "required\tArgument Keyword", "contents": "required"}, 6 | 7 | { "trigger": "any\tArgument Type", "contents": "any"}, 8 | { "trigger": "array\tArgument Type", "contents": "array"}, 9 | { "trigger": "binary\tArgument Type", "contents": "binary"}, 10 | { "trigger": "boolean\tArgument Type", "contents": "boolean"}, 11 | { "trigger": "component\tArgument Type", "contents": "component"}, 12 | { "trigger": "date\tArgument Type", "contents": "date"}, 13 | { "trigger": "guid\tArgument Type", "contents": "guid"}, 14 | { "trigger": "numeric\tArgument Type", "contents": "numeric"}, 15 | { "trigger": "query\tArgument Type", "contents": "query"}, 16 | { "trigger": "string\tArgument Type", "contents": "string"}, 17 | { "trigger": "struct\tArgument Type", "contents": "struct"}, 18 | { "trigger": "uuid\tArgument Type", "contents": "uuid"}, 19 | { "trigger": "xml\tArgument Type", "contents": "xml"} 20 | 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /ColdFusion.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // setting this to true will enable verbose tag completions 3 | // cf10 only for now 4 | "verbose_tag_completions": false, 5 | 6 | // will close block coldfusion tags on ">" keypress 7 | "auto_close_cfml": true, 8 | 9 | // will auto indent tags on auto_close_cfml 10 | "auto_indent_on_close": true, 11 | 12 | // enables method completions in cfscript components 13 | "component_method_completions": true, 14 | 15 | // cf7, cf8, cf9, or cf10 16 | "dictionary": "cf10" 17 | } 18 | -------------------------------------------------------------------------------- /ColdFusion.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | ColdFusion 7 | scope 8 | text.html.cfm - source.cfscript.embedded.cfml 9 | settings 10 | 11 | shellVariables 12 | 13 | 14 | name 15 | TM_COMMENT_START 16 | value 17 | <!--- 18 | 19 | 20 | name 21 | TM_COMMENT_END 22 | value 23 | ---> 24 | 25 | 26 | name 27 | TM_LINE_TERMINATOR 28 | value 29 | 30 | 31 | 32 | decreaseIndentPattern 33 | (?x) 34 | ^\s* 35 | ( 36 | </(?!html) 37 | [A-Za-z0-9]+\b[^>]*> 38 | |-?--> 39 | ) 40 | increaseIndentPattern 41 | (?x) 42 | ^\s* 43 | < 44 | (?! 45 | (?i:!---?|/|cfset|cfparam|cfdump|cfargument|cfabort 46 | |cfimport|cfcontent|cfbreak|cfinclude|cfcatch|cfcontinue 47 | |cflocation|cfsetting|cffile|cflog|cfobject|cfinvoke|cfimport 48 | |cfforward|cfreturn|cfthrow|cfproperty|cfhtmlhead|cfheader 49 | |cftrace|area|base|br|hr|img|input|link|meta|param 50 | ) 51 | ) 52 | [^>]* 53 | > 54 | \s*$ 55 | 56 | bracketIndentNextLinePattern 57 | 58 | cancelCompletion 59 | 60 | 61 | uuid 62 | Z79BDBCF-D0C9-468E-BE62-744074D7825Z 63 | 64 | 65 | -------------------------------------------------------------------------------- /ColdFusionCFC.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | cfc 8 | 9 | firstLineMatch 10 | 11 | foldingStartMarker 12 | 13 | foldingStopMarker 14 | 15 | keyEquivalent 16 | 17 | name 18 | ColdFusion Component 19 | patterns 20 | 21 | 22 | 23 | 24 | begin 25 | (?:^\s+)?(<)((?i:cfcomponent))(?![^>]*/>) 26 | captures 27 | 28 | 0 29 | 30 | name 31 | meta.tag.block.cf.component.cfml 32 | 33 | 1 34 | 35 | name 36 | punctuation.definition.tag.cf.begin.cfml 37 | 38 | 2 39 | 40 | name 41 | entity.name.tag.cf.component.cfml 42 | 43 | 3 44 | 45 | name 46 | punctuation.definition.tag.cf.end.cfml 47 | 48 | 49 | end 50 | (</)((?i:cfcomponent))(>)(?:\s*\n)? 51 | contentName 52 | text.html.cfm.embedded.cfml 53 | patterns 54 | 55 | 56 | begin 57 | (?<=cfcomponent)\s 58 | end 59 | (?=>) 60 | name 61 | meta.tag.block.cf.component.cfml 62 | patterns 63 | 64 | 65 | include 66 | #tag-stuff 67 | 68 | 69 | 70 | 71 | begin 72 | (>) 73 | beginCaptures 74 | 75 | 0 76 | 77 | name 78 | meta.tag.block.cf.component.cfml 79 | 80 | 1 81 | 82 | name 83 | punctuation.definition.tag.cf.end.cfml 84 | 85 | 86 | end 87 | (?=</(?i:cfcomponent)) 88 | patterns 89 | 90 | 91 | include 92 | text.html.cfm 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | include 101 | #cfcomments 102 | 103 | 104 | 105 | include 106 | source.cfscript 107 | 108 | 109 | 110 | repository 111 | 112 | 113 | cfcomments 114 | 115 | patterns 116 | 117 | 118 | match 119 | <!---.*---> 120 | name 121 | comment.line.cfml 122 | 123 | 124 | begin 125 | <!--- 126 | captures 127 | 128 | 0 129 | 130 | name 131 | punctuation.definition.comment.cfml 132 | 133 | 134 | end 135 | ---> 136 | name 137 | comment.block.cfml 138 | patterns 139 | 140 | 141 | include 142 | #cfcomments 143 | 144 | 145 | 146 | 147 | 148 | 149 | tag-stuff 150 | 151 | patterns 152 | 153 | 154 | include 155 | #tag-generic-attribute 156 | 157 | 158 | include 159 | #string-double-quoted 160 | 161 | 162 | include 163 | #string-single-quoted 164 | 165 | 166 | 167 | 168 | tag-generic-attribute 169 | 170 | match 171 | \b([a-zA-Z\-:]+) 172 | name 173 | entity.other.attribute-name.html 174 | 175 | string-double-quoted 176 | 177 | begin 178 | " 179 | beginCaptures 180 | 181 | 0 182 | 183 | name 184 | punctuation.definition.string.begin.html 185 | 186 | 187 | end 188 | " 189 | endCaptures 190 | 191 | 0 192 | 193 | name 194 | punctuation.definition.string.end.html 195 | 196 | 197 | name 198 | string.quoted.double.html 199 | patterns 200 | 201 | 202 | include 203 | #entities 204 | 205 | 206 | 207 | string-single-quoted 208 | 209 | begin 210 | ' 211 | beginCaptures 212 | 213 | 0 214 | 215 | name 216 | punctuation.definition.string.begin.html 217 | 218 | 219 | end 220 | ' 221 | endCaptures 222 | 223 | 0 224 | 225 | name 226 | punctuation.definition.string.end.html 227 | 228 | 229 | name 230 | string.quoted.single.html 231 | patterns 232 | 233 | 234 | include 235 | #entities 236 | 237 | 238 | 239 | 240 | entities 241 | 242 | patterns 243 | 244 | 245 | captures 246 | 247 | 1 248 | 249 | name 250 | punctuation.definition.entity.html 251 | 252 | 3 253 | 254 | name 255 | punctuation.definition.entity.html 256 | 257 | 258 | match 259 | (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) 260 | name 261 | constant.character.entity.html 262 | 263 | 264 | match 265 | & 266 | name 267 | invalid.illegal.bad-ampersand.html 268 | 269 | 270 | 271 | 272 | 273 | 274 | scopeName 275 | source.cfscript.cfc 276 | 277 | uuid 278 | B7AC5320-4226-11E1-B86C-0800200C9A66 279 | 280 | 281 | -------------------------------------------------------------------------------- /Coldfusion.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | CFML (do not use) 7 | 8 | patterns 9 | 10 | 11 | 12 | begin 13 | (?:^\s+)?(<)((?i:cfscript))(?![^>]*/>) 14 | captures 15 | 16 | 0 17 | 18 | name 19 | meta.tag.block.cf.script.cfml 20 | 21 | 1 22 | 23 | name 24 | punctuation.definition.tag.begin.cfml 25 | 26 | 2 27 | 28 | name 29 | entity.name.tag.cf.script.cfml 30 | 31 | 3 32 | 33 | name 34 | punctuation.definition.tag.end.cfml 35 | 36 | 37 | end 38 | (</)((?i:cfscript))(>)(?:\s*\n)? 39 | patterns 40 | 41 | 42 | begin 43 | (>) 44 | beginCaptures 45 | 46 | 0 47 | 48 | name 49 | meta.tag.block.cf.script.cfml 50 | 51 | 1 52 | 53 | name 54 | punctuation.definition.tag.end.cfml 55 | 56 | 57 | contentName 58 | source.cfscript.embedded.cfml 59 | end 60 | (?=</(?i:cfscript)) 61 | patterns 62 | 63 | 64 | include 65 | source.cfscript 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | begin 77 | (</?)((?i:cffunction))\b 78 | beginCaptures 79 | 80 | 1 81 | 82 | name 83 | punctuation.definition.tag.begin.cfml 84 | 85 | 2 86 | 87 | name 88 | entity.name.tag.cf.function.cfml 89 | 90 | 91 | end 92 | (>) 93 | endCaptures 94 | 95 | 1 96 | 97 | name 98 | punctuation.definition.tag.end.cfml 99 | 100 | 101 | name 102 | meta.tag.block.cf.function.cfml 103 | patterns 104 | 105 | 106 | include 107 | #func-name-attribute 108 | 109 | 110 | include 111 | #tag-stuff 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | begin 120 | (<)(?i:(cfset|cfreturn))\b 121 | beginCaptures 122 | 123 | 1 124 | 125 | name 126 | punctuation.definition.tag.begin.cfml 127 | 128 | 2 129 | 130 | name 131 | entity.name.tag.cf.inline.declaration.cfml 132 | 133 | 134 | end 135 | ((?:\s?/)?>) 136 | endCaptures 137 | 138 | 1 139 | 140 | name 141 | punctuation.definition.tag.end.cfml 142 | 143 | 144 | name 145 | meta.tag.inline.cf.any.cfml 146 | contentName 147 | source.cfscript.embedded.cfml 148 | patterns 149 | 150 | 151 | include 152 | #cfcomments 153 | 154 | 155 | include 156 | source.cfscript 157 | 158 | 159 | 160 | 161 | 162 | 163 | begin 164 | (?x) 165 | (<) 166 | (?i: 167 | (cf(queryparam|location|forward|import|param|break|abort|flush 168 | |setting|test|dump|content|include|catch|continue 169 | |file|log|object|invoke|throw|property|htmlhead 170 | |header|argument|exit|trace) 171 | ) 172 | \b 173 | ) 174 | 175 | beginCaptures 176 | 177 | 1 178 | 179 | name 180 | punctuation.definition.tag.begin.cfml 181 | 182 | 2 183 | 184 | name 185 | entity.name.tag.cf.inline.other.cfml 186 | 187 | 188 | end 189 | ((?:\s?/)?>) 190 | endCaptures 191 | 192 | 1 193 | 194 | name 195 | punctuation.definition.tag.end.cfml 196 | 197 | 198 | name 199 | meta.tag.inline.cf.any.cfml 200 | patterns 201 | 202 | 203 | include 204 | #tag-stuff 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | begin 213 | (?:^\s+)?(<)((?i:cfquery))\b(?![^>]*/>) 214 | captures 215 | 216 | 0 217 | 218 | name 219 | meta.tag.block.cf.query.cfml 220 | 221 | 1 222 | 223 | name 224 | punctuation.definition.tag.begin.cfml 225 | 226 | 2 227 | 228 | name 229 | entity.name.tag.cf.query.cfml 230 | 231 | 3 232 | 233 | name 234 | punctuation.definition.tag.end.cfml 235 | 236 | 237 | end 238 | (</)((?i:cfquery))(>)(?:\s*\n)? 239 | patterns 240 | 241 | 242 | begin 243 | (?<=cfquery)\s 244 | end 245 | (?=>) 246 | name 247 | meta.tag.block.cf.output.cfml 248 | patterns 249 | 250 | 251 | include 252 | #qry-name-attribute 253 | 254 | 255 | include 256 | #tag-stuff 257 | 258 | 259 | 260 | 261 | begin 262 | (>) 263 | beginCaptures 264 | 265 | 0 266 | 267 | name 268 | meta.tag.block.cf.query.cfml 269 | 270 | 1 271 | 272 | name 273 | punctuation.definition.tag.end.cfml 274 | 275 | 276 | contentName 277 | source.sql.embedded.cfml 278 | end 279 | (?=</(?i:cfquery)) 280 | patterns 281 | 282 | 283 | include 284 | #string-double-quoted 285 | 286 | 287 | include 288 | #string-single-quoted 289 | 290 | 291 | include 292 | #embedded-tags 293 | 294 | 295 | begin 296 | (</?)((?i:(?:cfqueryparam))\b) 297 | beginCaptures 298 | 299 | 1 300 | 301 | name 302 | punctuation.definition.tag.begin.cfml 303 | 304 | 2 305 | 306 | name 307 | entity.name.tag.cf.inline.param.cfml 308 | 309 | 310 | end 311 | ((?:\s?/)?>) 312 | endCaptures 313 | 314 | 1 315 | 316 | name 317 | punctuation.definition.tag.end.cfml 318 | 319 | 320 | name 321 | meta.tag.inline.cf.query-param.cfml 322 | patterns 323 | 324 | 325 | include 326 | #tag-stuff 327 | 328 | 329 | 330 | 331 | include 332 | #nest-hash 333 | 334 | 335 | include 336 | source.sql 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | include 346 | #embedded-tags 347 | 348 | 349 | 350 | 351 | begin 352 | (?x) 353 | (</?) 354 | (?i: 355 | (cf((output)|(savecontent)|([\w\-_.]+))) 356 | ) 357 | \b 358 | 359 | beginCaptures 360 | 361 | 1 362 | 363 | name 364 | punctuation.definition.tag.begin.cfml 365 | 366 | 2 367 | 368 | name 369 | entity.name.tag.cf.block.other.cfml 370 | 371 | 372 | end 373 | (>) 374 | endCaptures 375 | 376 | 1 377 | 378 | name 379 | punctuation.definition.tag.end.cfml 380 | 381 | 382 | name 383 | meta.tag.block.cf.other.cfml 384 | patterns 385 | 386 | 387 | include 388 | #tag-stuff 389 | 390 | 391 | 392 | 393 | 394 | repository 395 | 396 | 397 | embedded-tags 398 | 399 | patterns 400 | 401 | 402 | include 403 | #cfcomments 404 | 405 | 406 | include 407 | #conditionals 408 | 409 | 410 | include 411 | #flow-control 412 | 413 | 414 | include 415 | #exception-handling 416 | 417 | 418 | include 419 | #cfoutput 420 | 421 | 422 | include 423 | #cfmail 424 | 425 | 426 | 427 | 428 | flow-control 429 | 430 | patterns 431 | 432 | 433 | begin 434 | (?x) 435 | (</?) 436 | (?i: 437 | (cfloop)|(cfswitch)|(cf(?:default)?case) 438 | ) 439 | \b 440 | 441 | beginCaptures 442 | 443 | 1 444 | 445 | name 446 | punctuation.definition.tag.begin.cfml 447 | 448 | 2 449 | 450 | name 451 | entity.name.tag.cf.flow-control.loop.cfml 452 | 453 | 3 454 | 455 | name 456 | entity.name.tag.cf.flow-control.switch.cfml 457 | 458 | 4 459 | 460 | name 461 | entity.name.tag.cf.flow-control.case.cfml 462 | 463 | 464 | end 465 | (>) 466 | endCaptures 467 | 468 | 1 469 | 470 | name 471 | punctuation.definition.tag.end.cfml 472 | 473 | 474 | name 475 | meta.tag.block.cf.flow-control.cfml 476 | patterns 477 | 478 | 479 | include 480 | #tag-stuff 481 | 482 | 483 | 484 | 485 | 486 | 487 | exception-handling 488 | 489 | patterns 490 | 491 | 492 | begin 493 | (?x) 494 | (</?) 495 | (?i: 496 | (cftry)|(cfcatch)|(cflock)|(cffinally|cferror|cfrethrow|cfthrow) 497 | ) 498 | \b 499 | 500 | beginCaptures 501 | 502 | 1 503 | 504 | name 505 | punctuation.definition.tag.begin.cfml 506 | 507 | 2 508 | 509 | name 510 | entity.name.tag.cf.exception.try.cfml 511 | 512 | 3 513 | 514 | name 515 | entity.name.tag.cf.exception.catch.cfml 516 | 517 | 4 518 | 519 | name 520 | entity.name.tag.cf.lock.cfml 521 | 522 | 5 523 | 524 | name 525 | entity.name.tag.cf.exception.other.cfml 526 | 527 | 528 | end 529 | (>) 530 | endCaptures 531 | 532 | 1 533 | 534 | name 535 | punctuation.definition.tag.end.cfml 536 | 537 | 538 | name 539 | meta.tag.block.cf.exceptions.cfml 540 | patterns 541 | 542 | 543 | include 544 | #tag-stuff 545 | 546 | 547 | 548 | 549 | 550 | 551 | conditionals 552 | 553 | patterns 554 | 555 | 556 | 557 | begin 558 | (</?)((?i:cfif))\b 559 | beginCaptures 560 | 561 | 1 562 | 563 | name 564 | punctuation.definition.tag.begin.cfml 565 | 566 | 2 567 | 568 | name 569 | entity.name.tag.cf.conditional.cfml 570 | 571 | 572 | end 573 | (>) 574 | endCaptures 575 | 576 | 1 577 | 578 | name 579 | punctuation.definition.tag.end.cfml 580 | 581 | 582 | name 583 | meta.tag.block.cf.conditional.cfml 584 | contentName 585 | source.cfscript.embedded.cfml 586 | patterns 587 | 588 | 589 | include 590 | source.cfscript 591 | 592 | 593 | 594 | 595 | 596 | begin 597 | (</?)(?i:(cfelseif|cfelse)) 598 | captures 599 | 600 | 1 601 | 602 | name 603 | punctuation.definition.tag.begin.cfml 604 | 605 | 2 606 | 607 | name 608 | entity.name.tag.cf.conditional.cfml 609 | 610 | 611 | end 612 | (>) 613 | endCaptures 614 | 615 | 1 616 | 617 | name 618 | punctuation.definition.tag.end.cfml 619 | 620 | 621 | name 622 | meta.tag.inline.cf.conditional.cfml 623 | contentName 624 | source.cfscript.embedded.cfml 625 | patterns 626 | 627 | 628 | include 629 | source.cfscript 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | cfoutput 640 | 641 | begin 642 | (?:^\s+)?(<)((?i:cfoutput))\b(?![^>]*/>) 643 | captures 644 | 645 | 0 646 | 647 | name 648 | meta.tag.block.cf.output.cfml 649 | 650 | 1 651 | 652 | name 653 | punctuation.definition.tag.begin.cfml 654 | 655 | 2 656 | 657 | name 658 | entity.name.tag.cf.output.cfml 659 | 660 | 3 661 | 662 | name 663 | punctuation.definition.tag.end.cfml 664 | 665 | 666 | end 667 | (</)((?i:cfoutput))(>)(?:\s*\n)? 668 | patterns 669 | 670 | 671 | begin 672 | (?<=cfoutput)\s 673 | end 674 | (?=>) 675 | name 676 | meta.tag.block.cf.output.cfml 677 | patterns 678 | 679 | 680 | include 681 | #tag-stuff 682 | 683 | 684 | 685 | 686 | begin 687 | (>) 688 | beginCaptures 689 | 690 | 0 691 | 692 | name 693 | meta.tag.block.cf.output.cfml 694 | 695 | 1 696 | 697 | name 698 | punctuation.definition.tag.end.cfml 699 | 700 | 701 | end 702 | (?=</(?i:cfoutput)) 703 | 704 | contentName 705 | meta.scope.between-output-tags.cfml 706 | patterns 707 | 708 | 709 | include 710 | #nest-hash 711 | 712 | 713 | include 714 | text.html.cfm 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | cfmail 724 | 725 | begin 726 | (?:^\s+)?(<)((?i:cfmail))\b(?![^>]*/>) 727 | captures 728 | 729 | 0 730 | 731 | name 732 | meta.tag.block.cf.mail.cfml 733 | 734 | 1 735 | 736 | name 737 | punctuation.definition.tag.begin.cfml 738 | 739 | 2 740 | 741 | name 742 | entity.name.tag.cf.mail.cfml 743 | 744 | 3 745 | 746 | name 747 | punctuation.definition.tag.end.cfml 748 | 749 | 750 | end 751 | (</)((?i:cfmail))(>)(?:\s*\n)? 752 | patterns 753 | 754 | 755 | begin 756 | (?<=cfmail)\s 757 | end 758 | (?=>) 759 | name 760 | meta.tag.block.cf.mail.cfml 761 | patterns 762 | 763 | 764 | include 765 | #tag-stuff 766 | 767 | 768 | 769 | 770 | begin 771 | (>) 772 | beginCaptures 773 | 774 | 0 775 | 776 | name 777 | meta.tag.block.cf.mail.cfml 778 | 779 | 1 780 | 781 | name 782 | punctuation.definition.tag.end.cfml 783 | 784 | 785 | end 786 | (?=</(?i:cfmail)) 787 | 788 | contentName 789 | meta.scope.between-mail-tags.cfml 790 | patterns 791 | 792 | 793 | include 794 | #nest-hash 795 | 796 | 797 | include 798 | text.html.cfm 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 811 | func-name-attribute 812 | 813 | begin 814 | \b(name)\b\s*(=) 815 | captures 816 | 817 | 1 818 | 819 | name 820 | entity.other.attribute-name.cfml 821 | 822 | 2 823 | 824 | name 825 | punctuation.separator.key-value.cfml 826 | 827 | 828 | end 829 | (?<='|") 830 | name 831 | meta.attribute-with-value.name.cfml 832 | patterns 833 | 834 | 835 | begin 836 | " 837 | beginCaptures 838 | 839 | 0 840 | 841 | name 842 | punctuation.definition.string.begin.cfml 843 | 844 | 845 | contentName 846 | meta.toc-list.function.cfml 847 | end 848 | " 849 | endCaptures 850 | 851 | 0 852 | 853 | name 854 | punctuation.definition.string.end.cfml 855 | 856 | 857 | name 858 | string.quoted.double.cfml 859 | patterns 860 | 861 | 862 | include 863 | #entities 864 | 865 | 866 | 867 | 868 | begin 869 | ' 870 | beginCaptures 871 | 872 | 0 873 | 874 | name 875 | punctuation.definition.string.begin.cfml 876 | 877 | 878 | contentName 879 | meta.toc-list.function.cfml 880 | end 881 | ' 882 | endCaptures 883 | 884 | 0 885 | 886 | name 887 | punctuation.definition.string.end.cfml 888 | 889 | 890 | name 891 | string.quoted.single.cfml 892 | patterns 893 | 894 | 895 | include 896 | #entities 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | qry-name-attribute 906 | 907 | begin 908 | \b(name)\b\s*(=) 909 | captures 910 | 911 | 1 912 | 913 | name 914 | entity.other.attribute-name.cfml 915 | 916 | 2 917 | 918 | name 919 | punctuation.separator.key-value.cfml 920 | 921 | 922 | end 923 | (?<='|") 924 | name 925 | meta.attribute-with-value.name.cfml 926 | patterns 927 | 928 | 929 | begin 930 | " 931 | beginCaptures 932 | 933 | 0 934 | 935 | name 936 | punctuation.definition.string.begin.cfml 937 | 938 | 939 | contentName 940 | meta.toc-list.query.cfml 941 | end 942 | " 943 | endCaptures 944 | 945 | 0 946 | 947 | name 948 | punctuation.definition.string.end.cfml 949 | 950 | 951 | name 952 | string.quoted.double.cfml 953 | patterns 954 | 955 | 956 | include 957 | #entities 958 | 959 | 960 | 961 | 962 | begin 963 | ' 964 | beginCaptures 965 | 966 | 0 967 | 968 | name 969 | punctuation.definition.string.begin.cfml 970 | 971 | 972 | contentName 973 | meta.toc-list.query.name.cfml 974 | end 975 | ' 976 | endCaptures 977 | 978 | 0 979 | 980 | name 981 | punctuation.definition.string.end.cfml 982 | 983 | 984 | name 985 | string.quoted.single.cfml 986 | patterns 987 | 988 | 989 | include 990 | #entities 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | cfcomments 999 | 1000 | patterns 1001 | 1002 | 1003 | match 1004 | <!---.*?---> 1005 | name 1006 | comment.line.cfml 1007 | 1008 | 1009 | begin 1010 | <!--- 1011 | captures 1012 | 1013 | 0 1014 | 1015 | name 1016 | punctuation.definition.comment.cfml 1017 | 1018 | 1019 | end 1020 | ---> 1021 | name 1022 | comment.block.cfml 1023 | patterns 1024 | 1025 | 1026 | include 1027 | #cfcomments 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | tag-stuff 1037 | 1038 | patterns 1039 | 1040 | 1041 | include 1042 | #cfcomments 1043 | 1044 | 1045 | include 1046 | #tag-generic-attribute 1047 | 1048 | 1049 | include 1050 | #string-double-quoted 1051 | 1052 | 1053 | include 1054 | #string-single-quoted 1055 | 1056 | 1057 | 1058 | 1059 | tag-generic-attribute 1060 | 1061 | match 1062 | \b([a-zA-Z\-:]+) 1063 | name 1064 | entity.other.attribute-name.cfml 1065 | 1066 | string-double-quoted 1067 | 1068 | begin 1069 | " 1070 | beginCaptures 1071 | 1072 | 0 1073 | 1074 | name 1075 | punctuation.definition.string.begin.cfml 1076 | 1077 | 1078 | end 1079 | " 1080 | endCaptures 1081 | 1082 | 0 1083 | 1084 | name 1085 | punctuation.definition.string.end.cfml 1086 | 1087 | 1088 | name 1089 | string.quoted.double.cfml 1090 | patterns 1091 | 1092 | 1093 | include 1094 | #nest-hash 1095 | 1096 | 1097 | include 1098 | #entities 1099 | 1100 | 1101 | 1102 | string-single-quoted 1103 | 1104 | begin 1105 | ' 1106 | beginCaptures 1107 | 1108 | 0 1109 | 1110 | name 1111 | punctuation.definition.string.begin.cfml 1112 | 1113 | 1114 | end 1115 | ' 1116 | endCaptures 1117 | 1118 | 0 1119 | 1120 | name 1121 | punctuation.definition.string.end.cfml 1122 | 1123 | 1124 | name 1125 | string.quoted.single.cfml 1126 | patterns 1127 | 1128 | 1129 | include 1130 | #nest-hash 1131 | 1132 | 1133 | include 1134 | #entities 1135 | 1136 | 1137 | 1138 | 1139 | entities 1140 | 1141 | patterns 1142 | 1143 | 1144 | captures 1145 | 1146 | 1 1147 | 1148 | name 1149 | punctuation.definition.entity.cfml 1150 | 1151 | 3 1152 | 1153 | name 1154 | punctuation.definition.entity.cfml 1155 | 1156 | 1157 | match 1158 | (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) 1159 | name 1160 | constant.character.entity.cfml 1161 | 1162 | 1163 | match 1164 | & 1165 | name 1166 | invalid.illegal.bad-ampersand.cfml 1167 | 1168 | 1169 | 1170 | 1171 | nest-hash 1172 | 1173 | patterns 1174 | 1175 | 1176 | match 1177 | ## 1178 | name 1179 | string.escaped.hash.cfml 1180 | 1181 | 1182 | 1183 | match 1184 | (?x) 1185 | (\#) 1186 | (?! # zero width negative lookahead assertion 1187 | ( 1188 | ([\w$]+ # assertion for plain variables or function names including currency symbol "$" 1189 | ( 1190 | (\[.*\]) # asserts a match for anything in square brackets 1191 | | 1192 | (\(.*\)) # or anything in parens 1193 | | 1194 | (\.[\w$]+) # or zero or more "dot" notated variables 1195 | | 1196 | (\s*[\+\-\*\/&]\s*[\w$]+) # or simple arithmentic operators + concatenation 1197 | | 1198 | (\s*&\s*["|'].+["|']) # or concatenation with a quoted string 1199 | )* # asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times 1200 | ) 1201 | | 1202 | (\(.*\)) # asserts a match for anything in parens 1203 | )\# # asserts closing hash 1204 | ) 1205 | name 1206 | invalid.illegal.unescaped.hash.cfml 1207 | 1208 | 1209 | 1210 | begin 1211 | (?x) 1212 | (\#) 1213 | (?= # zero width negative lookahead assertion 1214 | ( 1215 | ([\w$]+ # assertion for plain variables or function names including currency symbol "$" 1216 | ( 1217 | (\[.*\]) # asserts a match for anything in square brackets 1218 | | 1219 | (\(.*\)) # or anything in parens 1220 | | 1221 | (\.[\w$]+) # or zero or more "dot" notated variables 1222 | | 1223 | (\s*[\+\-\*\/&]\s*[\w$]+) # or simple arithmentic operators + concatenation 1224 | | 1225 | (\s*&\s*["|'].+["|']) # or concatenation with a quoted string 1226 | )* # asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times 1227 | ) 1228 | | 1229 | (\(.*\)) # asserts a match for anything in parens 1230 | )\# # asserts closing hash 1231 | ) 1232 | beginCaptures 1233 | 1234 | 1 1235 | 1236 | name 1237 | punctuation.definition.hash.begin.cfml 1238 | 1239 | 1240 | end 1241 | (#) 1242 | endCaptures 1243 | 1244 | 1 1245 | 1246 | name 1247 | punctuation.definition.hash.end.cfml 1248 | 1249 | 1250 | contentName 1251 | source.cfscript.embedded.cfml 1252 | name 1253 | meta.name.interpolated.hash.cfml 1254 | patterns 1255 | 1256 | 1257 | include 1258 | source.cfscript 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | scopeName 1267 | text.cfml.basic 1268 | 1269 | uuid 1270 | C48DE6D0-4226-11E1-B86C-0800200C9A66 1271 | 1272 | 1273 | -------------------------------------------------------------------------------- /Default (OSX).sublime-keymap: -------------------------------------------------------------------------------- 1 | [ 2 | { "keys": ["."], "command": "dot_completions", "context": 3 | [ 4 | {"key": "selector", "operator": "equal", "operand": "source.cfscript - string - comment,punctuation.definition.hash", "match_all": true } 5 | ] 6 | }, 7 | { "keys": [">"], "command": "move", "args": {"by": "characters", "forward": true}, "context": 8 | [ 9 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 10 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 11 | { "key": "selector", "operator": "equal", "operand": "meta.tag"}, 12 | { "key": "following_text", "operator": "regex_contains", "operand": "^>", "match_all": true } 13 | ] 14 | }, 15 | // Auto-close ColdFusion block tags 16 | { "keys": [">"], "command": "close_cftag", "context": 17 | [ 18 | // selectors aren't working as I expect, we'll just use general scopes here 19 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm, source.cfscript.cfc"}, 20 | { "key": "following_text", "operator": "not_regex_contains", "operand": "^>", "match_all": true } 21 | ] 22 | }, 23 | // Auto-pair parens 24 | { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context": 25 | [ 26 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 27 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 28 | { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t|#|>| |\\)|]|;|\\}|$)", "match_all": true } 29 | ] 30 | }, 31 | // Auto-pair quotes 32 | { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context": 33 | [ 34 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 35 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 36 | { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t|#|>| |\\)|]|\\}|$)", "match_all": true }, 37 | { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, 38 | { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double", "match_all": true } 39 | ] 40 | }, 41 | // Auto-pair single quotes 42 | { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context": 43 | [ 44 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 45 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 46 | { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t|#|>| |\\)|]|\\}|$)", "match_all": true }, 47 | { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, 48 | { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single", "match_all": true } 49 | ] 50 | }, 51 | // alt+enter terminates statement and adds new line 52 | { 53 | "keys": ["alt+enter"], "command": "run_macro_file", "args": {"file": "Packages/ColdFusion/Terminate Statement.sublime-macro"}, 54 | "context": [ {"key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true }] 55 | }, 56 | // javadoc add line 57 | { 58 | "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/ColdFusion/JavaDoc Add Line.sublime-macro"}, 59 | "context": [ {"key": "selector", "operator": "equal", "operand": "comment.block.documentation.javadoc", "match_all": true }] 60 | }, 61 | // backspace javadoc delete line 62 | { 63 | "keys": ["backspace"], "command": "run_macro_file", 64 | "args": {"file": "Packages/ColdFusion/JavaDoc Delete Line.sublime-macro"}, 65 | "context": 66 | [ 67 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 68 | { "key": "preceding_text", "operator": "regex_contains", "operand": "\\*$", "match_all": true }, 69 | { "key": "selector", "operator": "equal", "operand": "comment.block.documentation.javadoc", "match_all": true } 70 | ] 71 | }, 72 | // super+shift+3 #SELECTION# 73 | { 74 | "keys": ["super+shift+3"], "command": "insert_snippet", 75 | "args": { "contents": "#${0:$SELECTION}#" }, 76 | "context": 77 | [ 78 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 79 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 80 | ] 81 | }, 82 | // super+shift+= 83 | { 84 | "keys": ["super+shift+="], "command": "insert_snippet", 85 | "args": { "contents": "" }, 86 | "context": 87 | [ 88 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 89 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 90 | ] 91 | }, 92 | // alt+shift+r $0 93 | { 94 | "keys": ["alt+shift+r"], "command": "insert_snippet", 95 | "args": { "contents": "\n\t${0:$SELECTION}\n" }, 96 | "context": 97 | [ 98 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 99 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 100 | ] 101 | }, 102 | // super+alt+a 103 | { 104 | "keys": ["super+alt+a"], "command": "insert_snippet", 105 | "args": { "contents": "" }, 106 | "context": 107 | [ 108 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 109 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 110 | ] 111 | }, 112 | // super+shift+o writeOutput(); 113 | { 114 | "keys": ["super+shift+o"], "command": "insert_snippet", 115 | "args": { "contents": "writeOutput(${0:$SELECTION});" }, 116 | "context": 117 | [ 118 | {"key": "selector", "operator": "equal", "operand": "source.cfscript"} 119 | ] 120 | }, 121 | // super+shift+o 122 | { 123 | "keys": ["super+shift+o"], "command": "insert_snippet", 124 | "args": { "contents": "${0:$SELECTION}" }, 125 | "context": 126 | [ 127 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 128 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml"} 129 | ] 130 | }, 131 | // super+alt+d writeDump(); 132 | { 133 | "keys": ["super+alt+d"], "command": "insert_snippet", 134 | "args": { "contents": "writeDump(${0:$SELECTION});" }, 135 | "context": 136 | [ 137 | {"key": "selector", "operator": "equal", "operand": "source.cfscript"} 138 | ] 139 | }, 140 | // super+alt+d 141 | { 142 | "keys": ["super+alt+d"], "command": "insert_snippet", 143 | "args": { "contents": "" }, 144 | "context": 145 | [ 146 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 147 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml"} 148 | ] 149 | }, 150 | // super+alt+shift+/ javadoc comment 151 | { 152 | "keys": ["super+alt+shift+/"], "command": "insert_snippet", 153 | "args": { "contents": "/**\n* $0\n*/" }, 154 | "context": 155 | [ 156 | {"key": "selector", "operator": "equal", "operand": "source.cfscript" } 157 | ] 158 | }, 159 | // shift+3 wrap selection with hash 160 | { 161 | "keys": ["#"], "command": "insert_snippet", 162 | "args": {"contents": "#${0:$SELECTION}#"}, 163 | "context": 164 | [ 165 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 166 | { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }, 167 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 168 | ] 169 | }, 170 | // shift+3 auto_match hash 171 | { 172 | "keys": ["#"], "command": "insert_snippet", 173 | "args": {"contents": "#$0#"}, 174 | "context": 175 | [ 176 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 177 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 178 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 179 | ] 180 | }, 181 | // shift+3 move cursor forward to close hash 182 | { 183 | "keys": ["#"], "command": "move", 184 | "args": {"by": "characters", "forward": true}, 185 | "context": 186 | [ 187 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 188 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 189 | { "key": "following_text", "operator": "regex_contains", "operand": "^#", "match_all": true }, 190 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 191 | ] 192 | }, 193 | // backspace removes both hash marks 194 | { 195 | "keys": ["backspace"], "command": "run_macro_file", 196 | "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, 197 | "context": 198 | [ 199 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 200 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 201 | { "key": "preceding_text", "operator": "regex_contains", "operand": "#$", "match_all": true }, 202 | { "key": "following_text", "operator": "regex_contains", "operand": "^#", "match_all": true }, 203 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 204 | ] 205 | } 206 | ] 207 | -------------------------------------------------------------------------------- /Default.sublime-commands: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "ColdFusion: Insert CFlib UDF", 4 | "command": "show_cflib" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /Default.sublime-keymap: -------------------------------------------------------------------------------- 1 | [ 2 | { "keys": ["."], "command": "dot_completions", "context": 3 | [ 4 | {"key": "selector", "operator": "equal", "operand": "source.cfscript - string - comment,punctuation.definition.hash", "match_all": true } 5 | ] 6 | }, 7 | { "keys": [">"], "command": "move", "args": {"by": "characters", "forward": true}, "context": 8 | [ 9 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 10 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 11 | { "key": "selector", "operator": "equal", "operand": "meta.tag"}, 12 | { "key": "following_text", "operator": "regex_contains", "operand": "^>", "match_all": true } 13 | ] 14 | }, 15 | // Auto-close ColdFusion block tags 16 | { "keys": [">"], "command": "close_cftag", "context": 17 | [ 18 | // selectors aren't working as I expect, we'll just use general scopes here 19 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm, source.cfscript.cfc"}, 20 | { "key": "following_text", "operator": "not_regex_contains", "operand": "^>", "match_all": true } 21 | ] 22 | }, 23 | // Auto-pair parens 24 | { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context": 25 | [ 26 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 27 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 28 | { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t|#|>| |\\)|]|;|\\}|$)", "match_all": true } 29 | ] 30 | }, 31 | // Auto-pair quotes 32 | { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context": 33 | [ 34 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 35 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 36 | { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t|#|>| |\\)|]|\\}|$)", "match_all": true }, 37 | { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true }, 38 | { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double", "match_all": true } 39 | ] 40 | }, 41 | // Auto-pair single quotes 42 | { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context": 43 | [ 44 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 45 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 46 | { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t|#|>| |\\)|]|\\}|$)", "match_all": true }, 47 | { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true }, 48 | { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single", "match_all": true } 49 | ] 50 | }, 51 | // alt+enter terminates statement and adds new line 52 | { 53 | "keys": ["alt+enter"], "command": "run_macro_file", "args": {"file": "Packages/ColdFusion/Terminate Statement.sublime-macro"}, 54 | "context": [ {"key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true }] 55 | }, 56 | // javadoc add line 57 | { 58 | "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/ColdFusion/JavaDoc Add Line.sublime-macro"}, 59 | "context": [ {"key": "selector", "operator": "equal", "operand": "comment.block.documentation.javadoc", "match_all": true }] 60 | }, 61 | // backspace javadoc delete line 62 | { 63 | "keys": ["backspace"], "command": "run_macro_file", 64 | "args": {"file": "Packages/ColdFusion/JavaDoc Delete Line.sublime-macro"}, 65 | "context": 66 | [ 67 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 68 | { "key": "preceding_text", "operator": "regex_contains", "operand": "\\*$", "match_all": true }, 69 | { "key": "selector", "operator": "equal", "operand": "comment.block.documentation.javadoc", "match_all": true } 70 | ] 71 | }, 72 | // ctrl+shift+3 #SELECTION# 73 | { 74 | "keys": ["ctrl+shift+3"], "command": "insert_snippet", 75 | "args": { "contents": "#${0:$SELECTION}#" }, 76 | "context": 77 | [ 78 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 79 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 80 | ] 81 | }, 82 | // ctrl+shift+= 83 | { 84 | "keys": ["ctrl+shift+="], "command": "insert_snippet", 85 | "args": { "contents": "" }, 86 | "context": 87 | [ 88 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 89 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 90 | ] 91 | }, 92 | // alt+shift+r $0 93 | { 94 | "keys": ["alt+shift+r"], "command": "insert_snippet", 95 | "args": { "contents": "\n\t${0:$SELECTION}\n" }, 96 | "context": 97 | [ 98 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 99 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 100 | ] 101 | }, 102 | // ctrl+alt+a 103 | { 104 | "keys": ["ctrl+alt+a"], "command": "insert_snippet", 105 | "args": { "contents": "" }, 106 | "context": 107 | [ 108 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 109 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml" } 110 | ] 111 | }, 112 | // ctrl+shift+o writeOutput(); 113 | { 114 | "keys": ["ctrl+shift+o"], "command": "insert_snippet", 115 | "args": { "contents": "writeOutput(${0:$SELECTION});" }, 116 | "context": 117 | [ 118 | {"key": "selector", "operator": "equal", "operand": "source.cfscript"} 119 | ] 120 | }, 121 | // ctrl+shift+o 122 | { 123 | "keys": ["ctrl+shift+o"], "command": "insert_snippet", 124 | "args": { "contents": "${0:$SELECTION}" }, 125 | "context": 126 | [ 127 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 128 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml"} 129 | ] 130 | }, 131 | // ctrl+alt+d writeDump(); 132 | { 133 | "keys": ["ctrl+alt+d"], "command": "insert_snippet", 134 | "args": { "contents": "writeDump(${0:$SELECTION});" }, 135 | "context": 136 | [ 137 | {"key": "selector", "operator": "equal", "operand": "source.cfscript"} 138 | ] 139 | }, 140 | // ctrl+alt+d 141 | { 142 | "keys": ["ctrl+alt+d"], "command": "insert_snippet", 143 | "args": { "contents": "" }, 144 | "context": 145 | [ 146 | {"key": "selector", "operator": "equal", "operand": "text.html.cfm"}, 147 | {"key": "selector", "operator": "not_equal", "operand": "source.cfscript.embedded.cfml"} 148 | ] 149 | }, 150 | // ctrl+alt+shift+/ javadoc comment 151 | { 152 | "keys": ["ctrl+alt+shift+/"], "command": "insert_snippet", 153 | "args": { "contents": "/**\n* $0\n*/" }, 154 | "context": 155 | [ 156 | {"key": "selector", "operator": "equal", "operand": "source.cfscript" } 157 | ] 158 | }, 159 | // shift+3 wrap selection with hash 160 | { 161 | "keys": ["#"], "command": "insert_snippet", 162 | "args": {"contents": "#${0:$SELECTION}#"}, 163 | "context": 164 | [ 165 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 166 | { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }, 167 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 168 | ] 169 | }, 170 | // shift+3 auto_match hash 171 | { 172 | "keys": ["#"], "command": "insert_snippet", 173 | "args": {"contents": "#$0#"}, 174 | "context": 175 | [ 176 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 177 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 178 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 179 | ] 180 | }, 181 | // shift+3 move cursor forward to close hash 182 | { 183 | "keys": ["#"], "command": "move", 184 | "args": {"by": "characters", "forward": true}, 185 | "context": 186 | [ 187 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 188 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 189 | { "key": "following_text", "operator": "regex_contains", "operand": "^#", "match_all": true }, 190 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 191 | ] 192 | }, 193 | // backspace removes both hash marks 194 | { 195 | "keys": ["backspace"], "command": "run_macro_file", 196 | "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, 197 | "context": 198 | [ 199 | { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true }, 200 | { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, 201 | { "key": "preceding_text", "operator": "regex_contains", "operand": "#$", "match_all": true }, 202 | { "key": "following_text", "operator": "regex_contains", "operand": "^#", "match_all": true }, 203 | { "key": "selector", "operator": "equal", "operand": "text.html.cfm,source.cfscript", "match_all": true } 204 | ] 205 | } 206 | ] 207 | -------------------------------------------------------------------------------- /HTML+CFML.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | cfm 8 | cfml 9 | 10 | firstLineMatch 11 | <!(?i:DOCTYPE)|<(?i:html)|<\?(?i:php) 12 | foldingStartMarker 13 | (?x) 14 | (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\b.*?> 15 | |<!--(?!.*--\s*>) 16 | |^<!--\ \#tminclude\ (?>.*?-->)$ 17 | |<\?(?:php)?.*\b(if|for(each)?|while)\b.+: 18 | |\{\{?(if|foreach|capture|literal|foreach|php|section|strip) 19 | |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) 20 | ) 21 | foldingStopMarker 22 | (?x) 23 | (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)> 24 | |^(?!.*?<!--).*?--\s*> 25 | |^<!--\ end\ tminclude\ -->$ 26 | |<\?(?:php)?.*\bend(if|for(each)?|while)\b 27 | |\{\{?/(if|foreach|capture|literal|foreach|php|section|strip) 28 | |^[^{]*\} 29 | ) 30 | keyEquivalent 31 | ^~H 32 | name 33 | ColdFusion Markup 34 | patterns 35 | 36 | 37 | include 38 | text.cfml.basic 39 | 40 | 41 | begin 42 | (<\?)(xml) 43 | captures 44 | 45 | 1 46 | 47 | name 48 | punctuation.definition.tag.html 49 | 50 | 2 51 | 52 | name 53 | entity.name.tag.xml.html 54 | 55 | 56 | end 57 | (\?>) 58 | name 59 | meta.tag.preprocessor.xml.html 60 | patterns 61 | 62 | 63 | include 64 | #tag-generic-attribute 65 | 66 | 67 | include 68 | #string-double-quoted 69 | 70 | 71 | include 72 | #string-single-quoted 73 | 74 | 75 | 76 | 77 | begin 78 | <!--+ 79 | captures 80 | 81 | 0 82 | 83 | name 84 | punctuation.definition.comment.html 85 | 86 | 87 | end 88 | --+\s*> 89 | name 90 | comment.block.html 91 | patterns 92 | 93 | 94 | match 95 | -- 96 | name 97 | invalid.illegal.bad-comments-or-CDATA.html 98 | 99 | 100 | include 101 | #embedded-code 102 | 103 | 104 | 105 | 106 | begin 107 | <! 108 | captures 109 | 110 | 0 111 | 112 | name 113 | punctuation.definition.tag.html 114 | 115 | 116 | end 117 | > 118 | name 119 | meta.tag.sgml.html 120 | patterns 121 | 122 | 123 | begin 124 | (?i:DOCTYPE) 125 | captures 126 | 127 | 1 128 | 129 | name 130 | entity.name.tag.doctype.html 131 | 132 | 133 | end 134 | (?=>) 135 | name 136 | meta.tag.sgml.doctype.html 137 | patterns 138 | 139 | 140 | match 141 | "[^">]*" 142 | name 143 | string.quoted.double.doctype.identifiers-and-DTDs.html 144 | 145 | 146 | 147 | 148 | begin 149 | \[CDATA\[ 150 | end 151 | ]](?=>) 152 | name 153 | constant.other.inline-data.html 154 | 155 | 156 | match 157 | (\s*)(?!--|>)\S(\s*) 158 | name 159 | invalid.illegal.bad-comments-or-CDATA.html 160 | 161 | 162 | 163 | 164 | include 165 | #embedded-code 166 | 167 | 168 | begin 169 | (?:^\s+)?(<)((?i:style))\b(?![^>]*/>) 170 | captures 171 | 172 | 1 173 | 174 | name 175 | punctuation.definition.tag.html 176 | 177 | 2 178 | 179 | name 180 | entity.name.tag.style.html 181 | 182 | 3 183 | 184 | name 185 | punctuation.definition.tag.html 186 | 187 | 188 | end 189 | (</)((?i:style))(>)(?:\s*\n)? 190 | name 191 | source.css.embedded.html 192 | patterns 193 | 194 | 195 | include 196 | #tag-stuff 197 | 198 | 199 | begin 200 | (>) 201 | beginCaptures 202 | 203 | 1 204 | 205 | name 206 | punctuation.definition.tag.html 207 | 208 | 209 | end 210 | (?=</(?i:style)) 211 | patterns 212 | 213 | 214 | include 215 | text.html.cfm 216 | 217 | 218 | include 219 | #embedded-code 220 | 221 | 222 | include 223 | source.css 224 | 225 | 226 | 227 | 228 | 229 | 230 | begin 231 | (?:^\s+)?(<)((?i:script))\b(?![^>]*/>) 232 | beginCaptures 233 | 234 | 1 235 | 236 | name 237 | punctuation.definition.tag.html 238 | 239 | 2 240 | 241 | name 242 | entity.name.tag.script.html 243 | 244 | 245 | end 246 | (?<=</(script|SCRIPT))(>)(?:\s*\n)? 247 | endCaptures 248 | 249 | 2 250 | 251 | name 252 | punctuation.definition.tag.html 253 | 254 | 255 | name 256 | source.js.embedded.html 257 | patterns 258 | 259 | 260 | include 261 | #tag-stuff 262 | 263 | 264 | begin 265 | (?<!</(?:script|SCRIPT))(>) 266 | captures 267 | 268 | 1 269 | 270 | name 271 | punctuation.definition.tag.html 272 | 273 | 2 274 | 275 | name 276 | entity.name.tag.script.html 277 | 278 | 279 | end 280 | (</)((?i:script)) 281 | patterns 282 | 283 | 284 | captures 285 | 286 | 1 287 | 288 | name 289 | punctuation.definition.comment.js 290 | 291 | 292 | match 293 | (//).*?((?=</script)|$\n?) 294 | name 295 | comment.line.double-slash.js 296 | 297 | 298 | begin 299 | /\* 300 | captures 301 | 302 | 0 303 | 304 | name 305 | punctuation.definition.comment.js 306 | 307 | 308 | end 309 | \*/|(?=</script) 310 | name 311 | comment.block.js 312 | 313 | 314 | include 315 | text.cfml.basic 316 | 317 | 318 | include 319 | #php 320 | 321 | 322 | include 323 | #nest-hash 324 | 325 | 326 | include 327 | source.js 328 | 329 | 330 | 331 | 332 | 333 | 334 | begin 335 | (</?)((?i:body|head|html)\b) 336 | captures 337 | 338 | 1 339 | 340 | name 341 | punctuation.definition.tag.begin.html 342 | 343 | 2 344 | 345 | name 346 | entity.name.tag.structure.any.html 347 | 348 | 349 | end 350 | (>) 351 | endCaptures 352 | 353 | 1 354 | 355 | name 356 | punctuation.definition.tag.end.html 357 | 358 | 359 | name 360 | meta.tag.structure.any.html 361 | patterns 362 | 363 | 364 | include 365 | #tag-stuff 366 | 367 | 368 | 369 | 370 | 371 | 372 | begin 373 | (</?)((?i:form|fieldset|textarea)\b) 374 | beginCaptures 375 | 376 | 1 377 | 378 | name 379 | punctuation.definition.tag.begin.html 380 | 381 | 2 382 | 383 | name 384 | entity.name.tag.block.form.html 385 | 386 | 387 | end 388 | (>) 389 | endCaptures 390 | 391 | 1 392 | 393 | name 394 | punctuation.definition.tag.end.html 395 | 396 | 397 | name 398 | meta.tag.block.form.html 399 | patterns 400 | 401 | 402 | include 403 | #tag-stuff 404 | 405 | 406 | 407 | 408 | 409 | begin 410 | (</?)((?i:object|applet)\b) 411 | beginCaptures 412 | 413 | 1 414 | 415 | name 416 | punctuation.definition.tag.begin.html 417 | 418 | 2 419 | 420 | name 421 | entity.name.tag.block.object.html 422 | 423 | 424 | end 425 | (>) 426 | endCaptures 427 | 428 | 1 429 | 430 | name 431 | punctuation.definition.tag.end.html 432 | 433 | 434 | name 435 | meta.tag.block.object.html 436 | patterns 437 | 438 | 439 | include 440 | #tag-stuff 441 | 442 | 443 | 444 | 445 | 446 | begin 447 | (</?)((?i:address|blockquote|dd|div|dl|dt|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|ol|p|ul|center|dir|hr|menu|pre)\b) 448 | beginCaptures 449 | 450 | 1 451 | 452 | name 453 | punctuation.definition.tag.begin.html 454 | 455 | 2 456 | 457 | name 458 | entity.name.tag.block.any.html 459 | 460 | 461 | end 462 | (>) 463 | endCaptures 464 | 465 | 1 466 | 467 | name 468 | punctuation.definition.tag.end.html 469 | 470 | 471 | name 472 | meta.tag.block.any.html 473 | patterns 474 | 475 | 476 | include 477 | #tag-stuff 478 | 479 | 480 | 481 | 482 | 483 | 484 | begin 485 | (</?)((?i:img|area|map|param)\b) 486 | beginCaptures 487 | 488 | 1 489 | 490 | name 491 | punctuation.definition.tag.begin.html 492 | 493 | 2 494 | 495 | name 496 | entity.name.tag.img.html 497 | 498 | 499 | end 500 | ((?: ?/)?>) 501 | endCaptures 502 | 503 | 1 504 | 505 | name 506 | punctuation.definition.tag.end.html 507 | 508 | 509 | name 510 | meta.tag.inline.img.html 511 | patterns 512 | 513 | 514 | include 515 | #tag-stuff 516 | 517 | 518 | 519 | 520 | 521 | begin 522 | (</?)((?i:a|base)\b) 523 | beginCaptures 524 | 525 | 1 526 | 527 | name 528 | punctuation.definition.tag.begin.html 529 | 530 | 2 531 | 532 | name 533 | entity.name.tag.link.html 534 | 535 | 536 | end 537 | ((?: ?/)?>) 538 | endCaptures 539 | 540 | 1 541 | 542 | name 543 | punctuation.definition.tag.end.html 544 | 545 | 546 | name 547 | meta.tag.inline.link.html 548 | patterns 549 | 550 | 551 | include 552 | #tag-stuff 553 | 554 | 555 | 556 | 557 | 558 | begin 559 | (</?)((?i:table|tr|td|th|tbody|thead|tfoot|col|colgroup|caption)\b) 560 | beginCaptures 561 | 562 | 1 563 | 564 | name 565 | punctuation.definition.tag.begin.html 566 | 567 | 2 568 | 569 | name 570 | entity.name.tag.table.html 571 | 572 | 573 | end 574 | ((?: ?/)?>) 575 | endCaptures 576 | 577 | 1 578 | 579 | name 580 | punctuation.definition.tag.end.html 581 | 582 | 583 | name 584 | meta.tag.inline.table.html 585 | patterns 586 | 587 | 588 | include 589 | #tag-stuff 590 | 591 | 592 | 593 | 594 | 595 | begin 596 | (</?)((?i:input|select|option|optgroup|button|label|legend)\b) 597 | beginCaptures 598 | 599 | 1 600 | 601 | name 602 | punctuation.definition.tag.begin.html 603 | 604 | 2 605 | 606 | name 607 | entity.name.tag.form.html 608 | 609 | 610 | end 611 | ((?: ?/)?>) 612 | endCaptures 613 | 614 | 1 615 | 616 | name 617 | punctuation.definition.tag.end.html 618 | 619 | 620 | name 621 | meta.tag.inline.form.html 622 | patterns 623 | 624 | 625 | include 626 | #tag-stuff 627 | 628 | 629 | 630 | 631 | 632 | begin 633 | 634 | 635 | 636 | 637 | (</?)((?i:abbr|acronym|b|basefont|bdo|big|br|cite|code|del|dfn|em|font|head|html|i|ins|isindex|kbd|li|link|meta|noscript|q|s|samp|script|small|span|strike|strong|style|sub|sup|title|tt|u|var)\b) 638 | beginCaptures 639 | 640 | 1 641 | 642 | name 643 | punctuation.definition.tag.begin.html 644 | 645 | 2 646 | 647 | name 648 | entity.name.tag.inline.any.html 649 | 650 | 651 | end 652 | ((?: ?/)?>) 653 | endCaptures 654 | 655 | 1 656 | 657 | name 658 | punctuation.definition.tag.end.html 659 | 660 | 661 | name 662 | meta.tag.inline.any.html 663 | patterns 664 | 665 | 666 | include 667 | #tag-stuff 668 | 669 | 670 | 671 | 672 | begin 673 | (</?)([a-zA-Z0-9:]+) 674 | beginCaptures 675 | 676 | 1 677 | 678 | name 679 | punctuation.definition.tag.begin.html 680 | 681 | 2 682 | 683 | name 684 | entity.name.tag.other.html 685 | 686 | 687 | end 688 | (>) 689 | endCaptures 690 | 691 | 1 692 | 693 | name 694 | punctuation.definition.tag.end.html 695 | 696 | 697 | name 698 | meta.tag.other.html 699 | patterns 700 | 701 | 702 | include 703 | #tag-stuff 704 | 705 | 706 | 707 | 709 | 710 | begin 711 | (<)([a-zA-Z0-9:]++)(?=[^>]*></\2>) 712 | beginCaptures 713 | 714 | 1 715 | 716 | name 717 | punctuation.definition.tag.begin.html 718 | 719 | 2 720 | 721 | name 722 | entity.name.tag.html 723 | 724 | 725 | end 726 | (>)(<)(/)(\2)(>) 727 | endCaptures 728 | 729 | 1 730 | 731 | name 732 | punctuation.definition.tag.end.html 733 | 734 | 2 735 | 736 | name 737 | punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html 738 | 739 | 3 740 | 741 | name 742 | punctuation.definition.tag.begin.html 743 | 744 | 4 745 | 746 | name 747 | entity.name.tag.html 748 | 749 | 5 750 | 751 | name 752 | punctuation.definition.tag.end.html 753 | 754 | 755 | name 756 | meta.tag.any.html 757 | patterns 758 | 759 | 760 | include 761 | #tag-stuff 762 | 763 | 764 | 765 | 766 | include 767 | #entities 768 | 769 | 770 | match 771 | <> 772 | name 773 | invalid.illegal.incomplete.html 774 | 775 | 776 | match 777 | < 778 | name 779 | invalid.illegal.bad-angle-bracket.html 780 | 781 | 782 | repository 783 | 784 | embedded-code 785 | 786 | patterns 787 | 788 | 789 | include 790 | #ruby 791 | 792 | 793 | include 794 | #php 795 | 796 | 802 | 803 | include 804 | #python 805 | 806 | 807 | 808 | entities 809 | 810 | patterns 811 | 812 | 813 | captures 814 | 815 | 1 816 | 817 | name 818 | punctuation.definition.entity.html 819 | 820 | 3 821 | 822 | name 823 | punctuation.definition.entity.html 824 | 825 | 826 | match 827 | (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) 828 | name 829 | constant.character.entity.html 830 | 831 | 832 | match 833 | & 834 | name 835 | invalid.illegal.bad-ampersand.html 836 | 837 | 838 | 839 | php 840 | 841 | begin 842 | (?=(^\s*)?<\?) 843 | end 844 | (?!(^\s*)?<\?) 845 | patterns 846 | 847 | 848 | include 849 | source.php 850 | 851 | 852 | 853 | python 854 | 855 | begin 856 | (?:^\s*)<\?python(?!.*\?>) 857 | end 858 | \?>(?:\s*$\n)? 859 | name 860 | source.python.embedded.html 861 | patterns 862 | 863 | 864 | include 865 | source.python 866 | 867 | 868 | 869 | ruby 870 | 871 | patterns 872 | 873 | 874 | begin 875 | <%+# 876 | captures 877 | 878 | 0 879 | 880 | name 881 | punctuation.definition.comment.erb 882 | 883 | 884 | end 885 | %> 886 | name 887 | comment.block.erb 888 | 889 | 890 | begin 891 | <%+(?!>)=? 892 | captures 893 | 894 | 0 895 | 896 | name 897 | punctuation.section.embedded.ruby 898 | 899 | 900 | end 901 | -?%> 902 | name 903 | source.ruby.embedded.html 904 | patterns 905 | 906 | 907 | captures 908 | 909 | 1 910 | 911 | name 912 | punctuation.definition.comment.ruby 913 | 914 | 915 | match 916 | (#).*?(?=-?%>) 917 | name 918 | comment.line.number-sign.ruby 919 | 920 | 921 | include 922 | source.ruby 923 | 924 | 925 | 926 | 927 | begin 928 | <\?r(?!>)=? 929 | captures 930 | 931 | 0 932 | 933 | name 934 | punctuation.section.embedded.ruby.nitro 935 | 936 | 937 | end 938 | -?\?> 939 | name 940 | source.ruby.nitro.embedded.html 941 | patterns 942 | 943 | 944 | captures 945 | 946 | 1 947 | 948 | name 949 | punctuation.definition.comment.ruby.nitro 950 | 951 | 952 | match 953 | (#).*?(?=-?\?>) 954 | name 955 | comment.line.number-sign.ruby.nitro 956 | 957 | 958 | include 959 | source.ruby 960 | 961 | 962 | 963 | 964 | 965 | 1009 | string-double-quoted 1010 | 1011 | begin 1012 | " 1013 | beginCaptures 1014 | 1015 | 0 1016 | 1017 | name 1018 | punctuation.definition.string.begin.html 1019 | 1020 | 1021 | end 1022 | " 1023 | endCaptures 1024 | 1025 | 0 1026 | 1027 | name 1028 | punctuation.definition.string.end.html 1029 | 1030 | 1031 | name 1032 | string.quoted.double.html 1033 | patterns 1034 | 1035 | 1036 | include 1037 | #embedded-code 1038 | 1039 | 1040 | include 1041 | #entities 1042 | 1043 | 1044 | 1045 | include 1046 | #nest-hash 1047 | 1048 | 1049 | 1050 | string-single-quoted 1051 | 1052 | begin 1053 | ' 1054 | beginCaptures 1055 | 1056 | 0 1057 | 1058 | name 1059 | punctuation.definition.string.begin.html 1060 | 1061 | 1062 | end 1063 | ' 1064 | endCaptures 1065 | 1066 | 0 1067 | 1068 | name 1069 | punctuation.definition.string.end.html 1070 | 1071 | 1072 | name 1073 | string.quoted.single.html 1074 | patterns 1075 | 1076 | 1077 | include 1078 | #embedded-code 1079 | 1080 | 1081 | include 1082 | #entities 1083 | 1084 | 1085 | 1086 | include 1087 | #nest-hash 1088 | 1089 | 1090 | 1091 | tag-generic-attribute 1092 | 1093 | match 1094 | \b([a-zA-Z\-:]+) 1095 | name 1096 | entity.other.attribute-name.html 1097 | 1098 | tag-id-attribute 1099 | 1100 | begin 1101 | \b(id)\b\s*(=) 1102 | captures 1103 | 1104 | 1 1105 | 1106 | name 1107 | entity.other.attribute-name.id.html 1108 | 1109 | 2 1110 | 1111 | name 1112 | punctuation.separator.key-value.html 1113 | 1114 | 1115 | end 1116 | (?<='|") 1117 | name 1118 | meta.attribute-with-value.id.html 1119 | patterns 1120 | 1121 | 1122 | begin 1123 | " 1124 | beginCaptures 1125 | 1126 | 0 1127 | 1128 | name 1129 | punctuation.definition.string.begin.html 1130 | 1131 | 1132 | contentName 1133 | meta.toc-list.id.html 1134 | end 1135 | " 1136 | endCaptures 1137 | 1138 | 0 1139 | 1140 | name 1141 | punctuation.definition.string.end.html 1142 | 1143 | 1144 | name 1145 | string.quoted.double.html 1146 | patterns 1147 | 1148 | 1149 | include 1150 | #embedded-code 1151 | 1152 | 1153 | include 1154 | #entities 1155 | 1156 | 1157 | 1158 | include 1159 | #nest-hash 1160 | 1161 | 1162 | 1163 | 1164 | begin 1165 | ' 1166 | beginCaptures 1167 | 1168 | 0 1169 | 1170 | name 1171 | punctuation.definition.string.begin.html 1172 | 1173 | 1174 | contentName 1175 | meta.toc-list.id.html 1176 | end 1177 | ' 1178 | endCaptures 1179 | 1180 | 0 1181 | 1182 | name 1183 | punctuation.definition.string.end.html 1184 | 1185 | 1186 | name 1187 | string.quoted.single.html 1188 | patterns 1189 | 1190 | 1191 | include 1192 | #embedded-code 1193 | 1194 | 1195 | include 1196 | #entities 1197 | 1198 | 1199 | 1200 | include 1201 | #nest-hash 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | cfcomments 1208 | 1209 | patterns 1210 | 1211 | 1212 | match 1213 | <!---.*?---> 1214 | name 1215 | comment.line.cfml 1216 | 1217 | 1218 | begin 1219 | <!--- 1220 | captures 1221 | 1222 | 0 1223 | 1224 | name 1225 | punctuation.definition.comment.cfml 1226 | 1227 | 1228 | end 1229 | ---> 1230 | name 1231 | comment.block.cfml 1232 | patterns 1233 | 1234 | 1235 | include 1236 | #cfcomments 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | tag-stuff 1243 | 1244 | patterns 1245 | 1246 | 1247 | include 1248 | #nest-hash 1249 | 1250 | 1251 | include 1252 | #cfcomments 1253 | 1254 | 1255 | include 1256 | text.cfml.basic 1257 | 1258 | 1259 | include 1260 | #tag-id-attribute 1261 | 1262 | 1263 | include 1264 | #tag-generic-attribute 1265 | 1266 | 1267 | include 1268 | #string-double-quoted 1269 | 1270 | 1271 | include 1272 | #string-single-quoted 1273 | 1274 | 1275 | include 1276 | #embedded-code 1277 | 1278 | 1279 | 1280 | 1281 | nest-hash 1282 | 1283 | patterns 1284 | 1285 | 1286 | match 1287 | ## 1288 | name 1289 | string.escaped.hash.html 1290 | 1291 | 1292 | match 1293 | (?x) 1294 | (\#) 1295 | (?! # zero width negative lookahead assertion 1296 | ( 1297 | ([\w$]+ # assertion for plain variables or function names including currency symbol "$" 1298 | ( 1299 | (\[.*\]) # asserts a match for anything in square brackets 1300 | | 1301 | (\(.*\)) # or anything in parens 1302 | | 1303 | (\.[\w$]+) # or zero or more "dot" notated variables 1304 | | 1305 | (\s*[\+\-\*\/&]\s*[\w$]+) # or simple arithmentic operators + concatenation 1306 | | 1307 | (\s*&\s*["|'].+["|']) # or concatenation with a quoted string 1308 | )* # asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times 1309 | ) 1310 | | 1311 | (\(.*\)) # asserts a match for anything in parens 1312 | )\# # asserts closing hash 1313 | ) 1314 | name 1315 | invalid.illegal.unescaped.hash.html 1316 | 1317 | 1318 | 1319 | begin 1320 | (?x) 1321 | (\#) 1322 | (?= # zero width negative lookahead assertion 1323 | ( 1324 | ([\w$]+ # assertion for plain variables or function names including currency symbol "$" 1325 | ( 1326 | (\[.*\]) # asserts a match for anything in square brackets 1327 | | 1328 | (\(.*\)) # or anything in parens 1329 | | 1330 | (\.[\w$]+) # or zero or more "dot" notated variables 1331 | | 1332 | (\s*[\+\-\*\/&]\s*[\w$]+) # or simple arithmentic operators + concatenation 1333 | | 1334 | (\s*&\s*["|'].+["|']) # or concatenation with a quoted string 1335 | )* # asserts preceeding square brackets, parens, dot notated vars or arithmetic zero or more times 1336 | ) 1337 | | 1338 | (\(.*\)) # asserts a match for anything in parens 1339 | )\# # asserts closing hash 1340 | ) 1341 | beginCaptures 1342 | 1343 | 1 1344 | 1345 | name 1346 | punctuation.definition.hash.begin.html 1347 | 1348 | 1349 | end 1350 | (#) 1351 | endCaptures 1352 | 1353 | 1 1354 | 1355 | name 1356 | punctuation.definition.hash.end.html 1357 | 1358 | 1359 | contentName 1360 | source.cfscript.embedded.html 1361 | name 1362 | meta.name.interpolated.hash.html 1363 | patterns 1364 | 1365 | 1366 | include 1367 | source.cfscript 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | scopeName 1375 | text.html.cfm 1376 | uuid 1377 | b2e03230-b205-4546-884e-ba107e964e46 1378 | 1379 | 1380 | -------------------------------------------------------------------------------- /JavaDoc Add Line.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": "\n"}}, 4 | {"command": "insert", "args": {"characters": "*"}}, 5 | {"command": "insert", "args": {"characters": " "}} 6 | ] 7 | -------------------------------------------------------------------------------- /JavaDoc Delete Line.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "expand_selection", "args": {"to": "line"}}, 3 | {"command": "add_to_kill_ring", "args": {"forward": true}}, 4 | {"command": "left_delete"}, 5 | {"command": "move", "args": {"by": "lines", "forward": false}}, 6 | {"command": "move_to", "args": {"to": "hardeol"}} 7 | ] 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Main.sublime-menu: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "Preferences", 4 | "mnemonic": "n", 5 | "id": "preferences", 6 | "children": 7 | [ 8 | { 9 | "caption": "Package Settings", 10 | "mnemonic": "P", 11 | "id": "package-settings", 12 | "children": 13 | [ 14 | { 15 | "caption": "ColdFusion", 16 | "children": 17 | [ 18 | { 19 | "command": "open_file", "args": 20 | { 21 | "file": "${packages}/ColdFusion/ColdFusion.sublime-settings" 22 | }, 23 | "caption": "Settings - Default" 24 | }, 25 | { 26 | "command": "open_file", "args": 27 | { 28 | "file": "${packages}/User/ColdFusion.sublime-settings" 29 | }, 30 | "caption": "Settings - User" 31 | }, 32 | { "caption": "-" }, 33 | { 34 | "command": "open_file", 35 | "args": { 36 | "file": "${packages}/ColdFusion/Default (OSX).sublime-keymap", 37 | "platform": "OSX" 38 | }, 39 | "caption": "Key Bindings – Default" 40 | }, 41 | { 42 | "command": "open_file", 43 | "args": { 44 | "file": "${packages}/ColdFusion/Default.sublime-keymap", 45 | "platform": "Linux" 46 | }, 47 | "caption": "Key Bindings – Default" 48 | }, 49 | { 50 | "command": "open_file", 51 | "args": { 52 | "file": "${packages}/ColdFusion/Default.sublime-keymap", 53 | "platform": "Windows" 54 | }, 55 | "caption": "Key Bindings – Default" 56 | }, 57 | { 58 | "command": "open_file", 59 | "args": { 60 | "file": "${packages}/User/Default (OSX).sublime-keymap", 61 | "platform": "OSX" 62 | }, 63 | "caption": "Key Bindings – User" 64 | }, 65 | { 66 | "command": "open_file", 67 | "args": { 68 | "file": "${packages}/User/Default (Linux).sublime-keymap", 69 | "platform": "Linux" 70 | }, 71 | "caption": "Key Bindings – User" 72 | }, 73 | { 74 | "command": "open_file", 75 | "args": { 76 | "file": "${packages}/User/Default (Windows).sublime-keymap", 77 | "platform": "Windows" 78 | }, 79 | "caption": "Key Bindings – User" 80 | } 81 | ] 82 | } 83 | ] 84 | } 85 | ] 86 | } 87 | ] 88 | -------------------------------------------------------------------------------- /Symbol List Queries.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Symbol List Query 7 | scope 8 | text.html.cfm meta.toc-list.query, source.cfscript meta.toc-list.query 9 | settings 10 | 11 | symbolTransformation 12 | s/^/qry: / 13 | 14 | uuid 15 | 04D404C0-4D7D-11E1-B86C-0800200C9A66 16 | 17 | 18 | -------------------------------------------------------------------------------- /Symbol List.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Symbol List 7 | scope 8 | source.cfscript entity.name.function, text.html.cfm meta.toc-list.function 9 | settings 10 | 11 | symbolTransformation 12 | s/^/func: / 13 | 14 | uuid 15 | CBE8F340-437D-11E1-B86C-0800200C9A66 16 | 17 | 18 | -------------------------------------------------------------------------------- /Terminate Statement.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert_snippet", "args": {"contents": "${TM_LINE_TERMINATOR:;}"} } 4 | ] 5 | -------------------------------------------------------------------------------- /brackets.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | CFscript - Embedded 7 | scope 8 | source.cfscript.cfc text.html.cfm.embedded.cfml meta.tag.block.cf.script.cfml source.cfscript.embedded.cfml 9 | settings 10 | 11 | decreaseIndentPattern 12 | ^(.*\*/)?\s*\}.*$ 13 | increaseIndentPattern 14 | ^.*\{[^}"']*$ 15 | 16 | uuid 17 | DA88A960-F9E2-11E1-A21F-0800200C9A66 18 | 19 | 20 | -------------------------------------------------------------------------------- /cflib.py: -------------------------------------------------------------------------------- 1 | import sublime, sublime_plugin, json 2 | from urllib import urlopen 3 | 4 | CFLIBCATS = r"http://www.cflib.org/api/api.cfc?method=getlibraries&returnformat=json" 5 | CFLIBUDFS = r"http://www.cflib.org/api/api.cfc?method=getudfs&returnformat=json&libraryid=" 6 | CFLIBUDF = r"http://www.cflib.org/api/api.cfc?method=getudf&returnFormat=json&udfid=" 7 | 8 | class ShowCflibCommand(sublime_plugin.WindowCommand): 9 | categories = [] 10 | udfs = [] 11 | def __init__(self, *args, **kwargs): 12 | super(ShowCflibCommand, self).__init__(*args, **kwargs) 13 | categories = [] 14 | udfs = [] 15 | def run(self): 16 | self.getCategories() 17 | self.window.show_quick_panel([[v] for k, v in (self.categories)], self.on_select_categories) 18 | 19 | def getCategories(self): 20 | d = json.load(urlopen(CFLIBCATS)) 21 | self.categories = d['DATA'] 22 | 23 | def getUdfs(self,index): 24 | d = json.load(urlopen(CFLIBUDFS + str(self.categories[index][0]))) 25 | self.udfs = d['DATA'] 26 | 27 | def on_select_categories(self, index): 28 | if index == -1: 29 | return 30 | self.getUdfs(index) 31 | self.window.show_quick_panel([[v.strip(), c.strip()] for k, v, c in self.udfs], self.on_select_udf) 32 | 33 | def on_select_udf(self, index): 34 | if index == -1: 35 | self.run() 36 | else: 37 | d = json.load(urlopen(CFLIBUDF + str(self.udfs[index][0]))) 38 | self.window.active_view().run_command("insert_udf", {"code":str(d['CODE'])}) 39 | 40 | class InsertUdfCommand(sublime_plugin.TextCommand): 41 | def run(self, edit, code): 42 | for region in self.view.sel(): 43 | self.view.replace(edit, region, code) 44 | -------------------------------------------------------------------------------- /coldfusiontagcompletions.py: -------------------------------------------------------------------------------- 1 | import sublime 2 | import sublime_plugin 3 | 4 | SETTINGS = sublime.load_settings('ColdFusion.sublime-settings') 5 | SUBLIME_SETTINGS = sublime.load_settings('Preferences.sublime-settings') 6 | 7 | def get_class(): 8 | kls = "taglib." + SETTINGS.get("dictionary") + ".tags" 9 | parts = kls.split('.') 10 | module = ".".join(parts[:-1]) 11 | m = __import__( module ) 12 | for comp in parts[1:]: 13 | m = getattr(m, comp) 14 | return m 15 | 16 | class CloseCftagCommand(sublime_plugin.TextCommand): 17 | def run(self, edit): 18 | 19 | sel = self.view.sel()[0] 20 | 21 | # insert the actual > character 22 | for region in self.view.sel(): 23 | self.view.insert(edit, region.end(), ">") 24 | 25 | # prevents auto_complete pop up from triggering 26 | self.view.run_command("hide_auto_complete") 27 | 28 | # return if disabled in settings file 29 | if not SETTINGS.get("auto_close_cfml"): 30 | return 31 | 32 | # prevents triggering inside strings and other scopes that are not block tags 33 | # this should be taken care of in keybindings, but it's not working for cfcomponent 34 | if self.view.match_selector(sel.end(), "string") \ 35 | or self.view.match_selector(sel.end(), "source.cfscript.embedded.cfml") \ 36 | or not self.view.match_selector(sel.end(), "meta.tag.block.cf"): 37 | return 38 | 39 | for region in self.view.sel(): 40 | pos = region.begin() 41 | 42 | tagdata = self.view.substr(sublime.Region(0, pos)).split("<") 43 | tagdata.reverse() 44 | tagdata = tagdata.pop(0).split(" ") 45 | tagname = tagdata[0] 46 | 47 | if self.view.match_selector(sel.end(),"meta.tag.block.cf") \ 48 | and not self.view.substr(sel.end() - 1) == "/" \ 49 | and not tagname[0] == "/": 50 | 51 | if not tagname[-1] == ">": 52 | tagname = tagname + ">" 53 | if not SETTINGS.get("auto_indent_on_close") or tagname == "cfoutput>": 54 | self.view.run_command("insert_snippet", {"contents": "$0 0: 61 | dir_len = this_file.rfind('\\') #(for Windows) 62 | this_dir = this_file[:(dir_len + 1)] # adds ending '/' 63 | 64 | cfc_file = this_dir + extendspath + ".cfc" 65 | if not os.path.isfile(cfc_file): 66 | # check for the cfc in root folders 67 | for folder in sublime.active_window().folders(): 68 | if os.path.isfile(folder + "/" + extendspath + ".cfc"): 69 | cfc_file = folder + "/" + extendspath + ".cfc" 70 | break 71 | try: 72 | add_methods(cfc_file, view.substr(cfc_region).split(".")[-1] ) 73 | except UnboundLocalError: 74 | pass 75 | except IOError: 76 | pass 77 | 78 | # add this files methods to autocomplete 79 | add_methods(view.file_name(), "this") 80 | 81 | # add the completions to the local _completions variable 82 | _completions.extend(completions) 83 | 84 | # prevents dups 85 | del completions[:] 86 | return _completions 87 | -------------------------------------------------------------------------------- /importer/import.cfc: -------------------------------------------------------------------------------- 1 | /* 2 | Requires CF9, and a CFEclipse dictionary file 3 | Converts a CFEclipse dictionary file to a CF structure 4 | then outputs the Python completion object for use with 5 | ColdFusionTagCompletions, example: 6 | 7 | 8 | importer = CreateObject("import"); 9 | importer.init(ExpandPath("/") & "cf9.xml").convert(); 10 | 11 |
 12 | 	#importer.outputpython()#
 13 | 	
14 | */ 15 | component output="false" displayname="import" { 16 | this.tagxml = ""; 17 | this.newtags = []; 18 | this.newtagtemplate = { 19 | name = "", 20 | endtagrequired = true, 21 | completions = [], 22 | attributes = {} 23 | }; 24 | this.newattributetemplate = { 25 | name = "", 26 | completions = [] 27 | }; 28 | 29 | public function init(filename) { 30 | var filecontent = FileRead( filename ); 31 | this.tagxml = XmlParse( filecontent ).dictionary.tags; 32 | return this; 33 | } 34 | 35 | public function convert() { 36 | var i = 0; 37 | var j = 0; 38 | var k = 0; 39 | var newtag = {}; 40 | var newattribute = {}; 41 | var currenttag = ""; 42 | var paramname = ""; 43 | for ( i = 1; i <= ArrayLen( this.tagxml.Tag ); i++ ) { 44 | currenttag = this.tagxml.Tag[i]; 45 | newtag = Duplicate( this.newtagtemplate ); 46 | if ( StructKeyExists( currenttag.XmlAttributes, "endtagrequired" ) EQ false ) { 47 | newtag.endtagrequired = "false"; 48 | } 49 | newtag.name = currenttag.XmlAttributes.Name; 50 | if ( StructKeyExists( currenttag, "parameter" ) ) { 51 | for ( j = 1; j <= ArrayLen( currenttag.parameter ); j++ ) { 52 | paramname = currenttag.parameter[j].XmlAttributes.name; 53 | newtag.completions.add( paramname ); 54 | newattribute = Duplicate( this.newattributetemplate ); 55 | newattribute.name = currenttag.parameter[j].XmlAttributes.name; 56 | if ( StructKeyExists( currenttag.parameter[j].XmlAttributes, "type" ) && ( currenttag.parameter[j].XmlAttributes.type == "Boolean" || 57 | ( StructKeyExists( currenttag.parameter[j], "values" ) && StructKeyExists( currenttag.parameter[j].values, "value" ) ) ) ) { 58 | 59 | switch ( currenttag.parameter[j].XmlAttributes.type ) { 60 | case "Boolean": 61 | newattribute.completions.add( "true" ); 62 | newattribute.completions.add( "false" ); 63 | break; 64 | case "String": 65 | if ( StructKeyExists( currenttag.parameter[j],"values" ) && StructKeyExists( currenttag.parameter[j].values,"value") ) { 66 | for ( k = 1; k <= ArrayLen( currenttag.parameter[j].values.value ); k++ ) { 67 | newattribute.completions.add( Replace( currenttag.parameter[j].values.value[k].xmlattributes.option, '"', '', "all" ) ); 68 | } 69 | } 70 | break; 71 | } 72 | 73 | } 74 | newtag.attributes[newattribute.name] = newattribute; 75 | /* 76 | if ( StructKeyExists( currenttag.parameter[j].XmlAttributes, "required" ) && currenttag.parameter[j].XmlAttributes.required EQ "true" ) { 77 | 78 | } 79 | */ 80 | } 81 | } 82 | this.newtags.add( newtag ); 83 | } 84 | return this.newtags; 85 | } 86 | 87 | public function outputpython( includeValuesInMainList = true ) { 88 | var pythonoutput = ""; 89 | var tagIterator = this.newtags.iterator(); 90 | var compIterator = ""; 91 | var tag = ""; 92 | var comp = ""; 93 | var attrCompIterator = ""; 94 | var attrComp = ""; 95 | var crlf = chr( 13 ) & chr( 10 ); 96 | var attrIterator = ""; 97 | var attr = ""; 98 | 99 | while( tagIterator.hasNext() ) { 100 | tag = tagIterator.next(); 101 | pythonoutput &= "self.completions['" & tag.name & "'] = {" & crlf; 102 | compIter = tag.completions.iterator(); 103 | pythonoutput &= " 'completions': [" & crlf; 104 | while ( compIter.hasNext() ) { 105 | comp = compIter.next(); 106 | pythonoutput &= ' ("' & comp & '\t@' & comp & '", "' & comp & '=\"$1\"$0")'; 107 | if ( arguments.includeValuesInMainList && StructKeyExists( tag.attributes, comp ) ) { 108 | attrCompIterator = tag.attributes[comp].completions.iterator(); 109 | while ( attrCompIterator.hasNext() ) { 110 | attrcomp = attrCompIterator.next(); 111 | pythonoutput &= "," & crlf; 112 | pythonoutput &= ' ("' & comp & '=\"' & attrcomp & '\"\t' & comp & '", "' & comp & '=\"${1:' & attrcomp & '}\"$0")'; 113 | } 114 | } 115 | if ( compIter.hasNext() ) { 116 | pythonoutput &= ","; 117 | } 118 | pythonoutput &= crlf; 119 | } 120 | pythonoutput &= " ]," & crlf; 121 | attrIterator = StructKeyArray(tag.attributes).iterator(); 122 | pythonoutput &= " 'attributes': ["; 123 | while ( attrIterator.hasNext() ) { 124 | attr = attrIterator.next(); 125 | pythonoutput &= crlf & ' "' & attr & '"'; 126 | if ( attrIterator.hasNext() ) { 127 | pythonoutput &= ","; 128 | } 129 | } 130 | pythonoutput &= crlf & " ]" & crlf; 131 | pythonoutput &= "}" & crlf; 132 | } 133 | return pythonoutput; 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /ondotcompletions.py: -------------------------------------------------------------------------------- 1 | import sublime, sublime_plugin 2 | 3 | completions = [] 4 | dotcompletions = {} 5 | dotcompletions["CGI"] = [ 6 | ("AUTH_PASSWORD", "AUTH_PASSWORD"), 7 | ("AUTH_TYPE", "AUTH_TYPE"), 8 | ("AUTH_USER", "AUTH_USER"), 9 | ("CERT_COOKIE", "CERT_COOKIE"), 10 | ("CERT_FLAGS", "CERT_FLAGS"), 11 | ("CERT_ISSUER", "CERT_ISSUER"), 12 | ("CERT_KEYSIZE", "CERT_KEYSIZE"), 13 | ("CERT_SECRETKEYSIZE", "CERT_SECRETKEYSIZE"), 14 | ("CERT_SERIALNUMBER", "CERT_SERIALNUMBER"), 15 | ("CERT_SERVER_ISSUER", "CERT_SERVER_ISSUER"), 16 | ("CERT_SERVER_SUBJECT", "CERT_SERVER_SUBJECT"), 17 | ("CERT_SUBJECT", "CERT_SUBJECT"), 18 | ("CF_TEMPLATE_PATH", "CF_TEMPLATE_PATH"), 19 | ("CONTENT_LENGTH", "CONTENT_LENGTH"), 20 | ("CONTENT_TYPE", "CONTENT_TYPE"), 21 | ("GATEWAY_INTERFACE", "GATEWAY_INTERFACE"), 22 | ("HTTP_ACCEPT", "HTTP_ACCEPT"), 23 | ("HTTP_ACCEPT_ENCODING", "HTTP_ACCEPT_ENCODING"), 24 | ("HTTP_ACCEPT_LANGUAGE", "HTTP_ACCEPT_LANGUAGE"), 25 | ("HTTP_CONNECTION", "HTTP_CONNECTION"), 26 | ("HTTP_COOKIE", "HTTP_COOKIE"), 27 | ("HTTP_HOST", "HTTP_HOST"), 28 | ("HTTP_USER_AGENT", "HTTP_USER_AGENT"), 29 | ("HTTP_REFERER", "HTTP_REFERER"), 30 | ("HTTPS", "HTTPS"), 31 | ("HTTPS_KEYSIZE", "HTTPS_KEYSIZE"), 32 | ("HTTPS_SECRETKEYSIZE", "HTTPS_SECRETKEYSIZE"), 33 | ("HTTPS_SERVER_ISSUER", "HTTPS_SERVER_ISSUER"), 34 | ("HTTPS_SERVER_SUBJECT", "HTTPS_SERVER_SUBJECT"), 35 | ("PATH_INFO", "PATH_INFO"), 36 | ("PATH_TRANSLATED", "PATH_TRANSLATED"), 37 | ("QUERY_STRING", "QUERY_STRING"), 38 | ("REMOTE_ADDR", "REMOTE_ADDR"), 39 | ("REMOTE_HOST", "REMOTE_HOST"), 40 | ("REMOTE_USER", "REMOTE_USER"), 41 | ("REQUEST_METHOD", "REQUEST_METHOD"), 42 | ("SCRIPT_NAME", "SCRIPT_NAME"), 43 | ("SERVER_NAME", "SERVER_NAME"), 44 | ("SERVER_PORT", "SERVER_PORT"), 45 | ("SERVER_PORT_SECURE", "SERVER_PORT_SECURE"), 46 | ("SERVER_PROTOCOL", "SERVER_PROTOCOL"), 47 | ("SERVER_SOFTWARE", "SERVER_SOFTWARE"), 48 | ("WEB_SERVER_API", "WEB_SERVER_API"), 49 | ("CONTEXT_PATH", "CONTEXT_PATH"), 50 | ("LOCAL_ADDR", "LOCAL_ADDR"), 51 | ("LOCAL_HOST", "LOCAL_HOST") 52 | ] 53 | 54 | class DotCompletionsCommand(sublime_plugin.TextCommand): 55 | def run(self, edit): 56 | 57 | sel = self.view.sel()[0] 58 | 59 | # insert the actual . character 60 | for region in self.view.sel(): 61 | self.view.insert(edit, region.end(), ".") 62 | 63 | if self.view.settings().get("auto_complete") == False: 64 | return 65 | 66 | word = self.view.word(sel.begin() - 1) 67 | if self.view.substr(word) == "CGI": 68 | completions.extend(dotcompletions["CGI"]) 69 | t = self.view.settings().get("auto_complete_delay") 70 | sublime.set_timeout(lambda: 71 | self.view.run_command("auto_complete", { 72 | 'disable_auto_insert': True, 73 | 'next_completion_if_showing': False, 74 | 'api_completions_only': True}), t) 75 | 76 | class OnDotCompletions(sublime_plugin.EventListener): 77 | def on_query_completions(self, view, prefix, locations): 78 | _completions = [] 79 | _completions.extend(completions) 80 | 81 | del completions[:] 82 | return _completions 83 | 84 | 85 | -------------------------------------------------------------------------------- /package-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "url": "https://github.com/SublimeText/ColdFusion", 3 | "version": "2012.06.24.21.10.45", 4 | "description": "ColdFusion package for Sublime Text 2", 5 | "author": "@atomi" 6 | } 7 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # ColdFusion Package for Sublime Text 2 | 3 | ### This package is no longer maintained. 4 | 5 | Please use jcberquist's excellent package: https://github.com/jcberquist/sublimetext-cfml 6 | 7 | ### Sublime Text 3 8 | The development branch contains a rewrite of the ColdFusion plugin. 9 | The only installation method is via Git. 10 | ``` 11 | cd Packages/ 12 | git clone https://github.com/SublimeText/ColdFusion.git 13 | cd ColdFusion 14 | git checkout development 15 | ``` 16 | * CFLIB Command is not currently working. 17 | * Tag Operator Completions is not yet implemented 18 | * CFScript component method completions is not yet implemented 19 | * Only CF10 Dictionary is imported. 20 | 21 | ### What's New 22 | * Added Tag Operator completions for cfscript (10/21/12) 23 | * Added CFScript component method completions (6/28/12) 24 | * Added "auto_close_cfml", "auto_indent_on_close" settings (6/25/12) 25 | * Added Tag Attribute completions (6/24/12) 26 | * Added Command ```ColdFusion: Insert CFlib UDF``` (6/2/12) 27 | 28 | ### Features 29 | 30 | * ColdFusion cfml, and script-based CFCs syntax highlighting. (see tmLanguage files) 31 | * Auto inserts closing hash # (see Default (platform).sublime-keymap) 32 | * Provides completions that match just after typing an opening angle bracket (see cfml_completions.py) 33 | * Auto Complete ColdFusion Tags and Attributes (opt. cf7, cf8, cf9 & cf10) 34 | * ColdFusion specific key bindings (see Default (platform).sublime-keymap) 35 | 36 | ## Installation 37 | 38 | The recommended method of installation is via Package Control. 39 | 40 | ### Package Control 41 | 42 | * Follow instructions on https://packagecontrol.io/installation 43 | * Install using Package Control: Install > ColdFusion package 44 | 45 | ### Using Git 46 | 47 | Go to your Sublime Text 2 `Packages` directory and clone the repository using the command below: 48 | 49 | git clone https://github.com/SublimeText/ColdFusion 50 | 51 | ### Download Manually 52 | 53 | * Download the files using the GitHub .zip download option 54 | * Unzip the files and rename the folder to `ColdFusion` 55 | * Copy the folder to your Sublime Text 2 `Packages` directory 56 | 57 | - - - 58 | 59 | ## Key bindings 60 | 61 | Some packages will override key bindings. If you have problems with a specific key shortcut, 62 | you can add it to your User - Key Bindings file ```Preferences > Key Bindings - User``` 63 | 64 | You can also use ```sublime.log_commands(True)``` in the console (```ctrl+~```) to output key presses and their corresponding command to the console pane. 65 | 66 | 67 | 68 | 71 | 74 | 75 | 76 | 79 | 82 | 83 | 84 | 87 | 90 | 91 | 92 | 95 | 98 | 99 | 100 | 103 | 106 | 107 |
69 | +# #SELECTION# 70 | 72 | Ctrl++O <cfoutput>SELECTION</cfoutput> 73 |
77 | Ctrl++# <cfoutput>#SELECTION#</cfoutput> 78 | 80 | Ctrl+Alt+A <cfabort /> 81 |
85 | Ctrl+Alt+D <cfdump var="#SELECTION#"> 86 | 88 | Alt++R <cfscript>SELECTION</cfscript> 89 |
93 | Ctrl++/ block comment (cfml/cfscript) 94 | 96 | Ctrl+Alt++/ javadoc comment 97 |
101 | Alt+ terminates statement (cfscript) 102 | 104 | Ctrl++= <cfset SELECTION /> 105 |
108 | 109 | 110 | Many more key bindings are available via Sublime ```Preferences > Key Bindings - Default``` 111 | 112 | ##Completions and Snippets 113 | Although, this package includes CFScript completions (```.sublime-completions```) and ColdFusion tag completions (API-injected), it's recommended that you create your own custom snippets using code that fits your particular coding style. 114 | To create a new snippet select ```Tools > New Snippet...``` from the Sublime Text menu. 115 | Use ```text.html.cfm - string``` for ColdFusion markup snippets and ```source.cfscript - string``` for CFScript snippets. 116 | 117 | Completions in order of priority are: 118 | * Snippets 119 | * API-injected completions 120 | * ```.sublime-completions``` files 121 | * words in the current buffer 122 | 123 | The following list contains snippets repositories made available by ColdFusion community members: 124 | 125 | * https://github.com/indynagpal/sublime-stuff 126 | * https://github.com/bittersweetryan/ColdFusion-Script-Sublime-Snippets 127 | 128 | To install snippets just put the ```.sublime-snippet``` files in your Packages/User folder or sub-folder (to get to your Packages/User folder select ```Preferences > Browse Packages...``` from the Sublime Text 2 menu). 129 | 130 | ##Custom Themes 131 | 132 | The following themes optimized for ColdFusion are made available by ColdFusion community members and can be installed with Package Control (http://wbond.net/sublime_packages/community) 133 | 134 | * https://github.com/Siddley/Enhanced.HTML.CFML 135 | 136 | If you'd like to customize your favorite theme for ColdFusion support, you can use the ```entity.name.tag.cf``` scope in your tmTheme file. 137 | For example the following definition will use the color ```#C87551``` for all ColdFusion tags: 138 | ``` 139 | 140 | name 141 | Meta 142 | scope 143 | meta.tag.block.cf, meta.tag.inline.cf 144 | settings 145 | 146 | fontStyle 147 | 148 | foreground 149 | #C87551 150 | 151 | 152 | 153 | 154 | name 155 | Entity 156 | scope 157 | entity.name.tag.cf 158 | settings 159 | 160 | fontStyle 161 | 162 | foreground 163 | #C87551 164 | 165 | 166 | ``` 167 | You can use Ctrl+Alt++P to get the scope name at the cursor position for more theme customizing . 168 | 169 | ##Development Branch 170 | To help test the development branch you can install it by dowloading the zip and copying the contents to the Packages/ColdFusion folder. 171 | 172 | 173 | Alternatively, you can use git to install the ColdFusion package as mentioned above and switch to the development tracking branch using: 174 | 175 | ``` 176 | git checkout development 177 | ``` 178 | 179 | 180 | ##Additional Packages 181 | Some additional packages you might want to check out - they are all available through Package Control http://wbond.net/sublime_packages/community 182 | 183 | * http://net.tutsplus.com/articles/news/introducing-nettuts-fetch/ (highly recommended) 184 | * https://github.com/BoundInCode/AutoFileName (provides file auto-complete) 185 | * https://github.com/weslly/ColorPicker (choose a color and get the hex code) 186 | * https://github.com/xobb1t/Sublime-AdvancedNewFile (create new files faster) 187 | * https://github.com/kemayo/sublime-text-2-git (git commands) 188 | * https://github.com/facelessuser/ExportHtml (provides printing) 189 | * https://github.com/dz0ny/LiveReload-sublimetext2 (live reload browser) 190 | * https://github.com/bgreenlee/sublime-github (github gists and more) 191 | * https://github.com/virtix/sublime-text-2-mxunit (mxunit testing) 192 | * https://github.com/seancoyne/farcry-sublimetext (farcry snippets) 193 | 194 | These packages require manual installation 195 | 196 | * https://github.com/adampresley/sublime-cf-js-log-finder (debug output finder) 197 | * https://github.com/timsayshey/Sublime-Text-CFWheels (cfwheels plugin) 198 | * https://github.com/DominicWatson/SublimeText2CfQuickDocsLauncher (cfml documentation) 199 | 200 | ##License 201 | Copyright (c) 2012 202 | 203 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 204 | 205 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 206 | 207 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 208 | -------------------------------------------------------------------------------- /snippets/cfscript/CFScript-NewCFC.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | component 20 | 21 | source.cfscript - string - meta 22 | New CFC 23 | 24 | -------------------------------------------------------------------------------- /snippets/cfscript/CFScript-NewFunction.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | function 13 | 14 | source.cfscript - string - meta 15 | new function (cfscript) 16 | 17 | -------------------------------------------------------------------------------- /snippets/cfscript/CFScript-SwitchCase.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | switch 15 | 16 | source.cfscript - string - meta 17 | switch-case (cfscript) 18 | 19 | -------------------------------------------------------------------------------- /snippets/cfscript/CFScript-TryCatch.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | try 15 | 16 | source.cfscript - string meta 17 | try-catch (cfscript) 18 | 19 | -------------------------------------------------------------------------------- /taglib/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SublimeText/ColdFusion/dbe2f76038fe77fe90b4cc4a0651aa817f14f1a3/taglib/__init__.py -------------------------------------------------------------------------------- /tagoperators.py: -------------------------------------------------------------------------------- 1 | import sublime 2 | import sublime_plugin 3 | import re 4 | 5 | attributes = {} 6 | attributes["exit \"$1\";"] = [] 7 | attributes["pageencoding \"$1\";"] = [] 8 | attributes["include \"$1\";"] = [] 9 | attributes["import \"$1\";"] = [] 10 | attributes["throw \"$1\";"] = [] 11 | attributes["rethrow"] = [] 12 | attributes["location"] = [] 13 | attributes["abort"] = [] 14 | attributes["trace"] = [] 15 | attributes["break"] = [] 16 | attributes["continue"] = [] 17 | attributes["try"] = [] 18 | attributes["finally"] = [] 19 | attributes["component"] = [ 20 | ("extends\t@extends", "extends=\"$1\"$0"), 21 | ("initmethod\t@initmethod", "initmethod=\"$1\"$0"), 22 | ("implements\t@implements", "implements=\"$1\"$0"), 23 | ("output\t@output", "output=\"$1\"$0"), 24 | ("output=\"true\"\toutput", "output=\"${1:true}\"$0"), 25 | ("output=\"false\"\toutput", "output=\"${1:false}\"$0"), 26 | ("displayname\t@displayname", "displayname=\"$1\"$0"), 27 | ("hint\t@hint", "hint=\"$1\"$0"), 28 | ("style\t@style", "style=\"$1\"$0"), 29 | ("style=\"rpc\"\tstyle", "style=\"${1:rpc}\"$0"), 30 | ("style=\"document\"\tstyle", "style=\"${1:document}\"$0"), 31 | ("style=\"wrapped\"\tstyle", "style=\"${1:wrapped}\"$0"), 32 | ("namespace\t@namespace", "namespace=\"$1\"$0"), 33 | ("serviceportname\t@serviceportname", "serviceportname=\"$1\"$0"), 34 | ("porttypename\t@porttypename", "porttypename=\"$1\"$0"), 35 | ("bindingname\t@bindingname", "bindingname=\"$1\"$0"), 36 | ("wsdlfile\t@wsdlfile", "wsdlfile=\"$1\"$0"), 37 | ("serviceaddress\t@serviceaddress", "serviceaddress=\"$1\"$0"), 38 | ("persistent\t@persistent", "persistent=\"$1\"$0"), 39 | ("persistent=\"true\"\tpersistent", "persistent=\"${1:true}\"$0"), 40 | ("persistent=\"false\"\tpersistent", "persistent=\"${1:false}\"$0"), 41 | ("entityName\t@entityName", "entityName=\"$1\"$0"), 42 | ("table\t@table", "table=\"$1\"$0"), 43 | ("schema\t@schema", "schema=\"$1\"$0"), 44 | ("catalog\t@catalog", "catalog=\"$1\"$0"), 45 | ("dynamicinsert\t@dynamicinsert", "dynamicinsert=\"$1\"$0"), 46 | ("dynamicinsert=\"true\"\tdynamicinsert", "dynamicinsert=\"${1:true}\"$0"), 47 | ("dynamicinsert=\"false\"\tdynamicinsert", "dynamicinsert=\"${1:false}\"$0"), 48 | ("dynamicupdate\t@dynamicupdate", "dynamicupdate=\"$1\"$0"), 49 | ("dynamicupdate=\"true\"\tdynamicupdate", "dynamicupdate=\"${1:true}\"$0"), 50 | ("dynamicupdate=\"false\"\tdynamicupdate", "dynamicupdate=\"${1:false}\"$0"), 51 | ("readonly\t@readonly", "readonly=\"$1\"$0"), 52 | ("readonly=\"true\"\treadonly", "readonly=\"${1:true}\"$0"), 53 | ("readonly=\"false\"\treadonly", "readonly=\"${1:false}\"$0"), 54 | ("selectbeforeupdate\t@selectbeforeupdate", "selectbeforeupdate=\"$1\"$0"), 55 | ("selectbeforeupdate=\"true\"\tselectbeforeupdate", "selectbeforeupdate=\"${1:true}\"$0"), 56 | ("selectbeforeupdate=\"false\"\tselectbeforeupdate", "selectbeforeupdate=\"${1:false}\"$0"), 57 | ("batchsize\t@batchsize", "batchsize=\"$1\"$0"), 58 | ("optimisticlock\t@optimisticlock", "optimisticlock=\"$1\"$0"), 59 | ("optimisticlock=\"none\"\toptimisticlock", "optimisticlock=\"${1:none}\"$0"), 60 | ("optimisticlock=\"dirty\"\toptimisticlock", "optimisticlock=\"${1:dirty}\"$0"), 61 | ("optimisticlock=\"all\"\toptimisticlock", "optimisticlock=\"${1:all}\"$0"), 62 | ("optimisticlock=\"version\"\toptimisticlock", "optimisticlock=\"${1:version}\"$0"), 63 | ("lazy\t@lazy", "lazy=\"$1\"$0"), 64 | ("lazy=\"true\"\tlazy", "lazy=\"${1:true}\"$0"), 65 | ("lazy=\"false\"\tlazy", "lazy=\"${1:false}\"$0"), 66 | ("rowid\t@rowid", "rowid=\"$1\"$0"), 67 | ("discriminatorColumn\t@discriminatorColumn", "discriminatorColumn=\"$1\"$0"), 68 | ("discriminatorValue\t@discriminatorValue", "discriminatorValue=\"$1\"$0"), 69 | ("joinColumn\t@joinColumn", "joinColumn=\"$1\"$0"), 70 | ("embedded\t@embedded", "embedded=\"$1\"$0"), 71 | ("embedded=\"true\"\tembedded", "embedded=\"${1:true}\"$0"), 72 | ("embedded=\"false\"\tembedded", "embedded=\"${1:false}\"$0"), 73 | ("cacheUse\t@cacheUse", "cacheUse=\"$1\"$0"), 74 | ("cacheUse=\"read-only\"\tcacheUse", "cacheUse=\"${1:read-only}\"$0"), 75 | ("cacheUse=\"nonstrict-read-write\"\tcacheUse", "cacheUse=\"${1:nonstrict-read-write}\"$0"), 76 | ("cacheUse=\"read-write\"\tcacheUse", "cacheUse=\"${1:read-write}\"$0"), 77 | ("cacheUse=\"transactional\"\tcacheUse", "cacheUse=\"${1:transactional}\"$0"), 78 | ("cacheName\t@cacheName", "cacheName=\"$1\"$0"), 79 | ("saveMapping\t@saveMapping", "saveMapping=\"$1\"$0"), 80 | ("saveMapping=\"true\"\tsaveMapping", "saveMapping=\"${1:true}\"$0"), 81 | ("saveMapping=\"false\"\tsaveMapping", "saveMapping=\"${1:false}\"$0"), 82 | ("accessors\t@accessors", "accessors=\"$1\"$0"), 83 | ("accessors=\"true\"\taccessors", "accessors=\"${1:true}\"$0"), 84 | ("accessors=\"false\"\taccessors", "accessors=\"${1:false}\"$0"), 85 | ("serializable\t@serializable", "serializable=\"$1\"$0"), 86 | ("serializable=\"true\"\tserializable", "serializable=\"${1:true}\"$0"), 87 | ("serializable=\"false\"\tserializable", "serializable=\"${1:false}\"$0"), 88 | ("alias\t@alias", "alias=\"$1\"$0"), 89 | ("datasource\t@datasource", "datasource=\"$1\"$0"), 90 | ("mappedSuperClass\t@mappedSuperClass", "mappedSuperClass=\"$1\"$0"), 91 | ("mappedSuperClass=\"true\"\tmappedSuperClass", "mappedSuperClass=\"${1:true}\"$0"), 92 | ("mappedSuperClass=\"false\"\tmappedSuperClass", "mappedSuperClass=\"${1:false}\"$0"), 93 | ("rest\t@rest", "rest=\"$1\"$0"), 94 | ("rest=\"true\"\trest", "rest=\"${1:true}\"$0"), 95 | ("rest=\"false\"\trest", "rest=\"${1:false}\"$0"), 96 | ("restPath\t@restPath", "restPath=\"$1\"$0"), 97 | ("httpMethod\t@httpMethod", "httpMethod=\"$1\"$0"), 98 | ("httpMethod=\"GET\"\thttpMethod", "httpMethod=\"${1:GET}\"$0"), 99 | ("httpMethod=\"DELETE\"\thttpMethod", "httpMethod=\"${1:DELETE}\"$0"), 100 | ("httpMethod=\"POST\"\thttpMethod", "httpMethod=\"${1:POST}\"$0"), 101 | ("httpMethod=\"PUT\"\thttpMethod", "httpMethod=\"${1:PUT}\"$0"), 102 | ("httpMethod=\"HEAD\"\thttpMethod", "httpMethod=\"${1:HEAD}\"$0"), 103 | ("httpMethod=\"OPTIONS\"\thttpMethod", "httpMethod=\"${1:OPTIONS}\"$0"), 104 | ("produces\t@produces", "produces=\"$1\"$0"), 105 | ("consumes\t@consumes", "consumes=\"$1\"$0"), 106 | ("indexable\t@indexable", "indexable=\"$1\"$0"), 107 | ("indexable=\"true\"\tindexable", "indexable=\"${1:true}\"$0"), 108 | ("indexable=\"false\"\tindexable", "indexable=\"${1:false}\"$0"), 109 | ("indexLanguage\t@indexLanguage", "indexLanguage=\"$1\"$0"), 110 | ("autoindex\t@autoindex", "autoindex=\"$1\"$0"), 111 | ("autoindex=\"true\"\tautoindex", "autoindex=\"${1:true}\"$0"), 112 | ("autoindex=\"false\"\tautoindex", "autoindex=\"${1:false}\"$0"), 113 | ("wsversion\t@wsversion", "wsversion=\"$1\"$0"), 114 | ("wsversion=\"1\"\twsversion", "wsversion=\"${1:1}\"$0"), 115 | ("wsversion=\"2\"\twsversion", "wsversion=\"${1:2}\"$0") 116 | ] 117 | attributes["lock"] = [ 118 | ("timeout\t@timeout", "timeout=\"$1\"$0"), 119 | ("scope\t@scope", "scope=\"$1\"$0"), 120 | ("scope=\"Application\"\tscope", "scope=\"${1:Application}\"$0"), 121 | ("scope=\"request\"\tscope", "scope=\"${1:request}\"$0"), 122 | ("scope=\"Server\"\tscope", "scope=\"${1:Server}\"$0"), 123 | ("scope=\"Session\"\tscope", "scope=\"${1:Session}\"$0"), 124 | ("name\t@name", "name=\"$1\"$0"), 125 | ("throwontimeout\t@throwontimeout", "throwontimeout=\"$1\"$0"), 126 | ("throwontimeout=\"true\"\tthrowontimeout", "throwontimeout=\"${1:true}\"$0"), 127 | ("throwontimeout=\"false\"\tthrowontimeout", "throwontimeout=\"${1:false}\"$0"), 128 | ("type\t@type", "type=\"$1\"$0"), 129 | ("type=\"readonly\"\ttype", "type=\"${1:readonly}\"$0"), 130 | ("type=\"exclusive\"\ttype", "type=\"${1:exclusive}\"$0") 131 | ] 132 | attributes["schedule"] = [ 133 | ("action\t@action", "action=\"$1\"$0"), 134 | ("action=\"delete\"\taction", "action=\"${1:delete}\"$0"), 135 | ("action=\"update\"\taction", "action=\"${1:update}\"$0"), 136 | ("action=\"run\"\taction", "action=\"${1:run}\"$0"), 137 | ("action=\"pause\"\taction", "action=\"${1:pause}\"$0"), 138 | ("action=\"resume\"\taction", "action=\"${1:resume}\"$0"), 139 | ("action=\"list\"\taction", "action=\"${1:list}\"$0"), 140 | ("action=\"pauseall\"\taction", "action=\"${1:pauseall}\"$0"), 141 | ("action=\"resumeall\"\taction", "action=\"${1:resumeall}\"$0"), 142 | ("task\t@task", "task=\"$1\"$0"), 143 | ("operation\t@operation", "operation=\"$1\"$0"), 144 | ("operation=\"HTTPRequest\"\toperation", "operation=\"${1:HTTPRequest}\"$0"), 145 | ("file\t@file", "file=\"$1\"$0"), 146 | ("path\t@path", "path=\"$1\"$0"), 147 | ("startdate\t@startdate", "startdate=\"$1\"$0"), 148 | ("starttime\t@starttime", "starttime=\"$1\"$0"), 149 | ("URL\t@URL", "URL=\"$1\"$0"), 150 | ("port\t@port", "port=\"$1\"$0"), 151 | ("publish\t@publish", "publish=\"$1\"$0"), 152 | ("publish=\"true\"\tpublish", "publish=\"${1:true}\"$0"), 153 | ("publish=\"false\"\tpublish", "publish=\"${1:false}\"$0"), 154 | ("endDate\t@endDate", "endDate=\"$1\"$0"), 155 | ("endTime\t@endTime", "endTime=\"$1\"$0"), 156 | ("interval\t@interval", "interval=\"$1\"$0"), 157 | ("interval=\"once\"\tinterval", "interval=\"${1:once}\"$0"), 158 | ("interval=\"daily\"\tinterval", "interval=\"${1:daily}\"$0"), 159 | ("interval=\"weekly\"\tinterval", "interval=\"${1:weekly}\"$0"), 160 | ("interval=\"monthly\"\tinterval", "interval=\"${1:monthly}\"$0"), 161 | ("requesttimeout\t@requesttimeout", "requesttimeout=\"$1\"$0"), 162 | ("username\t@username", "username=\"$1\"$0"), 163 | ("password\t@password", "password=\"$1\"$0"), 164 | ("proxyserver\t@proxyserver", "proxyserver=\"$1\"$0"), 165 | ("proxyport\t@proxyport", "proxyport=\"$1\"$0"), 166 | ("proxyuser\t@proxyuser", "proxyuser=\"$1\"$0"), 167 | ("proxypassword\t@proxypassword", "proxypassword=\"$1\"$0"), 168 | ("resolveurl\t@resolveurl", "resolveurl=\"$1\"$0"), 169 | ("resolveurl=\"true\"\tresolveurl", "resolveurl=\"${1:true}\"$0"), 170 | ("resolveurl=\"false\"\tresolveurl", "resolveurl=\"${1:false}\"$0"), 171 | ("group\t@group", "group=\"$1\"$0"), 172 | ("onException\t@onException", "onException=\"$1\"$0"), 173 | ("onException=\"REFIRE\"\tonException", "onException=\"${1:REFIRE}\"$0"), 174 | ("onException=\"PAUSE\"\tonException", "onException=\"${1:PAUSE}\"$0"), 175 | ("onException=\"INVOKEHANDLER\"\tonException", "onException=\"${1:INVOKEHANDLER}\"$0"), 176 | ("repeat\t@repeat", "repeat=\"$1\"$0"), 177 | ("onComplete\t@onComplete", "onComplete=\"$1\"$0"), 178 | ("cronTime\t@cronTime", "cronTime=\"$1\"$0"), 179 | ("priority\t@priority", "priority=\"$1\"$0"), 180 | ("eventHandler\t@eventHandler", "eventHandler=\"$1\"$0"), 181 | ("exclude\t@exclude", "exclude=\"$1\"$0"), 182 | ("cluster\t@cluster", "cluster=\"$1\"$0"), 183 | ("cluster=\"true\"\tcluster", "cluster=\"${1:true}\"$0"), 184 | ("cluster=\"false\"\tcluster", "cluster=\"${1:false}\"$0"), 185 | ("onMisfire\t@onMisfire", "onMisfire=\"$1\"$0"), 186 | ("onMisfire=\"true\"\tonMisfire", "onMisfire=\"${1:true}\"$0"), 187 | ("onMisfire=\"false\"\tonMisfire", "onMisfire=\"${1:false}\"$0"), 188 | ("retrycount\t@retrycount", "retrycount=\"$1\"$0"), 189 | ("mode\t@mode", "mode=\"$1\"$0"), 190 | ("mode=\"SERVER\"\tmode", "mode=\"${1:SERVER}\"$0"), 191 | ("mode=\"APPLICATION\"\tmode", "mode=\"${1:APPLICATION}\"$0"), 192 | ("result\t@result", "result=\"$1\"$0"), 193 | ("overwrite\t@overwrite", "overwrite=\"$1\"$0"), 194 | ("overwrite=\"true\"\toverwrite", "overwrite=\"${1:true}\"$0"), 195 | ("overwrite=\"false\"\toverwrite", "overwrite=\"${1:false}\"$0") 196 | ] 197 | attributes["savecontent"] = [ 198 | ("variable\t@variable", "variable=\"$1\"$0") 199 | ] 200 | attributes["interface"] = [ 201 | ("displayName\t@displayName", "displayName=\"$1\"$0"), 202 | ("extends\t@extends", "extends=\"$1\"$0"), 203 | ("hint\t@hint", "hint=\"$1\"$0") 204 | ] 205 | attributes["thread"] = [ 206 | ("action\t@action", "action=\"$1\"$0"), 207 | ("action=\"join\"\taction", "action=\"${1:join}\"$0"), 208 | ("action=\"run\"\taction", "action=\"${1:run}\"$0"), 209 | ("action=\"sleep\"\taction", "action=\"${1:sleep}\"$0"), 210 | ("action=\"terminate\"\taction", "action=\"${1:terminate}\"$0"), 211 | ("duration\t@duration", "duration=\"$1\"$0"), 212 | ("name\t@name", "name=\"$1\"$0"), 213 | ("priority\t@priority", "priority=\"$1\"$0"), 214 | ("priority=\"HIGH\"\tpriority", "priority=\"${1:HIGH}\"$0"), 215 | ("priority=\"LOW\"\tpriority", "priority=\"${1:LOW}\"$0"), 216 | ("priority=\"NORMAL\"\tpriority", "priority=\"${1:NORMAL}\"$0"), 217 | ("timeout\t@timeout", "timeout=\"$1\"$0") 218 | ] 219 | attributes["property"] = [ 220 | ("name\t@name", "name=\"$1\"$0"), 221 | ("type\t@type", "type=\"$1\"$0"), 222 | ("type=\"any\"\ttype", "type=\"${1:any}\"$0"), 223 | ("type=\"array\"\ttype", "type=\"${1:array}\"$0"), 224 | ("type=\"binary\"\ttype", "type=\"${1:binary}\"$0"), 225 | ("type=\"boolean\"\ttype", "type=\"${1:boolean}\"$0"), 226 | ("type=\"date\"\ttype", "type=\"${1:date}\"$0"), 227 | ("type=\"guid\"\ttype", "type=\"${1:guid}\"$0"), 228 | ("type=\"numeric\"\ttype", "type=\"${1:numeric}\"$0"), 229 | ("type=\"query\"\ttype", "type=\"${1:query}\"$0"), 230 | ("type=\"string\"\ttype", "type=\"${1:string}\"$0"), 231 | ("type=\"struct\"\ttype", "type=\"${1:struct}\"$0"), 232 | ("type=\"uuid\"\ttype", "type=\"${1:uuid}\"$0"), 233 | ("type=\"variablename\"\ttype", "type=\"${1:variablename}\"$0"), 234 | ("required\t@required", "required=\"$1\"$0"), 235 | ("required=\"true\"\trequired", "required=\"${1:true}\"$0"), 236 | ("required=\"false\"\trequired", "required=\"${1:false}\"$0"), 237 | ("default\t@default", "default=\"$1\"$0"), 238 | ("displayname\t@displayname", "displayname=\"$1\"$0"), 239 | ("hint\t@hint", "hint=\"$1\"$0"), 240 | ("fieldtype\t@fieldtype", "fieldtype=\"$1\"$0"), 241 | ("fieldtype=\"id\"\tfieldtype", "fieldtype=\"${1:id}\"$0"), 242 | ("fieldtype=\"column\"\tfieldtype", "fieldtype=\"${1:column}\"$0"), 243 | ("fieldtype=\"one-to-one\"\tfieldtype", "fieldtype=\"${1:one-to-one}\"$0"), 244 | ("fieldtype=\"one-to-many\"\tfieldtype", "fieldtype=\"${1:one-to-many}\"$0"), 245 | ("fieldtype=\"many-to-many\"\tfieldtype", "fieldtype=\"${1:many-to-many}\"$0"), 246 | ("fieldtype=\"many-to-one\"\tfieldtype", "fieldtype=\"${1:many-to-one}\"$0"), 247 | ("fieldtype=\"collection\"\tfieldtype", "fieldtype=\"${1:collection}\"$0"), 248 | ("fieldtype=\"timestamp\"\tfieldtype", "fieldtype=\"${1:timestamp}\"$0"), 249 | ("fieldtype=\"version\"\tfieldtype", "fieldtype=\"${1:version}\"$0"), 250 | ("ormType\t@ormType", "ormType=\"$1\"$0"), 251 | ("ormType=\"string\"\tormType", "ormType=\"${1:string}\"$0"), 252 | ("ormType=\"character\"\tormType", "ormType=\"${1:character}\"$0"), 253 | ("ormType=\"char\"\tormType", "ormType=\"${1:char}\"$0"), 254 | ("ormType=\"short\"\tormType", "ormType=\"${1:short}\"$0"), 255 | ("ormType=\"integer\"\tormType", "ormType=\"${1:integer}\"$0"), 256 | ("ormType=\"int\"\tormType", "ormType=\"${1:int}\"$0"), 257 | ("ormType=\"long\"\tormType", "ormType=\"${1:long}\"$0"), 258 | ("ormType=\"big_decimal\"\tormType", "ormType=\"${1:big_decimal}\"$0"), 259 | ("ormType=\"float\"\tormType", "ormType=\"${1:float}\"$0"), 260 | ("ormType=\"double\"\tormType", "ormType=\"${1:double}\"$0"), 261 | ("ormType=\"boolean\"\tormType", "ormType=\"${1:boolean}\"$0"), 262 | ("ormType=\"yes_no\"\tormType", "ormType=\"${1:yes_no}\"$0"), 263 | ("ormType=\"true_false\"\tormType", "ormType=\"${1:true_false}\"$0"), 264 | ("ormType=\"text\"\tormType", "ormType=\"${1:text}\"$0"), 265 | ("ormType=\"date\"\tormType", "ormType=\"${1:date}\"$0"), 266 | ("ormType=\"timestamp\"\tormType", "ormType=\"${1:timestamp}\"$0"), 267 | ("ormType=\"binary\"\tormType", "ormType=\"${1:binary}\"$0"), 268 | ("ormType=\"serializable\"\tormType", "ormType=\"${1:serializable}\"$0"), 269 | ("ormType=\"blob\"\tormType", "ormType=\"${1:blob}\"$0"), 270 | ("ormType=\"clob\"\tormType", "ormType=\"${1:clob}\"$0"), 271 | ("column\t@column", "column=\"$1\"$0"), 272 | ("generator\t@generator", "generator=\"$1\"$0"), 273 | ("generator=\"increment\"\tgenerator", "generator=\"${1:increment}\"$0"), 274 | ("generator=\"identity\"\tgenerator", "generator=\"${1:identity}\"$0"), 275 | ("generator=\"sequence\"\tgenerator", "generator=\"${1:sequence}\"$0"), 276 | ("generator=\"seqhilo\"\tgenerator", "generator=\"${1:seqhilo}\"$0"), 277 | ("generator=\"uuid\"\tgenerator", "generator=\"${1:uuid}\"$0"), 278 | ("generator=\"guid\"\tgenerator", "generator=\"${1:guid}\"$0"), 279 | ("generator=\"native\"\tgenerator", "generator=\"${1:native}\"$0"), 280 | ("generator=\"assigned\"\tgenerator", "generator=\"${1:assigned}\"$0"), 281 | ("generator=\"select\"\tgenerator", "generator=\"${1:select}\"$0"), 282 | ("generator=\"foreign\"\tgenerator", "generator=\"${1:foreign}\"$0"), 283 | ("generator=\"sequence-indentity\"\tgenerator", "generator=\"${1:sequence-indentity}\"$0"), 284 | ("sequence\t@sequence", "sequence=\"$1\"$0"), 285 | ("selectkey\t@selectkey", "selectkey=\"$1\"$0"), 286 | ("params\t@params", "params=\"$1\"$0"), 287 | ("length\t@length", "length=\"$1\"$0"), 288 | ("precision\t@precision", "precision=\"$1\"$0"), 289 | ("index\t@index", "index=\"$1\"$0"), 290 | ("setter\t@setter", "setter=\"$1\"$0"), 291 | ("setter=\"true\"\tsetter", "setter=\"${1:true}\"$0"), 292 | ("setter=\"false\"\tsetter", "setter=\"${1:false}\"$0"), 293 | ("getter\t@getter", "getter=\"$1\"$0"), 294 | ("getter=\"true\"\tgetter", "getter=\"${1:true}\"$0"), 295 | ("getter=\"false\"\tgetter", "getter=\"${1:false}\"$0"), 296 | ("source\t@source", "source=\"$1\"$0"), 297 | ("source=\"vm\"\tsource", "source=\"${1:vm}\"$0"), 298 | ("source=\"db\"\tsource", "source=\"${1:db}\"$0"), 299 | ("elementcolumn\t@elementcolumn", "elementcolumn=\"$1\"$0"), 300 | ("elementtype\t@elementtype", "elementtype=\"$1\"$0"), 301 | ("elementtype=\"string\"\telementtype", "elementtype=\"${1:string}\"$0"), 302 | ("elementtype=\"character\"\telementtype", "elementtype=\"${1:character}\"$0"), 303 | ("elementtype=\"char\"\telementtype", "elementtype=\"${1:char}\"$0"), 304 | ("elementtype=\"short\"\telementtype", "elementtype=\"${1:short}\"$0"), 305 | ("elementtype=\"integer\"\telementtype", "elementtype=\"${1:integer}\"$0"), 306 | ("elementtype=\"int\"\telementtype", "elementtype=\"${1:int}\"$0"), 307 | ("elementtype=\"long\"\telementtype", "elementtype=\"${1:long}\"$0"), 308 | ("elementtype=\"big_decimal\"\telementtype", "elementtype=\"${1:big_decimal}\"$0"), 309 | ("elementtype=\"float\"\telementtype", "elementtype=\"${1:float}\"$0"), 310 | ("elementtype=\"double\"\telementtype", "elementtype=\"${1:double}\"$0"), 311 | ("elementtype=\"boolean\"\telementtype", "elementtype=\"${1:boolean}\"$0"), 312 | ("elementtype=\"yes_no\"\telementtype", "elementtype=\"${1:yes_no}\"$0"), 313 | ("elementtype=\"true_false\"\telementtype", "elementtype=\"${1:true_false}\"$0"), 314 | ("elementtype=\"text\"\telementtype", "elementtype=\"${1:text}\"$0"), 315 | ("elementtype=\"date\"\telementtype", "elementtype=\"${1:date}\"$0"), 316 | ("elementtype=\"timestamp\"\telementtype", "elementtype=\"${1:timestamp}\"$0"), 317 | ("elementtype=\"binary\"\telementtype", "elementtype=\"${1:binary}\"$0"), 318 | ("elementtype=\"serializable\"\telementtype", "elementtype=\"${1:serializable}\"$0"), 319 | ("elementtype=\"blob\"\telementtype", "elementtype=\"${1:blob}\"$0"), 320 | ("elementtype=\"clob\"\telementtype", "elementtype=\"${1:clob}\"$0"), 321 | ("structkeytype\t@structkeytype", "structkeytype=\"$1\"$0"), 322 | ("structkeytype=\"string\"\tstructkeytype", "structkeytype=\"${1:string}\"$0"), 323 | ("structkeytype=\"character\"\tstructkeytype", "structkeytype=\"${1:character}\"$0"), 324 | ("structkeytype=\"char\"\tstructkeytype", "structkeytype=\"${1:char}\"$0"), 325 | ("structkeytype=\"short\"\tstructkeytype", "structkeytype=\"${1:short}\"$0"), 326 | ("structkeytype=\"integer\"\tstructkeytype", "structkeytype=\"${1:integer}\"$0"), 327 | ("structkeytype=\"int\"\tstructkeytype", "structkeytype=\"${1:int}\"$0"), 328 | ("structkeytype=\"long\"\tstructkeytype", "structkeytype=\"${1:long}\"$0"), 329 | ("structkeytype=\"big_decimal\"\tstructkeytype", "structkeytype=\"${1:big_decimal}\"$0"), 330 | ("structkeytype=\"float\"\tstructkeytype", "structkeytype=\"${1:float}\"$0"), 331 | ("structkeytype=\"double\"\tstructkeytype", "structkeytype=\"${1:double}\"$0"), 332 | ("structkeytype=\"boolean\"\tstructkeytype", "structkeytype=\"${1:boolean}\"$0"), 333 | ("structkeytype=\"yes_no\"\tstructkeytype", "structkeytype=\"${1:yes_no}\"$0"), 334 | ("structkeytype=\"true_false\"\tstructkeytype", "structkeytype=\"${1:true_false}\"$0"), 335 | ("structkeytype=\"text\"\tstructkeytype", "structkeytype=\"${1:text}\"$0"), 336 | ("structkeytype=\"date\"\tstructkeytype", "structkeytype=\"${1:date}\"$0"), 337 | ("structkeytype=\"timestamp\"\tstructkeytype", "structkeytype=\"${1:timestamp}\"$0"), 338 | ("structkeytype=\"binary\"\tstructkeytype", "structkeytype=\"${1:binary}\"$0"), 339 | ("structkeytype=\"serializable\"\tstructkeytype", "structkeytype=\"${1:serializable}\"$0"), 340 | ("structkeytype=\"blob\"\tstructkeytype", "structkeytype=\"${1:blob}\"$0"), 341 | ("structkeytype=\"clob\"\tstructkeytype", "structkeytype=\"${1:clob}\"$0"), 342 | ("structkeycolumn\t@structkeycolumn", "structkeycolumn=\"$1\"$0"), 343 | ("inversejoincolumn\t@inversejoincolumn", "inversejoincolumn=\"$1\"$0"), 344 | ("linkschema\t@linkschema", "linkschema=\"$1\"$0"), 345 | ("linkcatalog\t@linkcatalog", "linkcatalog=\"$1\"$0"), 346 | ("linktable\t@linktable", "linktable=\"$1\"$0"), 347 | ("missingRowIgnored\t@missingRowIgnored", "missingRowIgnored=\"$1\"$0"), 348 | ("missingRowIgnored=\"true\"\tmissingRowIgnored", "missingRowIgnored=\"${1:true}\"$0"), 349 | ("missingRowIgnored=\"false\"\tmissingRowIgnored", "missingRowIgnored=\"${1:false}\"$0"), 350 | ("inverse\t@inverse", "inverse=\"$1\"$0"), 351 | ("inverse=\"true\"\tinverse", "inverse=\"${1:true}\"$0"), 352 | ("inverse=\"false\"\tinverse", "inverse=\"${1:false}\"$0"), 353 | ("orderby\t@orderby", "orderby=\"$1\"$0"), 354 | ("fkcolumn\t@fkcolumn", "fkcolumn=\"$1\"$0"), 355 | ("fetch\t@fetch", "fetch=\"$1\"$0"), 356 | ("fetch=\"join\"\tfetch", "fetch=\"${1:join}\"$0"), 357 | ("fetch=\"select\"\tfetch", "fetch=\"${1:select}\"$0"), 358 | ("cascade\t@cascade", "cascade=\"$1\"$0"), 359 | ("cascade=\"all\"\tcascade", "cascade=\"${1:all}\"$0"), 360 | ("cascade=\"none\"\tcascade", "cascade=\"${1:none}\"$0"), 361 | ("cascade=\"save-update\"\tcascade", "cascade=\"${1:save-update}\"$0"), 362 | ("cascade=\"delete\"\tcascade", "cascade=\"${1:delete}\"$0"), 363 | ("cascade=\"all-delete-orphan\"\tcascade", "cascade=\"${1:all-delete-orphan}\"$0"), 364 | ("cascade=\"delete-orphan\"\tcascade", "cascade=\"${1:delete-orphan}\"$0"), 365 | ("cascade=\"create\"\tcascade", "cascade=\"${1:create}\"$0"), 366 | ("cascade=\"merge\"\tcascade", "cascade=\"${1:merge}\"$0"), 367 | ("cascade=\"lock\"\tcascade", "cascade=\"${1:lock}\"$0"), 368 | ("cascade=\"refresh\"\tcascade", "cascade=\"${1:refresh}\"$0"), 369 | ("cascade=\"evict\"\tcascade", "cascade=\"${1:evict}\"$0"), 370 | ("cascade=\"replicate\"\tcascade", "cascade=\"${1:replicate}\"$0"), 371 | ("constrained\t@constrained", "constrained=\"$1\"$0"), 372 | ("constrained=\"true\"\tconstrained", "constrained=\"${1:true}\"$0"), 373 | ("constrained=\"false\"\tconstrained", "constrained=\"${1:false}\"$0"), 374 | ("unique\t@unique", "unique=\"$1\"$0"), 375 | ("unique=\"true\"\tunique", "unique=\"${1:true}\"$0"), 376 | ("unique=\"false\"\tunique", "unique=\"${1:false}\"$0"), 377 | ("uniquekey\t@uniquekey", "uniquekey=\"$1\"$0"), 378 | ("notnull\t@notnull", "notnull=\"$1\"$0"), 379 | ("notnull=\"true\"\tnotnull", "notnull=\"${1:true}\"$0"), 380 | ("notnull=\"false\"\tnotnull", "notnull=\"${1:false}\"$0"), 381 | ("update\t@update", "update=\"$1\"$0"), 382 | ("update=\"true\"\tupdate", "update=\"${1:true}\"$0"), 383 | ("update=\"false\"\tupdate", "update=\"${1:false}\"$0"), 384 | ("insert\t@insert", "insert=\"$1\"$0"), 385 | ("insert=\"true\"\tinsert", "insert=\"${1:true}\"$0"), 386 | ("insert=\"false\"\tinsert", "insert=\"${1:false}\"$0"), 387 | ("generated\t@generated", "generated=\"$1\"$0"), 388 | ("generated=\"never\"\tgenerated", "generated=\"${1:never}\"$0"), 389 | ("generated=\"insert\"\tgenerated", "generated=\"${1:insert}\"$0"), 390 | ("generated=\"always\"\tgenerated", "generated=\"${1:always}\"$0"), 391 | ("formula\t@formula", "formula=\"$1\"$0"), 392 | ("lazy\t@lazy", "lazy=\"$1\"$0"), 393 | ("lazy=\"true\"\tlazy", "lazy=\"${1:true}\"$0"), 394 | ("lazy=\"false\"\tlazy", "lazy=\"${1:false}\"$0"), 395 | ("lazy=\"extra\"\tlazy", "lazy=\"${1:extra}\"$0"), 396 | ("optimisticLock\t@optimisticLock", "optimisticLock=\"$1\"$0"), 397 | ("optimisticLock=\"true\"\toptimisticLock", "optimisticLock=\"${1:true}\"$0"), 398 | ("optimisticLock=\"false\"\toptimisticLock", "optimisticLock=\"${1:false}\"$0"), 399 | ("scale\t@scale", "scale=\"$1\"$0"), 400 | ("mappedby\t@mappedby", "mappedby=\"$1\"$0"), 401 | ("cfc\t@cfc", "cfc=\"$1\"$0"), 402 | ("joinColumn\t@joinColumn", "joinColumn=\"$1\"$0"), 403 | ("validate\t@validate", "validate=\"$1\"$0"), 404 | ("validate=\"string\"\tvalidate", "validate=\"${1:string}\"$0"), 405 | ("validate=\"boolean\"\tvalidate", "validate=\"${1:boolean}\"$0"), 406 | ("validate=\"integer\"\tvalidate", "validate=\"${1:integer}\"$0"), 407 | ("validate=\"numeric\"\tvalidate", "validate=\"${1:numeric}\"$0"), 408 | ("validate=\"date\"\tvalidate", "validate=\"${1:date}\"$0"), 409 | ("validate=\"time\"\tvalidate", "validate=\"${1:time}\"$0"), 410 | ("validate=\"creditcard\"\tvalidate", "validate=\"${1:creditcard}\"$0"), 411 | ("validate=\"email\"\tvalidate", "validate=\"${1:email}\"$0"), 412 | ("validate=\"eurodate\"\tvalidate", "validate=\"${1:eurodate}\"$0"), 413 | ("validate=\"regex\"\tvalidate", "validate=\"${1:regex}\"$0"), 414 | ("validate=\"ssn\"\tvalidate", "validate=\"${1:ssn}\"$0"), 415 | ("validate=\"telephone\"\tvalidate", "validate=\"${1:telephone}\"$0"), 416 | ("validate=\"UUID\"\tvalidate", "validate=\"${1:UUID}\"$0"), 417 | ("validate=\"guid\"\tvalidate", "validate=\"${1:guid}\"$0"), 418 | ("validate=\"zipcode\"\tvalidate", "validate=\"${1:zipcode}\"$0"), 419 | ("validateParams\t@validateParams", "validateParams=\"$1\"$0"), 420 | ("cacheUse\t@cacheUse", "cacheUse=\"$1\"$0"), 421 | ("cacheUse=\"read-only\"\tcacheUse", "cacheUse=\"${1:read-only}\"$0"), 422 | ("cacheUse=\"nonstrict-read-write\"\tcacheUse", "cacheUse=\"${1:nonstrict-read-write}\"$0"), 423 | ("cacheUse=\"read-write\"\tcacheUse", "cacheUse=\"${1:read-write}\"$0"), 424 | ("cacheUse=\"transactional\"\tcacheUse", "cacheUse=\"${1:transactional}\"$0"), 425 | ("sqlType\t@sqlType", "sqlType=\"$1\"$0"), 426 | ("dbDefault\t@dbDefault", "dbDefault=\"$1\"$0"), 427 | ("where\t@where", "where=\"$1\"$0"), 428 | ("persistent\t@persistent", "persistent=\"$1\"$0"), 429 | ("persistent=\"true\"\tpersistent", "persistent=\"${1:true}\"$0"), 430 | ("persistent=\"false\"\tpersistent", "persistent=\"${1:false}\"$0"), 431 | ("unSavedValue\t@unSavedValue", "unSavedValue=\"$1\"$0"), 432 | ("serializable\t@serializable", "serializable=\"$1\"$0"), 433 | ("serializable=\"true\"\tserializable", "serializable=\"${1:true}\"$0"), 434 | ("serializable=\"false\"\tserializable", "serializable=\"${1:false}\"$0"), 435 | ("singularname\t@singularname", "singularname=\"$1\"$0"), 436 | ("remotingFetch\t@remotingFetch", "remotingFetch=\"$1\"$0"), 437 | ("remotingFetch=\"true\"\tremotingFetch", "remotingFetch=\"${1:true}\"$0"), 438 | ("remotingFetch=\"false\"\tremotingFetch", "remotingFetch=\"${1:false}\"$0"), 439 | ("table\t@table", "table=\"$1\"$0"), 440 | ("indexBoost\t@indexBoost", "indexBoost=\"$1\"$0"), 441 | ("indexTokenize\t@indexTokenize", "indexTokenize=\"$1\"$0"), 442 | ("indexTokenize=\"true\"\tindexTokenize", "indexTokenize=\"${1:true}\"$0"), 443 | ("indexTokenize=\"false\"\tindexTokenize", "indexTokenize=\"${1:false}\"$0"), 444 | ("indexStore\t@indexStore", "indexStore=\"$1\"$0"), 445 | ("indexStore=\"true\"\tindexStore", "indexStore=\"${1:true}\"$0"), 446 | ("indexStore=\"false\"\tindexStore", "indexStore=\"${1:false}\"$0"), 447 | ("indexStore=\"compressed\"\tindexStore", "indexStore=\"${1:compressed}\"$0"), 448 | ("indexFieldName\t@indexFieldName", "indexFieldName=\"$1\"$0"), 449 | ("indexable\t@indexable", "indexable=\"$1\"$0"), 450 | ("indexable=\"true\"\tindexable", "indexable=\"${1:true}\"$0"), 451 | ("indexable=\"false\"\tindexable", "indexable=\"${1:false}\"$0"), 452 | ("indexLanguage\t@indexLanguage", "indexLanguage=\"$1\"$0") 453 | ] 454 | attributes["param"] = [ 455 | ("name\t@name", "name=\"$1\"$0"), 456 | ("type\t@type", "type=\"$1\"$0"), 457 | ("type=\"any\"\ttype", "type=\"${1:any}\"$0"), 458 | ("type=\"array\"\ttype", "type=\"${1:array}\"$0"), 459 | ("type=\"binary\"\ttype", "type=\"${1:binary}\"$0"), 460 | ("type=\"boolean\"\ttype", "type=\"${1:boolean}\"$0"), 461 | ("type=\"creditcard\"\ttype", "type=\"${1:creditcard}\"$0"), 462 | ("type=\"date\"\ttype", "type=\"${1:date}\"$0"), 463 | ("type=\"time\"\ttype", "type=\"${1:time}\"$0"), 464 | ("type=\"email\"\ttype", "type=\"${1:email}\"$0"), 465 | ("type=\"eurodate\"\ttype", "type=\"${1:eurodate}\"$0"), 466 | ("type=\"float\"\ttype", "type=\"${1:float}\"$0"), 467 | ("type=\"numeric\"\ttype", "type=\"${1:numeric}\"$0"), 468 | ("type=\"guid\"\ttype", "type=\"${1:guid}\"$0"), 469 | ("type=\"integer\"\ttype", "type=\"${1:integer}\"$0"), 470 | ("type=\"query\"\ttype", "type=\"${1:query}\"$0"), 471 | ("type=\"range\"\ttype", "type=\"${1:range}\"$0"), 472 | ("type=\"regex\"\ttype", "type=\"${1:regex}\"$0"), 473 | ("type=\"regular_expression\"\ttype", "type=\"${1:regular_expression}\"$0"), 474 | ("type=\"ssn\"\ttype", "type=\"${1:ssn}\"$0"), 475 | ("type=\"social_security_number\"\ttype", "type=\"${1:social_security_number}\"$0"), 476 | ("type=\"string\"\ttype", "type=\"${1:string}\"$0"), 477 | ("type=\"struct\"\ttype", "type=\"${1:struct}\"$0"), 478 | ("type=\"telephone\"\ttype", "type=\"${1:telephone}\"$0"), 479 | ("type=\"url\"\ttype", "type=\"${1:url}\"$0"), 480 | ("type=\"uuid\"\ttype", "type=\"${1:uuid}\"$0"), 481 | ("type=\"usdate\"\ttype", "type=\"${1:usdate}\"$0"), 482 | ("type=\"variablename\"\ttype", "type=\"${1:variablename}\"$0"), 483 | ("type=\"xml\"\ttype", "type=\"${1:xml}\"$0"), 484 | ("type=\"zipcode\"\ttype", "type=\"${1:zipcode}\"$0"), 485 | ("default\t@default", "default=\"$1\"$0"), 486 | ("max\t@max", "max=\"$1\"$0"), 487 | ("min\t@min", "min=\"$1\"$0"), 488 | ("pattern\t@pattern", "pattern=\"$1\"$0"), 489 | ("maxlength\t@maxlength", "maxlength=\"$1\"$0") 490 | ] 491 | 492 | attributes["http"] = [ 493 | ("url\t@url", "url=\"$1\"$0"), 494 | ("port\t@port", "port=\"$1\"$0"), 495 | ("method\t@method", "method=\"$1\"$0"), 496 | ("method=\"get\"\tmethod", "method=\"${1:get}\"$0"), 497 | ("method=\"post\"\tmethod", "method=\"${1:post}\"$0"), 498 | ("method=\"put\"\tmethod", "method=\"${1:put}\"$0"), 499 | ("method=\"delete\"\tmethod", "method=\"${1:delete}\"$0"), 500 | ("method=\"head\"\tmethod", "method=\"${1:head}\"$0"), 501 | ("method=\"trace\"\tmethod", "method=\"${1:trace}\"$0"), 502 | ("method=\"options\"\tmethod", "method=\"${1:options}\"$0"), 503 | ("proxyserver\t@proxyserver", "proxyserver=\"$1\"$0"), 504 | ("proxyport\t@proxyport", "proxyport=\"$1\"$0"), 505 | ("proxyuser\t@proxyuser", "proxyuser=\"$1\"$0"), 506 | ("proxypassword\t@proxypassword", "proxypassword=\"$1\"$0"), 507 | ("username\t@username", "username=\"$1\"$0"), 508 | ("password\t@password", "password=\"$1\"$0"), 509 | ("useragent\t@useragent", "useragent=\"$1\"$0"), 510 | ("charset\t@charset", "charset=\"$1\"$0"), 511 | ("charset=\"utf-8\"\tcharset", "charset=\"${1:utf-8}\"$0"), 512 | ("charset=\"iso-8859-1\"\tcharset", "charset=\"${1:iso-8859-1}\"$0"), 513 | ("charset=\"windows-1252\"\tcharset", "charset=\"${1:windows-1252}\"$0"), 514 | ("charset=\"us-ascii\"\tcharset", "charset=\"${1:us-ascii}\"$0"), 515 | ("charset=\"shift_jis\"\tcharset", "charset=\"${1:shift_jis}\"$0"), 516 | ("charset=\"iso-2022-jp\"\tcharset", "charset=\"${1:iso-2022-jp}\"$0"), 517 | ("charset=\"euc-jp\"\tcharset", "charset=\"${1:euc-jp}\"$0"), 518 | ("charset=\"euc-kr\"\tcharset", "charset=\"${1:euc-kr}\"$0"), 519 | ("charset=\"big5\"\tcharset", "charset=\"${1:big5}\"$0"), 520 | ("charset=\"euc-cn\"\tcharset", "charset=\"${1:euc-cn}\"$0"), 521 | ("charset=\"utf-16\"\tcharset", "charset=\"${1:utf-16}\"$0"), 522 | ("resolveurl\t@resolveurl", "resolveurl=\"$1\"$0"), 523 | ("resolveurl=\"true\"\tresolveurl", "resolveurl=\"${1:true}\"$0"), 524 | ("resolveurl=\"false\"\tresolveurl", "resolveurl=\"${1:false}\"$0"), 525 | ("throwonerror\t@throwonerror", "throwonerror=\"$1\"$0"), 526 | ("throwonerror=\"true\"\tthrowonerror", "throwonerror=\"${1:true}\"$0"), 527 | ("throwonerror=\"false\"\tthrowonerror", "throwonerror=\"${1:false}\"$0"), 528 | ("redirect\t@redirect", "redirect=\"$1\"$0"), 529 | ("redirect=\"true\"\tredirect", "redirect=\"${1:true}\"$0"), 530 | ("redirect=\"false\"\tredirect", "redirect=\"${1:false}\"$0"), 531 | ("timeout\t@timeout", "timeout=\"$1\"$0"), 532 | ("getasbinary\t@getasbinary", "getasbinary=\"$1\"$0"), 533 | ("getasbinary=\"auto\"\tgetasbinary", "getasbinary=\"${1:auto}\"$0"), 534 | ("getasbinary=\"yes\"\tgetasbinary", "getasbinary=\"${1:yes}\"$0"), 535 | ("getasbinary=\"no\"\tgetasbinary", "getasbinary=\"${1:no}\"$0"), 536 | ("getasbinary=\"never\"\tgetasbinary", "getasbinary=\"${1:never}\"$0"), 537 | ("result\t@result", "result=\"$1\"$0"), 538 | ("delimiter\t@delimiter", "delimiter=\"$1\"$0"), 539 | ("delimiter=\",\"\tdelimiter", "delimiter=\"${1:,}\"$0"), 540 | ("delimiter=\";\"\tdelimiter", "delimiter=\"${1:;}\"$0"), 541 | ("delimiter=\"|\"\tdelimiter", "delimiter=\"${1:|}\"$0"), 542 | ("delimiter=\":\"\tdelimiter", "delimiter=\"${1::}\"$0"), 543 | ("name\t@name", "name=\"$1\"$0"), 544 | ("columns\t@columns", "columns=\"$1\"$0"), 545 | ("firstrowasheaders\t@firstrowasheaders", "firstrowasheaders=\"$1\"$0"), 546 | ("firstrowasheaders=\"true\"\tfirstrowasheaders", "firstrowasheaders=\"${1:true}\"$0"), 547 | ("firstrowasheaders=\"false\"\tfirstrowasheaders", "firstrowasheaders=\"${1:false}\"$0"), 548 | ("textqualifier\t@textqualifier", "textqualifier=\"$1\"$0"), 549 | ("textqualifier=\"\"\ttextqualifier", "textqualifier=\"${1:}\"$0"), 550 | ("textqualifier=\"'\"\ttextqualifier", "textqualifier=\"${1:'}\"$0"), 551 | ("file\t@file", "file=\"$1\"$0"), 552 | ("multipart\t@multipart", "multipart=\"$1\"$0"), 553 | ("multipart=\"true\"\tmultipart", "multipart=\"${1:true}\"$0"), 554 | ("multipart=\"false\"\tmultipart", "multipart=\"${1:false}\"$0"), 555 | ("clientcertpassword\t@clientcertpassword", "clientcertpassword=\"$1\"$0"), 556 | ("path\t@path", "path=\"$1\"$0"), 557 | ("clientcert\t@clientcert", "clientcert=\"$1\"$0"), 558 | ("compression\t@compression", "compression=\"$1\"$0"), 559 | ("multiparttype\t@multiparttype", "multiparttype=\"$1\"$0") 560 | ] 561 | 562 | attributes["httpparam"] = [ 563 | ("name\t@name", "name=\"$1\"$0"), 564 | ("value\t@value", "value=\"$1\"$0"), 565 | ("file\t@file", "file=\"$1\"$0"), 566 | ("type\t@type", "type=\"$1\"$0"), 567 | ("type=\"header\"\ttype", "type=\"${1:header}\"$0"), 568 | ("type=\"body\"\ttype", "type=\"${1:body}\"$0"), 569 | ("type=\"xml\"\ttype", "type=\"${1:xml}\"$0"), 570 | ("type=\"cgi\"\ttype", "type=\"${1:cgi}\"$0"), 571 | ("type=\"file\"\ttype", "type=\"${1:file}\"$0"), 572 | ("type=\"url\"\ttype", "type=\"${1:url}\"$0"), 573 | ("type=\"formfield\"\ttype", "type=\"${1:formfield}\"$0"), 574 | ("type=\"cookie\"\ttype", "type=\"${1:cookie}\"$0"), 575 | ("encoded\t@encoded", "encoded=\"$1\"$0"), 576 | ("encoded=\"true\"\tencoded", "encoded=\"${1:true}\"$0"), 577 | ("encoded=\"false\"\tencoded", "encoded=\"${1:false}\"$0"), 578 | ("mimetype\t@mimetype", "mimetype=\"$1\"$0"), 579 | ("mimetype=\"text/plain\"\tmimetype", "mimetype=\"${1:text/plain}\"$0"), 580 | ("mimetype=\"text/html\"\tmimetype", "mimetype=\"${1:text/html}\"$0") 581 | ] 582 | 583 | SUBLIME_SETTINGS = sublime.load_settings('Preferences.sublime-settings') 584 | 585 | class TagOperatorComplete(sublime_plugin.EventListener): 586 | def on_query_completions(self, view, prefix, locations): 587 | completions = [] 588 | 589 | if not view.match_selector(locations[0], "\ 590 | source.cfscript -meta -string -text -source.sql, \ 591 | source.cfscript.embedded.cfml -meta -string"): 592 | return [] 593 | 594 | sel = view.sel()[0] 595 | if view.substr(sel.begin() - 1) == ".": 596 | return [] 597 | 598 | for s in attributes.keys(): 599 | completions.extend([(s.split(" ")[0] + "\tTagOp. (cfscript)",s)]) 600 | 601 | return sorted(completions) 602 | 603 | class TagOperatorAttributeComplete(sublime_plugin.EventListener): 604 | valid_scopes_operators = ["meta.operator"] 605 | 606 | def on_modified(self, view): 607 | if not SUBLIME_SETTINGS.get("auto_complete"): 608 | return 609 | sel = view.sel()[0].a 610 | 611 | if any(s in view.scope_name(sel) for s in self.valid_scopes_operators): 612 | if view.substr(sel - 1) == " ": 613 | t = view.settings().get("auto_complete_delay") 614 | sublime.set_timeout(lambda: 615 | view.run_command("auto_complete", { 616 | 'disable_auto_insert': True, 617 | 'next_completion_if_showing': False, 618 | 'api_completions_only': True}), t) 619 | 620 | def on_query_completions(self, view, prefix, locations): 621 | # make sure we're in a tag operator attribute scope and not in an attribute string 622 | if not any(s in view.scope_name(locations[0]) for s in self.valid_scopes_operators) or \ 623 | "string" in view.scope_name(locations[0]): 624 | return [] 625 | 626 | opdata = view.substr(sublime.Region(0, locations[0])).split("\n") 627 | opdata = opdata.pop().split(" ") 628 | opdata = filter (lambda a: a != "", opdata) 629 | 630 | if opdata[0] in attributes.keys(): 631 | return attributes[opdata[0]] 632 | 633 | return [] 634 | --------------------------------------------------------------------------------