diff options
| author | kylo252 <[email protected]> | 2022-12-17 12:33:57 +0100 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2022-12-17 12:33:57 +0100 | 
| commit | b661efb3179e9ee7c44c5b2f885f5a7e837ea19d (patch) | |
| tree | 6e672b2cb60119931ec49fcec45f5cb087367d1a /ftplugin | |
| parent | 277079ff453fcd951447110fbc745e2241e0490f (diff) | |
refactor(autocmds): clean up filetype detection rules (#3625)
* refactor(lua): simplify gf utility
* refactor(autocmds): cleanup
* refactor(ftdetect): use vim.filetype.add instead
Diffstat (limited to 'ftplugin')
| -rw-r--r-- | ftplugin/lua.lua | 88 | 
1 files changed, 0 insertions, 88 deletions
| diff --git a/ftplugin/lua.lua b/ftplugin/lua.lua deleted file mode 100644 index 138332e9..00000000 --- a/ftplugin/lua.lua +++ /dev/null @@ -1,88 +0,0 @@ -local fmt = string.format --- luacheck: ignore --- TODO: fix lint violations - --- 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]") -  elseif vim.fn.has "win32" == 1 then -    return "\\" -  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)" | 
