Mercurial > repos > tabletprog
annotate src/editor.tp @ 126:a2d2d8e09291
Merge
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 05 Aug 2013 23:37:17 -0700 |
parents | 1157639353e7 |
children | 2b25d0ce2946 |
rev | line source |
---|---|
11 | 1 #{ |
2 //mquery functions | |
3 q <- foreign: :query {} | |
4 qall <- foreign: :query {} | |
5 each <- foreign: :iterable fun {} | |
6 addClass <- foreign: :node className {} | |
7 removeClass <- foreign: :node className {} | |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
8 hasClass <- foreign: :node className {} |
12
6e4851a204a5
Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
9 get <- foreign: :url onSuccess onFail onOther {} |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
10 getEl <- foreign: :from idx {} |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
11 setEl <- foreign: :to idx val {} |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
12 newEl <- foreign: :tagname props {} |
11 | 13 |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
14 //TP Parser |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
15 parser <- foreign: #{ |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
16 parse <- foreign: :str {} |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
17 } |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
18 isLambda <- foreign: :astnode {} |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
12
diff
changeset
|
19 |
11 | 20 //js builtins |
21 console <- foreign: #{ | |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
22 log <- foreign: :val {} |
11 | 23 } |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
24 window <- foreign: #{} |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
25 Object <- foreign: #{ |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
26 keys <- foreign: :object {} |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
27 } |
11 | 28 |
17
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
29 //kernel definitions |
104 | 30 //import: kernel |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
31 |
108
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
32 filter <- :arr pred { |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
33 output <- arr slice: 0 0 |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
34 each: arr :idx el { |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
35 if: (pred: el) { |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
36 output push: el |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
37 } else: {} |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
38 } |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
39 output |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
40 } |
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
41 |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
42 //editor code |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
43 selection <- #{ |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
44 valid? <- false |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
45 } |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
46 |
117
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
47 setSelection:withInNode <- :astnode :innode { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
48 fakeEvent <- #{ |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
49 stopPropagation <- :Blah { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
50 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
51 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
52 selection <- #{ |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
53 valid? <- true |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
54 in <- { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
55 (innode domNode) onclick: fakeEvent |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
56 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
57 out <- { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
58 fakeEvent <- #{ |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
59 stopPropagation <- :Blah { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
60 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
61 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
62 ((astnode up) domNode) onclick: fakeEvent |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
63 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
64 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
65 } |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
66 |
118
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
67 setSelection <- :astnode { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
68 fakeEvent <- #{ |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
69 stopPropagation <- :Blah { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
70 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
71 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
72 selection <- #{ |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
73 valid? <- true |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
74 in <- { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
75 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
76 out <- { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
77 fakeEvent <- #{ |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
78 stopPropagation <- :Blah { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
79 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
80 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
81 ((astnode up) domNode) onclick: fakeEvent |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
82 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
83 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
84 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
85 |
17
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
86 editFile <- :path { |
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
87 get: path :request { |
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
88 addClass: (q: "body") "editorMode" |
21
6c8ae6b47ab5
Small improvements to property support and elimination of setP and getP functions as they are no longer needed
Mike Pavone <pavone@retrodev.com>
parents:
18
diff
changeset
|
89 src <- request responseText |
17
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
90 ast <- parser parse: src |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
91 ast populateSymbols: (foreign: null) |
17
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
92 ast toHTML: (q: "#src") |
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
93 } |
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
94 } |
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
95 |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
96 selectNode <- :node { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
97 each: (qall: ".selected") :idx el { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
98 removeClass: el "selected" |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
99 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
100 addClass: node "selected" |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
101 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
102 |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
103 selectQuery <- :selector { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
104 selectQuery: selector in: (foreign: undefined) |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
105 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
106 |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
107 selectQuery:in <- :selector :context { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
108 each: (qall: ".selected") :idx el { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
109 removeClass: el "selected" |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
110 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
111 each: (qall: selector context) :idx el { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
112 addClass: el "selected" |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
113 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
114 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
115 |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
116 selectParent <- :node { |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
117 each: (qall: ".selectParent") :idx el { |
109
a647cdad620b
Small fix to selecting a funcall method/function name
Mike Pavone <pavone@retrodev.com>
parents:
108
diff
changeset
|
118 removeClass: el "selectParent" |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
119 } |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
120 addClass: node "selectParent" |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
121 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
122 |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
123 popInscope:onClick <- :syms :handler { |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
124 inscope <- q: "#inscope" |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
125 inscope innerHTML!: "" |
24
fe3533494ce9
Display symbols order first by depth. Eliminate extraneous setter symbols
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
126 each: syms :idx key { |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
127 inscope appendChild: (newEl: "li" #{ |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
128 textContent <- key |
107
152b6cfb98b6
Click-to-select no longer selects the whole lambda when it shouldn't and no longer replaces the selected code with a single symbol.
Mike Pavone <pavone@retrodev.com>
parents:
105
diff
changeset
|
129 onclick <- :Event { handler: key } |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
130 }) |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
131 } |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
132 } |
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
21
diff
changeset
|
133 |
119
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
134 scalarClick <- :domnode astnode event { |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
135 selectNode: domnode |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
136 setSelection: astnode |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
137 event stopPropagation: (foreign: undefined) |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
138 //TODO: set focus |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
139 } |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
140 |
29
18cec540238a
Prevent event bubbling so lambda click handler doesn't get called when clicking on an element inside it
Mike Pavone <pavone@retrodev.com>
parents:
28
diff
changeset
|
141 symbolClick <- :domnode astnode event { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
142 selectNode: domnode |
105
35006a6e1c47
Fixed more editor coderot and improved syntax/selection coloring a bit.
Mike Pavone <pavone@retrodev.com>
parents:
104
diff
changeset
|
143 popInscope: ((astnode symbols) allSymbols: (foreign: undefined)) onClick: :key { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
144 domnode textContent!: key |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
145 astnode name!: key |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
146 } |
118
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
147 setSelection: astnode |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
148 event stopPropagation: (foreign: undefined) |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
149 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
150 |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
151 assignClick <- :domnode astnode event { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
152 selectParent: domnode |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
153 selectQuery: ".selectParent > .varname" in: domnode |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
154 popInscope: ((astnode symbols) allSymbols: (foreign: undefined)) onClick: :key { |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
155 (domnode firstChild) textContent!: key |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
156 (astnode symbol) name!: key |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
157 } |
0a66fe3a368a
Allow selection and navigation of assignment nodes.
Mike Pavone <pavone@retrodev.com>
parents:
117
diff
changeset
|
158 setSelection: astnode withInNode: (astnode expression) |
107
152b6cfb98b6
Click-to-select no longer selects the whole lambda when it shouldn't and no longer replaces the selected code with a single symbol.
Mike Pavone <pavone@retrodev.com>
parents:
105
diff
changeset
|
159 event stopPropagation: (foreign: undefined) |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
160 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
161 |
116
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
162 opClick <- :domnode astnode event { |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
163 selectParent: domnode |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
164 selectQuery: ".selectParent > .opname" in: domnode |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
165 showOps |
117
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
166 setSelection: astnode withInNode: (astnode left) |
116
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
167 event stopPropagation: (foreign: undefined) |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
168 } |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
169 |
29
18cec540238a
Prevent event bubbling so lambda click handler doesn't get called when clicking on an element inside it
Mike Pavone <pavone@retrodev.com>
parents:
28
diff
changeset
|
170 funClick <- :domnode astnode event { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
171 selectParent: domnode |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
172 selectQuery: ".selectParent > .funpart" in: domnode |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
173 symtable <- astnode symbols |
108
5099c1a96e3f
Mostly fix clicking on the function name in a funcall expression
Mike Pavone <pavone@retrodev.com>
parents:
107
diff
changeset
|
174 syms <- filter: (symtable allSymbols: (foreign: undefined)) :sym { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
175 isLambda: ((symtable find: sym) def) |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
176 } |
117
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
177 inner <- if: (astnode receiver) != (foreign: null) { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
178 astnode receiver |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
179 } else: { |
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
180 (astnode args) getEl: 0 |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
181 } |
117
f4e464a17579
Cleanup selection code in editor.
Mike Pavone <pavone@retrodev.com>
parents:
116
diff
changeset
|
182 setSelection: astnode withInNode: inner |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
183 popInscope: syms onClick: :key { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
184 astnode name!: key |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
185 parts <- key split: ":" |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
186 nodes <- [] |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
187 each: (domnode children) :idx val{ |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
188 nodes push: val |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
189 } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
190 partIdx <- 0 |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
191 nodeIdx <- 0 |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
192 lastWasNamePart <- true |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
193 while: { partIdx < (parts length) || nodeIdx < (nodes length) } do: { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
194 if: nodeIdx < (nodes length) { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
195 node <-getEl: nodes nodeIdx |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
196 nodeIdx <- nodeIdx + 1 |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
197 if: (hasClass: node "funpart") { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
198 if: partIdx < (parts length) { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
199 postfix <- if: partIdx = 0 && nodeIdx = 2 && (parts length) = 1 && (nodes length) = 2 { "" } else: { ":" } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
200 t <- (getEl: parts partIdx) |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
201 node textContent!: (getEl: parts partIdx) . postfix |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
202 partIdx <- partIdx + 1 |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
203 } else: { |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
204 domnode removeChild: node |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
205 } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
206 lastWasNamePart <- true |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
207 } else: { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
208 if: (not: lastWasNamePart) && partIdx < (parts length) && nodeIdx > 0 { |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
209 domnode insertBefore: (newEl: "span" #{ |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
210 className <- "funpart selected" |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
211 textContent <- (getEl: parts partIdx) . ":" |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
212 }) node |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
213 partIdx <- partIdx + 1 |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
214 } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
215 lastWasNamePart <- false |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
216 } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
217 } else: { |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
218 console log: "part: " . (getEl: parts partIdx) |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
219 domnode appendChild: (newEl: "span" #{ |
110
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
220 className <- "funpart selected" |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
221 textContent <- (getEl: parts partIdx) . ":" |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
222 }) |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
223 partIdx <- partIdx + 1 |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
224 } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
225 } |
d715fb3c39ab
Implemented clicking on symbols inside inscope box to replace function name in funcall.
Mike Pavone <pavone@retrodev.com>
parents:
109
diff
changeset
|
226 } |
107
152b6cfb98b6
Click-to-select no longer selects the whole lambda when it shouldn't and no longer replaces the selected code with a single symbol.
Mike Pavone <pavone@retrodev.com>
parents:
105
diff
changeset
|
227 event stopPropagation: (foreign: undefined) |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
228 } |
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
24
diff
changeset
|
229 |
29
18cec540238a
Prevent event bubbling so lambda click handler doesn't get called when clicking on an element inside it
Mike Pavone <pavone@retrodev.com>
parents:
28
diff
changeset
|
230 lambdaClick <- :domnode astnode event { |
119
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
231 selectNode: domnode |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
232 popInscope: ((astnode symbols) allSymbols: (foreign: undefined)) onClick: :key { |
124
1157639353e7
Add dummy handler for clicking a symbol while a lambda is selected. Fix the code for selecting the first inner node of an object literal.
Mike Pavone <pavone@retrodev.com>
parents:
120
diff
changeset
|
233 console log: "foooobar!" |
119
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
234 } |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
235 inner <- if: ((astnode args) length) > 0 { |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
236 (astnode args) getEl: 0 |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
237 } else: { |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
238 (astnode expressions) getEl: 0 |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
239 } |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
240 setSelection: astnode withInNode: inner |
77f7cd65e121
Add selection of number and string literals. Support inward navigation of lambdas.
Mike Pavone <pavone@retrodev.com>
parents:
118
diff
changeset
|
241 event stopPropagation: (foreign: undefined) |
28 | 242 } |
243 | |
120
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
244 objectClick <- :domnode astnode event { |
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
245 selectNode: domnode |
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
246 popInscope: ((astnode symbols) allSymbols: (foreign: undefined)) onClick: :key { |
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
247 console log: "fooobar!" |
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
248 } |
124
1157639353e7
Add dummy handler for clicking a symbol while a lambda is selected. Fix the code for selecting the first inner node of an object literal.
Mike Pavone <pavone@retrodev.com>
parents:
120
diff
changeset
|
249 setSelection: astnode withInNode: ((astnode messages) getEl: 0) |
120
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
250 event stopPropagation: (foreign: undefined) |
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
251 } |
d5dc9507d612
Basic support for selecting objects in the editor.
Mike Pavone <pavone@retrodev.com>
parents:
119
diff
changeset
|
252 |
116
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
253 visible <- "showops" |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
254 |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
255 showOps <- { |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
256 each: (qall: ".controls") :idx el { |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
257 removeClass: el visible |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
258 addClass: el "showops" |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
259 } |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
260 visible <- "showops" |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
261 } |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
262 |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
263 showLit <- { |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
264 each: (qall: ".controls") :idx el { |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
265 removeClass: el visible |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
266 addClass: el "showlit" |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
267 } |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
268 visible <- "showlit" |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
269 } |
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
270 |
11 | 271 main <- { |
30
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
272 get: "/src/" :data { |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
273 fakeEl <- newEl: "div" #{ |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
274 innerHTML <- data response |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
275 } |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
276 each: (qall: "a" fakeEl) :idx el { |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
277 if: ((el textContent) = "../") {} else: { |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
278 nel <- newEl: "a" #{ |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
279 href <- "/edit/src/" + (el textContent) |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
280 textContent <- el textContent |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
281 } |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
282 nel onclick!: :event { |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
283 link <- foreign: this |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
284 path <- link href |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
285 path <- path substr: (path indexOf: "/edit/") + 5 |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
286 editFile: path |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
287 foreign: false |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
288 } |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
289 li <- newEl: "li" |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
290 li appendChild: nel |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
291 (q: "#browser ul") appendChild: li |
608eb70fe261
Fix some compiler bugs and do initial work on module import
Mike Pavone <pavone@retrodev.com>
parents:
29
diff
changeset
|
292 } |
12
6e4851a204a5
Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
293 } |
6e4851a204a5
Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
294 } |
124
1157639353e7
Add dummy handler for clicking a symbol while a lambda is selected. Fix the code for selecting the first inner node of an object literal.
Mike Pavone <pavone@retrodev.com>
parents:
120
diff
changeset
|
295 |
12
6e4851a204a5
Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
296 //bind handlers for editor buttons |
6e4851a204a5
Add ability to load code into editor
Mike Pavone <pavone@retrodev.com>
parents:
11
diff
changeset
|
297 each: (qall: ".controls li") :idx el { |
21
6c8ae6b47ab5
Small improvements to property support and elimination of setP and getP functions as they are no longer needed
Mike Pavone <pavone@retrodev.com>
parents:
18
diff
changeset
|
298 el onclick!: :event { |
11 | 299 srcel <- (q: "#src") |
21
6c8ae6b47ab5
Small improvements to property support and elimination of setP and getP functions as they are no longer needed
Mike Pavone <pavone@retrodev.com>
parents:
18
diff
changeset
|
300 srcel textContent!: (srcel textContent) + (el textContent) |
11 | 301 } |
302 } | |
21
6c8ae6b47ab5
Small improvements to property support and elimination of setP and getP functions as they are no longer needed
Mike Pavone <pavone@retrodev.com>
parents:
18
diff
changeset
|
303 (q: "#ops_button") onclick!: :event { |
116
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
304 showOps |
111
b2a3f202d485
Fleshed out the UI a little. Added a "literal" button that replaces the operator panel with a literal panel. Added the navigation buttons, but they're not functional yet.
Mike Pavone <pavone@retrodev.com>
parents:
110
diff
changeset
|
305 } |
b2a3f202d485
Fleshed out the UI a little. Added a "literal" button that replaces the operator panel with a literal panel. Added the navigation buttons, but they're not functional yet.
Mike Pavone <pavone@retrodev.com>
parents:
110
diff
changeset
|
306 (q: "#lit_button") onclick!: :event { |
116
9cf3e0b18ecc
Add support for selecting operator expressions in the editor
Mike Pavone <pavone@retrodev.com>
parents:
113
diff
changeset
|
307 showLit |
11 | 308 } |
124
1157639353e7
Add dummy handler for clicking a symbol while a lambda is selected. Fix the code for selecting the first inner node of an object literal.
Mike Pavone <pavone@retrodev.com>
parents:
120
diff
changeset
|
309 |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
310 (q: "#in") onclick!: :event { |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
311 console log: "inwards" |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
312 if: (selection valid?) { |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
313 selection in |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
314 } |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
315 } |
124
1157639353e7
Add dummy handler for clicking a symbol while a lambda is selected. Fix the code for selecting the first inner node of an object literal.
Mike Pavone <pavone@retrodev.com>
parents:
120
diff
changeset
|
316 |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
317 (q: "#out") onclick!: :event { |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
318 console log: "outwards" |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
319 if: (selection valid?) { |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
320 selection out |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
321 } |
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
322 } |
124
1157639353e7
Add dummy handler for clicking a symbol while a lambda is selected. Fix the code for selecting the first inner node of an object literal.
Mike Pavone <pavone@retrodev.com>
parents:
120
diff
changeset
|
323 |
21
6c8ae6b47ab5
Small improvements to property support and elimination of setP and getP functions as they are no longer needed
Mike Pavone <pavone@retrodev.com>
parents:
18
diff
changeset
|
324 path <- (window location) pathname |
17
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
325 if: (path indexOf: "/edit/") = 0 { |
7400bb42e0c9
Add direct file edit link support
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
326 editFile: (path substr: 5) |
113
c0bfff39abe3
Basic in and out navigation support added to funcall expressions. Added toHTML methods to listlit and arraylit.
Mike Pavone <pavone@retrodev.com>
parents:
111
diff
changeset
|
327 } |
11 | 328 } |
329 | |
330 } |