From 518070731003e30ea7eee96e76ccdf7b950c90da Mon Sep 17 00:00:00 2001 From: Famiu Haque Date: Fri, 5 Apr 2024 14:48:13 +0600 Subject: feat(lua): add `vim.fs.abspath` Problem: There is currently no way to check if a given path is absolute or convert a relative path to an absolute path through the Lua stdlib. `vim.fs.joinpath` does not work when the path is absolute. There is also currently no way to resolve `C:foo\bar` style paths in Windows. Solution: Add `vim.fs.abspath`, which allows converting any path to an absolute path. This also allows checking if current path is absolute by doing `vim.fs.abspath(path) == path`. It also has support for `C:foo\bar` style paths in Windows. --- runtime/doc/lua.txt | 14 ++++++++++++++ runtime/doc/news.txt | 1 + 2 files changed, 15 insertions(+) (limited to 'runtime/doc') diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt index 711607d14b..a2a83ef229 100644 --- a/runtime/doc/lua.txt +++ b/runtime/doc/lua.txt @@ -2945,6 +2945,20 @@ Example: >lua < +vim.fs.abspath({path}) *vim.fs.abspath()* + Convert path to an absolute path. A tilde (~) character at the beginning + of the path is expanded to the user's home directory. Does not check if + the path exists, normalize the path, resolve symlinks or hardlinks + (including `.` and `..`), or expand environment variables. If the path is + already absolute, it is returned unchanged. Also converts `\` path + separators to `/`. + + Parameters: ~ + • {path} (`string`) Path + + Return: ~ + (`string`) Absolute path + vim.fs.basename({file}) *vim.fs.basename()* Return the basename of the given path diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index c4ba4f0ad1..7ea65479f3 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -268,6 +268,7 @@ LUA is more performant and easier to read. • |vim.str_byteindex()| and |vim.str_utfindex()| gained overload signatures supporting two new parameters, `encoding` and `strict_indexing`. +• |vim.fs.abspath()| converts paths to absolute paths. OPTIONS -- cgit