make C-s and C-q available in key mappings
[vis/gkirilov.git] / CHANGELOG.md
blob394b15acd4a52942787415a73ae91f06b8a04b39
1 ## [0.9] - 2024-05-01
3 This release has been long in the works but its time now. There
4 have been many additions and bugfixes since 0.8. In particular
5 changes to the Lua API have made it easier to extend `vis` in all
6 sorts of ways that were previously difficult or impossible. As
7 always the appreciation towards contributors new and old can not
8 be understated; thanks goes out to everyone for their efforts!
10 A summary of changes follows:
12 ### Core
14 - Compare non-existing files by name and existing files by inode
15 - Do tilde expansion only for the tilde character at the beginning of the pattern.
16 - Add word wrapping via breakat and wrapcolumn options
17 - Add ansi escaping values and theming keyword for dimmed text
18 - Allow statusbar to disabled
19 - Default theme was changed to one that uses the terminal colors directly.
21 ### Lua
23 - filetype: support filetype detection via hashbang
24 - filetype: many new file extensions are covered
25 - Resync the lexers with Scintillua
26 - Implement Selection:remove()
27 - Allow underscore (_) in command names
28 - Allow nil in vis:pipe() File and Range parameters
29 - Add fullscreen param to vis_pipe_collect() and vis:pipe()
30 - Access and set all available editor options
31 - Implementation of the non-blocking process running Lua API
32 - Make expandtab and tabwidth options window-local
33 - Drop redrawtime option
34 - Add a Lua constant for UI_STYLE_LEXER_MAX
35 - Report viewport as lines in addition to bytes
36 - Add `win:style_pos()` for styling a specific window cell.
37 - Add `UI_DRAW` event for last minute changes to the drawn window.
38 - Report viewport dimensions
40 ### Misc
42 - Add a basic .editorconfig file
43 - Don't set _FORTIFY_SOURCE in configure
44 - Many documentation improvements.
45 - Make vis-open and vis-complete more POSIX compliant
46 - vis-clipboard: clean up bashisms and make shellcheck happy.
47 - vis-clipboard: add support for wayclip
48 - vis-open: allow to show files vertically
50 ### Bugfixes
52 - fix warning by dealing with error value from fchdir in text-io.c
53 - text-io: close "cwd" in all cases
54 - vis-complete: Fix commandline options handling
55 - vis-clipboard: make xsel honor --selection
56 - wl-paste and wl-copy should not add \n to the end of the clipboard.
57 - fix a bug with using regex to close windows (i.e. `:X/re/q`)
58 - Limit to lines within range for inner text objects
59 - vis-clipboard: don't fail when sel is primary on unsupported platforms
60 - fix { moving back too much if cursor is at start of a line
61 - Print keybindings containing space correctly in help window
62 - Prevent flickering in curses
63 - vis-menu: try to preserve valid Unicode points
64 - lua: make sure lpeg is in fact optional
65 - vis-single: respect TMPDIR
66 - lua: fail when mapping a key to an invalid handler type
67 - vis_pipe: correctly return non-zero exit status
68 - view: skip empty cells before applying a style
69 - sam: reject invalid ranges for cmd_extract ("x"/"y")
70 - Fix upper/lower case conversions with `gU` and `gu`.
71 - lua: complete-word: use internal regex for splitting words
72 - Theme application was refactored and should be more consistent now.
74 ### Deprecation Notices
76 The option names `show-spaces`, `show-tabs`, `show-newlines`,
77 `show-eof`, and `change-256colors` are all deprecated and will be
78 removed for the next release, use the name without the `-` instead
79 (e.g. showeof). This was done to avoid inconsistencies between the
80 lua option names and the `:set option` names.
82 The complete changelog can be viewed using `git log v0.8..v0.9`.
84 ## [0.8] - 2022-11-01
86 This is a release of vis as it has been for more than a year
87 before some development started up again. We're releasing this
88 version to get a stable 'old' release out there which should
89 still contain a number of bugfixes compared to 0.7.
91 - build: add git based version information back
92 - lexers: fix bug in bash lexer for last here-doc
93 - vis: make O implementation independent of mapping
94 - fix typos in comments
95 - lua: fix luacheck warnings
96 - vis: rename to/till motion internals
97 - vis: implement multiline to/till motions
98 - vis-lua: provide file.permission property
99 - Mention pkg-config in README
100 - lexers/strace: improve comments, field names and syscall
101   results
102 - lexers/git-rebase: also highlight break command
103 - filetype: Set "bash" for APKBUILD and .ebuild.
104 - filetype: Detect make shebang for "makefile".
105 - Adding .sv extension to verilog syntax highlighter
106 - build: update alpine in docker build to version 3.13
107 - sam: only skip the last empty match if it follows a newline
108 - sam: produce empty match at the end of looped range
109 - test: update
110 - gitignore: remove vim specific swap files
111 - sam: tweak handling of zero length matches in y commands
112 - sam: simplify trailing match handling for x/y commands
113 - vis: correctly close pipe connected to stdin of external
114   process
115 - add lua5.4 in configure script
116 - vis: Add readline Ctrl+A/E bindings
117 - ci: verify codecov script before using it
118 - ci: verify coverity scan script before using it
119 - filetype: Set "groovy" for Jenkinsfile
122 ## [0.7.1] README: x/freenode/c/libera/ - 2022-05-03
124 - Update the README to point to irc.libera.chat after the great
125   migration of 2021.
128 ## [0.7] vis version 0.7 - 2020-12-08
130 This is mostly a bug fix release with
131 [fixes for a few cases of undefined behavior](https://www.brain-dump.org/blog/finding-undefined-behavior-in-c-code/)
132 and preliminary work for experimentation with different
133 [core text management data structures](https://www.brain-dump.org/blog/rethinking-vis-text-management-data-structure/)
135 [general editor architecture](https://www.brain-dump.org/blog/vis-to-server-or-not/).
137 - fix UB in core text management data structure
138 - text refactoring, splitting out reusable text iterator and I/O
139   components
140 - new `*at()` variants taking directory descriptor for file
141   load/save API
142 - more efficient initial file read, avoiding spurious syscalls
143   and copy
144 - text API cleanups, const correctness improvements
145 - increased test coverage for core text data structure
146 - support for Lua 5.4
147 - Lua API improvements: `vis.mark`, `vis.register`,
148   `vis.win.file.modified` and support for terminal CSI events
149 - NetBSD support
150 - new `:set ignorecase` option to search case independently
151 - new visual mode mapping `<C-a>` to select all matching
152   selections
153 - fix mappings involving non-leading `<C-c>`
154 - minor file detection fixes for racket, node.js modules,
155   Typescript and liliypond
156 - new lexers for Zig, meson build system, Mikrotik RouterOS
157   scripts, Gemini
158 - improved inner word text object and its use for `<C-n>` in
159   normal mode
160 - improved `<C-n>` behavior in visual mode
161 - removed `ie`, `ae` inner/outer entire text object, use `:`, as
162   shorthand for `:0,$`.
163 - removed pariwise selection combinators `z>`, `z<`, `z-`, `z+`,
164   `z&`, `z|`
165 - remove `~` as alias for `g~`
166 - use `~` instead of `!` for selection complement
167 - remove special key and window related aliases
168 - `vis-open(1)` adds a trailing slash to indicate folders
169 - add primary clipboard support to `vis-clipboard(1)`
170 - support wayland clipboard using `wl-clipboard(1)`
171 - new Makefile targets: `distclean`, `testclean`
174 ## [0.6] vis version 0.6 - 2020-06-07
176 - bounded time syntax highlighting using the `:set redrawtime`
177   option
178 - support optional count for sam's text commands e.g. `:i3/-/`
179 - make `<C-n>` in visual mode match next occurence of existing
180   selection
181 - warn when attempting to write to an existing file
182 - improved file change detection based on inode instead of path
183   information
184 - fix file saves with modifications in file pre-save events
185 - fix save on file systems without `fsync(2)` support on
186   directory descriptors
187 - do not unlink `file~` when saving `file`
188 - introduce distinct `vis-menu(1)` exit codes
189 - modify Lua package.path to include <plugin>/init.lua
190 - performance improvements for the HTML, XML and YAML lexers
191 - new Julia and Elm lexers, better defaults for standard text
192   lexer
193 - support optional exit status in `:q` and `:qall` commands
194 - better temporary file creation using `mkstemp(2)`
195 - performance improvements in highlight matching parentheses
196 - improved behavior of `^` and `$` in searches and looping
197   commands
198 - improved search wrap around behavior
199 - new `:set layout` option to specify window orientation
200 - improved filetype detection by matching known filenames exactly
201 - support DragonFly BSD in configure script
202 - better manual page, fixed warnings
203 - removed `gp`, `gP`, `gq`
204 - implement `g~`, `gu` and `gU` using `tr(1)`, they are no longer
205   operators
206 - removed `v` and `V` in operator pending mode
207 - avoid crash if `$TERM` is unset
208 - keep selections after `:>` command
209 - normalize selections after `:` command execution
210 - show pending input queue content in status bar
211 - make `r<Enter>` insert a new line
212 - new `:set loadmethod` option, valid values are `read`, `mmap`
213   or `auto`
214 - always apply `:|` command to existing selections
215 - fix terminal UI on serial console
216 - various code cleanups, removal of VLA
217 - <Escape> resets count, if applicable
218 - fix `:X` and `:Y` commands which were interchanged
219 - don't strip executables by default, provide install-strip
220   target
223 ## [0.5] vis version 0.5 - 2018-03-25
225 - Fix for a buffer overflow when dealing with invalid/incomplete
226   Unicode sequences which caused an infinite loop/crash. With
227   default compilation flags this should not be exploitable, but
228   opening a malicious file would lose all unsaved changes.
229 - Fix color support in ncurses 6.1
230 - New default 256 color theme: zenburn. It should hopefully work
231   better with the default color palette.
232 - Updated Docker based builds (`make docker`) to use latest
233   Alpine Linux packages to produce a statically linked,
234   self-contained binary.
235 - Take symbolic keys into account when evaluating key prefixes
236   (`ci<` is not a prefix of `ci<Tab>`).
237 - Improved paragraph text objects.
238 - Reset count after handling ,
239 - Lexer updates for Clojure, Scheme, ASM, Pony, PHP, Python,
240   Erlang, xs and ReasonML.
241 - Correct handling of `g/^$/` construct to match empty lines in
242   commands like:
244     x g/^$/ d
246 - `<C-v><Enter>` now inserts `\r` rather than `\n`, this
247   currently also affects `r<Enter>` which might not be desirable.
248 - Fix command prompt malfunction triggered by special cursor position.
249 - Configure script can be interrupted.
250 - Removed `!` operator, use `:|`
251 - Ignore `SIGQUIT`
252 - `vis-open(1)` fixes
255 ## [0.4] vis version 0.4 - 2017-07-23
257 - 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).
259 - Selections can be saved into marks on which set operations can be performed:
261   `m` save selections\
262   `M` restore selections\
263   `|` set union\
264   `&` set intersection\
265   `\` set minus\
266   `!` set complement\
267   `z|` pairwise union\
268   `z&` pairwise intersection\
269   `z+` pairwise combine, choose longer\
270   `z-` pairwise combine, choose shorter\
271   `z<` pairwise combine, choose leftmost\
272   `z>` pairwise combine, choose rightmost
274   Marks are specified using `'{mark}` analogous to `"{register}`.
276 - Jump list based on marks:
278   `g<` jump backward\
279   `g>` jump forward\
280   `gs` save currently active selections
282 - New register `#` to insert the current selection number.
283 - Drop special handling of `\r\n` line endings. `\r` will be
284   displayed as `^M`. Enter will always insert `\n`.
285 - Fix Unicode regex search with libtre backend.
286 - New count specifiers for sam's `g` and `v` commands to
287   keep/drop selections based on their index.
288 - On macOS saving files larger than INT_MAX bytes should work.
289 - New `:set show-eof` to toggle the display of end of file markers ~
290   as before it is enabled by default.
291 - Double leading slashes of paths are stripped.
292 - Improved `:<` command implementation to only use a pipe when
293   necessary.
294 - New lexers for Myrddin and `strace(1)`, updates for Elixir, Perl
295   and Forth.
296 - Fix compilation for GNU Hurd. The vis package is now built for
297   all supported Debian architectures.
298 - Improve job control of forked processes. SIGINT is now properly
299   delivered to child processes.
300 - Commands given a huge count can now be interrupted using `.`
301 - This is implemented in cooperative fashion, meaning a single
302   long running operation can still not be interrupted.
303 - More efficient line wise motions based on optimized
304   `mem{r,}chr(3)` libc functions.
305 - Optionally support vim compatible n/N search direction.
306 - Reproducible, statically linked, self contained binary built
307   using the Alpine Docker image. The idea being that it is a
308   single file which can be copied to any Linux >= 2.6 system to
309   provide a usable editor. It has an embedded tar archive which
310   contains the required Lua support files which are extracted to
311   a temporary directory using libuntar.
312 - Preliminary C API documentation found at: http://vis.rtfd.io
313 - Updated manual page.
314 - Various code cleanups.
316 Check the git log for further details.
318 The release tarball is signed with [OpenBSD's signify
319 tool](http://man.openbsd.org/signify), the signature
321     untrusted comment: verify with vis.pub
322     RWRbDa94LCndL/v7m45zQw4saMKs5AsnTKBsvvFujZbAi9CIhlyiz0fihaWYbHkWDO957Csn5yJvecac+iUxX7arQ5IxZ4XRcQE=
324 can be verified using the following public key:
326     untrusted comment: vis editor signify public key
327     RWRbDa94LCndLy4pUdO6h1PmS1ooHOGb7p84OfQIR7+hFlZwuAXUdQ5J
330 ## [0.3] vis version 0.3 - 2017-03-26
332 Most notable changes include:
334 - support for sam's structural regular expression based command language
335 - various bug fixes related to multiple cursor/selection support. New
336   functionality to navigate among cursors (`<C-u>`, `<C-d>`), align
337   (`<Tab>`, `<S-Tab>`), rotate (`+`, `-`), trim (`\`) or drop
338   (`<C-c>`, `<C-l>`) selections.
339 - improved Lua API, featuring a new event subscription mechanism and the
340   possibility to define custom operators, motions, text-objects, `:set`
341   options and more. Notice however that at this point no API stability
342   guarantee is provided.\
343   You might have to update your `visrc.lua` configuration file, check the
344   Documentation for details:
345   http://martanne.github.io/vis/doc/
346 - new standalone tools vis-menu (`:o .`), vis-digraph (`<C-k>`) and
347   vis-complete (`<C-k>`) for a simple file open dialog, digraph support
348   and word completion, respectively.
349 - multiple bug fixes for vi(m) functionality, including improved count
350   and repeat handling as well as better cursor positioning, `cw`, shift,
351   join and autoindent implementation.
352 - new key mapping processing based on longest unique match
353 - optional libtre based regex backend for more memory efficient
354   forward searches
355 - respect umask when creating new files, previously they were only
356   read/writable by the current user. Also `fsync(2)` destination
357   directory after `rename(2)` when performing an atomic save operation.
358 - new `:set` options to configure the used shell, escape
359   delay, file save method and context to consider for syntax
360   highlighting
361 - True color support in lexer themes, in case the terminal
362   supports color palette changes
363 - minimal built-in `:help [pattern]` command
364 - incorporated upstream changes to LPeg based lexers used for syntax
365   highlighting from the Scintillua project
366 - new set of manual pages in mdoc format
367 - experimental raw vt100 UI backend for resource constraint environments
368 - various code cleanups and bug fixes reported by static analysis, runtime
369   interpretation and fuzzing tools
371 Check the git log for further details.
373 The release tarball is signed with [OpenBSD's signify
374 tool](http://man.openbsd.org/signify), the signature can be
375 verified using the following public key:
377     untrusted comment: vis editor signify public key
378     RWRbDa94LCndLy4pUdO6h1PmS1ooHOGb7p84OfQIR7+hFlZwuAXUdQ5J
380 ## [0.2] vis version 0.2 - 2016-03-25
382 no changelog, 240 commits between v0.1 and v0.2 tags.
384 ## [0.1] vis version 0.1 - 2015-12-31