From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xebar Saram Subject: Re: Insert org-id Link at Point via Outline Path Completion Date: Sat, 1 Aug 2015 20:36:32 +0300 Message-ID: References: <20150801090706.GA3296@gmail.com> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b15a7459f1703051c436030 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47267) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZLai4-0006I2-8t for emacs-orgmode@gnu.org; Sat, 01 Aug 2015 13:36:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZLai2-0006V2-BV for emacs-orgmode@gnu.org; Sat, 01 Aug 2015 13:36:36 -0400 Received: from mail-pa0-x234.google.com ([2607:f8b0:400e:c03::234]:32852) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZLai1-0006Um-W5 for emacs-orgmode@gnu.org; Sat, 01 Aug 2015 13:36:34 -0400 Received: by padck2 with SMTP id ck2so59362693pad.0 for ; Sat, 01 Aug 2015 10:36:33 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: John Kitchin Cc: org mode , Dominic Surano --047d7b15a7459f1703051c436030 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable John, this is superb! thx so much it answers all my needs, what a great find :) kind regards Z On Sat, Aug 1, 2015 at 7:33 PM, John Kitchin wrote: > (helm-org-agenda-files-headings) seems to do this already for all > headlines in your agenda files. the third action is to insert a link to > the selected headline. > > You can use let to temporarily define the org-agenda-files list to what > you want, and just use the (helm-org-agenda-files-headings) command for > non-agenda files. > > e.g. > > #+BEGIN_SRC emacs-lisp > (defun insert-heading-link (dir) > "select a headline from org-files in dir and insert a link to it." > (interactive (list (read-directory-name "Directory: "))) > (let ((org-agenda-files (f-entries > dir > (lambda (f) > (string=3D > "org" > (file-name-extension f))) > t))) > (helm-org-agenda-files-headings))) > #+END_SRC > > gives me a helm buffer to select headlines from org-files in the > directory I select and when I press f3 (for the third > action), it inserts a link to the selected headline. It does the file > finding recursively, so you might not want to run this on / ;) > > You could bind it to a key for easy use. > > Xebar Saram writes: > > > Thx so much Bernhard > > > > this looks really promising. i never had luck with either company or > > auto-complete t o get it to work reliably (it often stops working even > > though its still in the mod bar). > > anyway i tried it and added this to my config (after cloning from git): > > > > (add-to-list 'load-path "/home/zeltak/.emacs.g/company-org-headings") > > (add-hook 'org-mode-hook > > (lambda () (set (make-local-variable 'company-backends) > > '((company-org-headings))))) > > > > i dont see it completes on org heading, is there any keys i need to pre= ss > > or anything else in need to config? does this work only when you try to > > insert a link? > > > > best and thx so much, this look awesome > > > > P.S have you considered Helm for this as well? > > > > best > > > > Z > > > > > > > > On Sat, Aug 1, 2015 at 12:07 PM, Bernhard Pr=C3=B6ll > > wrote: > > > >> Hi Saram, > >> > >> I've been in the same boat and decided to write a company-backend for > >> this purpose. So if you're already using company-mode, this may be wor= th > >> looking into: > >> > >> https://github.com/mutbuerger/company-org-headings > >> > >> Keep in mind that I'm in the process of learning Elisp and > >> there has been little to no testing done on the package. Furthermore i= t > >> uses org-store-link instead of org-id-store-link. > >> > >> Regards, > >> Bernhard Pr=C3=B6ll > >> > >> > >> On Fri, 31. Jul 09:43, Xebar Saram wrote: > >> > >>> i also have a similar workflow and would love to hear Dominic if you > >>> found a > >>> solution for this or if anyone on the list has other suggestions? > >>> > >>> best > >>> > >>> Z > >>> > >>> On Tue, May 12, 2015 at 10:57 PM, Dominic Surano > >>> wrote: > >>> > >>> Hello, > >>> > >>> I use org-mode a lot like a wiki so links to other org-mode headin= gs > >>> are > >>> very common. Currently, I navigate to the heading or pull it up in > an > >>> agenda view, store the link with C-l, going back to where I want t= o > >>> insert the link, then insert the link with C-c C-l RET. This is a > bit > >>> time consuming. > >>> > >>> Instead, I would prefer to map a key that allows me to insert a > link at > >>> the current point using tab completion similar to org-refile (C-c > C-w). > >>> Looking through org-id.el, it seems like > org-id-get-with-outline-path > >>> completion was designed for this purpose. I tried: > >>> > >>> (global-set-key "\C-ci" (lambda () (interactive) (org-id-get-with > >>> outline-path-completion))) > >>> > >>> but it didn't work as intended. Anyone have any ideas? > >>> > >>> Thanks! > >>> -D > >>> > >>> For reference, I have the following set in my configuration: > >>> > >>> ;; Use global IDs > >>> (require 'org-id) > >>> (setq org-id-link-to-org-use-id t) > >>> > >>> ;; Update ID file .org-id-locations on startup > >>> (org-id-update-id-locations) > >>> > >>> ;; Targets include this file and any file contributing to the > agenda - > >>> up to 9 levels deep > >>> (setq org-refile-targets (quote ((nil :maxlevel . 9) > >>> (org-agenda-files :maxlevel . 9))= )) > >>> (setq org-refile-use-outline-path 'file) > >>> (setq org-outline-path-complete-in-steps t) > >>> (setq org-refile-allow-creating-parent-nodes t) > >>> > >>> > >>> > >>> > >>> > > -- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu > --047d7b15a7459f1703051c436030 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
John, this is superb!

thx so much it an= swers all my needs, what a great find :)

kind rega= rds

Z

