merlin-imenu works nicely with `SPC / i`.
merlin-iedit is a refactoring tool that locates all occurences of an
identifier in scope and you can use multiple cursors to edit.
integration with evil-multiedit could be better.
There is also a merlin-xref backend, but since we got the individual
def/lookup/etc. already bound not sure if it is worth using it.
Signed-off-by: Edwin Török <edwin@etorok.net>
This displays the type and documentation of thing under point
and highlights occurrences automatically when idle. Could be achieved by appropriate use of
keyboard shortcuts already set up by this module.
However `merlin-eldoc` can also display the expected type of function call parameters,
which merlin itself wouldn't.
Signed-off-by: Edwin Török <edwin@etorok.net>
+ Load flyspell-mode a little later, to allow file/dir-local variables
to customize flyspell.
+ Ensure setters (in merlin's config) are used as late as possible, by
making merlin's (and all the other packages) config run after tuareg
is loaded.
+ As discussed, installing packages locally is a bit unreliable, so I'm
commenting out the +ocaml-site-lisp flag, and rely solely on packages
from MELPA.
+ Add optional ocamlformat check in doctor.el and conditionally load the
ocamlformat package (if editor/format is enabled).
+ Add docstrings to init hooks.
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!
I am slowly phasing out the setting system (def-setting! and set!),
starting with these.
What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.
The old set! function will still work, for a while.
Now that we are loading package autoloads files (as part of the
generated doom-package-autoload-file when running make autoloads), many
:commands properties are redundant. In fact, many def-package! blocks
are redundant.
In some cases, we can do without a config.el file entirely, and can move
into the autoloads file or rely entirely on package autoloads.
Also, many settings have been moved in their module's autoloads files,
which makes them available ASAP; their use no longer depends on module
load order.
This gained me a modest ~10% boost in startup speed.