doomemacs icon indicating copy to clipboard operation
doomemacs copied to clipboard

Autocomplete inserts wrong extra characters with ~company+childframe~

Open Artawower opened this issue 3 years ago • 4 comments

I confirm that...

  • [X] I have searched the issue tracker, documentation, FAQ, Discourse, and Google, in case this issue has already been reported/resolved.

  • [X] I have read "How to Debug Issues", and will use it to provide as much information about this issue as possible.

  • [X] The issue can be reproduced on the latest available commit of Doom.

  • [X] The issue can be reproduced on a stable release of Emacs, such as 27 or 28. (Doom does not support development builds like 29+ or any version ending in .50 or .9x)

Expected behavior

When i use company with enabled childframe i expect correct autocompletion with typescipt-mode, for example, when i type console.lo and press completion, i expect console.log()

Current behavior

When I use autocomplete with the child frame enabled, I see wrong output, such as console.log($1)$0() or 'asd'.replace(${1:searchValue}, ${2:replaceValue})$0(searchValue, replaceValue),

this did not happen for every autocomplete, but very often. There are no error messages. I tried to disable yasnippet (because I thought that was the real reason), but without success, moreover, after disabling it I observe even more incorrect characters

Steps to reproduce

  1. Open emacs with enabled (company +childframe)
  2. Open typescript or javascript project
  3. Enable lsp
  4. Start use autocomplete for methods or function like console.lo or 'text'.repl

P.s. without +childframe it works fine.

System Information

https://pastebin.com/FcyccuAt

Artawower avatar Nov 17 '22 09:11 Artawower

Just to add to this issue, I've been able to consistently reproduce this behaviour without +childframe enabled:

  1. Open javascript file with lsp-mode enabled (ts-ls)
  2. Type enough code for the autocomplete popup to appear.
  3. Press C-h on any of the candidates to run company-show-doc-buffer
  4. With the new buffer open in a new split, immediately press <return> to run company-complete-selection

My examples:

const example = [];
example.at(${1:index})$0(index)
example.concat($1)$0()
example.flatMap(${1:callback}$2)$0(callback)

System Information: https://pastebin.com/nBMbVj8q

pnguyen4 avatar Dec 20 '22 06:12 pnguyen4

@pnguyen4 Thank you for sharing this! I have tried to disable showing documentation by company and it seems this helps with the issue. So, in case anyone needs a workaround:

(after! company
  (setq company-box-doc-enable nil))

hron avatar Dec 26 '22 13:12 hron

I experienced the same behavior. Also tried switching to corfu, but that didn't help.

Disabling documentation in company and corfu seems to solve it. Another workaround is to disable snippets:

(after! lsp-mode
  (setq lsp-enable-snippet nil))

Sp1r7t avatar Dec 30 '22 18:12 Sp1r7t

for me this issue went away after (re)-enabling the snippets module in init.el (doom! ... :editor snippets ...)

gandalfs-cat avatar May 10 '24 13:05 gandalfs-cat