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:49:18 +0300 Message-ID: References: <20150801090706.GA3296@gmail.com> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b15a74548ad69051c438e15 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZLauQ-0000vU-N3 for emacs-orgmode@gnu.org; Sat, 01 Aug 2015 13:49:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZLauO-0002yE-Fl for emacs-orgmode@gnu.org; Sat, 01 Aug 2015 13:49:22 -0400 Received: from mail-pa0-x22d.google.com ([2607:f8b0:400e:c03::22d]:34565) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZLauN-0002y2-VJ for emacs-orgmode@gnu.org; Sat, 01 Aug 2015 13:49:20 -0400 Received: by pacan13 with SMTP id an13so60473104pac.1 for ; Sat, 01 Aug 2015 10:49:19 -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 --047d7b15a74548ad69051c438e15 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi again so excited over this had to ask 2 more questions ;-) 1.can that function include/link to org-id (so that it can keep the links even if the headers move around in/out of the files) 2.i saw there are 3 options to that helm function. can this be customized to add more commands (can really think of which ones know but could see potential in future :)) thx so much John as always you rock ;-) Z On Sat, Aug 1, 2015 at 8:36 PM, Xebar Saram wrote: > 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 >> press >> > 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 >> > 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 >> 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. Furthermore = 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 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 >> headings >> >>> are >> >>> very common. Currently, I navigate to the heading or pull it up i= n >> an >> >>> agenda view, store the link with C-l, going back to where I want = to >> >>> 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 >> > > --047d7b15a74548ad69051c438e15 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi again

so excited over this had to as= k 2 more questions ;-)

1.can that function include= /link to org-id =C2=A0(so that it can keep the links even if the headers mo= ve around in/out of the files)
2.i saw there are 3 options to tha= t helm function. can this be customized to add more commands (can really th= ink of which ones know but could see potential in future :))

=
thx so muc= h John as always you rock ;-)

Z

On Sat, Aug 1, 2015 at 8= :36 PM, Xebar Saram <zeltakc@gmail.com> wrote:
John, this is superb!

<= div>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 <jkitchin@= andrew.cmu.edu> wrote:
(hel= m-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&g= t;
>>> 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-2= 68-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu


--047d7b15a74548ad69051c438e15--