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

BUG: Yank a file and paste bug #1449

Open
3 tasks done
ThaiDuy12345 opened this issue Apr 26, 2024 · 0 comments
Open
3 tasks done

BUG: Yank a file and paste bug #1449

ThaiDuy12345 opened this issue Apr 26, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@ThaiDuy12345
Copy link

Did you check docs and existing issues?

  • I have read all the docs.
  • I have searched the existing issues.
  • I have searched the existing discussions.

Neovim Version (nvim -v)

0.9.5

Operating System / Version

Window 11 _ WSL Ubuntu 22.04

Describe the Bug

Yanking a file and paste in neotree with a new name make the whole neovim frozen and spamming debug log non-stop (see the video for clarify)

Screenshots, Traceback

bandicam.2024-04-26.15-33-15-046.mp4

Steps to Reproduce

  1. Make sure neotree config hide_root_node = true
  2. Open neotree, create file tsconfig.ts
  3. Hit y to yank the file, paste right after with p
  4. Enter a new name, for me it's tsconfig.app.ts

Expected Behavior

Should behave as normal as "created file" flow would normal do

Your Configuration

local config = {
      sources = {
        "filesystem",
        "git_status",
      },
      add_blank_line_at_top = true, -- Add a blank line at the top of the tree.
      auto_clean_after_session_restore = true, -- Automatically clean up broken neo-tree buffers saved in sessions
      close_if_last_window = true, -- Close Neo-tree if it is the last window left in the tab
      popup_border_style = require("utils").border,
      -- popup_border_style is for input and confirmation dialogs.
      -- Configurtaion of floating window is done in the individual source sections.
      -- "NC" is a special style that works well with NormalNC set
      default_source = "filesystem", -- you can choose a specific source `last` here which indicates the last used source
      enable_diagnostics = true,
      enable_git_status = true,
      enable_modified_markers = true, -- Show markers for files with unsaved changes.
      enable_opened_markers = true,   -- Enable tracking of opened files. Required for `components.name.highlight_opened_files`
      enable_refresh_on_write = true, -- Refresh the tree when a file is written. Only used if `use_libuv_file_watcher` is false.
      -- enable_normal_mode_for_inputs = false, -- Enable normal mode for input dialogs.
      git_status_async = true,
      -- These options are for people with VERY large git repos
      git_status_async_options = {
        batch_size = 1000, -- how many lines of git status results to process at a time
        batch_delay = 10,  -- delay in ms between batches. Spreads out the workload to let other processes run.
        max_lines = 10000, -- How many lines of git status results to process. Anything after this will be dropped.
        -- Anything before this will be used. The last items to be processed are the untracked files.
      },
      hide_root_node = false, -- Hide the root node.
      retain_hidden_root_indent = true, -- IF the root node is hidden, keep the indentation anyhow. 
      -- This is needed if you use expanders because they render in the indent.
      log_level = "info", -- "trace", "debug", "info", "warn", "error", "fatal"
      log_to_file = false, -- true, false, "/path/to/file.log", use :NeoTreeLogs to show the file
      open_files_in_last_window = true, -- false = open files in top left window
      open_files_do_not_replace_types = { "Trouble", "qf", "edgy", "toggleterm" }, -- when opening files, do not use windows containing these filetypes or buftypes
      resize_timer_interval = 500, -- in ms, needed for containers to redraw right aligned and faded content
      -- set to -1 to disable the resize timer entirely
                                -- NOTE: this will speed up to 50 ms for 1 second following a resize
      sort_case_insensitive = false, -- used when sorting files and directories in the tree
      sort_function = nil , -- uses a custom function for sorting files and directories in the tree
      use_popups_for_input = true, -- If false, inputs will use vim.ui.input() instead of custom floats.
      use_default_mappings = true,
      -- source_selector provides clickable tabs to switch between sources.
      source_selector = {
        winbar = false, -- toggle to show selector on winbar
        statusline = false,
        show_scrolled_off_parent_node = true, -- this will replace the tabs with the parent path
        -- of the top visible node when scrolled down.
        sources = {
          { source = "filesystem" },
          { source = "git_status" },
        },
        content_layout = "center", -- only with `tabs_layout` = "equal", "focus"
        --                start  : |/ 󰓩 bufname     \/...
        --                end    : |/     󰓩 bufname \/...
        --                center : |/   󰓩 bufname   \/...
        tabs_layout = "center", -- start, end, center, equal, focus
        --             start  : |/  a  \/  b  \/  c  \            |
        --             end    : |            /  a  \/  b  \/  c  \|
        --             center : |      /  a  \/  b  \/  c  \      |
        --             equal  : |/    a    \/    b    \/    c    \|
        --             active : |/  focused tab    \/  b  \/  c  \|
        truncation_character = "", -- character to use when truncating the tab label
        tabs_min_width = nil, -- nil | int: if int padding is added based on `content_layout`
        tabs_max_width = nil, -- this will truncate text even if `text_trunc_to_fit = false`
        padding = 0, -- can be int or table
        --padding = { left = 0, right = 0 },
        -- separator = "▕", -- can be string or table, see below
        --separator = { left = "▏", right= "▕" },
        -- separator = { left = "/", right = "\\", override = nil },     -- |/  a  \/  b  \/  c  \...
        -- separator = { left = "/", right = "\\", override = "right" }, -- |/  a  \  b  \  c  \...
        -- separator = { left = "/", right = "\\", override = "left" },  -- |/  a  /  b  /  c  /...
        -- separator = { left = "/", right = "\\", override = "active" },-- |/  a  / b:active \  c  \...
        separator = "",                                              -- ||  a  |  b  |  c  |...
        separator_active = nil, -- set separators around the active tab. nil falls back to `source_selector.separator`
        show_separator_on_edge = true,
        --                       true  : |/    a    \/    b    \/    c    \|
        --                       false : |     a    \/    b    \/    c     |
        highlight_tab = "NeoTreeTabInactive",
        highlight_tab_active = "NeoTreeTabActive",
        highlight_background = "NeoTreeTabInactive",
        highlight_separator = "NeoTreeTabSeparatorInactive",
        highlight_separator_active = "NeoTreeTabSeparatorActive",
      },
      --
      event_handlers = {
        --  {
        --    event = "before_render",
        --    handler = function (state)
        --      -- add something to the state that can be used by custom components
        --    end
        --  },
        --  {
        --    event = "file_opened",
        --    handler = function(file_path)
        --      --auto close
        --      require("neo-tree.command").execute({ action = "close" })
        --    end
        --  },
        --  {
        --    event = "file_opened",
        --    handler = function(file_path)
        --      --clear search after opening a file
        --      require("neo-tree.sources.filesystem").reset_search()
        --    end
        --  },
        --  {
        --    event = "file_renamed",
        --    handler = function(args)
        --      -- fix references to file
        --      print(args.source, " renamed to ", args.destination)
        --    end
        --  },
        --  {
        --    event = "file_moved",
        --    handler = function(args)
        --      -- fix references to file
        --      print(args.source, " moved to ", args.destination)
        --    end
        --  },
        --  {
        --    event = "neo_tree_buffer_enter",
        --    handler = function()
        --      vim.cmd 'highlight! Cursor blend=100'
        --    end
        --  },
        -- {
        --   -- FIX: fixing neotree buffer not closing when leaving the buffer
        --   event = 'neo_tree_buffer_leave',
        --   handler = function()
        --     local shown_buffers = {}
        --     for _, win in ipairs(vim.api.nvim_list_wins()) do
        --       shown_buffers[vim.api.nvim_win_get_buf(win)] = true
        --     end
        --     for _, buf in ipairs(vim.api.nvim_list_bufs()) do
        --       if not shown_buffers[buf] and vim.api.nvim_buf_get_option(buf, 'buftype') == 'nofile' and vim.api.nvim_buf_get_option(buf, 'filetype') == 'neo-tree' then
        --         vim.api.nvim_buf_delete(buf, {})
        --       end
        --     end
        --   end,
        -- },
        -- {
        --   event = "neo_tree_window_before_open",
        --   handler = function(args)
        --     print("neo_tree_window_before_open", vim.inspect(args))
        --   end
        -- },
        -- {
        --   event = "neo_tree_window_after_open",
        --   handler = function(args)
        --     vim.cmd("wincmd =")
        --   end
        -- },
        -- {
        --   event = "neo_tree_window_before_close",
        --   handler = function(args)
        --     print("neo_tree_window_before_close", vim.inspect(args))
        --   end
        -- },
        -- {
        --   event = "neo_tree_window_after_close",
        --   handler = function(args)
        --     vim.cmd("wincmd =")
        --   end
        -- }
      },
      default_component_configs = {
        container = {
          enable_character_fade = true,
          width = "100%",
          right_padding = 0,
        },
        diagnostics = {
          symbols = {
            hint = require("utils").sign_icons.hint,
            info = require("utils").sign_icons.info,
            warn = require("utils").sign_icons.warning,
            error = require("utils").sign_icons.error,
          },
          highlights = {
            hint = "DiagnosticSignHint",
            info = "DiagnosticSignInfo",
            warn = "DiagnosticSignWarn",
            error = "DiagnosticSignError",
          },
        },
        indent = {
          indent_size = 2,
          padding = 1,
          -- indent guides
          with_markers = true,
          -- indent_marker = "│",
          -- last_indent_marker = "└",
          indent_marker = " ",
          last_indent_marker = " ",
          highlight = "NeoTreeIndentMarker",
          -- expander config, needed for nesting files
          with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
          -- expander_collapsed = "",
          -- expander_expanded = "",
          expander_collapsed = " ",
          expander_expanded = " ",
          -- expander_collapsed = "",
          -- expander_expanded = "",
          -- expander_collapsed = "󰁙",
          -- expander_expanded = "󰁊",
          expander_highlight = "NeoTreeExpander",
        },
        icon = {
          folder_closed = "",
          folder_open = "",
          folder_empty = "",
          folder_empty_open = "",
          default = "*",
          highlight = "NeoTreeFileIcon"
        },
        modified = {
          symbol = "",
          highlight = "NeoTreeModified",
        },
        name = {
          trailing_slash = false,
          highlight_opened_files = true, -- Requires `enable_opened_markers = true`. 
          -- Take values in { false (no highlight), true (only loaded), 
          -- "all" (both loaded and unloaded)}. For more information,
          -- see the `show_unloaded` config of the `buffers` source.
          use_git_status_colors = true,
          highlight = "NeoTreeFileName",
        },
        git_status = {
          symbols = {
            -- Change type
            -- added     = "✚", -- NOTE: you can set any of these to an empty string to not show them
            -- deleted   = "✖",
            -- modified  = "",
            -- renamed   = "󰁕",
            -- -- Status type
            -- untracked = "",
            -- ignored   = "",
            -- unstaged  = "󰄱",
            -- staged    = "",
            -- conflict  = "",
            added     = "", -- NOTE: you can set any of these to an empty string to not show them
            deleted   = "󰅗",
            modified  = "󱗜",
            renamed   = "󰛂",
            -- Status type
            untracked = "󰞋",
            ignored   = "󱎙",
            unstaged  = "󰄱",
            staged    = "",
            conflict  = "",
          },
          align = "right",
        },
        -- If you don't want to use these columns, you can set `enabled = false` for each of them individually
        file_size = {
          enabled = true,
          required_width = 64, -- min width of window required to show this column
        },
        type = {
          enabled = true,
          required_width = 110, -- min width of window required to show this column
        },
        last_modified = {
          enabled = true,
          required_width = 88, -- min width of window required to show this column
        },
        created = {
          enabled = true,
          required_width = 120, -- min width of window required to show this column
        },
        symlink_target = {
          enabled = true,
        },
      },
      renderers = {
        directory = {
          { "indent" },
          { "icon" },
          { "current_filter" },
          {
            "container",
            content = {
              { "name", zindex = 10 },
              {
                "symlink_target",
                zindex = 10,
                highlight = "NeoTreeSymbolicLinkTarget",
              },
              { "clipboard", zindex = 10 },
              { "diagnostics", errors_only = true, zindex = 20, align = "right", hide_when_expanded = true },
              { "git_status", zindex = 10, align = "right", hide_when_expanded = true },
              { "file_size", zindex = 10, align = "right" },
              { "type", zindex = 10, align = "right" },
              { "last_modified", zindex = 10, align = "right" },
              { "created", zindex = 10, align = "right" },
            },
          },
        },
        file = {
          { "indent" },
          { "icon" },
          {
            "container",
            content = {
              {
                "name",
                zindex = 10
              },
              {
                "symlink_target",
                zindex = 10,
                highlight = "NeoTreeSymbolicLinkTarget",
              },
              { "clipboard", zindex = 10 },
              { "bufnr", zindex = 10 },
              { "modified", zindex = 20, align = "right" },
              { "diagnostics",  zindex = 20, align = "right" },
              { "git_status", zindex = 10, align = "right" },
              { "file_size", zindex = 10, align = "right" },
              { "type", zindex = 10, align = "right" },
              { "last_modified", zindex = 10, align = "right" },
              { "created", zindex = 10, align = "right" },
            },
          },
        },
        message = {
          { "indent", with_markers = false },
          { "name", highlight = "NeoTreeMessage" },
        },
        terminal = {
          { "indent" },
          { "icon" },
          { "name" },
          { "bufnr" }
        }
      },
      nesting_rules = {},
      -- Global custom commands that will be available in all sources (if not overridden in `opts[source_name].commands`)
      --
      -- You can then reference the custom command by adding a mapping to it:
      --    globally    -> `opts.window.mappings`
      --    locally     -> `opt[source_name].window.mappings` to make it source specific.
      --
      -- commands = {              |  window {                 |  filesystem {
      --   hello = function()      |    mappings = {           |    commands = {
      --     print("Hello world")  |      ["<C-c>"] = "hello"  |      hello = function()
      --   end                     |    }                      |        print("Hello world in filesystem")
      -- }                         |  }                        |      end
      --
      -- see `:h neo-tree-custom-commands-global`
      commands = {}, -- A list of functions

      window = { -- see https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup for
        -- possible options. These can also be functions that return these options.
        position = "left", -- left, right, top, bottom, float, current
        width = 40, -- applies to left and right positions
        height = 15, -- applies to top and bottom positions
        auto_expand_width = false, -- expand the window when file exceeds the window width. does not work with position = "float"
        popup = { -- settings that apply to float position only
          size = {
            height = "80%",
            width = "50%",
          },
          position = "50%", -- 50% means center it
          -- you can also specify border here, if you want a different setting from
          -- the global popup_border_style.
        },
        same_level = false, -- Create and paste/move files/directories on the same level as the directory under cursor (as opposed to within the directory under cursor).
        insert_as = "child", -- Affects how nodes get inserted into the tree during creation/pasting/moving of files if the node under the cursor is a directory:
        -- "child":   Insert nodes as children of the directory under cursor.
        -- "sibling": Insert nodes  as siblings of the directory under cursor.
        -- Mappings for tree window. See `:h neo-tree-mappings` for a list of built-in commands.
        -- You can also create your own commands by providing a function instead of a string.
        mapping_options = {
          noremap = true,
          nowait = true,
        },
        mappings = {
          ["<space>"] = {
            "toggle_node",
            nowait = true, -- disable `nowait` if you have existing combos starting with this char that you want to use
          },
          ["<2-LeftMouse>"] = "open",
          ["<cr>"] = "open",
          -- ["<cr>"] = { "open", config = { expand_nested_files = true } }, -- expand nested file takes precedence
          ["<esc>"] = "cancel", -- close preview or floating neo-tree window
          ["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } },
          ["l"] = "focus_preview",
          ["S"] = "open_split",
          -- ["S"] = "split_with_window_picker",
          ["s"] = "open_vsplit",
          -- ["s"] = "vsplit_with_window_picker",
          ["t"] = "open_tabnew",
          -- ["<cr>"] = "open_drop",
          -- ["t"] = "open_tab_drop",
          ["w"] = "open_with_window_picker",
          ["C"] = "close_node",
          ["z"] = "close_all_nodes",
          --["Z"] = "expand_all_nodes",
          ["R"] = "refresh",
          ["a"] = {
            "add",
            -- some commands may take optional config options, see `:h neo-tree-mappings` for details
            config = {
              show_path = "none", -- "none", "relative", "absolute"
            }
          },
          ["A"] = "add_directory", -- also accepts the config.show_path and config.insert_as options.
          ["d"] = "delete",
          ["r"] = "rename",
          ["y"] = "copy_to_clipboard",
          ["x"] = "cut_to_clipboard",
          ["p"] = "paste_from_clipboard",
          ["c"] = "copy", -- takes text input for destination, also accepts the config.show_path and config.insert_as options
          ["m"] = "move", -- takes text input for destination, also accepts the config.show_path and config.insert_as options
          ["e"] = "toggle_auto_expand_width",
          ["q"] = "close_window",
          ["?"] = "show_help",
          ["<"] = "prev_source",
          [">"] = "next_source",
        },
      },
      filesystem = {
        window = {
          mappings = {
            ["H"] = "toggle_hidden",
            ["/"] = "fuzzy_finder",
            ["D"] = "fuzzy_finder_directory",
            --["/"] = "filter_as_you_type", -- this was the default until v1.28
            ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
            -- ["D"] = "fuzzy_sorter_directory",
            ["f"] = "filter_on_submit",
            ["<C-x>"] = "clear_filter",
            ["<bs>"] = "navigate_up",
            ["."] = "set_root",
            ["[g"] = "prev_git_modified",
            ["]g"] = "next_git_modified",
            ["i"] = "show_file_details",
            ["o"] = { "show_help", nowait=false, config = { title = "Order by", prefix_key = "o" }},
            ["oc"] = { "order_by_created", nowait = false },
            ["od"] = { "order_by_diagnostics", nowait = false },
            ["og"] = { "order_by_git_status", nowait = false },
            ["om"] = { "order_by_modified", nowait = false },
            ["on"] = { "order_by_name", nowait = false },
            ["os"] = { "order_by_size", nowait = false },
            ["ot"] = { "order_by_type", nowait = false },
          },
          fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
            ["<down>"] = "move_cursor_down",
            ["<C-n>"] = "move_cursor_down",
            ["<up>"] = "move_cursor_up",
            ["<C-p>"] = "move_cursor_up",
          },
        },
        async_directory_scan = "auto", -- "auto"   means refreshes are async, but it's synchronous when called from the Neotree commands.
        -- "always" means directory scans are always async.
        -- "never"  means directory scans are never async.
        scan_mode = "shallow", -- "shallow": Don't scan into directories to detect possible empty directory a priori
        -- "deep": Scan into directories to detect empty or grouped empty directories a priori.
        bind_to_cwd = true, -- true creates a 2-way binding between vim's cwd and neo-tree's root
        cwd_target = {
          sidebar = "tab",   -- sidebar is when position = left or right
          current = "window" -- current is when position = current
        },
        check_gitignore_in_search = true, -- check gitignore status for files/directories when searching
        -- setting this to false will speed up searches, but gitignored
        -- items won't be marked if they are visible.
        -- The renderer section provides the renderers that will be used to render the tree.
        --   The first level is the node type.
        --   For each node type, you can specify a list of components to render.
        --       Components are rendered in the order they are specified.
        --         The first field in each component is the name of the function to call.
        --         The rest of the fields are passed to the function as the "config" argument.
        filtered_items = {
          visible = false, -- when true, they will just be displayed differently than normal items
          force_visible_in_empty_folder = false, -- when true, hidden files will be shown if the root folder is otherwise empty
          show_hidden_count = true, -- when true, the number of hidden items in each folder will be shown as the last entry
          hide_dotfiles = true,
          hide_gitignored = true,
          hide_hidden = true, -- only works on Windows for hidden files/directories
          hide_by_name = {
            -- ".DS_Store",
            -- "thumbs.db"
            --"node_modules",
          },
          hide_by_pattern = { -- uses glob style patterns
            --"*.meta",
            --"*/src/*/tsconfig.json"
          },
          always_show = { -- remains visible even if other settings would normally hide it
            --".gitignored",
          },
          never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show
            --".DS_Store",
            --"thumbs.db"
          },
          never_show_by_pattern = { -- uses glob style patterns
            --".null-ls_*",
          },
        },
        find_by_full_path_words = false,  -- `false` means it only searches the tail of a path.
        -- `true` will change the filter into a full path
        -- search with space as an implicit ".*", so
        -- `fi init`
        -- will match: `./sources/filesystem/init.lua
        --find_command = "fd", -- this is determined automatically, you probably don't need to set it
        --find_args = {  -- you can specify extra args to pass to the find command.
        --  fd = {
        --  "--exclude", ".git",
        --  "--exclude",  "node_modules"
        --  }
        --},
        ---- or use a function instead of list of strings
        --find_args = function(cmd, path, search_term, args)
        --  if cmd ~= "fd" then
        --    return args
        --  end
        --  --maybe you want to force the filter to always include hidden files:
        --  table.insert(args, "--hidden")
        --  -- but no one ever wants to see .git files
        --  table.insert(args, "--exclude")
        --  table.insert(args, ".git")
        --  -- or node_modules
        --  table.insert(args, "--exclude")
        --  table.insert(args, "node_modules")
        --  --here is where it pays to use the function, you can exclude more for
        --  --short search terms, or vary based on the directory
        --  if string.len(search_term) < 4 and path == "/home/cseickel" then
        --    table.insert(args, "--exclude")
        --    table.insert(args, "Library")
        --  end
        --  return args
        --end,
        group_empty_dirs = false, -- when true, empty folders will be grouped together
        search_limit = 500, -- max number of search results when using filters
        follow_current_file = {
          enabled = true, -- This will find and focus the file in the active buffer every time
          --               -- the current file is changed while the tree is open.
          leave_dirs_open = true, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
        },
        update_focused_file = {
          enable = true,
        },
        hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree
        -- in whatever position is specified in window.position
        -- "open_current",-- netrw disabled, opening a directory opens within the
        -- window like netrw would, regardless of window.position
        -- "disabled",    -- netrw left alone, neo-tree does not handle opening dirs
        use_libuv_file_watcher = true, -- This will use the OS level file watchers to detect changes
        -- instead of relying on nvim autocmd events.
      },
      buffers = {
        bind_to_cwd = true,
        follow_current_file = {
          enabled = true, -- This will find and focus the file in the active buffer every time
          --              -- the current file is changed while the tree is open.
          leave_dirs_open = true, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
        },
        update_focused_file = {
          enable = true,
        },
        group_empty_dirs = true,  -- when true, empty directories will be grouped together
        show_unloaded = true,    -- When working with sessions, for example, restored but unfocused buffers
        -- are mark as "unloaded". Turn this on to view these unloaded buffer.
        terminals_first = true,  -- when true, terminals will be listed before file buffers
        window = {
          mappings = {
            ["<bs>"] = "navigate_up",
            ["."] = "set_root",
            ["bd"] = "buffer_delete",
            ["i"] = "show_file_details",
            ["o"] = { "show_help", nowait=false, config = { title = "Order by", prefix_key = "o" }},
            ["oc"] = { "order_by_created", nowait = false },
            ["od"] = { "order_by_diagnostics", nowait = false },
            ["om"] = { "order_by_modified", nowait = false },
            ["on"] = { "order_by_name", nowait = false },
            ["os"] = { "order_by_size", nowait = false },
            ["ot"] = { "order_by_type", nowait = false },
          },
        },
      },
      git_status = {
        window = {
          mappings = {
            ["A"] = "git_add_all",
            ["gu"] = "git_unstage_file",
            ["ga"] = "git_add_file",
            ["gr"] = "git_revert_file",
            ["gc"] = "git_commit",
            ["gp"] = "git_push",
            ["gg"] = "git_commit_and_push",
            ["i"] = "show_file_details",
            ["o"] = { "show_help", nowait=false, config = { title = "Order by", prefix_key = "o" }},
            ["oc"] = { "order_by_created", nowait = false },
            ["od"] = { "order_by_diagnostics", nowait = false },
            ["om"] = { "order_by_modified", nowait = false },
            ["on"] = { "order_by_name", nowait = false },
            ["os"] = { "order_by_size", nowait = false },
            ["ot"] = { "order_by_type", nowait = false },
          },
        },
      },
      document_symbols = {
        follow_cursor = true,
        client_filters = "first",
        renderers = {
          root = {
            {"indent"},
            {"icon", default="C" },
            {"name", zindex = 10},
          },
          symbol = {
            {"indent", with_expanders = true},
            {"kind_icon", default="?" },
            {"container",
              content = {
                {"name", zindex = 10},
                {"kind_name", zindex = 20, align = "right"},
              }
            }
          },
        },
        window = {
          mappings = {
            ["<cr>"] = "jump_to_symbol",
            ["o"] = "jump_to_symbol",
            ["A"] = "noop", -- also accepts the config.show_path and config.insert_as options.
            ["d"] = "noop",
            ["y"] = "noop",
            ["x"] = "noop",
            ["p"] = "noop",
            ["c"] = "noop",
            ["m"] = "noop",
            ["a"] = "noop",
            ["/"] = "filter",
            ["f"] = "filter_on_submit",
          },
        },
        custom_kinds = {
          -- define custom kinds here (also remember to add icon and hl group to kinds)
          -- ccls
          -- [252] = 'TypeAlias',
          -- [253] = 'Parameter',
          -- [254] = 'StaticMethod',
          -- [255] = 'Macro',
        },
        kinds = {
          Unknown = { icon = "?", hl = "" },
          Root = { icon = "", hl = "NeoTreeRootName" },
          File = { icon = "󰈙", hl = "Tag" },
          Module = { icon = "", hl = "Exception" },
          Namespace = { icon = "󰌗", hl = "Include" },
          Package = { icon = "󰏖", hl = "Label" },
          Class = { icon = "󰌗", hl = "Include" },
          Method = { icon = "", hl = "Function" },
          Property = { icon = "󰆧", hl = "@property" },
          Field = { icon = "", hl = "@field" },
          Constructor = { icon = "", hl = "@constructor" },
          Enum = { icon = "󰒻", hl = "@number" },
          Interface = { icon = "", hl = "Type" },
          Function = { icon = "󰊕", hl = "Function" },
          Variable = { icon = "", hl = "@variable" },
          Constant = { icon = "", hl = "Constant" },
          String = { icon = "󰀬", hl = "String" },
          Number = { icon = "󰎠", hl = "Number" },
          Boolean = { icon = "", hl = "Boolean" },
          Array = { icon = "󰅪", hl = "Type" },
          Object = { icon = "󰅩", hl = "Type" },
          Key = { icon = "󰌋", hl = "" },
          Null = { icon = "", hl = "Constant" },
          EnumMember = { icon = "", hl = "Number" },
          Struct = { icon = "󰌗", hl = "Type" },
          Event = { icon = "", hl = "Constant" },
          Operator = { icon = "󰆕", hl = "Operator" },
          TypeParameter = { icon = "󰊄", hl = "Type" },

          -- ccls
          -- TypeAlias = { icon = ' ', hl = 'Type' },
          -- Parameter = { icon = ' ', hl = '@parameter' },
          -- StaticMethod = { icon = '󰠄 ', hl = 'Function' },
          -- Macro = { icon = ' ', hl = 'Macro' },
        }
      },
      example = {
        renderers = {
          custom = {
            {"indent"},
            {"icon", default="C" },
            {"custom"},
            {"name"}
          }
        },
        window = {
          mappings = {
            ["<cr>"] = "toggle_node",
            ["<C-e>"] = "example_command",
            ["d"] = "show_debug_info",
          },
        },
      },
    }
@ThaiDuy12345 ThaiDuy12345 added the bug Something isn't working label Apr 26, 2024
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

1 participant