mirror of
https://github.com/jdhao/nvim-config.git
synced 2025-06-08 14:14:33 +02:00
Compare commits
No commits in common. "28bda349e84a0da79dffb14faba449554f6f9f18" and "7f5374325584d0a5df8929c978343b48f9102362" have entirely different histories.
28bda349e8
...
7f53743255
@ -1,111 +1,5 @@
|
|||||||
local fn = vim.fn
|
local fn = vim.fn
|
||||||
|
|
||||||
local git_status_cache = {}
|
|
||||||
|
|
||||||
local get_cmd_out = function(cmd)
|
|
||||||
local result = vim.system(cmd, { text = true }):wait()
|
|
||||||
|
|
||||||
if result.code ~= 0 then
|
|
||||||
-- vim.print(vim.inspect(result))
|
|
||||||
return false, result.stderr
|
|
||||||
end
|
|
||||||
|
|
||||||
return true, result.stdout
|
|
||||||
end
|
|
||||||
|
|
||||||
local function split_cmd_string(cmd_str)
|
|
||||||
return vim.tbl_filter(function(element)
|
|
||||||
if element ~= "" then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end, vim.split(cmd_str, " "))
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_branch_name()
|
|
||||||
local branch_cmd_str = "git rev-parse --abbrev-ref HEAD"
|
|
||||||
local branch_cmd = split_cmd_string(branch_cmd_str)
|
|
||||||
local success, branch_output = get_cmd_out(branch_cmd)
|
|
||||||
|
|
||||||
if not success then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local branch_name = string.gsub(branch_output, "\n$", "")
|
|
||||||
-- print(string.format("branch: %s", branch_name))
|
|
||||||
|
|
||||||
return branch_name
|
|
||||||
end
|
|
||||||
|
|
||||||
local function update_git_status()
|
|
||||||
-- Fetch the latest changes from the remote repository (replace 'origin' if needed)
|
|
||||||
local fetch_cmd = split_cmd_string("git fetch origin")
|
|
||||||
|
|
||||||
local fetch_success, _ = get_cmd_out(fetch_cmd)
|
|
||||||
if not fetch_success then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local branch_name = get_branch_name()
|
|
||||||
if branch_name == nil then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Get the number of commits behind
|
|
||||||
local behind_cmd_str = string.format("git rev-list --count %s..origin/%s", branch_name, branch_name)
|
|
||||||
local behind_cmd = split_cmd_string(behind_cmd_str)
|
|
||||||
local behind_success, behind_output = get_cmd_out(behind_cmd)
|
|
||||||
if behind_success then
|
|
||||||
local behind_count = tonumber(behind_output:match("(%d+)")) or 0
|
|
||||||
git_status_cache.behind = behind_count
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Get the number of commits ahead
|
|
||||||
local ahead_cmd_str = string.format("git rev-list --count origin/%s..%s", branch_name, branch_name)
|
|
||||||
local ahead_cmd = split_cmd_string(ahead_cmd_str)
|
|
||||||
local ahead_success, ahead_output = get_cmd_out(ahead_cmd)
|
|
||||||
if ahead_success then
|
|
||||||
local ahead_count = tonumber(ahead_output:match("(%d+)")) or 0
|
|
||||||
git_status_cache.ahead = ahead_count
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_ahead_behind_info()
|
|
||||||
local status = git_status_cache
|
|
||||||
if not status then
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
|
|
||||||
local msg = ""
|
|
||||||
|
|
||||||
if type(status.behind) == "number" and status.behind > 0 then
|
|
||||||
local behind_str = string.format("↓[%d] ", status.behind)
|
|
||||||
msg = msg .. behind_str
|
|
||||||
end
|
|
||||||
|
|
||||||
if type(status.ahead) == "number" and status.ahead > 0 then
|
|
||||||
local ahead_str = string.format("↑[%d] ", status.ahead)
|
|
||||||
msg = msg .. ahead_str
|
|
||||||
end
|
|
||||||
|
|
||||||
return msg
|
|
||||||
end
|
|
||||||
|
|
||||||
local timer = vim.uv.new_timer()
|
|
||||||
|
|
||||||
local branch_name = get_branch_name()
|
|
||||||
-- run frequency in seconds
|
|
||||||
local interval = 30
|
|
||||||
local ms = interval * 1000
|
|
||||||
if branch_name ~= nil then
|
|
||||||
timer:start(
|
|
||||||
0,
|
|
||||||
ms,
|
|
||||||
vim.schedule_wrap(function()
|
|
||||||
update_git_status()
|
|
||||||
end)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function spell()
|
local function spell()
|
||||||
if vim.o.spell then
|
if vim.o.spell then
|
||||||
return string.format("[SPELL]")
|
return string.format("[SPELL]")
|
||||||
@ -225,7 +119,7 @@ local virtual_env = function()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local get_active_lsp = function()
|
local get_active_lsp = function()
|
||||||
local msg = "🚫"
|
local msg = "No Active Lsp"
|
||||||
local buf_ft = vim.api.nvim_get_option_value("filetype", {})
|
local buf_ft = vim.api.nvim_get_option_value("filetype", {})
|
||||||
local clients = vim.lsp.get_clients { bufnr = 0 }
|
local clients = vim.lsp.get_clients { bufnr = 0 }
|
||||||
if next(clients) == nil then
|
if next(clients) == nil then
|
||||||
@ -253,12 +147,7 @@ require("lualine").setup {
|
|||||||
},
|
},
|
||||||
sections = {
|
sections = {
|
||||||
lualine_a = {
|
lualine_a = {
|
||||||
{
|
"mode",
|
||||||
"filename",
|
|
||||||
symbols = {
|
|
||||||
readonly = "[🔒]",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
lualine_b = {
|
lualine_b = {
|
||||||
{
|
{
|
||||||
@ -269,21 +158,22 @@ require("lualine").setup {
|
|||||||
end,
|
end,
|
||||||
color = { gui = "italic,bold" },
|
color = { gui = "italic,bold" },
|
||||||
},
|
},
|
||||||
{
|
|
||||||
get_ahead_behind_info,
|
|
||||||
-- "",
|
|
||||||
color = { fg = "#E0C479" },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"diff",
|
|
||||||
source = diff,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
virtual_env,
|
virtual_env,
|
||||||
color = { fg = "black", bg = "#F1CA81" },
|
color = { fg = "black", bg = "#F1CA81" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
lualine_c = {
|
lualine_c = {
|
||||||
|
{
|
||||||
|
"filename",
|
||||||
|
symbols = {
|
||||||
|
readonly = "[🔒]",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"diff",
|
||||||
|
source = diff,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"%S",
|
"%S",
|
||||||
color = { gui = "bold", fg = "cyan" },
|
color = { gui = "bold", fg = "cyan" },
|
||||||
@ -294,29 +184,22 @@ require("lualine").setup {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
lualine_x = {
|
lualine_x = {
|
||||||
|
{
|
||||||
|
ime_state,
|
||||||
|
color = { fg = "black", bg = "#f46868" },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
get_active_lsp,
|
get_active_lsp,
|
||||||
icon = "📡",
|
icon = " LSP:",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"diagnostics",
|
"diagnostics",
|
||||||
sources = { "nvim_diagnostic" },
|
sources = { "nvim_diagnostic" },
|
||||||
symbols = { error = "🆇 ", warn = "⚠️ ", info = "ℹ️ ", hint = " " },
|
symbols = { error = "🆇 ", warn = "⚠️ ", info = "ℹ️ ", hint = " " },
|
||||||
},
|
},
|
||||||
{
|
|
||||||
trailing_space,
|
|
||||||
color = "WarningMsg",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
mixed_indent,
|
|
||||||
color = "WarningMsg",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
lualine_y = {
|
lualine_y = {
|
||||||
{
|
{ "encoding", fmt = string.upper },
|
||||||
"encoding",
|
|
||||||
fmt = string.upper,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"fileformat",
|
"fileformat",
|
||||||
symbols = {
|
symbols = {
|
||||||
@ -326,12 +209,16 @@ require("lualine").setup {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
"filetype",
|
"filetype",
|
||||||
{
|
|
||||||
ime_state,
|
|
||||||
color = { fg = "black", bg = "#f46868" },
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
lualine_z = {
|
lualine_z = {
|
||||||
|
{
|
||||||
|
trailing_space,
|
||||||
|
color = "WarningMsg",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mixed_indent,
|
||||||
|
color = "WarningMsg",
|
||||||
|
},
|
||||||
"location",
|
"location",
|
||||||
"progress",
|
"progress",
|
||||||
},
|
},
|
||||||
|
|||||||
@ -72,7 +72,7 @@ set wildmode=list:longest
|
|||||||
set scrolloff=3
|
set scrolloff=3
|
||||||
|
|
||||||
" Use mouse to select and resize windows, etc.
|
" Use mouse to select and resize windows, etc.
|
||||||
set mouse=n
|
set mouse=
|
||||||
set mousemodel=popup " Set the behaviour of mouse
|
set mousemodel=popup " Set the behaviour of mouse
|
||||||
set mousescroll=ver:1,hor:0
|
set mousescroll=ver:1,hor:0
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user