diff --git a/lua/ivy/libivy.lua b/lua/ivy/libivy.lua index c3ac126..f9f8857 100644 --- a/lua/ivy/libivy.lua +++ b/lua/ivy/libivy.lua @@ -1,42 +1,43 @@ local library_path = (function() - local dirname = string.sub(debug.getinfo(1).source, 2, #"/fzf_lib.lua" * -1) - return dirname .. "/../../target/release/libivyrs.so" + local root = string.sub(debug.getinfo(1).source, 2, #"/libivy.lua" * -1) + local release_path = root .. "../../target/release" + return package.searchpath("libivyrs", release_path .. "/?.so;" .. release_path .. "/?.dylib;") end)() local ffi = require "ffi" local ok, ivy_c = pcall(ffi.load, library_path) if not ok then vim.api.nvim_err_writeln( "libivyrs.so not found! Please ensure you have complied the shared library." .. " For more info refer to the documentation, https://github.com/AdeAttwood/ivy.nvim#compiling" ) return end ffi.cdef [[ void ivy_init(const char*); char* ivy_cwd(); int ivy_match(const char*, const char*); char* ivy_files(const char*, const char*); ]] local libivy = {} libivy.ivy_init = function(dir) ivy_c.ivy_init(dir) end libivy.ivy_cwd = function() return ffi.string(ivy_c.ivy_cwd()) end libivy.ivy_match = function(pattern, text) return ivy_c.ivy_match(pattern, text) end libivy.ivy_files = function(pattern, base_dir) return ffi.string(ivy_c.ivy_files(pattern, base_dir)) end return libivy