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

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

Re: xref-find-references returns duplicates


From: Dmitry Gutov
Subject: Re: xref-find-references returns duplicates
Date: Tue, 27 Dec 2022 03:09:47 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2

On 19/12/2022 02:25, Petteri Hintsanen wrote:
Hello list,

I discovered a somewhat peculiar case where xref-find-references returns duplicate references for elisp symbols.

Here is a toy example:

1. Create a file ~/foo/bar/bar.el with contents:

   (defun bar-f ())

   (defun bar-g ()
     (bar-f))

   (provide 'bar)

2. Create a git repo in ~/foo/bar and commit bar.el.  This is just to set up a project that Emacs can recognize.

3. Start emacs -Q and eval

   (add-to-list 'load-path "~/foo")
   (add-to-list 'load-path "~/foo/bar")
   (require 'bar)

4. Visit ~/foo/bar/bar.el and do xref-find-references for bar-f

On my machine I get

   bar.el
   1: (defun bar-f ())
   4:   (bar-f))
   1: (defun bar-f ())
   4:   (bar-f))

i.e. references are duplicated.  The issue seems to be in load-path: if I remove ~/foo from step (3) above, then I don't see any duplicates.

Am I abusing load-path somehow, or is this a bug, or something else?

I suppose it's a bug, or a limitation of the algorithm anyway.

The default "find references" implementation currently delegates to xref-references-in-directory, which uses the semantic-symref-tool facility to search for a simple notion of "references" inside a directory tree. It doesn't have a mechanism to exclude certain directories, such as the current project root (from being searched twice over).

You can file a bug report with 'M-x report-emacs-bug', different ways to solve this exist, more or less adequately.



reply via email to

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