Compare commits
No commits in common. "9e341ec60b5cb47a712b634babaa938b3c3828f2" and "cdf858c1a6bc7bd07731c17c56fa04a549c064f0" have entirely different histories.
9e341ec60b
...
cdf858c1a6
@ -262,7 +262,8 @@ return {
|
|||||||
end,
|
end,
|
||||||
}, {
|
}, {
|
||||||
provider = seps.full.right .. " ",
|
provider = seps.full.right .. " ",
|
||||||
hl = function()
|
hl = function(self)
|
||||||
|
local bg = self.bg_color_right
|
||||||
if conditions.is_active() then
|
if conditions.is_active() then
|
||||||
return { fg = colors.sumiInk4, bg = colors.carpYellow }
|
return { fg = colors.sumiInk4, bg = colors.carpYellow }
|
||||||
else
|
else
|
||||||
@ -291,6 +292,147 @@ return {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local buffer_hl = {
|
||||||
|
active = {
|
||||||
|
fg = colors.fujiWhite,
|
||||||
|
bg = colors.sumiInk4,
|
||||||
|
},
|
||||||
|
inactive = {
|
||||||
|
fg = colors.fujiGray,
|
||||||
|
bg = colors.sumiInk3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
local StatusLineBufnr = {
|
||||||
|
provider = function(self)
|
||||||
|
return tostring(self.bufnr) .. ". "
|
||||||
|
end,
|
||||||
|
hl = "Comment",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- we redefine the filename component, as we probably only want the tail and not the relative path
|
||||||
|
local StatusLineFileName = {
|
||||||
|
init = function(self)
|
||||||
|
if self.filename:match("^term://.*") then
|
||||||
|
self.lfilename = self.filename:gsub(".*:", "")
|
||||||
|
else
|
||||||
|
self.lfilename = vim.fn.fnamemodify(self.filename, ":~:.")
|
||||||
|
end
|
||||||
|
if self.lfilename == "" then
|
||||||
|
self.lfilename = "[No Name]"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
flexible = 2,
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return self.lfilename
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = function(self)
|
||||||
|
return vim.fn.pathshorten(self.lfilename)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
hl = function(self)
|
||||||
|
local fg
|
||||||
|
if self.is_active then
|
||||||
|
fg = buffer_hl.active.fg
|
||||||
|
else
|
||||||
|
fg = buffer_hl.inactive.fg
|
||||||
|
end
|
||||||
|
return { bold = self.is_active or self.is_visible, italic = true, fg = fg }
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- this looks exactly like the FileFlags component that we saw in
|
||||||
|
-- #crash-course-part-ii-filename-and-friends, but we are indexing the bufnr explicitly
|
||||||
|
-- also, we are adding a nice icon for terminal buffers.
|
||||||
|
local StatusLineFileFlags = {
|
||||||
|
{
|
||||||
|
condition = function(self)
|
||||||
|
return vim.bo[self.bufnr].modified
|
||||||
|
end,
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.springGreen },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
condition = function(self)
|
||||||
|
return not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly
|
||||||
|
end,
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.roninYellow },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Here the filename block finally comes together
|
||||||
|
local StatusLineFileNameBlock = {
|
||||||
|
init = function(self)
|
||||||
|
self.filename = vim.api.nvim_buf_get_name(self.bufnr)
|
||||||
|
end,
|
||||||
|
hl = function(self)
|
||||||
|
if self.is_active then
|
||||||
|
return buffer_hl.active
|
||||||
|
else
|
||||||
|
return buffer_hl.inactive
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_click = {
|
||||||
|
callback = function(_, minwid, _, button)
|
||||||
|
if button == "m" then -- close on mouse middle click
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_buf_delete(minwid, { force = false })
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
vim.api.nvim_win_set_buf(0, minwid)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
minwid = function(self)
|
||||||
|
return self.bufnr
|
||||||
|
end,
|
||||||
|
name = "heirline_tabline_buffer_callback",
|
||||||
|
},
|
||||||
|
StatusLineBufnr,
|
||||||
|
FileIcon, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here!
|
||||||
|
StatusLineFileName,
|
||||||
|
StatusLineFileFlags,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- The final touch!
|
||||||
|
local StatusLineBufferBlock = {
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = function(self)
|
||||||
|
local fg
|
||||||
|
if self.is_active then
|
||||||
|
fg = buffer_hl.active.bg
|
||||||
|
else
|
||||||
|
fg = buffer_hl.inactive.bg
|
||||||
|
end
|
||||||
|
return { fg = fg, bg = utils.get_highlight("StatusLine").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
StatusLineFileNameBlock,
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = function(self)
|
||||||
|
local fg
|
||||||
|
if self.is_active then
|
||||||
|
fg = buffer_hl.active.bg
|
||||||
|
else
|
||||||
|
fg = buffer_hl.inactive.bg
|
||||||
|
end
|
||||||
|
return { fg = fg, bg = utils.get_highlight("StatusLine").bg }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- and here we go
|
||||||
|
local BufferLine = utils.make_buflist(
|
||||||
|
StatusLineBufferBlock,
|
||||||
|
-- left truncation, optional (defaults to "<")
|
||||||
|
{ provider = "", hl = { fg = colors.katanaGray, bg = utils.get_highlight("StatusLine").bg } },
|
||||||
|
{ provider = "", hl = { fg = colors.katanaGray, bg = utils.get_highlight("StatusLine").bg } }
|
||||||
|
)
|
||||||
|
|
||||||
local Tabpage = {
|
local Tabpage = {
|
||||||
static = {
|
static = {
|
||||||
num_mappings = {},
|
num_mappings = {},
|
||||||
@ -551,7 +693,6 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
provider = function()
|
provider = function()
|
||||||
---@diagnostic disable-next-line: undefined-field
|
|
||||||
return (vim.b.ufo_foldlevel or vim.opt_local.foldlevel:get()) .. " "
|
return (vim.b.ufo_foldlevel or vim.opt_local.foldlevel:get()) .. " "
|
||||||
end,
|
end,
|
||||||
hl = {
|
hl = {
|
||||||
@ -619,80 +760,6 @@ return {
|
|||||||
|
|
||||||
vim.opt.showcmdloc = "statusline"
|
vim.opt.showcmdloc = "statusline"
|
||||||
|
|
||||||
local org = require("orgmode")
|
|
||||||
local Orgmode = {
|
|
||||||
condition = function()
|
|
||||||
return org.initialized and org.clock.clocked_headline and org.clock.clocked_headline:is_clocked_in()
|
|
||||||
end,
|
|
||||||
update = function(self)
|
|
||||||
local time = os.time()
|
|
||||||
self.last_updated = self.last_updated or time
|
|
||||||
if time - self.last_updated >= 1 then
|
|
||||||
self.last_updated = time
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
margin(1),
|
|
||||||
{
|
|
||||||
provider = seps.full.left,
|
|
||||||
hl = {
|
|
||||||
fg = colors.sakuraPink,
|
|
||||||
bg = utils.get_highlight("StatusLine").bg,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
provider = " ",
|
|
||||||
hl = {
|
|
||||||
fg = colors.sumiInk0,
|
|
||||||
bg = colors.sakuraPink,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
provider = seps.full.right .. " ",
|
|
||||||
hl = {
|
|
||||||
fg = colors.sakuraPink,
|
|
||||||
bg = colors.sumiInk4,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
hl = {
|
|
||||||
fg = colors.sakuraPink,
|
|
||||||
bg = colors.sumiInk4,
|
|
||||||
},
|
|
||||||
provider = function()
|
|
||||||
local headline = org.clock.clocked_headline
|
|
||||||
if not headline then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local clocked_time = headline:get_logbook():get_total_with_active():to_string()
|
|
||||||
local effort = headline:get_property("effort")
|
|
||||||
local time_elapsed = ""
|
|
||||||
if effort then
|
|
||||||
time_elapsed = ("[%s/%s]"):format(clocked_time, effort)
|
|
||||||
else
|
|
||||||
time_elapsed = ("[%s]"):format(clocked_time)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Get the title and remove some org syntax from it
|
|
||||||
local title = headline:get_title():gsub("[~/*_=+]", "")
|
|
||||||
|
|
||||||
local message = ("%s %s"):format(time_elapsed, title)
|
|
||||||
if #message > 60 then
|
|
||||||
message = message:sub(1, 65) .. "…"
|
|
||||||
end
|
|
||||||
return message
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
provider = seps.full.right .. " ",
|
|
||||||
hl = {
|
|
||||||
fg = colors.sumiInk4,
|
|
||||||
bg = utils.get_highlight("StatusLine").bg,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
statusline = {
|
statusline = {
|
||||||
{
|
{
|
||||||
@ -870,6 +937,7 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
margin(1),
|
||||||
{
|
{
|
||||||
condition = conditions.is_git_repo,
|
condition = conditions.is_git_repo,
|
||||||
|
|
||||||
@ -879,7 +947,7 @@ return {
|
|||||||
or self.status_dict.removed ~= 0
|
or self.status_dict.removed ~= 0
|
||||||
or self.status_dict.changed ~= 0
|
or self.status_dict.changed ~= 0
|
||||||
end,
|
end,
|
||||||
margin(1),
|
|
||||||
{
|
{
|
||||||
provider = seps.full.left,
|
provider = seps.full.left,
|
||||||
hl = {
|
hl = {
|
||||||
@ -958,11 +1026,23 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Orgmode,
|
|
||||||
-- Align Right
|
-- Align Right
|
||||||
{
|
{
|
||||||
provider = "%=",
|
provider = "%=",
|
||||||
},
|
},
|
||||||
|
BufferLine,
|
||||||
|
{
|
||||||
|
provider = seps.full.left,
|
||||||
|
hl = { fg = colors.roninYellow, bg = utils.get_highlight("StatusLine").bg },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = " ",
|
||||||
|
hl = { fg = colors.sumiInk0, bg = colors.roninYellow },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provider = seps.full.right,
|
||||||
|
hl = { fg = colors.roninYellow, bg = utils.get_highlight("StatusLine").bg },
|
||||||
|
},
|
||||||
TabPages,
|
TabPages,
|
||||||
},
|
},
|
||||||
winbar = {
|
winbar = {
|
||||||
|
@ -7,24 +7,21 @@ return {
|
|||||||
{ "<leader>o", desc = "> Org" },
|
{ "<leader>o", desc = "> Org" },
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local org = require("orgmode")
|
-- Setup orgmode
|
||||||
local agenda_globs = {
|
require("orgmode").setup({
|
||||||
"~/Git/College/*",
|
|
||||||
"~/Git/College/*/*",
|
|
||||||
"~/Git/Projects/Blog/*",
|
|
||||||
"~/Git/Projects/Blog/docs/**/*",
|
|
||||||
"~/Notes/**/*",
|
|
||||||
"~/.config/home-manager/*",
|
|
||||||
"~/.config/home-manager/docs/**/*",
|
|
||||||
vim.fn.stdpath("config") .. "/**/*",
|
|
||||||
}
|
|
||||||
org.setup({
|
|
||||||
mappings = {
|
mappings = {
|
||||||
agenda = {
|
agenda = {
|
||||||
org_agenda_filter = "F",
|
org_agenda_filter = "F",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
org_agenda_files = agenda_globs,
|
org_agenda_files = {
|
||||||
|
"~/Git/College/**/*",
|
||||||
|
"~/Git/Projects/**/*",
|
||||||
|
"~/Notes/**/*",
|
||||||
|
"~/.config/home-manager/*",
|
||||||
|
"~/.config/home-manager/docs/**/*",
|
||||||
|
vim.fn.stdpath("config") .. "/**/*",
|
||||||
|
},
|
||||||
notifications = {
|
notifications = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
cron_enabled = true,
|
cron_enabled = true,
|
||||||
@ -97,61 +94,6 @@ return {
|
|||||||
vim.api.nvim_set_hl(0, "org_bold_delimiter", { link = "@punctuation.delimiter" })
|
vim.api.nvim_set_hl(0, "org_bold_delimiter", { link = "@punctuation.delimiter" })
|
||||||
vim.api.nvim_set_hl(0, "org_underline_delimiter", { link = "@punctuation.delimiter" })
|
vim.api.nvim_set_hl(0, "org_underline_delimiter", { link = "@punctuation.delimiter" })
|
||||||
vim.api.nvim_set_hl(0, "org_strikethrough_delimiter", { link = "@punctuation.delimiter" })
|
vim.api.nvim_set_hl(0, "org_strikethrough_delimiter", { link = "@punctuation.delimiter" })
|
||||||
|
|
||||||
-- NOTE: Everything below is an attempt to get orgmode to sync between different Neovim
|
|
||||||
-- instaces. Ideally Orgmode would write to a central state file using Mutexes, but it
|
|
||||||
-- doesn't. Thus my shitty code below.
|
|
||||||
local watched_dirs = {}
|
|
||||||
|
|
||||||
local function watch_dir(dir)
|
|
||||||
local fs_watch = vim.uv.new_fs_event()
|
|
||||||
if not fs_watch then
|
|
||||||
error("Failed to create a fs watch for dir: " .. dir)
|
|
||||||
end
|
|
||||||
dir = vim.fn.fnamemodify(dir, ":p")
|
|
||||||
if dir:sub(-1) == "/" then
|
|
||||||
dir = dir:sub(1, -2)
|
|
||||||
end
|
|
||||||
if vim.tbl_contains(watched_dirs, dir) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
table.insert(watched_dirs, dir)
|
|
||||||
fs_watch:start(
|
|
||||||
dir,
|
|
||||||
{},
|
|
||||||
vim.schedule_wrap(function(_, fpath, _)
|
|
||||||
fpath = dir .. "/" .. fpath
|
|
||||||
if vim.fn.isdirectory(fpath) == 1 and not vim.tbl_contains(watched_dirs, fpath) then
|
|
||||||
watch_dir(fpath)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if vim.fn.fnamemodify(fpath, ":e") == "org" then
|
|
||||||
org.files:load(true)
|
|
||||||
org.clock:init()
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.defer_fn(function()
|
|
||||||
vim.wait(1000, function()
|
|
||||||
return org.initialized
|
|
||||||
end)
|
|
||||||
vim.iter(agenda_globs)
|
|
||||||
:map(function(glob)
|
|
||||||
glob = vim.fn.fnamemodify(glob, ":p")
|
|
||||||
local globs = vim.fn.glob(vim.fn.fnamemodify(glob, ":p"), false, true)
|
|
||||||
local base_glob_dir = glob:gsub("*/", ""):gsub("*", "")
|
|
||||||
table.insert(globs, base_glob_dir)
|
|
||||||
return globs
|
|
||||||
end)
|
|
||||||
:flatten()
|
|
||||||
:filter(function(f)
|
|
||||||
return vim.fn.isdirectory(f) == 1
|
|
||||||
end)
|
|
||||||
:map(watch_dir)
|
|
||||||
end, 1000)
|
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,6 @@ return {
|
|||||||
{ "<leader>tgc", ":Telescope git_commits<CR>", desc = "Telescope: Git Commits", silent = true },
|
{ "<leader>tgc", ":Telescope git_commits<CR>", desc = "Telescope: Git Commits", silent = true },
|
||||||
{ "<leader>tgb", ":Telescope git_branches<CR>", desc = "Telescope: Git Branches", silent = true },
|
{ "<leader>tgb", ":Telescope git_branches<CR>", desc = "Telescope: Git Branches", silent = true },
|
||||||
{ "<leader>tf", ":Telescope find_files<CR>", desc = "Telescope: Find Files", silent = true },
|
{ "<leader>tf", ":Telescope find_files<CR>", desc = "Telescope: Find Files", silent = true },
|
||||||
{ "<leader>j", ":Telescope buffers<CR>", desc = "Telescope: Buffers", silent = true },
|
|
||||||
{ "<leader>tb", ":Telescope buffers<CR>", desc = "Telescope: Buffers", silent = true },
|
{ "<leader>tb", ":Telescope buffers<CR>", desc = "Telescope: Buffers", silent = true },
|
||||||
{ "<leader>th", ":Telescope help_tags<CR>", desc = "Telescope: Help Tags", silent = true },
|
{ "<leader>th", ":Telescope help_tags<CR>", desc = "Telescope: Help Tags", silent = true },
|
||||||
{ "<leader>to", ":Telescope oldfiles<CR>", desc = "Telescope: Recent Files", silent = true },
|
{ "<leader>to", ":Telescope oldfiles<CR>", desc = "Telescope: Recent Files", silent = true },
|
||||||
|
@ -332,4 +332,3 @@ Postgresql
|
|||||||
Stylix
|
Stylix
|
||||||
stylix
|
stylix
|
||||||
logrotate
|
logrotate
|
||||||
cortisol
|
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user