Skip to content

Commit 2c6f627

Browse files
committed
Merge pull request #10 from slamdata/updates
Uppercase effect, add Config, newtype TextMode
2 parents a07868e + c99ed92 commit 2c6f627

20 files changed

+1553
-1439
lines changed

MODULES.md

Lines changed: 498 additions & 438 deletions
Large diffs are not rendered by default.

bower.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
"package.json"
1818
],
1919
"dependencies": {
20-
"ace": "~1.1.8",
2120
"purescript-maybe": "~0.2.1",
2221
"purescript-arrays": "~0.3.0",
2322
"purescript-foreign": "~0.4.0",
2423
"purescript-simple-dom": "~0.0.2",
2524
"purescript-nullable": "~0.1.0"
25+
},
26+
"devDependencies": {
27+
"ace-builds": "~1.1.9"
2628
}
2729
}

example/Main.purs

Lines changed: 60 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
module Main where
2-
2+
33
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
610

7-
import Control.Monad.Eff
8-
9-
import Debug.Trace
10-
1111
import Ace
1212
import Ace.Types
1313

14+
import qualified Ace.Config as Config
1415
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
1718
import qualified Ace.BackgroundTokenizer as BackgroundTokenizer
1819
import qualified Ace.Document as Document
1920
import qualified Ace.Range as Range
2021
import qualified Ace.ScrollBar as ScrollBar
2122
import qualified Ace.Search as Search
2223
import qualified Ace.Selection as Selection
23-
import qualified Ace.Tokenizer as Tokenizer
24+
import qualified Ace.Tokenizer as Tokenizer
2425
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+
2829
foreign import rules """
2930
var rules = {
3031
"start": [
@@ -34,38 +35,41 @@ foreign import rules """
3435
}
3536
]
3637
}
37-
""" :: Rules
38-
38+
""" :: Rules
39+
3940
main = do
41+
42+
Config.set Config.basePath "foo"
43+
4044
-- Create an editor
4145
editor <- Ace.edit "editor" ace
42-
46+
4347
-- Set the theme
44-
Editor.setTheme "ace/theme/monokai" editor
45-
48+
Editor.setTheme "ace/theme/chrome" editor
49+
4650
-- Log some events
4751
editor `Editor.onCopy` \s -> trace ("Text copied: " ++ s)
4852
editor `Editor.onPaste` \_ -> trace "Text pasted."
4953
editor `Editor.onBlur` trace "Editor lost focus."
5054
editor `Editor.onFocus` trace "Editor gained focus."
51-
55+
5256
-- Get the editor session
5357
session <- Editor.getSession editor
54-
58+
5559
-- Set the mode
5660
Session.setMode "ace/mode/javascript" session
5761
-- Get the mode
5862
mode <- Session.getMode session
5963
-- Create another edit session with this mode
6064
session1 <- Ace.createEditSession "" mode ace
61-
65+
6266
-- Get the document for the session
6367
document <- Session.getDocument session
6468
document `Document.onChange` \(DocumentEvent ty _ _ _ _) -> trace ("Document changed: " ++ showDocumentEventType ty)
6569
Document.setNewLineMode Windows document
66-
70+
6771
-- 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
6973
-- Assert position is correct
7074
{ row: 0, column: 0 } <- Anchor.getPosition anchor
7175
-- Update the anchor position
@@ -75,23 +79,23 @@ main = do
7579
trace ("New anchor position: " ++ show e.value.row ++ ", " ++ show e.value.column)
7680
-- Unlisten
7781
Anchor.detach anchor
78-
82+
7983
-- Add a dynamic marker
8084
Session.addDynamicMarker (\html _ -> pushSTArray html "<i>!</i>") true session
81-
85+
8286
-- Get the background tokenizer and trace the tokens and state on the first line
8387
backgroundTokenizer <- Session.getBackgroundTokenizer session
8488
tokens <- BackgroundTokenizer.getTokens 0 backgroundTokenizer
8589
print $ map (\o -> o.value) tokens
8690
state <- BackgroundTokenizer.getState 0 backgroundTokenizer
8791
trace state
88-
89-
-- Create a scroll bar and apply it to
92+
93+
-- Create a scroll bar and apply it to
9094
ctr <- Editor.getContainer editor
9195
vr <- Editor.getRenderer editor
9296
scrollBar <- ScrollBar.create ctr vr
9397
scrollBar `ScrollBar.onScroll` trace "Scrolled"
94-
98+
9599
-- Create a search class
96100
search <- Search.create
97101
Search.set { needle: "to the console"
@@ -104,61 +108,61 @@ main = do
104108
} search
105109
range <- Search.find session search
106110
Session.addFold "fold" range session
107-
111+
108112
-- Gutter decorations
109113
Session.addGutterDecoration 0 "?" session
110-
114+
111115
-- Markers
112116
Session.addMarker range "1" "2" false session
113-
117+
114118
-- Wrap limit
115119
Session.adjustWrapLimit 20 session
116-
120+
117121
-- Move the cursor
118122
Editor.moveCursorTo 0 Nothing Nothing editor
119-
123+
120124
-- Misc. Tests
121125
miscTests
122-
126+
123127
miscTests = do
124128
editor <- Ace.edit "tests" ace
125129
session <- Editor.getSession editor
126130
document <- Session.getDocument session
127-
131+
128132
range <- Range.create 0 0 0 1
129-
133+
130134
ctr <- Editor.getContainer editor
131135
vr <- Editor.getRenderer editor
132136
scrollBar <- ScrollBar.create ctr vr
133-
137+
134138
search <- Search.create
135-
139+
136140
backgroundTokenizer <- Session.getBackgroundTokenizer session
137-
141+
138142
anchor <- Document.createAnchor 0 0 document
139-
143+
140144
Anchor.getPosition anchor
141145
Anchor.getDocument anchor
142146
Anchor.setPosition 0 0 true anchor
143147
Anchor.detach anchor
144-
148+
145149
position <- Document.indexToPosition 0 0 document
146-
150+
147151
tokenIterator <- TokenIterator.create session 0 0
148-
152+
149153
TokenIterator.stepForward tokenIterator
150154
TokenIterator.stepBackward tokenIterator
151155
TokenIterator.getCurrentToken tokenIterator
152156
TokenIterator.getCurrentTokenRow tokenIterator
153157
TokenIterator.getCurrentTokenColumn tokenIterator
154-
158+
155159
BackgroundTokenizer.setDocument document backgroundTokenizer
156160
BackgroundTokenizer.fireUpdateEvent 0 0 backgroundTokenizer
157161
BackgroundTokenizer.start 0 backgroundTokenizer
158162
BackgroundTokenizer.stop backgroundTokenizer
159163
BackgroundTokenizer.getTokens 0 backgroundTokenizer
160164
BackgroundTokenizer.getState 0 backgroundTokenizer
161-
165+
162166
Document.getValue document
163167
Document.createAnchor 0 0 document
164168
Document.getNewLineCharacter document
@@ -178,10 +182,10 @@ miscTests = do
178182
Document.replace range "" document
179183
Document.indexToPosition 0 0 document
180184
Document.positionToIndex position 0 document
181-
182-
185+
186+
183187
undoManager <- UndoManager.create
184-
188+
185189
Session.findMatchingBracket position session
186190
Session.screenToDocumentColumn 0 0 session
187191
Session.highlight "" session
@@ -261,7 +265,7 @@ miscTests = do
261265
Session.documentToScreenColumn 0 0 session
262266
Session.documentToScreenRow 0 0 session
263267
Session.getScreenLength session
264-
268+
265269
Editor.selectMoreLines 0 editor
266270
Editor.setKeyboardHandler "" editor
267271
Editor.getKeyboardHandler editor
@@ -369,7 +373,7 @@ miscTests = do
369373
Editor.undo editor
370374
Editor.redo editor
371375
Editor.destroy editor
372-
376+
373377
Range.isEmpty range
374378
Range.isEqual range range
375379
Range.toString range
@@ -396,18 +400,18 @@ miscTests = do
396400
Range.collapseRows range
397401
Range.toScreenRange session range
398402
Range.fromPoints range range
399-
403+
400404
ScrollBar.getWidth scrollBar
401405
ScrollBar.setHeight 0 scrollBar
402406
ScrollBar.setInnerHeight 0 scrollBar
403407
ScrollBar.setScrollTop 0 scrollBar
404-
408+
405409
Search.find session search
406410
Search.findAll session search
407411
Search.replace "" "" search
408-
412+
409413
selection <- Session.getSelection session
410-
414+
411415
Selection.moveCursorWordLeft selection
412416
Selection.moveCursorWordRight selection
413417
Selection.fromOrientedRange range selection
@@ -453,9 +457,9 @@ miscTests = do
453457
Selection.moveCursorBy 0 0 selection
454458
Selection.moveCursorTo 0 0 Nothing selection
455459
Selection.moveCursorToScreen 0 0 true selection
456-
460+
457461
UndoManager.undo Nothing undoManager
458462
UndoManager.redo true undoManager
459463
UndoManager.reset undoManager
460464
UndoManager.hasUndo undoManager
461-
UndoManager.hasRedo undoManager
465+
UndoManager.hasRedo undoManager

