ellisonleao / gruvbox.nvim

Lua port of the most famous vim colorscheme
MIT License
1.93k stars 207 forks source link

[BUG] Should popups be transparent with transparent_mode = true ? #333

Open timsofteng opened 6 months ago

timsofteng commented 6 months ago

Describe the bug

  1. With active transparent mode popups looks weird.

Expected behaviour

We need to mark popups somehow (to keep background or add borders)

Screenshots

изображение

изображение
xudyang1 commented 6 months ago

gruvbox.nvim is a colorscheme and it does not configure the floating window. If you are using language servers from lspconfig, you can set up borders in your own config like this:

local lsp = vim.lsp

vim.api.nvim_create_autocmd("LspAttach", {
  group = vim.api.nvim_create_augroup("UserLspConfig", {}),
  callback = function(event)
    lsp.handlers["textDocument/hover"] = lsp.with(lsp.handlers.hover, { border = "rounded" })
    lsp.handlers["textDocument/signatureHelp"] = lsp.with(lsp.handlers.signature_help, { border = "rounded" })

    local opts = { buffer = event.buf }
    local map = vim.keymap.set
    local lsp_buf = lsp.buf

    map("n", "K", lsp_buf.hover, opts)
    map("n", "gs", lsp_buf.signature_help, opts)
    -- more keymaps
  end,
})
timsofteng commented 6 months ago

@xudyang1 this issue is related to all popup windows. Here is how which-key looks without and with transparent mode

image image
xudyang1 commented 6 months ago

@timsofteng For whichkey, you can set up border style by calling require('which-key').setup({ window = { border = "single" }).

Generally, if you want to configure all these plugin popup windows, you have to refer to the plugin's github page. Most configuration options are available in the README, so updating your config may not take too long.

Again, gruvbox.nvim is only a colorscheme and it does not have the capability to set up the border style (you can find details about border styles from :help nvim_open_win()). gruvbox.nvim only sets some plugins' border highlight or links them into existing highlight groups (see :h 'highlight', :h highlight-groups, and :h :highlight-link).

If you want to customize the popup border:

  1. enable the plugin popup window border in the your config

  2. then, if you want to change the border highlight (e.g., color), you can search for the highlight group of the plugin popup window border. Next, override it in gruvbox.nvim's config. For example:

require("gruvbox").setup({
  overrides = { 
    LspInfoBorder = {
      link = "FloatBorder",
    },
  }
})
ellisonleao commented 5 months ago

hey @timsofteng not sure if that's a bug, and honestly I don't use transparent mode so I am a little biased on how to process with this. If you think you have a good suggestion using an override that can be the default color please open a PR, add some screenshots and we can discuss. How about that?

awused commented 4 months ago

I recently moved from the older gruvbox plugin to this one, and while it's nice that this has a built-in transparent mode unlike the stuff I hacked together with the other one, it does basically break popups. Popups should not use transparent backgrounds, they should keep whatever their existing backgrounds are for basic readability.