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 |
|
josh
|
325aa5d93c
|
remove BufferStatusPane forward declaration
|
2016-12-29 18:16:32 -05:00 |
|
josh
|
599ccdb6db
|
add 'o' and 'O' commands
|
2016-12-28 14:48:17 -05:00 |
|
josh
|
dbe5843d77
|
add 'A' and 'I' commands
|
2016-12-28 14:41:44 -05:00 |
|
josh
|
237dbf9c2b
|
add 'g' and 'G' commands to go to first and last line in buffer
|
2016-12-28 14:07:28 -05:00 |
|
josh
|
8df75f5ab0
|
add Buffer::Iterator::INVALID_CODE_POINT constant
|
2016-12-28 13:24:52 -05:00 |
|
josh
|
929bda355f
|
add an EOF iterator to track the end of the file and number of lines
|
2016-12-28 13:03:38 -05:00 |
|
josh
|
301fbf09f1
|
absorb BufferStatusPane logic into BufferPane
|
2016-12-27 20:54:05 -05:00 |
|
josh
|
e6501ec4fc
|
use CTRL+w to write the file out for now
|
2016-12-27 20:41:44 -05:00 |
|
josh
|
c059cd8c09
|
display buffer name in buffer status pane
|
2016-12-27 20:26:10 -05:00 |
|
josh
|
64ed3174ac
|
record buffer filename
|
2016-12-27 20:10:58 -05:00 |
|
josh
|
8542de4ee1
|
display column as 0 on empty lines in command mode
|
2016-12-27 19:50:35 -05:00 |
|
josh
|
2339380dd3
|
fix column number displayed for an empty buffer
|
2016-12-27 19:32:42 -05:00 |
|
josh
|
38d615ecc4
|
insert a \n to follow new content when inserting into an empty buffer
|
2016-12-27 15:10:45 -05:00 |
|
josh
|
723b96f624
|
fix insert position when erasing a code point in insert mode
|
2016-12-27 14:07:46 -05:00 |
|
josh
|
30fe7e32d3
|
handle backspace in insert mode
|
2016-12-27 14:05:24 -05:00 |
|
josh
|
cca426b16b
|
add 'x' command to erase a character under the cursor
|
2016-12-26 14:04:13 -05:00 |
|
josh
|
64a09fca0f
|
add Buffer::erase_code_point()
|
2016-12-26 14:01:24 -05:00 |
|
josh
|
bbd38c76a2
|
move cursor down a row when inserting a \n
|
2016-12-26 13:41:17 -05:00 |
|
josh
|
832f62add7
|
turn Return key into \n instead of \r
|
2016-12-26 13:39:02 -05:00 |
|
josh
|
92b3e888b5
|
Add GapBuffer::erase()
|
2016-12-26 13:28:37 -05:00 |
|
josh
|
57d525ae44
|
fix 'a' command from inserting after EOL on an empty line
|
2016-12-26 09:05:21 -05:00 |
|
josh
|
a37e03fff1
|
move cursor back one character when exiting insert mode
|
2016-12-26 09:03:26 -05:00 |
|
josh
|
95bd01cf7a
|
add 'a' command
|
2016-12-26 09:01:28 -05:00 |
|
josh
|
cadd5bac36
|
Warp all cursors at/after the insert point when inserting a code point
|
2016-12-26 08:56:36 -05:00 |
|
josh
|
59b8fc5e31
|
preserve cursor column when moving up/down lines
|
2016-12-25 18:07:45 -05:00 |
|
josh
|
e21c24e2cc
|
add BufferPane::determine_new_cursor_screen_row() to allow the cursor to move properly within the screen
|
2016-12-25 13:01:40 -05:00 |
|
josh
|
83a6c1a983
|
record screen layout when drawing
|
2016-12-25 12:46:06 -05:00 |
|
josh
|
239afdfd25
|
change insert mode cursor
|
2016-12-24 15:46:31 -05:00 |
|
josh
|
4c412e10d7
|
allow entering and exiting insert mode
|
2016-12-24 15:40:53 -05:00 |
|
josh
|
e3f156c513
|
add Buffer::insert_code_point()
|
2016-12-24 15:35:06 -05:00 |
|
josh
|
099ea267d6
|
add Buffer functions to enter/exit/query insert mode
|
2016-12-24 15:31:23 -05:00 |
|
josh
|
1a34b8d7f7
|
turn on buffer status pane cursor position display again
|
2016-12-24 15:03:38 -05:00 |
|
josh
|
a39e1d3956
|
fix calculating cursor screen row for multi-row lines
|
2016-12-24 14:57:52 -05:00 |
|
josh
|
4d737d09d4
|
draw partial rows at bottom of screen but do not allow cursor to go there
|
2016-12-24 14:49:08 -05:00 |
|
josh
|
743bfa5179
|
test Buffer::Iterator::go_{start,end}_of_line() on blank lines
|
2016-12-24 14:44:13 -05:00 |
|
josh
|
1862d867f6
|
Fix Buffer::Iterator::go_previous_line()
|
2016-12-24 14:41:25 -05:00 |
|
josh
|
3c73b9ae97
|
cursor positioning fix
|
2016-12-24 14:25:25 -05:00 |
|
josh
|
dce5e68941
|
fix dropping lines above cursor line
|
2016-12-24 14:07:13 -05:00 |
|
josh
|
b40a5e243b
|
fix row count for empty rows
|
2016-12-24 13:57:58 -05:00 |
|
josh
|
252f4121f3
|
turn on unit tests for iterators instead of cursors
|
2016-12-21 23:47:26 -05:00 |
|
josh
|
4ad5615dff
|
fix Buffer::Iterator::go_previous_line() and go_next_line()
|
2016-12-21 22:10:58 -05:00 |
|
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 |
|