summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2020-04-20 22:10:31 -0400
committerKyle Meyer <kyle@kyleam.com>2020-04-20 22:10:31 -0400
commitf874b695609952fc732534b0816253811a46b166 (patch)
treeb3b612f4d79acaaf2eb240ce2f4eb85ae7f2691b
parentbab2995c71e6291cad0dd0c84aca4949aaf276e5 (diff)
downloadorg-mode-f874b695609952fc732534b0816253811a46b166.tar.gz
org-link-edit.el: Sync with upstream
Update to version 1.2.1 (b5493e2).
-rw-r--r--contrib/lisp/org-link-edit.el56
1 files changed, 30 insertions, 26 deletions
diff --git a/contrib/lisp/org-link-edit.el b/contrib/lisp/org-link-edit.el
index b046a77..a27a13d 100644
--- a/contrib/lisp/org-link-edit.el
+++ b/contrib/lisp/org-link-edit.el
@@ -1,12 +1,12 @@
;;; org-link-edit.el --- Slurp and barf with Org links -*- lexical-binding: t; -*-
-;; Copyright (C) 2015-2017 Kyle Meyer <kyle@kyleam.com>
+;; Copyright (C) 2015-2020 Kyle Meyer <kyle@kyleam.com>
;; Author: Kyle Meyer <kyle@kyleam.com>
-;; URL: https://gitlab.com/kyleam/org-link-edit
+;; URL: https://git.kyleam.com/org-link-edit/about
;; Keywords: convenience
-;; Version: 1.1.1
-;; Package-Requires: ((cl-lib "0.5") (org "8.2.10"))
+;; Version: 1.2.1
+;; Package-Requires: ((cl-lib "0.5") (org "9.3"))
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
@@ -67,12 +67,7 @@
(require 'cl-lib)
(defun org-link-edit--on-link-p (&optional element)
- (let ((el (or element (org-element-context))))
- ;; Don't use `org-element-lineage' because it isn't available
- ;; until Org version 8.3.
- (while (and el (not (memq (car el) '(link))))
- (setq el (org-element-property :parent el)))
- (eq (car el) 'link)))
+ (org-element-lineage (or element (org-element-context)) '(link) t))
(defun org-link-edit--link-data ()
"Return list with information about the link at point.
@@ -90,13 +85,13 @@ The list includes
;; Use match-{beginning,end} because match-end is consistently
;; positioned after ]], while the :end property is positioned
;; at the next word on the line, if one is present.
- ((looking-at org-bracket-link-regexp)
+ ((looking-at org-link-bracket-re)
(list (match-beginning 0)
(match-end 0)
(save-match-data
(org-link-unescape (match-string-no-properties 1)))
(or (match-string-no-properties 2) "")))
- ((looking-at org-plain-link-re)
+ ((looking-at org-link-plain-re)
(list (match-beginning 0)
(match-end 0)
(match-string-no-properties 0)
@@ -170,7 +165,7 @@ If N is negative, slurp leading blobs instead of trailing blobs."
(setq desc (concat desc slurped)
end (+ end (length slurped)))
(delete-region beg (point))
- (insert (org-make-link-string link desc))
+ (insert (org-link-make-string link desc))
(goto-char beg)
slurped)))))
@@ -212,7 +207,7 @@ If N is negative, slurp trailing blobs instead of leading blobs."
(setq desc (concat slurped desc)
beg (- beg (length slurped)))
(delete-region (point) end)
- (insert (org-make-link-string link desc))
+ (insert (org-link-make-string link desc))
(goto-char beg)
slurped)))))
@@ -282,7 +277,7 @@ If N is negative, barf leading blobs instead of trailing blobs."
(unless new-desc (user-error "Not enough blobs in description"))
(goto-char beg)
(delete-region beg end)
- (insert (org-make-link-string link new-desc))
+ (insert (org-link-make-string link new-desc))
(when (string= new-desc "")
(setq barfed (concat " " barfed)))
(insert barfed)
@@ -321,7 +316,7 @@ If N is negative, barf trailing blobs instead of leading blobs."
(unless new-desc (user-error "Not enough blobs in description"))
(goto-char beg)
(delete-region beg end)
- (insert (org-make-link-string link new-desc))
+ (insert (org-link-make-string link new-desc))
(when (string= new-desc "")
(setq barfed (concat barfed " ")))
(goto-char beg)
@@ -331,12 +326,12 @@ If N is negative, barf trailing blobs instead of leading blobs."
(defun org-link-edit--next-link-data (&optional previous)
(save-excursion
(if (funcall (if previous #'re-search-backward #'re-search-forward)
- org-any-link-re nil t)
+ org-link-any-re nil t)
(org-link-edit--link-data)
(user-error "No %s link found" (if previous "previous" "next")))))
;;;###autoload
-(defun org-link-edit-transport-next-link (&optional previous beg end)
+(defun org-link-edit-transport-next-link (&optional previous beg end overwrite)
"Move the next link to point.
If the region is active, use the selected text as the link's
@@ -346,11 +341,16 @@ With prefix argument PREVIOUS, move the previous link instead of
the next link.
Non-interactively, use the text between BEG and END as the
-description, moving the next (or previous) link relative BEG and
-END."
- (interactive (cons current-prefix-arg
- (and (use-region-p)
- (list (region-beginning) (region-end)))))
+description, moving the next (or previous) link relative to BEG
+and END. By default, refuse to overwrite an existing
+description. If OVERWRITE is `ask', prompt for confirmation
+before overwriting; for any other non-nil value, overwrite
+without asking."
+ (interactive `(,current-prefix-arg
+ ,@(if (use-region-p)
+ (list (region-beginning) (region-end))
+ (list nil nil))
+ ask))
(let ((pt (point))
(desc-bounds (cond
((and beg end)
@@ -374,10 +374,14 @@ END."
(goto-char (or (car desc-bounds) pt))
(cl-multiple-value-bind (link-beg link-end link orig-desc)
(org-link-edit--next-link-data previous)
- (unless (or (not desc-bounds) (= (length orig-desc) 0))
+ (unless (or (not desc-bounds)
+ (= (length orig-desc) 0)
+ (if (eq overwrite 'ask)
+ (y-or-n-p "Overwrite existing description?")
+ overwrite))
(user-error "Link already has a description"))
(delete-region link-beg link-end)
- (insert (org-make-link-string
+ (insert (org-link-make-string
link
(if desc-bounds
(delete-and-extract-region (car desc-bounds)