Coder Social home page Coder Social logo

kaorahi / howm Goto Github PK

View Code? Open in Web Editor NEW
54.0 54.0 4.0 1.73 MB

note-taking tool on Emacs

License: GNU General Public License v2.0

Makefile 13.34% M4 0.97% Emacs Lisp 75.90% Shell 4.74% Ruby 5.02% Batchfile 0.03%
emacs emacs-lisp note-taking notes wiki

howm's People

Contributors

kaorahi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

howm's Issues

How I put my flashcards, newsfeed and even agenda in howm. Questions on how to improve this.

What I did

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:

1. At first I configured howm to use it with org mode

(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

2. Then I wrote functions that will create list of full file names.

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)))))

3. I changed 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)

End result

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.

Dim inactive items in todo list

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...

  • Its implementation is a bit tricky due to internal structure of existing code.
  • The visual cues need to suggest inactiveness obviously without explanations, but such cues are annoying when I actually want to browse inactive items.

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.

Using external grep on windows made howm slower

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.

Simulate the todo list for a specific date

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.

日本の祝日 (JP holidays)

2024年

* [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]@ {祝} 勤労感謝の日

Some questions to understand correct usage or interpretation of reminders, todos, deferred dates …

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):
image

Now I have the following questions:

  • Why are deferred prioritized higher than reminders or todos, even though they are far in the future in terms of date?
  • Or why is there hardly any differentiation on the low ranks? Since I see all entries, it is relevant what order they are in, isn't it?
  • Now the reminder from January 2024 has been around for a while, but is still ranked number 1 and closer todos or reminders slide over the deferred entries.
  • Anniversaries seem to make more sense to tag as scheduled(@) entries, then they appear in the upper block in time (even if they are actually reminders). Is this the recommended practice?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.