Estou trabalhando na criação de minhas próprias sequências de teclas de composição em ~/.XCompose
. À medida que adiciono mais e mais sequências, ocasionalmente cometo erros de digitação ou uso a mesma sequência para símbolos diferentes.
Exemplos:
Erros de digitação/códigos inexistentes
<Multi_key> <non-existent-keysym> : other-non-existent-keysym
Colisão total
<Multi_key> <a> <b> : x # overrule by 2nd rule
<Multi_key> <a> <b> : y
Colisões de prefixo
<Multi_key> <a> <b> <c> : y
<Multi_key> <a> <b> : x # overruled by 1st rule
Pergunta
Existe um comando que valida meu ~/.XCompose
arquivo. O requisito mínimo é uma resposta binária: » seu XCompose está livre de erros « ou » seu XCompose contém erros «. Caso haja erros, uma mensagem de erro útil como " colisão para prefixo de sequência de regras " seria bem-vinda.
O que eu tentei
Eu criei ~/.XCompose
contendo todos os erros acima e abri um editor de texto. O editor de texto não apresenta erros (no console). As sequências corretas e não anuladas funcionam, todas as outras sequências são ignoradas.
eu li man 5 XCompose
. Na própria documentação, não encontrei nada útil. Eu olhei as referências no final de man 5 XCompose
. Apenas mkcomposecache(1)
parece promissor (a julgar pela página de manual pesquisada no Google ), mas parece estar faltando no meu sistema (Linux Mint 18.3). Nem man -k mkcomposecache
nem apt search mkcomposecache
encontrar nada.
Editar: Como sugeriu @quixotic, compilei a mkcomposecache
partir das fontes e executei-o, mas seu status de saída é 1
, independentemente do arquivo de composição que eu escolher (com ou sem erros). Não há nenhuma mensagem de erro. Nenhum cache é gerado. Exemplo de como chamo o programa:
$ mkcomposecache en_US.UTF-8 /usr/share/X11/locale/en_US.UTF-8/Compose /tmp/
* XOpenDisplay: Success
$ echo $?
1
O arquivo /usr/share/X11/locale/en_US.UTF-8/Compose
é o arquivo de composição original do Ubuntu e deve estar livre de erros. Eu acho que há uma razão pela qual não é empacotado nos repositórios Ubuntu e Arch Linux.
Duvido que mkcomposecache
seja disso que preciso, mesmo que funcione.
Um pouco grosseiro, mas você pode simplesmente hackear algo usando matrizes associativas, por exemplo
awk
:Para um arquivo de entrada como
este comando
irá produzir
Para ver também a linha com a qual ele está em conflito:
Resultado:
Fiz engenharia reversa dessa extensão e a transformei em um pequeno aplicativo da web.
Você pode usá-lo aqui: https://jsfiddle.net/9p1s60of/
Aqui está uma imagem da ferramenta em ação: