## 事象 [[render-markdown.nvim]]に`fat_tables`オプションがある。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <p class="link-card-title">GitHub - MeanderingProgrammer/markdown.nvim: Plugin to improve viewing Markdown files in Neovim</p> <p class="link-card-description">Plugin to improve viewing Markdown files in Neovim - Meander ... </p> </div> <img src="https://opengraph.githubassets.com/6c6fd4230a327e2176e984890bb68d3b24b1fa48e00a446383e1458fa6e4db73/MeanderingProgrammer/markdown.nvim" class="link-card-image" /> </div> <a href="https://github.com/MeanderingProgrammer/markdown.nvim?tab=readme-ov-file#setup"></a> </div> > -- Add a line above and below tables to complete look, ends up like a window このオプションを有効にすると、テーブルが以下のように表示される。 ![[Pasted image 20240507103535.png]] しかし、日本語を含むと、以下のように線が表示されなくなる。 ![[Pasted image 20240507103659.png]] 正確には最後の行に日本語が含まれる場合のみっぽい。(途中行は問題ない) ## 原因 テーブルの先頭行と末尾行の長さが異なると判定され、その場合は線が表示されないから。これは長さをbyte数で判定しているから。 `handler/markdown.lua`より一部抜粋 ```lua elseif capture == 'table' then if state.config.fat_tables then local lines = vim.api.nvim_buf_get_lines(0, start_row, end_row, false) local table_head = list.first(lines) local table_tail = list.last(lines) if #table_head == #table_tail then local headings = vim.split(table_head, '|', { plain = true, trimempty = true }) ``` たとえば以下のケース。 ``` | id | name | |----|------| | 1 | ああ | | 2 | iい | ``` `| id | name |`は13byteだが、`| 2 | iい |`は14byteとなるため一致しない。 ## 回避策 ソースコードを変更し、エンコーディングと文字幅を考慮した条件分岐にするか、条件を外してしまうかのどちらか。 ## 解決策 [[GitHub]] Issuesに起票するのがよいかと。(未実施)