Commit Graph
100 Commits
Author SHA1 Message Date
josh 8c834c9d7c start to do some cursor movement again 2016-12-21 21:11:29 -05:00
josh 08dab099a7 add BufferPane::walk_line() to commonize logic for laying out a line to the screen 2016-12-21 19:43:54 -05:00
josh 24fced221f start re-implementing BufferPane::draw_buffer_line() 2016-12-21 19:23:39 -05:00
josh 83d4a86e4b fix BufferPane::rows_in_line_with_iterator_offset() comparing to reference iterator 2016-12-21 19:07:28 -05:00
josh 9733d577a7 take into account tab characters when counting line row heights 2016-12-21 18:36:47 -05:00
josh f7d0c8189a fix BufferPane::screen_rows_below_line() while loop 2016-12-21 18:18:19 -05:00
josh 1486cdf7f4 update BufferPane::update_cursor_row() in preparation for drawing again 2016-12-20 23:24:06 -05:00
josh 975b7763a8 add two more BufferPane utility functions to calculate available screen rows before and after the cursor line 2016-12-20 23:07:00 -05:00
josh cf4723854e add some utility functions in preparation for drawing screen with multi-column characters 2016-12-20 23:01:30 -05:00
josh bc3309a328 Prepare for screen drawing again after Cursor removal.
Add BufferPane::character_width() to handle multi-column characters.
2016-12-20 20:22:19 -05:00
josh 6b27fafb26 test no EOL at EOF with CRLF-formatted files 2016-12-18 19:52:41 -05:00
josh e78a3672c5 improve GapBuffer test coverage 2016-12-18 19:20:48 -05:00
josh 24eb47b0ad do not echo coverage-generating commands 2016-12-18 19:04:19 -05:00
josh 71920ddbcb generate HTML coverage reports for unit tests 2016-12-18 16:09:06 -05:00
josh 82036458e6 build unit tests with --coverage 2016-12-18 15:34:03 -05:00
josh fc10da76e7 Build main application and test suite separately from make targets 2016-12-18 15:22:17 -05:00
josh 968db413e6 Remove Cursor and move line-tracking into Iterator 2016-12-18 14:51:52 -05:00
josh 39088f6518 Add output parameter to Encoding::decode() to get encoded size 2016-12-17 10:54:50 -05:00
josh ee37616f82 Give BufferPane a reference to a Window 2016-12-13 21:48:04 -05:00
josh 659a64b367 add Window::request_redraw() 2016-12-11 20:39:02 -05:00
josh 1232539495 Move buffer-related keypress handling from Window to BufferPane 2016-12-11 20:29:15 -05:00
josh bd1d5adfab add enum type 2016-12-11 20:18:10 -05:00
josh 3422df51d6 BufferPane: replace colrow_to_xy() with col_x() and row_y() 2016-12-11 19:58:16 -05:00
josh 129716e28f Draw cursor again 2016-12-11 15:58:31 -05:00
josh 3d57b03af7 fix infinite loop drawing an empty buffer 2016-12-11 15:48:22 -05:00
josh a2b2156016 Move encoding and tabstop out of Iterator/Cursor classes 2016-12-11 15:32:05 -05:00
josh f41b59aa81 remove a few unused Iterator/Cursor interfaces 2016-12-11 15:23:39 -05:00
josh 9b6b21a1d0 Move Iterator and Cursor classes into Buffer class. 2016-12-11 15:17:15 -05:00
josh b880397b7e Split up Cursor module into BufferIterator / BufferCursor 2016-12-11 14:00:15 -05:00
josh 6f244e5c8f Add unit tests for GapBuffer and fix an insert() bug. 2016-12-07 23:37:52 -05:00
josh 595d74c8c4 update documentation for GapBuffer 2016-12-07 23:27:36 -05:00
josh be67996d04 remove unused includes from GapBuffer.h 2016-12-07 23:10:57 -05:00
josh 1b6038a3cd remove tabstop from GapBuffer 2016-12-07 23:09:06 -05:00
josh 5f3831965e remove encoding from GapBuffer 2016-12-07 23:05:38 -05:00
josh 3784b89ca9 remove knowledge of Cursor from GapBuffer 2016-12-07 23:01:03 -05:00
josh 7384128d40 remove more logic from GapBuffer 2016-12-07 22:56:08 -05:00
josh 41c65f2dd9 Begin more refactoring to shrink GapBuffer class 2016-12-07 22:47:33 -05:00
josh 6c8e860fb5 Test that files consisting of just 1 or 2 newline characters are written correctly 2016-12-07 22:20:41 -05:00
josh 085a8a556a allow loading a Buffer from in-memory data 2016-11-30 21:21:19 -05:00
josh 95884a2b85 add Buffer::insert() alias for GapBuffer::insert() 2016-11-30 21:07:57 -05:00
josh f14db217d2 add Buffer::Cursor type alias for GapBuffer::Cursor 2016-11-30 21:06:59 -05:00
josh e57c71855a add Buffer::get_string() and GapBuffer::get_string() 2016-11-27 18:54:03 -05:00
josh 1404c33a46 insert at a cursor position; adjust all cursors after inserting 2016-11-27 17:51:16 -05:00
josh 915d62ceef add GapBuffer::insert() 2016-11-27 17:24:59 -05:00
josh 8631a94a2b Add BufferStatusPane
move status bar drawing logic from Window to BufferStatusPane
2016-11-27 13:56:58 -05:00
josh 8bffc05f09 add a BufferPane class to hold logic for rendering a buffer 2016-11-27 13:17:20 -05:00
josh fa8872bcda move gl3w-related sources to src/gui/gl3w 2016-11-26 15:30:25 -05:00
josh ddbd78b5be draw last character of line 2016-11-26 15:28:58 -05:00
josh 21e65d95f9 variable rename 2016-11-25 10:56:46 -05:00
josh 289af1b8c7 draw status bar again 2016-11-25 09:53:54 -05:00
josh 3f573cac40 move GL logic to new GL module 2016-11-25 09:53:54 -05:00
josh 59ce578415 rename src/gui/Shaders -> src/gui/gl 2016-11-25 09:09:28 -05:00
josh 1e40243664 add temporary buffer drawing with gap buffer before GUI code refactoring 2016-11-25 08:57:46 -05:00
josh 1e2aae4136 start on gap buffer drawing 2016-11-09 23:08:33 -05:00
josh b4ae0d5377 rows and columns must be >= 1 2016-11-09 22:51:10 -05:00
josh afd584566c avoid empty screen rows if there is buffer content to fill them 2016-11-09 22:43:04 -05:00
josh 74b9421f30 Window: add a cursor 2016-11-09 21:40:11 -05:00
josh abb11a0b8c Fix cursor go_up()/go_down(), turn on unit tests 2016-11-07 22:42:54 -05:00
josh 5c9f7a7645 turn on tests for Buffer::write_to_file() 2016-11-07 22:36:32 -05:00
josh d5e3fdf919 implement Buffer::write_to_file() 2016-11-07 22:34:10 -05:00
josh 18f3af443e add GapBuffer::compact() 2016-11-07 22:18:56 -05:00
josh b532e80ac8 add Cursor::address() 2016-11-07 22:15:29 -05:00
josh 940165a78f add Cursor::operator*() 2016-11-07 22:12:18 -05:00
josh 07eca3268c Make optional whether go_right() allows going to EOL 2016-11-06 14:39:34 -05:00
josh 8d19b23597 Add Cursor::go_up() and go_down()
They currently allow going to EOL
2016-11-06 14:28:56 -05:00
josh 9dee74d18b Rename iterator movement functions 2016-11-06 14:04:38 -05:00
josh 1db3853dab Implement Cursor go_start_of_line()/go_end_of_line() 2016-11-03 19:50:00 -04:00
josh 37ad814b53 begin working on Cursor movement routines 2016-11-02 23:30:12 -04:00
josh e545336c51 Add checking versions of iterator movement functions 2016-11-02 21:27:13 -04:00
josh dcba852712 add GapBuffer::Iterator::operator*() 2016-11-02 21:16:20 -04:00
josh 35b35cb2f1 Implement GapBuffer::Iterator movement functions 2016-11-02 21:11:09 -04:00
josh 7d87de4bf1 Begin adding GapBuffer::Iterator and GapBuffer::Cursor 2016-11-02 20:55:40 -04:00
josh a865ff0163 pass encoding to GapBuffer 2016-11-02 20:36:35 -04:00
josh 2598b10e36 change Span length from uint32_t to size_t 2016-11-01 23:08:03 -04:00
josh 739fc1b2a7 remove unused header 2016-11-01 23:06:09 -04:00
josh 42d850a4db add a gap position to GapBuffer 2016-11-01 23:03:53 -04:00
josh 1c62e41b26 GapBuffer takes separate buffer_size and size parameters 2016-11-01 22:49:35 -04:00
josh 0cbc36c5ff change Buffer to start using GapBuffer 2016-11-01 22:46:44 -04:00
josh 444653822e start on GapBuffer class 2016-11-01 22:18:44 -04:00
josh fbca1f995a remove PieceTable 2016-11-01 21:44:01 -04:00
josh 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
josh 1f3ecf950f draw cursor at end of line when in insert mode 2016-10-29 15:33:59 -04:00
josh 65dea7f84f draw cursor skinner in insert mode 2016-10-29 15:11:42 -04:00
josh 16029506c7 redraw screen when entering insert mode 2016-10-29 15:06:21 -04:00
josh a268c673fa re-calculate cursor column for all cursors on any insertion 2016-10-29 15:05:43 -04:00
josh 35ff48c38f place cursor after currently-inserting piece
cursor currently is not updating while inserting
2016-10-29 12:06:58 -04:00
josh 239da4962e change to CTRL+q to quit for now 2016-10-29 11:02:28 -04:00
josh 752d5b2071 insert key values as code points in insert mode 2016-10-29 09:12:50 -04:00
josh fe64622762 Create empty inserting piece when entering insert mode 2016-10-29 09:07:48 -04:00
josh 827f4efdd9 handle keys based on code point with modifier flags 2016-10-29 01:51:16 -04:00
josh fa752fefde begin reworking keyboard handling 2016-10-29 01:40:27 -04:00
josh 7ba7abc029 keep track of current keymod 2016-10-29 00:43:25 -04:00
josh e5c4ee00c0 test return values from check_go_*() cursor movement functions 2016-10-28 21:56:04 -04:00
josh 9756519f13 Fix PieceTable::Cursor::prev_line and next_line to support empty pieces 2016-10-28 21:51:51 -04:00
josh 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
josh 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
josh cd44deda9e add Iterator::piece_eol() 2016-10-26 20:46:50 -04:00
josh 8432e7f4b7 update comparison operators for Iterator/Cursor 2016-10-26 20:43:39 -04:00
josh 523eba81f5 update Window initial size to 800x800 for now 2016-10-25 21:31:12 -04:00
josh 66105dc88f Separate PieceTable::Cursor::go_*() into go_*() and check_go_*() 2016-10-25 21:13:47 -04:00