111 Commits

Author SHA1 Message Date
9dee74d18b Rename iterator movement functions 2016-11-06 14:04:38 -05:00
1db3853dab Implement Cursor go_start_of_line()/go_end_of_line() 2016-11-03 19:50:00 -04:00
37ad814b53 begin working on Cursor movement routines 2016-11-02 23:30:12 -04:00
e545336c51 Add checking versions of iterator movement functions 2016-11-02 21:27:13 -04:00
dcba852712 add GapBuffer::Iterator::operator*() 2016-11-02 21:16:20 -04:00
35b35cb2f1 Implement GapBuffer::Iterator movement functions 2016-11-02 21:11:09 -04:00
7d87de4bf1 Begin adding GapBuffer::Iterator and GapBuffer::Cursor 2016-11-02 20:55:40 -04:00
a865ff0163 pass encoding to GapBuffer 2016-11-02 20:36:35 -04:00
2598b10e36 change Span length from uint32_t to size_t 2016-11-01 23:08:03 -04:00
739fc1b2a7 remove unused header 2016-11-01 23:06:09 -04:00
42d850a4db add a gap position to GapBuffer 2016-11-01 23:03:53 -04:00
1c62e41b26 GapBuffer takes separate buffer_size and size parameters 2016-11-01 22:49:35 -04:00
0cbc36c5ff change Buffer to start using GapBuffer 2016-11-01 22:46:44 -04:00
444653822e start on GapBuffer class 2016-11-01 22:18:44 -04:00
fbca1f995a remove PieceTable 2016-11-01 21:44:01 -04:00
65468bd2e5 Change TextLoader for gap buffer approach
- for CR line endings, convert all CR to LF
- for CRLF line endings, convert all CRLF to LF
2016-11-01 20:53:54 -04:00
a268c673fa re-calculate cursor column for all cursors on any insertion 2016-10-29 15:05:43 -04:00
35ff48c38f place cursor after currently-inserting piece
cursor currently is not updating while inserting
2016-10-29 12:06:58 -04:00
fe64622762 Create empty inserting piece when entering insert mode 2016-10-29 09:07:48 -04:00
9756519f13 Fix PieceTable::Cursor::prev_line and next_line to support empty pieces 2016-10-28 21:51:51 -04:00
878b9aaf34 Make Cursor::is_start_of_line() and Cursor::is_end_of_line() safe for empty pieces 2016-10-26 22:03:28 -04:00
fd6ef8cab0 Make Cursor::go_start_of_line() and Cursor::go_end_of_line() safe for empty pieces 2016-10-26 21:20:42 -04:00
cd44deda9e add Iterator::piece_eol() 2016-10-26 20:46:50 -04:00
8432e7f4b7 update comparison operators for Iterator/Cursor 2016-10-26 20:43:39 -04:00
66105dc88f Separate PieceTable::Cursor::go_*() into go_*() and check_go_*() 2016-10-25 21:13:47 -04:00
ef717faa16 fix Buffer::write_to_file() to preserve EOLs correctly 2016-10-25 20:47:54 -04:00
1f59e4d042 update PieceTable::Iterator to allow empty pieces 2016-10-25 20:36:08 -04:00
b9c23084be shrink up the Change structure a bit 2016-10-18 21:53:18 -04:00
14a3c17835 remove unused Change::insert field 2016-10-15 20:02:52 -04:00
c6a8d1597e insert-after-char should insert-before-char if char is EOL marker 2016-10-15 18:40:36 -04:00
261cc9abf8 adjust cursor movement to optionally allow moving to EOL 2016-10-15 18:07:58 -04:00
4ebe81c062 remove EOL Piece flag; use \n in memory to represent EOL
(cursor movement needs to be updated yet)
2016-10-15 09:42:38 -04:00
85ab570ce5 remove some unused parameters 2016-10-14 22:22:21 -04:00
4d5e3dc0ea continued insertion testing, not sure i like this method 2016-10-08 16:59:11 -04:00
ac439d30bc add Encoding::encode() 2016-10-06 20:45:16 -04:00
fdabf4432a add Encoding::num_bytes_to_encode_code_point() 2016-10-05 23:10:41 -04:00
99bbe81f6b add PieceTable::begin_insert() 2016-10-05 22:47:08 -04:00
807eba4448 avoid segfault when undoing to get back to empty buffer 2016-10-05 21:40:08 -04:00
fe9747390a Add PieceTable::apply_change() and an initial undo 2016-09-26 22:54:19 -04:00
5b662b63e0 add PieceTable::apply_change() 2016-09-26 22:34:29 -04:00
249fd87067 introduce a PieceTable::Change structure to record changes 2016-09-26 22:30:41 -04:00
c2c0d6f042 add a piece table insertion test 2016-09-25 23:01:59 -04:00
bc4c5b5c98 fix PieceTable::Cursor::next_line() 2016-09-25 22:58:13 -04:00
6e5489c88e do not allow cursor movements for non-valid cursors 2016-09-13 23:16:23 -04:00
f876b68bd0 Add cursor movements to move to SOL and EOL. 2016-09-07 22:31:24 -04:00
86246385d4 Draw text based on new cursor movement system
The cursor row still locked to the first row for now
2016-09-06 21:05:24 -04:00
33a190c495 complete cursor movement routines taking Encoding and tabs into account 2016-08-27 21:38:48 -04:00
b478d17e16 add Interator and Cursor constructors 2016-08-27 15:43:35 -04:00
d6b3810a3c Split some PieceTable::Cursor functionality into PieceTable::Iterator 2016-08-27 15:20:08 -04:00
f659c14242 add Encoding::decode() 2016-08-15 22:14:47 -04:00