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 139 forks source link

lsp-ui-sideline hijacks first line of completion with yasnippet #572

Open Kazimazi opened 3 years ago

Kazimazi commented 3 years ago

It happens when typing at a certain position of the file with yasnippet and lsp-ui-sideline enabled. It happens both with flycheck and flymake too, but at different positions. Company-box fixes it but it can't be used in terminal.

20210211_06h51m33s_grim

To reproduce:

  1. Use my minimal config.
  2. Have a haskell file and start typing on the mark of X:
    
    type Matrix a = [Row a]
    X

type Row a = [a]

3. Error pops up on the side and the first line of completion disappears to the right of that error.

### Minimal config:
```elisp
(require 'package)

(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives
             '("elpa" . "https://elpa.gnu.org/packages/"))

(package-initialize)

(setq-default use-package-always-ensure t
              use-package-always-defer t)

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

(eval-when-compile
  (require 'use-package))

(use-package company
  :hook (after-init . global-company-mode)
  :init (setq company-minimum-prefix-length 1 ; doesn't really matter if it's set
              company-idle-delay 0.0) ; important, so bug could be reproduced consistently
  :config (global-company-mode +1))

(use-package yasnippet
  :config
  (yas-global-mode 1))

(use-package yasnippet-snippets)

(use-package lsp-mode
  :commands (lsp lsp-deferred)
  :init (setq lsp-auto-guess-root t
              lsp-diagnostics-provider :flycheck
              lsp-enable-snippet t))

(use-package lsp-ui
  :hook (lsp-mode . lsp-ui-mode)
  :config (setq lsp-ui-sideline-enable t
                lsp-ui-sideline-show-hover nil
                lsp-ui-doc-enable nil))

(use-package flycheck :hook (lsp-mode . flycheck-mode))

(use-package haskell-mode :config (add-hook 'haskell-mode-hook #'lsp))

(use-package lsp-haskell
  ;:config (setq lsp-haskell-process-path-hie "haskell-language-server-wrapper")
  )

I'm currently all over the place and doubt that my description suffices, so I might do whole lot of edits.