nvim-telescope / telescope-ui-select.nvim

MIT License
774 stars 18 forks source link

`on_choice` is not triggered when closing the window #32

Closed przepompownia closed 8 months ago

przepompownia commented 9 months ago

Minimal init.lua:

local thisInitFile = debug.getinfo(1).source:match('@?(.*)')
local configDir = vim.fs.dirname(thisInitFile)

vim.env['XDG_CONFIG_HOME'] = configDir
vim.env['XDG_DATA_HOME'] = vim.fs.joinpath(configDir, '.xdg/data')
vim.env['XDG_STATE_HOME'] = vim.fs.joinpath(configDir, '.xdg/state')
vim.env['XDG_CACHE_HOME'] = vim.fs.joinpath(configDir, '.xdg/cache')
local stdPathConfig = vim.fn.stdpath('config')

vim.opt.runtimepath:prepend(stdPathConfig)
vim.opt.packpath:prepend(stdPathConfig)

local function gitClone(url, installPath, branch)
  if vim.fn.isdirectory(installPath) ~= 0 then
    return
  end

  local command = {'git', 'clone', '--depth=1', '--', url, installPath}
  if branch then
    table.insert(command, 3, '--branch')
    table.insert(command, 4, branch)
  end
  local sysObj = vim.system(command, {}):wait()
  if sysObj.code ~= 0 then
    error(sysObj.stderr)
  end
  vim.notify(sysObj.stdout)
  vim.notify(sysObj.stderr, vim.log.levels.WARN)
end

local pluginsPath = 'plugins'
vim.fn.mkdir(pluginsPath, 'p')
pluginsPath = vim.uv.fs_realpath(pluginsPath)

local plugins = {
  ['plenary'] = {url = 'https://github.com/nvim-lua/plenary.nvim'},
  ['telescope'] = {url = 'https://github.com/nvim-telescope/telescope.nvim'},
  ['telescope-ui-select'] = {url = 'https://github.com/nvim-telescope/telescope-ui-select.nvim'}
}

for name, repo in pairs(plugins) do
  local installPath = vim.fs.joinpath(pluginsPath, name)
  gitClone(repo.url, installPath, repo.branch)
  vim.opt.runtimepath:append(installPath)
end

local function init()
  require('telescope').setup {
    extensions = {
      ['ui-select'] = {
        require('telescope.themes').get_dropdown {
        }
      }
    },
  }

  require('telescope').load_extension('ui-select')
  vim.ui.select({'x'}, {}, function (x, i)
    vim.notify('After select')
    vim.print(x, i)
  end)
end

vim.api.nvim_create_autocmd('UIEnter', {
  once = true,
  callback = init,
})

After close by <Esc> nothing happens in opposite to expected calling on_choice callback with (nil, nil) like in https://github.com/neovim/neovim/blob/488038580934f301c1528a14548ec0cabd16c2cd/runtime/lua/vim/ui.lua#L52.

Conni2461 commented 8 months ago

good catch, https://github.com/nvim-telescope/telescope-ui-select.nvim/pull/34 should fix your issue. can you confirm? after that i'll merge

przepompownia commented 8 months ago

With #34 on_choice is called with nil as expected, thanks!

Independently, please notice that to cancel we need to exit Insert mode first and then close the dialog.

Conni2461 commented 8 months ago

Independently, please notice that to cancel we need to exit Insert mode first and then close the dialog.

i dont know what that means?

przepompownia commented 8 months ago

In short, we need to press double Esc to cancel.

Conni2461 commented 8 months ago

thats a telescope configure thing, isnt it. like the default telescope esc action does not close, it switches modes. you can override this,s ee: https://github.com/nvim-telescope/telescope.nvim/wiki/Configuration-Recipes#mapping-esc-to-quit-in-insert-mode

this is also documented here: https://github.com/nvim-telescope/telescope.nvim?tab=readme-ov-file#default-mappings

does this answer your question?

przepompownia commented 8 months ago

Ah, ok. I have this mapping for years but my observation came from the minimal repro. I'm sorry for the unnecessary confusion.