A vi-like editor based on Plan 9's structural regular expressions
OTHER License
Bot releases are hidden (Show)
This release has been long in the works but its time now. There have been many additions and bugfixes since 0.8. In particular changes to the Lua API have made it easier to extend vis
in all sorts of ways that were previously difficult or impossible. As always the appreciation towards contributors new and old can not be understated; thanks goes out to everyone for their efforts!
A summary of changes follows:
win:style_pos()
for styling a specific window cell.UI_DRAW
event for last minute changes to the drawn window.:X/re/q
)gU
and gu
.The option names show-spaces
, show-tabs
, show-newlines
, show-eof
, and change-256colors
are all deprecated and will be removed for the next release, use the name without the -
instead (e.g. showeof). This was done to avoid inconsistencies between the lua option names and the :set option
names.
The complete changelog can be viewed using git log v0.8..v0.9
or clicking here.
Published by ninewise almost 2 years ago
This is a release of vis as it has been for more than a year before some development started up again. We're releasing this version to get a stable 'old' release out there which should still contain a number of bugfixes compared to 0.7.
Full Changelog: https://github.com/martanne/vis/compare/v0.7...v0.8
Published by martanne almost 4 years ago
This is mostly a bug fix release with fixes for a few cases of undefined behavior and preliminary work for experimentation with different core text management data structures and general editor architecture.
*at()
variants taking directory descriptor for file load/save APIvis.mark
, vis.register
, vis.win.file.modified
:set ignorecase
option to search case independently<C-a>
to select all matching selections<C-c>
<C-n>
in normal mode<C-n>
behavior in visual modeie
, ae
inner/outer entire text object, use :,
as shorthand for :0,$
z>
, z<
, z-
, z+
, z&
, z|
~
as alias for g~
~
instead of !
for selection complementvis-open(1)
adds a trailing slash to indicate foldersvis-clipboard(1)
wl-clipboard(1)
distclean
, testclean
Published by martanne over 4 years ago
:set redrawtime
option:i3/-/
<C-n>
in visual mode match next occurence of existing selectionfsync(2)
support on directory descriptorsfile~
when saving file
vis-menu(1)
exit codes:q
and :qall
commandsmkstemp(2)
^
and $
in searches and looping commands:set layout
option to specify window orientationgp
, gP
, gq
g~
, gu
and gU
using tr(1)
, they are no longer operatorsv
and V
in operator pending mode$TERM
is unset:>
command:
command executionr<Enter>
insert a new line:set loadmethod
option, valid values are read
, mmap
or auto
:|
command to existing selections:X
and :Y
commands which were interchangedPublished by martanne over 6 years ago
Fix for a buffer overflow when dealing with invalid/incomplete
Unicode sequences which caused an infinite loop/crash. With default
compilation flags this should not be exploitable, but opening a
malicious file would lose all unsaved changes.
Fix color support in ncurses 6.1
New default 256 color theme: zenburn. It should hopefully work
better with the default color palette.
Updated Docker based builds (make docker
) to use latest Alpine
Linux packages to produce a statically linked, self-contained binary.
Take symbolic keys into account when evaluating key prefixes (ci<
is not a prefix of ci<Tab>
).
Improved paragraph text objects.
Reset count after handling ,
Lexer updates for Clojure, Scheme, ASM, Pony, PHP, Python, Erlang,
xs and ReasonML.
Correct handling of g/^$/
construct to match empty lines in
commands like:
x g/^$/ d
<C-v><Enter>
now inserts \r
rather than \n
, this currently also
affects r<Enter>
which might not be desirable.
Fix command prompt malfunction triggered by special cursor position.
Configure script can be interrupted.
Removed !
operator, use :|
Ignore SIGQUIT
vis-open(1)
fixes
Published by martanne about 7 years ago
Selections as core editing primitives. Cursors have been superseded
by singleton selections. Overlapping selections are now merged. This
change is also reflected in the exposed Lua API (for which still no
stability guarantee is given).
Selections can be saved into marks on which set operations can be
performed:
m
save selections
M
restore selections
|
set union
&
set intersection
\
set minus
!
set complement
z|
pairwise union
z&
pairwise intersection
z+
pairwise combine, choose longer
z-
pairwise combine, choose shorter
z<
pairwise combine, choose leftmost
z>
pairwise combine, choose rightmost
Marks are specified using '{mark}
analogous to "{register}
.
Jump list based on marks:
g<
jump backward
g>
jump forward
gs
save currently active selections
New register #
to insert the current selection number.
Drop special handling of \r\n
line endings. \r
will be displayed
as ^M
. Enter will always insert \n
.
Fix Unicode regex search with libtre backend.
New count specifiers for sam's g
and v
commands to keep/drop
selections based on their index.
On macOS saving files larger than INT_MAX bytes should work.
New :set show-eof
to toggle the display of end of file markers ~
as before it is enabled by default.
Double leading slashes of paths are stripped.
Improved :<
command implementation to only use a pipe when necessary.
New lexers for Myrddin and strace(1), updates for Elixir, Perl
and Forth.
Fix compilation for GNU Hurd. The vis package is now built for all
supported Debian architectures.
Improve job control of forked processes. SIGINT is now properly
delivered to child processes.
Commands given a huge count can now be interrupted using .
This is implemented in cooperative fashion, meaning a single long
running operation can still not be interrupted.
More efficient line wise motions based on optimized mem{r,}chr(3)
libc functions.
Optionally support vim compatible n/N search direction.
Reproducible, statically linked, self contained binary built using
the Alpine Docker image. The idea being that it is a single file
which can be copied to any Linux >= 2.6 system to provide a usable
editor. It has an embedded tar archive which contains the required
Lua support files which are extracted to a temporary directory using
libuntar.
Preliminary C API documentation found at: http://vis.rtfd.io
Updated manual page.
Various code cleanups.
Check the git log for further details.
The release tarball is signed with OpenBSD's signify tool, the signature
untrusted comment: verify with vis.pub
RWRbDa94LCndL/v7m45zQw4saMKs5AsnTKBsvvFujZbAi9CIhlyiz0fihaWYbHkWDO957Csn5yJvecac+iUxX7arQ5IxZ4XRcQE=
can be verified using the following public key:
untrusted comment: vis editor signify public key
RWRbDa94LCndLy4pUdO6h1PmS1ooHOGb7p84OfQIR7+hFlZwuAXUdQ5J
Published by martanne over 7 years ago
Most notable changes include:
support for sam's structural regular expression based command language
various bug fixes related to multiple cursor/selection support. New
functionality to navigate among cursors (<C-u>
, <C-d>
), align
(<Tab>
, <S-Tab>
), rotate (+
, -
), trim (\
) or drop
(<C-c>
, <C-l>
) selections.
improved Lua API, featuring a new event subscription mechanism and the
possibility to define custom operators, motions, text-objects, :set
options and more. Notice however that at this point no API stability
guarantee is provided.
You might have to update your visrc.lua
configuration file, check the
Documentation for details:
new standalone tools vis-menu (:o .
), vis-digraph (<C-k>
) and
vis-complete (<C-k>
) for a simple file open dialog, digraph support
and word completion, respectively.
multiple bug fixes for vi(m) functionality, including improved count
and repeat handling as well as better cursor positioning, cw
, shift,
join and autoindent implementation.
new key mapping processing based on longest unique match
optional libtre based regex backend for more memory efficient forward searches
respect umask when creating new files, previously they were only
read/writable by the current user. Also fsync(2) destination
directory after rename(2) when performing an atomic save operation.
new :set
options to configure the used shell, escape delay, file save
method and context to consider for syntax highlighting
True color support in lexer themes, in case the terminal supports
color palette changes
minimal built-in :help [pattern]
command
incorporated upstream changes to LPeg based lexers used for syntax
highlighting from the Scintillua project
new set of manual pages in mdoc format
experimental raw vt100 UI backend for resource constraint environments
various code cleanups and bug fixes reported by static analysis, runtime
interpretation and fuzzing tools
Check the git log for further details.
The release tarball is signed with OpenBSD's signify tool, the signature can
be verified using the following public key:
untrusted comment: vis editor signify public key
RWRbDa94LCndLy4pUdO6h1PmS1ooHOGb7p84OfQIR7+hFlZwuAXUdQ5J