70 Commits

Author SHA1 Message Date
c3852e950a Add Buffer::erase_range() 2017-11-17 16:58:28 -05:00
add43beb92 fix bug counting lines to adjust iterators by in Buffer::lines_in_data() 2017-01-28 12:23:58 -05:00
2ae1d72d6a Buffer::filename() returns shared_ptr to string 2017-01-27 20:50:15 -05:00
13ca7afd0c Buffer::get_string() returns an EncodedString 2017-01-21 14:15:54 -05:00
276c756bb7 fix Buffer::clear() to update iterators 2017-01-18 22:51:33 -05:00
08529fc115 keep cursors off newlines after applying change operations when not in insert mode 2017-01-15 21:44:57 -05:00
2e2cdfdb81 bug fix: when applying change operations in reverse, apply their change units in reverse order 2017-01-15 20:58:18 -05:00
4e03fbc3de fix bug of undo/redo creating new change operations themselves 2017-01-15 20:33:37 -05:00
3b1bea80aa fix bug dealing with coalescing erase change units within one change operation 2017-01-15 20:23:09 -05:00
e98454c771 add unit tests for buffer insert/erase character 2017-01-15 19:46:33 -05:00
2c633a9ddb add TODO for supporting undo tree 2017-01-11 22:53:19 -05:00
f1815d04d9 do not attempt to redo past the last available operation 2017-01-11 22:53:19 -05:00
cac339a9f2 do not store a change operation with no change units 2017-01-11 22:53:19 -05:00
2057c69585 add Buffer::{undo,redo}() 2017-01-11 22:18:02 -05:00
e0615011a3 add Buffer::apply_change_{operation,unit}() for undo/redo 2017-01-11 21:55:59 -05:00
fca838fcbf fix problem of record_change() not receiving contiguous range by using GapBuffer::copy_to() 2017-01-09 22:11:08 -05:00
5de13644de add Buffer::INVALID_CHANGE_OPERATION_INDEX 2017-01-09 21:46:52 -05:00
f3753be4eb refactor Buffer insert and delete operations
add Buffer functions to insert/erase data chunks
2017-01-09 21:34:16 -05:00
904ac01a1c record the parent ID of each change operation 2017-01-07 16:22:42 -05:00
5f37229c19 when adjusting cursor iterators, always keep them valid 2017-01-07 16:22:28 -05:00
924d005020 Buffer: refactor common iterator warping code into warp_iterators() 2017-01-07 14:15:46 -05:00
38a734b5c1 Save change operations 2017-01-07 13:56:10 -05:00
348d11e992 Buffer: allow insert_code_point() to be called outside of insert mode 2017-01-07 13:22:05 -05:00
21320d9ea7 Begin recording all buffer changes to prepare for undo tree 2017-01-07 13:19:49 -05:00
a8b39f8884 Fix text insertion point not following cursor
Always supply iterator position when inserting code points
2017-01-05 21:21:38 -05:00
929bda355f add an EOF iterator to track the end of the file and number of lines 2016-12-28 13:03:38 -05:00
64ed3174ac record buffer filename 2016-12-27 20:10:58 -05:00
38d615ecc4 insert a \n to follow new content when inserting into an empty buffer 2016-12-27 15:10:45 -05:00
723b96f624 fix insert position when erasing a code point in insert mode 2016-12-27 14:07:46 -05:00
64a09fca0f add Buffer::erase_code_point() 2016-12-26 14:01:24 -05:00
cadd5bac36 Warp all cursors at/after the insert point when inserting a code point 2016-12-26 08:56:36 -05:00
e3f156c513 add Buffer::insert_code_point() 2016-12-24 15:35:06 -05:00
099ea267d6 add Buffer functions to enter/exit/query insert mode 2016-12-24 15:31:23 -05:00
e78a3672c5 improve GapBuffer test coverage 2016-12-18 19:20:48 -05:00
968db413e6 Remove Cursor and move line-tracking into Iterator 2016-12-18 14:51:52 -05:00
a2b2156016 Move encoding and tabstop out of Iterator/Cursor classes 2016-12-11 15:32:05 -05:00
9b6b21a1d0 Move Iterator and Cursor classes into Buffer class. 2016-12-11 15:17:15 -05:00
b880397b7e Split up Cursor module into BufferIterator / BufferCursor 2016-12-11 14:00:15 -05:00
1b6038a3cd remove tabstop from GapBuffer 2016-12-07 23:09:06 -05:00
5f3831965e remove encoding from GapBuffer 2016-12-07 23:05:38 -05:00
7384128d40 remove more logic from GapBuffer 2016-12-07 22:56:08 -05:00
41c65f2dd9 Begin more refactoring to shrink GapBuffer class 2016-12-07 22:47:33 -05:00
085a8a556a allow loading a Buffer from in-memory data 2016-11-30 21:21:19 -05:00
d5e3fdf919 implement Buffer::write_to_file() 2016-11-07 22:34:10 -05:00
a865ff0163 pass encoding to GapBuffer 2016-11-02 20:36:35 -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
fbca1f995a remove PieceTable 2016-11-01 21:44:01 -04:00
ef717faa16 fix Buffer::write_to_file() to preserve EOLs correctly 2016-10-25 20:47:54 -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