| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
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.
|
|
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/
|
|
Thus enter no longer creates new cursors, use CTRL-j instead.
Closes #69
|
|
* lower case variables names are now recognized
* special variables ($?, $*, etc) are treated specially
* non-sense, like ${foo is not treated as variable reference anymore
|
|
|
|
|
|
|
|
|
|
I and A creates a new cursor at start/end of every selected line.
|
|
They try to match C-like function definitions. The inner variant
only contains the function body.
|
|
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.
|
|
|
|
Also text objects in visual mode should now work better.
|
|
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
|
|
|
|
|
|
|
|
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.
|
|
This cleans up the existing selection handling code and adds the
necessary bits to eventually support multiple cursors/selections.
The cursor position is kept track of using marks, which means
retrieving the cursor position is no longer a constant time operation.
Furthermore the terminal cursor is no longer used, instead the whole
window is redrawn after every cursor movement.
|
|
By now ui-curses.[hc] are the only files dealing directly with
curses related functions. Integration of a proper mainloop is
still pending.
|
|
|
|
|
|
Enable/disable by setting to 0/1 respectively:
:set show spaces=0 tabs=0 newlines=1
|
|
View should only display the file content, but not modify it.
|
|
Currently the following arguments are accepted:
{count} Go to older text state {count} times.
{N}s Go to older text state about {N} seconds before.
{N}m Go to older text state about {N} minutes before.
{N}h Go to older text state about {N} hours before.
{N}d Go to older text state about {N} days before
|
|
|
|
|
|
If no range is given then stdin is passed through which allows
interactive usage as in
:!ls -1 *.c | slmenu
For this to work the command needs to use stderr for its user
interface and write any data for vis to stdout.
|
|
Win -> View, window_* -> view_*
|
|
|
|
Therefore vis->win->text->data becomes vis->win->file->text.
|
|
This fixes #45
|
|
|
|
|
|
|
|
Once again show mode in window status bar.
|
|
|
|
|
|
|
|
|
|
This adds yet another layer of indirection and stores vi related
stuff which is associated with a given text but shared among all
windows displaying it (e.g. marks).
This will also help if one wants to keep texts arround which
aren't currently displayed.
|
|
In theory only ui-curses.[hc] should depend on curses, however in
practice keyboard input is still handled in vis.c. Furthermore the
syntax definitions as well as keyboard bindings and selection code
in window.c still depends on some curses constants.
There is also a slight regression in that the window status bar
does not show the current mode name. This and related global state
should be eliminated in the future.
|
|
Comments like "/***/" with odd number of asterisks are handled like
normal comments now. Previously they were handled like unfinished
comments.
|
|
|
|
|
|
|
|
This closes #35 and closes #36.
|
|
Everything that is a unique prefix should now be allowed
for a given command.
|