| Age | Commit message (Collapse) | Author |
|
|
|
|
|
Move more code into the implementation files to reduce the amount
of code pulled by headers.
|
|
After extracting the whole buffer content, a line can end up with
only non-range highlgihters pending which makes its range become
0.0,0.0, after running highlighting on the extracted range it gets
re-inserted but taking the min of existing range and inserted range
wrongly returns 0.0. Avoid this by detecting that the 0.0,0.0 range
does not actually mean anything when we have no ranged atoms.
Fixes #5001
|
|
In display_buffer.hh, the '->' operator is used on an iterator, but
(surprisingly) this is deprecated from C++20 because of x-value vs
l-value ambiguity. Now clang's -Wdeprecated-declarations warns about it
as we declare -std=c++2a. See
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf
which was adopted for 2019-03.
|
|
|
|
|
|
Colorizing long lines can be costly, remove all the invisible atoms
earlier. Also optimize ForwardHighlighterApplier further by trimming
empty lines.
|
|
The <functional> header was missing and the "hash.hh" was not used.
|
|
Range atoms should always appear in order, so we can iterate a single
time through the display lines and display atoms while applying
hightlighters to regions
|
|
Calculating the length of an atom means we need to decode every
codepoint and compute its column width. This can prove quite expensive
in trim_from as we can have full buffer lines, so on buffer with long
lines we might have to go through megabytes of undisplayed data.
|
|
Honor the split request by inserting an empty atom to make sure
client code can assume splitting does replace one atom with two
Fixes #4753
|
|
Instead of triming only buffer ranges, add a trim_from method to
display line to keep the initial N columns, we know how many columns
are used by non-trimable widgets in DisplaySetup::widget_columns so
we can just pass this.
Also restore the previous logic for face merging
Fixes #4670
|
|
Make the column highlighter faces final, and change final logic to
give precedence to the base face when both the base and new face are
final.
Fixes #4669
|
|
Using buffer end was confusing Window::display_position that
assumes display atom buffer locations are always increasing.
|
|
Always start with full buffer lines and trim the display buffer at
the very end, treat non-range display atoms as non-trimable in that
case and keep track of how many columns are occupied by "widgets"
such as line numbers or flags.
Fixes #4659
|
|
Preserve the active face accross lines
Fixes #4313
|
|
Fix atom text at display time, allow tabs/eol/etc... in display
atoms and escape them just-in-time
Fixes #4293
|
|
This likely has lots of rough edges, but should be an initial proof
of concept to support folding.
|
|
Partially selected ranges should not be replaced to make it possible
to see what is actually selected.
|
|
Optmize the code to avoid allocating like crazy, unify various
info style rendering, crop content and display markers that there
is more text remaining.
Fixes #2257
|
|
Fixes #2552
|
|
Pass an ArrayView<DisplayAtom> instead of a DisplayLine& so that
the newly common case of passing a single atom does not require
constructing a Vector.
|
|
|
|
|
|
Adapt window position to the changes that happened in the buffer
since last redraw.
Fixes #1989
|
|
Coordinates inside a display buffer are only valid for a certain
buffer content, they cannot be used once the buffer has been
modified.
Fixes #2034
|
|
|
|
set-face now takes a scope argument, and faces can be overridden on
a buffer or window basis.
colorscheme apply on global scope, which should be good enough for
now.
Fixes #1411
|
|
|
|
|
|
|
|
Instead of highlighting full lines and then trim them to make them
fit in the window, highlight only the visible portion, and rely on
the compute_display_setup system introduced for wrapping to setup
our buffer range correctly
|
|
|
|
Fixes #1257
|
|
|
|
|
|
Add a ColumnCount type and use it in place of CharCount whenever
more appropriate, take column size of codepoints into account for
vertical movements and docstring wrapping.
Fixes #811
|
|
Add a ranges highlighter that takes a timestamped list of ranges and
associated face. Add a spell.kak file that uses aspell pipe interface
to fill a range-faces option.
|
|
|
|
No need to define a default face there, we will pass a default face
to UserInterface::draw_status later.
|
|
The syntax is simply {face} to enable the given face, use \{ to
escape a {, and \\ to escape a \.
|
|
|
|
Fixes #268
|
|
|
|
The Default face is used to set default color values, if set
to default (the default), refers to terminal default colors.
|
|
|
|
|
|
|
|
|