unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
@ 2015-04-13  5:22 Alexis
  2015-04-13  5:59 ` Alexis
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Alexis @ 2015-04-13  5:22 UTC (permalink / raw)
  To: 20316


(getenv "LC_COLLATE") => "hr_HR.UTF-8"

(string-lessp "Ć" "D") => nil
(string-lessp "Đ" "S") => nil
(string-lessp "Š" "Z") => nil




In GNU Emacs 24.5.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.4.2)
 of 2015-04-11 on adele
Windowing system distributor `The X.Org Foundation', version 11.0.11204000
System Description:	Debian GNU/Linux 7.8 (wheezy)

Important settings:
  value of $LC_COLLATE: hr_HR.utf8
  value of $LANG: en_AU.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Text

Minor modes in effect:
  flyspell-mode: t
  magit-auto-revert-mode: t
  diff-auto-refine-mode: t
  electric-pair-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  show-paren-mode: t
  global-pretty-mode: t
  engine-mode: t
  global-page-break-lines-mode: t
  change-cursor-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  shell-dirtrack-mode: t
  guide-key-mode: t
  global-company-mode: t
  company-mode: t
  TeX-PDF-mode: t
  erc-log-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  visual-line-mode: t
  transient-mark-mode: t
  auto-fill-mode: 1


