Skip to content

xref-find-references for keywords #181

Open
@vemv

Description

@vemv

One often can wonder "where is this keyword used?". Especially (but not limited to) ns-qualified keywords.

So our existing xref-find-references functionality could be extended to support keywords, based on simple source code analysis.

It would be our first xref-like feature that would support clojurescript.

And also, I believe, one of our very first features using a more comprehensive static source code analysis (e.g. traverse many files in search of matches), with all it takes (performance, caching etc).

I wouldn't want to create our own clj-kondo/clojure-lsp style local databases - those projects are much more refined than what one could handroll of a one-off feature.

I'm thinking of something in-memory, parallel, maybe backed by a LRU cache.

Normally, keyword search is limited to a project, so we can take advantage of that to quite greatly limit the search corpus (maybe to the extent of not needing a cache. IDK).

So, in a way, this would be like a glorified grep, except that it understands keywords better:

  • for the input parsing, it understands that our query of ::foo means :some.ns/foo
  • while searching a given ns for matches, it knows to search for any of ::foo, ::bar/foo, :a.b.c/foo, depending on the context
  • matches are exact (grep can struggle when a given keyword is a subset of a longer keyword)

Leaving it here for the hammock.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions