| Age | Commit message (Collapse) | Author |
|
|
|
Colorizing long lines can be costly, remove all the invisible atoms
earlier. Also optimize ForwardHighlighterApplier further by trimming
empty lines.
|
|
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
|
|
Insert a space to replace the half glyph and ensure the rest of the
line is correctly aligned.
Fixes #4843
|
|
Erasing fully trimmed display atoms one by one means we have to
shift all the remaining ones every time. This is wasteful and we
can just erase all the fully trimmed atom in one go.
Fixes #4797
|
|
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
|
|
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
|
|
When a replaced buffer range atom was starting exactly at the
location we wanted to split onto the code would split *after*
that atom instead of before.
Fixes #4052
|
|
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.
|
|
If char is signed, the test was invalid
Fixes #3389
|
|
|
|
|
|
Fixes #3333
|
|
|
|
This is tricky to fix better than that as tabs make text length
dependent on where it will get displayed and what preceedes it.
Also fix an issue with empty info title
Fixes #2237
|
|
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
|
|
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
|
|
|
|
Support arbitrary orders for column highlighters (it was previously
failing when column highlighters were not applied in column order).
Fix show_matching tab handling at the same time (horizontal scrolling,
tab characters and show_matching were behaving badly).
Window highlighting now runs user highlighters, then built-ins for each
phases, instead of running all phases for user highlighters, then all
phases for built-ins.
We now consider unprintable character to be 1-column width as we know
we will display them as "�".
Fixes #1615
Fixes #1023
|
|
|
|
Previous implementation was erasing in the middle of the atoms
vector each time two atoms were merged, leading to a move of
all following atoms.
|
|
|
|
|
|
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
|
|
|
|
Fixes #1250
|
|
|
|
Antislashes did not need to immediately precede a face spec to
escape it, it could be in any characters before it.
|
|
Fixes #864
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
Face also stores the attributes
|