Load-path shadows:
/usr/share/emacs/site-lisp/gnugo hides /home/alexis/.emacs.d/elpa/gnugo-3.0.0/gnugo
/home/alexis/.emacs.d/elpa/cperl-mode-20140309.122/cperl-mode hides /usr/local/share/emacs/24.5/lisp/progmodes/cperl-mode
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-man hides /usr/local/share/emacs/24.5/lisp/org/ox-man
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-haskell hides /usr/local/share/emacs/24.5/lisp/org/ob-haskell
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-screen hides /usr/local/share/emacs/24.5/lisp/org/ob-screen
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-beamer hides /usr/local/share/emacs/24.5/lisp/org/ox-beamer
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-java hides /usr/local/share/emacs/24.5/lisp/org/ob-java
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-odt hides /usr/local/share/emacs/24.5/lisp/org/ox-odt
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-mobile hides /usr/local/share/emacs/24.5/lisp/org/org-mobile
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-feed hides /usr/local/share/emacs/24.5/lisp/org/org-feed
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-lob hides /usr/local/share/emacs/24.5/lisp/org/ob-lob
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-js hides /usr/local/share/emacs/24.5/lisp/org/ob-js
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-footnote hides /usr/local/share/emacs/24.5/lisp/org/org-footnote
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-ref hides /usr/local/share/emacs/24.5/lisp/org/ob-ref
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-io hides /usr/local/share/emacs/24.5/lisp/org/ob-io
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-texinfo hides /usr/local/share/emacs/24.5/lisp/org/ox-texinfo
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-comint hides /usr/local/share/emacs/24.5/lisp/org/ob-comint
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-ctags hides /usr/local/share/emacs/24.5/lisp/org/org-ctags
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-keys hides /usr/local/share/emacs/24.5/lisp/org/ob-keys
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-sqlite hides /usr/local/share/emacs/24.5/lisp/org/ob-sqlite
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-awk hides /usr/local/share/emacs/24.5/lisp/org/ob-awk
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-asymptote hides /usr/local/share/emacs/24.5/lisp/org/ob-asymptote
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-table hides /usr/local/share/emacs/24.5/lisp/org/org-table
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-pcomplete hides /usr/local/share/emacs/24.5/lisp/org/org-pcomplete
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-ruby hides /usr/local/share/emacs/24.5/lisp/org/ob-ruby
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-mouse hides /usr/local/share/emacs/24.5/lisp/org/org-mouse
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-emacs-lisp hides /usr/local/share/emacs/24.5/lisp/org/ob-emacs-lisp
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-list hides /usr/local/share/emacs/24.5/lisp/org/org-list
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-irc hides /usr/local/share/emacs/24.5/lisp/org/org-irc
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-org hides /usr/local/share/emacs/24.5/lisp/org/ob-org
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-macro hides /usr/local/share/emacs/24.5/lisp/org/org-macro
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-matlab hides /usr/local/share/emacs/24.5/lisp/org/ob-matlab
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-lilypond hides /usr/local/share/emacs/24.5/lisp/org/ob-lilypond
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-plantuml hides /usr/local/share/emacs/24.5/lisp/org/ob-plantuml
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-maxima hides /usr/local/share/emacs/24.5/lisp/org/ob-maxima
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-protocol hides /usr/local/share/emacs/24.5/lisp/org/org-protocol
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-ocaml hides /usr/local/share/emacs/24.5/lisp/org/ob-ocaml
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-timer hides /usr/local/share/emacs/24.5/lisp/org/org-timer
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-shen hides /usr/local/share/emacs/24.5/lisp/org/ob-shen
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-datetree hides /usr/local/share/emacs/24.5/lisp/org/org-datetree
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-w3m hides /usr/local/share/emacs/24.5/lisp/org/org-w3m
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-scheme hides /usr/local/share/emacs/24.5/lisp/org/ob-scheme
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-inlinetask hides /usr/local/share/emacs/24.5/lisp/org/org-inlinetask
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-rmail hides /usr/local/share/emacs/24.5/lisp/org/org-rmail
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-habit hides /usr/local/share/emacs/24.5/lisp/org/org-habit
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-perl hides /usr/local/share/emacs/24.5/lisp/org/ob-perl
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-R hides /usr/local/share/emacs/24.5/lisp/org/ob-R
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-table hides /usr/local/share/emacs/24.5/lisp/org/ob-table
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-python hides /usr/local/share/emacs/24.5/lisp/org/ob-python
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-gnuplot hides /usr/local/share/emacs/24.5/lisp/org/ob-gnuplot
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-crypt hides /usr/local/share/emacs/24.5/lisp/org/org-crypt
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-clock hides /usr/local/share/emacs/24.5/lisp/org/org-clock
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-colview hides /usr/local/share/emacs/24.5/lisp/org/org-colview
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-archive hides /usr/local/share/emacs/24.5/lisp/org/org-archive
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-mhe hides /usr/local/share/emacs/24.5/lisp/org/org-mhe
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-mscgen hides /usr/local/share/emacs/24.5/lisp/org/ob-mscgen
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org hides /usr/local/share/emacs/24.5/lisp/org/org
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-eshell hides /usr/local/share/emacs/24.5/lisp/org/org-eshell
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-core hides /usr/local/share/emacs/24.5/lisp/org/ob-core
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-ledger hides /usr/local/share/emacs/24.5/lisp/org/ob-ledger
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-exp hides /usr/local/share/emacs/24.5/lisp/org/ob-exp
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-id hides /usr/local/share/emacs/24.5/lisp/org/org-id
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-latex hides /usr/local/share/emacs/24.5/lisp/org/ob-latex
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox hides /usr/local/share/emacs/24.5/lisp/org/ox
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-gnus hides /usr/local/share/emacs/24.5/lisp/org/org-gnus
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-scala hides /usr/local/share/emacs/24.5/lisp/org/ob-scala
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-tangle hides /usr/local/share/emacs/24.5/lisp/org/ob-tangle
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-fortran hides /usr/local/share/emacs/24.5/lisp/org/ob-fortran
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-clojure hides /usr/local/share/emacs/24.5/lisp/org/ob-clojure
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-C hides /usr/local/share/emacs/24.5/lisp/org/ob-C
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-indent hides /usr/local/share/emacs/24.5/lisp/org/org-indent
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-element hides /usr/local/share/emacs/24.5/lisp/org/org-element
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-css hides /usr/local/share/emacs/24.5/lisp/org/ob-css
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-docview hides /usr/local/share/emacs/24.5/lisp/org/org-docview
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-icalendar hides /usr/local/share/emacs/24.5/lisp/org/ox-icalendar
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-ditaa hides /usr/local/share/emacs/24.5/lisp/org/ob-ditaa
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-ascii hides /usr/local/share/emacs/24.5/lisp/org/ox-ascii
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-html hides /usr/local/share/emacs/24.5/lisp/org/ox-html
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-install hides /usr/local/share/emacs/24.5/lisp/org/org-install
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-calc hides /usr/local/share/emacs/24.5/lisp/org/ob-calc
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-faces hides /usr/local/share/emacs/24.5/lisp/org/org-faces
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-sass hides /usr/local/share/emacs/24.5/lisp/org/ob-sass
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-agenda hides /usr/local/share/emacs/24.5/lisp/org/org-agenda
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-info hides /usr/local/share/emacs/24.5/lisp/org/org-info
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-sh hides /usr/local/share/emacs/24.5/lisp/org/ob-sh
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-picolisp hides /usr/local/share/emacs/24.5/lisp/org/ob-picolisp
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-src hides /usr/local/share/emacs/24.5/lisp/org/org-src
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-entities hides /usr/local/share/emacs/24.5/lisp/org/org-entities
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-sql hides /usr/local/share/emacs/24.5/lisp/org/ob-sql
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-md hides /usr/local/share/emacs/24.5/lisp/org/ox-md
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-makefile hides /usr/local/share/emacs/24.5/lisp/org/ob-makefile
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-macs hides /usr/local/share/emacs/24.5/lisp/org/org-macs
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-lisp hides /usr/local/share/emacs/24.5/lisp/org/ob-lisp
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-compat hides /usr/local/share/emacs/24.5/lisp/org/org-compat
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-publish hides /usr/local/share/emacs/24.5/lisp/org/ox-publish
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-dot hides /usr/local/share/emacs/24.5/lisp/org/ob-dot
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-eval hides /usr/local/share/emacs/24.5/lisp/org/ob-eval
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-version hides /usr/local/share/emacs/24.5/lisp/org/org-version
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-loaddefs hides /usr/local/share/emacs/24.5/lisp/org/org-loaddefs
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-capture hides /usr/local/share/emacs/24.5/lisp/org/org-capture
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-bibtex hides /usr/local/share/emacs/24.5/lisp/org/org-bibtex
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-bbdb hides /usr/local/share/emacs/24.5/lisp/org/org-bbdb
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-attach hides /usr/local/share/emacs/24.5/lisp/org/org-attach
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-org hides /usr/local/share/emacs/24.5/lisp/org/ox-org
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob-octave hides /usr/local/share/emacs/24.5/lisp/org/ob-octave
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/org-plot hides /usr/local/share/emacs/24.5/lisp/org/org-plot
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ob hides /usr/local/share/emacs/24.5/lisp/org/ob
/home/alexis/.emacs.d/elpa/org-plus-contrib-20150406/ox-latex hides /usr/local/share/emacs/24.5/lisp/org/ox-latex
/home/alexis/.emacs.d/elpa/tabulated-list-20120406.1351/tabulated-list hides /usr/local/share/emacs/24.5/lisp/emacs-lisp/tabulated-list
/home/alexis/.emacs.d/elpa/emms-20150329.1945/tq hides /usr/local/share/emacs/24.5/lisp/emacs-lisp/tq
/home/alexis/.emacs.d/misc/longlines hides /usr/local/share/emacs/24.5/lisp/obsolete/longlines

