branch: elpa/gnosis commit ca2c2f29d1e0e684218a14ca21cac34de315ba2e Author: Thanos Apollo <pub...@thanosapollo.org> Commit: Thanos Apollo <pub...@thanosapollo.org>
docs: Add section on gnosis & org-gnosis interactions. --- doc/gnosis.info | 457 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ doc/gnosis.org | 21 ++- doc/gnosis.texi | 445 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 920 insertions(+), 3 deletions(-) diff --git a/doc/gnosis.info b/doc/gnosis.info new file mode 100644 index 0000000000..2d174b82ad --- /dev/null +++ b/doc/gnosis.info @@ -0,0 +1,457 @@ +This is gnosis.info, produced by .texi2any-real version 7.1.1 from +gnosis.texi. + +INFO-DIR-SECTION Emacs misc features +START-INFO-DIR-ENTRY +* Gnosis: (gnosis). Spaced Repetition System. +END-INFO-DIR-ENTRY + + +File: gnosis.info, Node: Top, Next: Introduction, Up: (dir) + +Gnosis User Manual +****************** + +Gnosis is a customizable spaced repetition system designed to enhance +memory retention through active recall. It allows users to set specific +review intervals for note decks & tags, creating an optimal learning +environment tailored to each specific topic/subject. + +This manual is written for Gnosis version 0.5.0, released on 2025-06-17. + + • Manual: + • <https://elpa.nongnu.org/nongnu/doc/gnosis.html> + • <https://thanosapollo.org/projects/gnosis/> (Mirror) + • Git repositories: + • <https://git.thanosapollo.org/gnosis> + • <https://codeberg.org/thanosapollo/emacs-gnosis> (Mirror) + • + <https://git.savannah.gnu.org/cgit/emacs/nongnu.git/?h=elpa/gnosis> + (Mirror) + +* Menu: + +* Introduction:: +* Adding notes:: +* Note Types:: +* Linking gnosis notes to org-gnosis content:: +* Customization:: +* Gnosis Algorithm:: +* Editing notes:: +* Sync between devices:: +* Interactions with other software:: +* Contributing:: + +-- The Detailed Node Listing -- + +Note Types + +* Cloze:: + +Cloze + +* Default cloze format:: +* Using anki-like syntax:: + +Customization + +* Typos | String Comparison:: + +Gnosis Algorithm + +* Anagnosis Event:: +* Proto:: + +Interactions with other software + +* emacs-no-littering:: + +Contributing + +* How to create a patch:: + + + +File: gnosis.info, Node: Introduction, Next: Adding notes, Prev: Top, Up: Top + +1 Introduction +************** + +Gnosis (γνῶσις) is a spaced repetition system that enhances memory +retention through active recall. It employs a Q&A format, where each +note consists of a question, answer, and explanation. Notes are +reviewed at optimally spaced intervals based on the user's success or +failure to recall the answer. Key benefits arise from writing out +answers when reviewing notes, fostering deeper understanding and +improved memory retention. + + Gnosis algorithm is highly adjustable, allowing users to set specific +values not just for note decks but for tags as well. Gnosis' +adjustability allows users to fine-tune settings not only for entire +note collections but also for specific tagged topics, thereby creating a +personalized learning environment for each topic. Read more on *note +Gnosis Algorithm:: + + +File: gnosis.info, Node: Adding notes, Next: Note Types, Prev: Introduction, Up: Top + +2 Adding notes +************** + +Creating notes for gnosis can be done interactively with: + + ‘M-x gnosis-add-note’ + + Or from within ‘gnosis-dashboard’ + + +File: gnosis.info, Node: Note Types, Next: Linking gnosis notes to org-gnosis content, Prev: Adding notes, Up: Top + +3 Note Types +************ + +Each note is a *thema* consisting of the following components: + + • *Keimenon*; The main text or question. + • *Hypothesis*; Assumptions/hints for the text to guide to the right + answer + • For example this is used as hints for cloze type or as choices + in MCQs + • *Answer*; The correct response or solution to the keimenon. + • *Parathema*; expansion of keimenon, that can include links to e.g + org-gnosis topics or even files, serving as a way to link + org-gnosis topics to current thema. + + Optionally, you can use also add tags for each note. + + Notes/themas can have multiple hypotheses and answers (*depending on +their type*), separated by ‘gnosis-export-separator’, which defaults to +‘"\n-"’ _(a new line followed by a dash)_. + +* Menu: + +* Cloze:: + + +File: gnosis.info, Node: Cloze, Up: Note Types + +3.1 Cloze +========= + +A cloze note type is a format where you create sentences or paragraphs +with "missing" words. A fill-in-the-blanks question. + + You can create a cloze note type using ‘M-x gnosis-add-note’ and +selecting ‘Cloze’. + + Example format: + +* Menu: + +* Default cloze format:: +* Using anki-like syntax:: + + +File: gnosis.info, Node: Default cloze format, Next: Using anki-like syntax, Up: Cloze + +3.1.1 Default cloze format +-------------------------- + + * Thema :pharmacology:antimicrobials:penicillin: + :PROPERTIES: + :GNOSIS_ID: NEW + :GNOSIS_TYPE: cloze + :END: + ** Keimenon + What is the treatment for Actinomyces infection? + + Penicillin + + ** Hypothesis + - drug type + + ** Answer + - Penicillin + + ** Parathema + Sulfonamides → Nocardia + Actinomyces → [[id:680ca944-8ee9-4513-92d6-25696ee01f48][Penicillin]] + (treatment is a SNAP) + + +File: gnosis.info, Node: Using anki-like syntax, Prev: Default cloze format, Up: Cloze + +3.1.2 Using anki-like syntax +---------------------------- + + * Thema :pharmacology:antimicrobials:penicillin: + :PROPERTIES: + :GNOSIS_ID: NEW + :GNOSIS_TYPE: cloze + :END: + ** Keimenon + {c1:Cyproheptadine::drug name} is a(n) {c2:5-HT2} receptor antagonist used to treat {c2:serotonin syndrome} + + ** Hypothesis + - + + ** Answer + - + + ** Parathema + + + You can format clozes like Anki if you so prefer with hints; e.g +‘{{c1::Cyproheptadine::drug name}}’ + • You can use the keyword ‘::’ to indicate a hint. + + • For each cX-tag there will be created a cloze type note, the above + example creates 2 cloze type notes. + + • Each cX tag can have multiple clozes, but each cloze must be a + *UNIQUE* word, or a unique combination of words, in given note. + + • If a cloze is repeated, such as in phrases with "acetyl" & + acetylcholine, include whitespace in the cloze to denote a + single word. + + +File: gnosis.info, Node: Linking gnosis notes to org-gnosis content, Next: Customization, Prev: Note Types, Up: Top + +4 Linking gnosis notes to org-gnosis content +******************************************** + +_org-gnosis is the note taking module of gnosis_ + + • You can create notes using ‘M-x org-gnosis-find’, to link them to a + gnosis thema use ‘M-x org-gnosis-insert’ to insert a link of said + topic, either on the keimenon or parathema. + + • You can review gnosis questions that are linked to a topic by using + ‘M-x gnosis-review-topic’. + + +File: gnosis.info, Node: Customization, Next: Gnosis Algorithm, Prev: Linking gnosis notes to org-gnosis content, Up: Top + +5 Customization +*************** + +* Menu: + +* Typos | String Comparison:: + + +File: gnosis.info, Node: Typos | String Comparison, Up: Customization + +5.1 Typos | String Comparison +============================= + +You can adjust ‘gnosis-string-difference’, this is a threshold value for +string comparison that determines the maximum acceptable Levenshtein +distance between two strings, which identifies their similarity + + Let's illustrate with an example: + (setf gnosis-string-difference 1) + + In this scenario, we set ‘gnosis-string-difference’ to 1. This +implies that two strings will be recognized as similar if they exhibit a +difference of at most one character edit. + + To demonstrate, 'example' and 'examples' will be recognized as +similar, considering that the latter involves just one additional +character." + + +File: gnosis.info, Node: Gnosis Algorithm, Next: Editing notes, Prev: Customization, Up: Top + +6 Gnosis Algorithm +****************** + +Each gnosis note has a gnosis score, which is a list of 3 values, +(gnosis-plus gnosis-minus gnosis-synolon/total). Gnosis-synolon is what +is used to determine the next interval upon a successful recall, +gnosis-plus is added to gnosis-synolon upon a successful recall as well, +gnosis-minus is subtracted from gnosis-synolon upon failing to recall a +note's answer. + + Gnosis has 2 special events, one is ‘anagnosis’ _ανάγνωση_ and +‘lethe’ _λήθη_. + +* Menu: + +* Anagnosis Event:: +* Proto:: + + +File: gnosis.info, Node: Anagnosis Event, Next: Proto, Up: Gnosis Algorithm + +6.1 Anagnosis Event +=================== + +‘Anagnosis’, which means comprehension & recognition of knowledge, is +triggered when the consecutive successful or failed recalls are equal or +greater to anagnosis value. + + When ‘anagnosis’ is triggered by consecutive *successful* recalls, +‘epignosis’ value is added to gnosis-plus. _Epignosis means accuracy of +knowledge_. + + When ‘anagnosis’ is triggered by consecutive *failed* recalls, +‘agnoia’ value is added to gnosis-minus. _Agnoia means lack of +knowledge_ + + You can set specific values for each deck and tag of the variables +mentioned above by adjusting ‘gnosis-custom-values’. + + +File: gnosis.info, Node: Proto, Prev: Anagnosis Event, Up: Gnosis Algorithm + +6.2 Proto +========= + +The default initial interval is defined at ‘gnosis-algorithm-proto’, you +can define a custom initial interval for each deck as well. + + ‘gnosis-algorithm-interval’ is a list of numbers, representing the +first initial intervals for successful reviews. There is no limit on +the length of the list. + + Example: + + (setq gnosis-algorithm-interval '(0 1 2 30)) + + Upon each successful note review, the algorithm will increment to the +next interval value: 0 days (0), 1 day later (1), 2 days later (2), and +30 days later. + + Upon failing to review a note without completing it's proto +successful reviews, it's next review date will be on the same date. + + +File: gnosis.info, Node: Editing notes, Next: Sync between devices, Prev: Gnosis Algorithm, Up: Top + +7 Editing notes +*************** + + • Currently there are 2 ways for editing notes: + + • You can edit a note after review by pressing ‘e’ + • Open ‘gnosis-dashboard’ with ‘M-x gnosis-dashboard’, find the + note you want to edit and press ‘e’ + + +File: gnosis.info, Node: Sync between devices, Next: Interactions with other software, Prev: Editing notes, Up: Top + +8 Sync between devices +********************** + +Gnosis uses git to maintain data integrity and facilitate +synchronization across devices. + + You will need to configure your remote manually. + + Example: + + cd ~/.emacs.d/gnosis # default location for gnosis, no-littering is ~/.emacs.d/var/gnosis + git init # After completing your first review session, a git repo should have been initialized automatically. + git remote add origin <remote_url> + git push --set-upstream origin master + + You can interactively use ‘gnosis-vc-push’ & ‘gnosis-vc-pull’. As +the name suggests, they rely on ‘vc’ to work properly. + + Depending on your setup, ‘vc’ might require an external package for +the ssh passphrase dialog, such as ‘x11-ssh-askpass’. + + To automatically push changes after a review session, add this to +your configuration: + (setf gnosis-vc-auto-push t) + (gnosis-vc-pull) ;; Run vc-pull for gnosis on startup + + +File: gnosis.info, Node: Interactions with other software, Next: Contributing, Prev: Sync between devices, Up: Top + +9 Interactions with other software +********************************** + +* Menu: + +* emacs-no-littering:: + + +File: gnosis.info, Node: emacs-no-littering, Up: Interactions with other software + +9.1 emacs-no-littering +====================== + +If you are a user of emacs-no-littering +(https://github.com/emacscollective/no-littering), you can theme Gnosis +to fit its standards by adding the following snippet to your +configuration: + + (setq gnosis-dir (no-littering-expand-var-file-name "gnosis/")) + + This sets ‘gnosis-dir’ to ‘~/.emacs.d/var/gnosis’, in line with the +folders of other packages. + + +File: gnosis.info, Node: Contributing, Prev: Interactions with other software, Up: Top + +10 Contributing +*************** + +Thank you for considering contributing back to gnosis. You can +contribute by submitting a pull request on the codeberg mirror +repository, or directly sending me patch via email. + +* Menu: + +* How to create a patch:: + + +File: gnosis.info, Node: How to create a patch, Up: Contributing + +10.1 How to create a patch +========================== + +_Example:_ + + $ git clone https://git.thanosapollo.com/gnosis.git && cd gnosis + $ emacs something + $ git add something + $ git commit -m "Fix something" + $ git format-patch HEAD^1 + 0001-Fix-something.patch + + You can sent the patch to "Thanos Apollo", the email of which you can +find on the git log. + + + +Tag Table: +Node: Top209 +Node: Introduction1604 +Node: Adding notes2526 +Node: Note Types2780 +Node: Cloze3736 +Node: Default cloze format4113 +Node: Using anki-like syntax4725 +Node: Linking gnosis notes to org-gnosis content5817 +Node: Customization6397 +Node: Typos | String Comparison6599 +Node: Gnosis Algorithm7355 +Node: Anagnosis Event8002 +Node: Proto8743 +Node: Editing notes9510 +Node: Sync between devices9902 +Node: Interactions with other software10978 +Node: emacs-no-littering11204 +Node: Contributing11704 +Node: How to create a patch12046 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/doc/gnosis.org b/doc/gnosis.org index 04bacce430..4a62bd9ae5 100644 --- a/doc/gnosis.org +++ b/doc/gnosis.org @@ -57,15 +57,13 @@ note collections but also for specific tagged topics, thereby creating a personalized learning environment for each topic. Read more on [[Gnosis Algorithm]] -Before continuing reading this manual, it's recommended you try out -=gnosis-demo=. - * Adding notes Creating notes for gnosis can be done interactively with: =M-x gnosis-add-note= Or from within =gnosis-dashboard= + * Note Types Each note is a *thema* consisting of the following components: @@ -82,6 +80,7 @@ Optionally, you can use also add tags for each note. Notes/themas can have multiple hypotheses and answers (*depending on their type*), separated by =gnosis-export-separator=, which defaults to ="\n-"= /(a new line followed by a dash)/. + ** Cloze :PROPERTIES: :CUSTOM_ID: Cloze @@ -138,6 +137,7 @@ Example format: #+end_src + You can format clozes like Anki if you so prefer with hints; e.g ~{{c1::Cyproheptadine::drug name}}~ + You can use the keyword =::= to indicate a hint. @@ -151,6 +151,16 @@ You can format clozes like Anki if you so prefer with hints; e.g ~{{c1::Cyprohep acetylcholine, include whitespace in the cloze to denote a single word. +* Linking gnosis notes to org-gnosis content +/org-gnosis is the note taking module of gnosis/ + ++ You can create notes using =M-x org-gnosis-find=, to link them to a + gnosis thema use =M-x org-gnosis-insert= to insert a link of said + topic, either on the keimenon or parathema. + ++ You can review gnosis questions that are linked to a topic by using + =M-x gnosis-review-topic=. + * Customization :PROPERTIES: :CUSTOM_ID: Customization @@ -173,8 +183,10 @@ difference of at most one character edit. To demonstrate, 'example' and 'examples' will be recognized as similar, considering that the latter involves just one additional character." + * Gnosis Algorithm + Each gnosis note has a gnosis score, which is a list of 3 values, (gnosis-plus gnosis-minus gnosis-synolon/total). Gnosis-synolon is what is used to determine the next interval upon a successful recall, @@ -183,6 +195,7 @@ well, gnosis-minus is subtracted from gnosis-synolon upon failing to recall a note's answer. Gnosis has 2 special events, one is ~anagnosis~ /ανάγνωση/ and ~lethe~ /λήθη/. + ** Anagnosis Event ~Anagnosis~, which means comprehension & recognition of knowledge, is triggered when the consecutive successful or failed recalls are equal @@ -255,6 +268,7 @@ To automatically push changes after a review session, add this to your configura (gnosis-vc-pull) ;; Run vc-pull for gnosis on startup #+end_src + * Interactions with other software ** emacs-no-littering @@ -266,6 +280,7 @@ its standards by adding the following snippet to your configuration: #+end_src This sets =gnosis-dir= to =~/.emacs.d/var/gnosis=, in line with the folders of other packages. + * Contributing Thank you for considering contributing back to gnosis. You can diff --git a/doc/gnosis.texi b/doc/gnosis.texi new file mode 100644 index 0000000000..ab06ca84bf --- /dev/null +++ b/doc/gnosis.texi @@ -0,0 +1,445 @@ +\input texinfo @c -*- texinfo -*- +@c %**start of header +@setfilename gnosis.info +@settitle Gnosis User Manual +@documentencoding UTF-8 +@documentlanguage en +@set MAINTAINERSITE @uref{https://thanosapollo.org,maintainer webpage} +@set MAINTAINER Thanos Apollo +@set MAINTAINEREMAIL @email{pub...@thanosapollo.org} +@set MAINTAINERCONTACT @uref{mailto:pub...@thanosapollo.org,contact the maintainer} +@c %**end of header + +@dircategory Emacs misc features +@direntry +* Gnosis: (gnosis). Spaced Repetition System. +@end direntry + +@finalout +@titlepage +@title Gnosis User Manual +@author Thanos Apollo (@email{public@@thanosapollo.org}) +@end titlepage + +@ifnottex +@node Top +@top Gnosis User Manual + +Gnosis is a customizable spaced repetition system designed to enhance +memory retention through active recall. It allows users to set +specific review intervals for note decks & tags, creating an optimal +learning environment tailored to each specific topic/subject. + +@noindent +This manual is written for Gnosis version 0.5.0, released on 2025-06-17. + +@itemize +@item +Manual: +@itemize +@item +@uref{https://elpa.nongnu.org/nongnu/doc/gnosis.html} +@item +@uref{https://thanosapollo.org/projects/gnosis/} (Mirror) +@end itemize +@item +Git repositories: +@itemize +@item +@uref{https://git.thanosapollo.org/gnosis} +@item +@uref{https://codeberg.org/thanosapollo/emacs-gnosis} (Mirror) +@item +@uref{https://git.savannah.gnu.org/cgit/emacs/nongnu.git/?h=elpa/gnosis} (Mirror) +@end itemize +@end itemize + +@insertcopying + +@end ifnottex + +@menu +* Introduction:: +* Adding notes:: +* Note Types:: +* Linking gnosis notes to org-gnosis content:: +* Customization:: +* Gnosis Algorithm:: +* Editing notes:: +* Sync between devices:: +* Interactions with other software:: +* Contributing:: + +@detailmenu +--- The Detailed Node Listing --- + +Note Types + +* Cloze:: + +Cloze + +* Default cloze format:: +* Using anki-like syntax:: + +Customization + +* Typos | String Comparison:: + +Gnosis Algorithm + +* Anagnosis Event:: +* Proto:: + +Interactions with other software + +* emacs-no-littering:: + +Contributing + +* How to create a patch:: + +@end detailmenu +@end menu + +@node Introduction +@chapter Introduction + +Gnosis (γνῶσις) is a spaced repetition system that enhances memory +retention through active recall. It employs a Q&A format, where each +note consists of a question, answer, and explanation. Notes are +reviewed at optimally spaced intervals based on the user's success or +failure to recall the answer. Key benefits arise from writing out +answers when reviewing notes, fostering deeper understanding +and improved memory retention. + +Gnosis algorithm is highly adjustable, allowing users to set specific +values not just for note decks but for tags as well. Gnosis' +adjustability allows users to fine-tune settings not only for entire +note collections but also for specific tagged topics, thereby creating +a personalized learning environment for each topic. Read more on +@ref{Gnosis Algorithm} + +@node Adding notes +@chapter Adding notes + +Creating notes for gnosis can be done interactively with: + +@samp{M-x gnosis-add-note} + +Or from within @samp{gnosis-dashboard} + +@node Note Types +@chapter Note Types + +Each note is a @strong{thema} consisting of the following components: + +@itemize +@item +@strong{Keimenon}; The main text or question. +@item +@strong{Hypothesis}; Assumptions/hints for the text to guide to the right answer +@itemize +@item +For example this is used as hints for cloze type or as choices in MCQs +@end itemize +@item +@strong{Answer}; The correct response or solution to the keimenon. +@item +@strong{Parathema}; expansion of keimenon, that can include links to e.g +org-gnosis topics or even files, serving as a way to link org-gnosis +topics to current thema. +@end itemize + +Optionally, you can use also add tags for each note. + +Notes/themas can have multiple hypotheses and answers (@strong{depending on +their type}), separated by @samp{gnosis-export-separator}, which defaults to +@samp{"\n-"} @emph{(a new line followed by a dash)}. + +@menu +* Cloze:: +@end menu + +@node Cloze +@section Cloze + +A cloze note type is a format where you create sentences or paragraphs +with ``missing'' words. A fill-in-the-blanks question. + +You can create a cloze note type using @samp{M-x gnosis-add-note} and +selecting @code{Cloze}. + +Example format: + +@menu +* Default cloze format:: +* Using anki-like syntax:: +@end menu + +@node Default cloze format +@subsection Default cloze format + +@example +* Thema :pharmacology:antimicrobials:penicillin: +:PROPERTIES: +:GNOSIS_ID: NEW +:GNOSIS_TYPE: cloze +:END: +** Keimenon +What is the treatment for Actinomyces infection? + +Penicillin + +** Hypothesis +- drug type + +** Answer +- Penicillin + +** Parathema +Sulfonamides → Nocardia +Actinomyces → [[id:680ca944-8ee9-4513-92d6-25696ee01f48][Penicillin]] +(treatment is a SNAP) +@end example + +@node Using anki-like syntax +@subsection Using anki-like syntax + +@example +* Thema :pharmacology:antimicrobials:penicillin: +:PROPERTIES: +:GNOSIS_ID: NEW +:GNOSIS_TYPE: cloze +:END: +** Keimenon +@{c1:Cyproheptadine::drug name@} is a(n) @{c2:5-HT2@} receptor antagonist used to treat @{c2:serotonin syndrome@} + +** Hypothesis +- + +** Answer +- + +** Parathema + +@end example + + +You can format clozes like Anki if you so prefer with hints; e.g @code{@{@{c1::Cyproheptadine::drug name@}@}} +@itemize +@item +You can use the keyword @samp{::} to indicate a hint. +@end itemize + +@itemize +@item +For each cX-tag there will be created a cloze type note, the above +example creates 2 cloze type notes. + +@item +Each cX tag can have multiple clozes, but each cloze must be a +@strong{UNIQUE} word, or a unique combination of words, in given note. + +@itemize +@item +If a cloze is repeated, such as in phrases with ``acetyl'' & +acetylcholine, include whitespace in the cloze to denote a single +word. +@end itemize +@end itemize + +@node Linking gnosis notes to org-gnosis content +@chapter Linking gnosis notes to org-gnosis content + +@emph{org-gnosis is the note taking module of gnosis} + +@itemize +@item +You can create notes using @samp{M-x org-gnosis-find}, to link them to a +gnosis thema use @samp{M-x org-gnosis-insert} to insert a link of said +topic, either on the keimenon or parathema. + +@item +You can review gnosis questions that are linked to a topic by using +@samp{M-x gnosis-review-topic}. +@end itemize + +@node Customization +@chapter Customization + +@menu +* Typos | String Comparison:: +@end menu + +@node Typos | String Comparison +@section Typos | String Comparison + +You can adjust @samp{gnosis-string-difference}, this is a threshold value +for string comparison that determines the maximum acceptable +Levenshtein distance between two strings, which identifies their +similarity + +Let's illustrate with an example: +@lisp +(setf gnosis-string-difference 1) +@end lisp + +In this scenario, we set @samp{gnosis-string-difference} to 1. This implies +that two strings will be recognized as similar if they exhibit a +difference of at most one character edit. + +To demonstrate, 'example' and 'examples' will be recognized as +similar, considering that the latter involves just one additional +character." + +@node Gnosis Algorithm +@chapter Gnosis Algorithm + +Each gnosis note has a gnosis score, which is a list of 3 values, +(gnosis-plus gnosis-minus gnosis-synolon/total). Gnosis-synolon is +what is used to determine the next interval upon a successful recall, +gnosis-plus is added to gnosis-synolon upon a successful recall as +well, gnosis-minus is subtracted from gnosis-synolon upon failing to +recall a note's answer. + +Gnosis has 2 special events, one is @code{anagnosis} @emph{ανάγνωση} and @code{lethe} @emph{λήθη}. + +@menu +* Anagnosis Event:: +* Proto:: +@end menu + +@node Anagnosis Event +@section Anagnosis Event + +@code{Anagnosis}, which means comprehension & recognition of knowledge, is +triggered when the consecutive successful or failed recalls are equal +or greater to anagnosis value. + +When @code{anagnosis} is triggered by consecutive @strong{successful} recalls, +@code{epignosis} value is added to gnosis-plus. @emph{Epignosis means accuracy of knowledge}. + +When @code{anagnosis} is triggered by consecutive @strong{failed} recalls, +@code{agnoia} value is added to gnosis-minus. @emph{Agnoia means lack of knowledge} + +You can set specific values for each deck and tag of the variables +mentioned above by adjusting @samp{gnosis-custom-values}. + +@node Proto +@section Proto + +The default initial interval is defined at +@samp{gnosis-algorithm-proto}, you can define a custom initial interval +for each deck as well. + +@samp{gnosis-algorithm-interval} is a list of numbers, representing the +first initial intervals for successful reviews. There is no limit on +the length of the list. + +Example: + +@lisp +(setq gnosis-algorithm-interval '(0 1 2 30)) +@end lisp + +Upon each successful note review, the algorithm will increment to the +next interval value: 0 days (0), 1 day later (1), 2 days later +(2), and 30 days later. + +Upon failing to review a note without completing it's proto successful reviews, +it's next review date will be on the same date. + +@node Editing notes +@chapter Editing notes + +@itemize +@item +Currently there are 2 ways for editing notes: + +@itemize +@item +You can edit a note after review by pressing @code{e} +@item +Open @samp{gnosis-dashboard} with @samp{M-x gnosis-dashboard}, find the note you want to edit and press @code{e} +@end itemize +@end itemize + +@node Sync between devices +@chapter Sync between devices + +Gnosis uses git to maintain data integrity and facilitate +synchronization across devices. + +You will need to configure your remote manually. + +Example: + +@example +cd ~/.emacs.d/gnosis # default location for gnosis, no-littering is ~/.emacs.d/var/gnosis +git init # After completing your first review session, a git repo should have been initialized automatically. +git remote add origin <remote_url> +git push --set-upstream origin master +@end example + + +You can interactively use @samp{gnosis-vc-push} & @samp{gnosis-vc-pull}. As the +name suggests, they rely on @samp{vc} to work properly. + +Depending on your setup, @samp{vc} might require an external package for +the ssh passphrase dialog, such as @code{x11-ssh-askpass}. + +To automatically push changes after a review session, add this to your configuration: +@lisp +(setf gnosis-vc-auto-push t) +(gnosis-vc-pull) ;; Run vc-pull for gnosis on startup +@end lisp + +@node Interactions with other software +@chapter Interactions with other software + +@menu +* emacs-no-littering:: +@end menu + +@node emacs-no-littering +@section emacs-no-littering + +If you are a user of @uref{https://github.com/emacscollective/no-littering, emacs-no-littering}, you can theme Gnosis to fit +its standards by adding the following snippet to your configuration: + +@lisp +(setq gnosis-dir (no-littering-expand-var-file-name "gnosis/")) +@end lisp + +This sets @samp{gnosis-dir} to @samp{~/.emacs.d/var/gnosis}, in line with the folders of other packages. + +@node Contributing +@chapter Contributing + +Thank you for considering contributing back to gnosis. You can +contribute by submitting a pull request on the codeberg mirror +repository, or directly sending me patch via email. + +@menu +* How to create a patch:: +@end menu + +@node How to create a patch +@section How to create a patch + +@emph{Example:} + +@example +$ git clone https://git.thanosapollo.com/gnosis.git && cd gnosis +$ emacs something +$ git add something +$ git commit -m "Fix something" +$ git format-patch HEAD^1 +0001-Fix-something.patch +@end example + +You can sent the patch to ``Thanos Apollo'', the email of which you can +find on the git log. + +@bye