[dev] [vis] vis editor status update

From: Marc André Tanner <mat_AT_brain-dump.org>
Date: Tue, 28 Jul 2015 18:48:56 +0200


What follows is a quick overview of recent changes made to vis, my
vim-like editor:

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!


 Marc André Tanner >< http://www.brain-dump.org/ >< GPG key: CF7D56C0
Received on Tue Jul 28 2015 - 18:48:56 CEST

This archive was generated by hypermail 2.3.0 : Tue Jul 28 2015 - 19:00:12 CEST