example/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<title>ACE Example</title>
55
<style type="text/css" media="screen">
6-
#editor {
6+
#editor {
77
position: absolute;
88
top: 0;
99
right: 0;
@@ -17,8 +17,8 @@
1717
<div id="editor">// Events will be logged to the console</div>
1818

1919
<div id="tests">Test content</div>
20-
21-
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js" type="text/javascript" charset="utf-8"></script>
20+
21+
<script src="../bower_components/ace-builds/src-min/ace.js" type="text/javascript" charset="utf-8"></script>
2222
<script src="psc.js" type="text/javascript" charset="utf-8"></script>
2323
<script>
2424
PS.Main.main();

src/Ace.purs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module Ace
1+
module Ace
22
( ace
33
, edit
44
, editNode
@@ -20,38 +20,38 @@ foreign import editImpl
2020
\ return function() {\
2121
\ return self.edit(el);\
2222
\ };\
23-
\}" :: forall eff. Fn2 String Ace (Eff (ace :: EAce | eff) Editor)
23+
\}" :: forall eff. Fn2 String Ace (Eff (ace :: ACE | eff) Editor)
2424

25-
edit :: forall eff. String -> Ace -> Eff (ace :: EAce | eff) Editor
25+
edit :: forall eff. String -> Ace -> Eff (ace :: ACE | eff) Editor
2626
edit el self = runFn2 editImpl el self
2727

