aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-10-05vis: change key binding function prototypesMarc André Tanner3-191/+256
The idea is to work more like a finite state machine. Every function gets an additional argument keys which holds the already read keyboard input. The return value of the functions should point to the first not consumed key. A return value of NULL indicates that more input is needed. The function will be called again from the editor core when more input is available. These changes are mostly mechanical and in many cases not optimal, they will be cleaned up in further commits.
2015-10-05vis: rework input handling using libtermkeyMarc André Tanner9-577/+585
Key bindings are now specified as symbolic key strings, this will eventually allow run time configurable key mappings. This introduces a bulid time dependency on libtermkey which can be found at: http://www.leonerd.org.uk/code/libtermkey/
2015-09-15Add utfnext utility functionMarc André Tanner2-0/+9
2015-09-15buffer: add buffer_put0 to store a NUL terminated stringMarc André Tanner2-1/+7
2015-09-15buffer: add buffer_append0 to append NUL terminated stringsMarc André Tanner2-0/+8
2015-09-13map: introduce map_contains utility functionMarc André Tanner2-0/+8
2015-09-06ui: differentiate between Ctrl-J and enterMarc André Tanner3-3/+5
Thus enter no longer creates new cursors, use CTRL-j instead. Closes #69
2015-08-18ui: remove translation of ^b to backspaceMarc André Tanner1-1/+0
Closes #67
2015-08-15Improve shell highlightingDmitry Bogatov1-1/+7
* lower case variables names are now recognized * special variables ($?, $*, etc) are treated specially * non-sense, like ${foo is not treated as variable reference anymore
2015-08-12ui: query terminal size on stderrMarc André Tanner1-1/+2
We always draw the editor user interface to stderr in order to allow usage as a filter e.g. $ echo Hello | vis - | grep World > out hence stdin might be redirected and we should always read the terminal size from stderr. Closes #66
2015-08-09ui: make cursor visible when executing external programsMarc André Tanner1-0/+2
This also affects the file open dialog.
2015-08-09vis: fix :edit! commandMarc André Tanner2-6/+10
It now correctly re-edits the file (i.e reloads it from disk).
2015-08-09vis: fix repeated use of file open dialogMarc André Tanner1-1/+1
2015-08-09vis: cancelling wildcard open causes crashDavid B. Lamkins1-1/+1
Closes #65
2015-08-08text: rename some functions to improve consistencyMarc André Tanner3-13/+13
2015-08-08text: introduce helper function text_delete_rangeMarc André Tanner3-5/+11
2015-08-07vis: limit to/till movements to current lineMarc André Tanner3-4/+27
2015-08-06Add APL syntax highlighting.David B. Lamkins1-0/+35
2015-08-06vis: implement gv to restore last selectionMarc André Tanner4-2/+35
2015-08-06vis: implement al and il text objectsMarc André Tanner5-4/+35
2015-08-06vis: implement gp and gP add count support to put operationsMarc André Tanner2-15/+46
2015-08-02Add short demo screencast to READMEMarc André Tanner1-0/+2
2015-08-02vis: use file open dialog also for :editMarc André Tanner1-1/+1
2015-08-02Update READMEMarc André Tanner1-185/+141
2015-08-02vis: use I and A instead of CTRL-O for new cursors in visual modeMarc André Tanner2-3/+18
I and A creates a new cursor at start/end of every selected line.
2015-08-02text-motion: make text_bracket_match more robustMarc André Tanner1-8/+17
Brackets which occur inside strings are ignored.
2015-08-02vis: add text objects `af` and `if`Marc André Tanner4-0/+29
They try to match C-like function definitions. The inner variant only contains the function body.
2015-08-02vis: add motions [[, [], ][, ]]Marc André Tanner4-0/+127
They behave not like in vim, but instead try to find the start/end of C-like function definitions. The first character stands for the direction [ for backwards, ] for forwards. The second character denotes the start [ or end ] respectively.
2015-08-01text-motion: fix text_find_{next,prev}Marc André Tanner1-5/+12
It is after all a stupid O(n*m) algorithm, hence restart after a failed partial match. Code like this would benefit from a proper test suite ...
2015-08-01vis: support `ae` and `ie` text objectsMarc André Tanner5-0/+30
2015-08-01view: hide API to free main cursorMarc André Tanner3-4/+3
2015-07-31vis: cleanup handling of charwise/linewise motionsMarc André Tanner5-91/+73
Also text objects in visual mode should now work better.
2015-07-28vis: fix one more coverity scan warningMarc André Tanner1-2/+2
With the current code this will never cause a NULL dereference since it is checked at the call site. However it makes sense to check it anyway.
2015-07-28vis: fix bugs uncovered by coverity scanMarc André Tanner1-2/+4
2015-07-28vis: fix join operatorMarc André Tanner1-6/+9
Only skip last line break if range comes from linewise visual mode.
2015-07-28vis: pass cursor to operator implementationsMarc André Tanner2-0/+2
2015-07-28text-util: introduce text_range_equalMarc André Tanner2-0/+8
2015-07-28text-object: introduce utility function text_range_is_linewiseMarc André Tanner3-1/+9
2015-07-28vis: use multiple cursor/selection infrastructureMarc André Tanner4-1/+81
This commits introduces the following keybindings, in normal mode: CTRL-N select word the cursor is currently over, switch to visual mode CTRL-P remove least recently added cursor ESC if a selection is active, clear it. Otherwise dispose all but the primary cursor. In visual mode: CTRL-N create new cursor and select next word matching current selection CTRL-X clear (skip) current selection, but select next matching word CTRL-P remove least recently added cursor
2015-07-28vis: do not move cursor in multicursor mode after undo/redoMarc André Tanner1-2/+6
2015-07-28vis: try to align cursors on the same column with CTRL-AMarc André Tanner2-0/+20
2015-07-28text-motion: introduce text_line_char_{get,set}Marc André Tanner2-6/+31
2015-07-28vis: CTRL+J and CTRL+K creates a new cursor on the line below/aboveMarc André Tanner2-0/+17
2015-07-28vis: ESC in normal mode clears all cursorsMarc André Tanner4-5/+25
2015-07-28vis: add per cursor registersMarc André Tanner3-2/+17
2015-07-28vis: add an operator to create new cursorsMarc André Tanner2-0/+16
The operator creates a new cursor at the start of every line covered by the given range. It is currently only available as CTRL+O in visual mode.
2015-07-28text-motion: add functions to iterate over lines of a rangeMarc André Tanner2-0/+38
2015-07-28text-util: add text_range_containsMarc André Tanner2-1/+7
2015-07-28text: move utility functions to separate fileMarc André Tanner8-50/+64
2015-07-28ui: try to fixup unicode display issuesMarc André Tanner1-0/+7
The handling of combining characters needs to be reviewed there are still strange things going on. This only covers up some of the artifacts.