From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: John Task Newsgroups: gmane.emacs.devel Subject: Extending timeclock.el Date: Fri, 05 May 2023 16:15:02 -0300 Message-ID: <861qjubmzp.fsf@disroot.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38524"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat May 06 07:56:56 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pvAue-0009oP-8W for ged-emacs-devel@m.gmane-mx.org; Sat, 06 May 2023 07:56:56 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pvAtj-0001iS-Pw; Sat, 06 May 2023 01:55:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pv11m-0002kF-1P for emacs-devel@gnu.org; Fri, 05 May 2023 15:23:38 -0400 Original-Received: from knopi.disroot.org ([178.21.23.139]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pv11j-0003Nf-PG for emacs-devel@gnu.org; Fri, 05 May 2023 15:23:37 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 98DDC401E7 for ; Fri, 5 May 2023 21:23:32 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Original-Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HSVJjawOwulR for ; Fri, 5 May 2023 21:23:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1683314611; bh=RH/hPulEuhhlbeILYkCWl+Tl2sc4StQfIDgyG5dtXbE=; h=From:To:Subject:Date; b=YNFL9cxQGshp7P7GdOIF/b3mEJaiH67bfrlBzbOFtq5zX2l5Dz5JwJXB/+3jXFNsn wrXBlE/gdN2un1vYe3q9SKqR+6WWeVsRQDE0yvPlYlyuxOco1f7QOxb6SZM9apbcdQ 0F7UAC5u/ezEUf8l+ep1pxrpZNcXYRYjYmAyve+V+CC3zyQ3ru3Ldd5NabjHFajBzW 9rXdB8tfgD7JOMaDogmpFI5AtaGeBchZj2UgJX2nO61DtudsixNCgRp5LVwpPRumTU 7d/fV0CF0uw7HOCzi9AMt9H7W6LcfrdZ3RV9i4LMTTcWROcxCefdyCYyzWeJmq6LHt rZNab7L483eDA== Received-SPF: pass client-ip=178.21.23.139; envelope-from=q01@disroot.org; helo=knopi.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sat, 06 May 2023 01:55:57 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:305889 Archived-At: Hello. A little context, first; some days ago, I submitted a request for including a package in the NonGNU ELPA repository. The package in question was a time tracker named ETT. However, Eli pointed out that instead of creating a new package I could, for instance, extend the built-in timeclock.el instead. To be honest, I didn't like the idea at first, but looking at the code I quickly realized it wouldn't be that hard. At least, not as dramatically hard as I thought. So I started this: https://gitlab.com/q01_code/timeclock-modern [This wasn't my first name choice, but turns out timeclock-x is already taken] So far, I managed to write a series of parsers for the timelog format, as well as a basic API for retrieving information from it. This should allow me to port all the relevant code from ETT without issues. However, I'm not really familiarized with timeclock, so I can't assert my design choices so far have been ideal. + The letter code at the start of every line was the most difficult part. ETT (and a lot of modern time trackers as well) don't understand what clock-out means, as the idea is to clock everything; the user just clocks-in different activities. So, I dropped 'i' and 'o' for my custom tm-clock-in altogether. As for the parser, it understands 'o' as the start of a so-named 'Untracked' item/project. That way it can read existent timelogs just fine. This is hard enough, but turns out there are also other codes ('h', 'b' and '0'). I interpret '0' as an 'o' and ignore the other ones, but I'm not sure if this is correct. + As I make a lot of decisions such as the last one from ignorance, I'm clueless about how well the parser (and the API) works for real timelog files. If anybody wants to test that, it would be appreciated. + As the original timeclock-in doesn't support inputting tags (as well as other features I need), I wrote a custom tm-clock-in. But I'm not sure if this is the right approach. And redefining timeclock-in would be even worse, for sure. I'll eventually contact the original author as well, but I wanted to know of any other opinions here first. Best regards.