goolord / alpha-nvim

a lua powered greeter like vim-startify / dashboard-nvim
MIT License
1.78k stars 104 forks source link

Bug: occasional padding of dashboard at startup #190

Closed mBaratta96 closed 1 year ago

mBaratta96 commented 1 year ago

Hello. Love the plugin, but it has a weird behavior at startup when I use more than 3 buttons.

This is what is expected: a nice centered dashboard

1678363842

However, it happens occasionally that the entire dashboard is shifted upwards of a couple of lines. I can't find the reason to reproduce this, as it seems to happen randomly. After a couple of tries to re-open Neovim, the dashboard goes back to normal.

1678363832

This never happens if I use just 3 buttons.

Here's my configuration file:

local alpha = require("alpha")
local db = require("alpha.themes.dashboard")
local header = {}
header.type = "text"
header.val = {
    ".;lkOkdlodxxxxkOOOkkkO0000000000OOkkkkkkkkkkkOOOkkkkkkxxxxxkOkdc,'''';cccccoOKKKK00kxoc:,'.......   ",
    ".;ldxdoodxxxxxxkkOOOOO000000000OOOOOOOOkkkkkkkO0kkkkkxxdddxdc,..,;;;;;:cc::cdO00KK00Okxdlc:,'.....  ",
    ".,cdkkkkkkxdddxkkO0000000000000000OOOOOOOOOOOkkOOOkkxdoddxo;.':cc:,'..',::::oxkkOOkkkkkkxdolc:;,'...",
    ".;lxOOO0OOkddddxkkOO00000KKKKKKKKKKKKKKKK000K0kxxxddollddc,':ll:,.......';cccoddoooooooddddddollc:;,",
    ".:oxOO00OOkxddodxkkOOOOOO000KKKKKXXXKKKK0OOO0KOxdllllcclc,,:c:,'...'''''';:c::cllllllllooddxxxddooll",
    ",cdkOO000OkxddoodxxkkkkOOOOO000000KK0OOOkxxkOO00xocc:;;,,;:::::cccc::;,,:::cc:;;ldddddddddxxxxxxxddd",
    ",cokO0KK0OOOOkdddddxxxkxdc:::::::clloooooodddkOkdllc;'.,:c:looolc:;,,,:clcccooc,:xkkxxxxxxxxxxxxxxdd",
    "',:lxkO0KXXKKOxxxxxxxoc;;;:clooolc:::;;;;;::lodxkxdo:;::;:cclllcccclodxxddoooll:;ldxxdooooodddddoooo",
    "..,:odkXNNNXKOkkkkkkxl::coxkxxkkxdlcc:::;,;codxkOOkkdoolllcclodxkOOOOOOkkkxdolc:;;:cc:;,,,;::cc:;;;;",
    "...;cokXNNNX0OkkOOOOxoclddollolc:,.'',;:::coxkOO0000OkdolllccoodxkO0000Okkxdolc:;,,,................",
    "...,;lk0KKK0OkkkOOOOkxdxdoccc:;;cc;:cc::cdxkO0KK00000OOOkxdlcccldxkO0KK0kxxollc:;,,,...        .    ",
    "...':oxkO00OxxkOOOkkkkxxdl::cdkkkxol:::lxkO000KK00000K00OOxl:;,,:odkO00Okxdolcc:;,,,,'.             ",
    "....:llodkkkkkkOOOkkxdxxdooxxxxdoccclodxkO00OOO00000KK0Oxoc,....,:cldxkxxxdolc:;,,,,,;,.            ",
    "....,;;:lloxxxxkkkkkkxdxxkOkxddddddkkkxkOOOxdk000Okkxxdolc,. .',;:c:clooooollc:;,,,,,,;'.           ",
    "....',,,;cldddxkkOOOOOkkOOkO00KKKK00OOOOOkxllkkd:,,'',;;,,..,;;::::::::cllllcc;,''',,,;;.           ",
    "....',,,;;:odloxkkOOO0OOOOO0KXXNNNXXK00Oxdl;col;',;:clc;,,;ccccc::;;;;;;::ccc:;,'',,,,;:;..         ",
    ".....':cc;;:lcldxkkOO000KKKKKXNNWWWNNX0kol;:dkkxxkOOkkkdoodxdol:;,,''''',;:ccc:;,,,,,',;;,.   ...   ",
    "'....,c;:ccccc:ldxxkOOO0KKKKKXXNNNNWNXOxl:,lk0XXXXKK000Odlllol:;,'........,:clc:;;,,,''',,'.   ..   ",
    ".... 'ccloxxolc:lodkkkO000000KXXXXXXX0kdl;;ok0KXXKK0kxdxxlccc:,,'..........,:llc:;;,,,'.,;,.        ",
    "......:xkkOOOxoccloxxkkOOOOO00KKKKK00Okdc,;oxkO0kxxxolcllc:;::,'............';::;;,,,,'.';;'.       ",
    ".......cOOOOOkdoolodxxkkkkkkOO00OOOOOkxo:,;ldddolclooc;,,,'...       ...''...',;;;,''''.',;,.       ",
    ".......'dOkkO0kddlldxxkkOOOOOOOkkkOkkxdo:,:lc;::lllc,.           ....','',,'..',,,,,'...',;,.       ",
    "........,xOxxkxddddxxxxxkkOOOOOkkkkkxxdoc;;:,..,:,..           .',;:cc;,':c:,'.'..,;''..',;;.       ",
    ".........,okxdxxxxxkkxxxkkkOOOOOOkkxxddol:,....'.           ..';::ccc:;''cc:;;,'..','''..',;'       ",
    "d:'........;oxxxdoxkxxdxxxkkOOOOOkkkxxxddc,......   ........,;cc:::loo:.'cc;;:c:,''''''..',;,.      ",
    "Od;......   .;oxxddddoodxxdxkkkOOkkOkkkkxoc,....  ..,;:;;;;;;:::codkkd;.'::,;:looc;;,''..',,.       ",
    "o:'......     .lkxoodooooodxxxxkkOOOOOOkxdl;...,'.,:loodxkkxdolodxkkxo:,;c;,,:lllol:;,...,,'.       ",
    "........      .cdoolloddocoxxdxkOOkO0Okxolc:'..;ll:cloxkKK0OkkxdxxkOkxocl:,',cllclol;'..';;,.       ",
    "........      ..'.,ooloxoccloddxkkkkOxddocc:,..':oddoc::dk0KKKOOOOkxxooo:,'',:llc:::;,'',,,'.       ",
    "....              .cxooxdoccododxxdxxdodoc:;,..':looxOocldOXKKOkxxxdxxl;,''',;cl:::c:;:;;,'..       ",
}
header.opts = {
    hl = "String",
    position = "center",
}

