diff --git a/lua/chatgpt_nvim/config.lua b/lua/chatgpt_nvim/config.lua index 0bbfd14..ffeca4a 100644 --- a/lua/chatgpt_nvim/config.lua +++ b/lua/chatgpt_nvim/config.lua @@ -61,6 +61,7 @@ function M.load() project_name = "", debug = false, initial_files = {}, + include_file_contents = false, -- NEW FLAG: include file contents in prompt if true preview_changes = false, interactive_file_selection = false, partial_acceptance = false, @@ -119,6 +120,9 @@ function M.load() if type(result.initial_files) == "table" then config.initial_files = result.initial_files end + if type(result.include_file_contents) == "boolean" then -- LOAD NEW FLAG + config.include_file_contents = result.include_file_contents + end if type(result.preview_changes) == "boolean" then config.preview_changes = result.preview_changes end diff --git a/lua/chatgpt_nvim/context.lua b/lua/chatgpt_nvim/context.lua index 992cc0f..23ec85b 100644 --- a/lua/chatgpt_nvim/context.lua +++ b/lua/chatgpt_nvim/context.lua @@ -185,4 +185,22 @@ function M.get_file_contents(files, conf) return table.concat(sections, "\n") end -return M \ No newline at end of file +-- NEW FUNCTION: Build the project prompt by optionally including file contents. +function M.get_project_prompt(directories, conf) + local structure = M.get_project_structure(directories, conf) + if conf.include_file_contents then + local files = M.get_project_files(directories, conf) + local contents = M.get_file_contents(files, conf) + local total_chars = #contents + if total_chars > conf.prompt_char_limit then + vim.notify("Total file contents (" .. total_chars .. " characters) exceed the prompt limit (" .. conf.prompt_char_limit .. "). Please disable 'include_file_contents' in your config.", vim.log.levels.ERROR) + return structure + else + return structure .. "\n" .. contents + end + else + return structure + end +end + +return M diff --git a/lua/chatgpt_nvim/init.lua b/lua/chatgpt_nvim/init.lua index 2ea41c3..2a2c15a 100644 --- a/lua/chatgpt_nvim/init.lua +++ b/lua/chatgpt_nvim/init.lua @@ -133,7 +133,8 @@ local function build_prompt(user_input, dirs, conf) env_lines[#env_lines+1] = os.date("%x, %X (%Z)") env_lines[#env_lines+1] = "" env_lines[#env_lines+1] = "# Current Working Directory (" .. root .. ") Files" - env_lines[#env_lines+1] = context.get_project_structure(dirs, conf) or "" + -- Using the new get_project_prompt function instead of get_project_structure. + env_lines[#env_lines+1] = context.get_project_prompt(dirs, conf) or "" env_lines[#env_lines+1] = "" env_lines[#env_lines+1] = "# Current Mode" env_lines[#env_lines+1] = "ACT MODE"