Features:
(shadow emacsbug cc-langs cc-mode-expansions cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
el2markdown xterm macros misearch multi-isearch timezone irfc eieio-opt
org-colview org-table appt cal-china lunar cal-bahai cal-islam cal-move
align face-remap gnutls url-queue shr-color color shr jumblr flow-fill
mail-extr org-rmail org-mhe org-irc org-info org-gnus org-docview
org-bibtex bibtex org-bbdb org-w3m cus-edit image-file flyspell ispell
markdown-mode magit-key-mode magit view grep diff-mode autorevert
filenotify git-rebase-mode git-commit-mode log-edit pcvs-util add-log
bookmark+-mac gnus-sum nnoo gnus-group gnus-undo nnmail mail-source
gnus-start gnus-spec gnus-int gnus-range gnus-win gnus gnus-ems nnheader
ffap visual-regexp names edebug autoload lisp-mnt tar-mode mm-archive
url-cache url-handlers ibuf-ext ibuffer mule-util cal-hebrew parse-time
font-utils persistent-soft list-utils pcache eieio-base server vc-git
tabify eldoc hideshow hl-sexp elec-pair aggressive-indent ert ewoc debug
org-vcard picolisp-mode flycheck subr-x company-files company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-dabbrev company-capf company-cmake company-xcode company-clang
company-semantic company-eclim company-template company-css company-nxml
company-bbdb company-math math-symbol-lists company-tern dash-functional
tern url-http url-auth url-gw paren cus-start cus-load solar cal-dst
warnings pretty-mode paredit-menu paredit org-weather org-depend
org-bullets org-clock highlight-tags-mode evil evil-integration
evil-maps evil-commands evil-command-window evil-types evil-search
evil-ex evil-macros evil-repeat evil-states evil-core evil-common
windmove rect evil-digraphs evil-vars engine-mode dired-details+
dired-details perl-find-library cperl-mode-expansions cperl-mode imenu
man color-theme-desert color-theme reporter calc calc-loaddefs calc-macs
page-break-lines cursor-chg column-marker col-highlight vline malyon
malyon-mode pcase window-margin unicode-fonts undo-tree diff tramp
tramp-compat tramp-loaddefs trampver shell supercite regi smex saveplace
rainbow-delimiters notify highlight-tail helm-info helm-dictionary
helm-plugin helm-utils helm-net helm-dash helm-match-plugin helm
helm-source guide-key popwin google-translate
google-translate-default-ui google-translate-core-ui
google-translate-core filecache expand-region text-mode-expansions
the-org-mode-expansions er-basic-expansions expand-region-core
expand-region-custom ac-emacs-eclim-source auto-complete popup
eclim-completion eclimd eclim eclim-problems eclim-maven compile
eclim-ant eclim-java eclim-project rx s ucs-normalize etags dired-open
dired-hacks-utils dash company calfw-org org-capture org-element
calfw-ical icalendar diary-lib diary-loaddefs calfw-cal calfw holidays
hol-loaddefs bookmark+ bookmark+-key dired-x bookmark+-1 bookmark+-bmu
help-mode bookmark+-lit bookmark tex crm mu4e mu4e-speedbar speedbar
sb-image ezimage dframe mu4e-main mu4e-view browse-url mu4e-headers
mu4e-compose mu4e-draft mu4e-actions ido rfc2368 smtpmail sendmail
mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view jka-compr
image-mode mu4e-lists mu4e-about mu4e-vars message rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev mail-utils gmm-utils mailheader hl-line mu4e-meta
notifications dbus xml erc-log network-stream starttls tls epa-file epa
derived epg erc-list erc-menu erc-join erc-ring erc-networks
erc-pcomplete erc-track erc-match erc-button wid-edit erc-fill erc-stamp
erc-netsplit erc-goodies erc erc-backend erc-compat thingatpt pp
emms-volume emms-volume-amixer emms-bookmarks emms-cue
emms-mode-line-icon emms-browser sort emms-playlist-sort
emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time
emms-lyrics emms-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf mailcap emms-streams emms-tag-editor
emms-mark emms-mode-line emms-cache emms-info-ogginfo emms-info-mp3info
emms-info later-do emms-playlist-mode emms-player-vlc
emms-player-mplayer emms-player-simple emms-source-playlist
emms-source-file locate dired emms-setup emms emms-compat disp-table
org-location-google-maps org-agenda google-maps google-maps-static
url-util url-parse auth-source eieio byte-opt bytecomp byte-compile
cl-extra cconv eieio-core gnus-util mm-util mail-prsvr password-cache
url-vars google-maps-geocode google-maps-base json org org-macro
org-footnote org-pcomplete pcomplete org-list org-faces org-entities
time-date noutline outline easy-mmode org-version ob-emacs-lisp ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint comint
ansi-color ring ob-core ob-eval org-compat org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs charmap-autoloads
charmap color-theme-autoloads color-theme-buffer-local-autoloads
column-marker-autoloads tex-site cperl-mode-autoloads
dired-details-autoloads dired-dups-autoloads dired-single-autoloads
dropdown-list-autoloads elisp-cache-autoloads edmacro kmacro
erc-view-log-autoloads esqlite-helm-autoloads esqlite-autoloads
free-keys-autoloads furl-autoloads helm-package-autoloads
http-twiddle-autoloads htmlize-autoloads irfc-autoloads
maildir-autoloads kv-autoloads manage-minor-mode-autoloads
memory-usage-autoloads mode-compile-autoloads advice notify-autoloads
oauth-autoloads oauth2-autoloads finder-inf paredit-menu-autoloads
perlcritic-autoloads regex-tool-autoloads register-list-autoloads
request-deferred-autoloads request-autoloads slime-autoloads
soundcloud-autoloads info easymenu spaces-autoloads
tabulated-list-autoloads help-fns cl-macs cl gv cl-loaddefs cl-lib
xclip-autoloads package epg-config tooltip electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register
page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process dbusbind
gfilenotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 1233922 162679)
 (symbols 48 75155 9)
 (miscs 40 1367 2837)
 (strings 32 317433 36339)
 (string-bytes 1 7874107)
 (vectors 16 98819)
 (vector-slots 8 2174947 45044)
 (floats 8 1211 4130)
 (intervals 56 37046 3751)
 (buffers 960 74)
 (heap 1024 120387 6994))





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13  5:22 bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE Alexis
@ 2015-04-13  5:59 ` Alexis
  2015-04-13  6:18 ` Michael Albinus
  2015-04-13 14:10 ` Paul Eggert
  2 siblings, 0 replies; 11+ messages in thread
From: Alexis @ 2015-04-13  5:59 UTC (permalink / raw)
  To: 20316


Alexis <flexibeast@gmail.com> writes:

> (getenv "LC_COLLATE") => "hr_HR.UTF-8"
>
> (string-lessp "Ć" "D") => nil (string-lessp "Đ" "S") => nil 
> (string-lessp "Š" "Z") => nil

i should add, this happens even with `set-locale-environment' 
specified as 'hr_HR.UTF-8' and/or `set-language-environment' 
specified as 'Croatian'.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13  5:22 bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE Alexis
  2015-04-13  5:59 ` Alexis
