mrjones2014 / legendary.nvim

🗺️ A legend for your keymaps, commands, and autocmds, integrates with which-key.nvim, lazy.nvim, and more.
MIT License
1.09k stars 19 forks source link

[Feature]: Allow :Legendary to accept a selection #321

Open lateef-k opened 1 year ago

lateef-k commented 1 year ago

Similar Issues

Description

It just takes a simple {range = true}. And it allows us to utilize commands from the :Legendary panel that run on a selection.

mrjones2014 commented 1 year ago

This should absolutely be doable, and not that difficult to implement. Basically:

---Build a context object containing information about the editor
---state *before* triggering the finder so that it can be
---restored before executing the item.
---@param buf number buffer ID to build context for, used only for testing
---@overload fun():LegendaryEditorContext
---@overload fun(buf:number):LegendaryEditorContext
---@return table
function M.build_context(buf, range)
  buf = buf or vim.api.nvim_get_current_buf()
  return {
    buf = buf,
    buftype = vim.api.nvim_buf_get_option(buf, 'buftype') or '',
    filetype = vim.api.nvim_buf_get_option(buf, 'filetype') or '',
    mode = vim.fn.mode(),
    cursor_pos = vim.api.nvim_win_get_cursor(vim.api.nvim_get_current_win()),
    marks = range or Toolbox.get_marks(),
  }
end
hinell commented 1 year ago

Well I think you can already filter out commands specific to the visual/selection mode when activate Legendary:

   {
      mode = { "n", "v", "i" }, "<C-S-P>" 
      , function()
         require("legendary")
         .find( { filters = { filters.current_mode() } })
      end ,
      description = "Window: open command palette (Legendary plugin)"
   }

I didn't use it extensively though.

mrjones2014 commented 1 year ago

Not from cmdline. :<‘>’Legendary doesn’t currently work.

hinell commented 11 months ago

Oh yeah, it's for user cmd... overlooked that.