| Age | Commit message (Collapse) | Author | Files | Lines |
|
This is inherently a tricky thing to do because we cannot rely on
the current display state. The reason being that the position/cursor
which is modified might not currently be in the visible area.
Tabs are a particular problem because they have a variable display
width. However this new code is certainly not worse than the current
behaviour which relies on text_line_char_{get,set} and thus simply
counts graphemes.
Not yet completely convinced that this is the right approach.
|
|
Since commit 197ab824206335eab7ceed774ddeccac18fafc09 visual line
and replace modes are child modes, hence we also have to consider
the window local key bindings of their respective parent modes.
For example in replace mode the key lookup chain is now as follows:
window local replace mode -> global replace mode ->
window local insert mode -> global insert mode
This fixes <Enter> behaviour in prompt for replace and visual line
modes.
|
|
This should actually make the search history functionality work.
The :-commands already worked because of commit e745b5ef.
Removing all trailing white spaces would be the wrong thing
to do for the search, because they might be part of the
desired search string.
|
|
We can copy the initial iterator and use it in reverse direction.
|
|
The field width specifier '*' expects an int.
be fine here since we are expecting a small positive number
and the result is
|
|
Also fix a few spelling mistakes.
|
|
This allows them to be placed into the read only ELF section.
|
|
Disable absolute line numbers for large files (currently
anything bigger than 32MiB). This speeds up moving around
with for example nn% since no new lines need to be calculated.
Of course movements like :nn will be unaffected.
The optimizations can be disabled by explicitly enabling
absolute line numbers as in :set number
|
|
The used regular expression \<%s\> where %s refers to the
search term/word under cursor is not POSIX compliant but
happens to work on both musl and glibc.
First try the alternate syntax [[:<:]]%s[[:>:]] which works
on Mac OS X. The reason it is done in this order is that
musl/glibc will reject it as invalid pattern when compiling
while the Mac OS X libc will accept \<%s\> but not match
anything.
Based on a patch by Erlend Fagerheim.
|
|
The behaviour when no match is found is not yet optimal.
|
|
Up until now text objects would only ever grow/expand if
applied multiple times. The new SPLIT type allows text
objects which cover a completely different range when
applied with a count.
|
|
|
|
Make replace mode a child of insert mode and visual line a
child of visual mode. This means any key binding for the
former is automatically available in the latter. Also keys
can not be unmapped solely from the child modes.
|
|
|
|
Based on a patch by Silvan Jegen.
|
|
|
|
|
|
|
|
The default key bindings are not changed for now, because <C-a>
conflicts with multiple cursor alignment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- split the functions, so the algorithms are more clear
- paragraph movements work backwards
- paragraph movements work consistently with \r\n line breaks always placing the
cursor on the first character of the first empty line before/after the
paragraph
- sentence movements now work better at BOF/EOF
- save a few lines of code
|
|
|
|
|
|
The name `stderr` was confused by the compiler with the following defines:
$ grep -r "define stderr"
./dependency/install/usr/include/stdio.h:#define stderr (stderr)
./dependency/sources/musl-1.1.12/include/stdio.h:#define stderr (stderr)
|
|
|
|
Both registers are currently treated identically.
The actual system integration is performed by two shell
scripts vis-copy and vis-paste.
|
|
|
|
|
|
Display Lua errors in a dedicated window/file. A typo or missing
dependency (e.g. lpeg) in visrc.lua will no longer silently fail
without any indication.
The Lua integration in view.h is not yet converted.
|
|
|
|
|
|
|
|
|
|
Moves to the given percentage of the file in bytes (not lines).
This is useful when dealing with huge files because it is a constant
time operation. Performance could still be improved by adapting the
display code not to rely on line numbers at all.
|
|
There are cases where zero can also be a legitimate count.
|
|
|
|
|
|
Note that cursors currently have only one default register.
|
|
|
|
The behaviour of <End> vs $ in various modes may still be
inconsistent, but at least it can now be configured via
key bindings.
|
|
This is still not 100% correct for all possible cases, but
should work for those currently used by vis e.g. the shift
left operator.
|
|
Some corner cases allowed to move between lines with the to/till movements.
The change in find_prev serves two purposes. When searching for a string which
the cursor is already above the match, this match is returned (pos += len).
Secondly there was a failure when searching for strings with len == 1 which lead
to `matched == 0` which was always true, even if the string was not found,
therefore leading to a wrong return value.
|