Hi Kyle, > As a projectile user, I'm tempted to suggest that, instead of the adding > the `project' value, org-insert-link could learn to call > org-link-file-path-type if it is a function and, if that returns > non-nil, do the prefix check. Then projectile users could set it to > projectile-project-root. It seems project.el doesn't have a similar > function that could be called without any arguments, but I guess we > could add a simple ol- wrapper. I'm not sure that's a good idea, > though. I like the idea of letting org-link-file-path-type be a function. However, it struck me that it might be too limiting to just have the function return the project root. There's a lot more potential for customization here -- for example, a user might want to combine the noabbrev option with the adaptive option. If we could instead pass a function that takes the filename as an argument and returns the path to insert, that would allow for greater flexibility. Other benefits are that the implementation is much simpler, and subjectively I think it's more intuitive to explain the meaning of this option (as opposed to an option where the user passes a function that returns the project root). The downside of this is that the user has to do a bit more work and write some elisp to take advantage of the option. I've attached an updated patch in this direction. What do you think? I think the simplicity and flexibility outweighs the downside, but I'm not sure. > The :package-version keyword should be added to signal the change in > value. Thanks for the tip, I've added this. > Functionally I think your current patch would only support Emacs's > unreleased master, unless the user installed a new project.el via ELPA. > More on that below. Good catch. I didn't realize I was using project.el from ELPA but it turns out I was.