@ 2015-04-13  6:18 ` Michael Albinus
  2015-04-13  6:42   ` Alexis
  2015-04-13 14:10 ` Paul Eggert
  2 siblings, 1 reply; 11+ messages in thread
From: Michael Albinus @ 2015-04-13  6:18 UTC (permalink / raw)
  To: Alexis; +Cc: 20316

Alexis <flexibeast@gmail.com> writes:

> (getenv "LC_COLLATE") => "hr_HR.UTF-8"
>
> (string-lessp "Ć" "D") => nil
> (string-lessp "Đ" "S") => nil
> (string-lessp "Š" "Z") => nil

`string-lessp' is not design to respect collation order. The docstring
speaks about lexicographoc order.

In Emacs 25.0.50, there is `string-collate-lessp', with respects your
locale settings.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13  6:18 ` Michael Albinus
@ 2015-04-13  6:42   ` Alexis
  2015-04-13  6:53     ` Michael Albinus
  2015-04-13 14:48     ` Eli Zaretskii
  0 siblings, 2 replies; 11+ messages in thread
From: Alexis @ 2015-04-13  6:42 UTC (permalink / raw)
  To: 20316; +Cc: michael.albinus


Michael Albinus <michael.albinus@gmx.de> writes:

> Alexis <flexibeast@gmail.com> writes:
>
>> (getenv "LC_COLLATE") => "hr_HR.UTF-8"
>>
>> (string-lessp "Ć" "D") => nil (string-lessp "Đ" "S") => nil 
>> (string-lessp "Š" "Z") => nil
>
> `string-lessp' is not design to respect collation order. The 
> docstring speaks about lexicographoc order.

