all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Philip Kaludercic <philipk@posteo.net>
To: John Task <q01@disroot.org>
Cc: emacs-devel@gnu.org
Subject: Re: [NonGNU Elpa] New package: ETT
Date: Wed, 03 May 2023 06:08:31 +0000	[thread overview]
Message-ID: <87mt2m9cbk.fsf@posteo.net> (raw)
In-Reply-To: <86r0rybf2b.fsf@disroot.org> (John Task's message of "Tue, 02 May 2023 18:21:14 -0300")

[-- Attachment #1: Type: text/plain, Size: 2418 bytes --]

John Task <q01@disroot.org> writes:

> [Disclaimer: A similar message was posted here a couple months ago by
>  me.  Sorry if that's an annoyance.  This one is clearer, though.]
>
> Hello.  My name is John Task and I'd like to submit a package to
> NonGNU ELPA.  I'm the author of this program and also (at the time of
> writing) the only contributor to the code.  As far as I can tell,
> everything is in line with the guidances and I plan to keep it that
> way.
>
> The URL of the repository is: https://gitlab.com/q01_code/ett
>
> The description is as follows:
>
> ----------------------------------------------------------------------
> Emacs Time Tracker (or short ETT) is a simple yet powerful time
> tracker for Emacs. Even though it's based on a minimalist plain
> text file, it can show statistics for current day, week, month or
> year, and even compare tags recording for the same item given any
> of these periods.
>
> Advanced features include percentages, graphs and icons.
>
> Clock-in with M-x ett-add-track, go to file with M-x ett-find-file,
> and get report with M-x ett-report. You probably want to bind these
> functions to easy keys.
> ----------------------------------------------------------------------
>
> The corresponding patch would be:
>
> ---
> From 72c7ba2c1ecd375be52b071d25217088e66e9abb Mon Sep 17 00:00:00 2001
> From: John Task <q01@disroot.org>
> Date: Tue, 2 May 2023 17:40:44 -0300
> Subject: [PATCH] New package
>
> ---
>  elpa-packages | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/elpa-packages b/elpa-packages
> index c333cc8bb3..385a76264d 100644
> --- a/elpa-packages
> +++ b/elpa-packages
> @@ -154,6 +154,11 @@
>    :readme "README.md"
>    :ignored-files ("doc/demo.gif"))
>  
> + (ett    		:url "https://gitlab.com/q01_code/ett"
> +  :readme ignore
> +  :doc "ett-manual.org"
> +  :ignored-files ("ett-manual.org" "COPYING" "ETT.png" "doclicense.texi"))
> + 
>   (evil			:url "https://github.com/emacs-evil/evil"
>    :ignored-files ("COPYING" "lib" "scripts")
>    :doc "doc/build/texinfo/evil.texi")

I would track the ignored files in a .elpaignore file that would look
something like this

--8<---------------cut here---------------start------------->8---
/ett-pkg.el
/ett-autoloads.el
/ett-manual.org
/COPYING
/ETT.png
/doclicense.texi
--8<---------------cut here---------------end--------------->8---

and I have prepared a few comments here:


[-- Attachment #2: Type: text/plain, Size: 7282 bytes --]

diff --git a/ett.el b/ett.el
index c37d7f15b0..de6a017248 100644
--- a/ett.el
+++ b/ett.el
@@ -89,7 +89,7 @@ Something like '-->' or '====>' would be acceptable."
 Unlike `ett-separator', you can safely change this to anything you want."
   :type '(string))
 
-(defcustom ett-file (concat user-emacs-directory "tracks.ett")
+(defcustom ett-file (locate-user-emacs-file "tracks.ett")
   "File for storing ETT tracks."
   :type '(file))
 
@@ -125,10 +125,10 @@ size to be displayed.
 Only even numbers are allowed.  Indeed, it's a weird bug."
   :type '(natnum))
 
-(defcustom ett-graph-icon "│"
+(defcustom ett-graph-icon ?│
   "Icon used for building ETT graphs.
 It must be a single char string."
-  :type '(string))
+  :type 'character)
 
 (defface ett-heading
   '((((class color) (min-colors 88) (background light))
@@ -170,7 +170,7 @@ It must be a single char string."
         (list "^\\(Less time .*\\): " '(1 'underline))
         (list "^\\(Tags report\\):$" '(1 'underline))
         (list "^\\(Pending goals\\):$" '(1 'underline))
-        (list (concat ett-graph-icon "+") '(0 'ett-separator-face)))
+        (list (concat (string ett-graph-icon) "+") '(0 'ett-separator-face)))
   "Keywords for syntax highlighting on ETT report buffer.")
 
 (defvar ett-items-internal nil)
@@ -269,41 +269,36 @@ Here are some translations (*starred* values are current at the time):
 3-2      ---> 03-02-*23*
 03       ---> 03-*02*-*23*
 3        ---> 03-*02*-*23*"
-  (pcase (length date)
-    ;; DD-MM-YY
-    (8 date)
-    ;; DD-MM
-    (5 (setq date (concat date (format-time-string "-%y"))))
-    ;; DD
-    (2 (setq date (concat date (format-time-string "-%m-%y"))))
-    ;; D
-    (1 (setq date (concat "0" date (format-time-string "-%m-%y"))))
-    ;; DD-M
-    (4
-     (setq date
-           ;; Or D-MM?
-           (pcase (string-search "0" date)
-             (2 (concat "0" date (format-time-string "-%y")))
-             (_ (concat
+  (setq date
+	(pcase (length date)
+	  ;; DD-MM-YY
+	  (8 date)
+	  ;; DD-MM
+	  (5 (concat date (format-time-string "-%y")))
+	  ;; DD
+	  (2 (concat date (format-time-string "-%m-%y")))
+	  ;; D
+	  (1 (concat "0" date (format-time-string "-%m-%y")))
+	  ;; DD-M
+	  (4
+	   ;; Or D-MM?
+	   (pcase (string-search "0" date)
+	     (2 (concat "0" date (format-time-string "-%y")))
+	     (_ (concat
                  (replace-regexp-in-string "-\\(.*\\)" "-0\\1" date)
-                 (format-time-string "-%y"))))))
-    ;; D-M
-    (3 (setq date
-             (concat "0" (replace-regexp-in-string "-\\(.*\\)" "-0\\1" date)
-                     (format-time-string "-%y"))))
-    ;; D-MM-YY
-    (7 (setq date
-             ;; Or DD-M-YY?
-             (pcase (string-search "0" date)
-               (2 (concat "0" date))
-               (_ (concat
-                   (replace-regexp-in-string "-\\(.*\\)-" "-0\\1-" date))))))
-    ;; D-M-YY (who writes like that?)
-    (6 (setq date
-             (concat "0"
-                     (replace-regexp-in-string "-\\(.*\\)-" "-0\\1-" date)))))
-  ;; Return date
-  date)
+                 (format-time-string "-%y")))))
+	  ;; D-M
+	  (3 (concat "0" (replace-regexp-in-string "-\\(.*\\)" "-0\\1" date)
+		     (format-time-string "-%y")))
+	  ;; D-MM-YY
+	  (7 ;; Or DD-M-YY?
+	   (pcase (string-search "0" date)
+	     (2 (concat "0" date))
+	     (_ (concat
+		 (replace-regexp-in-string "-\\(.*\\)-" "-0\\1-" date)))))
+	  ;; D-M-YY (who writes like that?)
+	  (6 (concat "0"
+		     (replace-regexp-in-string "-\\(.*\\)-" "-0\\1-" date))))))
 
 (defun ett-custom-date (date &optional date2)
   "Operate on current buffer so the only date is DATE.
@@ -329,7 +324,7 @@ With optional DATE2, include every date between DATE and DATE2."
         (ett-finalize-scope "00:00")))))
 
 (defun ett-do-division (num1 num2)
-  "Divide NUM1 between NUM2."
+  "Divide NUM1 between NUM2."		;can you explain why this is needed?
   (if (/= (% num1 num2) 0)
       (/ (float num1) num2)
     (/ num1 num2)))
@@ -511,7 +506,7 @@ Like `insert-rectangle', but doesn't set mark."
           (insert
            (mapconcat #'concat (make-list (- col (current-column)) " ") "")))
         (ett-insert-rectangle
-         (make-list graph-f ett-graph-icon)))
+         (make-list graph-f (string ett-graph-icon))))
       (setq list (cdr list)
             col (current-column)))
     (setq beacon (point)
@@ -545,7 +540,7 @@ Like `insert-rectangle', but doesn't set mark."
 (defun ett-prettify-time (time)
   "Return a prettified string for TIME."
   (let ((hr 0))
-    (while (>= time 60)
+    (while (>= time 60)			;the loop here shouldn't be necessary, you can calculate the same thing using remainder and floor
       (setq hr (1+ hr)
             time (- time 60)))
     (concat
@@ -789,7 +784,7 @@ When NOTOTAL is non-nil, don't add total indicator."
     (save-excursion
       ;; Sort items
       ;; We need to do it in two steps because it's somehow complicated
-      (sort-regexp-fields t "^.*$" "\\(:[0-9]+\\)" (point-min) (point-max))
+      (sort-regexp-fields t "^.*$" "\\(:[0-9]+\\)" (point-min) (point-max)) ;have you considered using rx?
       (sort-regexp-fields t "^.*$" "\\([0-9]+:\\)" (point-min) (point-max))
       ;; We now align
       (align-regexp
@@ -1174,13 +1169,27 @@ Use the command `ett-modeline-mode' to change this variable.")
     ;; Clock in
     (ett-add-track item tag)))
 
