alexwl/haskell-code-explorer

Find identifiers across packages

gelisam opened this issue · 4 comments

Haskell-code-explorer is great for exploring a particular definition, but finding that definition is a bit more difficult than it should be, because I need to know in which package it is defined before I can use the identifier search to find that definition by name. Would it be possible to select more than one packages in which to search? Or perhaps, if I search for an identifier and find 0 results, offer the option to search in all other indexed packages?

finding that definition is a bit more difficult than it should be, because I need to know in which package it is defined before I can use the identifier search

I completely agree that it is inconvenient. "Global" identifier search would be helpful.

Would it be possible to select more than one packages in which to search? Or perhaps, if I search for an identifier and find 0 results, offer the option to search in all other indexed packages?

It is possible (and not too difficult).

I think it is best to add an option to search in all indexed packages. The "global" identifier search form should be accessible from both main page (next to the package search form) and package page (I will add a radio button "in the current package"/"in all packages" next to the identifier search form).

The plan is:

  1. Add a trie with exported identifiers from all indexed packages to Environment of haskell-code-server, add a new API endpoint.
  2. Create UI for "global" identifier search (form on the main page and a list of found identifiers).
  3. Add an option to switch between "search in the current package" and "search in all packages" on the package page.

Features 1. and 2. are in master now. There is a "Search in all packages" form on the main page, demo: https://haskell-code-explorer.mfix.io/

The switch between "search in the current package" and "search in all packages" on the package page is not done yet.

e8ded03 implements the switch on the package page. Demo: https://haskell-code-explorer.mfix.io/package/lens-4.16.1

Thanks!