summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2013-02-25 10:24:29 +0100
committerBastien Guerry <bzg@altern.org>2013-02-25 10:24:29 +0100
commit30d6dc8baa699230f8d770a52485d10e59f84033 (patch)
tree73f1e56ef66ef04ad549d41387d48982f7329cd5
parent5700a0eb2d64649bea9526de86062ea69f317e44 (diff)
downloadorg-mode-30d6dc8baa699230f8d770a52485d10e59f84033.tar.gz
org.el (org-sort-remove-invisible): Truly returns the visible part of the string
* org.el (org-sort-remove-invisible): Use defsust. Do not only check against invisible links, truly returns the visible part of the string. Thanks to François Pinard for suggesting this.
-rw-r--r--lisp/org.el15
1 files changed, 7 insertions, 8 deletions
diff --git a/lisp/org.el b/lisp/org.el
index af6499a..4c5aa24 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -8319,14 +8319,13 @@ Optional argument WITH-CASE means sort case-sensitively."
(t
(org-call-with-arg 'org-sort-entries with-case))))
-(defun org-sort-remove-invisible (s)
- "Remove invisible links from string S."
- (remove-text-properties 0 (length s) org-rm-props s)
- (while (string-match org-bracket-link-regexp s)
- (setq s (replace-match (if (match-end 2)
- (match-string 3 s)
- (match-string 1 s)) t t s)))
- s)
+(defsubst org-sort-remove-invisible (s)
+ "Return the visible string from string S."
+ (let (result)
+ (dotimes (c (length s))
+ (let ((st (substring s c (1+ c))))
+ (unless (get-text-property 0 'invisible st) (push st result))))
+ (mapconcat 'identity (reverse result) "")))
(defvar org-priority-regexp) ; defined later in the file