From b9015658d092fb7e6c7319802c9bf6a66ba1d297 Mon Sep 17 00:00:00 2001 From: "Vito G. Graffagnino" Date: Sat, 4 Jun 2022 20:47:17 +0100 Subject: Created after/ftplugin directory and lua.lua file to allow lua directory to be recognised by the gf command. --- lua/user/lua.lua | 77 -------------------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 lua/user/lua.lua (limited to 'lua/user/lua.lua') diff --git a/lua/user/lua.lua b/lua/user/lua.lua deleted file mode 100644 index a37b3e7..0000000 --- a/lua/user/lua.lua +++ /dev/null @@ -1,77 +0,0 @@ -local fmt = string.format - --- Iterator that splits a string o a given delimiter -local function split(str, delim) - delim = delim or "%s" - return string.gmatch(str, fmt('[^%s]+', delim)) -end - --- Find the proper directory separator depending --- on lua installation or OS. -local function dir_separator() - -- Look at package.config for directory separator string (it's the first line) - if package.config then - return string.match(package.config, '^[^\n]') - else - return '/' - end -end - --- Search for lua traditional include paths. --- This mimics how require internally works. -local function include_paths(fname, ext) - ext = ext or "lua" - local sep = dir_separator() - local paths = string.gsub(package.path, '%?', fname) - for path in split(paths, "%;") do - if vim.fn.filereadable(path) == 1 then - return path - end - end -end - --- Search for nvim lua include paths -local function include_rtpaths(fname, ext) - ext = ext or "lua" - local sep = dir_separator() - local rtpaths = vim.api.nvim_list_runtime_paths() - local modfile, initfile = fmt('%s.%s', fname, ext), fmt('init.%s', ext) - for _, path in ipairs(rtpaths) do - -- Look on runtime path for 'lua/*.lua' files - local path1 = table.concat({path, ext, modfile}, sep) - if vim.fn.filereadable(path1) == 1 then - return path1 - end - -- Look on runtime path for 'lua/*/init.lua' files - local path2 = table.concat({path, ext, fname, initfile}, sep) - if vim.fn.filereadable(path2) == 1 then - return path2 - end - end -end - --- Global function that searches the path for the required file -function find_required_path(module) - -- Look at package.config for directory separator string (it's the first line) - local sep = string.match(package.config, '^[^\n]') - -- Properly change '.' to separator (probably '/' on *nix and '\' on Windows) - local fname = vim.fn.substitute(module, "\\.", sep, "g") - local f - ---- First search for lua modules - f = include_paths(fname, 'lua') - if f then return f end - -- This part is just for nvim modules - f = include_rtpaths(fname, 'lua') - if f then return f end - ---- Now search for Fennel modules - f = include_paths(fname, 'fnl') - if f then return f end - -- This part is just for nvim modules - f = include_rtpaths(fname, 'fnl') - if f then return f end -end - - --- Set options to open require with gf -vim.opt_local.include = [=[\v<((do|load)file|require)\s*\(?['"]\zs[^'"]+\ze['"]]=] -vim.opt_local.includeexpr = "v:lua.find_required_path(v:fname)" -- cgit v1.2.3