Hello, Anders Waldenborg <and...@0x63.nu> writes:
> If an org buffer is narrowed, and one tries to do org-open-at-point on > a link that points to outside of the restriction it asks: "No match - > create this as a new heading?". When answering no the buffer is > widened and the reseach is done, and if the link still can't be > resolved the question is asked again. > > For nonexistant links this happens even if the buffer isn't narrowed - > one needs to answer "n" twice. > > I also attached an alternate patch which (IMHO) simplifies the > implementation by hiding the hard work in a macro, and as a bonus it > only calls org-link-search once. But it is much more intrusive. Yes, imposing widening to the user is intrusive. Moreover, I think you cannot avoid to call org-link-search twice (once it has failed): the point is to do a local search and then a global one. Though, the macro idea is interesting, as I can see at least one other place where it might be useful. So, what about changing the macro to: 1. If current buffer is narrowed, execute body with the current restriction. If it fails (silently), re-execute body with a widened buffer. Restore default narrowing. 2. If the buffer has no narrowing in effect, just execute body. Also: 1. Doc-strings must refer to the arguments. 2. Don't forget to add: (def-edebug-spec macro-name (arguments)) just after it. 3. You need to add a proper ChangeLog message in your commit. Thank you for looking at this. Regards, -- Nicolas Goaziou