bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#47012: xref copies keymap properties to minibuffer


From: Juri Linkov
Subject: bug#47012: xref copies keymap properties to minibuffer
Date: Thu, 01 Apr 2021 21:45:38 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu)

>> Using exactly the same grep colors in xref by changing
>> 'xref-match' to inherit from the 'match' face
>> completely solves this problem.
>
> You are right. I could even say "unfortunately", because IMHO the bright
> yellow highlights are too much. Too strong emphasis, visually.
>
> So let's change it to inherit from 'match', because that's what that face
> is documented to be used for.
>
> Additionally, what do you think about toning down 'match''s background
> color? Maybe use some subtler yellow like "lemon chiffon" or "khaki1"? Or
> "light goldenrod".

Such toning down is welcome since currently match's background is too intense.
Actually, I customized it long ago to "#ffff88" on one display,
and to "#ffffbb" on another display.  I guess "#ffffbb" is too radical,
but "#ffff88" should be fine and close to "khaki1" that is nicely looking as 
well.
Another variant is to update gradually, i.e. start with "#ffff66",
then after some time to "#ffff88".

>>> Please try (setq xref-file-name-display 'project-relative).
>> Thanks, I didn't know about this.  Shouldn't this be the default value
>> since this is what's displayed by grep and ripgrep.
>
> I wouldn't mind, personally.

This is added to the patch below too.

>> Actually, there is no exact option for what grep and ripgrep do,
>> because they display file names relative to the search directory.
>> But currently there is no xref option to display file names
>> relative to the subdirectory specified by 'C-u C-x p g'.
>
> This issue is tricky because xref-find-definitions does not assume the
> presence of a project, or even of any kind of containing directory. And
> yet, it's handy to show its results with relative file names when possible,
> too. So I picked "relative to the project" as the option value, and the
> corresponding logic.
>
> I think what you're talking about is only a problem when the directory has
> no containing project at all. In that case we could probably default to the
> value of default-directory as the reference.

Maybe it would be nice to default to default-directory even when
'C-u C-x p g' is used in a project.

What is the real problem for me is that after navigating to
a project's subdirectory (with e.g. dired) and typing 'C-u C-x p g',
it doesn't provide the current directory as the default value.
It inserts the project root by default, not its subdirectory:

  Base directory: /project/root/

whereas 'M-x rgrep' conveniently provides default-directory as default.

BTW, is it possible to make 'project-find-regexp' more compatible with 'rgrep'
in other features too?  What is missing is a way to modify the constructed
command line.  For example, often I need to add "-w" to the constructed command
to match words only.  In 'C-u M-x rgrep', this is easy to do,
but not in 'C-u C-x p g'.

diff --git a/lisp/replace.el b/lisp/replace.el
index f131d263ec..07b2d59a25 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1433,7 +1433,7 @@ occur-next-error
 
 (defface match
   '((((class color) (min-colors 88) (background light))
-     :background "yellow1")
+     :background "#ffff66")
     (((class color) (min-colors 88) (background dark))
      :background "RoyalBlue3")
     (((class color) (min-colors 8) (background light))
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index ea52befec5..cada1f1109 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -103,7 +103,7 @@ xref-match-length
 
 ;;;; Commonly needed location classes are defined here:
 
-(defcustom xref-file-name-display 'abs
+(defcustom xref-file-name-display 'project-relative
   "Style of file name display in *xref* buffers.
 
 If the value is the symbol `abs', the default, show the file names
@@ -521,7 +521,7 @@ xref-line-number
   "Face for displaying line numbers in the xref buffer."
   :version "27.1")
 
-(defface xref-match '((t :inherit highlight))
+(defface xref-match '((t :inherit match))
   "Face used to highlight matches in the xref buffer."
   :version "27.1")
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]