diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..4b754cc --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,4 @@ +indent_type = "Spaces" +indent_width = 2 +quote_style = "ForceDouble" +no_call_parentheses = false diff --git a/lua/lazygit.lua b/lua/lazygit.lua index bdf32b9..a1c53f1 100644 --- a/lua/lazygit.lua +++ b/lua/lazygit.lua @@ -63,7 +63,9 @@ local function lazygitgetconfigpath() if type(vim.g.lazygit_config_file_path) == "table" then for _, config_file in ipairs(vim.g.lazygit_config_file_path) do if fn.empty(fn.glob(config_file)) == 1 then - print("lazygit: custom config file path: '" .. config_file .. "' could not be found. Returning default config") + print( + "lazygit: custom config file path: '" .. config_file .. "' could not be found. Returning default config" + ) return default_config_path end end @@ -71,7 +73,11 @@ local function lazygitgetconfigpath() elseif fn.empty(fn.glob(vim.g.lazygit_config_file_path)) == 0 then return vim.g.lazygit_config_file_path else - print("lazygit: custom config file path: '" .. vim.g.lazygit_config_file_path .. "' could not be found. Returning default config") + print( + "lazygit: custom config file path: '" + .. vim.g.lazygit_config_file_path + .. "' could not be found. Returning default config" + ) return default_config_path end else @@ -81,6 +87,45 @@ local function lazygitgetconfigpath() end end +--- :LazyGitLog entry point +local function lazygitlog(path) + if is_lazygit_available() ~= true then + print("Please install lazygit. Check documentation for more information") + return + end + + prev_win = vim.api.nvim_get_current_win() + + win, buffer = open_floating_window() + + local cmd = "lazygit log" + + -- set path to the root path + _ = project_root_dir() + + if vim.g.lazygit_use_custom_config_file_path == 1 then + local config_path = lazygitgetconfigpath() + if type(config_path) == "table" then + config_path = table.concat(config_path, ",") + end + cmd = cmd .. " -ucf '" .. config_path .. "'" -- quote config_path to avoid whitespace errors + end + + if vim.env.GIT_DIR ~= nil and vim.env.GIT_WORK_TREE ~= nil then + cmd = cmd .. " -w " .. vim.env.GIT_WORK_TREE .. " -g " .. vim.env.GIT_DIR + elseif path == nil then + if is_symlink() then + path = project_root_dir() + end + else + if fn.isdirectory(path) then + cmd = cmd .. " -p " .. path + end + end + + exec_lazygit_command(cmd) +end + --- :LazyGit entry point local function lazygit(path) if is_lazygit_available() ~= true then @@ -100,7 +145,7 @@ local function lazygit(path) if vim.g.lazygit_use_custom_config_file_path == 1 then local config_path = lazygitgetconfigpath() if type(config_path) == "table" then - config_path = table.concat(config_path, ",") + config_path = table.concat(config_path, ",") end cmd = cmd .. " -ucf '" .. config_path .. "'" -- quote config_path to avoid whitespace errors end @@ -146,7 +191,7 @@ end local function lazygitfiltercurrentfile() local current_dir = vim.fn.expand("%:p:h") local git_root = get_root(current_dir) - local file_path = vim.fn.expand('%:p') + local file_path = vim.fn.expand("%:p") local relative_path = string.sub(file_path, #git_root + 2) lazygitfilter(relative_path) end @@ -156,21 +201,17 @@ local function lazygitconfig() local config_file = lazygitgetconfigpath() if type(config_file) == "table" then - vim.ui.select( - config_file, - { prompt = "select config file to edit" }, - function (path) - open_or_create_config(path) - end - ) + vim.ui.select(config_file, { prompt = "select config file to edit" }, function(path) + open_or_create_config(path) + end) else open_or_create_config(config_file) end - end return { lazygit = lazygit, + lazygitlog = lazygitlog, lazygitcurrentfile = lazygitcurrentfile, lazygitfilter = lazygitfilter, lazygitfiltercurrentfile = lazygitfiltercurrentfile, diff --git a/plugin/lazygit.vim b/plugin/lazygit.vim index c5286e5..0875731 100644 --- a/plugin/lazygit.vim +++ b/plugin/lazygit.vim @@ -44,6 +44,8 @@ endif command! LazyGit lua require'lazygit'.lazygit() +command! LazyGitLog lua require'lazygit'.lazygitlog() + command! LazyGitCurrentFile lua require'lazygit'.lazygitcurrentfile() command! LazyGitFilter lua require'lazygit'.lazygitfilter()