i'm sorry, i don't follow this. Yes, the docstring talks about 
lexicographic order. But i think it's reasonable for users to 
expect Emacs' built-in sort functionality (e.g. `sort-lines') to 
respect their current locale such that lexicographic order and 
collation order are treated as basically synonymous. Unless 
there's an important distinction between the two in this context 
that i'm missing?

In this specific case, a user of a package i maintain was 
surprised when `org-sort' didn't sort their Croatian-language Org 
entries properly. Under the hood, `org-sort' uses 
`string-lessp'. Is the bottom line that they'll have to wait until 
at least 25.1 before Org could add conditional code to use 
`string-collate-lessp', to at least DTRT for users of >25.0?


Alexis.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13  6:42   ` Alexis
@ 2015-04-13  6:53     ` Michael Albinus
  2015-04-13 14:48     ` Eli Zaretskii
  1 sibling, 0 replies; 11+ messages in thread
From: Michael Albinus @ 2015-04-13  6:53 UTC (permalink / raw)
  To: Alexis; +Cc: 20316

Alexis <flexibeast@gmail.com> writes:

> In this specific case, a user of a package i maintain was surprised
> when `org-sort' didn't sort their Croatian-language Org entries
> properly. Under the hood, `org-sort' uses `string-lessp'.

This shall be customizable.

