Skip to content

🐞 Bug: Empty table cell rendering #473

@Grueslayer

Description

@Grueslayer

🤖 Which branch are you using?

  • dev
  • main

📜 Issue description:

when using tables with pipe separated cells where no content exists the table is displayed wrong:

  • the cell ist not not aligned
  • the table has no closing line

This can only fixed using two empty spaces (which correctly leads to a linter warning)

📑 Reproduction steps:

# Empty Cell

| Pull Request | Description | Module |
| :- | :- | :- |
| PR1234 | lorem ipsum ||

# Empty Cell (one space)

| Pull Request | Description | Module |
| :- | :- | :- |
| PR1234 | lorem ipsum | |

# Empty Cell (two spaces)

| Pull Request | Description | Module |
| :- | :- | :- |
| PR1234 | lorem ipsum |  |
Image

All three are displayed in the same way in some HTML viewers I tested

Image

💻 Minimal init:

vim.env.LAZY_STDPATH = ".repro"
load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()

require("lazy.minit").repro({
    spec = {
        {
            "nvim-treesitter/nvim-treesitter",
            build = ":TSUpdate",

            ensure_installed = { "html", "latex", "markdown", "markdown_inline", "typst", "yaml" }
        },
        {
            "OXY2DEV/markview.nvim",
            -- branch = "dev",
            lazy = false
        }
    },
});

Same behaviour

Image

📜 Logs:

LOG | markview/autocmds.lua => bufHandle() -> C:/Users/jstocker9330/x.md | Buffer state changed.
LOG |                  markview/actions.lua => attach()                  | Attached to 3.
LOG |           markview/actions.lua => autocmd() -> on_attach           |   Fired on_attach & MarkviewAttach.
LOG |                markview/actions.lua => set_query()                 |   Set tree-sitter queries for 3.
LOG |           markview/actions.lua => autocmd() -> on_enable           |   Fired on_enable & MarkviewEnable.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 5ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 36ms
LOG |                      renderer.lua => render()                      |       Render(post): 21ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 58ms
LOG |       markview/actions.lua => autocmd() -> on_hybrid_enable        |   Fired on_hybrid_enable & MarkviewHybridEnable.
LOG |                markview/actions.lua => set_query()                 | Set tree-sitter queries for 3.
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |           markview/autocmds.lua => cursor() -> action()            | Cursor movement process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 0ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |         markview/autocmds.lua => modeChanged() -> action()         | Mode changed process.
LOG |                      renderer.lua => clear()                       |   Clearing: 3
LOG |                      renderer.lua => clear()                       |     Clearing total(3): 0ms
LOG |                  markview/actions.lua => render()                  |   Rendering preview.
LOG |                       parsers.lua => init()                        |     Parsing(start): 3
LOG |                                fn()                                |       Parsing total(3): 0ms
LOG |                      renderer.lua => render()                      |     Rendering: 3
LOG |                      renderer.lua => render()                      |       Render(main): 1ms
LOG |                      renderer.lua => render()                      |       Render(post): 0ms
LOG |                      renderer.lua => render()                      |       Rendering total(3): 1ms
LOG |                markview/actions.lua => set_query()                 | Set tree-sitter queries for 3.

Neovim version:

v0.12.0-dev-1234+gff777f9a85

✅ Expected behavior:

empty cells in tables with

  • no content
  • one space
  • multiple spaces

should be handled the same way (I prefer one space)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions