Vanilla Emacs#
You could go minimal and use lsp-mode as it is without external packages with the built-in flymake and completion-at-point or you could install the following extensions for better experience:
lsp-ui for fancy sideline, popup documentation, VScode-like peek UI, etc.
flycheck if you prefer the more popular flycheck over renewed flymake. lsp-mode will automatically pick it up.
company-mode for completion popups.
lsp-treemacs for various tree based UI controls (symbols, errors overview, call hierarchy, etc.)
helm-lsp provides on type completion alternative of xref-apropos using helm.
lsp-ivy provides on type completion alternative of xref-apropos using ivy.
dap-mode if your language is supported by the debugger.