fix_lsp_window shrinks LSP hover float: nvim_win_text_height already accounts for conceal_lines
Los mantenedores suelen responder en 21 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza por lua/render-markdown/lib/compat.lua e inspecciona M.fix_lsp_window, especialmente cómo utiliza nvim_win_text_height() y los extmarks conceal_lines. Comprueba el tiempo de renderizado y el comportamiento de la altura de la ventana descritos en el informe; la reproducción sugerida usa Neovim con sqls mostrando al pasar el cursor una tabla ancha. Se considera terminado cuando la ventana flotante del hover muestra la tabla renderizada completa con la altura medida, sin reducirse demasiado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- 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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de MeanderingProgrammer/render-markdown.nvim
-
bug: grid border errors when pipe_table.wrap = falsePosiblemente ocupada @StudentWeis la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
MeanderingProgrammer/render-markdown.nvim#721 ·
Los mantenedores suelen responder en 21 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
MeanderingProgrammer/render-markdown.nvim#711 · 1 comentario ·
Los mantenedores suelen responder en 21 días
-
bug
Dificultad 4/5 1-2 días Aptitud para principiantes 55/100
MeanderingProgrammer/render-markdown.nvim#706 ·
Los mantenedores suelen responder en 21 días
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
MeanderingProgrammer/render-markdown.nvim#685 · 1 comentario ·
Los mantenedores suelen responder en 21 días
-
bug: Tables don't render correctly if the pipe at the end of line is missingPosiblemente ocupada @samholmes la tomó hace 121 días. Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
MeanderingProgrammer/render-markdown.nvim#673 · 2 comentarios ·
Los mantenedores suelen responder en 21 días
Todos los issues de MeanderingProgrammer/render-markdown.nvim
Issues similares
-
bug guide
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
enhancement forever
Dificultad 2/5 1-3 horas Aptitud para principiantes 61/100
openmap-world/openmap#78 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AndyHazz/bookends.koplugin#130 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
carlos-algms/agentic.nvim#336 ·
-
mt7621 编译报错:expected 'struct sockaddr *' but argument is of type 'struct sockaddr_unsized *'Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
coolsnowwolf/lede#14283 · 1 comentario ·