feat(tools/passively): Bootstrap new Emacs package 'passively'
Passively is a tool to help people learn information via Emacs, designed for language learning. As of this CL, the actual implementation still lives in //users/tazjin/russian/russian.el but I am generalising it here. Change-Id: Iac5a8cfc78415496637a7ba5ddc4c2a1aa6bee26
This commit is contained in:
parent
b679bb4034
commit
4adab5f7b9
2 changed files with 79 additions and 0 deletions
3
tools/emacs-pkgs/passively/OWNERS
Normal file
3
tools/emacs-pkgs/passively/OWNERS
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
inherited: true
|
||||||
|
owners:
|
||||||
|
- tazjin
|
76
tools/emacs-pkgs/passively/README.md
Normal file
76
tools/emacs-pkgs/passively/README.md
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
<!-- SPDX-License-Identifier: MIT -->
|
||||||
|
passively
|
||||||
|
=========
|
||||||
|
|
||||||
|
Passively is an Emacs Lisp library for passively learning new
|
||||||
|
information in an Emacs instance.
|
||||||
|
|
||||||
|
Passively works by displaying a random piece of information to be
|
||||||
|
learned in the Emacs echoline whenever Emacs is idle for a set amount
|
||||||
|
of time.
|
||||||
|
|
||||||
|
It was designed to aid in language acquisition by passively displaying
|
||||||
|
new vocabulary to learn.
|
||||||
|
|
||||||
|
Passively is configured with a corpus of information (a hash table
|
||||||
|
mapping string keys to string values) and maintains a set of terms
|
||||||
|
that the user already learned in a file on disk.
|
||||||
|
|
||||||
|
## Configuration & usage
|
||||||
|
|
||||||
|
Configure passively like this:
|
||||||
|
|
||||||
|
```lisp
|
||||||
|
;; Configure the terms to learn. Each term should have a key and a
|
||||||
|
;; string value which is displayed.
|
||||||
|
(setq passively-learn-terms
|
||||||
|
(ht ("забыть" "забыть - to forget")
|
||||||
|
("действительно" "действительно - indeed, really")))
|
||||||
|
|
||||||
|
;; Configure a file in which passively should store its state
|
||||||
|
;; (defaults to $user-emacs-directory/passively.el)
|
||||||
|
(setq passively-store-state "/persist/tazjin/passively.el")
|
||||||
|
|
||||||
|
;; Configure after how many seconds of idle time passively should
|
||||||
|
;; display a new piece of information.
|
||||||
|
;; (defaults to 4 seconds)
|
||||||
|
(setq passively-show-after-idle-for 5)
|
||||||
|
|
||||||
|
;; Once this configuration has been set up, start passively:
|
||||||
|
(passively-enable)
|
||||||
|
|
||||||
|
;; Or, if it annoys you, disable it again:
|
||||||
|
(passively-disable)
|
||||||
|
```
|
||||||
|
|
||||||
|
These variables are registered with `customize` and may be customised
|
||||||
|
through its interface.
|
||||||
|
|
||||||
|
### Known terms
|
||||||
|
|
||||||
|
Passively exposes the interactive function
|
||||||
|
`passively-mark-last-as-known` which marks the previously displayed
|
||||||
|
term as known. This means that it will not be included in the random
|
||||||
|
selection anymore.
|
||||||
|
|
||||||
|
### Last term
|
||||||
|
|
||||||
|
Passively stores the key of the last known term in
|
||||||
|
`passively-last-displayed`.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Inside of the TVL depot, you can install passively from
|
||||||
|
`pkgs.emacsPackages.tvlPackages.passively`. Outside of the depot, you
|
||||||
|
can clone passively like this:
|
||||||
|
|
||||||
|
git clone https://code.tvl.fyi/depot.git:/tools/emacs-pkgs/passively.git
|
||||||
|
|
||||||
|
Passively depends on `ht.el`.
|
||||||
|
|
||||||
|
Feel free to contribute patches by emailing them to `depot@tazj.in`
|
||||||
|
|
||||||
|
## Use-cases
|
||||||
|
|
||||||
|
I'm using passively to learn Russian vocabulary. Once I've cleaned up
|
||||||
|
my configuration for that, my Russian term list will be linked here.
|
Loading…
Reference in a new issue