├── taglib
└── __init__.py
├── .gitignore
├── Default.sublime-commands
├── Terminate Statement.sublime-macro
├── package-metadata.json
├── JavaDoc Add Line.sublime-macro
├── JavaDoc Delete Line.sublime-macro
├── snippets
└── cfscript
│ ├── CFScript-TryCatch.sublime-snippet
│ ├── CFScript-NewFunction.sublime-snippet
│ ├── CFScript-SwitchCase.sublime-snippet
│ └── CFScript-NewCFC.sublime-snippet
├── ColdFusion.sublime-settings
├── Symbol List.tmPreferences
├── Symbol List Queries.tmPreferences
├── brackets.tmPreferences
├── LICENSE
├── CFScriptFunctionArgs.sublime-completions
├── CFScript.tmPreferences
├── CFScriptEmbedded.tmPreferences
├── cflib.py
├── ColdFusion.tmPreferences
├── Main.sublime-menu
├── functioncompletions.py
├── ondotcompletions.py
├── importer
└── import.cfc
├── coldfusiontagcompletions.py
├── readme.md
├── Default.sublime-keymap
├── Default (OSX).sublime-keymap
├── ColdFusionCFC.tmLanguage
├── CFScript.sublime-completions
├── Coldfusion.tmLanguage
├── tagoperators.py
└── HTML+CFML.tmLanguage
/taglib/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.cache
2 | *.pyc
3 |
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/Default.sublime-commands:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "caption": "ColdFusion: Insert CFlib UDF",
4 | "command": "show_cflib"
5 | }
6 | ]
7 |
--------------------------------------------------------------------------------
/Terminate Statement.sublime-macro:
--------------------------------------------------------------------------------
1 | [
2 | {"command": "move_to", "args": {"to": "hardeol"}},
3 | {"command": "insert_snippet", "args": {"contents": "${TM_LINE_TERMINATOR:;}"} }
4 | ]
5 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/snippets/cfscript/CFScript-TryCatch.sublime-snippet:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 | try
15 |
16 | source.cfscript - string meta
17 | try-catch (cfscript)
18 |
19 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/snippets/cfscript/CFScript-NewCFC.sublime-snippet:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 | component
20 |
21 | source.cfscript - string - meta
22 | New CFC
23 |
24 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/functioncompletions.py:
--------------------------------------------------------------------------------
1 | import sublime
2 | import sublime_plugin
3 | import re, os
4 |
5 | completions = []
6 | SETTINGS = sublime.load_settings('ColdFusion.sublime-settings')
7 |
8 | # props to @boundincode for imoplemntation
9 | def add_methods(cfc_file, hint_text):
10 | with open(cfc_file, 'r') as f:
11 | read_data = f.read()
12 | methods = []
13 | method_lines = re.findall('function\s[^{]+', read_data)
14 |
15 | for l in method_lines:
16 | l = re.sub("[\\n|\s]+"," ",l)
17 | s = re.search('(\w+)\s?\(.*\)', l)
18 | if s:
19 | methods.append(s.group().strip())
20 |
21 | for c in methods:
22 | snippet = c
23 | params = re.sub("\w+\(","",snippet,1)[:-1].split(",")
24 |
25 | num = 1
26 | if len(params[0]):
27 | for p in params:
28 | snippet = snippet.replace(p, '${' + str(num) + ':' + p + '}')
29 | num = num + 1
30 | # removes parens
31 | c = re.sub("\(.*\)","",c)
32 | completions.append((c + "\tfn. " + hint_text, snippet))
33 |
34 |
35 | class MethodsAutoComplete(sublime_plugin.EventListener):
36 | def on_query_completions(self, view, prefix, locations):
37 | if not view.match_selector(locations[0],
38 | "source.cfscript.cfc - text - meta - string - comment"):
39 | return []
40 |
41 | if not SETTINGS.get("component_method_completions"):
42 | return
43 |
44 | # set local _completions variable
45 | _completions = []
46 |
47 | # try and find the cfc file and add it's methods
48 | try:
49 | cfc_region = view.find_by_selector("meta.component-operator.extends.value.cfscript")[0]
50 | except IndexError:
51 | cfc_region = ""
52 |
53 | if len(cfc_region):
54 | extendspath = view.substr(cfc_region).replace(".","/")
55 |
56 | # first check the current directory for nested cfc path
57 | # get the dir this file is in first
58 | this_file = view.file_name()
59 | dir_len = this_file.rfind('/') #(for OSX)
60 | if not dir_len > 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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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" + tagname})
55 | else:
56 | self.view.run_command("insert_snippet", {"contents": "\n\t$0\n" + tagname})
57 |
58 | class TagAutoComplete(sublime_plugin.EventListener):
59 | cflib = get_class()()
60 |
61 | def on_query_completions(self, view, prefix, locations):
62 | completions = []
63 | if not view.match_selector(locations[0],
64 | "meta.scope.between-output-tags.cfml - meta.tag - comment - string, \
65 | text.html.cfm - meta - source - comment - string, \
66 | text.html.cfm.embedded.cfml - meta - source.cfscript.embedded.cfml - comment - string, \
67 | punctuation.definition.tag.cf.begin, \
68 | source.sql.embedded.cfml - string - comment - meta.name.interpolated.hash"):
69 | return
70 | if SETTINGS.get("verbose_tag_completions"):
71 | return
72 |
73 | sel = view.sel()[0]
74 | if view.substr(sel.begin() - 1) == ".":
75 | return []
76 |
77 | pt = locations[0] - len(prefix) - 1
78 | # view.match_selector being bonky so we're going nuclear here
79 | if any(s in view.scope_name(pt) for s in ["meta.tag.block.cf","meta.tag.inline.cf","string","comment"]):
80 | return
81 |
82 | for s in self.cflib.completions.keys():
83 | completions.extend([(s + "\tTag (cmfl)",s)])
84 |
85 | # if the less than opening tag is missing lets add it
86 | if view.substr(pt) != '<':
87 | completions = [(list(item)[-2],"<" + list(item)[1]) for item in completions]
88 |
89 | return sorted(completions)
90 |
91 | class TagAttributeAutoComplete(sublime_plugin.EventListener):
92 | cflib = get_class()()
93 | valid_scopes_tags = ["meta.tag"]
94 |
95 | def on_modified(self, view):
96 | if SETTINGS.get("verbose_tag_completions"):
97 | return
98 | if not SUBLIME_SETTINGS.get("auto_complete"):
99 | return
100 | sel = view.sel()[0].a
101 |
102 | # we're starting a new tag don't trigger auto_complete
103 | if "punctuation.definition.tag.cf.begin" in view.scope_name(sel):
104 | return
105 |
106 | if view.substr(sel - 1) == " ":
107 | if any(s in view.scope_name(sel) for s in self.valid_scopes_tags):
108 | t = view.settings().get("auto_complete_delay")
109 | sublime.set_timeout(lambda:
110 | view.run_command("auto_complete", {
111 | 'disable_auto_insert': True,
112 | 'next_completion_if_showing': False,
113 | 'api_completions_only': True}), t)
114 |
115 |
116 | def on_query_completions(self, view, prefix, locations):
117 | sel = view.sel()[0].a
118 | completions = []
119 |
120 | # Do not trigger if we are in a string or comment
121 | pt = locations[0] - len(prefix) - 1
122 | if any(s in view.scope_name(pt) for s in ["string","comment"]):
123 | return
124 |
125 | if any(s in view.scope_name(sel) for s in self.valid_scopes_tags):
126 | for region in view.sel():
127 | pos = region.begin()
128 |
129 | tagdata = view.substr(sublime.Region(0, pos)).split("<")
130 | tagdata.reverse()
131 | tagdata = tagdata.pop(0).split(" ")
132 | tagname = tagdata[0]
133 |
134 | if tagname in self.cflib.completions.keys():
135 | completions = self.cflib.completions[tagname]['completions']
136 |
137 | if completions == []:
138 | return
139 | return (completions, sublime.INHIBIT_WORD_COMPLETIONS | sublime.INHIBIT_EXPLICIT_COMPLETIONS)
140 |
--------------------------------------------------------------------------------
/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 |
69 | ⇧+# #SELECTION#
70 | |
71 |
72 | Ctrl+⇧+O <cfoutput>SELECTION</cfoutput>
73 | |
74 |
75 |
76 |
77 | Ctrl+⇧+# <cfoutput>#SELECTION#</cfoutput>
78 | |
79 |
80 | Ctrl+Alt+A <cfabort />
81 | |
82 |
83 |
84 |
85 | Ctrl+Alt+D <cfdump var="#SELECTION#">
86 | |
87 |
88 | Alt+⇧+R <cfscript>SELECTION</cfscript>
89 | |
90 |
91 |
92 |
93 | Ctrl+⇧+/ block comment (cfml/cfscript)
94 | |
95 |
96 | Ctrl+Alt+⇧+/ javadoc comment
97 | |
98 |
99 |
100 |
101 | Alt+↩ terminates statement (cfscript)
102 | |
103 |
104 | Ctrl+⇧+= <cfset SELECTION />
105 | |
106 |
107 |
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------