emacs-lsp / lsp-ui

UI integrations for lsp-mode
https://emacs-lsp.github.io/lsp-ui
GNU General Public License v3.0
1.03k stars 141 forks source link

Sideline flycheck display style globally #437

Open noctuid opened 4 years ago

noctuid commented 4 years ago

The display style is nice and unobtrusive. It would be nice if lsp-ui-sideline provided a function that could be used as flycheck-display-errors-function in any mode regardless if lsp was enabled. Maybe special handling is needed and that isn't possible. Enabling lsp-ui-sideline-mode actually seems to work in modes without lsp (e.g. in elisp buffers). I guess as long as it can be used in any mode without issues, that would be good enough. Is that actually intended or is it incidental?

yyoncho commented 4 years ago

It is hard to tell - the original author @sebastiencs is not active recently. I guess it is side effect from lsp-ui using flycheck API instead of lsp-mode's API. Not sure if there are action items for this report?

noctuid commented 4 years ago

Not sure if there are action items for this report?

Adding a function that could be used as flycheck-display-errors-function (or maybe flycheck-inline-display-function for flycheck inline if lsp wanted to use it) would be ideal if possible. Setting flycheck-display-errors-function would also prevent the issue where a user who has set it gets duplicate error displays when using lsp-ui-mode (which I think there is another issue for).

Offtopic: I saw you mention your fork for company-box and potentially integrating it with lsp-mode. I was previously using company-box but stopped because the performance was very poor compared to the default frontend. company-posframe (especially on the latest commit) is quite fast. I'm wondering if you've tried company-posframe or if you've made any improvements regarding performance in your fork?

yyoncho commented 4 years ago

What you are suggesting sounds reasonable. I am not 100% sure if the sideline code for errors could be extracted to function and then combined with the other stuff that we show in the sideline. See also #50 which is kind of related.

Offtopic: I saw you mention your fork for company-box and potentially integrating it with lsp-mode. I was previously using company-box but stopped because the performance was very poor compared to the default frontend. company-posframe (especially on the latest commit) is quite fast. I'm wondering if you've tried company-posframe or if you've made any improvements regarding performance in your fork?

I don't see performance issues with the branch that I am using - https://github.com/yyoncho/company-box/tree/WIP . I may have fixed them as a side effect of the changes I have implemented. For example, I have restricted the resizing of the box and it has a fixed size which IMO this is much better otherwise the completion dialogue is jumping around while you type. Here it is demo how it looks like: https://www.youtube.com/watch?v=NNi3m2bc4Xs .

PS: - with the branch above there are perf issues in elisp buffers but this is caused by buggy/inefficient code in emacs - I haven't had the time to investigate it and report it in company-mode/emacs-devel.