Mengurutkan garis dengan karakter beraksen


9

Saat menyortir garis dengan sort-linesgaris dimulai dengan ädatang setelah garis dimulai dengan z. Alangkah baiknya jika garis dapat diurutkan mengabaikan aksen, Umlaut, dll, seperti dalam kamus. Idealnya sebuah garis yang dimulai dengan ändernharus ada setelah garis yang dimulai dengan anderen.

Ada solusi sederhana untuk mencari karakter beraksen yang disebutkan di https://superuser.com/a/675172/ tetapi tidak dapat digunakan di sini. Saya bertanya-tanya apakah solusi itu dapat diadaptasi dalam situasi ini.


1
FYI, melipat dan mengelompokkan berdasarkan karakter yang diperluas telah diterapkan di isearchdan query-replacedalam versi emacs berikutnya.
Pengguna Emacs

Jawaban:


5

Saya menggunakan fungsi ini untuk itu

(defun my-sort-lines ()
    (interactive)
    (shell-command-on-region (point-min) (point-max) "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t ))

EDIT: Untuk mengurutkan wilayah atau buffer:

  (defun my-sort-lines-buffer ()
    (interactive)
    (shell-command-on-region (point-min) (point-max) "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t ))
  (defun my-sort-lines-region (start end) 
    (interactive "r") 
    (shell-command-on-region start end "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t))
  (defun my-sort-lines-region-or-buffer ()
    (interactive)
    (save-excursion
      (if (region-active-p)
          (progn
            (my-sort-lines-region (region-beginning) (region-end))
            (message "Sorted selected region"))
        (progn
          (my-sort-lines-buffer)
          (message "Sorted buffer")))))

Terima kasih telah berbagi! Bagaimana dengan penggantian nama my-sort-lines-buffer? Atau menulis ulang (defun my-sort-lines (start end) (interactive "r") (shell-command-on-region start end "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t))?
Marco Wahl

@Marco Wahl: Saya mengedit posting saya dengan proposisi Anda.
djangoliv

Saat menjalankan ini saya mendapatkan kesalahan 'LC_COLLATE' tidak dikenali sebagai perintah internal atau eksternal atau program yang dapat dieksekusi.
Nama

@Nama Mungkin Anda berada di Windows. Maaf fungsi ini hanya berfungsi di linux ...
djangoliv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.