bug: grid border errors when pipe_table.wrap = false

Đang mở
#721 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 21 ngày

@StudentWeis đang làm issue này rồi.

Từ ngày 9/11/2026.

  • #722 của @StudentWeis — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
lua, markdown, neovim
Lĩnh vực
devtools

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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>
Ngôn ngữ chính
Lua
Star
5.2k
Fork
155
Merge trung bình
5 ngày 10 giờ
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của MeanderingProgrammer/render-markdown.nvim

Tất cả issue của MeanderingProgrammer/render-markdown.nvim

Issue tương tự

Thêm issue về Lua

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.