1
1
module Main where
2
-
2
+
3
3
import Data.Maybe
4
- import Data.Array (map )
5
- import Data.Array.ST (pushSTArray )
4
+ import Data.Array (map )
5
+ import Data.Array.ST (pushSTArray )
6
+
7
+ import Control.Monad.Eff
8
+
9
+ import Debug.Trace
6
10
7
- import Control.Monad.Eff
8
-
9
- import Debug.Trace
10
-
11
11
import Ace
12
12
import Ace.Types
13
13
14
+ import qualified Ace.Config as Config
14
15
import qualified Ace.Editor as Editor
15
- import qualified Ace.EditSession as Session
16
- import qualified Ace.Anchor as Anchor
16
+ import qualified Ace.EditSession as Session
17
+ import qualified Ace.Anchor as Anchor
17
18
import qualified Ace.BackgroundTokenizer as BackgroundTokenizer
18
19
import qualified Ace.Document as Document
19
20
import qualified Ace.Range as Range
20
21
import qualified Ace.ScrollBar as ScrollBar
21
22
import qualified Ace.Search as Search
22
23
import qualified Ace.Selection as Selection
23
- import qualified Ace.Tokenizer as Tokenizer
24
+ import qualified Ace.Tokenizer as Tokenizer
24
25
import qualified Ace.TokenIterator as TokenIterator
25
- import qualified Ace.UndoManager as UndoManager
26
- import qualified Ace.VirtualRenderer as VirtualRenderer
27
-
26
+ import qualified Ace.UndoManager as UndoManager
27
+ import qualified Ace.VirtualRenderer as VirtualRenderer
28
+
28
29
foreign import rules " " "
29
30
var rules = {
30
31
" start " : [
@@ -34,38 +35,41 @@ foreign import rules """
34
35
}
35
36
]
36
37
}
37
- " " " :: Rules
38
-
38
+ " " " :: Rules
39
+
39
40
main = do
41
+
42
+ Config .set Config .basePath " foo"
43
+
40
44
-- Create an editor
41
45
editor <- Ace .edit " editor" ace
42
-
46
+
43
47
-- Set the theme
44
- Editor .setTheme " ace/theme/monokai " editor
45
-
48
+ Editor .setTheme " ace/theme/chrome " editor
49
+
46
50
-- Log some events
47
51
editor `Editor.onCopy` \s -> trace (" Text copied: " ++ s)
48
52
editor `Editor.onPaste` \_ -> trace " Text pasted."
49
53
editor `Editor.onBlur` trace " Editor lost focus."
50
54
editor `Editor.onFocus` trace " Editor gained focus."
51
-
55
+
52
56
-- Get the editor session
53
57
session <- Editor .getSession editor
54
-
58
+
55
59
-- Set the mode
56
60
Session .setMode " ace/mode/javascript" session
57
61
-- Get the mode
58
62
mode <- Session .getMode session
59
63
-- Create another edit session with this mode
60
64
session1 <- Ace .createEditSession " " mode ace
61
-
65
+
62
66
-- Get the document for the session
63
67
document <- Session .getDocument session
64
68
document `Document.onChange` \(DocumentEvent ty _ _ _ _) -> trace (" Document changed: " ++ showDocumentEventType ty)
65
69
Document .setNewLineMode Windows document
66
-
70
+
67
71
-- Add an anchor at the start of the document and listen for updates
68
- anchor <- Document .createAnchor 0 0 document
72
+ anchor <- Document .createAnchor 0 0 document
69
73
-- Assert position is correct
70
74
{ row: 0 , column: 0 } <- Anchor .getPosition anchor
71
75
-- Update the anchor position
@@ -75,23 +79,23 @@ main = do
75
79
trace (" New anchor position: " ++ show e.value.row ++ " , " ++ show e.value.column)
76
80
-- Unlisten
77
81
Anchor .detach anchor
78
-
82
+
79
83
-- Add a dynamic marker
80
84
Session .addDynamicMarker (\html _ -> pushSTArray html " <i>!</i>" ) true session
81
-
85
+
82
86
-- Get the background tokenizer and trace the tokens and state on the first line
83
87
backgroundTokenizer <- Session .getBackgroundTokenizer session
84
88
tokens <- BackgroundTokenizer .getTokens 0 backgroundTokenizer
85
89
print $ map (\o -> o.value) tokens
86
90
state <- BackgroundTokenizer .getState 0 backgroundTokenizer
87
91
trace state
88
-
89
- -- Create a scroll bar and apply it to
92
+
93
+ -- Create a scroll bar and apply it to
90
94
ctr <- Editor .getContainer editor
91
95
vr <- Editor .getRenderer editor
92
96
scrollBar <- ScrollBar .create ctr vr
93
97
scrollBar `ScrollBar.onScroll` trace " Scrolled"
94
-
98
+
95
99
-- Create a search class
96
100
search <- Search .create
97
101
Search .set { needle: " to the console"
@@ -104,61 +108,61 @@ main = do
104
108
} search
105
109
range <- Search .find session search
106
110
Session .addFold " fold" range session
107
-
111
+
108
112
-- Gutter decorations
109
113
Session .addGutterDecoration 0 " ?" session
110
-
114
+
111
115
-- Markers
112
116
Session .addMarker range " 1" " 2" false session
113
-
117
+
114
118
-- Wrap limit
115
119
Session .adjustWrapLimit 20 session
116
-
120
+
117
121
-- Move the cursor
118
122
Editor .moveCursorTo 0 Nothing Nothing editor
119
-
123
+
120
124
-- Misc. Tests
121
125
miscTests
122
-
126
+
123
127
miscTests = do
124
128
editor <- Ace .edit " tests" ace
125
129
session <- Editor .getSession editor
126
130
document <- Session .getDocument session
127
-
131
+
128
132
range <- Range .create 0 0 0 1
129
-
133
+
130
134
ctr <- Editor .getContainer editor
131
135
vr <- Editor .getRenderer editor
132
136
scrollBar <- ScrollBar .create ctr vr
133
-
137
+
134
138
search <- Search .create
135
-
139
+
136
140
backgroundTokenizer <- Session .getBackgroundTokenizer session
137
-
141
+
138
142
anchor <- Document .createAnchor 0 0 document
139
-
143
+
140
144
Anchor .getPosition anchor
141
145
Anchor .getDocument anchor
142
146
Anchor .setPosition 0 0 true anchor
143
147
Anchor .detach anchor
144
-
148
+
145
149
position <- Document .indexToPosition 0 0 document
146
-
150
+
147
151
tokenIterator <- TokenIterator .create session 0 0
148
-
152
+
149
153
TokenIterator .stepForward tokenIterator
150
154
TokenIterator .stepBackward tokenIterator
151
155
TokenIterator .getCurrentToken tokenIterator
152
156
TokenIterator .getCurrentTokenRow tokenIterator
153
157
TokenIterator .getCurrentTokenColumn tokenIterator
154
-
158
+
155
159
BackgroundTokenizer .setDocument document backgroundTokenizer
156
160
BackgroundTokenizer .fireUpdateEvent 0 0 backgroundTokenizer
157
161
BackgroundTokenizer .start 0 backgroundTokenizer
158
162
BackgroundTokenizer .stop backgroundTokenizer
159
163
BackgroundTokenizer .getTokens 0 backgroundTokenizer
160
164
BackgroundTokenizer .getState 0 backgroundTokenizer
161
-
165
+
162
166
Document .getValue document
163
167
Document .createAnchor 0 0 document
164
168
Document .getNewLineCharacter document
@@ -178,10 +182,10 @@ miscTests = do
178
182
Document .replace range " " document
179
183
Document .indexToPosition 0 0 document
180
184
Document .positionToIndex position 0 document
181
-
182
-
185
+
186
+
183
187
undoManager <- UndoManager .create
184
-
188
+
185
189
Session .findMatchingBracket position session
186
190
Session .screenToDocumentColumn 0 0 session
187
191
Session .highlight " " session
@@ -261,7 +265,7 @@ miscTests = do
261
265
Session .documentToScreenColumn 0 0 session
262
266
Session .documentToScreenRow 0 0 session
263
267
Session .getScreenLength session
264
-
268
+
265
269
Editor .selectMoreLines 0 editor
266
270
Editor .setKeyboardHandler " " editor
267
271
Editor .getKeyboardHandler editor
@@ -369,7 +373,7 @@ miscTests = do
369
373
Editor .undo editor
370
374
Editor .redo editor
371
375
Editor .destroy editor
372
-
376
+
373
377
Range .isEmpty range
374
378
Range .isEqual range range
375
379
Range .toString range
@@ -396,18 +400,18 @@ miscTests = do
396
400
Range .collapseRows range
397
401
Range .toScreenRange session range
398
402
Range .fromPoints range range
399
-
403
+
400
404
ScrollBar .getWidth scrollBar
401
405
ScrollBar .setHeight 0 scrollBar
402
406
ScrollBar .setInnerHeight 0 scrollBar
403
407
ScrollBar .setScrollTop 0 scrollBar
404
-
408
+
405
409
Search .find session search
406
410
Search .findAll session search
407
411
Search .replace " " " " search
408
-
412
+
409
413
selection <- Session .getSelection session
410
-
414
+
411
415
Selection .moveCursorWordLeft selection
412
416
Selection .moveCursorWordRight selection
413
417
Selection .fromOrientedRange range selection
@@ -453,9 +457,9 @@ miscTests = do
453
457
Selection .moveCursorBy 0 0 selection
454
458
Selection .moveCursorTo 0 0 Nothing selection
455
459
Selection .moveCursorToScreen 0 0 true selection
456
-
460
+
457
461
UndoManager .undo Nothing undoManager
458
462
UndoManager .redo true undoManager
459
463
UndoManager .reset undoManager
460
464
UndoManager .hasUndo undoManager
461
- UndoManager .hasRedo undoManager
465
+ UndoManager .hasRedo undoManager
0 commit comments