Hi,
What follows is a quick overview of recent changes made to vis, my
vim-like editor:
https://github.com/martanne/vis
I've been using it for some time now and most of my needs are covered.
I hope to get a release out later this year. Unfortunately I probably
won't have time to work on it during the next couple of weeks.
Therefore it seems like a good time to get more testing feedback.
What is still missing? Which bug/feature needs to be fixed/implemented
for your daily usage?
Recent changes in no particular order include:
- multiple cursors/selection support
This is all brand new and quite rough around the edges. For example
selections are not merged if they overlap. I have a couple of ideas
for further improvements but currently not enough time to pursue them.
For now the (somewhat arbitrary, suggestions for better alternatives
welcome) recognized key bindings are, in normal mode:
CTRL-J create a new cursor on line below
CTRL-K create a new cursor on line above
CTRL-P remove least recently added cursor
CTRL-N select word the cursor is currently over, switch to visual mode
CTRL-A try to align all cursor on the same column
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
CTRL-O creates a new cursor at the start of every line covered by the
current selection
- undo tree implementation with corresponding :later and :earlier commands
- :! filter implementation, also used for :read and :read !
- :substitute implementation in terms of sed(1)
- integration of slmenu/dmenu for a file open dialog (e.g. :open *.[ch])
- more robust file save implementation (e.g. does no longer destroy links,
tries to preserve xattrs and hence SELinux labels if enabled)
- detection of file changes outside the editor when saving
- improved handling of file truncation on mmap-ed files
- insertion of verbatim characters based on Unicode code point (CTRL+V unnnn)
- option to display special symbols for white spaces :set show newlines=1 tabs=1
- highlight of matching symbols (e.g. parenthesis) when cursor is over them
- try to preserve column position when moving across lines
- ui separation, all curses related stuff isolated into one file
- introduction of some testing infrastructure for both low level unit tests
and high level editor tests (see test branch)
- dump piece chain and undo tree as graphviz graph (see text-dump branch)
Things I would ideally like to fix/implement before a release:
- improvements to repetition command (i.e. dot .) #44
- implement a minimal vim compatible swap/lock file #58
- history support for command and search prompt (although duplicating
shell/readline functionality inside the editor still feels wrong)
- increase test coverage (see test branch)
Long term goals/ideas:
- eliminate remaining global state, expose vis frontend as a library
- improvements to search functionality / efficient regex engine
- introduction of a proper (libuv based?) mainloop
- RPC interface #59 / client+server architecture
- quickfix functionality
- revise syntax highlighting code, investigate whether already existing
syntax definitions from other editors could be reused
- runtime key binding support?
- code completion (using slmenu/dmenu)?
As always comments and especially patches welcome!
Thanks,
Marc
--
Marc André Tanner >< http://www.brain-dump.org/ >< GPG key: CF7D56C0
Received on Tue Jul 28 2015 - 18:48:56 CEST