> Is the
> bottom line that they'll have to wait until at least 25.1 before Org
> could add conditional code to use `string-collate-lessp', to at least
> DTRT for users of >25.0?

`string-collate-lessp' is a new function in Emacs 25. Yes, you have to wait.

> Alexis.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13  5:22 bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE Alexis
  2015-04-13  5:59 ` Alexis
  2015-04-13  6:18 ` Michael Albinus
@ 2015-04-13 14:10 ` Paul Eggert
  2 siblings, 0 replies; 11+ messages in thread
From: Paul Eggert @ 2015-04-13 14:10 UTC (permalink / raw)
  To: 20316-done

Since the problem is already addressed in the trunk and this will appear in the 
next major release, I'm closing the bug.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13  6:42   ` Alexis
  2015-04-13  6:53     ` Michael Albinus
@ 2015-04-13 14:48     ` Eli Zaretskii
  2015-04-14  0:55       ` Alexis
  1 sibling, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2015-04-13 14:48 UTC (permalink / raw)
  To: Alexis; +Cc: michael.albinus, 20316

> From: Alexis <flexibeast@gmail.com>
> Date: Mon, 13 Apr 2015 16:42:30 +1000
> Cc: michael.albinus@gmx.de
> 

>         (getenv "LC_COLLATE") => "hr_HR.UTF-8"
>         (string-lessp "Ć" "D") => nil
>         (string-lessp "Đ" "S") => nil
>         (string-lessp "Š" "Z") => nil 
> 
>     `string-lessp' is not design to respect collation order. The docstring speaks about lexicographoc order. 
> 
> i'm sorry, i don't follow this. Yes, the docstring talks about lexicographic order. But i think it's reasonable for users to expect Emacs' built-in sort functionality (e.g. `sort-lines') to respect their current locale such that lexicographic order and collation order are treated as basically synonymous. Unless there's an important distinction between the two in this context that i'm missing?

Emacs is a multi-lingual editor, and it isn't clear how to apply
locale-specific settings, including collation, to text that can
potentially include many scripts.  E.g., a locale could specify a
codeset that doesn't cover characters outside of a particular script,
which will produce undefined results if you try using system sorting
routines with characters outside of that single script.

Also, using locale-specific sorting would produce different results
not only in different locales, but also on different platforms in the
same locale, because the implementation of locale collation order
differs from platform to platform and from one C library to another.

Please also note that locale-sensitive collation order could mean more
than just order of characters.  E.g., it could specify that
punctuation characters or differences in accents should be ignored.

So by default, Emacs sorts disregarding locale-specific ordering,
basically using the Unicode codepoints of the characters to order
them.

> In this specific case, a user of a package i maintain was surprised when `org-sort' didn't sort their Croatian-language Org entries properly. Under the hood, `org-sort' uses `string-lessp'. Is the bottom line that they'll have to wait until at least 25.1 before Org could add conditional code to use `string-collate-lessp', to at least DTRT for users of >25.0?

You could use the external 'sort' utility in the meantime, if it
supports locale-dependent ordering.  Once again: the results will be
not 100% deterministic, even for the same locale, so your users should
"caveat emptor".

May I ask what does that package of yours do that it needs
locale-dependent sorting?





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-13 14:48     ` Eli Zaretskii
@ 2015-04-14  0:55       ` Alexis
  2015-04-14 14:57         ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Alexis @ 2015-04-14  0:55 UTC (permalink / raw)
  To: 20316; +Cc: michael.albinus


Eli Zaretskii <eliz@gnu.org> writes:

> Emacs is a multi-lingual editor, and it isn't clear how to apply 
> locale-specific settings, including collation, to text that can 
> potentially include many scripts.  E.g., a locale could specify 
> a codeset that doesn't cover characters outside of a particular 
> script, which will produce undefined results if you try using 
> system sorting routines with characters outside of that single 
> script.

Okay, fair point.

> Also, using locale-specific sorting would produce different 
> results not only in different locales, but also on different 
> platforms in the same locale, because the implementation of 
> locale collation order differs from platform to platform and 
> from one C library to another.

Huh, okay.

> Please also note that locale-sensitive collation order could 
> mean more than just order of characters.  E.g., it could specify 
> that punctuation characters or differences in accents should be 
> ignored.

*nod*

> So by default, Emacs sorts disregarding locale-specific 
> ordering, basically using the Unicode codepoints of the 
> characters to order them.

This makes sense given what you've said above, but can this still 
be referred to as 'lexicographic' ordering? To me, 'lexicographic 
ordering' is ordering as per a dictionary for the relevant 
language, not by codepoint for an arbitrary encoding. Is this 
wrong?

> You could use the external 'sort' utility in the meantime, if it 
> supports locale-dependent ordering.  Once again: the results 
> will be not 100% deterministic, even for the same locale, so 
> your users should "caveat emptor".

*nod* Thanks, i'll pass that on. (And note it for the future.)

> May I ask what does that package of yours do that it needs 
> locale-dependent sorting?

The package itself doesn't do it, but the results it produces 
might subsequently require such sorting. The package is 
`org-vcard':

    https://github.com/flexibeast/org-vcard

which allows one to import vCards to contacts in Org-based formats 
(and export contacts from Org-based formats to vCards).

One of the package's users had imported a set of contacts, then 
expected to be able to sort those contacts according to Croatian 
rules, using `org-sort' (from `org.el'). However, to quote the 
user, this resulted in the contacts being sorted:

    according to the English alphabet rules where the contact 
    entries which start with Croatian characters (Č,Ć,Đ,Š,Ž) are 
    at the end of the list, iow. after 'Z' entries, although it 
    should go like this:

    A,B,C,Č,Ć,D,Dž,Đ,..S,Š,..Z,Ž 


Alexis.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-14  0:55       ` Alexis
@ 2015-04-14 14:57         ` Eli Zaretskii
  2015-04-14 23:55           ` Alexis
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2015-04-14 14:57 UTC (permalink / raw)
  To: Alexis; +Cc: michael.albinus, 20316

> From: Alexis <flexibeast@gmail.com>
> Cc: Eli Zaretskii <eliz@gnu.org>, michael.albinus@gmx.de
> Date: Tue, 14 Apr 2015 10:55:53 +1000
> 
>     So by default, Emacs sorts disregarding locale-specific ordering, basically using the Unicode codepoints of the characters to order them. 
> 
> This makes sense given what you've said above, but can this still be referred to as 'lexicographic' ordering? To me, 'lexicographic ordering' is ordering as per a dictionary for the relevant language, not by codepoint for an arbitrary encoding. Is this wrong?

I think we use "lexicographic" for lack of a more accurate word.  We
could use something like "code point (binary) order", but would that
be clear enough to be useful?

Note that we are not alone in this; at least this page:

  http://en.cppreference.com/w/cpp/string/byte/strcoll

says that the C function 'strcmp' does a "lexicographical comparison".
So do a few other similar pages; google for "difference between strcmp
and strcoll".

> One of the package's users had imported a set of contacts, then expected to be able to sort those contacts according to Croatian rules, using `org-sort' (from `org.el'). However, to quote the user, this resulted in the contacts being sorted according to the English alphabet rules where the contact entries which start with Croatian characters (Č,Ć,Đ,Š,Ž) are at the end of the list, iow. after 'Z' entries, although it should go like this:
> 
> A,B,C,Č,Ć,D,Dž,Đ,..S,Š,..Z,Ž

