1
XXX This is a scratch file I used for notes; information may be out of date or random -- dgreenspan
3
- rename ace2.js to ace.js
7
- Highlight JavaScript accurately (including regular expression, etc.)
8
- On large documents (say 2000 lines), be responsive to new input and rehighlight the screen quickly
9
- Highlight "as you type", not when you're done with the current line
10
- Propagate multi-line comment highlighting efficiently
11
- Look and feel as "clean" and "native" as possible to the user
12
- Support unlimited "undo" with arbitrary undo model
13
- Allow features such as auto-indentation and parenthesis-flashing to be added easily
14
- Work in IE 6, FF 2, Safari 3, Camino
15
- Support native copy and paste, within the buffer and with other programs
16
- Not display any flickering, blurring, or any kind of artifact
17
- Support incremental syntax-highlighting of other languages too
18
- Be extensible -- multiple views of whole document, lines, tokens, characters
19
- Support native selection behavior, international input, assistive devices (potentially)
21
- Unlimited editors per page
24
compatibility, speed, power, generality,
30
- show mismatched brackets
33
ace2 changelog for week of 5/9:
34
- full "undo" support! control-Z (Windows) or command-Z (Mac)
35
- flashing parentheses are back, and better than before!
36
- appjet:css sections are syntax-highlighted
37
- optimizations for slower machines
38
- fixed various quirks
39
- lines too long for browser are hard-wrapped on entry
42
== path to calls that change rep
44
- incorporateUserChanges
47
- performDocumentLineSplice
51
- handleReturnIndentation
53
- performDocumentReplaceRange
55
- performDocumentReplaceSelection
58
- incorporateUserChanges
61
- performSelectionChange
65
- handleReturnIndentation
67
- performDocumentReplaceRange
71
make ace2_common local?
78
- speed on slow machines
83
- investigate errors with special "delete" handling turned off
84
- track down FF quirk (delete at begging of line starting with one space)
85
- (done for now: look for IE memory leaks)
91
- FF: delete at beginning of line where line starts with 1 space (space briefly disappears)
92
- IE: clicking below document body clears selection (instead of moving caret)
93
- IE: horizontal scroll-bar sometimes unnecessary
95
- skip-list is slow for insert/delete lines on highlighting
96
- return at bottom of 3000-line file takes too long to normalize in Firefox (probably worse in IE)
98
- regular expression highlighting not smart in lexically ambiguous cases (should use previous token)
100
+ additional features
101
- less zealous IDE document-dirty marking (e.g. arrow-key marks dirty)
104
- bring back rich shell editor
105
- use same highlighting for view-source, highlight on server
106
- highlight CSS and stuff
110
- does tab do the right thing?
112
- quirk: return key doesn't scroll caret into view
114
- highlight appjet directives
116
- slightly smarter indentation
117
- tab deletes until a stop
118
- interface: import/export
119
- interface: rich/plain
120
- bugfix: IE: return, delete, etc. doesn't mark document dirty!
121
- bugfix: IE: can't copy/paste within document
122
- caret not always in view after an edit
126
Highlighting strategy:
127
- allow incremental dirty-region highlighting, based on time and char to pass
128
- first lex the viewport, based on information extending a little before it
129
- then highlight the viewport
130
- then highlight around the viewport?
131
- lex the whole document from the top
132
- highlight lines outside the viewport
138
- deal with key events in relation to when they are responded to (doLater after all?)
141
- handle international characters (fragile DOM state)
142
- normalize only when idle (make sure that works)
143
- better detection, e.g. paste in Safari
144
- selectionchange event?
146
- can eventually allow discarding user changes!
149
- editing when lines consist of spans
150
- all browsers: scroll to full left on return, etc
151
- why does IE let you type without firing events?
155
- type some stuff, return, type more stuff, return
156
- return repeatedly starting at end of line, delete repeatedly
157
- return repeatedly starting at beginning of line, delete repeatedly
158
- return repeatedly starting in middle of line, delete repeatedly
159
- return/delete starting between blank lines
160
- try to move past end of document, then try to type, then try to move
161
- from collapsed selection, shift-left repeatedly, across lines, shift-right repeatedly
162
- from collapsed selection, shift-right repeatedly, across lines, shift-left repeatedly
163
- shift-up, shift-down; shift-down, shift-up
164
- cut-and-paste span of characters into middle of line
165
- cut-and-paste span of characters into blank line (FF)
166
- cut-and-paste span of characters at end of line (FF)
167
- cut-and-paste selection with blank lines in it, make sure lines still blank
168
- cut-and-paste selection starting and ending with blank lines (IE, FF)
169
- doc with blank lines, select-all, cut, paste
170
- doc starting and ending in blank lines, select-all, cut, paste (IE, Firefox)
171
- IE currently loses one blank line at end if > 0
172
- Safari loses one blank line at end if > 1
173
- non-empty doc, select-all, delete, select-all, delete (IE crash, Safari hidden cursor)
174
- non-empty doc select-all, return, return, return (IE)
175
- on last line of document: type stuff, return, type stuff. down arrow goes down = bad (IE)
176
- on last line of document: type stuff, return, return. should be no extra lines (IE)
177
- go to start of next-to-last line, shift-down, cut (IE)
178
- cursor at start of line, shift-down, cut, paste (IE cursor jump)
179
- cursor at start of one empty line, shift-down, cut, paste (IE)
180
- cursor at start of two empty lines, shift-down, cut, paste (IE, FF)
181
- on IE, no new line is pasted; default behavior is worse, so I'll take it
182
- on FF, the equivalent of two returns; good enough
183
- cursor at start of two empty lines, shift-down, cut, paste in middle of line (IE, FF)
184
- in IE, FF, Safari, the equivalent of two returns
185
- type letter on blank line, delete it (IE)
186
- type space on blank line, delete it (IE)
187
- type space before non-blank line, delete it
188
- delete blank line, then delete again quickly
189
- delete blank line from caret at start of line starting with one space (FF)
190
- type over selection from middle of one line to middle of next
192
- in middle of a word (span), quickly delete, then type a character, then delete (IE)
193
- paste text with blank lines from an external source
195
- up arrow from beginning of line (WebKit)