| Age | Commit message (Collapse) | Author | Files | Lines |
|
Boolean options can be toggled by appending `!` to the option name.
Close #435
|
|
|
|
Close #433
|
|
Specifies how the current file should be saved, `atomic` which uses
rename(2) to atomically replace the file, `inplace` which truncates the
file and then rewrites it or `auto` which tries the former before falling
back to the latter. The rename method fails for symlinks, hardlinks,
in case of insufficient directory permissions or when either the file
owner, group, POSIX ACL or SELinux labels can not be restored.
The option defaults to `auto`.
|
|
Only accept numbers in range [0, INT_MAX]. Reject trailing garbage,
where before something like `:set cc 50NaN` worked it will now cause
an error.
Close #418
|
|
When a file is opened in multiple windows we could end up in an
inconsistent state by doing:
$ vis some-file
:spl
:e
At this point the two windows were referencing different file objects
thus changes in one would not affect the other although they have
the same path.
Another option would be to reload all windows currently displaying
the file being reloaded. We opt for the simpler fix for now.
|
|
The `:!` command did redirect stdout to a pipe which was used by
`vis-menu` to return the selected entry. However, this breaks
other interactive commands such as `:!/bin/sh` where command
output was never displayed. Instead we modified `vis-menu` to
re-open /dev/tty for its user interface which makes it work
as a regular filter `:|`
This patch also obsoletes the interactive flag previously passed
to the vis_pipe function. Interactive mode is instead enabled
by piping an invalid range.
|
|
Make the delay used to distinguish between an <Escape> key and
other terminal escape sequences such as for the Meta key run
time configurable. The value is given in miliseconds and defaults
to 50ms.
Notice that terminal multiplexers like dvtm or tmux might also
induce some delay which has to be configured independently.
|
|
|
|
In preparation to move argument parsing code out of vis.c.
|
|
No longer accept "no" prefix for boolean options. Reject too many option
values (use proper quoting to specify values containing spaces).
|
|
|
|
It was the only command option which needed `=` to assign a value to.
This unifies the argument parsing logic and adds the possibility to
specify a per-option help text.
You might want to adapt your visrc.lua configuration accordingly.
|
|
These paths are used to load the Lua LPeg module (lpeg.so)
and are thus helpful when diagnosing setup problems in case
syntax highlighting does not work.
|
|
:e without any argument can be used to reload the file from
disk whereas before a "Filename expected" error would be
displayed.
|
|
The help formatting could probably be improved, short
single line help texts are still missing. Patches welcome.
Close #283
|
|
|
|
|
|
|
|
|
|
Previously the interactive mode was implicitly enabled by passing
an invalid range. However for some use cases (e.g. completion) we
need to be able to pipe a given text range to an external process
without also redirecting stderr (which is used to draw the slmenu
interface on top of vis).
|
|
|
|
This caused issues on OpenBSD where it crashed the terminal.
Also on Mac OS X suspend via ^Z (Ctrl-Z) was missing a \r i.e.
the shell prompt was not properly redrawn.
While in principle user interfaces should not have to depend on
libtermkey, in practice this won't be an issue unless we are
adding a non-terminal based UI (which won't happen anytime soon).
This reverts commit 8f92b98848f9366e78c7aa824615bade83971513.
Close #311
|
|
A concrete user interface implementation should not have to depend
on libtermkey. Therefore the vis core now uses an independent instance
to parse keys.
|
|
This is needed to make the vis.event.start Lua callback useful,
setting global options should be possible even if no windows exist
yet.
The :set command options should probably be cleaned up further,
some of them apply only to the currently active window while others
have a global effect.
|
|
Close #271
|
|
|
|
|
|
|
|
|
|
Can be used to specify the number of bytes before the visible area
to consider for syntax highlighting.
Defaults to 32K for now, whereas before it was 16K.
|
|
|
|
|
|
|
|
One should generally use <Space> in mappings:
:map! normal <Space> h
except for insert/replace mode where a literal space has to be used:
:map! insert " " foo
|
|
This should ease packaging for systems with an existing vis(1) binary.
|
|
Close #224
|
|
Close #236
|
|
|
|
|
|
The following vi commands have been dropped:
- saveas
- xit
- !
The following commands are only recognized in their short form:
- e (edit)
- q (quit)
- s (substitute)
- w (write)
- r (read)
|
|
For those not familiar with sam(1) more information can be found at
http://sam.cat-v.org/
For now sam commands can be entered from the vis prompt via :sam <cmd>
A command behaves differently depending on the mode in which it is issued:
- in visual mode it behaves as if an implicit extract x command
matching the current selection(s) would be preceding it. That is
the command is executed once for each selection.
- in normal mode:
* if an address for the command was provided it is evaluated starting
from the current cursor position(s) i.e. dot is set to the current
cursor position.
* if no address was supplied to the command then:
+ if multiple cursors exist, the command is executed once for every
cursor with dot set to the current line of the cursor
+ otherwise if there is only 1 cursor then the command is executed
with dot set to the whole file
The command syntax was slightly tweaked to accpet more terse commands.
- When specifiying text or regular expressions the trailing delimiter can
be elided if the meaning is unambigious.
- If only an address is provided the print command will be executed.
- The print command creates a selection matching its range.
- In text entry \t inserts a literal tab character (sam only recognizes \n).
Hence the sam command ,x/pattern/ can be abbreviated to x/pattern
If a command is successful vis switches to normal mode (and hence removes
any selections), otherwise the editor is kept in visual mode. The print
command "fails" by definition.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The mappings affect all non-input (i.e. insert/replace) modes.
They are useful for non-latin keyboard layouts, example usage:
:langmap ролд hjkl
Based on a patch by Dmitriy.
Close #161
|
|
This allows them to be placed into the read only ELF section.
|