Commit Graph
100 Commits
Author SHA1 Message Date
josh 438a3e6960 Add default mapping for A command 2017-11-16 16:15:08 -05:00
josh be84d40c29 Fix o/O commands 2017-11-15 21:32:29 -05:00
josh 0617229567 Add default mapping for home/end keys 2017-11-15 21:13:08 -05:00
josh bf6c94ff4e Define default mapping entries for page up/down 2017-11-15 21:11:11 -05:00
josh f53f9dbf16 Define 'r' as default redo command 2017-11-15 21:06:16 -05:00
josh c77be4c482 Implement X command 2017-11-15 21:05:12 -05:00
josh bb5bf6a13a Implement f/F/t/T commands 2017-11-15 21:01:20 -05:00
josh 917491c08b add THIS_LINE motion and MOTION_COUNT 2017-11-15 20:32:34 -05:00
josh 2d559db7d0 BufferView: cursor_move() takes a character argument 2017-11-15 20:32:01 -05:00
josh 739edfd6f7 Add default mapping keys for scrolling window 2017-11-15 20:19:22 -05:00
josh 67cd0c1701 Command: fix WHOLE_SCREEN typo 2017-11-15 19:43:49 -05:00
josh 2fb1cf38da CommandMap: allow adding entries with control characters 2017-11-15 19:43:13 -05:00
josh 928817f8e4 move key macros to core header 2017-11-15 19:32:59 -05:00
josh 7c65dcfaa2 Check for OpenGL libraries in configure step 2017-11-15 19:26:31 -05:00
josh 4b9987b119 Fix '0' being interpreted as a count prefix instead of a command 2017-11-14 20:42:41 -05:00
josh c2b50a3f4f Draw command characters as they are input 2017-11-14 20:40:50 -05:00
josh 2dcf13c8fa Ignore modifier keypresses in command mode 2017-11-05 09:45:16 -05:00
josh fc0ea6a2ad Define default command 'G' to go to last line 2017-11-05 09:42:53 -05:00
josh ac316193fb Begin to use CommandMap to evaluate command-mode inputs 2017-11-05 09:42:20 -05:00
josh e58d8a4500 Add several more commands 2017-10-31 22:24:57 -04:00
josh 7dbd9402c1 Add Jtk_SetWindowIcon() 2017-10-31 21:10:29 -04:00
josh 6ec8e23b7d remove old SDL code 2017-10-31 20:42:07 -04:00
josh 911eda3e37 Catch window close event 2017-10-31 20:40:46 -04:00
josh 54bbfefcf4 CommandMap: recurse to resolve command sequences properly 2017-10-30 20:21:51 -04:00
josh dd84d03b90 CommandMap: translate a command character sequence to a Command object 2017-10-24 22:50:29 -04:00
josh bbc1c8d153 add Command::Unit to describe similar fields between main command and motions 2017-10-24 22:11:57 -04:00
josh a07e9eb46b start on CommandMap::get_command() 2017-10-24 21:45:35 -04:00
josh 25806993f9 Add DefaultCommandMap module to define the default command map. 2017-10-24 21:23:32 -04:00
josh 4df3f620f1 Redo Command and CommandMap again 2017-10-24 20:59:00 -04:00
josh a509c4bded Merge branch 'remove-sdl' 2017-10-18 12:26:08 -04:00
josh 5239f128cc pass keyboard modifier key states in button press event 2017-10-14 12:38:39 -04:00
josh 7648bee12e draw control characters in different color font 2017-10-14 12:30:28 -04:00
josh 7199bb56e3 adjust cursor screen row when moving cursor up/down by screen rows 2017-10-14 12:22:38 -04:00
josh 314c840105 add Jtk_SetWindowTitle() 2017-10-14 12:16:16 -04:00
josh 2d944e4a87 handle X Expose, GraphicsExpose, and MapNotify events 2017-10-14 11:59:48 -04:00
josh c2323f4397 Do not queue up mouse wheel scroll events while others are still processing 2017-10-14 11:52:27 -04:00
josh 5e40c33eda handle X button press events 2017-10-14 11:48:25 -04:00
josh b100262a15 process multiple queued events up to a maximum time before redrawing screen 2017-10-14 11:42:03 -04:00
josh 49c34907f5 add Jtk_CheckEvent() 2017-10-14 11:36:07 -04:00
josh 3a594b5355 Avoid backlogging duplicate keypress events. 2017-10-14 11:31:29 -04:00
josh 34dc956272 Use modifier state from X keypress event, not current state at time of event process 2017-10-12 21:11:27 -04:00
josh 5999d62660 handle window resizes 2017-10-12 21:05:39 -04:00
josh de31e97556 turn off custom key repeats and just use X key repeats 2017-10-12 20:44:16 -04:00
josh 6eeb0d5b9a Process X events before timers 2017-10-12 19:59:46 -04:00
josh 07cdc5f8d0 Query for X modifier state when needed 2017-10-05 20:16:46 -04:00
josh 4e3050dbec Handle key repeats in Jtk itself 2017-10-05 20:10:59 -04:00
josh 6ff2faf4af Add key repeating back in with Jtk
Problem though: A change in modifiers between key press and release will
lead to a different keyval, which indexes differently into
g_key_statuses, leading to infinite key repeats. So we maybe should
revert to storing modifier state separately from keycode to handle this.
2017-10-01 17:46:30 -04:00
josh 486253d0b6 Jtk: encode key modifiers in key value field for keyboard events 2017-10-01 17:00:06 -04:00
josh 15fcaa80fa Do not let X translate control key combinations to key codes for us. 2017-10-01 13:56:01 -04:00
josh 6546508cc6 Begin replacing SDL keyboard handling with Jtk 2017-10-01 13:48:03 -04:00
josh afd4b83814 service timers so they do not infinitely re-trigger 2017-10-01 08:03:44 -04:00
josh b9d650d9ef fix Jtk_RemoveTimer() 2017-10-01 08:02:26 -04:00
josh f424fd573d Filter out repeated key presses 2017-09-30 22:46:46 -04:00
josh 035f5805ad Define many more keys 2017-09-30 22:09:25 -04:00
josh 30a38a1487 Begin handling X keyboard events 2017-09-30 21:23:22 -04:00
josh 52b3c9faa9 if an X event is not sent to the user, make sure to check for more X events ready to process 2017-09-30 20:21:49 -04:00
josh 095d8d440e Begin processing X events 2017-09-30 20:17:22 -04:00
josh 2348d7ede1 Split up Jtk sources and headers by functional area 2017-09-30 18:24:50 -04:00
josh 8154aa84cc begin defining GUI events 2017-09-28 20:19:04 -04:00
josh ff89fc7ca7 Begin removing SDL
Window and OpenGL context creation working.
Keyboard, mouse, window events not yet working.
2017-09-27 20:33:18 -04:00
josh 1c673817d2 BufferPane: add ability to draw line number gutter 2017-09-26 20:47:48 -04:00
josh 6d310f0f14 BufferPane: remove some cursor-tracking fields that are now tracked by BufferView 2017-09-23 16:12:52 -04:00
josh 8f0b3e4114 add temporary key bindings to move up/down by screen row 2017-09-23 16:08:46 -04:00
josh a93578288e fix cursor column handling 2017-09-23 16:08:34 -04:00
josh 1d12a7fe7d BufferView: fix more scrolling problems 2017-09-23 16:02:34 -04:00
josh 33377f7668 fix moving cursor screen row down with row-wrapping tab characters 2017-09-23 10:54:30 -04:00
josh 79aa91bf49 draw crosshair below cursor for wrapped cursor lines 2017-09-23 10:34:00 -04:00
josh 55dc13d729 Fix scrolling BufferView past empty lines 2017-09-20 20:00:19 -04:00
josh d2fa28c5e1 Fix BufferView repeating last line for the remainder of the view 2017-09-20 19:40:51 -04:00
josh 22171cacf9 begin using BufferView class to control the BufferPane layout 2017-09-20 19:34:57 -04:00
josh 382552d25c use a simple rectangle for insert-mode cursor 2017-09-19 20:45:56 -04:00
josh 5c3a095aeb BufferView: test and fix scrolling through super long lines 2017-09-13 20:57:42 -04:00
josh 70aba6e2d4 BufferView: add scroll_view_{up,down}() 2017-09-13 20:08:09 -04:00
josh 84759d0a36 BufferView: add functions to move cursor up/down by screen row 2017-09-11 22:43:38 -04:00
josh fcd198b691 Add cursor movement logic to BufferView 2017-09-11 21:10:02 -04:00
josh 7ad28ceb67 update BufferLineWalker unit tests for full coverage 2017-09-04 15:57:03 -04:00
josh 74dfb7ce78 more BufferView tests, 100% coverage 2017-09-04 15:45:10 -04:00
josh f3604e1850 BufferView optimization: avoid calling calculate_rows_in_cursor_line() twice per update() 2017-09-03 18:27:19 -04:00
josh 359f5bed9f BufferView updates cursor screen row to follow moved cursor 2017-09-03 18:15:37 -04:00
josh 14e285041e BufferView: user must call update() after all changes and before vert_iter() 2017-09-03 17:34:41 -04:00
josh 5b35a35b24 BufferView stores all lines in view after update() 2017-09-03 17:31:56 -04:00
josh 4b3e1ea7e7 Change BufferView and BufferLineWalker to return iterator objects for iteration instead of using lambdas for callbacks. 2017-09-03 17:05:01 -04:00
josh b89f348602 add some initial BufferView unit tests 2017-08-29 23:20:42 -04:00
josh 8e0796decf move much of the buffer layout code from BufferPane to BufferView 2017-08-29 23:03:49 -04:00
josh 545e73bd07 use BufferLineWalker from BufferView 2017-08-24 22:03:56 -04:00
josh 52751338c3 add BufferLineWalker unit tests 2017-08-24 21:44:10 -04:00
josh 67e4419d86 fix CharacterWidthDeterminer to be an abstract class 2017-08-24 21:44:01 -04:00
josh 3d4e8230fe move character iteration logic from BufferView to BufferLineWalker 2017-08-24 20:57:59 -04:00
josh 65df0c2320 more work on BufferView 2017-05-07 19:52:21 -04:00
josh e243dd654c add BufferView::iter_cols() 2017-05-07 19:33:37 -04:00
josh 12e5a99e17 add CharacterWidthDeterminer 2017-05-07 19:28:57 -04:00
josh 43052321c4 add initial BufferView class 2017-05-07 19:10:00 -04:00
josh c071c43c5c add CommandMap class 2017-02-04 16:16:48 -05:00
josh ced2d2856b add "nop" and "delete" commands 2017-02-04 16:16:39 -05:00
josh 92a7dbe922 add Command module 2017-01-30 22:37:46 -05:00
josh 89687100f3 add another BUffer unit test 2017-01-28 12:24:26 -05:00
josh add43beb92 fix bug counting lines to adjust iterators by in Buffer::lines_in_data() 2017-01-28 12:23:58 -05:00
josh 903b35f8bb test CommandParser ignores newlines at end of command 2017-01-28 11:54:43 -05:00
josh fbc942c4f7 add "q" command to quit 2017-01-27 21:00:52 -05:00
josh ee0d1e0d0e remove BufferPane::write_file() and handle writing from Window class 2017-01-27 20:58:15 -05:00