Przeglądaj źródła

Small fix to `org-store-link'

* lisp/org.el (org-store-link): Only call `org-with-limited-levels' in
  Org buffers.
Nicolas Goaziou 8 lat temu
rodzic
commit
910755208d
1 zmienionych plików z 158 dodań i 158 usunięć
  1. 158 158
      lisp/org.el

+ 158 - 158
lisp/org.el

@@ -9894,118 +9894,118 @@ active region."
 	      (call-interactively 'org-store-link))
 	    (move-beginning-of-line 2)
 	    (set-mark (point)))))
-    (org-with-limited-levels
-     (setq org-store-link-plist nil)
-     (let (link cpltxt desc description search
-		txt custom-id agenda-link sfuns sfunsn)
-       (cond
+    (setq org-store-link-plist nil)
+    (let (link cpltxt desc description search
+	       txt custom-id agenda-link sfuns sfunsn)
+      (cond
 
-	;; Store a link using an external link type
-	((and (not (equal arg '(16)))
-	      (setq sfuns
-		    (delq
-		     nil (mapcar (lambda (f)
-				   (let (fs) (if (funcall f) (push f fs))))
-				 (org-store-link-functions)))
-		    sfunsn (mapcar (lambda (fu) (symbol-name (car fu))) sfuns))
-	      (or (and (cdr sfuns)
-		       (funcall (intern
-				 (completing-read
-				  "Which function for creating the link? "
-				  sfunsn nil t (car sfunsn)))))
-		  (funcall (caar sfuns)))
-	      (setq link (plist-get org-store-link-plist :link)
-		    desc (or (plist-get org-store-link-plist
-					:description)
-			     link))))
-
-	;; Store a link from a source code buffer.
-	((org-src-edit-buffer-p)
-	 (cond
-	  ((save-excursion
-	     (beginning-of-line)
-	     (looking-at (concat (format org-coderef-label-format "\\(.*?\\)")
-				 "[ \t]*$")))
-	   (setq link (format "(%s)" (match-string-no-properties 1))))
-	  ((called-interactively-p 'any)
-	   (let (label)
-	     (while (or (not label)
-			(org-with-wide-buffer
-			 (goto-char (point-min))
-			 (re-search-forward
-			  (regexp-quote (format org-coderef-label-format label))
-			  nil t)))
-	       (when label (message "Label exists already") (sit-for 2))
-	       (setq label (read-string "Code line label: " label)))
-	     (end-of-line)
-	     (setq link (format org-coderef-label-format label))
-	     (let ((gc (- 79 (length link))))
-	       (if (< (current-column) gc) (org-move-to-column gc t)
-		 (insert " ")))
-	     (insert link)
-	     (setq link (concat "(" label ")") desc nil)))
-	  (t (setq link nil))))
-
-	;; We are in the agenda, link to referenced location
-	((equal (bound-and-true-p org-agenda-buffer-name) (buffer-name))
-	 (let ((m (or (get-text-property (point) 'org-hd-marker)
-		      (get-text-property (point) 'org-marker))))
-	   (when m
-	     (org-with-point-at m
-	       (setq agenda-link
-		     (if (called-interactively-p 'any)
-			 (call-interactively 'org-store-link)
-		       (org-store-link nil)))))))
-
-	((eq major-mode 'calendar-mode)
-	 (let ((cd (calendar-cursor-to-date)))
-	   (setq link
-		 (format-time-string
-		  (car org-time-stamp-formats)
-		  (apply 'encode-time
-			 (list 0 0 0 (nth 1 cd) (nth 0 cd) (nth 2 cd)
-			       nil nil nil))))
-	   (org-store-link-props :type "calendar" :date cd)))
-
-	((eq major-mode 'help-mode)
-	 (setq link (concat "help:" (save-excursion
-				      (goto-char (point-min))
-				      (looking-at "^[^ ]+")
-				      (match-string 0))))
-	 (org-store-link-props :type "help"))
-
-	((eq major-mode 'w3-mode)
-	 (setq cpltxt (if (and (buffer-name)
-			       (not (string-match "Untitled" (buffer-name))))
-			  (buffer-name)
-			(url-view-url t))
-	       link (url-view-url t))
-	 (org-store-link-props :type "w3" :url (url-view-url t)))
-
-	((eq major-mode 'image-mode)
-	 (setq cpltxt (concat "file:"
-			      (abbreviate-file-name buffer-file-name))
-	       link cpltxt)
-	 (org-store-link-props :type "image" :file buffer-file-name))
-
-	;; In dired, store a link to the file of the current line
-	((derived-mode-p 'dired-mode)
-	 (let ((file (dired-get-filename nil t)))
-	   (setq file (if file
-			  (abbreviate-file-name
-			   (expand-file-name (dired-get-filename nil t)))
-			;; otherwise, no file so use current directory.
-			default-directory))
-	   (setq cpltxt (concat "file:" file)
-		 link cpltxt)))
-
-	((setq search (run-hook-with-args-until-success
-		       'org-create-file-search-functions))
-	 (setq link (concat "file:" (abbreviate-file-name buffer-file-name)
-			    "::" search))
-	 (setq cpltxt (or description link)))
-
-	((and (buffer-file-name (buffer-base-buffer)) (derived-mode-p 'org-mode))
+       ;; Store a link using an external link type
+       ((and (not (equal arg '(16)))
+	     (setq sfuns
+		   (delq
+		    nil (mapcar (lambda (f)
+				  (let (fs) (if (funcall f) (push f fs))))
+				(org-store-link-functions)))
+		   sfunsn (mapcar (lambda (fu) (symbol-name (car fu))) sfuns))
+	     (or (and (cdr sfuns)
+		      (funcall (intern
+				(completing-read
+				 "Which function for creating the link? "
+				 sfunsn nil t (car sfunsn)))))
+		 (funcall (caar sfuns)))
+	     (setq link (plist-get org-store-link-plist :link)
+		   desc (or (plist-get org-store-link-plist
+				       :description)
+			    link))))
+
+       ;; Store a link from a source code buffer.
+       ((org-src-edit-buffer-p)
+	(cond
+	 ((save-excursion
+	    (beginning-of-line)
+	    (looking-at (concat (format org-coderef-label-format "\\(.*?\\)")
+				"[ \t]*$")))
+	  (setq link (format "(%s)" (match-string-no-properties 1))))
+	 ((called-interactively-p 'any)
+	  (let (label)
+	    (while (or (not label)
+		       (org-with-wide-buffer
+			(goto-char (point-min))
+			(re-search-forward
+			 (regexp-quote (format org-coderef-label-format label))
+			 nil t)))
+	      (when label (message "Label exists already") (sit-for 2))
+	      (setq label (read-string "Code line label: " label)))
+	    (end-of-line)
+	    (setq link (format org-coderef-label-format label))
+	    (let ((gc (- 79 (length link))))
+	      (if (< (current-column) gc) (org-move-to-column gc t)
+		(insert " ")))
+	    (insert link)
+	    (setq link (concat "(" label ")") desc nil)))
+	 (t (setq link nil))))
+
+       ;; We are in the agenda, link to referenced location
+       ((equal (bound-and-true-p org-agenda-buffer-name) (buffer-name))
+	(let ((m (or (get-text-property (point) 'org-hd-marker)
+		     (get-text-property (point) 'org-marker))))
+	  (when m
+	    (org-with-point-at m
+	      (setq agenda-link
+		    (if (called-interactively-p 'any)
+			(call-interactively 'org-store-link)
+		      (org-store-link nil)))))))
+
+       ((eq major-mode 'calendar-mode)
+	(let ((cd (calendar-cursor-to-date)))
+	  (setq link
+		(format-time-string
+		 (car org-time-stamp-formats)
+		 (apply 'encode-time
+			(list 0 0 0 (nth 1 cd) (nth 0 cd) (nth 2 cd)
+			      nil nil nil))))
+	  (org-store-link-props :type "calendar" :date cd)))
+
+       ((eq major-mode 'help-mode)
+	(setq link (concat "help:" (save-excursion
+				     (goto-char (point-min))
+				     (looking-at "^[^ ]+")
+				     (match-string 0))))
+	(org-store-link-props :type "help"))
+
+       ((eq major-mode 'w3-mode)
+	(setq cpltxt (if (and (buffer-name)
+			      (not (string-match "Untitled" (buffer-name))))
+			 (buffer-name)
+		       (url-view-url t))
+	      link (url-view-url t))
+	(org-store-link-props :type "w3" :url (url-view-url t)))
+
+       ((eq major-mode 'image-mode)
+	(setq cpltxt (concat "file:"
+			     (abbreviate-file-name buffer-file-name))
+	      link cpltxt)
+	(org-store-link-props :type "image" :file buffer-file-name))
+
+       ;; In dired, store a link to the file of the current line
+       ((derived-mode-p 'dired-mode)
+	(let ((file (dired-get-filename nil t)))
+	  (setq file (if file
+			 (abbreviate-file-name
+			  (expand-file-name (dired-get-filename nil t)))
+		       ;; otherwise, no file so use current directory.
+		       default-directory))
+	  (setq cpltxt (concat "file:" file)
+		link cpltxt)))
+
+       ((setq search (run-hook-with-args-until-success
+		      'org-create-file-search-functions))
+	(setq link (concat "file:" (abbreviate-file-name buffer-file-name)
+			   "::" search))
+	(setq cpltxt (or description link)))
+
+       ((and (buffer-file-name (buffer-base-buffer)) (derived-mode-p 'org-mode))
+	(org-with-limited-levels
 	 (setq custom-id (org-entry-get nil "CUSTOM_ID"))
 	 (cond
 	  ;; Store a link using the target at point
@@ -10060,53 +10060,53 @@ active region."
 				"NONE")))))
 	   (when (string-match "::\\'" cpltxt)
 	     (setq cpltxt (substring cpltxt 0 -2)))
-	   (setq link cpltxt))))
-
-	((buffer-file-name (buffer-base-buffer))
-	 ;; Just link to this file here.
-	 (setq cpltxt (concat "file:"
-			      (abbreviate-file-name
-			       (buffer-file-name (buffer-base-buffer)))))
-	 ;; Add a context string.
-	 (when (org-xor org-context-in-file-links arg)
-	   (setq txt (if (org-region-active-p)
-			 (buffer-substring (region-beginning) (region-end))
-		       (buffer-substring (point-at-bol) (point-at-eol))))
-	   ;; Only use search option if there is some text.
-	   (when (string-match "\\S-" txt)
-	     (setq cpltxt
-		   (concat cpltxt "::" (org-make-org-heading-search-string txt))
-		   desc "NONE")))
-	 (setq link cpltxt))
-
-	((called-interactively-p 'interactive)
-	 (user-error "No method for storing a link from this buffer"))
-
-	(t (setq link nil)))
-
-       ;; We're done setting link and desc, clean up
-       (when (consp link) (setq cpltxt (car link) link (cdr link)))
-       (setq link (or link cpltxt)
-	     desc (or desc cpltxt))
-       (cond ((not desc))
-	     ((equal desc "NONE") (setq desc nil))
-	     (t (setq desc
-		      (replace-regexp-in-string
-		       org-bracket-link-analytic-regexp
-		       (lambda (m) (or (match-string 5 m) (match-string 3 m)))
-		       desc))))
-       ;; Return the link
-       (if (not (and (or (called-interactively-p 'any)
-			 executing-kbd-macro)
-                     link))
-	   (or agenda-link (and link (org-make-link-string link desc)))
-	 (push (list link desc) org-stored-links)
-	 (message "Stored: %s" (or desc link))
-	 (when custom-id
-	   (setq link (concat "file:" (abbreviate-file-name
-				       (buffer-file-name)) "::#" custom-id))
-	   (push (list link desc) org-stored-links))
-	 (car org-stored-links))))))
+	   (setq link cpltxt)))))
+
+       ((buffer-file-name (buffer-base-buffer))
+	;; Just link to this file here.
+	(setq cpltxt (concat "file:"
+			     (abbreviate-file-name
+			      (buffer-file-name (buffer-base-buffer)))))
+	;; Add a context string.
+	(when (org-xor org-context-in-file-links arg)
+	  (setq txt (if (org-region-active-p)
+			(buffer-substring (region-beginning) (region-end))
+		      (buffer-substring (point-at-bol) (point-at-eol))))
+	  ;; Only use search option if there is some text.
+	  (when (string-match "\\S-" txt)
+	    (setq cpltxt
+		  (concat cpltxt "::" (org-make-org-heading-search-string txt))
+		  desc "NONE")))
+	(setq link cpltxt))
+
+       ((called-interactively-p 'interactive)
+	(user-error "No method for storing a link from this buffer"))
+
+       (t (setq link nil)))
+
+      ;; We're done setting link and desc, clean up
+      (when (consp link) (setq cpltxt (car link) link (cdr link)))
+      (setq link (or link cpltxt)
+	    desc (or desc cpltxt))
+      (cond ((not desc))
+	    ((equal desc "NONE") (setq desc nil))
+	    (t (setq desc
+		     (replace-regexp-in-string
+		      org-bracket-link-analytic-regexp
+		      (lambda (m) (or (match-string 5 m) (match-string 3 m)))
+		      desc))))
+      ;; Return the link
+      (if (not (and (or (called-interactively-p 'any)
+			executing-kbd-macro)
+		    link))
+	  (or agenda-link (and link (org-make-link-string link desc)))
+	(push (list link desc) org-stored-links)
+	(message "Stored: %s" (or desc link))
+	(when custom-id
+	  (setq link (concat "file:" (abbreviate-file-name
+				      (buffer-file-name)) "::#" custom-id))
+	  (push (list link desc) org-stored-links))
+	(car org-stored-links)))))
 
 (defun org-store-link-props (&rest plist)
   "Store link properties, extract names, addresses and dates."