| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This unifies cursors and selections. The cursor are now represendted
as singleton selections.
|
|
This fixes the internal representation as well as the path
displayed in the status bar. Previously opening a file in
the root directory e.g. /foo would be display as //foo.
|
|
|
|
When we have nothing to write to an external process, redirect stdin to
/dev/null instead of using a pipe which is immediately closed.
Some commands change their behavior when used in a shell pipeline.
As an example the following did not work as expected:
:< ag pattern
Fix #556
|
|
For interactive processes started using `:!` stdout is redirected
to stderr normally used by vis to draw its user interface.
For some reason the first byte written by the interactive application
is not being displayed. I suspect it has something to do with the
terminal state change. For now we are writing a dummy space (which
is never shown) ourself to ensure that the complete output is visible.
Fix #545
|
|
By default we only update the screen once per main loop iteration.
This might change in the future, but for now we force an update when a
redraw is explicitly requested.
|
|
|
|
Rename some structures, add typedefs for function pointers, remove unused
arguments from vis_run.
|
|
We need to unblock SIGTERM for the child process. Also we should
deliver signals to the correct process group. This is still fragile
and will need to be rewritten when we finally introduce a global
event loop.
|
|
|
|
Add casts to uintptr_t to avoid unrelated pointer comparisons.
|
|
With enabled auto indentation and tab expansion in an empty buffer,
the following would insert one newline too many:
i<Tab><Enter>
|
|
Previously the # register was always reported as containing only
one entry. This wrongly caused the first value to be put at all
locations.
Fix #544
|
|
|
|
Now that register.h is no longer used by view.h we can move the struct
and function declarations to vis-core.h.
|
|
Decouple register content from cursors. Previously each cursor had
exactly one corresponding register. Now each register can save a
list of values whose lifetime is not tied to the cursor.
If multiple cursors exist and a put with a register holding only
a single value is performed, then this value is inserted at every
cursor location. If there are fewer values available than cursors,
then only the matching ones will be used. If a register holding
multiple values is inserted in a single cursor context, only the
first value will be used. Another option would be to join all
existing values. The details of this behavior might be changed
in the future.
<C-r> in insert mode has not yet been adapted and register handling
in general needs to be cleaned up further.
Fix #527
|
|
|
|
As currently implemented this will only work for operations which are
individually fast, but repeated many times (e.g. `1000000itext<Escape>`).
|
|
Use something like dos2unix(1) and unix2dos(1), if you
need to edit such files.
|
|
|
|
|
|
|
|
Currently the only "internal window" with a status bar is the information
window used to display Lua stack traces. We do not want to trigger events
for it, because that could result in further Lua errors. Nonetheless its
status bar should be properly redrawn to avoid display artifacts. That is
why we fall back to the built-in default status bar as used by non-Lua
builds.
|
|
When a file was being displayed in multiple windows and changes were
performed to the one showing the preceding file region, the syntax
highlighting of the window showing the later parts would get messed up.
|
|
|
|
|
|
It is no longer possible to change the used syntax by assigning to the
`win.syntax = name` field, instead the function win:set_syntax(name)`
should be called.
The distinction between filetype and syntax lexer to use should probably
be clarified/cleaned up at some point.
|
|
|
|
|
|
|
|
There is no need to treat the currently focused window specially.
|
|
Use pull instead of push based model for display code. Previously view.c
was calling into the ui frontend code, with the new scheme this switches
around: the necessary data is fetched by the ui as necessary.
The UI independent display code is moved out of view.c/ui-curses.c into
vis.c. The cell styles are now directly embedded into the Cell struct.
New UI styles are introduced for:
- status bar (focused / non-focused)
- info message
- window separator
- EOF symbol
You will have to update your color themes.
The terminal output code is further abstracted into a generic ui-terminal.c
part which keeps track of the whole in-memory cell matrix and #includes
ui-terminal-curses.c for the actual terminal output. This architecture
currently assumes that there are no overlapping windows. It will also
allow non-curses based terminal user interfaces.
|
|
|
|
|
|
Only extend end of range when the motion did so too.
As an example this prevents motions like `$dg_` from deleting the newline
which was the starting position.
|
|
|
|
The macro replay code has since been refactored, making this
obsolete. There is only ever one input queue from which keys
are interpreted.
|
|
$ ./configure --disable-help
shrinks the binary by about 20K on a x86_64 system.
|