local buttons = {}
buttons.type = "group"
buttons.val = {
    db.button("p", "   Projects", ":Telescope projects<CR>"),
    db.button("o", "   Open/Create file", ":Telescope file_browser path=~/Documenti/projects<CR>"),
    db.button("c", "   Configuration", ":e ~/.config/nvim/lua/plugins.lua<CR>"),
    db.button("r", "   Recent files", ":Telescope oldfiles<CR>"),
}
buttons.opts = {
    spacing = 1,
}

local config = {
    layout = {
        header,
        { type = "padding", val = 1 },
        buttons,
    },
}
alpha.setup(config)
goolord commented 1 year ago

hmmm very odd... can you paste your :checkhealth and pc specs?

mBaratta96 commented 1 year ago

:checkhealth results:

man: require("man.health").check()
========================================================================
  - OK: plugin/man.vim not in $VIMRUNTIME
  - OK: autoload/man.vim not in $VIMRUNTIME

mason: require("mason.health").check()
========================================================================
## mason.nvim report
  - OK: neovim version >= 0.7.0
  - OK: **Go**: `go version go1.18.1 linux/amd64`
  - OK: **cargo**: `cargo 1.67.1 (8ecd4f20a 2023-01-10)`
  - WARNING: **luarocks**: not available
  - OK: **Ruby**: `ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]`
  - OK: **RubyGem**: `3.3.5`
  - WARNING: **Composer**: not available
  - WARNING: **PHP**: not available
  - OK: **npm**: `9.6.0`
  - OK: **node**: `v18.14.2`
  - OK: **python3**: `Python 3.10.6`
  - OK: **pip3**: `pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)`
  - OK: **javac**: `javac 18`
  - OK: **java**: `openjdk version "18" 2022-03-22`
  - WARNING: **julia**: not available
  - OK: **wget**: `GNU Wget 1.21.2 compilato su linux-gnu.`
  - OK: **curl**: `curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.13`
  - OK: **gzip**: `gzip 1.10`
  - OK: **tar**: `tar (GNU tar) 1.34`
  - WARNING: **pwsh**: not available
  - OK: **bash**: `GNU bash, versione 5.1.16(1)-release (x86_64-pc-linux-gnu)`
  - OK: **sh**: `Ok`
  - OK: **JAVA_HOME**: `openjdk version "18" 2022-03-22`
  - OK: GitHub API rate limit. Used: 0. Remaining: 60. Limit: 60. Reset: mar 14 mar 2023, 11:10:51.

