| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
in this case just write smcup/rmcup
also move down +1 line and reset formatting if alt screen is off
|
| |
|
|
|
|
|
|
|
|
|
| |
Some terminal emulators (AKA vte) refuse to set ws_xpixel and ws_ypixel
in the TIOCGWINSZ ioctl, so we now query for CSI 14 t as well. (Also CSI
18 t for good measure, just in case we can't ioctl for some reason.)
Also added some fallback (optionally forced) config values for width,
height, ppc, and ppl. (This is especially useful in dump mode.)
|
|
|
|
|
|
|
|
|
|
|
| |
The -cha-ansi color type now sets ANSI colors in CSS.
Also, color correction etc. has been improved a bit:
* don't completely reset output state in processFormat for new colors
* defaultColor is now separated from ANSI color type 0
* bright ANSI colors are no longer replaced with bold + dark variant
* replaced ANSI color map to match xterm defaults
|
|
|
|
|
|
| |
The API is horrid :( but at least it copies less.
TODO: think of a better API.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Until now, the config file required manual adjustment for the output to
look bearable on terminals colored differently than {bgcolor: black,
fgcolor: white}. Also, it only detected RGB when COLORTERM was set, but
this is not done by most (any?) terminal emulators (sad).
To improve upon the situation, we now query the terminal for some
attributes on startup:
* OSC(10/11, ?) -> get the terminal's bg/fgcolor
* DCS(+, q, 524742) -> XTGETTCAP for the "RGB" capability (only
supported by a few terminals, but better than nothing)
* Primary device attributes -> check if ANSI colors are supported, also
make sure we don't block indefinitely even if the previous queries
fail
If primary device attributes does not return anything, we hang until
the user types something, then notify the user that something went
wrong, and tell them how to fix it. Seems like an OK fallback.
(The DA1 idea comes from notcurses; since this is implemented by pretty
much every terminal emulator, we don't have to rely on slow timing hacks
to skip non-supported queries.)
|
|
|
|
| |
no need for every new buffer to query the window size
|
|
|
|
|
|
| |
This is required by the standard. (Without this, lots of websites have
incorrect background colors, because they set the body height to 100%
of the viewport.)
|
|
|
|
| |
Pointless; it just returned a default zero-initialized object.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add functions for moving to the beginning/end of words (vi `b', `e').
* As it turns out, there are many possible interpretations of what a
word is. Now we have a function for each reasonable interpretation,
and the default settings match those of vi (and w3m in w3m.toml).
(Exception: it's still broken on line boundaries... TODO)
* Remove `bounds` from lineedit, it was horrible API design and mostly
useless. In the future, an API similar to what pager now has could
be added.
* Update docs, and fix some spacing issues with symbols in the tables.
|
|
|
|
| |
It is mostly unnecessary, and conflicts with our use of termcap anyway.
|
| |
|
|
|
|
| |
much better
|
|
|
|
|
| |
Avoid computing e.g. charwidth data for http which does not need it
at all.
|
|
|
|
|
|
|
|
|
|
| |
* Add select & copy selection functionality to container
* Fix bug in generateSwapOutput where output could be misplaced
because of zero-width cells
* Add fromJSPromise, call runJSJobs in every iteration of the
headed event loop
* "await" pager actions that output a promise
* Change default view source keybinding to `\'
|
|
|
|
|
| |
pager.tty refers to infile, not outfile. rename to avoid further
confusion
|
|
|
|
|
| |
pkg-config does not find termcap (or really, ncurses) here, so we
have to find it ourselves.
|
|
|
|
| |
now it's a function
|
| |
|
|
|
|
|
|
| |
* rename module (window -> winattrs, to avoid conflict with env/window)
* do not use result
* remove unused cell_ratio
|
|
|
|
| |
this was causing crashes
|
| |
|
|
|
|
|
| |
We must decrease cursori by `len`, because exactly `len` bytes have
been deleted from before the cursor.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The editor box never uses the last cell. However, it should still
overwrite it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old lineedit system worked quite well in the original synchronous
model. However, because it needs access to the terminal, it has been
subtly broken ever since buffer updates are allowed while the user
is in line edit mode.
This is best observed in incremental search, where searching for a
bgcolor'ed text would result in the bgcolor bleeding into the line
editor box.
The new version is much simpler, and therefore less optimized. But
it can still take advantage of output optimization in the terminal
controller, and it is free of races (because we simply query the
current state from the pager and feed it into the main output grid).
|
|
|
|
|
|
|
|
|
|
| |
* ips -> io/
* loader related stuff -> loader/
* tempfile -> extern/
* buffer, forkserver -> server/
* lineedit, window -> display/
* cell -> types/
* opt -> types/
|
|
|
|
| |
makes a bit more sense than the previous arrangement
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now connect to buffers from the client, instead of connecting
buffers to the client. This has the following advantages:
* Simplifies the client event loop.
* Makes the client a real client (no more serversocket dependency).
* Slightly more secure, as we no longer have to trust buffers not
lying about their process ids.
* Facilitates the potential future addition of connections from
several clients to a single buffer.
|
| |
|
|
|
|
| |
changing addr semantics strikes again
|
| |
|
|
|
|
| |
And use that in extern().
|
|
|
|
|
|
|
|
|
|
|
| |
* Add an extern() call. Maybe it should be defined on client. It
certainly should accept a dictionary instead of the enum type we use
now. Perhaps it should return the error code?
I'll leave it undocumented until I figure this out.
* Refactor enableRawMode, unblockStdin, etc. so that they operate on
the term object instead of global state.
* Move editor to a separate folder, and factor out runprocess into
a different module.
|
|
|
|
|
|
|
|
| |
* it is now possible to jump to the nth line by typing {n}G
* gotoLine is now 1-based, so to go to the first line you would use
pager.gotoLine(1)
* it is now allowed to return a function from a keybinding (which will be
subsequently executed as a regular keybinding)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Split out parts of the JS module, because it was starting to confuse
the compiler a little.
(Peakmem is back at 750M. Interesting.)
|
| |
|
|
|
|
| |
This way we do not need the ugly getProperty call.
|
|
|
|
| |
Operation "modularize Chawan somewhat" part 1
|
|
|
|
|
|
|
|
| |
* add mailcap: works with copiousoutput, needsterminal, etc.
* add mime.types (only works with mailcap)
* refactor pipeBuffer
* remove "dispatcher"
* fix bug in directory display where baseurl would not be used
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* Use the output charset in lineedit (as w3m does)
* encoder: fix broken UTF-8 encoding, use openArray instead of var
seq for input queue
* Add RuneStream as an in-memory interface to EncoderStream
* Document display-charset config option
|