Perfect :D thx so much, as always really appreciate it! z On Sun, Aug 2, 2015 at 9:31 PM, John Kitchin wrote: > You are, that code modifies the helm-org-agenda-files-headings function by > adding a new action to it. So, try: > > M-x helm-org-agenda-files-headings > > select a heading, press tab, and you should see a 4th, new action to > insert an org-id link. > > John > > ----------------------------------- > 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 > > > On Sun, Aug 2, 2015 at 2:20 PM, Xebar Saram wrote: > >> Thx john >> >> i evaled the code yet i cant see it under M-x, am i missing something? >> >> best >> >> Z >> >> On Sat, Aug 1, 2015 at 10:03 PM, John Kitchin >> wrote: >> >>> usually it is pretty easy to add new functions in helm, but it is less >>> easy in this case because the source is dynamically generated from a >>> function. So, in this case I think we have to just redefine the function >>> that generates the source. here is an example that I think makes an id >>> link as a new action. >>> >>> #+BEGIN_SRC emacs-lisp >>> (defun helm-org-insert-id-link-to-heading-at-marker (marker) >>> (with-current-buffer (marker-buffer marker) >>> (let ((file-name (buffer-file-name)) >>> (id (save-excursion (goto-char (marker-position marker)) >>> (org-id-get-create) >>> (org-id-store-link)))) >>> >>> (with-helm-current-buffer >>> (org-insert-link >>> file-name id))))) >>> >>> >>> (cl-defun helm-source-org-headings-for-files (filenames >>> &optional (min-depth 1) >>> (max-depth 8)) >>> (helm-build-sync-source "Org Headings" >>> :candidates (helm-org-get-candidates filenames min-depth max-depth) >>> :action '(("Go to line" . helm-org-goto-marker) >>> ("Refile to this heading" . helm-org-heading-refile) >>> ("Insert link to this heading" >>> . helm-org-insert-link-to-heading-at-marker) >>> ("Insert id link to this heading" . >>> helm-org-insert-id-link-to-heading-at-marker)))) >>> >>> #+END_SRC >>> Xebar Saram writes: >>> >>> > 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= >>> >>> "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 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öll < >>> bmutbuerger@gmail.com> >>> >>> > 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öll >>> >>> >> >>> >>> >> >>> >>> >> 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 < >>> sk8ingdom@gmail.com >>> >>> > >>> >>> >>> 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 in >>> >>> 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 >>> >>> >>> >> >>> >> >>> >>> -- >>> 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 >>> >> >> >