52cb5f9456
Improved Rope's text insertion performance for large insertion strings.
2015-02-21 11:16:21 -08:00
0bc809781d
WIP: fixes for long line support.
2015-02-15 23:23:17 -08:00
6eed3fcc74
Improved file load times.
...
There was a regression after switching to ropes. Now it's pretty much
back to pre-rope load times.
2015-02-15 20:15:19 -08:00
e1c9a6955d
Lines now internally use ropes to store their text.
...
The rope uses a large leaf-node text length, so in the vast majority of
cases this ends up being the same as directly storing the string data.
But in the case that the line becomes extremely long, this will allow
for reasonable performance
2015-02-15 14:56:56 -08:00
e9462e4400
Silencing some rustc warnings.
2015-02-07 19:55:25 -08:00
e29777e33c
Improved file loading.
...
File loading is now the responsibility of the Buffer, which allows
it to do some weird internal stuff to make it faster.
Also, using custom code for scanning the text, so all line endings
are handled now, not just LF and CRLF.
2015-02-01 23:17:43 -08:00
8701ebbba7
Tweaked code to avoid warnings from latest rustc compiler.
2015-01-29 21:03:56 -08:00
352e5370ce
Fully updated unit tests. All passing again.
2015-01-25 13:28:04 -08:00
c69ebc240f
WIP: making Buffers so they can be given LineFormatters.
...
A LineFormatter determines how a line of text is visually displayed in
2d space. This allows both the Console and GUI version of the editor
to share the same buffer code whilst still handling the differing ways
in which both handle visual display.
2015-01-24 14:35:49 -08:00
8fd1659292
Better unit test hygiene, and renamed buffer len() to grapheme_count().
2015-01-10 11:48:20 -08:00
b837d488a5
Basic undo functionality.
2015-01-09 22:02:32 -08:00
0fb338f05b
Updated code to compile with Rust 1.0 alpha.
2015-01-09 18:50:27 -08:00
2785c3821b
Updated code to compile with the most recent Rust nightly.
2015-01-04 16:29:19 -08:00
ff6c763821
Soft tabs and user-settable tab-widths are now supported.
...
Also, indentation style is automatically detected on file load.
2015-01-04 00:09:34 -08:00
0941339906
Basic line-ending detection when opening files.
...
Buffers now store what line-ending type they consider themselves to be,
and the ui uses that when adding new lines while editing.
2015-01-03 15:15:14 -08:00
940068a4dd
Fixed some bugs relating to text and cursor printing.
2015-01-02 16:47:17 -08:00
fc78fbeb3e
Non-uniform-width characters are now properly handled (modulo bugs).
2015-01-02 15:05:21 -08:00
74edf72cde
First attempt at support for variable-width graphemes.
...
Doesn't completely work, but it's on the right track.
2015-01-01 17:35:34 -08:00
a205dce9dd
Added unit tests for Line::new_from_string_unchecked().
2015-01-01 13:25:10 -08:00
378012d799
Fixed bug in file loading where line text would still contain line endings.
2015-01-01 13:16:33 -08:00
7099e4d0d3
Sped up file loading and saving.
2015-01-01 13:14:32 -08:00
cb5b79ec9c
Changed editor drawing to use line iterators.
...
This makes the code easier to follow, and will make it easier to
accomodate non-uniform width graphenes later on.
2014-12-31 20:19:12 -08:00
28a4da97a7
More WIP remove_text().
2014-12-31 13:15:58 -08:00
720246142e
WIP refactor: text can now be inserted into empty buffers.
2014-12-30 22:55:23 -08:00
c88ba48b6d
WIP refactor: change text buffer to use the Line struct for storing text.
...
Most of the UI and editor code is either commented out or not included
in the compile right now. This is temporary while I get the basic
text code working again.
2014-12-29 16:17:53 -08:00