| Age | Commit message (Collapse) | Author | Files | Lines |
|
The path argument will be nil.
|
|
The first argument is the file object while the second argument denotes
the full path to which it will be written. Path might be `nil` if the
file is going to be written to stdout.
The Lua function is expected to return a boolean value indicating whether
the write operation should proceed or be aborted.
|
|
The passed path can be different from file.name for instance when
opening a file `a` and then doing `:w b` where file.name will be the
former and path the latter.
|
|
Indicating that the event is triggered *after* a successfull write.
|
|
Except for special commands like `w` and `wq` treat the cursor
as an implicit one character selection to which the command is
applied.
|
|
|
|
If the shell command is omitted, the last shell command (of any type)
is substituted. The most recently used shell command is stored in a
new register currently named `!`.
|
|
As in sam if an empty regex // is provided we substitute in the most
recently used one.
0/regexp///
Will match the second occurrence in the fie.
|
|
As in visual mode write commands have to be forced with ! if the changes
are destructive i.e. only parts of the file are written.
|
|
|
|
No functional changes.
|
|
Add another layer of indirection, move actual event generation
code to a dedicated function.
|
|
In preparation to move argument parsing code out of vis.c.
|
|
|
|
:0 < echo "Should be inserted at the start of the file"
:1 < echo "Should replace the first line"
|
|
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.
|
|
|
|
We need to distinguish between an explicit given zero and an
omitted value which should default to 1.
This should fix the following constructs which rounds up/down
an existing selection to whole lines -0,+0 and -0+,+0-
|
|
Something like :{ x/pattern/ } should not leave the original
cursor around.
|
|
The following
x/example/ y/e/ i/-/
should produce `-e-xample-` where before it would wrongly
result in `-e-xample`.
|
|
Previously something like
:x/pattern
:c/replacement
would cause all cursors to disappear because the location
they were placed on was deleted beneath them.
|
|
Something like :{ x/pattern/ } should select all occurrences of pattern.
|
|
|
|
Any white space should terminate the command name.
In particular multi-line commands as part of a group
were not handled correctly.
|
|
\\ should not be treated specially when parsing regular expressions.
|
|
|
|
Avoid intermediate shell.
|
|
:e without any argument can be used to reload the file from
disk whereas before a "Filename expected" error would be
displayed.
|
|
Close #387
|
|
We use an adapted variant of sam's structural regular expression
based command language. The initial implementation was partially
based upon the following functions from sam / acme:
* parse.h / edit.h (struct definitions)
* cmd.c / edit.c (functions parsecmd, simpleaddr, compoundaddr)
* xec.c / ecmd.c (cmdexec)
* address.c / addr.c (address)
It turns out the relevant code can be traced back to the initial
X11 port of sam which is distributed under an ISC-like license
instead of the Lucent Public License Version 1.02 used for Plan 9,
plan9port and 9base.
http://www.netlib.org/research/
http://www.netlib.org/research/sam.shar
Hence we switch to the simpler license variant.
Close #238
|
|
The help formatting could probably be improved, short
single line help texts are still missing. Patches welcome.
Close #283
|
|
|
|
|
|
Fixes #364
|
|
Handling of unbalanced quotes could probably still be improved.
Closes #344
|
|
|
|
Try to display a shorthand version in the status bar, this currently
only works for files below the current working directory of the editor
process.
|
|
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 fixes the argument parsing for the :{un,}map-window commands.
|
|
This has the effect that multiple filter commands can be undone together.
|
|
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.
|
|
|
|
The built in commands should always be available.
|
|
|
|
Also in visual mode, warn if :w is not forced by ! because the file
will be reduced to the active selection.
|
|
There are some nasty differences between the meaning of ^ in
Plan 9's regexp library and POSIX when using REG_NEWLINE.
The former only matches at the beginning of a line wheras the
latter matches the zero-length string immediately after a
newline character \n. As a result this also matches after the
very last newline at the end of the file.
This is undesired behavior for a command like :x/^/c/#/
Hence we try to filter out this last match.
Close #264
|
|
Close #263
|
|
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
|
|
If no address is provided these commands no longer apply to the whole
line, but instead will insert the output of the external program
at the current cursor location.
|
|
Close #220
|