Classificação de linhas com caracteres acentuados


9

Ao classificar as linhas pelas sort-lineslinhas que começam com, ävem depois das linhas que começam com z. Seria bom se as linhas pudessem ser classificadas ignorando os sotaques, trema, etc, como em um dicionário. Idealmente, uma linha que começa com änderndeve aparecer após uma linha que começa com anderen.

Existe uma solução simples para pesquisar caracteres acentuados mencionados em https://superuser.com/a/675172/, mas não pode ser usada aqui. Gostaria de saber se essa solução pode ser adaptada nessa situação.


11
Para sua informação, dobrar e agrupar com base em caracteres estendidos foi implementado na isearche query-replacena próxima versão do emacs.
Emacs usuário

Respostas:


5

Eu uso essa função para isso

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

EDIT: Para classificar a região ou o 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")))))

Obrigado por compartilhar! Que tal renomear para my-sort-lines-buffer? Ou reescrever para (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: edito meu post com sua proposta.
djangoliv

Ao executar isso, recebo o erro 'LC_COLLATE' não é reconhecido como um comando interno ou externo nem como um programa executável.
Name

@Name Talvez você esteja no Windows. Desculpe esta função apenas trabalho no linux ...
djangoliv
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.