tl;dr: I suggest a nicer approach to configure the common completion
prefix, preliminary implementation is here [3].
Hello,
in 2023, I had little success in changing the colouring used by
readline for the common completion prefix. Back then, I attributed [1]
this to a presumed (incorrectly) incompatibility between `dircolors`
and readline's expectation of the “custom suffix” it finds in
`$LS_COLORS`.
In 2024, Daniël raised concerns that the "fix" was an unnecessary,
breaking change, and correctly analysed [2] the situation:
> My concern is that the author of the original bug report might simply
> have been unaware of the `dircolors` configuration syntax that allows
> for suffixes without leading dots. This concern is based on the fact
> that the original bug report never mentions the "*extension" syntax;
> the bug is purely based on the obsolete ".extension" syntax.
You nailed it. =(
Okay, I've messed this up. My sincere apologies!
At that point, I was not subscribed to the list anymore (I'm afraid, I
have to be economical with the amount of lists I follow), otherwise I
would have written this earlier.
Because, aside from a lack of understanding of the `dircolors` syntax,
my original post [1] also contained a second approach that I would
like to raise again:
To me, it feels wrong to have the colouring of the completion prefix
defined in `$LS_COLORS`. The prefix colouring is not used by `ls` (we
all hope `ls` never finds it), the completion prefix is not a file
extension or file type by any stretch of imagination, it should have
nothing to do with `dircolors`, and IMHO it should not be in the
environment.
Also, there are currently two places that control completion prefix
colouring, the boolean variable `colored-completion-prefix` in
`~/.inputrc`, plus the entry in `$LS_COLORS`.
I was suggesting to combine this into a single, string-valued variable
in `~/.inputrc`, which contains the colour code if colouring is
desired, and is unset otherwise:
The single line
set completion-prefix-color 32;4
in `inputrc` would replace the two lines
set colored-completion-prefix on
*readline-colored-completion-prefix 32;4
currently spread out to `inputrc` and `dircolors`.
The new approach would not involve `$LS_COLORS` when colouring the
common prefix, which also makes changing this value much easier (no
chin-ups required to get this into the environment of every process).
I do maintain that this is a much nicer approach.
I have a preliminary implementation [3] for you to review. Consider
this a draft, I think I have not fully understood the interaction
between `completion-prefix-display-length` and
`colored-completion-prefix` hinted at in file `CHANGES` line 109!
The branch `sk_completion_prefix_color` is based on the current
`master` (15970c4) of readline.
$ git remote add s5k6 '[email protected]:s5k6/readline.git'
$ git fetch s5k6 sk_completion_prefix_color
$ git sw sk_completion_prefix_color
$ ./configure && make && make -C examples
Prepare a modified `inputrc` file, the following copies your
`/etc/inputrc`:
$ sed '/colored-completion-prefix/d' /etc/inputrc > inputrc_mod
$ echo 'set completion-prefix-color 46;30' >> inputrc_mod
$ LS_COLORS= INPUTRC=inputrc_mod examples/rl <<< $'pa\t'
This should list the files in the current directory starting with
`pa`, and this very prefix should be highlighted.
According to feedback, I'm willing to put a more effort into this,
e.g., fixing coding style or updating documentation.
Cheers
Stefan
[1]: https://lists.gnu.org/archive/html/bug-readline/2023-08/msg00018.html
[2]: https://lists.gnu.org/archive/html/bug-readline/2024-10/msg00004.html
[3]: https://github.com/s5k6/readline/tree/sk_completion_prefix_color
--
Stefan Klinger, Ph.D. -- computer scientist o/X
http://stefan-klinger.de /\/
https://github.com/s5k6 \
I prefer receiving plain text messages, not exceeding 32kB.