Commit Graph

  • 904ac01a1c record the parent ID of each change operation josh 2017-01-07 16:22:42 -05:00
  • 5f37229c19 when adjusting cursor iterators, always keep them valid josh 2017-01-07 16:22:28 -05:00
  • 85dbf75b11 add Buffer::add_cursor() josh 2017-01-07 15:03:51 -05:00
  • 924d005020 Buffer: refactor common iterator warping code into warp_iterators() josh 2017-01-07 14:15:46 -05:00
  • 38a734b5c1 Save change operations josh 2017-01-07 13:56:10 -05:00
  • 348d11e992 Buffer: allow insert_code_point() to be called outside of insert mode josh 2017-01-07 13:22:05 -05:00
  • 21320d9ea7 Begin recording all buffer changes to prepare for undo tree josh 2017-01-07 13:16:22 -05:00
  • a8b39f8884 Fix text insertion point not following cursor josh 2017-01-05 21:21:38 -05:00
  • 314b39b81a allow home/end/arrow keys to move cursor in command or insert mode josh 2017-01-05 21:05:46 -05:00
  • 95381faedc fix finding runtime files relative to the executable path josh 2017-01-03 19:01:48 -05:00
  • 4017d8237e Add System::executable_path() josh 2017-01-03 18:59:12 -05:00
  • 7a9ee92eaa define PLATFORM_xxx macros for supported platforms josh 2017-01-03 18:51:57 -05:00
  • 647b3b85f4 Add CTRL+u,d,f,b,e,y keys to scroll window by different amounts like vim josh 2017-01-02 11:49:18 -05:00
  • 842557ee46 scroll window on mouse wheel events josh 2017-01-01 23:59:33 -05:00
  • 94eb9276d9 add BufferPane::scroll_window_up() and scroll_window_down() josh 2017-01-01 23:50:24 -05:00
  • 92d9597f2e BufferPane: add functions to move cursor up/down by screen row josh 2017-01-01 23:00:44 -05:00
  • 0d0e47593b BufferPane: keep track of cursor screen column and row offset josh 2017-01-01 21:32:55 -05:00
  • 7a5b58e8a8 BufferPane: rename functions to calculate rows in lines josh 2017-01-01 20:58:08 -05:00
  • b3f972d7f4 add BufferPane::draw_character() and refactor BufferPane::draw_buffer_line() josh 2017-01-01 19:38:30 -05:00
  • a2e5f7428c fix cursor being hidden in command mode on empty lines josh 2016-12-31 12:15:48 -05:00
  • 46f5059a0b add test/files/control-characters.txt josh 2016-12-30 12:10:43 -05:00
  • bdf4d7e336 increase key repeat delay a little josh 2016-12-29 19:58:04 -05:00
  • a508d0048c fix cursor missing at end of line in insert mode josh 2016-12-29 19:57:49 -05:00
  • 8b2e2a1f6d fix bug where tab width was determined based on screen column instead of line virtual column josh 2016-12-29 19:50:16 -05:00
  • d201068428 do not move entire tab character down to next screen line josh 2016-12-29 19:49:48 -05:00
  • 8181d8343b change cursor width to highlight full character for multi-column characters josh 2016-12-29 19:42:46 -05:00
  • 027e42da5d add a blue underline to control characters josh 2016-12-29 19:31:58 -05:00
  • 8a8e329959 change GL::draw_character() to accept a color josh 2016-12-29 19:24:45 -05:00
  • 53d8df95f8 draw control characters with 2 ASCII characters starting with '^' josh 2016-12-29 19:17:34 -05:00
  • 90aa5ada70 move KEYMOD_ enums to a Keymod namespacing class josh 2016-12-29 18:51:00 -05:00
  • 0295c593ab move all key handling out of BufferPane and back to Window josh 2016-12-29 18:44:56 -05:00
  • 325aa5d93c remove BufferStatusPane forward declaration josh 2016-12-29 18:16:32 -05:00
  • 599ccdb6db add 'o' and 'O' commands josh 2016-12-28 14:48:17 -05:00
  • dbe5843d77 add 'A' and 'I' commands josh 2016-12-28 14:41:44 -05:00
  • 237dbf9c2b add 'g' and 'G' commands to go to first and last line in buffer josh 2016-12-28 14:07:28 -05:00
  • 8df75f5ab0 add Buffer::Iterator::INVALID_CODE_POINT constant josh 2016-12-28 13:24:52 -05:00
  • 929bda355f add an EOF iterator to track the end of the file and number of lines josh 2016-12-28 13:03:38 -05:00
  • 301fbf09f1 absorb BufferStatusPane logic into BufferPane josh 2016-12-27 20:54:05 -05:00
  • e6501ec4fc use CTRL+w to write the file out for now josh 2016-12-27 20:41:44 -05:00
  • c059cd8c09 display buffer name in buffer status pane josh 2016-12-27 20:26:10 -05:00
  • 64ed3174ac record buffer filename josh 2016-12-27 20:10:58 -05:00
  • 8542de4ee1 display column as 0 on empty lines in command mode josh 2016-12-27 19:50:35 -05:00
  • 2339380dd3 fix column number displayed for an empty buffer josh 2016-12-27 19:32:42 -05:00
  • 38d615ecc4 insert a \n to follow new content when inserting into an empty buffer josh 2016-12-27 15:10:45 -05:00
  • 723b96f624 fix insert position when erasing a code point in insert mode josh 2016-12-27 14:07:46 -05:00
  • 30fe7e32d3 handle backspace in insert mode josh 2016-12-27 14:05:24 -05:00
  • cca426b16b add 'x' command to erase a character under the cursor josh 2016-12-26 14:04:13 -05:00
  • 64a09fca0f add Buffer::erase_code_point() josh 2016-12-26 14:01:24 -05:00
  • bbd38c76a2 move cursor down a row when inserting a \n josh 2016-12-26 13:41:17 -05:00
  • 832f62add7 turn Return key into \n instead of \r josh 2016-12-26 13:39:02 -05:00
  • 92b3e888b5 Add GapBuffer::erase() josh 2016-12-26 13:28:37 -05:00
  • 57d525ae44 fix 'a' command from inserting after EOL on an empty line josh 2016-12-26 09:05:21 -05:00
  • a37e03fff1 move cursor back one character when exiting insert mode josh 2016-12-26 09:03:26 -05:00
  • 95bd01cf7a add 'a' command josh 2016-12-26 09:01:28 -05:00
  • cadd5bac36 Warp all cursors at/after the insert point when inserting a code point josh 2016-12-26 08:56:36 -05:00
  • 59b8fc5e31 preserve cursor column when moving up/down lines josh 2016-12-25 18:07:45 -05:00
  • e21c24e2cc add BufferPane::determine_new_cursor_screen_row() to allow the cursor to move properly within the screen josh 2016-12-25 13:01:40 -05:00
  • 83a6c1a983 record screen layout when drawing josh 2016-12-25 12:46:06 -05:00
  • 239afdfd25 change insert mode cursor josh 2016-12-24 15:46:31 -05:00
  • 4c412e10d7 allow entering and exiting insert mode josh 2016-12-24 15:40:53 -05:00
  • e3f156c513 add Buffer::insert_code_point() josh 2016-12-24 15:35:06 -05:00
  • 099ea267d6 add Buffer functions to enter/exit/query insert mode josh 2016-12-24 15:31:23 -05:00
  • 1a34b8d7f7 turn on buffer status pane cursor position display again josh 2016-12-24 15:03:38 -05:00
  • a39e1d3956 fix calculating cursor screen row for multi-row lines josh 2016-12-24 14:57:52 -05:00
  • 4d737d09d4 draw partial rows at bottom of screen but do not allow cursor to go there josh 2016-12-24 14:49:08 -05:00
  • 743bfa5179 test Buffer::Iterator::go_{start,end}_of_line() on blank lines josh 2016-12-24 14:44:13 -05:00
  • 1862d867f6 Fix Buffer::Iterator::go_previous_line() josh 2016-12-24 14:41:25 -05:00
  • 3c73b9ae97 cursor positioning fix josh 2016-12-24 14:25:25 -05:00
  • dce5e68941 fix dropping lines above cursor line josh 2016-12-24 14:07:13 -05:00
  • b40a5e243b fix row count for empty rows josh 2016-12-24 13:57:26 -05:00
  • 252f4121f3 turn on unit tests for iterators instead of cursors josh 2016-12-21 23:47:26 -05:00
  • 4ad5615dff fix Buffer::Iterator::go_previous_line() and go_next_line() josh 2016-12-21 22:10:58 -05:00
  • 8c834c9d7c start to do some cursor movement again josh 2016-12-21 21:11:29 -05:00
  • 08dab099a7 add BufferPane::walk_line() to commonize logic for laying out a line to the screen josh 2016-12-21 19:43:54 -05:00
  • 24fced221f start re-implementing BufferPane::draw_buffer_line() josh 2016-12-21 19:23:39 -05:00
  • 83d4a86e4b fix BufferPane::rows_in_line_with_iterator_offset() comparing to reference iterator josh 2016-12-21 19:07:28 -05:00
  • 9733d577a7 take into account tab characters when counting line row heights josh 2016-12-21 18:36:47 -05:00
  • f7d0c8189a fix BufferPane::screen_rows_below_line() while loop josh 2016-12-21 18:18:19 -05:00
  • 1486cdf7f4 update BufferPane::update_cursor_row() in preparation for drawing again josh 2016-12-20 23:24:06 -05:00
  • 975b7763a8 add two more BufferPane utility functions to calculate available screen rows before and after the cursor line josh 2016-12-20 23:07:00 -05:00
  • cf4723854e add some utility functions in preparation for drawing screen with multi-column characters josh 2016-12-20 23:01:30 -05:00
  • bc3309a328 Prepare for screen drawing again after Cursor removal. josh 2016-12-20 20:22:19 -05:00
  • 6b27fafb26 test no EOL at EOF with CRLF-formatted files josh 2016-12-18 19:52:41 -05:00
  • e78a3672c5 improve GapBuffer test coverage josh 2016-12-18 19:20:48 -05:00
  • 24eb47b0ad do not echo coverage-generating commands josh 2016-12-18 19:04:19 -05:00
  • 71920ddbcb generate HTML coverage reports for unit tests josh 2016-12-18 16:09:06 -05:00
  • 82036458e6 build unit tests with --coverage josh 2016-12-18 15:34:03 -05:00
  • fc10da76e7 Build main application and test suite separately from make targets josh 2016-12-18 15:22:17 -05:00
  • 968db413e6 Remove Cursor and move line-tracking into Iterator josh 2016-12-18 14:51:52 -05:00
  • 39088f6518 Add output parameter to Encoding::decode() to get encoded size josh 2016-12-17 10:54:50 -05:00
  • ee37616f82 Give BufferPane a reference to a Window josh 2016-12-13 21:48:04 -05:00
  • 659a64b367 add Window::request_redraw() josh 2016-12-11 20:39:02 -05:00
  • 1232539495 Move buffer-related keypress handling from Window to BufferPane josh 2016-12-11 20:29:15 -05:00
  • bd1d5adfab add enum type josh 2016-12-11 20:18:10 -05:00
  • 3422df51d6 BufferPane: replace colrow_to_xy() with col_x() and row_y() josh 2016-12-11 19:58:16 -05:00
  • 129716e28f Draw cursor again josh 2016-12-11 15:58:31 -05:00
  • 3d57b03af7 fix infinite loop drawing an empty buffer josh 2016-12-11 15:48:22 -05:00
  • a2b2156016 Move encoding and tabstop out of Iterator/Cursor classes josh 2016-12-11 15:32:05 -05:00
  • f41b59aa81 remove a few unused Iterator/Cursor interfaces josh 2016-12-11 15:23:39 -05:00
  • 9b6b21a1d0 Move Iterator and Cursor classes into Buffer class. josh 2016-12-11 15:17:15 -05:00