| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
Since C++20 (a != b) get automatically rewritten as !(a == b) if
the != operator does not exist.
|
|
The pointer type alias was missing from FlattenedView::Iterator causing
std::iterator_traits to be an empty class.
|
|
As reported in #4615 and others, GCC 12.1 emits deprecation warnings
because we use std::iterator. Replace it with the modern equivalent.
Closes #4615
|
|
This avoids allocating a KeyList vector in which to flatten all
the different arguments and simplifies the client logic.
|
|
Use CTAD instead of make functions, requires instead of enable_if
|
|
|
|
The buffer whose path is under the main selection will be focused
after all others have been opened.
Closes #2164
|
|
|
|
|
|
|
|
The first attempt at a bug fix for @ symbols in selection buffer names
worked, but it was very inefficient. In particular, it allocated three
different vectors, and we really only needed the correct elements.
Manipulating iterators to give us the right slices of the existing
vector is far more efficient.
By reversing the original content and taking the last two, we're able to
get the number of selections and main selection without too much hassle.
The buffer name is everything from the start of the content to the
selection count. This gets us through with only one vector allocation.
Credit to @mawww for the optimization idea and for fixing my types.
|
|
The selection descriptions use the format
`<buffer>@<timestamp>@<main_index>`. This fails when file paths have `@`
symbols in them: the parser splits on `@` symbols and finds more values
than it expects.
We here modify the behavior to require *at least* two @ symbols, using
the last two for `<timestamp>` and `<main_index>` and leaving the
remaining text for the <buffer>. This should work for any number of `@`
symbols, since `<timestamp>` and `<main_index>` are numbers and should
never contain `@` symbols.
|
|
|
|
|
|
|
|
|
|
This should greatly improve performances as we only need to diff
lines instead of individual characters.
Closes #2678
Fixes #2037
|
|
In particular, this make gathering a transformed range to a vector
faster because we can use the random access nature of underlying
iterator to get the size to allocate in the vector upfront.
|
|
|
|
Provide the heap based n-best algorithm through a nice interface.
|
|
|
|
Session/Client/User modes names are now requiered to be "identifiers"
they must be in [a-zA-Z0-9_-]. Option names are the same except they
do not allow '-' as they need to be made available through the env vars
and '-' is not supported there.
Fixes #1946
|
|
This overload will forward to the general transform implementation
using std::mem_fn to generate a callable.
|
|
Some iterators were refering to to their view with a const ref, this
was making them non-copiable. Change those const ref into const pointers
in order to fix that.
|
|
|
|
Always consider that the first selection in the list is the main
one, save selections that way.
This approach was suggested by PR #1786 but the implementation here
is different, and is used more generally whenever we save selections
to strings.
This is also the prefered way to work only on the main selection:
save selections with Z, reduce to main with <space>, restore with z.
Closes #1786
Fixes #1750
|
|
|
|
Do not allocate temporary vectors to store splitted data, use the
'split' range adaptor along with transform(unescape) to provide the
same feature with less allocations.
|
|
Introduce a get_user_name function which parses '/etc/passwd' to find
the username associated with a user id.
|
|
|
|
|