2828
foreign import editNodeImpl
2929
"function editNodeImpl(el, self) {\
3030
\ return function() {\
3131
\ return self.edit(el);\
3232
\ };\
33-
\}" :: forall eff. Fn2 HTMLElement Ace (Eff (ace :: EAce | eff) Editor)
33+
\}" :: forall eff. Fn2 HTMLElement Ace (Eff (ace :: ACE | eff) Editor)
3434

35-
editNode :: forall eff. HTMLElement -> Ace -> Eff (ace :: EAce | eff) Editor
35+
editNode :: forall eff. HTMLElement -> Ace -> Eff (ace :: ACE | eff) Editor
3636
editNode el self = runFn2 editNodeImpl el self
3737

3838
foreign import createEditSessionForDocumentImpl
3939
"function createEditSessionForDocumentImpl(text, mode, self) {\
4040
\ return function() {\
4141
\ return self.createEditSession(text, mode);\
4242
\ };\
43-
\}" :: forall eff. Fn3 Document TextMode Ace (Eff (ace :: EAce | eff) EditSession)
43+
\}" :: forall eff. Fn3 Document TextMode Ace (Eff (ace :: ACE | eff) EditSession)
4444

45-
createEditSessionForDocument :: forall eff. Document -> TextMode -> Ace -> Eff (ace :: EAce | eff) EditSession
45+
createEditSessionForDocument :: forall eff. Document -> TextMode -> Ace -> Eff (ace :: ACE | eff) EditSession
4646
createEditSessionForDocument text mode self = runFn3 createEditSessionForDocumentImpl text mode self
4747

4848
foreign import createEditSessionImpl
4949
"function createEditSessionImpl(text, mode, self) {\
5050
\ return function() {\
5151
\ return self.createEditSession(text, mode);\
5252
\ };\
53-
\}" :: forall eff. Fn3 String TextMode Ace (Eff (ace :: EAce | eff) EditSession)
53+
\}" :: forall eff. Fn3 String TextMode Ace (Eff (ace :: ACE | eff) EditSession)
5454

55-
createEditSession :: forall eff. String -> TextMode -> Ace -> Eff (ace :: EAce | eff) EditSession
55+
createEditSession :: forall eff. String -> TextMode -> Ace -> Eff (ace :: ACE | eff) EditSession
5656
createEditSession text mode self = runFn3 createEditSessionImpl text mode self
5757

0 commit comments

Comments
 (0)