bug: grid border errors when pipe_table.wrap = false

Abierto
#721 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 21 días

@StudentWeis ya está trabajando en esto.

Desde el 9/11/2026.

  • #722 de @StudentWeis — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
lua, markdown, neovim
Área
devtools

Línea de trabajo

Read lua/render-markdown/render/markdown/table.lua around border_row and the parser logic that populates data.prefixes when wrapping is enabled. Compare the existing grid table test with the proposed wrap = false case, then run the table tests. Done means grid tables render with body separators and no error when wrapping is disabled, including inside list items.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Neovim version (nvim -v)

0.12.6

Neovim distribution

N/A (custom config, vim.pack)

Operating system

macOS 27.2

Terminal emulator / GUI

Any. Reproduced in an automated PTY harness and in the plugin's own test runner.

Describe the bug

With pipe_table.grid = true and pipe_table.wrap = false, rendering a table fails on every pass and the table is never rendered. wrap = false is a documented option (the default grid = true + wrap = true combination works), so the two seem expected to compose.

The error comes from the body separator added by grid: Render:border_row appends the row prefix unconditionally for position == 'body':

attempt to index local 'other' (a nil value)
  lua/render-markdown/lib/line.lua:39 in function 'extend'
  lua/render-markdown/render/markdown/table.lua:247 in function 'border_row'
  lua/render-markdown/render/markdown/table.lua:47 in function 'run'

Parser:parse only fills data.prefixes inside if layout.wrap then, so with wrap = false the table is empty and prefixes[row.node.start_row] is nil.

Reproduction, with pipe_table = { grid = true, wrap = false }:

| A | B |
| --- | --- |
| 1 | 2 |
| 3 | 4 |

The same happens inside a list item, and border_virtual = true does not matter.

Adding a test case that mirrors the existing grid test but with wrap = false reproduces it in the repo test suite:

it('grid without wrap', function()
    util.setup.text(lines, { pipe_table = { grid = true, wrap = false } })
    ...
Expected behavior

Table renders with a separator line between body rows, aligned to the table start column, without errors.

Healthcheck output
render-markdown.nvim [versions] ~
- ✅ OK neovim >= 0.11
- ✅ OK tree-sitter ABI: 15
- ✅ OK plugin: 8.14.12

render-markdown.nvim [configuration] ~
- ✅ OK valid

render-markdown.nvim [tree-sitter markdown] ~
- ✅ OK parser: installed
- ✅ OK ABI: 15
- ✅ OK highlights: ~/.local/share/nvim/site/queries/markdown/highlights.scm
- ✅ OK highlighter: enabled

render-markdown.nvim [tree-sitter markdown_inline] ~
- ✅ OK parser: installed
- ✅ OK ABI: 15
- ✅ OK highlights: ~/.local/share/nvim/site/queries/markdown_inline/highlights.scm

render-markdown.nvim [icons] ~
- ✅ OK using: mini.icons

render-markdown.nvim [conflicts] ~
- ✅ OK headlines: not installed
- ✅ OK markview: not installed
- ✅ OK obsidian: not installed
Plugin configuration
require('render-markdown').setup({
    pipe_table = { border_virtual = true, wrap = false, grid = true },
})

Also fails with the minimal config below (no border_virtual):

require('render-markdown').setup({
    pipe_table = { wrap = false, grid = true },
})
Plugin error log
Error in command line:
vim.schedule callback: ./lua/render-markdown/lib/line.lua:39: attempt to index local 'other' (a nil value)
stack traceback:
	./lua/render-markdown/lib/line.lua:39: in function 'extend'
	./lua/render-markdown/render/markdown/table.lua:247: in function 'border_row'
	./lua/render-markdown/render/markdown/table.lua:47: in function 'run'
	./lua/render-markdown/render/base.lua:21: in function 'execute'
	./lua/render-markdown/handler/markdown.lua:58: in function 'callback'
	./lua/render-markdown/request/view.lua:76: in function 'callback'
	./lua/render-markdown/request/view.lua:88: in function 'query'
	./lua/render-markdown/request/view.lua:71: in function 'nodes'
	./lua/render-markdown/handler/markdown.lua:55: in function 'parse'
	./lua/render-markdown/core/handlers.lua:94: in function 'tree'
	./lua/render-markdown/core/handlers.lua:51: in function 'run'
	./lua/render-markdown/core/ui.lua:156: in function 'callback'
	./lua/render-markdown/request/view.lua:64: in function 'parse'
	./lua/render-markdown/core/ui.lua:153: in function 'parse'
	./lua/render-markdown/core/ui.lua:126: in function 'render'
	./lua/render-markdown/core/ui.lua:112: in function 'run'
	./lua/render-markdown/core/ui.lua:78: in function <./lua/render-markdown/core/ui.lua:77>
Lenguaje dominante
Lua
Estrellas
5.2k
Forks
155
Merge medio
5 d 10 h
PR fusionados (30 d)
1

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de MeanderingProgrammer/render-markdown.nvim

Todos los issues de MeanderingProgrammer/render-markdown.nvim

Issues similares

Más issues de Lua

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.