| Age | Commit message (Collapse) | Author | Files | Lines |
|
The behavior is not exactly the same because vim preserves any
existing white spaces wihle we remove existing ones but do
not insert additional ones.
The vim behavior (essentially only deleating new lines) can be
achived using something like:
:x/\n/d
Close #374
|
|
|
|
Do not override implicit operator macro in command mode.
Fix #334
|
|
For unpaired text objects delimited by ", ' or ` if there is no preceding
symbol on the same line, advance starting position to first occurence on
the same line.
As a result ci" can be used to change the inner quotes on the same line
even if the cursor is currently to the left of the opening quote.
If the line contains no such symbol at all then the text objects will
will continue to match across line boundaries. This behavior is different
in vim where for example a ci" command on a line without any quotes has
no effect.
Close #358
|
|
Prefer quotation marks on the same line to when looking for matching pairs.
Improves #358.
|
|
|
|
Let vis_keys_feed always have an immediate effect. Previously,
if called from a key input handler the keys would just be added
to the input queue and processed once the current key handler
returned.
This also affects the exposed Lua API.
|
|
|
|
The regex(3) API we currently use, matches on NUL terminated strings.
Therefore it does not work for binary data. This commit adds loops
to manually skip over NUL bytes. While it does not work for patterns
which would match strings containing NUL bytes, it should improve the
most basic cases.
Binary file handling will need further improvements in the future.
Fixes #359.
|
|
This has the effect that ~ and $HOME will be expanded by the shell.
However it also opens files which do not yet exist.
Fixes #346
|
|
In general it might be a better idea to specify these kinds of text
objects in terms of characters belonging to them rather than listing
a set of delimiting characters.
Fixes #350
|
|
If a cursor is not currently visible it has no associated screen line.
Fallback to the corresponding logical line based variant. For example
`gj` is interpreted as `j`.
Fixes #354
|
|
|
|
Close #353
|
|
Fixes #364
|
|
Handling of unbalanced quotes could probably still be improved.
Closes #344
|
|
`vis.filetypes` can be found on [line 72 of `vis.lua`](https://github.com/martanne/vis/blob/master/vis.lua#L72), but is not present at all in lexer.lua.
Fix `lexers/README.md` to avoid further confusion.
|
|
Might fix #248
|
|
|
|
Except for special cases like gn and gN vis expected that a text object
would be a function mapping a position to a range as follows:
f: pos -> [start, end] with start <= f(pos) <= end
Clearly this condition does not hold for inner text objects when the
initial position i.e. the cursor is on the opening delimiter.
This also obsoletes the need for the SPLIT text object flag which should
be removed in a later commit if the current behavior is found to be
working as expected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The textw{,n} functions should probably be changed to not
accomodate for leading and trailing spaces. They should also
be changed to properly calculate the display width of an UTF-8
encoded string. Currently they will just return the number of
codepoints which is obviously wrong.
|
|
|
|
|
|
|
|
This is a not yet successful attempt to reduce terminal flickering
when resizing windows as is for example the case when entering
command mode.
UI related debug output can be enabled with:
$ make CFLAGS=-DDEBUG_UI=1
$ ./vis > log
|
|
Close #326
|
|
|
|
Despite how useful realpath is, apparently it's not POSIX and isn't
part of the BSD userland.
|
|
We still don't handle filenames that contain newlines, but we're
pressing against the limits of what portable POSIX shell can do. Besides
which, we're ultimately plumbing filenames into vis-menu which uses
newlines as a delimiter *anyway*, so there's not much we can do.
|
|
|
|
|
|
Rather than try to loop manually and build up a path, this new version
exec's itself for each new directory scanned. Functional changes
include:
- We `set -e` at the top of the script, so any surprising
permission-denied errors will automatically cause the script to exit
with a helpful error message.
- We now support the GNU "--" convention for splitting options from
filename arguments, just in case somebody happens across a directory
with a file named "-h" or "-p".
- If launched with a single filename parameter, we automatically return
it - if somebody writes ":e somepattern*" and it matches exactly one
file, we might as well open it directly.
- If we select a single filename parameter, we use `realpath` to build
an absolute path for it - much more reliable than trying to build up
a path while the user is navigating around.
- If launched with a single directory parameter, we change into that
directory and re-exec ourselves with ".." and all the files in that
directory as arguments. This means we don't have to handle selection
and recursion at the same time.
- Note that if we recurse into a directory, we pass the "-f" parameter
to suppress auto-selection - otherwise recursing into an empty
directory would immediately select the ".." entry and pop you back
out, which would be confusing.
- The new version doesn't bother trying to manipulate `$VIS_MENU_ARGS`
and sometimes add a prompt to it. Setting no prompt is the same as
setting the prompt to an empty string, so we can just use an empty
string as the default value.
One specific use-case that this change cleans up is giving ":e"
a pattern that matches multiple directories (for example, running
":e *e*" in the root of the vis repo). "ls -1" would list the contents
of each directory (without a prefix, so you couldn't select those files)
but would also print the directory names as headings followed by
a colon, so you couldn't usefully select the directory names either.
We get around this by only ever running "ls -1" without any arguments,
so it only scans the current directory.
|
|
Unlike the existing vis(1) manpage, this uses the `mdoc` macro set
because it's (very slightly) more modern, and OpenBSD only supports
`mdoc` while everybody else supports both.
|
|
I'm guessing at some point slmenu's author wanted to make the various
deletion commands move text to a kill-buffer, and then Insert and
Control-Y could yank from it back into the text field.
That clearly never happened, though, so this is dead code.
|
|
|
|
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.
|
|
|
|
|
|
This is based on the implementation of text_line_width_get
from text-motions.c. There might be an opportunity for code
sharing.
|
|
If loading fails because visrc.lua is not found, then simply
display an information message. However if there is a syntax
error, display a complete stack trace.
This fixes commit 352155889aad57f8cb6d20317ffef81073fb6533.
|
|
Output will be printed to stdout and can be enabled by:
$ make debug CFLAGS=-DDEBUG_LUA=1
$ ./vis > log
This commit also tries to make object creation slightly more robust.
|
|
|
|
Light object references are used to type check, but contrary
to full object references they are not stored in the Lua
registry.
This means that they are not bound to the object lifetime of
their corresponding C object. Hence such objects must not
be used after they have been free(3)-ed by the editor core.
Such lightweight object references are always re-created,
thus custom properties will not be stored across subsequent
accesses.
For now light object references are only used for cursor objects.
This should ix the crashes introduced by the recent changes
which make heavy use of the Lua API.
|