diff options
Diffstat (limited to 'lua/telescope/path.lua')
| -rw-r--r-- | lua/telescope/path.lua | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lua/telescope/path.lua b/lua/telescope/path.lua index 8fdbc71..cdfbc48 100644 --- a/lua/telescope/path.lua +++ b/lua/telescope/path.lua @@ -57,4 +57,45 @@ path.normalize = function(filepath, cwd) return filepath end +path.read_last_line = function(filepath) + local fd = vim.loop.fs_open(filepath, "r", 438) + if fd == nil then return '' end + local stat = assert(vim.loop.fs_fstat(fd)) + local data = '' + local index = stat.size - 2 + while true do + local char = assert(vim.loop.fs_read(fd, 1, index)) + if char == '\n' then break end + data = char .. data + index = index - 1 + end + assert(vim.loop.fs_close(fd)) + return data +end + +path.read_file = function(filepath) + local fd = vim.loop.fs_open(filepath, "r", 438) + if fd == nil then return '' end + local stat = assert(vim.loop.fs_fstat(fd)) + local data = assert(vim.loop.fs_read(fd, stat.size, 0)) + assert(vim.loop.fs_close(fd)) + return data +end + +path.read_file_async = function(filepath, callback) + vim.loop.fs_open(filepath, "r", 438, function(err, fd) + assert(not err, err) + vim.loop.fs_fstat(fd, function(err, stat) + assert(not err, err) + vim.loop.fs_read(fd, stat.size, 0, function(err, data) + assert(not err, err) + vim.loop.fs_close(fd, function(err) + assert(not err, err) + return callback(data) + end) + end) + end) + end) +end + return path |