mkdp: health#mkdp#check
========================================================================
  - INFO: Platform: linux
  - INFO: Nvim Version: NVIM v0.8.3
  - INFO: Pre build: /home/marco/.local/share/nvim/site/pack/packer/start/markdown-preview.nvim/app/bin/markdown-preview-linux
  - INFO: Pre build version: 0.0.10
  - OK: Using pre build

null-ls: require("null-ls.health").check()
========================================================================
  - OK: black: the command "black" is executable.
  - OK: google_java_format: the command "google-java-format" is executable.
  - OK: gofumpt: the command "gofumpt" is executable.
  - OK: latexindent: the command "latexindent" is executable.
  - ERROR: prettier: the command "prettier" is not executable.
  - OK: stylua: the command "stylua" is executable.
  - OK: xmlformat: the command "xmlformat" is executable.
  - OK: golangci_lint: the command "golangci-lint" is executable.
  - OK: jsonlint: the command "jsonlint" is executable.
  - OK: flake8: the command "flake8" is executable.
  - OK: selene: the command "selene" is executable.

nvim: health#nvim#check
========================================================================
## Configuration
  - OK: no issues found

## Performance
  - OK: Build type: Release

## Remote Plugins
  - OK: Up to date

## terminal
  - INFO: key_backspace (kbs) terminfo entry: key_backspace=\177
  - INFO: key_dc (kdch1) terminfo entry: key_dc=\E[3~
  - INFO: $COLORTERM='truecolor'

nvim-treesitter: require("nvim-treesitter.health").check()
========================================================================
## Installation
  - WARNING: `tree-sitter` executable not found (parser generator, only needed for :TSInstallFromGrammar, not required for :TSInstall)
  - OK: `node` found v18.14.2 (only needed for :TSInstallFromGrammar)
  - OK: `git` executable found.
  - OK: `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
    Version: cc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
  - OK: Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

## OS Info:
{
  machine = "x86_64",
  release = "5.14.0-1048-oem",
  sysname = "Linux",
  version = "#55-Ubuntu SMP Mon Aug 8 14:58:10 UTC 2022"
}

## Parser/Features         H L F I J
  - bash                ✓ ✓ ✓ . ✓
  - c                   ✓ ✓ ✓ ✓ ✓
  - css                 ✓ . ✓ ✓ ✓
  - go                  ✓ ✓ ✓ ✓ ✓
  - gomod               ✓ . . . ✓
  - help                ✓ . . . ✓
  - html                ✓ ✓ ✓ ✓ ✓
  - java                ✓ ✓ . ✓ ✓
  - javascript          ✓ ✓ ✓ ✓ ✓
  - json                ✓ ✓ ✓ ✓ .
  - kotlin              ✓ ✓ ✓ . ✓
  - lua                 ✓ ✓ ✓ ✓ ✓
  - markdown            ✓ . ✓ . ✓
  - php                 ✓ ✓ ✓ ✓ ✓
  - python              ✓ ✓ ✓ ✓ ✓
  - rust                ✓ ✓ ✓ ✓ ✓
  - scala               ✓ . ✓ . ✓
  - typescript          ✓ ✓ ✓ ✓ ✓
  - vim                 ✓ ✓ ✓ . ✓
  - vue                 ✓ . ✓ ✓ ✓
  - yaml                ✓ ✓ ✓ ✓ ✓

  Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
         +) multiple parsers found, only one will be used
         x) errors found in the query, try to run :TSUpdate {lang}

provider: health#provider#check
========================================================================
## Clipboard (optional)
  - OK: Clipboard tool found: xclip

## Python 3 provider (optional)
  - INFO: `g:python3_host_prog` is not set.  Searching for python3 in the environment.
  - INFO: Multiple python3 executables found.  Set `g:python3_host_prog` to avoid surprises.
  - INFO: Executable: /usr/bin/python3
  - INFO: Other python executable: /bin/python3
  - INFO: Python version: 3.10.6
  - INFO: pynvim version: 0.4.3
  - OK: Latest pynvim is installed.

## Python virtualenv
  - OK: no $VIRTUAL_ENV

## Ruby provider (optional)
  - INFO: Ruby: ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
  - WARNING: `neovim-ruby-host` not found.
    - ADVICE:
      - Run `gem install neovim` to ensure the neovim RubyGem is installed.
      - Run `gem environment` to ensure the gem bin directory is in $PATH.
      - If you are using rvm/rbenv/chruby, try "rehashing".
      - See :help |g:ruby_host_prog| for non-standard gem installations.
      - You may disable this provider (and warning) by adding `let g:loaded_ruby_provider = 0` to your init.vim

## Node.js provider (optional)
  - INFO: Node.js: v18.14.2
  - WARNING: Missing "neovim" npm (or yarn, pnpm) package.
    - ADVICE:
      - Run in shell: npm install -g neovim
      - Run in shell (if you use yarn): yarn global add neovim
      - Run in shell (if you use pnpm): pnpm install -g neovim
      - You may disable this provider (and warning) by adding `let g:loaded_node_provider = 0` to your init.vim

## Perl provider (optional)
  - WARNING: "Neovim::Ext" cpan module is not installed
    - ADVICE:
      - See :help |provider-perl| for more information.
      - You may disable this provider (and warning) by adding `let g:loaded_perl_provider = 0` to your init.vim

targets: health#targets#check
========================================================================
  - OK: No conflicting mappings found

telescope: require("telescope.health").check()
========================================================================
## Checking for required plugins
  - OK: plenary installed.
  - OK: nvim-treesitter installed.

## Checking external dependencies
  - OK: rg: found ripgrep 13.0.0
  - OK: fd: found fd 8.6.0

## ===== Installed extensions =====

## Telescope Extension: `file_browser`
  - INFO: No healthcheck provided

## Telescope Extension: `media_files`
  - INFO: No healthcheck provided

## Telescope Extension: `projects`
  - INFO: No healthcheck provided

vim.lsp: require("vim.lsp.health").check()
========================================================================
  - INFO: LSP log level : WARN
  - INFO: Log path: /home/marco/.local/state/nvim/lsp.log
  - INFO: Log size: 25662 KB

vim.treesitter: require("vim.treesitter.health").check()
========================================================================
  - INFO: Runtime ABI version : 14
  - OK: Loaded parser for bash: ABI version 14
  - OK: Loaded parser for c: ABI version 13
  - OK: Loaded parser for css: ABI version 13
  - OK: Loaded parser for go: ABI version 14
  - OK: Loaded parser for gomod: ABI version 13
  - OK: Loaded parser for help: ABI version 14
  - OK: Loaded parser for html: ABI version 13
  - OK: Loaded parser for java: ABI version 14
  - OK: Loaded parser for javascript: ABI version 14
  - OK: Loaded parser for json: ABI version 13
  - OK: Loaded parser for kotlin: ABI version 13
  - OK: Loaded parser for lua: ABI version 13
  - OK: Loaded parser for markdown: ABI version 13
  - OK: Loaded parser for php: ABI version 14
  - OK: Loaded parser for python: ABI version 14
  - OK: Loaded parser for rust: ABI version 14
  - OK: Loaded parser for scala: ABI version 14
  - OK: Loaded parser for typescript: ABI version 14
  - OK: Loaded parser for vim: ABI version 14
  - OK: Loaded parser for vue: ABI version 13
  - OK: Loaded parser for yaml: ABI version 13
  - OK: Loaded parser for c: ABI version 13
  - OK: Loaded parser for help: ABI version 14
  - OK: Loaded parser for lua: ABI version 13
  - OK: Loaded parser for vim: ABI version 14

vimtex: health#vimtex#check
========================================================================
## VimTeX
  - OK: Vim version should have full support!
  - WARNING: biber is not executable!
    - ADVICE:
      - Biber is often required so this may give unexpected problems.
  - OK: Zathura should work properly!
  - OK: Compiler should work!
mBaratta96 commented 1 year ago

Hello, any news on this?

goolord commented 1 year ago

not really, i have no idea what could be causing this. "padding" doesn't really seem to be the right word to describe what's happening here. it seems to me like header.val doesn't finish computing the string before the first draw happens (luajit precomputes the hash of every string, so for a very long string that might be slow enough to cause this behavior.)

try changing to assigning header without mutations

local header = {
  type = "text";
  val = {
      ".;lkOkdlodxxxxkOOOkkkO0000000000OOkkkkkkkkkkkOOOkkkkkkxxxxxkOkdc,'''';cccccoOKKKK00kxoc:,'.......   ",
      ".;ldxdoodxxxxxxkkOOOOO000000000OOOOOOOOkkkkkkkO0kkkkkxxdddxdc,..,;;;;;:cc::cdO00KK00Okxdlc:,'.....  ",
      ".,cdkkkkkkxdddxkkO0000000000000000OOOOOOOOOOOkkOOOkkxdoddxo;.':cc:,'..',::::oxkkOOkkkkkkxdolc:;,'...",
      ".;lxOOO0OOkddddxkkOO00000KKKKKKKKKKKKKKKK000K0kxxxddollddc,':ll:,.......';cccoddoooooooddddddollc:;,",
      ".:oxOO00OOkxddodxkkOOOOOO000KKKKKXXXKKKK0OOO0KOxdllllcclc,,:c:,'...'''''';:c::cllllllllooddxxxddooll",
      ",cdkOO000OkxddoodxxkkkkOOOOO000000KK0OOOkxxkOO00xocc:;;,,;:::::cccc::;,,:::cc:;;ldddddddddxxxxxxxddd",
      ",cokO0KK0OOOOkdddddxxxkxdc:::::::clloooooodddkOkdllc;'.,:c:looolc:;,,,:clcccooc,:xkkxxxxxxxxxxxxxxdd",
      "',:lxkO0KXXKKOxxxxxxxoc;;;:clooolc:::;;;;;::lodxkxdo:;::;:cclllcccclodxxddoooll:;ldxxdooooodddddoooo",
      "..,:odkXNNNXKOkkkkkkxl::coxkxxkkxdlcc:::;,;codxkOOkkdoolllcclodxkOOOOOOkkkxdolc:;;:cc:;,,,;::cc:;;;;",
      "...;cokXNNNX0OkkOOOOxoclddollolc:,.'',;:::coxkOO0000OkdolllccoodxkO0000Okkxdolc:;,,,................",
      "...,;lk0KKK0OkkkOOOOkxdxdoccc:;;cc;:cc::cdxkO0KK00000OOOkxdlcccldxkO0KK0kxxollc:;,,,...        .    ",
      "...':oxkO00OxxkOOOkkkkxxdl::cdkkkxol:::lxkO000KK00000K00OOxl:;,,:odkO00Okxdolcc:;,,,,'.             ",
      "....:llodkkkkkkOOOkkxdxxdooxxxxdoccclodxkO00OOO00000KK0Oxoc,....,:cldxkxxxdolc:;,,,,,;,.            ",
      "....,;;:lloxxxxkkkkkkxdxxkOkxddddddkkkxkOOOxdk000Okkxxdolc,. .',;:c:clooooollc:;,,,,,,;'.           ",
      "....',,,;cldddxkkOOOOOkkOOkO00KKKK00OOOOOkxllkkd:,,'',;;,,..,;;::::::::cllllcc;,''',,,;;.           ",
      "....',,,;;:odloxkkOOO0OOOOO0KXXNNNXXK00Oxdl;col;',;:clc;,,;ccccc::;;;;;;::ccc:;,'',,,,;:;..         ",
      ".....':cc;;:lcldxkkOO000KKKKKXNNWWWNNX0kol;:dkkxxkOOkkkdoodxdol:;,,''''',;:ccc:;,,,,,',;;,.   ...   ",
      "'....,c;:ccccc:ldxxkOOO0KKKKKXXNNNNWNXOxl:,lk0XXXXKK000Odlllol:;,'........,:clc:;;,,,''',,'.   ..   ",
      ".... 'ccloxxolc:lodkkkO000000KXXXXXXX0kdl;;ok0KXXKK0kxdxxlccc:,,'..........,:llc:;;,,,'.,;,.        ",
      "......:xkkOOOxoccloxxkkOOOOO00KKKKK00Okdc,;oxkO0kxxxolcllc:;::,'............';::;;,,,,'.';;'.       ",
      ".......cOOOOOkdoolodxxkkkkkkOO00OOOOOkxo:,;ldddolclooc;,,,'...       ...''...',;;;,''''.',;,.       ",
      ".......'dOkkO0kddlldxxkkOOOOOOOkkkOkkxdo:,:lc;::lllc,.           ....','',,'..',,,,,'...',;,.       ",
      "........,xOxxkxddddxxxxxkkOOOOOkkkkkxxdoc;;:,..,:,..           .',;:cc;,':c:,'.'..,;''..',;;.       ",
      ".........,okxdxxxxxkkxxxkkkOOOOOOkkxxddol:,....'.           ..';::ccc:;''cc:;;,'..','''..',;'       ",
      "d:'........;oxxxdoxkxxdxxxkkOOOOOkkkxxxddc,......   ........,;cc:::loo:.'cc;;:c:,''''''..',;,.      ",
      "Od;......   .;oxxddddoodxxdxkkkOOkkOkkkkxoc,....  ..,;:;;;;;;:::codkkd;.'::,;:looc;;,''..',,.       ",
      "o:'......     .lkxoodooooodxxxxkkOOOOOOkxdl;...,'.,:loodxkkxdolodxkkxo:,;c;,,:lllol:;,...,,'.       ",
      "........      .cdoolloddocoxxdxkOOkO0Okxolc:'..;ll:cloxkKK0OkkxdxxkOkxocl:,',cllclol;'..';;,.       ",
      "........      ..'.,ooloxoccloddxkkkkOxddocc:,..':oddoc::dk0KKKOOOOkxxooo:,'',:llc:::;,'',,,'.       ",
      "....              .cxooxdoccododxxdxxdodoc:;,..':looxOocldOXKKOkxxxdxxl;,''',;cl:::c:;:;;,'..       ",
  };
  opts = {
      hl = "String",
      position = "center",
  };
}

@mBaratta96

mBaratta96 commented 1 year ago

Doesn't seem to work. However, this is not something that bothers me too much. Thanks for your help.