Created
December 13, 2019 10:05
-
-
Save mgkennard/e60ea3b354963293035a315d4b9d69f0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local clockingLog = hs.logger.new("clocking") | |
local clockingMenu = hs.menubar.new() | |
local currentTask = nil | |
local function trim(s) | |
return (s:gsub("^%s*(.-)%s*$", "%1")) | |
end | |
local function eval(sexp, callback) | |
hs.task.new( | |
"/usr/local/bin/emacsclient", | |
function(exitCode, stdOut, stdErr) | |
if exitCode == 0 then | |
callback(trim(stdOut)) | |
end | |
end, | |
{ "--eval", sexp } | |
):start() | |
end | |
local function updateClockingMenu() | |
eval( | |
"(org-clock-is-active)", | |
function(value) | |
if value == "nil" then | |
clockingMenu:setTitle("No Task") | |
else | |
eval( | |
"(org-clock-get-clock-string)", | |
function(value) | |
clockingMenu:setTitle(string.match(value, '"(.+)"')) | |
end | |
) | |
end | |
end | |
) | |
end | |
local function startUpdatingClockingMenu() | |
hs.timer.doEvery(10, updateClockingMenu) | |
end | |
local mod = {} | |
function mod.init() | |
updateClockingMenu() | |
startUpdatingClockingMenu() | |
end | |
return mod |
I just added return
to the lines 41 and 48:
41c41
< hs.timer.doEvery(5, updateClockingMenu)
---
> return hs.timer.doEvery(5, updateClockingMenu)
48c48
< startUpdatingClockingMenu()
---
> return startUpdatingClockingMenu()
And binded the timer into a global variable in my init.lua
:
local clocking = require "clocking"
dateTimeGarbageCollectorPreventer = clocking.init()
Now it works without any problems. Here is the issue that I found the solution: Hammerspoon/hammerspoon#1942 TLDR; timer gets garbage collected for some reason, when we bind it to a some global value, it doesn't get garbage collected.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Continue to pay attention, after optimization, hope to be notified