alexwl / haskell-code-explorer

Web application for exploring and understanding Haskell codebases
MIT License
509 stars 20 forks source link

Find identifiers across packages #20

Open gelisam opened 5 years ago

gelisam commented 5 years ago

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?

alexwl commented 5 years ago

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.
alexwl commented 5 years ago

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.

alexwl commented 5 years ago

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

gelisam commented 5 years ago

Thanks!