[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Generalizing find-definition
From: |
Stephen Leake |
Subject: |
Re: Generalizing find-definition |
Date: |
Sat, 06 Dec 2014 12:19:18 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.94 (windows-nt) |
Helmut Eller <address@hidden> writes:
> On Fri, Dec 05 2014, Stephen Leake wrote:
>
> [...]
>> I have a function that combines 1 and 2 and similar links; it calls
>> ffap-string-at-point, compares that to an alist of (regexp . command),
>> and then defaults to find-file. The alist has:
> [...]
>> Perhaps a similar function could be included in xref?
>
> Just thinking aloud:
>
> I guess such filenames or URLs (URIs?) typically occur in comments,
> string literals, or perhaps in things like #include <stdio.h> or
> (require 'some-library). M-x ffap seems cover this partially, but then
> there's also M-x find-library. Certainly a lot of things to find!
I just added this for (require 'foo):
(set (make-local-variable 'ff-search-directories) 'load-path)
(set (make-local-variable 'ff-special-constructs) nil)
(add-to-list
'ff-special-constructs
(cons "^(require '\\(.*\\))" (lambda () (file-name-nondirectory
(locate-library (match-string 1))))))
That's used by ff-find-other-file.
> A problem seems to be that xref-identifier-at-point would need a
> possibly complicated heuristic to determine if we are at such a filename
> or a "normal" identifier.
Yes, I think that requires input from the user. Currently, I use C-F11
(bound to 'ff-find-other-file') when the thing at point is something
related to a filename ('require' in elisp, '#include' in C++, 'with' in
Ada), and C-c C-d (now bound to 'xref-find-definitions') when the thing
at point is a symbol.
We could just search for both, and present a list, but I think that
would be more cumbersome than it's worth.
> Maybe it's easier to have a separate xref-file-name-at-point which
> would by default do what ffap-guess-file-name-at-point does. For ELisp
> it should additionally recognize (require 'foo) and somehow reuse
> find-library.
find-file.el and files.el provide similarly customizable 'find a file'
functions. It would be nice to unify them, but that's a lot of work.
I'm most familiar with find-file, but it could easily be that files is a
better structure.
> There's also the problem which keybinding to use. We will probably
> steal the global bindings for M-. and M-, from etags but beyond that
> we don't have keys for our commands. At least one additional prefix key
> for a xref keymap would be nice.
ada-mode uses C-c C-o for a wrapper around ff-find-other-file. I don't
see a similar binding in c-mode.
We would probably need to keep xref-minor-mode for now, and provide a
binding in there. Then if it becomes popular, it can be promoted to a
global binding.
--
-- Stephe
- Re: Generalizing find-definition, (continued)
- Re: Generalizing find-definition, Stephen Leake, 2014/12/03
- Re: Generalizing find-definition, Stephen Leake, 2014/12/04
- Re: Generalizing find-definition, Helmut Eller, 2014/12/04
- Re: Generalizing find-definition, Stephen Leake, 2014/12/04
- Re: Generalizing find-definition, Helmut Eller, 2014/12/04
- Re: Generalizing find-definition, Stephen Leake, 2014/12/05
- Re: Generalizing find-definition, Helmut Eller, 2014/12/05
- Re: Generalizing find-definition, Stephen Leake, 2014/12/05
- Re: Generalizing find-definition, Helmut Eller, 2014/12/06
- Re: Generalizing find-definition,
Stephen Leake <=
- RE: Generalizing find-definition, Drew Adams, 2014/12/06
- Re: Generalizing find-definition, Stephen Leake, 2014/12/07
- Re: Generalizing find-definition, Stefan Monnier, 2014/12/06
- Re: Generalizing find-definition, Helmut Eller, 2014/12/07
- Re: Generalizing find-definition, Stefan Monnier, 2014/12/08
- Re: Generalizing find-definition, Helmut Eller, 2014/12/08
- Re: Generalizing find-definition, Stefan Monnier, 2014/12/08
- Re: Generalizing find-definition, Jorgen Schaefer, 2014/12/08
- Re: Generalizing find-definition, Stefan Monnier, 2014/12/08
- Re: Generalizing find-definition, Stefan Monnier, 2014/12/08