diff options
| author | Somelauw <Somelauw> | 2018-02-17 20:09:21 +0100 |
|---|---|---|
| committer | Somelauw <Somelauw> | 2018-02-17 20:09:21 +0100 |
| commit | f4445d7f84be244ed8fb737829bed7e1d2f051d5 (patch) | |
| tree | 26dc1f0f83ddb81634f75ee46f6d80991734518d | |
| parent | 491b0b302b95d44ceb73d291dedbb9d5517ccee2 (diff) | |
Make evil-org-select-inner-element use :value if providedissue-34-org-element-fallback
Fixes https://github.com/Somelauw/evil-org-mode/issues/34 and
https://github.com/Somelauw/evil-org-mode/issues/23
| -rw-r--r-- | evil-org.el | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/evil-org.el b/evil-org.el index fcb0bd9..3a4ec80 100644 --- a/evil-org.el +++ b/evil-org.el @@ -507,16 +507,31 @@ If a prefix argument is given, links are opened in incognito mode." (defun evil-org-select-inner-element (element) "Select inner org ELEMENT." - (list (or (org-element-property :contents-begin element) - (org-element-property :begin element)) - (or (org-element-property :contents-end element) - ;; Prune post-blank lines from :end element + (if-let ((value (org-element-property :value element)) + (lines (remove "" (split-string value "[\n\r]")))) + + ;; If org-element exposes "value", select "value" + (list (save-excursion + (goto-char (or (org-element-property :post-affiliated element) + (org-element-property :begin element))) + (search-forward (first lines)) + (match-beginning 0)) (save-excursion (goto-char (org-element-property :end element)) - (let ((post-blank (org-element-property :post-blank element))) - (unless (zerop post-blank) - (forward-line (- post-blank)))) - (point))))) + (search-backward (car (last lines))) + (match-end 0))) + + ;; If org-element exposes contents-begin/end, select those + (list (or (org-element-property :contents-begin element) + (org-element-property :post-affiliated element) + (org-element-property :begin element)) + (or (org-element-property :contents-end element) + (save-excursion + (goto-char (org-element-property :end element)) + (let ((post-blank (org-element-property :post-blank element))) + (unless (zerop post-blank) + (forward-line (- post-blank)))) + (point)))))) (defun evil-org-parent (element) "Find a parent or nearest heading of ELEMENT." |
