індикгоробецьабориґенєнотїжакґаваящіркаокунь
абориґенгоробецьокуньящіркаєнотіндикїжакґава
$ raku -e'say sort "і","ї","є","ґ","я","а","г","о"'(а г о я є і ї ґ)
Це мені нагадує цю тему. Сам не використовую Emac, тому не підкажу детальніше.
glibc має підтримку української локалі, і якщо її вибрати сортування всіх літер має відбуватися правильно (дякувати Володимиру) тож можливо вам треба задати локаль перед запуском emacs?
$ LANG=uk_UA.UTF-8 emacs$ LANGUAGE=uk emacs
Спробуйте у файлі .emacs.el додати (setenv "LANG" "uk_UA.UTF-8")
(… "LANG=uk_UA.UTF-8" …)
$ localeLANG=uk_UA.UTF-8LANGUAGE=LC_CTYPE="uk_UA.UTF-8"LC_NUMERIC="uk_UA.UTF-8"LC_TIME="uk_UA.UTF-8"LC_COLLATE="uk_UA.UTF-8"LC_MONETARY="uk_UA.UTF-8"LC_MESSAGES="uk_UA.UTF-8"LC_PAPER="uk_UA.UTF-8"LC_NAME="uk_UA.UTF-8"LC_ADDRESS="uk_UA.UTF-8"LC_TELEPHONE="uk_UA.UTF-8"LC_MEASUREMENT="uk_UA.UTF-8"LC_IDENTIFICATION="uk_UA.UTF-8"LC_ALL=
Спробуйте (setenv "LC_ALL" "uk_UA.UTF-8"), вона повинна перекрити всі LC_* і не давати їх змінити.
Дуже сумнівно, щоб в Emacs використовувалася власна бібліотека замість системної, а от поправити налаштування локалі для чогось на "С" - десь може бути.
(defun sortl () "Сортує рядки командою оболонки sort." (interactive) (let ((beg (region-beginning)) (end (region-end)) (buf "*Shell Command Output*"))) (shell-command-on-region beg end "sort") (delete-region beg end) (insert-buffer buf) (goto-char end) (kill-buffer buf))