Commit Graph
100 Commits
Author SHA1 Message Date
josh 13ca7afd0c Buffer::get_string() returns an EncodedString 2017-01-21 14:15:54 -05:00
josh 7e7b0497a7 allow comparison between an EncodedString and a std::string 2017-01-21 14:06:06 -05:00
josh fce9f87265 add EncodedString module 2017-01-21 13:28:20 -05:00
josh 3b1199fbdc Error out of configure script if submodules have not been checked out 2017-01-21 13:00:20 -05:00
josh bb8dc6a6a4 fix expanding command buffer pane when cursor wraps to next line 2017-01-21 12:37:41 -05:00
josh 8d6112ed32 fix drawing highlight when in insert mode at the end of a line 2017-01-21 12:31:50 -05:00
josh 5eb5039d38 more stderr messages when gl3w fails to load 2017-01-20 15:07:04 -05:00
josh b734249df2 fix library names for Windows 2017-01-20 14:48:12 -05:00
josh 671ba8312a Get the page size on Windows 2017-01-20 14:45:41 -05:00
josh 677c4fd6e1 do not draw cursor crosshairs in command buffer pane 2017-01-19 21:49:25 -05:00
josh ec9b47d113 Add cursor crosshairs 2017-01-19 21:48:02 -05:00
josh be201ab73d remove unused BufferPane::draw_buffer_character() 2017-01-19 21:23:25 -05:00
josh b5cb693317 Only allow one pending keyboard event for any given key 2017-01-19 21:15:06 -05:00
josh 3cd988bc3a expand command buffer to multiple lines as command length grows 2017-01-19 21:06:20 -05:00
josh 2ecee3f09a clear the command buffer when changing focus away from it 2017-01-19 20:44:35 -05:00
josh dc64b9774f add a window icon 2017-01-19 20:38:38 -05:00
josh ef1ae45c2a add 32x32 jes icon 2017-01-19 20:10:48 -05:00
josh d1b2350e1a Fix unit tests broken by 08529fc 2017-01-19 15:05:32 -05:00
josh a65a9fec41 Print a stderr message with more information about why creating the window failed 2017-01-19 09:27:16 -05:00
josh 3dcc6b2350 clear command buffer pane and return focus to file buffer pane when pressing enter in command buffer 2017-01-18 22:57:15 -05:00
josh baa5d9ef07 add BufferPane::clear() 2017-01-18 22:53:49 -05:00
josh 276c756bb7 fix Buffer::clear() to update iterators 2017-01-18 22:51:33 -05:00
josh 47d15ca858 add Buffer::clear() and Buffer::set_string() 2017-01-18 22:36:41 -05:00
josh 22b2cd426e add GapBuffer::clear() and GapBuffer::set_string() 2017-01-18 22:20:36 -05:00
josh 211ce0185c pass \n to BufferPane when inserting a newline 2017-01-18 22:00:57 -05:00
josh 12c034fb8f Add ':' command to focus command buffer pane 2017-01-18 21:46:34 -05:00
josh 9d150524fb keep track of the focused buffer pane 2017-01-18 21:22:39 -05:00
josh f2770d66fd set the buffer pane focus 2017-01-18 21:18:07 -05:00
josh 0d5b0e0437 Draw cursor as hollow when the buffer pane is not focused 2017-01-18 21:15:00 -05:00
josh 212215bf4d Add command buffer pane 2017-01-17 23:50:24 -05:00
josh 16d4b1e21b shift+space should insert a space 2017-01-17 23:13:19 -05:00
josh 30290e86f5 allow BufferPane to turn off its status bar 2017-01-17 09:09:38 -05:00
josh 837380c3ca support numpad keys 2017-01-15 22:18:51 -05:00
josh 5b0a7c44d8 handle page up / page down keys 2017-01-15 21:54:52 -05:00
josh 08529fc115 keep cursors off newlines after applying change operations when not in insert mode 2017-01-15 21:44:57 -05:00
josh 3d090b0f32 handle Delete key in insert mode properly 2017-01-15 21:38:37 -05:00
josh 62e127d400 add extra undo test 2017-01-15 21:35:38 -05:00
josh cd0efc431d test more undo/redo change unit combinations 2017-01-15 21:16:55 -05:00
josh af77c97394 test that non-adjacent inserts make a single change operation 2017-01-15 21:01:13 -05:00
josh 2e2cdfdb81 bug fix: when applying change operations in reverse, apply their change units in reverse order 2017-01-15 20:58:18 -05:00
josh 0cd38f2198 add -include iostream when building tests so debug prints can easily be put in anytime 2017-01-15 20:53:39 -05:00
josh edf29f0bac add tests for modifying uncommitted insert change units 2017-01-15 20:46:09 -05:00
josh 4e03fbc3de fix bug of undo/redo creating new change operations themselves 2017-01-15 20:33:37 -05:00
josh 3e50e8a3b3 test number of change operations created in basic undo/redo tests 2017-01-15 20:27:26 -05:00
josh 861aaed940 add unit test for coalescing erase change units within a change operation 2017-01-15 20:23:27 -05:00
josh 3b1bea80aa fix bug dealing with coalescing erase change units within one change operation 2017-01-15 20:23:09 -05:00
josh da2bafd563 define ENABLE_TESTING when building tests 2017-01-15 20:08:28 -05:00
josh 6ba280e75d add unit test for basic undo/redo of erases 2017-01-15 20:06:08 -05:00
josh 441c33821e add unit test for basic undo/redo of inserts 2017-01-15 20:02:12 -05:00
josh e98454c771 add unit tests for buffer insert/erase character 2017-01-15 19:46:33 -05:00
josh 21ba393c45 add FILTER variable to Makefile to only run some tests 2017-01-15 19:34:41 -05:00
josh 68eefcb60b use gcovinator instead of gcovr to generate gcov HTML files 2017-01-15 16:21:56 -05:00
josh 0ab26dea2f move GapBuffer::copy_to() implementation out of header file 2017-01-14 16:55:13 -05:00
josh f7e077d8ef Use VirtualAlloc() instead of mmap() on Windows 2017-01-14 09:48:54 -05:00
josh e65f269766 fix platform detection for Windows when using MSYS2 2017-01-13 17:25:38 -05:00
josh 1eb0cc00ad include GUI sources in unit test build 2017-01-11 23:36:29 -05:00
josh 2c633a9ddb add TODO for supporting undo tree 2017-01-11 22:53:19 -05:00
josh f1815d04d9 do not attempt to redo past the last available operation 2017-01-11 22:53:19 -05:00
josh 089d63f337 add 'u'/'r' commands for undo/redo for now 2017-01-11 22:53:19 -05:00
josh 9d970d1aee add BufferPane::{undo,redo}() 2017-01-11 22:53:19 -05:00
josh cac339a9f2 do not store a change operation with no change units 2017-01-11 22:53:19 -05:00
josh 2057c69585 add Buffer::{undo,redo}() 2017-01-11 22:18:02 -05:00
josh e0615011a3 add Buffer::apply_change_{operation,unit}() for undo/redo 2017-01-11 21:55:59 -05:00
josh fca838fcbf fix problem of record_change() not receiving contiguous range by using GapBuffer::copy_to() 2017-01-09 22:11:08 -05:00
josh b9313ad606 add GapBuffer::copy_to() 2017-01-09 22:05:43 -05:00
josh 5de13644de add Buffer::INVALID_CHANGE_OPERATION_INDEX 2017-01-09 21:46:52 -05:00
josh f3753be4eb refactor Buffer insert and delete operations
add Buffer functions to insert/erase data chunks
2017-01-09 21:34:16 -05:00
josh 66aa9c5235 add Buffer::Iterator::{prev,next}() 2017-01-09 20:26:18 -05:00
josh 6108d09e8d add Buffer::Iterator::warp_to_offset() 2017-01-07 16:34:01 -05:00
josh 904ac01a1c record the parent ID of each change operation 2017-01-07 16:22:42 -05:00
josh 5f37229c19 when adjusting cursor iterators, always keep them valid 2017-01-07 16:22:28 -05:00
josh 85dbf75b11 add Buffer::add_cursor() 2017-01-07 15:03:51 -05:00
josh 924d005020 Buffer: refactor common iterator warping code into warp_iterators() 2017-01-07 14:15:46 -05:00
josh 38a734b5c1 Save change operations 2017-01-07 13:56:10 -05:00
josh 348d11e992 Buffer: allow insert_code_point() to be called outside of insert mode 2017-01-07 13:22:05 -05:00
josh 21320d9ea7 Begin recording all buffer changes to prepare for undo tree 2017-01-07 13:19:49 -05:00
josh a8b39f8884 Fix text insertion point not following cursor
Always supply iterator position when inserting code points
2017-01-05 21:21:38 -05:00
josh 314b39b81a allow home/end/arrow keys to move cursor in command or insert mode 2017-01-05 21:05:46 -05:00
josh 95381faedc fix finding runtime files relative to the executable path 2017-01-03 19:01:48 -05:00
josh 4017d8237e Add System::executable_path() 2017-01-03 18:59:12 -05:00
josh 7a9ee92eaa define PLATFORM_xxx macros for supported platforms 2017-01-03 18:51:57 -05:00
josh 647b3b85f4 Add CTRL+u,d,f,b,e,y keys to scroll window by different amounts like vim 2017-01-02 11:49:18 -05:00
josh 842557ee46 scroll window on mouse wheel events 2017-01-01 23:59:33 -05:00
josh 94eb9276d9 add BufferPane::scroll_window_up() and scroll_window_down() 2017-01-01 23:50:24 -05:00
josh 92d9597f2e BufferPane: add functions to move cursor up/down by screen row 2017-01-01 23:00:44 -05:00
josh 0d0e47593b BufferPane: keep track of cursor screen column and row offset 2017-01-01 21:32:55 -05:00
josh 7a5b58e8a8 BufferPane: rename functions to calculate rows in lines 2017-01-01 20:58:08 -05:00
josh b3f972d7f4 add BufferPane::draw_character() and refactor BufferPane::draw_buffer_line() 2017-01-01 19:38:30 -05:00
josh a2e5f7428c fix cursor being hidden in command mode on empty lines 2016-12-31 12:15:48 -05:00
josh 46f5059a0b add test/files/control-characters.txt 2016-12-30 12:10:43 -05:00
josh bdf4d7e336 increase key repeat delay a little 2016-12-29 19:58:04 -05:00
josh a508d0048c fix cursor missing at end of line in insert mode 2016-12-29 19:57:49 -05:00
josh 8b2e2a1f6d fix bug where tab width was determined based on screen column instead of line virtual column 2016-12-29 19:50:16 -05:00
josh d201068428 do not move entire tab character down to next screen line 2016-12-29 19:49:48 -05:00
josh 8181d8343b change cursor width to highlight full character for multi-column characters 2016-12-29 19:42:46 -05:00
josh 027e42da5d add a blue underline to control characters 2016-12-29 19:31:58 -05:00
josh 8a8e329959 change GL::draw_character() to accept a color 2016-12-29 19:24:45 -05:00
josh 53d8df95f8 draw control characters with 2 ASCII characters starting with '^' 2016-12-29 19:17:34 -05:00
josh 90aa5ada70 move KEYMOD_ enums to a Keymod namespacing class 2016-12-29 18:51:00 -05:00
josh 0295c593ab move all key handling out of BufferPane and back to Window 2016-12-29 18:44:56 -05:00