Hi Maxim Maxim Nikulin writes:
> I can reproduce the issue with emacs-27.1 from ubuntu-21.04 beta live > image running in qemu. Org mode is current git HEAD. It seems that > something is changed in emacs since locale is correct: > > ubuntu@ubuntu:~$ printf '%s- v\n- /v/\n- a\n- /a/\n' '' \ > | LANG=C.UTF-8 sort > - /a/ > - /v/ > - a > - v > ubuntu@ubuntu:~$ printf '%s- v\n- /v/\n- a\n- /a/\n' '' \ > | LANG=es_ES.UTF-8 sort > - /a/ > - a > - /v/ > - v > > Concerning org-sort-list, I do not see any problem with en_US.UTF-8, > it_IT.UTF-8, and ru_RU.UTF-8 locales. However emphasized items are > sorted first for at least es_ES.UTF-8, es_MX.UTF-8, and es_US.UTF-8. > I have found some evidence that the problem is on the org side > > cat list.el > (message "%S" (sort '("- /v/" "- v" "- a" "- /a/") > #'string-collate-lessp)) > > LC_ALL=C.UTF-8 emacs --batch -Q -l list.el > ("- /a/" "- /v/" "- a" "- v") > > LC_ALL=en_US.UTF-8 emacs --batch -Q -l list.el > ("- /a/" "- a" "- /v/" "- v") > > LC_ALL=es_ES.UTF-8 emacs --batch -Q -l list.el > ("- /a/" "- a" "- /v/" "- v") > > So even string-collate-lessp works as expected. > > I'm puzzled why the problem is specific to org-sort-list and namely to > Spanish locales. > > Well that's pretty weird ... I wonder if the (spurious?) spaces in `org-sort-remove-invisible' that I mentioned at the beginning may be helpful to keep a track, or if it's just something that masks the problem. Anyway, I have noticed that the only space that seems determinant (from some way that escapes me) is this (where I put the @ sign): org-emph-re (lambda (m) (format "@%s " (match-string 4 m))) Following your examples, it occurred to me to try this, which I don't know if it is relevant or if I have entered a dead end: #+begin_src emacs-lisp :tangle list-var.el (message "%S" (sort '("-\s\sv" "-\sv" "-\sa" "-\s\sa") #'string-collate-lessp)) #+end_src #+begin_src sh exec 2>&1 LC_ALL=en_US.UTF-8 emacs --batch -Q -l list-var.el #+end_src #+RESULTS: : - a" "- a" "- v" "- v #+begin_src sh exec 2>&1 LC_ALL=es_ES.UTF-8 emacs --batch -Q -l list-var.el #+end_src #+RESULTS: : - a" "- v" "- a" "- v Best regards, Juan Manuel