blob: b2878c25f14730c9b4a699fd63b96baa63c261c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
local context = require('blink.cmp.completion.trigger.context')
local utils = {}
--- Gets the full Unicode character at cursor position
--- @return string
function utils.get_char_at_cursor()
local line = context.get_line()
if line == '' then return '' end
local cursor_col = context.get_cursor()[2]
-- Find the start of the UTF-8 character
local start_col = cursor_col
while start_col > 1 do
local char = string.byte(line:sub(start_col, start_col))
if char < 0x80 or char > 0xBF then break end
start_col = start_col - 1
end
-- Find the end of the UTF-8 character
local end_col = cursor_col
while end_col < #line do
local char = string.byte(line:sub(end_col + 1, end_col + 1))
if char < 0x80 or char > 0xBF then break end
end_col = end_col + 1
end
return line:sub(start_col, end_col)
end
return utils
|