Bekaboo / dropbar.nvim

IDE-like breadcrumbs, out of the box
GNU General Public License v3.0
896 stars 17 forks source link

[Bug]: Cause toggle term to scroll to end #139

Closed xzbdmw closed 4 months ago

xzbdmw commented 4 months ago

Description

cursor will jump to bottom in toggleterm

nvim version

NVIM v0.10.0-dev-6308+ga090d43d6

dropbar.nvim version

a920a73

Operating system and version

macos 14.2

Minimal config

1. download lazyvim
2. add dropbar.lua in lua/plugin/dropbar.lua

return {
    "Bekaboo/dropbar.nvim",
    dependencies = {
        "nvim-telescope/telescope-fzf-native.nvim",
    },
    opts = {
        bar = {
            pick = {
                pivots = "hjkl;abcdefgmnopqrstuvwxyz",
            },
        },
        icons = {
            enable = true,
            kinds = {
                use_devicons = false,
                symbols = {
                    Array = "  ",
                    Boolean = " 󰨙 ",
                    Class = " 󰯳 ",
                    Codeium = " 󰘦 ",
                    Color = "  ",
                    Control = "  ",
                    Collapsed = " > ",
                    Constant = " 󰯱 ",
                    Constructor = "  ",
                    Copilot = "  ",
                    Enum = " 󰯹 ",
                    EnumMember = "  ",
                    Event = "  ",
                    Field = "  ",
                    File = "",
                    Folder = "",
                    Function = " 󰊕 ",
                    Interface = " 󰰅 ",
                    Key = "  ",
                    Keyword = " 󱕴 ",
                    Method = " 󰰑 ",
                    Module = " 󰆼 ",
                    Namespace = " 󰰔 ",
                    Null = "  ",
                    Number = " 󰰔 ",
                    Object = " 󰲟 ",
                    Operator = "  ",
                    Package = " 󰰚 ",
                    Property = " 󰲽 ",
                    Reference = " 󰰠 ",
                    Snippet = "  ",
                    String = "  ",
                    Struct = " 󰰣 ",
                    TabNine = " 󰏚 ",
                    Text = " 󱜥 ",
                    TypeParameter = " 󰰦 ",
                    Unit = " 󱜥 ",
                    Value = "  ",
                    Variable = " 󰄛 ",
                },
            },
            ui = {
                bar = {
                    separator = " > ",
                    extends = "",
                },
                menu = {
                    separator = "",
                    indicator = ">",
                },
            },
        },
        menu = {
            keymaps = {
                ["h"] = "<C-w>c",
                ["left"] = "<C-w>c",
                ["p"] = "<C-w>c",
            },
            entry = {
                padding = {
                    left = 0,
                },
            },
        },
    },
}
  1. add toogleterm.lua
    return {
    "akinsho/toggleterm.nvim",
    config = function()
        require("toggleterm").setup({
            -- size can be a number or function which is passed the current terminal
            size = function(term)
                if term.direction == "horizontal" then
                    return 15
                elseif term.direction == "vertical" then
                    return vim.o.columns * 0.4
                end
            end,
            -- open_mapping = [[<f7>]],
            -- on_create = fun(t: Terminal), -- function to run when the terminal is first created
            -- on_open = fun(t: Terminal), -- function to run when the terminal opens
            -- on_close = fun(t: Terminal), -- function to run when the terminal closes
            -- on_stdout = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stdout
            -- on_stderr = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stderr
            -- on_exit = fun(t: Terminal, job: number, exit_code: number, name: string) -- function to run when terminal process exits
            -- hide_numbers = true, -- hide the number column in toggleterm buffers
            shade_filetypes = {},
            autochdir = false, -- when neovim changes it current directory the terminal will change it's own when next it's opened
            highlights = {
                -- highlights which map to a highlight group name and a table of it's values
                -- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split
                Normal = {
                    link = "Normal",
                },
                NormalFloat = {
                    link = "Normal",
                },
                -- FloatBorder = {
                --     guifg = "<VALUE-HERE>",
                --     guibg = "<VALUE-HERE>",
                -- },
            },
            open_mapping = [[<f16>]],
            shade_terminals = false, -- NOTE: this option takes priority over highlights specified so if you specify Normal highlights you should set this to false
            -- shading_factor = "<number>", -- the percentage by which to lighten terminal background, default: -30 (gets multiplied by -3 if background is light)
            start_in_insert = true,
            insert_mappings = true,   -- whether or not the open mapping applies in insert mode
            terminal_mappings = true, -- whether or not the open mapping applies in the opened terminals
            persist_size = true,
            persist_mode = true,      -- if set to true (default) the previous terminal mode will be remembered
            direction = "horizontal",
            close_on_exit = true,     -- close the terminal window when the process exits
            -- Change the default shell. Can be a string or a function returning a string
            shell = vim.o.shell,
            auto_scroll = true, -- automatically scroll to the bottom on terminal output
            -- This field is only relevant if direction is set to 'float'
            -- float_opts = {
            --   -- The border key is *almost* the same as 'nvim_open_win'
            --   -- see :h nvim_open_win for details on borders however
            --   -- the 'curved' border is a custom border type
            --   -- not natively supported but implemented in this plugin.
            --   border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
            --   -- like `size`, width, height, row, and col can be a number or function which is passed the current terminal
            --   width = <value>,
            --   height = <value>,
            --   row = <value>,
            --   col = <value>,
            --   winblend = 3,
            --   zindex = <value>,
            --   title_pos = 'left' | 'center' | 'right', position of the title of the floating window
            -- },
        })
    end,
    }

Steps to reproduce

  1. open toggleterm (keymap f7)
  2. type ls + any keymap that enter terminal normal mode
  3. type f7 to hide term
  4. type f7 to show term
  5. see the cursor jump to bottom
  6. disable dropbar and repeat above
  7. see the cursor stays the same place

Expected behavior

cursor won't jump

Actual behavior

cursor jump to bottom

Additional information

https://github.com/Bekaboo/dropbar.nvim/assets/97848247/fcbabbc9-dfdd-4167-b394-150b63580707

xzbdmw commented 4 months ago

any winbar plugin will cause this problem

willothy commented 4 months ago

Mind providing some info as to why you closed this? Did it turn out to not be a bug?

xzbdmw commented 4 months ago

It is likely a toggleterm bug, because I tried babecue (another winbar plugin) still have the same problem