fix: try to find the config file better
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
-- lua/chatgpt_nvim/config.lua
|
-- lua/chatgpt_nvim/config.lua
|
||||||
-- Modified to load the config file from the git root of the currently opened file
|
-- Modified to:
|
||||||
-- If not in a git repository, fallback to current working directory
|
-- 1) Determine the Git root based on the currently opened file.
|
||||||
|
-- 2) If no file is open or not in Git repo, fallback to current working directory.
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
local uv = vim.loop
|
local uv = vim.loop
|
||||||
@@ -8,19 +9,40 @@ local uv = vim.loop
|
|||||||
local ok_yaml, lyaml = pcall(require, "lyaml")
|
local ok_yaml, lyaml = pcall(require, "lyaml")
|
||||||
|
|
||||||
local function get_project_root()
|
local function get_project_root()
|
||||||
-- Attempt to find git root
|
-- Get the directory of the currently opened file.
|
||||||
local git_root = vim.fn.systemlist('git rev-parse --show-toplevel')
|
-- If no file is open, we fallback to current working directory.
|
||||||
|
local current_file = vim.fn.expand("%:p")
|
||||||
|
local root_dir
|
||||||
|
|
||||||
|
if current_file == "" then
|
||||||
|
-- No file opened, fallback to cwd
|
||||||
|
root_dir = vim.fn.getcwd()
|
||||||
|
else
|
||||||
|
-- Extract directory from current file path
|
||||||
|
local file_dir = current_file:match("(.*)/")
|
||||||
|
if not file_dir then
|
||||||
|
-- If something went wrong extracting the directory, fallback to cwd
|
||||||
|
root_dir = vim.fn.getcwd()
|
||||||
|
else
|
||||||
|
-- Attempt to find git root from the file's directory
|
||||||
|
-- We run git rev-parse with `cd` to the file's directory.
|
||||||
|
local cmd = string.format("cd %s && git rev-parse --show-toplevel 2>/dev/null", vim.fn.shellescape(file_dir))
|
||||||
|
local git_root = vim.fn.systemlist(cmd)
|
||||||
if vim.v.shell_error == 0 and git_root and #git_root > 0 then
|
if vim.v.shell_error == 0 and git_root and #git_root > 0 then
|
||||||
return git_root[1]
|
root_dir = git_root[1]
|
||||||
|
else
|
||||||
|
-- Not a git repo or failed to find git root, fallback to the file's directory
|
||||||
|
root_dir = file_dir
|
||||||
end
|
end
|
||||||
-- Fallback to current working directory if git root not found
|
end
|
||||||
return vim.fn.getcwd()
|
end
|
||||||
|
|
||||||
|
return root_dir
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_config_path()
|
local function get_config_path()
|
||||||
local root = get_project_root()
|
local root = get_project_root()
|
||||||
local config_path = root .. "/.chatgpt_config.yaml"
|
return root .. "/.chatgpt_config.yaml"
|
||||||
return config_path
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.load()
|
function M.load()
|
||||||
|
|||||||
Reference in New Issue
Block a user