Commit Graph

71 Commits

Author SHA1 Message Date
d80586e262 Fixed bug in cursor movement code that would result in crashes. 2015-01-11 11:36:34 -08:00
9156f5cf47 Passing a filename that doesn't exist will now open a buffer that will be saved to a new file of that name. 2015-01-11 01:25:23 -08:00
d6e28b02a3 Fixed some warnings. 2015-01-11 01:16:21 -08:00
d02459f647 Undo/redo should mark buffer as dirty. 2015-01-11 01:04:24 -08:00
f56d3f0ad4 Split remove_text() into remove_text_before() and remove_text_after().
This is useful so that undo knows where to put the cursor.
2015-01-11 00:59:02 -08:00
b31903e838 Updated todo file. 2015-01-11 00:30:58 -08:00
dfcf9fc6a5 A simple implementation of move_text.
This should probably be replaced by a more efficient implementation in
the future, as this version will be slow and require large allocations
when moving large pieces of text.  But let's wait and see if it's a
problem in practice first.
2015-01-11 00:26:39 -08:00
8a51a796ce Stub and unit tests for a move_text implementation. 2015-01-11 00:16:59 -08:00
f8cf8e620b Moved tab_width to Buffer, and misc cleanup related to that. 2015-01-10 23:42:59 -08:00
8b1f1b1e96 Renamed and documented the buffer position conversion functions. 2015-01-10 16:34:28 -08:00
6b5b63dba1 Added full undo/redo functionality. 2015-01-10 12:29:58 -08:00
e61149e514 Organized the code in buffer/mode.rs a bit more nicely. 2015-01-10 12:02:29 -08:00
8fd1659292 Better unit test hygiene, and renamed buffer len() to grapheme_count(). 2015-01-10 11:48:20 -08:00
1ca7885105 Updated todo file. 2015-01-09 23:16:00 -08:00
6c659a17dc Switched undo stack to use a linked list instead of a vector.
This makes sure there aren't pathological cases where the user has been
typing for a very long time, and the undo stack needs to change capacity.
2015-01-09 22:40:41 -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
f760d6078d Added jump-to-line functionality and fixed some display bugs. 2015-01-03 13:09:12 -08:00
a85a3bf8fa Added status/info line at top of terminal UI. 2015-01-02 17:41:08 -08:00
250a1f94ef Implemented delete key. 2015-01-02 16:52:29 -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
02fdbcf027 Files loading/saving is working again. 2014-12-31 20:36:23 -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
49b34e78d5 Got basic editing functionality up and running again after the refactor. 2014-12-31 18:39:01 -08:00
71913eed31 Got grapheme iterators and 1d/2d position translation working. 2014-12-31 17:55:20 -08:00
95d6d3fd3e Got remove_text() working.
At least, based on the unit tests so far.
2014-12-31 17:05:24 -08:00
28a4da97a7 More WIP remove_text(). 2014-12-31 13:15:58 -08:00
0794d5c6ec WIP remove_text() 2014-12-31 01:20:51 -08:00
f0f6980b6d Added a bunch more tests for Buffer, and fixed line removal code. 2014-12-31 00:31:42 -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
370d8a315e WIP refactor: changing internal text representation to be line-based.
This will make some of the internals a little more complex, but should
simplify things on the balance.
2014-12-28 20:53:25 -08:00
e3e2c866b9 We now store character widths in TextBlocks.
This is the first step towards supporting proportional fonts
and tabs characters.
2014-12-28 13:44:38 -08:00
9e35085573 Fixed some minor behavior problems in cursor movement and pageup/pagedown. 2014-12-27 17:01:57 -08:00
97e1259feb Updated todo file. 2014-12-27 16:28:02 -08:00
eb035b66c7 Added pageup/pagedown functionality. 2014-12-27 16:11:00 -08:00
4d68a36070 Updated todo file. 2014-12-27 14:05:59 -08:00
74cd79745f Scrolling in the editor by following the cursor now works. 2014-12-27 13:59:41 -08:00
833e92c5a0 Added a some text manipulation methods, and made backspace work properly. 2014-12-26 21:03:13 -08:00
c1c33ae618 Minor fix for cursor movement. 2014-12-26 19:37:55 -08:00
bf099d0f6d Basic cursor movement is now working properly. 2014-12-26 19:29:52 -08:00
5105622dcb Fixed bug in pos_2d_to_closest_1d() code. 2014-12-26 17:49:42 -08:00