| Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
Terminal.app sets $TERM=xterm-256color and ships a corresponding
terminfo description advocating that it is capable of color changes
to the 256 color palette when in fact it can not.
We introduce a new boolean option "change-256colors" which is
true by default but can be used to disable color changes. It is
automatically set if Terminal.app is detected using $TERM_PROGRAM.
This should fix display artifacts as described in #456.
|
|
Send SIGSTOP to process group. This should fix job control when
launched from a script.
|
|
Do not restore color palette for :! commands (i.e. in ui_terminal_save).
By far the most common use of this is to invoke vis-menu(1)
(e.g. indirectly through `:open .` or for word completion).
Restoring the palette in this case also affects the file content still
being visible above the menu thus causing weird display artifacts.
Use the OSC 104 escape sequence to reset color palette. This should
respect custom color profiles.
|
|
|
|
The algorithm for computing the [16,256) range of the `standard' 256
colors comes from 256colors.pl from XFree86's xterm tree, which appears
to have given rise to the standard colors.
|
|
|
|
When ncurses reports can_change_color(), have color_find_rgb() define
use the exact color requested by modifying ncurses' current palette.
Make an honest effort at restoring this palette on shutdown, though we
can't be positive it's correct.
|
|
|
|
|
|
Move all signal handling code out of "library" code into user application.
|
|
|
|
This is already taken care of by libtermkey. Also we did not check
whether we actually had a valid state to restore.
|
|
We are no longer using curses for input handling, hence this
code is obsolete.
|
|
Libtermkey tries to write a terminal initialization sequence even when
stdin is not a terminal as is the case when running `vis < /dev/null`
or within the Travis CI environment.
The broken code is in libtermkey's driver-ti.c function `start_driver`:
/* There's no point trying to write() to a pipe */
if(fstat(tk->fd, &statbuf) == -1)
return 0;
if(S_ISFIFO(statbuf.st_mode))
return 1;
Instead they should simply be using isatty(3).
As a workaround we catch the resulting EBADF failure and try to re-open
/dev/tty as stdin. If this fails too (as is the case in the Mac OS X
Travis CI runner) create an abstract termkey instance instead. In this
state vis will not be able to consume any input and will instead spin
with 100% CPU usage in the mainloop. This is solely done to make the Lua
tests, which control vis through other means, work within the Travis CI
environment.
|
|
Do not initalize curses UI before it is actually needed.
Move vis command line argument parsing logic into main.c.
This fixes `vis -v` output and exit status.
Fix #351
|
|
|
|
|
|
|
|
When multiple selections are being displayed and the selection
orientation is changed, the complete primary selection was
wrongly colored in the style of the primary cursor.
|
|
Up until now only the background color could be changed.
|
|
The language map translation should not take modifiers into account.
For example if `a` is mapped to `b` then `<M-a>` should also be mapped
to `<M-b>`.
Fix #404
|
|
|
|
|
|
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
|
|
|
|
Make window status bar content configurable via Lua.
|
|
|
|
|
|
|
|
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 handles (notices the missing - at the end of the command line):
$ printf ":new\n" | vis
more gracefully. This instructs vis to read commands (not file content)
from stdin. Once all input from stdin is consumed we open /dev/tty
and start processing regular keyboard input instead.
|
|
Blinking caused more problems (#251, #202) than it solved. Blank cells
were especially problematic.
|
|
Close #224
|
|
If there exist multiple cursors, [n/m] is added to the status bar.
Meaning the n-th cursor out of the existing m cursors is currently
the primary one.
|
|
|
|
|
|
This is important for files without associated syntax highlighting.
The selections should now again be visible.
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
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.
|
|
|
|
|