Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
86 lines
2.1 KiB
Lua
86 lines
2.1 KiB
Lua
local ffi = require "ffi"
|
|
|
|
local library_path = (function()
|
|
local dirname = string.sub(debug.getinfo(1).source, 2, #"/fzf_lib.lua" * -1)
|
|
if package.config:sub(1, 1) == "\\" then
|
|
return dirname .. "../build/libfzf.dll"
|
|
else
|
|
return dirname .. "../build/libfzf.so"
|
|
end
|
|
end)()
|
|
local native = ffi.load(library_path)
|
|
|
|
ffi.cdef [[
|
|
typedef struct {} fzf_i16_t;
|
|
typedef struct {} fzf_i32_t;
|
|
typedef struct {
|
|
fzf_i16_t I16;
|
|
fzf_i32_t I32;
|
|
} fzf_slab_t;
|
|
|
|
typedef struct {} fzf_term_set_t;
|
|
typedef struct {
|
|
fzf_term_set_t **ptr;
|
|
size_t size;
|
|
size_t cap;
|
|
} fzf_pattern_t;
|
|
typedef struct {
|
|
uint32_t *data;
|
|
size_t size;
|
|
size_t cap;
|
|
} fzf_position_t;
|
|
|
|
fzf_position_t *fzf_get_positions(const char *text, fzf_pattern_t *pattern, fzf_slab_t *slab);
|
|
void fzf_free_positions(fzf_position_t *pos);
|
|
int32_t fzf_get_score(const char *text, fzf_pattern_t *pattern, fzf_slab_t *slab);
|
|
|
|
fzf_pattern_t *fzf_parse_pattern(int32_t case_mode, bool normalize, char *pattern, bool fuzzy);
|
|
void fzf_free_pattern(fzf_pattern_t *pattern);
|
|
|
|
fzf_slab_t *fzf_make_default_slab(void);
|
|
void fzf_free_slab(fzf_slab_t *slab);
|
|
]]
|
|
|
|
local fzf = {}
|
|
|
|
fzf.get_score = function(input, pattern_struct, slab)
|
|
return native.fzf_get_score(input, pattern_struct, slab)
|
|
end
|
|
|
|
fzf.get_pos = function(input, pattern_struct, slab)
|
|
local pos = native.fzf_get_positions(input, pattern_struct, slab)
|
|
if pos == nil then
|
|
return
|
|
end
|
|
|
|
local res = {}
|
|
for i = 1, tonumber(pos.size) do
|
|
res[i] = pos.data[i - 1] + 1
|
|
end
|
|
native.fzf_free_positions(pos)
|
|
|
|
return res
|
|
end
|
|
|
|
fzf.parse_pattern = function(pattern, case_mode, fuzzy)
|
|
case_mode = case_mode == nil and 0 or case_mode
|
|
fuzzy = fuzzy == nil and true or fuzzy
|
|
local c_str = ffi.new("char[?]", #pattern + 1)
|
|
ffi.copy(c_str, pattern)
|
|
return native.fzf_parse_pattern(case_mode, false, c_str, fuzzy)
|
|
end
|
|
|
|
fzf.free_pattern = function(p)
|
|
native.fzf_free_pattern(p)
|
|
end
|
|
|
|
fzf.allocate_slab = function()
|
|
return native.fzf_make_default_slab()
|
|
end
|
|
|
|
fzf.free_slab = function(s)
|
|
native.fzf_free_slab(s)
|
|
end
|
|
|
|
return fzf
|