Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extra undo point is created after enter #1144

Closed
2 tasks done
rob-3 opened this issue Aug 20, 2022 · 2 comments
Closed
2 tasks done

Extra undo point is created after enter #1144

rob-3 opened this issue Aug 20, 2022 · 2 comments
Labels
bug Something isn't working

Comments

@rob-3
Copy link

rob-3 commented Aug 20, 2022

FAQ

  • I have checked the FAQ and it didn't resolve my problem.

Announcement

Minimal reproducible full config

if has('vim_starting')
  set encoding=utf-8
endif
scriptencoding utf-8

if &compatible
  set nocompatible
endif

let s:plug_dir = expand('/tmp/plugged/vim-plug')
if !filereadable(s:plug_dir .. '/plug.vim')
  execute printf('!curl -fLo %s/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim', s:plug_dir)
end

execute 'set runtimepath+=' . s:plug_dir
call plug#begin(s:plug_dir)
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/vim-vsnip'
Plug 'neovim/nvim-lspconfig'
call plug#end()
PlugInstall | quit

" Setup global configuration. More on configuration below.
lua << EOF
local cmp = require "cmp"
cmp.setup {
  snippet = {
    expand = function(args)
      vim.fn["vsnip#anonymous"](args.body)
    end,
  },

  mapping = {
    ['<CR>'] = cmp.mapping.confirm({ select = true })
  },

  sources = cmp.config.sources({
    { name = "nvim_lsp" },
    { name = "buffer" },
  }),
}
EOF

lua << EOF
local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())

require'lspconfig'.cssls.setup {
  capabilities = capabilities,
}
EOF

Description

After using enter to confirm() a completion, undoing the insert action with the completion requires uu to undo, with one undo seemingly doing nothing.

Steps to reproduce

  1. nvim -u ~/cmp-repro.vim hello.txt
  2. Enter insert mode with i.
  3. Type hello.
  4. Exit insert mode with <Esc>.
  5. Type oh.
  6. Accept nvim-cmp's completion with <CR>.
  7. Exit insert mode with <Esc>.
  8. Type u. Observe that nothing is undone.
  9. Type u again. Notice that the change is undone.

Expected behavior

As above, but the insertion (or at least the completion expansion) should be undone on the first u leaving either nothing or h.

Actual behavior

Typing u twice is necessary to undo the insertion.

Additional context

No response

@rob-3 rob-3 added the bug Something isn't working label Aug 20, 2022
@hrsh7th
Copy link
Owner

hrsh7th commented Aug 20, 2022

Thank you. I've added the undojoin.

@rob-3
Copy link
Author

rob-3 commented Aug 20, 2022

Wow - that was incredibly fast! It works as expected now. Thanks for getting this fixed and for making nvim-cmp!

hrsh7th added a commit that referenced this issue Aug 20, 2022
williamboman added a commit to williamboman/nvim-cmp that referenced this issue Sep 23, 2022
…indow

* upstream/main: (36 commits)
  feat: add `filter` option to sources (hrsh7th#1067)
  Restore rockspec
  Fix grammar mistake: "setup" -> "set up" (hrsh7th#1155)
  fix(timer): close timers before Neovim exits (hrsh7th#1166)
  Add incsearch_redraw_keys settings (hrsh7th#1162)
  Fix hrsh7th#1149 (temporary fix)
  Fix hrsh7th#1146
  Re-fix hrsh7th#1144
  Fix hrsh7th#1144
  Fix hrsh7th#1142
  Fix hrsh7th#1135
  Fix onetime configuration handling
  fix(entry/get_replace_range): handle TextEdit.range (hrsh7th#1140)
  Refactor a bit
  Restore filetype setting
  Fix hrsh7th#1139
  Add FAQ for clangd's command-line arguments. Fixes hrsh7th#999
  The default highlight groups shouldn't be default=true. Fixes hrsh7th#972
  Fix hrsh7th#1102
  Use `cmp.config.sources` (hrsh7th#1105)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants