neo-tree.nvim icon indicating copy to clipboard operation
neo-tree.nvim copied to clipboard

FEATURE: Set Keymap Description

Open JustBarnt opened this issue 11 months ago • 0 comments

Did you check the docs?

  • [X] I have read all the docs.

Is your feature request related to a problem? Please describe.

I currently find it very inconvenient that a keymap can only be set by doing the following

  • Having to write the entire function in the value of the key.
  • Because if you try the following and replace the function call with a string related to a command the description in the help popup becomes just the name of the command. Ex: 'toggle_filesystem'
...
 ...
   mappings = {
     ["e"] = { function() ... end, desc = "Toggles Filesystem" } -- Help says "Toggles Filesystem
   }

Describe the solution you'd like.

I think it would make sense to be able to the same if you have a command written and you are calling that command you could still pass a table similar to what I have above

...
 ...
   mappings = {
     ["e"] = { 'toggle_filesystem' , desc = "Toggle Filesystem" } -- Popup should show 'Toggle Filesystem' instead of 'toggle_filesystem'
   }

Describe alternatives you've considered.

I've read the docs regarding mappings and commands. I have already tried setting a description like I did above in the proposed solution, but the only time my desc key took effect was when I write the function instead of calling a command.

Additional Context

Current opts set in my lazyvim

{
        open_files_do_not_replace_types = { "terminal", "trouble", "qf", "edgy" },
        default_component_configs = {
            file_size = { enabled = false },
            type = { enabled = false },
            last_modified = { enabled = false },
            created = { enabled = false },
        },
        window = {
            mappings = {
                ["e"] = {
                    function(_)
                        vim.api.nvim_exec2("Neotree focus filesystem left", { output = true })
                    end,
                    desc = "Toggle File Explorer", -- Sets help in popup to "Toggle File Explorer"
                },
                ["g"] = {
                    function(_)
                        vim.api.nvim_exec2("Neotree focus git_status left", { output = true })
                    end,
                    desc = "Toggle Git Status", -- Sets help in popup to "Toggle Git Status"
                },
                ["b"] = {
                    function(_)
                        vim.api.nvim_exec2("Neotree focus buffers left", { output = true })
                    end,
                    desc = "Toggle Open Buffers", -- Sets help in popup to "Toggle Open Buffers"
                },
                ["D"] = { 
                    "diff_files", 
                     config = { desc = "Diff Two Files" } -- Help still says "diff_files" instead of "Diff Two Files"
                },
                -- ["D"] = { 
                    -- "diff_files", 
                     -- desc = "Diff Two Files" 
                -- },
            },
        },
        commands = {
            diff_files = function(state)
                vim.print(vim.inspect(state.config))
                local node = state.tree:get_node()
                local log = require "neo-tree.log"
                state.clipboard = state.clipboard or {}
                if diff_Node and diff_Node ~= tostring(node.id) then
                    local current_Diff = node.id
                    require("neo-tree.utils").open_file(state, diff_Node, open)
                    vim.cmd("vert diffs " .. current_Diff)
                    log.info("Diffing " .. diff_Name .. " against " .. node.name)
                    diff_Node = nil
                    current_Diff = nil
                    state.clipboard = {}
                    require("neo-tree.ui.renderer").redraw(state)
                else
                    local existing = state.clipboard[node.id]
                    if existing and existing.action == "diff" then
                        state.clipboard[node.id] = nil
                        diff_Node = nil
                        require("neo-tree.ui.renderer").redraw(state)
                    else
                        state.clipboard[node.id] = { action = "diff", node = node }
                        diff_Name = state.clipboard[node.id].node.name
                        diff_Node = tostring(state.clipboard[node.id].node.id)
                        log.info("Diff source file " .. diff_Name)
                        require("neo-tree.ui.renderer").redraw(state)
                    end
                end
            end,
        },
    }

JustBarnt avatar Mar 23 '24 13:03 JustBarnt