├── Snippets
├── Method.plist
├── assertEquals.plist
├── docSlot.plist
├── testMethod.plist
├── Object clone do.plist
├── UnitTest.plist
├── clone do.plist
├── newSlot.plist
├── Indented return.plist
└── Indented Bracketed Line.plist
├── Preferences
├── Folding.tmPreferences
├── Indentation Rules.plist
├── Typing Pairs.plist
└── Comments.tmPreferences
├── README.mdown
├── Commands
└── Run Script.tmCommand
├── info.plist
└── Syntaxes
└── Io.plist
/Snippets/Method.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | ${1:methodName} := method(${2:args,}
7 | $0
8 | )
9 | name
10 | method
11 | scope
12 | source.io
13 | tabTrigger
14 | m
15 | uuid
16 | D55B718A-71A6-41A0-98ED-07B72442DDE8
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Snippets/assertEquals.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | assertEquals(${1:expected}, ${2:expr})
7 | name
8 | assertEquals
9 | scope
10 | source.io
11 | tabTrigger
12 | ae
13 | uuid
14 | 57E40ECD-AC15-4AB8-89D4-C123CA0B164C
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Snippets/docSlot.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | docSlot("${1:slotName}", "${2:documentation}")
7 | name
8 | docSlot
9 | scope
10 | source.io
11 | tabTrigger
12 | ds
13 | uuid
14 | 7BEB3C8C-641B-4BEA-9F92-6594A8D448DD
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Snippets/testMethod.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | test${1:SomeFeature} := method(
7 | $0
8 | )
9 | name
10 | testMethod
11 | scope
12 | source.io
13 | tabTrigger
14 | ts
15 | uuid
16 | 086D0C3A-130F-4C93-B1E5-1522DDAF58FA
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Snippets/Object clone do.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | ${1:name} := Object clone do(
7 | $0
8 | )
9 | name
10 | Object clone do
11 | scope
12 | source.io
13 | tabTrigger
14 | ocdo
15 | uuid
16 | FEF230FE-43A6-423C-B9DF-D03E6066D1AC
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Snippets/UnitTest.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | ${1:Something}Test := ${2:UnitTest} clone do(
7 | $0
8 | )
9 | name
10 | UnitTest
11 | scope
12 | source.io
13 | tabTrigger
14 | ut
15 | uuid
16 | 35D0E7C0-E396-4D8B-8361-89B88C3AFF0C
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Snippets/clone do.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | ${1:${2:newValue} := ${3:Object} }clone do(
7 | $0
8 | )
9 | name
10 | clone do
11 | scope
12 | source.io
13 | tabTrigger
14 | cdo
15 | uuid
16 | E195E70E-E46F-4B42-B70E-3CE744AA920E
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Snippets/newSlot.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | newSlot("${1:slotName}", ${2:defaultValue}, "${3:docString}")$0
7 | name
8 | newSlot
9 | scope
10 | source.io
11 | tabTrigger
12 | ns
13 | uuid
14 | 08A134DC-B1D9-42D3-AF5F-3E1061AD8827
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Preferences/Folding.tmPreferences:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | name
6 | Folding
7 | scope
8 | source.io
9 | settings
10 |
11 | foldingStartMarker
12 | (/\*\*|\([^\)]*$|if\()
13 | foldingStopMarker
14 | (\*\*/|^\s*\))
15 |
16 | uuid
17 | 7EECF802-872F-4000-A7AA-0E86E76C2F5A
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Snippets/Indented return.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 |
7 | $0
8 |
9 | keyEquivalent
10 |
11 | name
12 | Special: Return Inside Empty Parenthesis
13 | scope
14 | source.io meta.empty-parenthesis.io, source.io meta.comma-parenthesis.io
15 | uuid
16 | 0F687653-BF6D-4C2C-A75E-C9193E870BBC
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Snippets/Indented Bracketed Line.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | content
6 | (${1:header,}
7 | ${2:body}
8 | )$0
9 | keyEquivalent
10 | @(
11 | name
12 | Indented Bracketed Line
13 | scope
14 | source.io
15 | tabTrigger
16 | (
17 | uuid
18 | 6D6682F0-5C77-4581-B0C3-A732D5B0A93E
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Preferences/Indentation Rules.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | name
6 | Indentation Rules
7 | scope
8 | source.io
9 | settings
10 |
11 | decreaseIndentPattern
12 | \)
13 | indentNextLinePattern
14 | \(
15 | unIndentedLinePattern
16 | ^\s*(#.*)?\s*$
17 |
18 | uuid
19 | 9D0E390E-145F-48F8-944A-E1349337DABF
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Preferences/Typing Pairs.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | name
6 | Typing Pairs
7 | scope
8 | source.io
9 | settings
10 |
11 | highlightPairs
12 |
13 |
14 | "
15 | "
16 |
17 |
18 | (
19 | )
20 |
21 |
22 | smartTypingPairs
23 |
24 |
25 | "
26 | "
27 |
28 |
29 | (
30 | )
31 |
32 |
33 |
34 | uuid
35 | 6131549E-7BD0-4AB3-AC12-4BD971BE95B0
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Preferences/Comments.tmPreferences:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | name
6 | Comments
7 | scope
8 | source.io
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_START_3
28 | value
29 | /*
30 |
31 |
32 | name
33 | TM_COMMENT_END_3
34 | value
35 | */
36 |
37 |
38 |
39 | uuid
40 | 2D353655-501C-4C5C-92D0-3C4AAE9CD3E6
41 |
42 |
43 |
--------------------------------------------------------------------------------
/README.mdown:
--------------------------------------------------------------------------------
1 | # Installation
2 |
3 | You can install this bundle in TextMate by opening the preferences and going to the bundles tab. After installation it will be automatically updated for you.
4 |
5 | # General
6 |
7 | * [Bundle Styleguide](http://kb.textmate.org/bundle_styleguide) — _before you make changes_
8 | * [Commit Styleguide](http://kb.textmate.org/commit_styleguide) — _before you send a pull request_
9 | * [Writing Bug Reports](http://kb.textmate.org/writing_bug_reports) — _before you report an issue_
10 |
11 | # License
12 |
13 | If not otherwise specified (see below), files in this repository fall under the following license:
14 |
15 | Permission to copy, use, modify, sell and distribute this
16 | software is granted. This software is provided "as is" without
17 | express or implied warranty, and with no claim as to its
18 | suitability for any purpose.
19 |
20 | An exception is made for files in readable text which contain their own license information, or files where an accompanying file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”.
--------------------------------------------------------------------------------
/Commands/Run Script.tmCommand:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | beforeRunningCommand
6 | nop
7 | command
8 | #!/usr/bin/env ruby18
9 | require ENV["TM_SUPPORT_PATH"] + "/lib/tm/executor"
10 | require ENV["TM_SUPPORT_PATH"] + "/lib/tm/save_current_document"
11 |
12 | TextMate.save_current_document
13 | TextMate::Executor.make_project_master_current_document
14 |
15 | TextMate::Executor.run(ENV["TM_IO"] || "io", ENV["TM_FILEPATH"], :version_args => ["2>&1", '<<< "System version; System exit;"'])
16 |
17 | input
18 | document
19 | inputFormat
20 | text
21 | keyEquivalent
22 | @r
23 | name
24 | Run Script
25 | outputCaret
26 | afterOutput
27 | outputFormat
28 | html
29 | outputLocation
30 | newWindow
31 | requiredCommands
32 |
33 |
34 | command
35 | io
36 | locations
37 |
38 | /opt/local/bin/io
39 | /usr/local/bin/io
40 |
41 | variable
42 | TM_IO
43 |
44 |
45 | scope
46 | source.io
47 | semanticClass
48 | process.run.script.io
49 | uuid
50 | F35C936A-92CD-4D36-925D-F4457A52BCEE
51 | version
52 | 2
53 |
54 |
55 |
--------------------------------------------------------------------------------
/info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | contactEmailRot13
6 | evk.ebo@tznvy.pbz
7 | contactName
8 | Rob Rix
9 | description
10 | Support for the <a href="http://www.iolanguage.com/">Io</a> prototype-based programming language.
11 | mainMenu
12 |
13 | excludedItems
14 |
15 | 0F687653-BF6D-4C2C-A75E-C9193E870BBC
16 |
17 | items
18 |
19 | F35C936A-92CD-4D36-925D-F4457A52BCEE
20 | ------------------------------------
21 | D55B718A-71A6-41A0-98ED-07B72442DDE8
22 | ------------------------------------
23 | E195E70E-E46F-4B42-B70E-3CE744AA920E
24 | 7BEB3C8C-641B-4BEA-9F92-6594A8D448DD
25 | 6D6682F0-5C77-4581-B0C3-A732D5B0A93E
26 | 08A134DC-B1D9-42D3-AF5F-3E1061AD8827
27 | FEF230FE-43A6-423C-B9DF-D03E6066D1AC
28 | ------------------------------------
29 | 57E40ECD-AC15-4AB8-89D4-C123CA0B164C
30 | 086D0C3A-130F-4C93-B1E5-1522DDAF58FA
31 | 35D0E7C0-E396-4D8B-8361-89B88C3AFF0C
32 |
33 | submenus
34 |
35 |
36 | name
37 | Io
38 | ordering
39 |
40 | 0F687653-BF6D-4C2C-A75E-C9193E870BBC
41 | 6D6682F0-5C77-4581-B0C3-A732D5B0A93E
42 | FEF230FE-43A6-423C-B9DF-D03E6066D1AC
43 | 57E40ECD-AC15-4AB8-89D4-C123CA0B164C
44 | E195E70E-E46F-4B42-B70E-3CE744AA920E
45 | 7BEB3C8C-641B-4BEA-9F92-6594A8D448DD
46 | D55B718A-71A6-41A0-98ED-07B72442DDE8
47 | 08A134DC-B1D9-42D3-AF5F-3E1061AD8827
48 | 086D0C3A-130F-4C93-B1E5-1522DDAF58FA
49 | 35D0E7C0-E396-4D8B-8361-89B88C3AFF0C
50 | BD798537-3548-47F3-A6AB-7FB95C45DB83
51 | 9D0E390E-145F-48F8-944A-E1349337DABF
52 | 6131549E-7BD0-4AB3-AC12-4BD971BE95B0
53 |
54 | uuid
55 | 527BB215-1332-4CC8-AC6B-68E692D1421C
56 |
57 |
58 |
--------------------------------------------------------------------------------
/Syntaxes/Io.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | fileTypes
6 |
7 | io
8 |
9 | keyEquivalent
10 | ^~I
11 | name
12 | Io
13 | patterns
14 |
15 |
16 | captures
17 |
18 | 1
19 |
20 | name
21 | meta.empty-parenthesis.io
22 |
23 |
24 | comment
25 | we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob
26 | match
27 | \((\))
28 |
29 |
30 | captures
31 |
32 | 1
33 |
34 | name
35 | meta.comma-parenthesis.io
36 |
37 |
38 | comment
39 | We want to do the same for ,) -- Seckar; same as above -- Rob
40 | match
41 | \,(\))
42 |
43 |
44 | match
45 | \b(if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\b
46 | name
47 | keyword.control.io
48 |
49 |
50 | begin
51 | /\*
52 | captures
53 |
54 | 0
55 |
56 | name
57 | punctuation.definition.comment.io
58 |
59 |
60 | end
61 | \*/
62 | name
63 | comment.block.io
64 |
65 |
66 | begin
67 | (^[ \t]+)?(?=//)
68 | beginCaptures
69 |
70 | 1
71 |
72 | name
73 | punctuation.whitespace.comment.leading.io
74 |
75 |
76 | end
77 | (?!\G)
78 | patterns
79 |
80 |
81 | begin
82 | //
83 | beginCaptures
84 |
85 | 0
86 |
87 | name
88 | punctuation.definition.comment.io
89 |
90 |
91 | end
92 | \n
93 | name
94 | comment.line.double-slash.io
95 |
96 |
97 |
98 |
99 | begin
100 | (^[ \t]+)?(?=#)
101 | beginCaptures
102 |
103 | 1
104 |
105 | name
106 | punctuation.whitespace.comment.leading.io
107 |
108 |
109 | end
110 | (?!\G)
111 | patterns
112 |
113 |
114 | begin
115 | #
116 | beginCaptures
117 |
118 | 0
119 |
120 | name
121 | punctuation.definition.comment.io
122 |
123 |
124 | end
125 | \n
126 | name
127 | comment.line.number-sign.io
128 |
129 |
130 |
131 |
132 | comment
133 | I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob
134 | match
135 | \b(self|sender|target|proto|protos|parent)\b
136 | name
137 | variable.language.io
138 |
139 |
140 | match
141 | <=|>=|=|:=|\*|\||\|\||\+|-|/|&|&&|>|<|\?|@|@@|\b(and|or)\b
142 | name
143 | keyword.operator.io
144 |
145 |
146 | match
147 | \bGL[\w_]+\b
148 | name
149 | constant.other.io
150 |
151 |
152 | match
153 | \b([A-Z](\w+)?)\b
154 | name
155 | support.class.io
156 |
157 |
158 | match
159 | \b(clone|call|init|method|list|vector|block|(\w+(?=\s*\()))\b
160 | name
161 | support.function.io
162 |
163 |
164 | match
165 | \b(gl(u|ut)?[A-Z]\w+)\b
166 | name
167 | support.function.open-gl.io
168 |
169 |
170 | begin
171 | """
172 | beginCaptures
173 |
174 | 0
175 |
176 | name
177 | punctuation.definition.string.begin.io
178 |
179 |
180 | end
181 | """
182 | endCaptures
183 |
184 | 0
185 |
186 | name
187 | punctuation.definition.string.end.io
188 |
189 |
190 | name
191 | string.quoted.triple.io
192 | patterns
193 |
194 |
195 | match
196 | \\.
197 | name
198 | constant.character.escape.io
199 |
200 |
201 |
202 |
203 | begin
204 | "
205 | beginCaptures
206 |
207 | 0
208 |
209 | name
210 | punctuation.definition.string.begin.io
211 |
212 |
213 | end
214 | "
215 | endCaptures
216 |
217 | 0
218 |
219 | name
220 | punctuation.definition.string.end.io
221 |
222 |
223 | name
224 | string.quoted.double.io
225 | patterns
226 |
227 |
228 | match
229 | \\.
230 | name
231 | constant.character.escape.io
232 |
233 |
234 |
235 |
236 | match
237 | \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\b
238 | name
239 | constant.numeric.io
240 |
241 |
242 | match
243 | (Lobby)\b
244 | name
245 | variable.other.global.io
246 |
247 |
248 | match
249 | \b(TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\b
250 | name
251 | constant.language.io
252 |
253 |
254 | scopeName
255 | source.io
256 | uuid
257 | BD798537-3548-47F3-A6AB-7FB95C45DB83
258 |
259 |
260 |
--------------------------------------------------------------------------------