fix: Multi byte truncate for displayer (#464)
This is needed for calling strdisplaywidth() from Lua loop.
See https://github.com/nvim-telescope/telescope.nvim/issues/414
See a1ed941a78/src/nvim/eval/funcs.c (L9845-L9858)
Co-authored-by: Simon Hauser <Simon-Hauser@outlook.de>
This commit is contained in:
committed by
GitHub
parent
4e0dfa2e70
commit
1ca1e7ccba
32
lua/tests/automated/entry_display_spec.lua
Normal file
32
lua/tests/automated/entry_display_spec.lua
Normal file
@@ -0,0 +1,32 @@
|
||||
local entry_display = require('telescope.pickers.entry_display')
|
||||
|
||||
describe('truncate', function()
|
||||
for _, ambiwidth in ipairs{'single', 'double'} do
|
||||
for _, case in ipairs{
|
||||
{args = {'abcde', 6}, expected = {single = 'abcde', double = 'abcde'}},
|
||||
{args = {'abcde', 5}, expected = {single = 'abcde', double = 'abcde'}},
|
||||
{args = {'abcde', 4}, expected = {single = 'abc…', double = 'ab…'}},
|
||||
{args = {'アイウエオ', 11}, expected = {single = 'アイウエオ', double = 'アイウエオ'}},
|
||||
{args = {'アイウエオ', 10}, expected = {single = 'アイウエオ', double = 'アイウエオ'}},
|
||||
{args = {'アイウエオ', 9}, expected = {single = 'アイウエ…', double = 'アイウ…'}},
|
||||
{args = {'アイウエオ', 8}, expected = {single = 'アイウ…', double = 'アイウ…'}},
|
||||
{args = {'├─┤', 7}, expected = {single = '├─┤', double = '├─┤'}},
|
||||
{args = {'├─┤', 6}, expected = {single = '├─┤', double = '├─┤'}},
|
||||
{args = {'├─┤', 5}, expected = {single = '├─┤', double = '├…'}},
|
||||
{args = {'├─┤', 4}, expected = {single = '├─┤', double = '├…'}},
|
||||
{args = {'├─┤', 3}, expected = {single = '├─┤', double = '…'}},
|
||||
{args = {'├─┤', 2}, expected = {single = '├…', double = '…'}},
|
||||
} do
|
||||
local msg = ('can truncate: ambiwidth = %s, [%s, %d] -> %s'):format(ambiwidth, case.args[1], case.args[2], case.expected[ambiwidth])
|
||||
it(msg, function()
|
||||
local original = vim.o.ambiwidth
|
||||
vim.o.ambiwidth = ambiwidth
|
||||
assert.are.same(
|
||||
case.expected[ambiwidth],
|
||||
entry_display.truncate(case.args[1], case.args[2])
|
||||
)
|
||||
vim.o.ambiwidth = original
|
||||
end)
|
||||
end
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user