diff options
author | Kyle Meyer <kyle@kyleam.com> | 2017-03-03 00:10:00 -0500 |
---|---|---|
committer | Kyle Meyer <kyle@kyleam.com> | 2017-03-03 00:29:36 -0500 |
commit | ae8e918c873febd58abfc332ebf8f59448e8fff4 (patch) | |
tree | d526f32083d7bc1aa1cf1681353ab2bbcd5c567d | |
parent | 5dd5901cf6850f2bfdba64c896d10b017633600e (diff) | |
download | org-link-edit-ae8e918c873febd58abfc332ebf8f59448e8fff4.tar.gz |
Add a separate function for testing if point is on a link
The slurping and barfing commands are interested in point being on a
link, so it is sufficient for them to use org-link-edit--get-link-data
and get a user-error when point is not on a link. But an upcoming
command will want to know that point is _not_ in a link.
-rw-r--r-- | org-link-edit.el | 14 | ||||
-rw-r--r-- | test-org-link-edit.el | 22 |
2 files changed, 31 insertions, 5 deletions
diff --git a/org-link-edit.el b/org-link-edit.el index 49e9aa0..833d620 100644 --- a/org-link-edit.el +++ b/org-link-edit.el @@ -61,6 +61,14 @@ (require 'org-element) (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))) + (defun org-link-edit--link-data () "Return list with information about the link at point. The list includes @@ -69,11 +77,7 @@ The list includes - the link text - the link description (nil when on a plain link)" (let ((el (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))) - (unless (eq (car el) 'link) + (unless (org-link-edit--on-link-p el) (user-error "Point is not on a link")) (save-excursion (goto-char (org-element-property :begin el)) diff --git a/test-org-link-edit.el b/test-org-link-edit.el index 893cec5..4f006e7 100644 --- a/test-org-link-edit.el +++ b/test-org-link-edit.el @@ -513,6 +513,28 @@ website" ;;; Other +(ert-deftest test-org-link-edit/on-link-p () + "Test `org-link-edit--on-link-p'." + ;; On plain link + (should + (org-test-with-temp-text "http://orgmode.org/" + (org-link-edit--on-link-p))) + ;; On bracket link + (should + (org-test-with-temp-text "\[\[http://orgmode.org/\]\[org\]\]" + (org-link-edit--on-link-p))) + ;; Point beyond link, but technically still within link element. + (should + (org-test-with-temp-text "\[\[http://orgmode.org/\]\[org\]\] <point>" + (org-link-edit--on-link-p))) + ;; Not on a link + (should-not + (org-test-with-temp-text " \[\[http://orgmode.org/\]\[org\]\]" + (org-link-edit--on-link-p))) + (should-not + (org-test-with-temp-text "not a link" + (org-link-edit--on-link-p)))) + (ert-deftest test-org-link-edit/get-link-data () "Test `org-link-edit--link-data'." ;; Plain link |