Conclusão confusa ao inserir caracteres Unicode

12

Acabei de descobrir C-x 8 RETcomo uma maneira de inserir caracteres Unicode pelo nome Unicode ou código hexadecimal. Ainda não memorizei todos os nomes de caracteres Unicode, por isso nem sempre encontro o caractere certo.

Há, por exemplo, o caractere "SNOW CAPPED MOUNTAIN". Se eu digitar apenas "MOUNTAIN", esse personagem não aparecerá na lista de conclusão. Eu preciso me lembrar de procurar por "SNOW" para ver esse caractere em particular na lista de conclusões.

Como alguém que se tornou dependente do IDO para qualquer coisa que envolva a conclusão, essa falta de flexibilidade é bastante irritante. Eu uso ido-ubiquitous-mode.

Como posso usar a correspondência do tipo IDO para entrada Unicode? Como posso usar a conclusão flexível para TODAS AS COISAS ?

(Eu aceitaria abandonar o modo IDO se houvesse algo melhor.)

rekado
fonte
Como solução alternativa para o mesmo problema, eu digitaria C-q SPC mountain TAB. Isso corresponderia a qualquer nome de personagem com "montanha" como não-primeira palavra.
legoscia
1
Dê uma olhada em emacs.stackexchange.com/a/3139/2094 para conclusão com base em leme.
abo-abo
1
Hmm, isso soa como um bug que você pode relatar no rastreador de problemas do projeto .
Wasamasa
1
Se você digitar *cap*mou TAB, obterá toda a conclusão.
Juancho
@Juancho isso é verdade, mas não é o comportamento que eu quero
rekado

Respostas:

8

Como o @wasamasa sugeriu, ido-ubiquitousdeve cuidar da conclusão quando insert-charfor usado. Há um relatório de bug que foi fechado em 2013 , mas ainda vejo esse comportamento no Emacs 24.4 e na ido-ubiquitousversão 20140904.1547, por isso arquivei outro relatório de bug .

EDITAR:

O mantenedor de ido-ubiquitousescreveu isto:

Ok, eu descobri o problema. Como existem muitos caracteres unicode, a lista de conclusões é superior ido-ubiquitous-max-itemse ido-ubiquitousestá se desativando por esse motivo. No meu sistema, existem quase 40k conclusões disponíveis, e o padrão ido-ubiquitous-max-itemsé 30k. Configurá-lo para 50k permite a idoconclusão insert-charpara mim. Então tente personalizar isso.

De fato, (setq ido-ubiquitous-max-items 50000)conserta.

rekado
fonte
Para ido-completing-read+, use (setq ido-cr+-max-items 50000)para corrigir este erro.
Bach Lien
5

Para ser snow capped mountainincluído quando você digita mount, convém:

(push '(unicode-name (styles substring)) completion-category-overrides)

Na verdade, talvez esse substringestilo deva ser ativado por padrão para nomes unicode, como é para nomes de buffer. Talvez você deva fazer lobby por isso M-x report-emacs-bug.

Stefan
fonte
3

Se você usar Sincelos , C-x 8 RETpoderá usar substring, regexp ou correspondência difusa durante a conclusão. E você pode usar a conclusão progressiva para comparar com vários padrões (por exemplo, simples).

Além disso, se a opção icicle-read-char-by-name-multi-completion-flagfor não nil, o que é por padrão, você poderá usar a conclusão múltipla para corresponder a qualquer combinação destes:

  • o nome Unicode
  • o ponto de código Unicode , como um número hexidecimal
  • o próprio caractere (como aparece no texto, não um número inteiro)

Os candidatos à conclusão que você vê no buffer *Completions*contêm todos esses componentes - WYSIWYG.

Por que você pode querer comparar com o próprio personagem ? Para ver os pontos de código Unicode correspondentes e os nomes de caracteres, incluindo nomes antigos. Por exemplo, para o personagem ` (sotaque grave), você recebe esses dois candidatos à conclusão:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `
Desenhou
fonte
Eu acho que realmente deveria experimentar pingentes um dia. Obrigado pela sua resposta.
rekado
0

Você pode usar o comando apropos-charna biblioteca apu.elpara mostrar todos os caracteres Unicode cujos nomes correspondem a uma regexp ou lista de palavras digitadas. Por padrão, as palavras são correspondidas como substrings.

Na lista de correspondências, você pode pressionar ^para inserir o caractere mostrado na linha atual no buffer em que você chamou apropos-char, no ponto. Ou você pode pressionar C-ypara copiar esse caractere para o anel de extermínio (ou M-ypara a seleção secundária ). (Clique RETpara ver mais informações sobre o char.)

Desenhou
fonte