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 |
|
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 |
|