emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-orgmode@gnu.org
Subject: Re: a general ID picker
Date: Tue, 20 Dec 2016 13:21:03 -0800	[thread overview]
Message-ID: <87eg12pa9s.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 2016-12-20T20-58-25@devnull.Karl-Voit.at

Karl Voit <devnull@Karl-Voit.at> writes:

> * Eric Abrahamsen <eric@ericabrahamsen.net> wrote:
>> Karl Voit <devnull@Karl-Voit.at> writes:
>>
>>> 1 Improvement: ID Picker
>>> ========================
>>>
>>>   First of all, I'd like to see some kind of ID picker when defining
>>>   `:TRIGGER:' and `:BLOCKER:' dependencies.
>>>
>>>   This should work like this: after setting up the task in headings and
>>>   giving them IDs, I'd like to invoke a "I want to define a
>>>   dependency"-command. It first asks me what property I want to set:
>>>   `:TRIGGER:' or `:BLOCKER:'.
>>>
>>>   Then I get asked to select any ID which could be found within the same
>>>   sub-hierarchy (or even in all files?).
>>>
>>>   After being asked for the KEYWORD to be set for `:TRIGGER:'
>>>   dependencies (if applicable), the property is added to the current
>>>   heading accordingly.
>>>
>>>   This would drastically improve creating dependency definitions and
>>>   prevent typing errors in the first place.
>>
>> I like this a lot, for more uses than just org-depend, and it would be
>> very easy to implement. We've got `org-property-set-functions-alist' for
>> using special functions to read the values of special properties, and
>> we've got `org-id-get-with-outline-(drilling|path-completion), so it's
>> pretty much already done!
>>
>> (defun my-trigger-property-prompt ()
>>   (when (derived-mode-p 'org-mode)
>>     (let ((id (org-id-get-with-outline-drilling))
>> 	  (kw (org-completing-read "Keyword: " org-todo-keywords-1)))
>>       (do-something-with-id-and-kw))))
>>
>> (push '("TRIGGER" . my-trigger-property-prompt)
>>       org-property-set-functions-alist)
>>
>> I don't actually know how the TRIGGER property is meant to be formatted
>> (and I didn't really test the above), but something very near to the
>> above should do what you want.
>
> Well, I am afraid that I am totally lost when it comes to "pretty
> much already done". The great Professor Kitchin helped me with a
> sophisticated function and sent me the "almost finished" code and I
> failed at making it run :-(
>
> However, I do tend to think that the ID picker would be of general
> interest and I'd like to see it in the global Org-mode featureset
> for multiple purposes, not only defining org-depend dependencies.

Ha, sorry, I'll actually look at org-depend...

...okay, so it looks like the :TRIGGER: property can contain several
different types of values. But from your message you seem to be talking
about this kind:

some-other-headings-id-df83454(NEXT)

So the code you'd want would be (I actually tested it this time):

(defun my-trigger-property-prompt (&rest args)
  (when (derived-mode-p 'org-mode)
    (let ((id (org-id-get-with-outline-path-completion))
	  (kw (org-completing-read "Keyword: " org-todo-keywords-1 nil nil)))
      (format "%s(%s)" id kw))))

(push '("TRIGGER" . my-trigger-property-prompt)
      org-property-set-functions-alist)

I switched from `org-id-get-with-outline-drilling', as that raised an
error about `org-goto-map' being an undefined variable (lexical scoping
issue?). Also, this only does the one kind of TRIGGER format. Also it is
limited to completing on the TODO keywords defined in the current file,
but will accept others.

In short, it's got lots of limitations, but please do eval the above and
see if it works, then we can go from there.

Eric

  reply	other threads:[~2016-12-20 21:21 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-25 12:43 org-depend: dependencies between TODO entries in different files Karl Voit
2016-08-25 14:44 ` Nicolas Goaziou
2016-08-25 15:11   ` Karl Voit
2016-12-08  6:44     ` Carsten Dominik
2016-12-08 10:16       ` Jorge Morais Neto
2016-12-08 11:11         ` Samuel Loury
2016-12-12 10:21         ` Jorge Morais Neto
2016-12-08 14:37       ` Nicolas Goaziou
2016-12-11 22:19       ` Christophe Schockaert
2016-12-12 11:57         ` Karl Voit
2016-12-12 13:57           ` Carsten Dominik
2016-12-12 15:17             ` Karl Voit
2016-12-12 22:23               ` Christophe Schockaert
2016-12-18 12:12               ` org-depend improvements: ID picker Karl Voit
2016-12-18 17:49                 ` Eric Abrahamsen
2016-12-20 20:01                   ` a general " Karl Voit
2016-12-20 21:21                     ` Eric Abrahamsen [this message]
2016-12-18 12:14               ` Automatically Generating IDs From Title and Date Karl Voit
2016-12-18 19:36                 ` Samuel Wales
2016-12-20 19:57                   ` Properties ID vs. CUSTOM_ID (was: Automatically Generating IDs From Title and Date) Karl Voit
2016-12-22 10:03                     ` Karl Voit
2016-12-22 14:29                       ` John Kitchin
2016-12-22 15:30                         ` Properties ID vs. CUSTOM_ID Karl Voit
2016-12-22 15:40                           ` John Kitchin
2016-12-22 19:23                             ` Christophe Schockaert
2016-12-22 15:54                           ` Eric Abrahamsen
2016-12-22 19:45                             ` Christophe Schockaert
2016-12-22 21:02                               ` Eric Abrahamsen
2016-12-22 21:31                                 ` Carsten Dominik
2016-12-22 21:39                                   ` Carsten Dominik
2016-12-22 21:40                                   ` Eric Abrahamsen
2016-12-22 22:19                                     ` Christophe Schockaert
2016-12-22 17:10                           ` Samuel Wales
2016-12-22 17:13                             ` Samuel Wales
2016-12-18 12:17               ` org-depend improvements: TRIGGER in Combination With Set SCHEDULED Karl Voit
2016-12-18 12:18               ` org-depend improvements: Canceled Tasks Do Cancel Their Dependencies as Well Karl Voit
2016-12-12 19:25             ` org-depend: dependencies between TODO entries in different files Samuel Wales
2016-12-12 21:13               ` Karl Voit
2016-12-18 19:27                 ` Samuel Wales

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87eg12pa9s.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).