Commit Graph

  • b880397b7e Split up Cursor module into BufferIterator / BufferCursor josh 2016-12-11 14:00:15 -05:00
  • 6f244e5c8f Add unit tests for GapBuffer and fix an insert() bug. josh 2016-12-07 23:37:52 -05:00
  • 595d74c8c4 update documentation for GapBuffer josh 2016-12-07 23:27:36 -05:00
  • be67996d04 remove unused includes from GapBuffer.h josh 2016-12-07 23:10:57 -05:00
  • 1b6038a3cd remove tabstop from GapBuffer josh 2016-12-07 23:09:06 -05:00
  • 5f3831965e remove encoding from GapBuffer josh 2016-12-07 23:05:38 -05:00
  • 3784b89ca9 remove knowledge of Cursor from GapBuffer josh 2016-12-07 23:01:03 -05:00
  • 7384128d40 remove more logic from GapBuffer josh 2016-12-07 22:56:08 -05:00
  • 41c65f2dd9 Begin more refactoring to shrink GapBuffer class josh 2016-12-07 22:47:33 -05:00
  • 6c8e860fb5 Test that files consisting of just 1 or 2 newline characters are written correctly josh 2016-12-07 22:20:41 -05:00
  • 085a8a556a allow loading a Buffer from in-memory data josh 2016-11-30 21:21:19 -05:00
  • 95884a2b85 add Buffer::insert() alias for GapBuffer::insert() josh 2016-11-30 21:07:57 -05:00
  • f14db217d2 add Buffer::Cursor type alias for GapBuffer::Cursor josh 2016-11-30 21:06:59 -05:00
  • e57c71855a add Buffer::get_string() and GapBuffer::get_string() josh 2016-11-27 18:54:03 -05:00
  • 1404c33a46 insert at a cursor position; adjust all cursors after inserting josh 2016-11-27 17:51:16 -05:00
  • 915d62ceef add GapBuffer::insert() josh 2016-11-27 17:24:59 -05:00
  • 8631a94a2b Add BufferStatusPane josh 2016-11-27 13:56:58 -05:00
  • 8bffc05f09 add a BufferPane class to hold logic for rendering a buffer josh 2016-11-27 13:17:20 -05:00
  • fa8872bcda move gl3w-related sources to src/gui/gl3w josh 2016-11-26 15:30:25 -05:00
  • ddbd78b5be draw last character of line josh 2016-11-26 15:28:58 -05:00
  • 21e65d95f9 variable rename josh 2016-11-25 10:56:46 -05:00
  • 289af1b8c7 draw status bar again josh 2016-11-25 09:51:06 -05:00
  • 3f573cac40 move GL logic to new GL module josh 2016-11-25 09:44:53 -05:00
  • 59ce578415 rename src/gui/Shaders -> src/gui/gl josh 2016-11-25 09:09:28 -05:00
  • 1e40243664 add temporary buffer drawing with gap buffer before GUI code refactoring josh 2016-11-25 08:57:46 -05:00
  • 1e2aae4136 start on gap buffer drawing josh 2016-11-09 23:08:33 -05:00
  • b4ae0d5377 rows and columns must be >= 1 josh 2016-11-09 22:51:10 -05:00
  • afd584566c avoid empty screen rows if there is buffer content to fill them josh 2016-11-09 22:43:04 -05:00
  • 74b9421f30 Window: add a cursor josh 2016-11-09 21:40:11 -05:00
  • abb11a0b8c Fix cursor go_up()/go_down(), turn on unit tests josh 2016-11-07 22:42:54 -05:00
  • 5c9f7a7645 turn on tests for Buffer::write_to_file() josh 2016-11-07 22:36:32 -05:00
  • d5e3fdf919 implement Buffer::write_to_file() josh 2016-11-07 22:34:10 -05:00
  • 18f3af443e add GapBuffer::compact() josh 2016-11-07 22:18:56 -05:00
  • b532e80ac8 add Cursor::address() josh 2016-11-07 22:15:29 -05:00
  • 940165a78f add Cursor::operator*() josh 2016-11-07 22:12:18 -05:00
  • 07eca3268c Make optional whether go_right() allows going to EOL josh 2016-11-06 14:39:34 -05:00
  • 8d19b23597 Add Cursor::go_up() and go_down() josh 2016-11-06 14:28:56 -05:00
  • 9dee74d18b Rename iterator movement functions josh 2016-11-06 14:04:38 -05:00
  • 1db3853dab Implement Cursor go_start_of_line()/go_end_of_line() josh 2016-11-03 19:50:00 -04:00
  • 37ad814b53 begin working on Cursor movement routines josh 2016-11-02 23:30:12 -04:00
  • e545336c51 Add checking versions of iterator movement functions josh 2016-11-02 21:27:13 -04:00
  • dcba852712 add GapBuffer::Iterator::operator*() josh 2016-11-02 21:16:20 -04:00
  • 35b35cb2f1 Implement GapBuffer::Iterator movement functions josh 2016-11-02 21:11:09 -04:00
  • 7d87de4bf1 Begin adding GapBuffer::Iterator and GapBuffer::Cursor josh 2016-11-02 20:54:58 -04:00
  • a865ff0163 pass encoding to GapBuffer josh 2016-11-02 20:36:35 -04:00
  • 2598b10e36 change Span length from uint32_t to size_t josh 2016-11-01 23:08:03 -04:00
  • 739fc1b2a7 remove unused header josh 2016-11-01 23:06:09 -04:00
  • 42d850a4db add a gap position to GapBuffer josh 2016-11-01 23:03:53 -04:00
  • 1c62e41b26 GapBuffer takes separate buffer_size and size parameters josh 2016-11-01 22:49:35 -04:00
  • 0cbc36c5ff change Buffer to start using GapBuffer josh 2016-11-01 22:46:44 -04:00
  • 444653822e start on GapBuffer class josh 2016-11-01 22:18:44 -04:00
  • fbca1f995a remove PieceTable josh 2016-11-01 21:44:01 -04:00
  • 65468bd2e5 Change TextLoader for gap buffer approach josh 2016-11-01 20:53:54 -04:00
  • 1f3ecf950f draw cursor at end of line when in insert mode josh 2016-10-29 15:33:59 -04:00
  • 65dea7f84f draw cursor skinner in insert mode josh 2016-10-29 15:11:42 -04:00
  • 16029506c7 redraw screen when entering insert mode josh 2016-10-29 15:06:21 -04:00
  • a268c673fa re-calculate cursor column for all cursors on any insertion josh 2016-10-29 15:05:43 -04:00
  • 35ff48c38f place cursor after currently-inserting piece josh 2016-10-29 12:06:58 -04:00
  • 239da4962e change to CTRL+q to quit for now josh 2016-10-29 11:02:28 -04:00
  • 752d5b2071 insert key values as code points in insert mode josh 2016-10-29 09:12:50 -04:00
  • fe64622762 Create empty inserting piece when entering insert mode josh 2016-10-29 09:07:48 -04:00
  • 827f4efdd9 handle keys based on code point with modifier flags josh 2016-10-29 01:51:16 -04:00
  • fa752fefde begin reworking keyboard handling josh 2016-10-29 01:40:27 -04:00
  • 7ba7abc029 keep track of current keymod josh 2016-10-29 00:43:25 -04:00
  • e5c4ee00c0 test return values from check_go_*() cursor movement functions josh 2016-10-28 21:56:04 -04:00
  • 9756519f13 Fix PieceTable::Cursor::prev_line and next_line to support empty pieces josh 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 josh 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 josh 2016-10-26 21:20:42 -04:00
  • cd44deda9e add Iterator::piece_eol() josh 2016-10-26 20:46:50 -04:00
  • 8432e7f4b7 update comparison operators for Iterator/Cursor josh 2016-10-26 20:43:39 -04:00
  • 523eba81f5 update Window initial size to 800x800 for now josh 2016-10-25 21:31:12 -04:00
  • 66105dc88f Separate PieceTable::Cursor::go_*() into go_*() and check_go_*() josh 2016-10-25 21:13:47 -04:00
  • ef717faa16 fix Buffer::write_to_file() to preserve EOLs correctly josh 2016-10-25 20:47:54 -04:00
  • 1f59e4d042 update PieceTable::Iterator to allow empty pieces josh 2016-10-25 20:36:08 -04:00
  • b9c23084be shrink up the Change structure a bit josh 2016-10-18 21:53:18 -04:00
  • 14a3c17835 remove unused Change::insert field josh 2016-10-15 20:02:52 -04:00
  • c6a8d1597e insert-after-char should insert-before-char if char is EOL marker josh 2016-10-15 18:40:36 -04:00
  • 7557fc4c1e do not draw \n characters josh 2016-10-15 18:38:59 -04:00
  • 261cc9abf8 adjust cursor movement to optionally allow moving to EOL josh 2016-10-15 15:54:45 -04:00
  • 4ebe81c062 remove EOL Piece flag; use \n in memory to represent EOL josh 2016-10-15 09:42:33 -04:00
  • 85ab570ce5 remove some unused parameters josh 2016-10-13 20:45:15 -04:00
  • 4d5e3dc0ea continued insertion testing, not sure i like this method josh 2016-10-08 16:59:11 -04:00
  • 08dd616bef add unit tests for Encoding::encode() josh 2016-10-08 15:36:22 -04:00
  • 24e6eb7f04 add unit tests for Encoding module josh 2016-10-06 22:45:38 -04:00
  • ac439d30bc add Encoding::encode() josh 2016-10-06 20:45:16 -04:00
  • fdabf4432a add Encoding::num_bytes_to_encode_code_point() josh 2016-10-05 23:10:41 -04:00
  • 99bbe81f6b add PieceTable::begin_insert() josh 2016-10-05 22:47:08 -04:00
  • 807eba4448 avoid segfault when undoing to get back to empty buffer josh 2016-10-05 21:40:08 -04:00
  • fe9747390a Add PieceTable::apply_change() and an initial undo josh 2016-09-26 22:54:19 -04:00
  • 5b662b63e0 add PieceTable::apply_change() josh 2016-09-26 22:34:29 -04:00
  • 249fd87067 introduce a PieceTable::Change structure to record changes josh 2016-09-26 22:30:41 -04:00
  • 0a1bb6eb92 remove unused Window::m_start_piece josh 2016-09-26 20:24:16 -04:00
  • c2c0d6f042 add a piece table insertion test josh 2016-09-25 23:01:59 -04:00
  • bc4c5b5c98 fix PieceTable::Cursor::next_line() josh 2016-09-25 22:58:13 -04:00
  • 6e5489c88e do not allow cursor movements for non-valid cursors josh 2016-09-13 23:16:23 -04:00
  • 7e518cd27a rename draw_text() to draw_buffer() josh 2016-09-13 22:55:48 -04:00
  • b9d7e1f93e Show cursor position in status bar josh 2016-09-13 22:51:51 -04:00
  • f9fd1dc754 Add a status bar (empty for now) josh 2016-09-13 22:26:56 -04:00
  • 2289fe123e only set the clear color once josh 2016-09-13 22:21:30 -04:00
  • c852e9991b add a rectangle shader josh 2016-09-13 22:19:47 -04:00