fix_lsp_window shrinks LSP hover float: nvim_win_text_height already accounts for conceal_lines
Maintainer antworten meist innerhalb von 21 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
Rechercherichtung
Beginne mit lua/render-markdown/lib/compat.lua und untersuche M.fix_lsp_window, insbesondere, wie es nvim_win_text_height() und conceal_lines-Extmarks verwendet. Prüfe das im Bericht beschriebene Render-Timing und das Verhalten der Fensterhöhe; für die vorgeschlagene Reproduktion wird Neovim mit sqls verwendet, das den Hover für eine breite Tabelle anzeigt. Das Ziel ist erreicht, wenn das Hover-Fenster die vollständig gerenderte Tabelle in der gemessenen Höhe anzeigt, ohne zu stark verkleinert zu werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
LSP hover floats get shrunk to a few lines when the hover document contains a rendered markdown table, because compat.fix_lsp_window() subtracts one line per conceal_lines extmark from nvim_win_text_height(), which already returns the post-fold height.
With sqls hovering a 14-column table (18-line hover doc) the float ends up 112x3 instead of 112x19; the rendered table is unreadable (only the first rows visible) even though it was rendered correctly.
:RenderMarkdown disable gives the normal 112x18 float, so this is the plugin, not lspconfig/sqls.
To reproduce
Environment: NVIM v0.13.0-dev-2042+g74f3ce7970, render-markdown 8e87953 (2026-10-10), default opts (file_types = { 'markdown', 'codecompanion' }).
- sqlite db with e.g.
CREATE TABLE big(a INT, b TEXT, c REAL, d BLOB, e INT, f TEXT, g INT, h TEXT, i INT, j TEXT, k INT, l TEXT, m INT, n TEXT); sqlsconnected, cursor on the table name,:lua vim.lsp.buf.hover()
The hover doc is:
# `big` table
| Name | Type | Primary key … | … |
| :--------------- | :--------------- | :---------------------- | … |
| `a` | `INT` | `NO` | `-` | |
…
Actual
win 112x3 nvim_win_text_height = 18 at the time fix_lsp_window runs, 19 after the render settles
extmarks: 15 with conceal_lines, 17 rows of virt_lines (the drawn table)
height = 18 - 15 = 3
Expected
Float large enough for the rendered content (112x19).
Root cause
lua/render-markdown/lib/compat.lua:
-- account for conceal lines marks allowing us to reduce window height
local height = vim.api.nvim_win_text_height(win, {}).all
for _, extmark in ipairs(extmarks) do
if extmark:get().opts.conceal_lines then
height = height - 1
end
end
if height < vim.api.nvim_win_get_height(win) then
vim.api.nvim_win_set_height(win, height)
end
Verified on this Neovim build that nvim_win_text_height() already excludes lines collapsed by conceal_lines marks: for the same 18-line hover doc, a normal (non-float) markdown buffer after render shows the table on rows 3..20 (18 rows, checked with a pty + screenstring()), while nvim_win_text_height() reports 19 (18 rows + the trailing empty line). So the subtraction is a second deduction and the more conceal_lines marks a table produces, the smaller the float gets.
Note also that the function only ever shrinks (if height < ...), so nothing restores the height when the measurement is too small.
Suggested fix
Trust the measurement, and re-measure after the marks have settled:
function M.fix_lsp_window(buf, win, extmarks)
local has_lsp = pcall(vim.api.nvim_win_get_var, win, 'lsp_floating_bufnr')
if not has_lsp then
return
end
local env = require('render-markdown.lib.env')
local str = require('render-markdown.lib.str')
-- width handling unchanged
local width = 0
for _, line in ipairs(vim.api.nvim_buf_get_lines(buf, 0, -1, false)) do
width = math.max(width, str.width(line))
end
if width <= vim.api.nvim_win_get_width(win) then
env.win.set(win, 'wrap', false)
end
vim.schedule(function()
if not vim.api.nvim_win_is_valid(win) then
return
end
local height = vim.api.nvim_win_text_height(win, {}).all
if height ~= vim.api.nvim_win_get_height(win) then
pcall(vim.api.nvim_win_set_height, win, height)
end
end)
end
With this patch the same hover shows 112x19 with the whole table visible. Small terminals stay fine: nvim_win_set_height is clamped by Neovim to the available rows (16-line terminal -> height 14, scrolling inside the float still works).
Checklist
- I have read the CONTRIBUTING guide
- I have searched existing issues
- Vorherrschende Sprache
- Lua
- Sterne
- 5.2k
- Forks
- 155
- Ø Merge
- 5 T. 10 Std.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus MeanderingProgrammer/render-markdown.nvim
-
bug: grid border errors when pipe_table.wrap = falseEvtl. vergeben @StudentWeis hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 35/100
MeanderingProgrammer/render-markdown.nvim#721 ·
Maintainer antworten meist innerhalb von 21 Tagen
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
MeanderingProgrammer/render-markdown.nvim#711 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 21 Tagen
-
bug
Schwierigkeit 4/5 1-2 Tage Anfängerfreundlichkeit 55/100
MeanderingProgrammer/render-markdown.nvim#706 ·
Maintainer antworten meist innerhalb von 21 Tagen
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
MeanderingProgrammer/render-markdown.nvim#685 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 21 Tagen
-
bug: Tables don't render correctly if the pipe at the end of line is missingEvtl. vergeben @samholmes hat das vor 122 Tagen übernommen. Offenbug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
MeanderingProgrammer/render-markdown.nvim#673 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 21 Tagen
Alle Issues in MeanderingProgrammer/render-markdown.nvim
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
teradata-labs/loom#624 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
rohit746/pdf-view.nvim#109 ·
Maintainer antworten meist innerhalb von 1 Tag