From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: PATCH: org-open-at-point curation Date: Sun, 30 Jan 2011 16:13:43 +0000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from [140.186.70.92] (port=60037 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PjZuS-0004iY-Db for emacs-orgmode@gnu.org; Sun, 30 Jan 2011 11:13:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PjZuR-00041x-8O for emacs-orgmode@gnu.org; Sun, 30 Jan 2011 11:13:52 -0500 Received: from mail-ww0-f49.google.com ([74.125.82.49]:54820) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PjZuR-00041q-2z for emacs-orgmode@gnu.org; Sun, 30 Jan 2011 11:13:51 -0500 Received: by wwb17 with SMTP id 17so5156725wwb.30 for ; Sun, 30 Jan 2011 08:13:49 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs org-mode mailing list While fiddling with the way babel uses org-open-at-point, I noticed a coupe of things: 1. There's a bug when using the prefix arg with a text search link. E.g. try C-u C-c C-o on [[foo]] 2. The prefix arg is used in three different ways (two of them undocumented), not all of which correspond to the variable name used for the prefix arg. I'm leaving the extra uses undocumented, but have renamed the prefix arg with a more generic name. Dan ~~~~~~~~~~~~~ Some curation of `org-open-at-point' * lisp/org.el (org-open-at-point): Fix bug when using prefix arg to construct `org-link-search' call. Rename prefix arg with a more generic name, to reflect its diverse uses in this function. #+begin_src diff diff --git a/lisp/org.el b/lisp/org.el index a49d3e2..186af9d 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9084,12 +9084,12 @@ Functions in this hook must return t if they identify and follow a link at point. If they don't find anything interesting at point, they must return nil.") -(defun org-open-at-point (&optional in-emacs reference-buffer) +(defun org-open-at-point (&optional arg reference-buffer) "Open link at or after point. If there is no link at point, this function will search forward up to the end of the current line. Normally, files will be opened by an appropriate application. If the -optional argument IN-EMACS is non-nil, Emacs will visit the file. +optional prefix argument ARG is non-nil, Emacs will visit the file. With a double prefix argument, try to open outside of Emacs, in the application the system uses for this file type." (interactive "P") @@ -9107,7 +9107,7 @@ application the system uses for this file type." org-angle-link-re "\\|" "[ \t]:[^ \t\n]+:[ \t]*$"))) (not (get-text-property (point) 'org-linked-text))) - (or (org-offer-links-in-entry in-emacs) + (or (org-offer-links-in-entry arg) (progn (require 'org-attach) (org-attach-reveal 'if-exists)))) ((run-hook-with-args-until-success 'org-open-at-point-functions)) ((org-at-timestamp-p t) (org-follow-timestamp-link)) @@ -9212,7 +9212,7 @@ application the system uses for this file type." (browse-url (concat type ":" path))) ((string= type "tags") - (org-tags-view in-emacs path)) + (org-tags-view arg path)) ((string= type "tree-match") (org-occur (concat "\\[" (regexp-quote path) "\\]"))) @@ -9226,7 +9226,7 @@ application the system uses for this file type." path (substring path 0 (match-beginning 0))))) (if (string-match "[*?{]" (file-name-nondirectory path)) (dired path) - (org-open-file path in-emacs line search))) + (org-open-file path arg line search))) ((string= type "shell") (let ((cmd path)) @@ -9258,14 +9258,14 @@ application the system uses for this file type." 'org-open-link-functions path))) ((string= type "thisfile") - (if in-emacs + (if arg (switch-to-buffer-other-window (org-get-buffer-for-internal-link (current-buffer))) (org-mark-ring-push)) (let ((cmd `(org-link-search ,path - ,(cond ((equal in-emacs '(4)) 'occur) - ((equal in-emacs '(16)) 'org-occur) + ,(cond ((equal arg '(4)) ''occur) + ((equal arg '(16)) ''org-occur) (t nil)) ,pos))) (condition-case nil (eval cmd) #+end_src