On Sat, Aug 1, 2015 at 7:33 PM, John Kitchin <jkitchin@andrew.cmu.edu> wrote:
(helm-org-agenda-files-headings) seems to do this already for all headlines in your agenda files. the third action is to insert a link to
the selected headline.

You can use let to temporarily define the org-agenda-files list to what
you want, and just use the (helm-org-agenda-files-headings) command for
non-agenda files.

e.g.

#+BEGIN_SRC emacs-lisp
(defun insert-heading-link (dir)
=C2=A0 "select a headline from org-files in dir and insert a link to i= t."
=C2=A0 (interactive=C2=A0 (list (read-directory-name "Directory: "= ;)))
=C2=A0 (let ((org-agenda-files (f-entries
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0dir
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0(lambda (f)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(string=3D
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "org"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (file-name-extension f)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0t)))
=C2=A0 =C2=A0 (helm-org-agenda-files-headings)))
#+END_SRC

gives me a helm buffer to select headlines from org-files in the
directory I select and when I press f3 (for the third
action), it inserts a link to the selected headline. It does the file
finding recursively, so you might not want to run this on /=C2=A0 ;)

You could bind it to a key for easy use.

Xebar Saram writes:

> Thx so much Bernhard
>
> this looks really promising. i never had luck with either company or > auto-complete t o get it to work reliably (it often stops working even=
> though its still in the mod bar).
> anyway i tried it and added this to my config (after cloning from git)= :
>
> (add-to-list 'load-path "/home/zeltak/.emacs.g/company-org-he= adings")
> (add-hook 'org-mode-hook
>=C2=A0 (lambda () (set (make-local-variable 'company-backends)
>=C2=A0 =C2=A0 =C2=A0'((company-org-headings)))))
>
> i dont see it completes on org heading, is there any keys i need to pr= ess
> or anything else in need to config? does this work only when you try t= o
> insert a link?
>
> best and thx so much, this look awesome
>
> P.S have you considered Helm for this as well?
>
> best
>
> Z
>
>
>
> On Sat, Aug 1, 2015 at 12:07 PM, Bernhard Pr=C3=B6ll <bmutbuerger@gmail.com>
> wrote:
>
>> Hi Saram,
>>
>> I've been in the same boat and decided to write a company-back= end for
>> this purpose. So if you're already using company-mode, this ma= y be worth
>> looking into:
>>
>> https://github.com/mutbuerger/company-org= -headings
>>
>> Keep in mind that I'm in the process of learning Elisp and
>> there has been little to no testing done on the package. Furthermo= re it
>> uses org-store-link instead of org-id-store-link.
>>
>> Regards,
>> Bernhard Pr=C3=B6ll
>>
>>
>> On Fri, 31. Jul 09:43, Xebar Saram wrote:
>>
>>> i also have a similar workflow and would love to hear Dominic = if you
>>> found a
>>> solution for this or if anyone on the list has other suggestio= ns?
>>>
>>> best
>>>
>>> Z
>>>
>>> On Tue, May 12, 2015 at 10:57 PM, Dominic Surano <sk8ingdom@gmail.com>
>>> wrote:
>>>
>>>=C2=A0 =C2=A0 Hello,
>>>
>>>=C2=A0 =C2=A0 I use org-mode a lot like a wiki so links to othe= r org-mode headings
>>> are
>>>=C2=A0 =C2=A0 very common. Currently, I navigate to the heading= or pull it up in an
>>>=C2=A0 =C2=A0 agenda view, store the link with C-l, going back = to where I want to
>>>=C2=A0 =C2=A0 insert the link, then insert the link with C-c C-= l RET. This is a bit
>>>=C2=A0 =C2=A0 time consuming.
>>>
>>>=C2=A0 =C2=A0 Instead, I would prefer to map a key that allows = me to insert a link at
>>>=C2=A0 =C2=A0 the current point using tab completion similar to= org-refile (C-c C-w).
>>>=C2=A0 =C2=A0 Looking through org-id.el, it seems like org-id-g= et-with-outline-path
>>>=C2=A0 =C2=A0 completion was designed for this purpose. I tried= :
>>>
>>>=C2=A0 =C2=A0 (global-set-key "\C-ci" (lambda () (int= eractive) (org-id-get-with
>>>=C2=A0 =C2=A0 outline-path-completion)))
>>>
>>>=C2=A0 =C2=A0 but it didn't work as intended. Anyone have a= ny ideas?
>>>
>>>=C2=A0 =C2=A0 Thanks!
>>>=C2=A0 =C2=A0 -D
>>>
>>>=C2=A0 =C2=A0 For reference, I have the following set in my con= figuration:
>>>
>>>=C2=A0 =C2=A0 ;; Use global IDs
>>>=C2=A0 =C2=A0 (require 'org-id)
>>>=C2=A0 =C2=A0 (setq org-id-link-to-org-use-id t)
>>>
>>>=C2=A0 =C2=A0 ;; Update ID file .org-id-locations on startup >>>=C2=A0 =C2=A0 (org-id-update-id-locations)
>>>
>>>=C2=A0 =C2=A0 ;; Targets include this file and any file contrib= uting to the agenda -
>>>=C2=A0 =C2=A0 up to 9 levels deep
>>>=C2=A0 =C2=A0 (setq org-refile-targets (quote ((nil :maxlevel .= 9)
>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(org-a= genda-files :maxlevel . 9))))
>>>=C2=A0 =C2=A0 (setq org-refile-use-outline-path 'file)
>>>=C2=A0 =C2=A0 (setq org-outline-path-complete-in-steps t)
>>>=C2=A0 =C2=A0 (setq org-refile-allow-creating-parent-nodes t) >>>
>>>
>>>
>>>
>>>

--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu

--047d7b15a7459f1703051c436030--