In standalone mode, utop returns all the possible completions when no
one matches what the user has typed. This is surprising in emacs
because of the different UI/UX. For this reason, we keep a list of
prefixes for which completion has started and return only the
candidates which match the prefixes.
Signed-off-by: Rudi Grinberg <me@rgrinberg.com>
tuareg--after-double-colon no longer exists in the latest rev of
Tuareg, which has received 110 additional commits since the last
release version on OPAM, so inline the old definition, which was
removed in commit 91ba1d6143558092a3920e9b5c49755c0c86caed of Tuareg.
tuareg--skip-double-colon was renamed to
tuareg--skip-double-semicolon, and also received a slight change.
Inline that as well since it's a private function.
## Problem
If `utop-edit-command` is nil, then `utop-query-arguments` returns nil.
This breaks `utop-restart` which relies upon it returning the right arguments.
## Solution
`utop-query-arguments` always returns `(utop-arguments)` whether it sets the utop-command or not.
tuareg-next-phrase was moved to tuareg_indent.el in
ocaml/tuareg@b40e733c1 and removed entirely in
ocaml/tuareg@b2ad75f3d5 (September 2017).
As a result, utop-eval-phrase crashes due to the missing function.
Instead, write a small function to move to the next phrase, similar to
the movement logic in tuareg-eval-phrase.
The patch tries to improve on the current way of evaluating a phrase and
skipping to the next. It removes both `utop-skip-to-end-of-phrase` and
`utop-skip-blank-and-comments`, but adds `utop-next-phrase-beginning`.
We assume `utop-discover-phrase` is always returning the end position as
at end of a `;;`. Thereafter we use `utop-next-phrase-beginning` to skip
to the next phase if `utop-skip-after-eval-phrase` is non-nil.
No need to try loading one of the major mode as utop-mode is now a
minor mode and has to be used in conjunction with the current major
mode of the buffer.
- Changed default key-binding for utop to C-c C-s to match tuareg
default
- Add some compatibility functions to make the transition easier for
existing users