That's "collation order" in action, note that the diacritic order is
applied _after_ the alphabetic order of the base characters.  That's
what string-collate-lessp does.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-14 14:57         ` Eli Zaretskii
@ 2015-04-14 23:55           ` Alexis
  2015-04-15  1:23             ` Stefan Monnier
  0 siblings, 1 reply; 11+ messages in thread
From: Alexis @ 2015-04-14 23:55 UTC (permalink / raw)
  To: 20316; +Cc: michael.albinus


Eli Zaretskii <eliz@gnu.org> writes:

> I think we use "lexicographic" for lack of a more accurate word. 
> We could use something like "code point (binary) order", but 
> would that be clear enough to be useful?

i would certainly find that more useful overall, as i think it's 
less ambiguous (to me) than 'lexicographic order' in this 
context. i assume it's "code point [according to the overall 
encoding of the relevant buffer]"? And given your earlier point, 
i'm guessing it would also be useful to say something along the 
lines of "If the data being sorted contains multiple encodings, 
all bets are off"? (Which is relevant in the `org-vcard' case of 
people possibly trying to sort contacts whose names are based in a 
variety of locales.)

> Note that we are not alone in this; at least this page:
>
>   http://en.cppreference.com/w/cpp/string/byte/strcoll
>
> says that the C function 'strcmp' does a "lexicographical 
> comparison".  So do a few other similar pages; google for 
> "difference between strcmp and strcoll".

