kaorahi / howm Goto Github PK
View Code? Open in Web Editor NEWnote-taking tool on Emacs
License: GNU General Public License v2.0
note-taking tool on Emacs
License: GNU General Public License v2.0
At first: Thank you for creating this awesome package for emacs!
Link to mailing list was substituted to this GitHub issues page and so I am writing here.
That exact man who wrote Russian guide for howm also have youtube channel and made a video about putting everything into zettelkasten — https://www.youtube.com/watch?v=Bkhlehp1M6o
I have the same ideas before and here what i did:
(use-package howm
:init (setq howm-view-title-header "*")
:if (string-match-p "kanamori" (system-name)))
I needed this step use with howm packages that initially was written for org, like org-drill
https://orgmode.org/worg/org-contrib/org-drill.html
I did it for org-drill, elfeed and agenda.
I use agenda tag, because for today org-timeblock cannot get time ranges from howm.
(defun my-elfeed-file-names-in-howm ()
"Return list of absolute filenames of org-elfeed files in howm"
(delete-dups
(mapcar #'car (howm-grep "\:elfeed\:"
(howm-files-in-directory howm-directory)))))
(defun my-org-drill-file-names-in-howm ()
"Return list of absolute filenames of org-drill files in howm"
(delete-dups
(mapcar #'car (howm-grep "\:drill\:"
(howm-files-in-directory howm-directory)))))
(defun my-org-agenda-file-names-in-howm()
"Return list of absoulute filenames of files with :agenda: tag in howm"
(delete-dups
(mapcar #'car (howm-grep "\:agenda\:" (howm-files-in-directory howm-directory)))))
init.el
to point some variables to these filenames(use-package org-drill
:if (string-match-p "kanamori" (system-name))
:config (setq org-drill-scope (my-org-drill-file-names-in-howm))
:after howm)
(use-package elfeed-org
:if (string-match-p "kanamori" (system-name))
:ensure t
:config
(elfeed-org)
(setq rmh-elfeed-org-files (my-elfeed-file-names-in-howm))
:after howm)
(use-package org
:if (string-match-p "kanamori" (system-name))
:mode ("\\(\\.txt\\|\\.org\\|\\.howm\\)$" . org-mode)
:custom
(org-startup-folded nil)
(org-agenda-files (my-org-agenda-file-names-in-howm))
(org-format-latex-options
'(:foreground default :background default :scale 1.7 :html-foreground "Black" :html-background "Transparent" :html-scale 1.0 :matchers
("begin" "$1" "$" "$$" "\\(" "\\[")))
(org-todo-keywords
'((sequence "TODO(1)" "|" "DONE(2)" "FAIL(3)" "NGMI(4)" )))
:after howm)
Now i can put my flashcards inside my howm directory.
There are some benefits in putting flashcards from various sources and topics inside one giant deck:
https://borretti.me/article/effective-spaced-repetition#fun
Then only disadvantage I met for today is that sometimes I need to manually update variables like org-drill-scope
by evaluating region in init.el
or evaluating entire buffer. So there is room for improvement and you can tell me how I can do it better.
That is. Thank you for reading this.
In the todo list, the order of inactive items seems confusing (#3). So I considered adding visual cues for them, such as gray backgrounds (ref). I once implemented this, but I gave up...
I'd rather say "aim not to overmanage the exact order of items as it can be unnecessarily stressful and goes beyond what this tool is designed for".
See also #4.
I've have had use-package directive in my config.
(use-package howm
:init (setq howm-view-title-header "*")
(setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.org"))
:custom
(howm-view-use-grep 't))
I installed grep from scoop (scoop.sh)
And when executing howm-list-grep
it becomes an order of magnitude longer, than without howm-view-use-grep
set to t
.
Also my new config become literate:
https://github.com/artsi0m/emacs-organizer/tree/4c8e0cd3d28646a63fc65567cb5cf4a8a18ad481
You can find all workarounds, that I use to interconnect howm with various org packages, like org-fc, package for flashcards.
To test the todo list's behavior, it would be helpful to simulate its appearance as if today were 20XX-XX-XX.
Though this quick hack seems to work at first glance, it should be far from perfect. I've verified it only a minute actually. :p
;; Simulate the todo list for a specific date on howm-1.5.1.
(setq my-howm-fake-current-time
(encode-time '(0 0 0 28 2 2024 nil nil nil)))
(define-advice howm-decode-time (:around (orig &optional specified-time))
(when (null specified-time)
(setq specified-time my-howm-fake-current-time))
(funcall orig specified-time))
;; Additional tips: Display the priorities in the menu.
(setq howm-menu-todo-priority-format "(%8.1f)")
I'm also testing an interactive simulation feature locally, using <
and >
keys to simulate the previous/next day. If it works successfully, I'll push it in a few days.
* [2024-01-01]@ {祝} 元日
* [2024-01-08]@ {祝} 成人の日
* [2024-02-11]@ {祝} 建国記念の日
* [2024-02-12]@ {祝} 休日
* [2024-02-23]@ {祝} 天皇誕生日
* [2024-03-20]@ {祝} 春分の日
* [2024-04-29]@ {祝} 昭和の日
* [2024-05-03]@ {祝} 憲法記念日
* [2024-05-04]@ {祝} みどりの日
* [2024-05-05]@ {祝} こどもの日
* [2024-05-06]@ {祝} 休日
* [2024-07-15]@ {祝} 海の日
* [2024-08-11]@ {祝} 山の日
* [2024-08-12]@ {祝} 休日
* [2024-09-16]@ {祝} 敬老の日
* [2024-09-22]@ {祝} 秋分の日
* [2024-09-23]@ {祝} 休日
* [2024-10-14]@ {祝} スポーツの日
* [2024-11-03]@ {祝} 文化の日
* [2024-11-04]@ {祝} 休日
* [2024-11-23]@ {祝} 勤労感謝の日
I'm still having trouble setting up the reminders so that they work as expected. But maybe my understanding is still all wrong. I thought the "deferred"(~) entries were treated the same as reminders, except that they come up periodically (with period length as specified). But the current view of the reminder list makes no sense to me.
This is my exemplary input:
[2024-01-22]- Birthday Z - it's in the past
[2024-02-11]- Birthday A
[2024-02-20]+ Todo Item B
[2024-03-15]- Remind me C
[2024-04-30]~365 Yearly check D
[2024-10-01]~365 Yearly check E
[2024-02-15]~60 Bi-monthly activity F
[2024-03-10]- Yet another reminder G
[2024-02-12]+ Todo I
and this is how it is displayed in the menu (priority shown for debugging):
Now I have the following questions:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.