summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@gnu.org>2021-04-27 09:41:26 +0200
committerBastien Guerry <bzg@gnu.org>2021-04-27 09:41:26 +0200
commit13a1a4fb960b0141f6f9f888f6559e8328e4af16 (patch)
tree0dfec82ca5fd66aaf2540970d4ffa7b8011397f2
parent26d1d29cf9187b4be64d5b6b9855271070ff9ef8 (diff)
downloadorg-mode-13a1a4fb960b0141f6f9f888f6559e8328e4af16.tar.gz
Be more consistent about treating tags as case-sensitive
* lisp/org-agenda.el (org-agenda-finalize): (org-agenda-format-item): Do not downcase tags. (org-downcase-keep-props): Remove unused function. (org-agenda-filter-expand-tags): Do not case-fold search. * lisp/org.el (org-tags-expand): Document `downcased' argument as obsolete and do not allow to expand downcased tags. * testing/lisp/test-org.el (test-org/tags-expand): Remove test for downcased tags expansion. * doc/org-manual.org (TODO keywords, tags, properties, etc.): Suggest that user-defined are usually lowercase, but don't make it a requirement. Reported-by: David Masterson <dsmasterson92630@outlook.com> Link: https://orgmode.org/list/SJ0PR03MB5455D8D0C4F71AA495A9ABF79B709@SJ0PR03MB5455.namprd03.prod.outlook.com/
-rw-r--r--doc/org-manual.org2
-rw-r--r--lisp/org-agenda.el14
-rw-r--r--lisp/org.el14
-rw-r--r--testing/lisp/test-org.el9
4 files changed, 11 insertions, 28 deletions
diff --git a/doc/org-manual.org b/doc/org-manual.org
index 2ded91c..c58e57c 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -344,7 +344,7 @@ conventions:
- =boss=, =ARCHIVE= ::
- Tags are case-sensitive. User-defined tags are written in
+ Tags are case-sensitive. User-defined tags are usually written in
lowercase; built-in tags with special meaning are written as they
should appear in the document, usually with all capitals.
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 3e93b80..773f82a 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -3919,7 +3919,7 @@ agenda display, configure `org-agenda-finalize-hook'."
(put-text-property (point-at-bol) (point-at-eol)
'tags
(org-with-point-at mrk
- (mapcar #'downcase (org-get-tags)))))))))
+ (org-get-tags))))))))
(setq org-agenda-represented-tags nil
org-agenda-represented-categories nil)
(when org-agenda-top-headline-filter
@@ -6731,7 +6731,7 @@ Any match of REMOVE-RE will be removed from TXT."
(remove-text-properties 0 (length rtn) '(line-prefix t wrap-prefix t) rtn)
(org-add-props rtn nil
'org-category category
- 'tags (mapcar 'org-downcase-keep-props tags)
+ 'tags tags
'org-priority-highest org-priority-highest
'org-priority-lowest org-priority-lowest
'time-of-day time-of-day
@@ -6776,12 +6776,6 @@ The modified list may contain inherited tags, and tags matched by
(if have-i "::" ":"))))))
txt)
-(defun org-downcase-keep-props (s)
- (let ((props (text-properties-at 0 s)))
- (setq s (downcase s))
- (add-text-properties 0 (length s) props s)
- s))
-
(defvar org-agenda-sorting-strategy) ;; because the def is in a let form
(defun org-agenda-add-time-grid-maybe (list ndays todayp)
@@ -8074,7 +8068,7 @@ If the line does not have an effort defined, return nil."
When NO-OPERATOR is non-nil, do not add the + operator to
returned tags."
(if org-group-tags
- (let ((case-fold-search t) rtn)
+ (let (case-fold-search rtn)
(mapc
(lambda (f)
(let (f0 dir)
@@ -8082,7 +8076,7 @@ returned tags."
(setq dir (match-string 1 f) f0 (match-string 2 f))
(setq dir (if no-operator "" "+") f0 f))
(setq rtn (append (mapcar (lambda(f1) (concat dir f1))
- (org-tags-expand f0 t t))
+ (org-tags-expand f0 t))
rtn))))
filter)
(reverse rtn))
diff --git a/lisp/org.el b/lisp/org.el
index 47511b1..d972c63 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -11760,22 +11760,18 @@ When the optional argument SINGLE-AS-LIST is non-nil, MATCH is
assumed to be a single group tag, and the function will return
the list of tags in this group.
-When DOWNCASED is non-nil, expand downcased TAGS."
+The DOWNCASED argument is obsolete and has no effect."
(unless (org-string-nw-p match) (error "Invalid match tag: %S" match))
(let ((tag-groups
- (let ((g (or org-tag-groups-alist-for-agenda org-tag-groups-alist)))
- (if (not downcased) g
- (mapcar (lambda (s) (mapcar #'downcase s)) g)))))
+ (or org-tag-groups-alist-for-agenda org-tag-groups-alist)))
(cond
- (single-as-list (org--tags-expand-group
- (list (if downcased (downcase match) match))
- tag-groups nil))
+ (single-as-list (org--tags-expand-group (list match) tag-groups nil))
(org-group-tags
(let* ((case-fold-search t)
(tag-syntax org-mode-syntax-table)
(group-keys (mapcar #'car tag-groups))
(key-regexp (concat "\\([+-]?\\)" (regexp-opt group-keys 'words)))
- (return-match (if downcased (downcase match) match)))
+ (return-match match))
;; Mark regexp-expressions in the match-expression so that we
;; do not replace them later on.
(let ((s 0))
@@ -11795,7 +11791,7 @@ When DOWNCASED is non-nil, expand downcased TAGS."
m ;regexp tag: ignore
(let* ((operator (match-string 1 m))
(tag-token (let ((tag (match-string 2 m)))
- (list (if downcased (downcase tag) tag))))
+ (list tag)))
regexp-tags regular-tags)
;; Partition tags between regexp and regular tags.
;; Remove curly bracket syntax from regexp tags.
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 78cd295..f71118d 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -7172,14 +7172,7 @@ Paragraph<point>"
(equal "{A+}"
(org-test-with-temp-text "#+TAGS: [ A : B C ]"
(org-mode-restart)
- (let ((org-tag-alist-for-agenda nil)) (org-tags-expand "{A+}")))))
- ;; Uppercase MATCH works with a non-nil DOWNCASED and SINGLE-AS-LIST.
- (should
- (equal (list "a" "b" "c")
- (org-test-with-temp-text "#+TAGS: [ A : B C ]"
- (org-mode-restart)
- (let ((org-tag-alist-for-agenda nil))
- (sort (org-tags-expand "A" t t) #'string-lessp))))))
+ (let ((org-tag-alist-for-agenda nil)) (org-tags-expand "{A+}"))))))
;;; TODO keywords