Currently textDocument/hover is implemented via
@neovim.function("LanguageClient_textDocument_hover")
@deco_args
def textDocument_hover(self, uri: str, languageId: str,
........
echo(info)
# state.py
def echo(message: str) -> None:
"""Echo message."""
message = escape(message)
execute_command("echo '{}'".format(message))
For multi-line macro/struct/class declaration and comment support (see jacobdufault/cquery#29 for cquery's ongoing support), this UI may be infeasible. We might need to provide an alternative UI (e.g. preview window)

Maybe it's possible to display the info in a "popup" similar to autocomplete suggestions?
EDIT: this is kinda related to https://github.com/autozimu/LanguageClient-neovim/issues/196
Also, don't use echomsg if possible. It pollutes the messages history.
vim-lsp supports multiline hover. Feel free to port this related commits.
Most helpful comment
vim-lsp supports multiline hover. Feel free to port this related commits.