* Automatic mtime and ctime on all or select group of trees? @ 2017-08-31 11:55 Tim Visher 2017-08-31 13:44 ` Eric S Fraga ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Tim Visher @ 2017-08-31 11:55 UTC (permalink / raw) To: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 294 bytes --] I would like to track the time I created a tree and the last time it was edited, like ctime and mtime on a filesystem. Is that possible to have happen automatically? Thanks in advance! -- In Christ, Timmy V. http://blog.twonegatives.com/ http://five.sentenc.es/ -- Spend less time on mail [-- Attachment #2: Type: text/html, Size: 539 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-08-31 11:55 Automatic mtime and ctime on all or select group of trees? Tim Visher @ 2017-08-31 13:44 ` Eric S Fraga 2017-08-31 14:20 ` Tim Visher 2017-09-02 23:18 ` Jorge Morais Neto 2017-09-02 23:34 ` Samuel Wales 2 siblings, 1 reply; 11+ messages in thread From: Eric S Fraga @ 2017-08-31 13:44 UTC (permalink / raw) To: Tim Visher; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 538 bytes --] On Thursday, 31 Aug 2017 at 07:55, Tim Visher wrote: > I would like to track the time I created a tree and the last time it was > edited, like ctime and mtime on a filesystem. Is that possible to have > happen automatically? I don't know of any org mechanism for handling this, especially the modified time element. However, I would suggest you consider using a revision control system (mercurial, git) which would allow even finer tracking than this... -- : Eric S Fraga via Emacs 26.0.50, Org release_9.0.10-723-g23eba9 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 194 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-08-31 13:44 ` Eric S Fraga @ 2017-08-31 14:20 ` Tim Visher 2017-09-01 9:57 ` Eric S Fraga 0 siblings, 1 reply; 11+ messages in thread From: Tim Visher @ 2017-08-31 14:20 UTC (permalink / raw) To: Tim Visher, emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 972 bytes --] On Thu, Aug 31, 2017 at 9:44 AM, Eric S Fraga <esflists@gmail.com> wrote: > On Thursday, 31 Aug 2017 at 07:55, Tim Visher wrote: > > I would like to track the time I created a tree and the last time it was > > edited, like ctime and mtime on a filesystem. Is that possible to have > > happen automatically? > > I don't know of any org mechanism for handling this, especially the > modified time element. However, I would suggest you consider using a > revision control system (mercurial, git) which would allow even finer > tracking than this... > Thanks for the suggestion. It doesn't really meet my needs here in that I'm really looking for org to behave more like a filesystem, not something that I have to manually commit changes to. If this doesn't already exist, does org already provide hooks or something that I can plug in to? I would assume a heading-created and heading-modified hook of some kind would allow me to implement my own solution fairly cleanly. [-- Attachment #2: Type: text/html, Size: 1381 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-08-31 14:20 ` Tim Visher @ 2017-09-01 9:57 ` Eric S Fraga 2017-09-02 1:09 ` Adam Porter 0 siblings, 1 reply; 11+ messages in thread From: Eric S Fraga @ 2017-09-01 9:57 UTC (permalink / raw) To: Tim Visher; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 1392 bytes --] On Thursday, 31 Aug 2017 at 10:20, Tim Visher wrote: > Thanks for the suggestion. It doesn't really meet my needs here in that I'm > really looking for org to behave more like a filesystem, not something that > I have to manually commit changes to. I understand but I think you may be expecting more from org than it really is designed to do. It is primarily about text markup as the basis. > If this doesn't already exist, does org already provide hooks or something > that I can plug in to? I would assume a heading-created and > heading-modified hook of some kind would allow me to implement my own > solution fairly cleanly. The problem is that you can create a heading by simply typing "* blah" at the start of a line. There are some methods that create new headings (see org-meta-return and or-insert-heading-respect-content, e.g.) but you don't need to use them at all. However, if you are very disciplined, you could probably use org-capture to do what you want. Look at the capture-refile-archive section (section 9) of the info manual. Many of us use capturing for logs and journals, for instance, which do some of what you want (not all). You may wish to combine capturing with special TODO states and there are indeed hooks invoked when changing such states. HTH, eric -- : Eric S Fraga via Emacs 26.0.50, Org release_9.0.10-723-g23eba9 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 194 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-09-01 9:57 ` Eric S Fraga @ 2017-09-02 1:09 ` Adam Porter 0 siblings, 0 replies; 11+ messages in thread From: Adam Porter @ 2017-09-02 1:09 UTC (permalink / raw) To: emacs-orgmode As Eric mentioned, a heading can be created by simply typing, so making that detect whether a new heading is created is possible, but I guess it would require some ugly hacks. Maybe if you could hook into the font-lock code, but like I said...ugly hacks. :) However, it would be easy to add advice to the heading-creating commands, so if you always use those to create headings, that would do it for you. For modification time, that would be more challenging. I guess you could use post-command-hook and update an mtime property in the current node with every keystroke. Another way might be to add a function to the before-save-hook that would diff the buffer with the file and update the mtime in each node that has been changed. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-08-31 11:55 Automatic mtime and ctime on all or select group of trees? Tim Visher 2017-08-31 13:44 ` Eric S Fraga @ 2017-09-02 23:18 ` Jorge Morais Neto 2017-09-03 1:10 ` Adam Porter 2017-09-02 23:34 ` Samuel Wales 2 siblings, 1 reply; 11+ messages in thread From: Jorge Morais Neto @ 2017-09-02 23:18 UTC (permalink / raw) To: Tim Visher; +Cc: org mode On 31 August 2017 at 08:55, Tim Visher <tim.visher@gmail.com> wrote: > I would like to track the time I created a tree and the last time it was > edited, like ctime and mtime on a filesystem. Is that possible to have > happen automatically? To insert a creation timestamp I use org-expiry. I have added ~(require 'org-expiry)~ to my Org Mode setup file. I could then have enabled automatic CREATED property insertion by adding ~(org-expiry-insinuate)~. However, that would make Org insert CREATED not only on heading creation, but also whenever I performed certain actions – such as scheduling or deadlining – on headings that lacked CREATED. I do not want that. I want CREATED to reflect the actual creation time. Old headlines (from before I enabled org-expiry) are better off without CREATED than with an inaccurate CREATED timestamp. Also, I want to be able to disable on certain files the automatic CREATED insertion. So instead of ~(org-expiry-insinuate)~, I added this: ;; HACK? (defcustom J-insert-created t "Whether to automatically add CREATED property (org-expiry) on heading creation" :type 'boolean :safe #'booleanp) (defun J-insert-created () (when J-insert-created (org-expiry-insert-created))) (add-hook 'org-insert-heading-hook #'J-insert-created) (add-hook 'org-capture-prepare-finalize-hook (lambda () (org-map-entries #'org-expiry-insert-created))) So the CREATED timestamp is always added on capture, and also added on headline creation except for manually typed headings and buffers where option ~J-insert-created~ is nil. I created that option as an option (instead of a simple variable) so it could be file-local. This works, but I'm not sure it's correct and elegant. I know little Elisp and very little about defining Emacs options. Suggestions welcome. It currently gives compile warnings, which I ignore for now: J-org.el:18:1:Warning: defcustom for ‘J-insert-created’ fails to specify containing group Org-expiry can also add an EXPIRY property, so it can expire entries after they become irrelevant with time. And for entries without EXPIRY, it can use a (customizable) default time span. It is documented via comments on ~org-expiry.el~. That file comes with org-plus-contrib. I also customized the following options: - org-expiry-handler-function - org-expiry-inactive-timestamps - org-expiry-wait Beware that org-expiry interacts badly with the ~org-clone-subtree-with-time-shift~ command. It messes with org-expiry timestamps on the clones. For example, if the original entry is: * Meeting :PROPERTIES: :CREATED: [2017-09-02 Sáb 20:10] :EXPIRY: [2017-12-31] :END: <2017-09-04 Seg 10:00-11:00> and one invokes ~org-clone-subtree-with-time-shift~, asking for one clone and a ~+1w~ shift, the clone will be: * Meeting :PROPERTIES: :CREATED: [2017-09-09 Sáb 20:10] :EXPIRY: [2018-01-07 Dom] :END: <2017-09-11 Seg 10:00-11:00> which is clearly wrong. Regards -- - I am Brazilian. I hope my English is correct and I welcome feedback - Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z - Free (as in free speech) software for Android: https://f-droid.org/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-09-02 23:18 ` Jorge Morais Neto @ 2017-09-03 1:10 ` Adam Porter 2017-09-05 16:47 ` Jorge Morais Neto 0 siblings, 1 reply; 11+ messages in thread From: Adam Porter @ 2017-09-03 1:10 UTC (permalink / raw) To: emacs-orgmode Jorge Morais Neto <jorge13515@gmail.com> writes: Hi Jorge, Thanks for sharing that, I didn't even remember org-expiry. Very clever use of it! You seem to know more about elisp than you give yourself credit for. :) > Suggestions welcome. It currently > gives compile warnings, which I ignore for now: > > J-org.el:18:1:Warning: defcustom for ‘J-insert-created’ fails to specify > containing group You can fix that by adding e.g. ":group 'org" to the defcustom. Normally the defcustom would pick up whatever group was last defined in the same file. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-09-03 1:10 ` Adam Porter @ 2017-09-05 16:47 ` Jorge Morais Neto 2017-09-07 1:38 ` Adam Porter 0 siblings, 1 reply; 11+ messages in thread From: Jorge Morais Neto @ 2017-09-05 16:47 UTC (permalink / raw) To: Adam Porter; +Cc: org mode [unfortunately the first email went only to Adam Porter; now I address the list] On 2 September 2017 at 22:10, Adam Porter <adam@alphapapa.net> wrote: > Thanks for sharing that, I didn't even remember org-expiry. Very clever > use of it! You seem to know more about elisp than you give yourself > credit for. :) Thank you for the encouragement! >> Suggestions welcome. It currently >> gives compile warnings, which I ignore for now: >> >> J-org.el:18:1:Warning: defcustom for ‘J-insert-created’ fails to specify >> containing group > > You can fix that by adding e.g. ":group 'org" to the defcustom. > Normally the defcustom would pick up whatever group was last defined in > the same file. Thank you for the tip. But instead of adding precisely what you suggested, I have added “:group 'org-expiry”. The warning is gone and the option does show up when I invoke customize-group and type “org-expiry”. I have run some other minimal tests and it seems to be working. Regards -- - I am Brazilian. I hope my English is correct and I welcome feedback - Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z - Free (as in free speech) software for Android: https://f-droid.org/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-09-05 16:47 ` Jorge Morais Neto @ 2017-09-07 1:38 ` Adam Porter 0 siblings, 0 replies; 11+ messages in thread From: Adam Porter @ 2017-09-07 1:38 UTC (permalink / raw) To: emacs-orgmode Jorge Morais Neto <jorge13515@gmail.com> writes: > Thank you for the tip. But instead of adding precisely what you > suggested, I have added “:group 'org-expiry”. The warning is gone and > the option does show up when I invoke customize-group and type > “org-expiry”. I have run some other minimal tests and it seems to be > working. Muito bem feito! :) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-08-31 11:55 Automatic mtime and ctime on all or select group of trees? Tim Visher 2017-08-31 13:44 ` Eric S Fraga 2017-09-02 23:18 ` Jorge Morais Neto @ 2017-09-02 23:34 ` Samuel Wales 2017-09-03 1:06 ` Adam Porter 2 siblings, 1 reply; 11+ messages in thread From: Samuel Wales @ 2017-09-02 23:34 UTC (permalink / raw) To: Tim Visher; +Cc: emacs-orgmode pedantry: birth time, sometimes called btime, is a new kernel feature, present in some filesystems but not traditionally available to stat. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Automatic mtime and ctime on all or select group of trees? 2017-09-02 23:34 ` Samuel Wales @ 2017-09-03 1:06 ` Adam Porter 0 siblings, 0 replies; 11+ messages in thread From: Adam Porter @ 2017-09-03 1:06 UTC (permalink / raw) To: emacs-orgmode Samuel Wales <samologist@gmail.com> writes: > pedantry: > > birth time, sometimes called btime, is a new kernel feature, present > in some filesystems but not traditionally available to stat. Actually that's a very good reminder, especially for people who work on both Windows and *nix. In Windows, the "C" time is "Creation", but in Linux it's "change." Just found this article which looks interesting: https://lwn.net/Articles/397442/ ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-09-07 1:39 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-31 11:55 Automatic mtime and ctime on all or select group of trees? Tim Visher 2017-08-31 13:44 ` Eric S Fraga 2017-08-31 14:20 ` Tim Visher 2017-09-01 9:57 ` Eric S Fraga 2017-09-02 1:09 ` Adam Porter 2017-09-02 23:18 ` Jorge Morais Neto 2017-09-03 1:10 ` Adam Porter 2017-09-05 16:47 ` Jorge Morais Neto 2017-09-07 1:38 ` Adam Porter 2017-09-02 23:34 ` Samuel Wales 2017-09-03 1:06 ` Adam Porter
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).