From 7e9341d6da0a13f4d35106f33f0f7c7a256b7117 Mon Sep 17 00:00:00 2001 From: contrapunctus Date: Wed, 18 Nov 2020 14:20:06 +0530 Subject: [PATCH 1/5] Remove dedicated files for custom variables --- elisp/chronometrist-custom.el | 78 ------------------------ elisp/chronometrist-report-custom.el | 44 ------------- elisp/chronometrist-report.el | 23 +++++++ elisp/chronometrist-statistics-custom.el | 29 --------- elisp/chronometrist-statistics.el | 8 +++ elisp/chronometrist.el | 60 +++++++++++++++++- 6 files changed, 90 insertions(+), 152 deletions(-) delete mode 100644 elisp/chronometrist-custom.el delete mode 100644 elisp/chronometrist-report-custom.el delete mode 100644 elisp/chronometrist-statistics-custom.el diff --git a/elisp/chronometrist-custom.el b/elisp/chronometrist-custom.el deleted file mode 100644 index 907ba9d..0000000 --- a/elisp/chronometrist-custom.el +++ /dev/null @@ -1,78 +0,0 @@ -;;; chronometrist-custom.el --- Custom definitions for Chronometrist -*- lexical-binding: t; -*- - -;; Author: contrapunctus - -;; This is free and unencumbered software released into the public domain. -;; -;; Anyone is free to copy, modify, publish, use, compile, sell, or -;; distribute this software, either in source code form or as a compiled -;; binary, for any purpose, commercial or non-commercial, and by any -;; means. -;; -;; For more information, please refer to - -;;; Commentary: -;; - -;;; Code: - -(defgroup chronometrist nil - "A time tracker with a nice UI." - :group 'applications) - -(defcustom chronometrist-file - (locate-user-emacs-file "chronometrist.sexp") - "Default path and name of the Chronometrist database. - -It should be a text file containing plists in the form - -\(:name \"task name\" - [:tags TAGS] - [:comment \"comment\"] - [KEY-VALUE-PAIR ...] - :start \"TIME\" - :stop \"TIME\"\) - -Where - - -TAGS is a list. It can contain any strings and symbols. - -KEY-VALUE-PAIR can be any keyword-value pairs. Currently, -Chronometrist ignores them. - -TIME must be an ISO-8601 time string. - -\(The square brackets here refer to optional elements, not -vectors.\)" - :type 'file) - -(defcustom chronometrist-buffer-name "*Chronometrist*" - "The name of the buffer created by `chronometrist'." - :type 'string) - -(defcustom chronometrist-hide-cursor nil - "If non-nil, hide the cursor and only highlight the current line in the `chronometrist' buffer." - :type 'boolean) - -(defcustom chronometrist-update-interval 5 - "How often the `chronometrist' buffer should be updated, in seconds. - -This is not guaranteed to be accurate - see (info \"(elisp)Timers\")." - :type 'integer) - -(eval-when-compile (require 'subr-x)) - -(defcustom chronometrist-activity-indicator "*" - "How to indicate that a task is active. -Can be a string to be displayed, or a function which returns this string. -The default is \"*\"" - :type '(choice string function)) - -(defcustom chronometrist-day-start-time "00:00:00" - "The time at which a day is considered to start, in \"HH:MM:SS\". - -The default is midnight, i.e. \"00:00:00\"." - :type 'string) - -(provide 'chronometrist-custom) - -;;; chronometrist-custom.el ends here diff --git a/elisp/chronometrist-report-custom.el b/elisp/chronometrist-report-custom.el deleted file mode 100644 index 206e234..0000000 --- a/elisp/chronometrist-report-custom.el +++ /dev/null @@ -1,44 +0,0 @@ -;;; chronometrist-report-custom --- custom definitions for `chronometrist-report' -*- lexical-binding: t; -*- - -;; Author: contrapunctus - -;; This is free and unencumbered software released into the public domain. -;; -;; Anyone is free to copy, modify, publish, use, compile, sell, or -;; distribute this software, either in source code form or as a compiled -;; binary, for any purpose, commercial or non-commercial, and by any -;; means. -;; -;; For more information, please refer to - -;;; Commentary: -;; - -;;; Code: - -(defgroup chronometrist-report nil - "Weekly report for the `chronometrist' time tracker." - :group 'chronometrist) - -(defcustom chronometrist-report-buffer-name "*Chronometrist-Report*" - "The name of the buffer created by `chronometrist-report'." - :type 'string) - -(defcustom chronometrist-report-week-start-day "Sunday" - "The day used for start of week by `chronometrist-report'." - :type 'string) - -(defcustom chronometrist-report-weekday-number-alist - '(("Sunday" . 0) - ("Monday" . 1) - ("Tuesday" . 2) - ("Wednesday" . 3) - ("Thursday" . 4) - ("Friday" . 5) - ("Saturday" . 6)) - "Alist in the form (\"NAME\" . NUMBER), where \"NAME\" is the name of a weekday and NUMBER its associated number." - :type 'alist) - -(provide 'chronometrist-report-custom) - -;;; chronometrist-report-custom.el ends here diff --git a/elisp/chronometrist-report.el b/elisp/chronometrist-report.el index 0f63fff..8d971a6 100644 --- a/elisp/chronometrist-report.el +++ b/elisp/chronometrist-report.el @@ -36,6 +36,29 @@ ;;; Code: +(defgroup chronometrist-report nil + "Weekly report for the `chronometrist' time tracker." + :group 'chronometrist) + +(defcustom chronometrist-report-buffer-name "*Chronometrist-Report*" + "The name of the buffer created by `chronometrist-report'." + :type 'string) + +(defcustom chronometrist-report-week-start-day "Sunday" + "The day used for start of week by `chronometrist-report'." + :type 'string) + +(defcustom chronometrist-report-weekday-number-alist + '(("Sunday" . 0) + ("Monday" . 1) + ("Tuesday" . 2) + ("Wednesday" . 3) + ("Thursday" . 4) + ("Friday" . 5) + ("Saturday" . 6)) + "Alist in the form (\"NAME\" . NUMBER), where \"NAME\" is the name of a weekday and NUMBER its associated number." + :type 'alist) + (defvar chronometrist-report--ui-date nil "The first date of the week displayed by `chronometrist-report'. A value of nil means the current week. Otherwise, it must be a diff --git a/elisp/chronometrist-statistics-custom.el b/elisp/chronometrist-statistics-custom.el deleted file mode 100644 index 1f4379d..0000000 --- a/elisp/chronometrist-statistics-custom.el +++ /dev/null @@ -1,29 +0,0 @@ -;;; chronometrist-statistics-custom.el --- Custom definitions for chronometrist-statistics -*- lexical-binding: t; -*- - -;; Author: contrapunctus - -;; This is free and unencumbered software released into the public domain. -;; -;; Anyone is free to copy, modify, publish, use, compile, sell, or -;; distribute this software, either in source code form or as a compiled -;; binary, for any purpose, commercial or non-commercial, and by any -;; means. -;; -;; For more information, please refer to - -;;; Commentary: -;; - -;;; Code: - -(defgroup chronometrist-statistics nil - "Statistics buffer for the `chronometrist' time tracker." - :group 'chronometrist) - -(defcustom chronometrist-statistics-buffer-name "*Chronometrist-Statistics*" - "The name of the buffer created by `chronometrist-statistics'." - :type 'string) - -(provide 'chronometrist-statistics-custom) - -;;; chronometrist-statistics-custom.el ends here diff --git a/elisp/chronometrist-statistics.el b/elisp/chronometrist-statistics.el index 21457aa..e02be8d 100644 --- a/elisp/chronometrist-statistics.el +++ b/elisp/chronometrist-statistics.el @@ -59,6 +59,14 @@ ;; ## VARIABLES ## +(defgroup chronometrist-statistics nil + "Statistics buffer for the `chronometrist' time tracker." + :group 'chronometrist) + +(defcustom chronometrist-statistics-buffer-name "*Chronometrist-Statistics*" + "The name of the buffer created by `chronometrist-statistics'." + :type 'string) + (defvar chronometrist-statistics--ui-state nil "Stores the display state for `chronometrist-statistics'. diff --git a/elisp/chronometrist.el b/elisp/chronometrist.el index 9de4c08..0347c14 100644 --- a/elisp/chronometrist.el +++ b/elisp/chronometrist.el @@ -71,12 +71,70 @@ ;; For information on usage and customization, see https://github.com/contrapunctus-1/chronometrist/blob/master/README.md ;;; Code: -(eval-when-compile (defvar chronometrist-mode-map)) +(eval-when-compile + (defvar chronometrist-mode-map) + (require 'subr-x)) (autoload 'chronometrist-maybe-start-timer "chronometrist-timer" nil t) (autoload 'chronometrist-report "chronometrist-report" nil t) (autoload 'chronometrist-statistics "chronometrist-statistics" nil t) ;; ## VARIABLES ## + +(defgroup chronometrist nil + "A time tracker with a nice UI." + :group 'applications) + +(defcustom chronometrist-file + (locate-user-emacs-file "chronometrist.sexp") + "Default path and name of the Chronometrist database. + +It should be a text file containing plists in the form - +\(:name \"task name\" + [:tags TAGS] + [:comment \"comment\"] + [KEY-VALUE-PAIR ...] + :start \"TIME\" + :stop \"TIME\"\) + +Where - + +TAGS is a list. It can contain any strings and symbols. + +KEY-VALUE-PAIR can be any keyword-value pairs. Currently, +Chronometrist ignores them. + +TIME must be an ISO-8601 time string. + +\(The square brackets here refer to optional elements, not +vectors.\)" + :type 'file) + +(defcustom chronometrist-buffer-name "*Chronometrist*" + "The name of the buffer created by `chronometrist'." + :type 'string) + +(defcustom chronometrist-hide-cursor nil + "If non-nil, hide the cursor and only highlight the current line in the `chronometrist' buffer." + :type 'boolean) + +(defcustom chronometrist-update-interval 5 + "How often the `chronometrist' buffer should be updated, in seconds. + +This is not guaranteed to be accurate - see (info \"(elisp)Timers\")." + :type 'integer) + +(defcustom chronometrist-activity-indicator "*" + "How to indicate that a task is active. +Can be a string to be displayed, or a function which returns this string. +The default is \"*\"" + :type '(choice string function)) + +(defcustom chronometrist-day-start-time "00:00:00" + "The time at which a day is considered to start, in \"HH:MM:SS\". + +The default is midnight, i.e. \"00:00:00\"." + :type 'string) + (defvar chronometrist--task-history nil) (defvar chronometrist--point nil) (defvar chronometrist--inhibit-read-p nil) From 7c03b3028c42c184f7704f54300829d3aae7c03f Mon Sep 17 00:00:00 2001 From: contrapunctus Date: Mon, 23 Nov 2020 17:24:08 +0530 Subject: [PATCH 2/5] TODO - add idea for input frontends, and :hide keyword for task list --- TODO.org | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/TODO.org b/TODO.org index ecdd4ee..cb6d27d 100644 --- a/TODO.org +++ b/TODO.org @@ -262,6 +262,10 @@ ppp.el doesn't align plist values along the same column. It's also GPL, and I'm 10. [ ] =chronometrist-timer= - if =chronometrist-file= is being edited (buffer exists and modified), don't refresh - this will (hopefully) prevent Emacs from going crazy with errors in trying to parse malformed data. * Maybe [0%] +** features [0%] +1. [ ] 'input frontends' - a way to represent s-expressions as Markdown, Org, etc, so the entire plist can be edited in that mode. + * As a side-effect, this will permit use of Markdown, Org, etc in keyword-values - e.g. to use markup in comments or notes. + ** plist-pp 1. Represent sublists by depth (integer) instead of a boolean. ** a task list @@ -275,7 +279,8 @@ Elements can be 2. a list, with the first element being the task name as a string, followed by keyword-value pairs Keywords can be -1. =:tag-prompt=, =:key-prompt= - values can be nil, t, or a function. If nil, don't ask for tags/keys for this task. If t (the default), ask for tags/keys for this task using =chronometrist-tags-add=/=chronometrist-key-add=. If it's a function, use that as the prompt. +1. =:tag-prompt=, =:key-prompt= - values can be nil, t (the default), or a function. If nil, don't ask for tags/keys for this task. If t, ask for tags/keys for this task using =chronometrist-tags-add=/=chronometrist-key-add=. If it's a function, use that as the prompt. +2. =:hide= - values can be nil (the default) or t - if t, hide this task from being displayed in =chronometrist=/=chronometrist-report=/=chronometrist-statistics= buffers. (effectively a non-destructive deletion of all intervals of the task) ... Useful for From f95add3456508c187ac7755a5258c618517c9c7d Mon Sep 17 00:00:00 2001 From: contrapunctus Date: Mon, 23 Nov 2020 21:15:42 +0530 Subject: [PATCH 3/5] Move new features to their own section --- TODO.org | 91 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/TODO.org b/TODO.org index cb6d27d..131973f 100644 --- a/TODO.org +++ b/TODO.org @@ -171,7 +171,18 @@ ppp.el doesn't align plist values along the same column. It's also GPL, and I'm : (foo (1 . bar)) Yikes! -** chronometrist [8%] +** New features [0%] +1. [ ] undo/redo (by running undo-tree commands on chronometrist.sexp) + * [ ] Possibly show what changes would be made, and prompt the user to confirm it. + * How will this work with the SQLite backend? Rollbacks? + * It might be easier to just have a 'remove last interval' (the operation I use undo for most often), so we don't reimplement an undo for SQLite. +2. [ ] *Convert* current interval - change the =:name= of the currently clocked-in interval. Tags and key-values may be re-queried. Clock-in hook functions will be run again with the new task as the argument. +3. [ ] *Rename* a project (updating all records) +4. [ ] *Delete* a project (erasing all records) +5. [ ] *Hide* a project (don't show it in any Chronometrist-* buffer, effectively deleting it non-destructively) +6. [ ] *Reset* current interval - update the =:start= time to the current time. + +** chronometrist [16%] 1. [ ] Add =:stop= time when we call =chronometrist-kv-accept=, not when we quit the key-value prompt with a blank input. * It might be nice to be able to quit =chronometrist-kv-add= with C-g instead, actually. + =C-g= stops execution of =chronometrist-run-functions-and-clock-in=/=chronometrist-run-functions-and-clock-out=, so they can't reach the calls for =chronometrist-in=/=chronometrist-out=. @@ -180,28 +191,18 @@ ppp.el doesn't align plist values along the same column. It's also GPL, and I'm - What if we call =chronometrist-before-out-functions= with =run-hook-with-args= like all other hooks, so it runs all functions unconditionally and any function wishing to abort clocking in/out can use catch/throw? =chronometrist-kv-add= could quit nonlocally when the user enters a blank input (or hits C-g? Maybe by using =unwind-protect=?), cancelling the clock in/out, and thereby letting =chronometrist-kv-accept= resume clock in/out. (It can determine whether to clock in or out using =chronometrist-current-task=) -2. [ ] Implement undo/redo by running undo-tree commands on chronometrist.sexp - * [ ] Possibly show what changes would be made, and prompt the user to confirm it. - * How will this work with the SQLite backend? - * It might be easier to just have a 'remove last interval' (the operation I use undo for most often), so we don't reimplement an undo for SQLite. -3. [ ] *Convert* current interval - change the =:name= of the currently clocked-in interval. Tags and key-values may be re-queried. Clock-in hook functions will be run again with the new task as the argument. -4. [ ] *Rename* a project (updating all records) -5. [ ] *Delete* a project (erasing all records) -6. [ ] *Hide* a project (don't show it in any Chronometrist-* buffer, effectively deleting it non-destructively) -7. [ ] *Reset* current interval - update the =:start= time to the current time. -8. [X] Enhanced tag/key-value prompt - before asking for tags/key-values, if the last occurence of task had tags/key-values, ask if they should be reused. y - yes, n - no (continue to usual prompts). +2. [X] Enhanced tag/key-value prompt - before asking for tags/key-values, if the last occurence of task had tags/key-values, ask if they should be reused. y - yes, n - no (continue to usual prompts). * [X] Show what those tags/key-values are, so the user knows what will be added. -9. [ ] Expandable items - show intervals for task today +3. [ ] Expandable items - show intervals for task today * [ ] Switch between intervals and tag-combination breakdown -10. [ ] Magit integration - * [ ] Add support for using key-values to point to a commit (commit hash + repo path?) - + Need some way to extend the key-value prompt, so we can provide completion for commit hashes + commit messages... - * [ ] Add command to open the commit associated with the interval in Magit - * [ ] Make a user-customizable alist of project names and repo locations (local or remote), so shorter project names can be used instead of repo locations, saving space and reducing duplication. -11. [ ] Pretty printer - add support for alists as values -12. [ ] key-values - make detection of Lisp values more robust. - * If the input string can be read in a single call to =read=, treat it as an s-expression; else, use the current heuristics. -13. [ ] key-values - create transformer for key-values, to be run before they are added to the file. This will allow users to do cool things like sorting the key-values. +4. [ ] Magit/other VCS integration + * [ ] Add support for using key-values to point to a commit (commit hash + repo path?) + + Need some way to extend the key-value prompt, so we can provide completion for commit hashes + commit messages... + * [ ] Add command to open the commit associated with the interval in Magit + * [ ] Make a user-customizable alist of project names and repo locations (local or remote), so shorter project names can be used instead of repo locations, saving space and reducing duplication. +5. [ ] key-values - make detection of Lisp values more robust. + * If the input string can be read in a single call to =read=, treat it as an s-expression; else, use the current heuristics. +6. [ ] key-values - create transformer for key-values, to be run before they are added to the file. This will allow users to do cool things like sorting the key-values. ** chronometrist-report [0%] 1. [ ] Show week counter and max weeks; don't scroll past first/last weeks @@ -214,8 +215,8 @@ ppp.el doesn't align plist values along the same column. It's also GPL, and I'm 1. [ ] Remove duplication between =chronometrist-toggle-task= and =chronometrist-toggle-task-button= 2. [ ] Make functions more test-friendly. Quite a few can get away with returning values instead of writing to a file - this will make it easier to test them. Other functions can handle the file operations for them. 3. [ ] Rewrite using cl-loop - 1. [ ] chronometrist-statistics-entries-internal - 2. [ ] chronometrist-statistics-count-active-days + 1. [ ] =chronometrist-statistics-entries-internal= + 2. [ ] =chronometrist-statistics-count-active-days= 4. [ ] Write integration tests using ecukes. 1. Some feature definitions already exist in features/, write step definitions for them. 5. [ ] Remove duplication - the three =chronometrist-*-history-populate= functions seem to have a common pattern of iterating over each hash value (a list of plists) in =chronometrist-events=, and over each element of that list. @@ -262,31 +263,33 @@ ppp.el doesn't align plist values along the same column. It's also GPL, and I'm 10. [ ] =chronometrist-timer= - if =chronometrist-file= is being edited (buffer exists and modified), don't refresh - this will (hopefully) prevent Emacs from going crazy with errors in trying to parse malformed data. * Maybe [0%] -** features [0%] +** New features [0%] 1. [ ] 'input frontends' - a way to represent s-expressions as Markdown, Org, etc, so the entire plist can be edited in that mode. * As a side-effect, this will permit use of Markdown, Org, etc in keyword-values - e.g. to use markup in comments or notes. +2. [ ] A custom variable containing a list of tasks + #+BEGIN_SRC + ("A Task Name" + ("Another Task Name" :key-prompt nil) + ...) + #+END_SRC + + Elements can be + 1. the task name as a string + 2. a list, with the first element being the task name as a string, followed by keyword-value pairs + + Keywords can be + 1. =:tag-prompt=, =:key-prompt= - values can be nil, t (the default), or a function. If nil, don't ask for tags/keys for this task. If t, ask for tags/keys for this task using =chronometrist-tags-add=/=chronometrist-key-add=. If it's a function, use that as the prompt. + 2. =:hide= - values can be nil (the default) or t - if t, hide this task from being displayed in =chronometrist=/=chronometrist-report=/=chronometrist-statistics= buffers. (effectively a non-destructive deletion of all intervals of the task) + ... + + Useful for + 1. Adding tasks without clocking into them (the list is stored in a separate file) + 2. Not asking for tags and/or key-values for a particular task, or having a special behaviour for a task. (e.g. some tasks I use follow certain patterns, which I'd like to automate away) +3. [ ] Completion for sub-plists - if the value of a user keyword-value pair is a plist (heuristic - list with keyword as first element), can we reuse the keyword-value prompt for it? 🤔 + * Maybe generate the completion hash table when the plist is created, since this is likely to be less-used. ** plist-pp 1. Represent sublists by depth (integer) instead of a boolean. -** a task list -#+BEGIN_SRC -("A Task" - ("Another Task" :key-prompt nil)) -#+END_SRC - -Elements can be -1. the task name as a string -2. a list, with the first element being the task name as a string, followed by keyword-value pairs - -Keywords can be -1. =:tag-prompt=, =:key-prompt= - values can be nil, t (the default), or a function. If nil, don't ask for tags/keys for this task. If t, ask for tags/keys for this task using =chronometrist-tags-add=/=chronometrist-key-add=. If it's a function, use that as the prompt. -2. =:hide= - values can be nil (the default) or t - if t, hide this task from being displayed in =chronometrist=/=chronometrist-report=/=chronometrist-statistics= buffers. (effectively a non-destructive deletion of all intervals of the task) -... - -Useful for -1. Adding tasks without clocking into them (the list is stored in a separate file) -2. Not asking for tags and/or key-values for a particular task, or having a special behaviour for a task. (e.g. some tasks I use follow certain patterns, which I'd like to automate away) - ** UX [0%] 1. [ ] Provide a command which tries to auto-configure Chronometrist keys in a way which is consistent with the user's other keymaps. 2. [ ] Do basic checks on values of all customizable variables when they are changed by the user, and provide meaningful errors if they can't be used by the program. @@ -300,8 +303,6 @@ Useful for 4. [ ] Tag-sensitive key suggestions, tag-sensitive value suggestions...? * Might complicate things quite a bit. * Lack of task-sensitive value suggestions (#3) is an inconsistency, because tags and keys are already task-sensitive. From that perspective, tag-sensitive key and value suggestions are a whole new can of worms. -5. If the value of a user keyword-value pair is a plist (heuristic - list with keyword as first element), can we reuse the keyword-value prompt for it? Currently such sub-plists don't get any completion 🤔 - * Maybe generate the completion hash table when the plist is created, since this is likely to be less-used. 6. Change precision of timestamps from seconds to minutes. (like Org) ** chronometrist-report [0%] From e5281ffe52c96041179a851644047a1d4cd8faf5 Mon Sep 17 00:00:00 2001 From: contrapunctus Date: Thu, 26 Nov 2020 01:59:28 +0530 Subject: [PATCH 4/5] Remove `require` forms for deleted custom definition files --- elisp/chronometrist-common.el | 2 -- elisp/chronometrist-report.el | 1 - elisp/chronometrist-sexp.el | 2 -- elisp/chronometrist-statistics.el | 1 - elisp/chronometrist-time.el | 1 - elisp/chronometrist-timer.el | 3 --- elisp/chronometrist.el | 1 - 7 files changed, 11 deletions(-) diff --git a/elisp/chronometrist-common.el b/elisp/chronometrist-common.el index c766a62..c6d5293 100644 --- a/elisp/chronometrist-common.el +++ b/elisp/chronometrist-common.el @@ -18,8 +18,6 @@ (require 'cl-lib) (require 'ts) -(require 'chronometrist-custom) -(require 'chronometrist-report-custom) (require 'chronometrist-time) (require 'chronometrist-sexp) diff --git a/elisp/chronometrist-report.el b/elisp/chronometrist-report.el index 8d971a6..803adec 100644 --- a/elisp/chronometrist-report.el +++ b/elisp/chronometrist-report.el @@ -19,7 +19,6 @@ (require 'chronometrist-common) (require 'chronometrist-queries) (require 'chronometrist-timer) -(require 'chronometrist-report-custom) (require 'chronometrist-migrate) (declare-function chronometrist-refresh-file "chronometrist.el") diff --git a/elisp/chronometrist-sexp.el b/elisp/chronometrist-sexp.el index f351c4a..6f4993b 100644 --- a/elisp/chronometrist-sexp.el +++ b/elisp/chronometrist-sexp.el @@ -3,8 +3,6 @@ ;;; Commentary: ;; -(require 'chronometrist-custom) - ;;; Code: ;; chronometrist-file (-custom) diff --git a/elisp/chronometrist-statistics.el b/elisp/chronometrist-statistics.el index e02be8d..0167993 100644 --- a/elisp/chronometrist-statistics.el +++ b/elisp/chronometrist-statistics.el @@ -22,7 +22,6 @@ (require 'chronometrist-time) (require 'chronometrist-timer) (require 'chronometrist-events) -(require 'chronometrist-statistics-custom) (require 'chronometrist-migrate) (require 'chronometrist-queries) diff --git a/elisp/chronometrist-time.el b/elisp/chronometrist-time.el index 0d929c9..c10dcf7 100644 --- a/elisp/chronometrist-time.el +++ b/elisp/chronometrist-time.el @@ -5,7 +5,6 @@ (require 'parse-time) (require 'dash) (require 's) -(require 'chronometrist-report-custom) (declare-function chronometrist-day-start "chronometrist-events.el") diff --git a/elisp/chronometrist-timer.el b/elisp/chronometrist-timer.el index e09388d..218e6da 100644 --- a/elisp/chronometrist-timer.el +++ b/elisp/chronometrist-timer.el @@ -15,9 +15,6 @@ ;; ;;; Code: -(require 'chronometrist-custom) -(require 'chronometrist-statistics-custom) -(require 'chronometrist-report-custom) (require 'chronometrist) (declare-function chronometrist-refresh "chronometrist.el") diff --git a/elisp/chronometrist.el b/elisp/chronometrist.el index 0347c14..1100d57 100644 --- a/elisp/chronometrist.el +++ b/elisp/chronometrist.el @@ -19,7 +19,6 @@ (require 'run-transformers) (require 'chronometrist-common) -(require 'chronometrist-custom) (require 'chronometrist-key-values) (require 'chronometrist-queries) (require 'chronometrist-migrate) From 2af6b1207d15927d45483dff50e339d73f51c31c Mon Sep 17 00:00:00 2001 From: contrapunctus Date: Thu, 26 Nov 2020 02:00:07 +0530 Subject: [PATCH 5/5] TODO - clarify need behind feature; add other implementation ideas --- TODO.org | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/TODO.org b/TODO.org index 131973f..3040a0a 100644 --- a/TODO.org +++ b/TODO.org @@ -264,8 +264,11 @@ ppp.el doesn't align plist values along the same column. It's also GPL, and I'm * Maybe [0%] ** New features [0%] -1. [ ] 'input frontends' - a way to represent s-expressions as Markdown, Org, etc, so the entire plist can be edited in that mode. - * As a side-effect, this will permit use of Markdown, Org, etc in keyword-values - e.g. to use markup in comments or notes. +1. [ ] Some way to use markup (Markdown, Org, etc) for certain plist values. + Implementation ideas - + * A list of keys whose values are to be edited in a user-specified major mode. + * "Input frontends" - a way to represent s-expressions as Markdown, Org, etc, so the entire plist can be edited in that mode. As a side-effect, this will permit use of Markdown, Org, etc in keyword-values - e.g. to use markup in comments or notes. + * A binding in the key-value buffer, which will insert the string at point in a buffer of a certain mode. 2. [ ] A custom variable containing a list of tasks #+BEGIN_SRC ("A Task Name"