3 Commits

Author SHA1 Message Date
81f137ee1a updated readme 2024-10-11 16:48:04 +02:00
bac26868d8 better persistace 2024-10-11 16:47:37 +02:00
9c2ac4bc46 update readme 2024-10-08 11:05:16 +02:00
3 changed files with 102 additions and 38 deletions

View File

@ -1,3 +1,7 @@
## dates and their corresponding seconds been here :) ## dates and their corresponding seconds been here :)
[24-10-08]
u80864958_at_u80864958 = 425
[24-10-11]
u80864958_at_u80864958 = 6021
[24-10-07] [24-10-07]
u80864958_at_u80864958 = 432 u80864958_at_u80864958 = 432

View File

@ -5,3 +5,34 @@ Timer times the time it took you to realize your project
Counts the time in your editor inside on directory. Counts the time in your editor inside on directory.
Not beeing inside the editor for less than 5 minutes gets counted as beeing Not beeing inside the editor for less than 5 minutes gets counted as beeing
inside the editor. inside the editor.
## Usage
### Show time
```:Timer```: prints the time inside this directory. If ```.timer.toml``` exists it get's included.
```:TimerLog```: logs the current time table.
### Save time
Time gets automatically saved, when neovim is closed. Given that the ```.timer.toml``` file exists.
If it doesn't Timer searches the next 10 higher directories for one. If there isn't one either nothing get's persisted.
```:TimerSave```: saves the current time to ```.timer.toml```. If the file doesn't exist it gets created.
## Installation
Lunar vim:
```lua
lvim.plugins = {
{
"schreifuchs/timer",
url = "https://git.schreifuchs.ch/schreifuchs/timer.git",
config = function()
require('timer').setup()
end
},
}
```

View File

@ -1,4 +1,4 @@
function trim(s) local function trim(s)
return (s:gsub("^%s*(.-)%s*$", "%1")) return (s:gsub("^%s*(.-)%s*$", "%1"))
end end
@ -107,6 +107,7 @@ local function log_total_time()
local history = require("toml").parse(file:read("*a")) local history = require("toml").parse(file:read("*a"))
file:close() file:close()
print("Time for:", filename)
for _, day in pairs(history) do for _, day in pairs(history) do
for user, time in pairs(day) do for user, time in pairs(day) do
@ -144,17 +145,43 @@ local function focus_lost()
}) })
end end
local function next_lowest_time_file()
local file_path = filename
local function persist() for _ = 1, 10, 1 do
local f = io.open(file_path)
if f ~= nil then
return file_path
end
file_path = "../" .. file_path
end
return ""
end
local function persist(force)
return function()
local TOML = require("toml") local TOML = require("toml")
local today = os.date("%y-%m-%d", os.time()) local today = os.date("%y-%m-%d", os.time())
local table = {} local table = {}
local file_path = filename
local file = io.open(filename, "r") local file = io.open(file_path, "r")
-- if file exists read -- if file exists read
if file ~= nil then if file ~= nil then
table = TOML.parse(file:read("*a")) table = TOML.parse(file:read("*a"))
file:close() file:close()
else
if not force then
file_path = next_lowest_time_file()
if file_path == "" then
print("No save file found. To create a new save file run :TimerSave")
return
end
print("Save file found:", file_path)
end
end end
-- write time to table -- write time to table
@ -168,29 +195,31 @@ local function persist()
end end
-- write table to file -- write table to file
file = io.open(filename, "w") file = io.open(file_path, "w")
if file == nil then if file == nil then
error("can't write to .timer file") error("can't write to .timer file")
return return
end end
local tml = TOML.encode(table) local tml = TOML.encode(table)
print(tml)
file:write("## dates and their corresponding seconds been here :)\n", tml, "\n") file:write("## dates and their corresponding seconds been here :)\n", tml, "\n")
file:close() file:close()
print("Timer saved successfully :-)")
--reset timer --reset timer
clean_to = 1 clean_to = 1
focus_events = {} focus_events = {}
focus_gained() focus_gained()
end
end end
local function setup() local function setup()
vim.api.nvim_create_autocmd("VimEnter", vim.api.nvim_create_autocmd("VimEnter",
{ group = augroup, desc = "Start Timer", once = true, callback = focus_gained }) { group = augroup, desc = "Start Timer", once = true, callback = focus_gained })
vim.api.nvim_create_autocmd("ExitPre", vim.api.nvim_create_autocmd("ExitPre",
{ group = augroup, desc = "Persist timer", once = true, callback = persist }) { group = augroup, desc = "Persist timer", once = true, callback = persist(false) })
vim.api.nvim_create_autocmd("FocusGained", { group = augroup, callback = focus_gained }) vim.api.nvim_create_autocmd("FocusGained", { group = augroup, callback = focus_gained })
vim.api.nvim_create_autocmd("FocusLost", { group = augroup, callback = focus_lost }) vim.api.nvim_create_autocmd("FocusLost", { group = augroup, callback = focus_lost })
@ -206,7 +235,7 @@ local function setup()
) )
vim.api.nvim_create_user_command( vim.api.nvim_create_user_command(
'TimerSave', 'TimerSave',
persist, persist(true),
{ nargs = 0 } -- No arguments for this command (you can configure this later) { nargs = 0 } -- No arguments for this command (you can configure this later)
) )
end end