+(defvar ett-view-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-c C-c") #'ett-add-track)
+    (define-key map (kbd "SPC") #'ett-space-dwim)
+    map))
+
 (define-derived-mode ett-mode text-mode "ETT"
   "Major mode for editing ETT based texts."
   (setq font-lock-defaults '(ett-font-lock-keywords t))
-  (setq-local outline-regexp "[0-9]+-[0-9]+-[0-9]+")
+  (setq-local outline-regexp "[0-9]+-[0-9]+-[0-9]+") ;does this need to start with a ^
   ;; show-paren-mode can be somehow annoying here
   (show-paren-local-mode -1))
 
+(defvar ett-view-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "q") #'bury-buffer)
+    (define-key map (kbd "SPC") #'ett-choose-view)
+    (define-key map (kbd "<up>") #'scroll-down-command)
+    (define-key map (kbd "<down>") #'scroll-up-command)
+    map))
+
 (define-derived-mode ett-view-mode ett-mode "ETT [report]"
   "Major mode for viewing ETT reports."
   (setq font-lock-defaults '(ett-view-font-lock-keywords t))
@@ -1188,15 +1197,8 @@ Use the command `ett-modeline-mode' to change this variable.")
   (setq-local view-read-only nil)
   (setq cursor-type nil))
 
-(define-key ett-view-mode-map (kbd "q") #'bury-buffer)
-(define-key ett-view-mode-map (kbd "SPC") #'ett-choose-view)
-(define-key ett-view-mode-map (kbd "<up>") #'scroll-down-command)
-(define-key ett-view-mode-map (kbd "<down>") #'scroll-up-command)
-(define-key ett-mode-map (kbd "C-c C-c") #'ett-add-track)
-(define-key ett-mode-map (kbd "SPC") #'ett-space-dwim)
-
 ;;;###autoload
-(add-to-list 'auto-mode-alist (cons (purecopy "\\.ett\\'") 'ett-mode))
+(add-to-list 'auto-mode-alist '("\\.ett\\'" . ett-mode))
 
 (provide 'ett)
 

  reply	other threads:[~2023-05-03  6:08 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-02 21:21 [NonGNU Elpa] New package: ETT John Task
2023-05-03  6:08 ` Philip Kaludercic [this message]
2023-05-03  6:11   ` Philip Kaludercic
2023-05-03  7:12   ` Yuri Khan
2023-05-03 11:12 ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2023-05-03 18:06 John Task
2023-05-03 17:14 John Task
2023-05-03 18:05 ` Eli Zaretskii
2023-05-03 15:29 John Task
2023-05-03 16:57 ` Sam Steingold
2023-05-03 15:02 John Task
2023-05-03 16:41 ` Philip Kaludercic
2023-05-03 14:07 John Task
2023-05-03 15:55 ` Eli Zaretskii
2023-03-01 18:17 John Task
2023-03-01 17:46 John Task
2023-03-02  4:33 ` Richard Stallman
2023-03-02 10:08   ` Holger Schurig
2023-03-02 14:50 ` q01
2023-03-02 15:55 ` John Task

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mt2m9cbk.fsf@posteo.net \
    --to=philipk@posteo.net \
    --cc=emacs-devel@gnu.org \
    --cc=q01@disroot.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.