From e64ff15f678c62552d0e0329fee622b299fa3d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Reu=C3=9Fe?= Date: Sun, 11 Mar 2018 16:43:47 +0100 Subject: [PATCH] Fix alphabetic sorting for tables, plain lists * org-table.el (org-table-sort-lines): Use collated sorting. * org-list.el (org-sort-list): Use collated sorting. Cf. commit 551d2f1fe. --- etc/ORG-NEWS | 6 ++++++ lisp/org-list.el | 5 +++-- lisp/org-table.el | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index dbedbf7c9..77373d442 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -106,6 +106,12 @@ document, use =shrink= value instead, or in addition to align: ,#+STARTUP: align shrink #+END_EXAMPLE +*** Alphabetic sorting in tables and lists + +When sorting alphabetically, ~org-table-sort-lines~ and ~org-sort-list~ +now sort according to the locale’s collation rules instead of by +code-point. + ** New features *** Add support for links to LaTeX equations in HTML export Use MathJax links when enabled (by ~org-html-with-latex~), otherwise diff --git a/lisp/org-list.el b/lisp/org-list.el index 9e015cdc2..d646e264c 100644 --- a/lisp/org-list.el +++ b/lisp/org-list.el @@ -2804,7 +2804,8 @@ Sorting can be alphabetically, numerically, by date/time as given by a time stamp, by a property or by priority. Comparing entries ignores case by default. However, with an -optional argument WITH-CASE, the sorting considers case as well. +optional argument WITH-CASE, the sorting considers case as well, +if the current locale allows for it. The command prompts for the sorting type unless it has been given to the function through the SORTING-TYPE argument, which needs to @@ -2850,7 +2851,7 @@ function is being called interactively." (error "Missing key extractor")))) (sort-func (cond - ((= dcst ?a) #'string<) + ((= dcst ?a) #'org-string-collate-lessp) ((= dcst ?f) (or compare-func (and interactive? diff --git a/lisp/org-table.el b/lisp/org-table.el index f303c2581..316533172 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -1794,7 +1794,7 @@ function is being called interactively." (predicate (cl-case sorting-type ((?n ?N ?t ?T) #'<) - ((?a ?A) #'string<) + ((?a ?A) #'org-string-collate-lessp) ((?f ?F) (or compare-func (and interactive?