Tab completion for topfind
cfcs opened this issue · comments
-
It would be nice to have tab completion for
topfind
, not sure if that is out of scope fordown
, but it would make my life easier, I imagine something like this (pulling from#list
):# #require "ptime.[TAB] ptime.clock (version: 0.8.5) ptime.clock.os (version: 0.8.5) ptime.clock.os.top (version: 0.8.5) # #require "ptime.clock
# #require "ptime.clock.os.t[TAB] # #require "ptime.clock.os.top";;
-
Additionally, I currently get tab completion for (for example)
Ptime_clock
, but when I try to use it, I get:# Ptime_clock.no[TAB] Ptime_clock.now : unit -> Ptime.t Ptime_clock.now_d_ps : unit -> int * int64 # Ptime_clock.now ();; Error: Unbound module Ptime_clock
Would it be possible to determine if Ptime_clock.now was currently in scope, and if not, print the required package name as a suggestion, either in the tab completion or when a line referencing it is executed?
Personally I'm no longer using topfind
, the cognitive burden of remembering in which ocamlfind
package the module I want to use lives is is too high, so I simply load modules via omod
.
Moreover both points becomes moot if we can get this to work b0-system/odig#10 (comment) (replace Odig
mentions there by Omod
). In other words we can automatically (or after manual confirmation) load modules and their dependencies on the fly when users try to access them. But for it to be made to work seamlessly it needs fixes upstream which I would like to encourage to people to consider ocaml/ocaml#7589.
So no plans for topfind
sorry. But if you can cook something up that is not too invasive I might consider it for inclusion.
In general completion improvements are tracked in #11
@dbuenzli Ah, I didn't know about omod
and am not tied to topfind
by any means; I'd be happy to use omod
instead. Is this how you would use it? (either I'm using it wrong or something seems slightly broken)
# Omod.load "Unix";;
[INC] /home/user/.opam/4.07.1+afl/lib/ocaml
[ERROR] include /home/user/.opam/4.07.1+afl/lib/ocaml:
Unknown exception:
Invalid_argument
- : bool = false
Try to export OCAMLRUNPARAM='b'
to get a better stacktrace and report any problems on the omod
bug tracker and not here, also please try to confirm the error with a stock 4.07.1 so that this can be pinned down.