Well, that to me feels like continued holdover from the C+ASCII 
(or at best Latin-1) 'byte == character' mindset ....

>> A,B,C,Č,Ć,D,Dž,Đ,..S,Š,..Z,Ž
>
> That's "collation order" in action, note that the diacritic 
> order is applied _after_ the alphabetic order of the base 
> characters.  That's what string-collate-lessp does.

*nod* That's why my first thoughts about this issue went to 
collation settings; given that (it seems to me) Emacs has a far 
better handle on i18n and m17n issues than most software, i 
assumed that sorting-by-collation-order would already be available 
in 24.x. However, given what you've said, i've now got a better 
understanding of why implementing this is not straightforward.

Thanks for taking the time to explain all this! 


Alexis.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE
  2015-04-14 23:55           ` Alexis
@ 2015-04-15  1:23             ` Stefan Monnier
  0 siblings, 0 replies; 11+ messages in thread
From: Stefan Monnier @ 2015-04-15  1:23 UTC (permalink / raw)
  To: Alexis; +Cc: michael.albinus, 20316

> ambiguous (to me) than 'lexicographic order' in this context. i assume it's
> "code point [according to the overall encoding of the relevant buffer]"?

No, it's "code point according to Unicode" since we use Unicode
internally and convert to/from the external encoding during input/output.


        Stefan





^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-04-15  1:23 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-13  5:22 bug#20316: 24.5; `string-lessp' doesn't respect value of LC_COLLATE Alexis
2015-04-13  5:59 ` Alexis
2015-04-13  6:18 ` Michael Albinus
2015-04-13  6:42   ` Alexis
2015-04-13  6:53     ` Michael Albinus
2015-04-13 14:48     ` Eli Zaretskii
2015-04-14  0:55       ` Alexis
2015-04-14 14:57         ` Eli Zaretskii
2015-04-14 23:55           ` Alexis
2015-04-15  1:23             ` Stefan Monnier
2015-04-13 14:10 ` Paul Eggert

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).