* insert a header and automatically a timestamp with date/time @ 2025-02-01 7:55 Uwe Brauer via General discussions about Org-mode. 2025-02-01 11:11 ` pinmacs via General discussions about Org-mode. 0 siblings, 1 reply; 9+ messages in thread From: Uwe Brauer via General discussions about Org-mode. @ 2025-02-01 7:55 UTC (permalink / raw) To: emacs-orgmode Hi Is there any way to insert a header and automatically a timestamp with date/time? I can write me a small function doing this and bind it to some unused key, but is there a more general/elegant way I just miss? Thanks Uwe Brauer ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-01 7:55 insert a header and automatically a timestamp with date/time Uwe Brauer via General discussions about Org-mode. @ 2025-02-01 11:11 ` pinmacs via General discussions about Org-mode. 2025-02-01 17:43 ` Uwe Brauer via General discussions about Org-mode. 0 siblings, 1 reply; 9+ messages in thread From: pinmacs via General discussions about Org-mode. @ 2025-02-01 11:11 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1.1: Type: text/plain, Size: 2366 bytes --] On 2025-02-01 08:55, Uwe Brauer via General discussions about Org-mode. wrote: > Is there any way to insert a header and automatically a timestamp with > date/time? > > I can write me a small function doing this and bind it to some unused > key, but is there a more general/elegant way I just miss? Hi Uwe, TL DR; I add the timestamp automatically on entry creation as a hook [2], in fact, I have several hooks on entry creation and I think is a good way to handle this. I am happy with my setup since I started using it in 2023. Let me share my experience on that topic (and very happy to hear other experiences and/or feedback), I hope the offtopic inside is welcome and useful: 1. Before, I was manually adding timestamp headers as a postfix for the creation of the header (and this is how I reverted using this script per target buffer [1]) to transform to CREATED properties (see here the automation on how I add the timestamp automatically on entry creation [2]), which I think are even better, specially, because then you can add that column to your table-reports such as clocktable, org-ql, propview, custom org-map-entries stuff. 2. After, as a prefix, in the journal files, for facilitating alphanumeric sorting of items in my customized journal (with a structure of year > week > day). I finally got rid of that, and brain and eyes appreciated that movement, it is too much noise to see a lot of items with timestamp. I discovered that problem when I started using variable-pitch mode, which with modes themes works very nice with (enable variable: (setq modus-themes-mixed-fonts t) ). Then, alternatively, sorting can be done by adding "SCHEDULED" to all items created on certain buffers and levels [3], which I also add for certain org-agenda files (then I use schedule as a poor's man alternative to anki [4] for space repetition [5], which could of course involve real tasks and projects apart from the typical usecase of memorizing concepts). I do it this way and it works fine for me since that date I use it: Cheers, pinmacs [1] see attached file: migrate-from-ts-header-to-created-property.org [2] see attached file: auto-insert-created-timestamp-as-property.org [3] see attached file: autoadd-scheduled-entry [4] https://en.wikipedia.org/wiki/Anki_(software) [5] https://en.wikipedia.org/wiki/Spaced_repetition [-- Attachment #1.2: Type: text/html, Size: 3154 bytes --] [-- Attachment #2: auto-insert-created-timestamp-as-property.org --] [-- Type: text/org, Size: 930 bytes --] ** org-insert-heading-hook(s) (7) :PROPERTIES: :CREATED: [2023-04-29 Sat 16:04] :CUSTOM_ID: 2023-04-29_16:04:47.146113 :END: *** 1. always add CREATED property :PROPERTIES: :CREATED: [2023-04-29 Sat 16:05] :CUSTOM_ID: 2023-04-29_16:05:16.930966 :END: #+name: created on [2023-04-29 Sat 16:06:09] #+begin_src emacs-lisp (defun my/org-heading-insert-heading-inactive-timestamp () (save-excursion ;; src https://emacs.stackexchange.com/questions/72147/org-mode-adding-creation-date-property-upon-heading-creation (org-back-to-heading) (my/set-property-with-inactive-timestamp "CREATED"))) ;; src https://emacs-orgmode.gnu.narkive.com/xdMIn5QZ/o-how-can-i-calculate-the-age-of-a-headline ;; extra src https://emacs.stackexchange.com/questions/72147/org-mode-adding-creation-date-property-upon-heading-creation (add-hook 'org-insert-heading-hook 'my/org-heading-insert-heading-inactive-timestamp 'append) #+end_src [-- Attachment #3: migrate-from-ts-header-to-created-property.org --] [-- Type: text/org, Size: 929 bytes --] ** org-insert-heading-hook(s) (7) :PROPERTIES: :CREATED: [2023-04-29 Sat 16:04] :CUSTOM_ID: 2023-04-29_16:04:47.146113 :END: *** 1. always add CREATED property :PROPERTIES: :CREATED: [2023-04-29 Sat 16:05] :CUSTOM_ID: 2023-04-29_16:05:16.930966 :END: #+name: created on [2023-04-29 Sat 16:06:09] #+begin_src emacs-lisp (defun my/org-heading-insert-heading-inactive-timestamp () (save-excursion ;; src https://emacs.stackexchange.com/questions/72147/org-mode-adding-creation-date-property-upon-heading-creation (org-back-to-heading) (my/set-property-with-inactive-timestamp "CREATED"))) ;; src https://emacs-orgmode.gnu.narkive.com/xdMIn5QZ/o-how-can-i-calculate-the-age-of-a-headline ;; extra src https://emacs.stackexchange.com/questions/72147/org-mode-adding-creation-date-property-upon-heading-creation (add-hook 'org-insert-heading-hook 'my/org-heading-insert-heading-inactive-timestamp 'append) #+end_src [-- Attachment #4: autoadd-scheduled-entry.org --] [-- Type: text/org, Size: 1339 bytes --] *** 4. always add SCHEDULED when in journal and project files :PROPERTIES: :CREATED: [2023-11-17 Fri 19:32] :CUSTOM_ID: emacsconf_61 :END: :BACKLINKS: [2024-01-12 Fri 09:20] <- [[file:~/org/1activity.org::#1activity_3774][org agenda cleanup/puesta a punto, y vaciado de notas de móvil]] :END: #+name: created on [2023-11-17 Fri 19:33:09] #+begin_src emacs-lisp (defun my/org-heading-insert-scheduled () (if (or (and (string-match-p my/diary-file (buffer-name)) (= (org-current-level) 4)) (and (string-match-p my/board-file (buffer-name)) (= (org-current-level) 4)) (and (string-match-p my/proj-file (buffer-name)) ;; projects are 3-level (tasks start at 5-level, we don't care on its children) (> (org-current-level) 4)) (and (string-match-p my/proj-candidates-file (buffer-name)) ;; projects are 4-level (tasks start at 3-level, we don't care on its children) (> (org-current-level) 3)) ) (save-excursion ;; src https://emacs.stackexchange.com/questions/72147/org-mode-adding-creation-date-property-upon-heading-creation ;;(org-back-to-heading) (org-schedule nil (format-time-string "[%Y-%m-%d %a]" nil))))) (add-hook 'org-insert-heading-hook 'my/org-heading-insert-scheduled 'append) #+end_src ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-01 11:11 ` pinmacs via General discussions about Org-mode. @ 2025-02-01 17:43 ` Uwe Brauer via General discussions about Org-mode. 2025-02-01 21:04 ` Pedro 0 siblings, 1 reply; 9+ messages in thread From: Uwe Brauer via General discussions about Org-mode. @ 2025-02-01 17:43 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 3670 bytes --] >>> "GdaO" == General discussions about Org-mode <pinmacs> writes: > On 2025-02-01 08:55, Uwe Brauer via General discussions about > Org-mode. wrote: >> Is there any way to insert a header and automatically a timestamp with >> date/time? >> >> I can write me a small function doing this and bind it to some unused >> key, but is there a more general/elegant way I just miss? Hi pinmacs (BTW do you speak Spanish , since there is some Spanish text in the files that are attached) Anyhow. Let me see if I understand that correctly - Your code does not insert * <2025-02-01> But instead * Some heading :PROPERTIES: :CREATED: [2023-11-17 Fri 19:32] :END: that is also ok, but for the moment I prefer the timestamp in the heading, because if I use outline-hide-body I obtain a nice overview with the dates. - Another problem is that I don't get your code to work for example the one in the file auto-insert-created-timestamp-as-property.org gives me --8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (void-function my/set-property-with-inactive-timestamp) (my/set-property-with-inactive-timestamp "CREATED") (save-excursion (org-back-to-heading) (my/set-property-with-inactive-timestamp "CREATED")) my/org-heading-insert-heading-inactive-timestamp() run-hooks(org-insert-heading-hook) org-insert-heading(nil) funcall-interactively(org-insert-heading nil) call-interactively(org-insert-heading) (or (run-hook-with-args-until-success 'org-metareturn-hook) (call-interactively (cond (arg #'org-insert-heading) ((org-at-table-p) #'org-table-wrap-region) ((org-in-item-p) #'org-insert-item) (t #'org-insert-heading)))) (closure (org-clock-history org-with-time org-defdecode org-def org-read-date-inactive org-ans2 org-ans1 org-columns-current-fmt-compiled org-clock-current-task org-clock-effort org-end-time-was-given org-time-was-given org-state org-agenda-headline-snapshot-before-repeat org-element-cache-version org-struct-menu org-last-state org-clock-start-time org-export-registered-backends org-indent-indentation-per-level org-inlinetask-min-level t) (&optional arg) "Insert a new heading or wrap a region in a table.\n..." (interactive "P") (or (run-hook-with-args-until-success 'org-metareturn-hook) (call-interactively (cond (arg #'org-insert-heading) ((org-at-table-p) #'org-table-wrap-region) ((org-in-item-p) #'org-insert-item) (t #'org-insert-heading)))))(nil) apply((closure (org-clock-history org-with-time org-defdecode org-def org-read-date-inactive org-ans2 org-ans1 org-columns-current-fmt-compiled org-clock-current-task org-clock-effort org-end-time-was-given org-time-was-given org-state org-agenda-headline-snapshot-before-repeat org-element-cache-version org-struct-menu org-last-state org-clock-start-time org-export-registered-backends org-indent-indentation-per-level org-inlinetask-min-level t) (&optional arg) "Insert a new heading or wrap a region in a table.\n..." (interactive "P") (or (run-hook-with-args-until-success 'org-metareturn-hook) (call-interactively (cond (arg #'org-insert-heading) ((org-at-table-p) #'org-table-wrap-region) ((org-in-item-p) #'org-insert-item) (t #'org-insert-heading))))) nil) org-meta-return(nil) funcall-interactively(org-meta-return nil) call-interactively(org-meta-return nil nil) command-execute(org-meta-return) --8<---------------cut here---------------end--------------->8--- The one in autoadd-scheduled-entry.org refers to files I don't have. Anyhow I continue playing with your code. Thanks for sharing it Uwe [-- Attachment #2: smime.p7s --] [-- Type: application/pkcs7-signature, Size: 5684 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-01 17:43 ` Uwe Brauer via General discussions about Org-mode. @ 2025-02-01 21:04 ` Pedro 2025-02-02 7:38 ` Uwe Brauer via General discussions about Org-mode. 0 siblings, 1 reply; 9+ messages in thread From: Pedro @ 2025-02-01 21:04 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1.1.1.1: Type: text/plain, Size: 2429 bytes --] On 2025-02-01 18:43, Uwe Brauer via General discussions about Org-mode. wrote: > (BTW do you speak Spanish , since there is some Spanish text in the > files that are attached) > > Anyhow. > > Let me see if I understand that correctly > > - Your code does not insert > * <2025-02-01> > But instead > * Some heading > :PROPERTIES: > :CREATED: [2023-11-17 Fri 19:32] > :END: > that is also ok, but for the moment I prefer the timestamp in the > heading, because if I use outline-hide-body I obtain a nice overview > with the dates. > > > - Another problem is that I don't get your code to work for example > the one in the file auto-insert-created-timestamp-as-property.org > gives me Yes, I speak Spanish :) To generate dates as you said, you can use the following code [0], on ~man date~ you can find other strftime format constructions, or alternatively, visit this [1] The scheduled thing [2] had an if for certain conditions where you want that hook to get triggered (that uses specific buffer names that in my case are [2]), for a more simple approach, you might want to experiment with a simpler function [3] I attach again the script migrate-from-ts-header-to-created-property.org because I got confused; I hope "soon" I could have a git public repo with my emacs config [0] #+begin_src emacs-lisp (defun my/org-add-timestamp-on-heading () (save-excursion (org-back-to-heading) (org-edit-headline (format-time-string "<%F>")) (my/set-property-with-inactive-timestamp "CREATED"))) (add-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading 'append) ;; to remove it ;; (remove-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading) #+end_src [1] https://strftime.org/ [2] #+begin_src emacs-lisp (setq my/diary-file "1activity.org") (setq my/board-file "board.org") (setq my/proj-file "projects.org") (setq my/proj-candidates-file "projects-candidates.org") #+end_src [3] #+begin_src emacs-lisp (defun my/org-heading-insert-scheduled () (save-excursion ;; src https://emacs.stackexchange.com/questions/72147/org-mode-adding-creation-date-property-upon-heading-creation (org-schedule nil (format-time-string "[%Y-%m-%d %a]" nil)))) (add-hook 'org-insert-heading-hook 'my/org-heading-insert-scheduled 'append) #+end_src [-- Attachment #1.1.1.2: Type: text/html, Size: 3347 bytes --] [-- Attachment #1.1.2: migrate-from-ts-header-to-created-property.org --] [-- Type: text/org, Size: 956 bytes --] **** script: migrate from old heading format :PROPERTIES: :CREATED: [2023-07-24 Mon 03:38] :CUSTOM_ID: emacsconf_51 :END: #+name: created on [2023-07-24 Mon 03:38:47] #+begin_src emacs-lisp (defun my/migrate-legacy-created-format () (interactive) (org-map-entries (lambda () (let* ((title (org-entry-get nil "ITEM")) (regexp "^\\(.*\\) <\\(20.*\\)>") (current-created (org-entry-get (point) "CREATED"))) (when (string-match regexp title) (let ((new-title (match-string 1 title)) (new-created (match-string 2 title))) (if current-created (message "Warning: \"%s\" not added as created property" title) (progn ;; move match to CREATED property (org-entry-put (point) "CREATED" (format "[%s]" new-created)) ;; delete heading text (org-edit-headline new-title))))))) nil 'file)) #+end_src [-- Attachment #1.1.3: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3323 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-01 21:04 ` Pedro @ 2025-02-02 7:38 ` Uwe Brauer via General discussions about Org-mode. 2025-02-02 12:03 ` pinmacs 0 siblings, 1 reply; 9+ messages in thread From: Uwe Brauer via General discussions about Org-mode. @ 2025-02-02 7:38 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1203 bytes --] > On 2025-02-01 18:43, Uwe Brauer via General discussions about Org-mode. > wrote: > Yes, I speak Spanish :) Vale, entendido (supongo que eres español, porque usas la palabra movil, ¿correcto?) > To generate dates as you said, you can use the following code [0], on > ~man date~ you can find other strftime format constructions, or > alternatively, visit this [1] > The scheduled thing [2] had an if for certain conditions where you want > that hook to get triggered (that uses specific buffer names that in my > case are [2]), for a more simple approach, you might want to experiment > with a simpler function [3] > I attach again the script migrate-from-ts-header-to-created-property.org > because I got confused; I hope "soon" I could have a git public repo > with my emacs config > [0] > #+begin_src emacs-lisp > (defun my/org-add-timestamp-on-heading () > (save-excursion > (org-back-to-heading) > (org-edit-headline (format-time-string "<%F>")) > (my/set-property-with-inactive-timestamp "CREATED"))) Thanks, but I cannot find the function my/set-property-with-inactive-timestamp In your code, Uwe [-- Attachment #2: smime.p7s --] [-- Type: application/pkcs7-signature, Size: 5684 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-02 7:38 ` Uwe Brauer via General discussions about Org-mode. @ 2025-02-02 12:03 ` pinmacs 2025-02-02 20:02 ` Uwe Brauer via General discussions about Org-mode. 0 siblings, 1 reply; 9+ messages in thread From: pinmacs @ 2025-02-02 12:03 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1206 bytes --] On 2025-02-02 08:38, Uwe Brauer via General discussions about Org-mode. wrote: > Vale, entendido (supongo que eres español, porque usas la palabra movil, > ¿correcto?) Yes :D but let's keep the discussion in the mailinglist in English so other people can participate, or benefit from it > Thanks, but I cannot find the function > > my/set-property-with-inactive-timestamp > > In your code, In fact you don't need ~my/get-inactive-timestamp~ for your pursposes, try with this one: #+begin_src emacs-lisp (defun my/org-add-timestamp-on-heading () (save-excursion (org-back-to-heading) (org-edit-headline (format-time-string "<%F>")))) (add-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading 'append) ;; to remove it ;; (remove-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading) #+end_src but here you have for curiosity, there you can see compact strftime format to construct a inactive timestamp [1] #+begin_src emacs-lisp (defun my/get-inactive-timestamp () (format-time-string "[%F %a %R]")) (defun my/set-property-with-inactive-timestamp (property) (interactive) (org-set-property property (my/get-inactive-timestamp))) #+end_src [-- Attachment #2: Type: text/html, Size: 1899 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-02 12:03 ` pinmacs @ 2025-02-02 20:02 ` Uwe Brauer via General discussions about Org-mode. 2025-02-02 20:47 ` pinmacs 0 siblings, 1 reply; 9+ messages in thread From: Uwe Brauer via General discussions about Org-mode. @ 2025-02-02 20:02 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1968 bytes --] > On 2025-02-02 08:38, Uwe Brauer via General discussions about Org-mode. > wrote: > Yes :D > but let's keep the discussion in the mailinglist in English so other > people can participate, or benefit from it Sure! > In fact you don't need ~my/get-inactive-timestamp~ for your pursposes, > try with this one: > #+begin_src emacs-lisp > (defun my/org-add-timestamp-on-heading () > (save-excursion > (org-back-to-heading) > (org-edit-headline (format-time-string "<%F>")))) > (add-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading 'append) > ;; to remove it > ;; (remove-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading) > #+end_src I did this already 😉 thanks Actually I used (defun my/org-add-timestamp-on-heading () (save-excursion (org-back-to-heading) (org-edit-headline (format-time-string "<%Y-%m-%d %H:%M>"))) (insert " ")) (add-hook 'org-insert-heading-hook 'my/org-add-timestamp-on-heading 'append) > but here you have for curiosity, there you can see compact strftime > format to construct a inactive timestamp > [1] > #+begin_src emacs-lisp > (defun my/get-inactive-timestamp () > (format-time-string "[%F %a %R]")) > (defun my/set-property-with-inactive-timestamp (property) > (interactive) > (org-set-property property (my/get-inactive-timestamp))) > #+end_src Thanks, I try that out. A last question though. Now if I want my headings look like * <2025-02-02 08:58> Second entry * <2025-02-02 08:53> First * <2025-02-02 08:56> third Is there any way to sort these heading with respect to the timestamps from oldes to newest? -- I strongly condemn Hamas heinous despicable pogroms/atrocities on Israel I strongly condemn Putin's war of aggression against Ukraine. I support to deliver weapons to Ukraine's military. I support the EU and NATO membership of Ukraine. [-- Attachment #2: smime.p7s --] [-- Type: application/pkcs7-signature, Size: 5684 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-02 20:02 ` Uwe Brauer via General discussions about Org-mode. @ 2025-02-02 20:47 ` pinmacs 2025-02-03 18:07 ` Uwe Brauer via General discussions about Org-mode. 0 siblings, 1 reply; 9+ messages in thread From: pinmacs @ 2025-02-02 20:47 UTC (permalink / raw) To: emacs-orgmode On 2025-02-02 21:02, Uwe Brauer via General discussions about Org-mode. wrote: > A last question though. > > Now if I want my headings look like > > * <2025-02-02 08:58> Second entry > > * <2025-02-02 08:53> First > > * <2025-02-02 08:56> third > > > > Is there any way to sort these heading with respect to the timestamps from oldes to newest? I'm glad it works for you :) You need a parent entry (see how I added example). From that parent entry, do M-x org-sort and select alphanumeric (a), and that sorts fine the timestamps; you will see that there are other ways to sort entries, the one I use today is scheduled (s). * example ** <2025-02-02 08:53> First ** <2025-02-02 08:56> third ** <2025-02-02 08:58> Second entry ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: insert a header and automatically a timestamp with date/time 2025-02-02 20:47 ` pinmacs @ 2025-02-03 18:07 ` Uwe Brauer via General discussions about Org-mode. 0 siblings, 0 replies; 9+ messages in thread From: Uwe Brauer via General discussions about Org-mode. @ 2025-02-03 18:07 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 785 bytes --] > On 2025-02-02 21:02, Uwe Brauer via General discussions about > Org-mode. wrote: > I'm glad it works for you :) > You need a parent entry (see how I added example). From that parent > entry, do M-x org-sort and select alphanumeric (a), and that sorts > fine the timestamps; you will see that there are other ways to sort > entries, the one I use today is scheduled (s). Ah, I see, thanks! > * example > ** <2025-02-02 08:53> First > ** <2025-02-02 08:56> third > ** <2025-02-02 08:58> Second entry -- I strongly condemn Hamas heinous despicable pogroms/atrocities on Israel I strongly condemn Putin's war of aggression against Ukraine. I support to deliver weapons to Ukraine's military. I support the EU and NATO membership of Ukraine. [-- Attachment #2: smime.p7s --] [-- Type: application/pkcs7-signature, Size: 5684 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-02-03 18:08 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-01 7:55 insert a header and automatically a timestamp with date/time Uwe Brauer via General discussions about Org-mode. 2025-02-01 11:11 ` pinmacs via General discussions about Org-mode. 2025-02-01 17:43 ` Uwe Brauer via General discussions about Org-mode. 2025-02-01 21:04 ` Pedro 2025-02-02 7:38 ` Uwe Brauer via General discussions about Org-mode. 2025-02-02 12:03 ` pinmacs 2025-02-02 20:02 ` Uwe Brauer via General discussions about Org-mode. 2025-02-02 20:47 ` pinmacs 2025-02-03 18:07 ` Uwe Brauer via General discussions about Org-mode.
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).