验证 ~/.XCompose

验证 ~/.XCompose

我正在努力在~/.XCompose.当我添加越来越多的序列时,有时我会犯错或对不同的符号使用相同的序列。

例子:

拼写错误/不存在的代码

<Multi_key> <non-existent-keysym> : other-non-existent-keysym

全面碰撞

<Multi_key> <a> <b> : x      # overrule by 2nd rule
<Multi_key> <a> <b> : y

前缀冲突

<Multi_key> <a> <b> <c> : y 
<Multi_key> <a> <b> : x      # overruled by 1st rule

问题

是否有一个命令可以验证我的~/.XCompose文件。最低要求是二元答案:要么 »您的 XCompose 没有错误“ 或者 ”您的 XCompose 包含错误«。如果出现错误,会显示有用的错误消息,例如 »规则序列前缀的冲突 « 将受到欢迎。

我尝试过的

我创建了~/.XCompose包含上面所有错误的内容并打开了一个文本编辑器。文本编辑器没有显示错误(在控制台上)。正确且未被推翻的序列有效,所有其他序列都将被忽略。

我读man 5 XCompose。在文档本身中,我发现没有任何帮助。我看了最后的参考文献man 5 XCompose。只是mkcomposecache(1)看起来有希望(从谷歌搜索手册页),但在我的系统(Linux Mint 18.3)上似乎丢失了。man -k mkcomposecache也没有apt search mkcomposecache找到任何东西。

编辑:正如@quixotic所建议的,我编译mkcomposecache来源并运行它,但1无论我选择什么撰写文件(有或没有错误),它的退出状态都是 。没有错误消息。不生成缓存。我如何调用该程序的示例:

$ mkcomposecache en_US.UTF-8 /usr/share/X11/locale/en_US.UTF-8/Compose /tmp/
* XOpenDisplay: Success
$ echo $?
1

该文件/usr/share/X11/locale/en_US.UTF-8/Compose是 Ubuntu 的原始撰写文件,应该没有错误。我想它没有打包在 Ubuntu 和 Arch Linux 存储库中是有原因的。

我怀疑这mkcomposecache就是我所需要的,即使它能起作用。

答案1

我进行了逆向工程这个扩展并将其制作成一个小型网络应用程序。

您可以在这里使用它:https://jsfiddle.net/9p1s60of/

这是该工具正在运行的图像:

正在使用的工具

答案2

有点粗糙,但你可以使用关联数组快速将某些东西组合在一起,例如awk

对于像这样的输入文件

<Multi_key> <a> <t> : y
<Multi_key> <a> <g> : y
<Multi_key> <a> <b> : x
<Multi_key> <a> <b> : y
<Multi_key> <a> <x> <c> : y 
<Multi_key> <a> <x> : x
<Multi_key> <a> <g> : Q
<Multi_key> <a> <n> : y

这个命令

awk '!d[$2][$3]{d[$2][$3]=1;next} {print $0 " PROBLEM!"}' myFile

将输出

<Multi_key> <a> <b> : y PROBLEM!
<Multi_key> <a> <x> : x PROBLEM!
<Multi_key> <a> <g> : Q PROBLEM!

还要查看与之冲突的行:

awk 'c=d[$2][$3]{print $0 " COLLISION: " c;next} {d[$2][$3]=$0}' myFile

结果:

<Multi_key> <a> <b> : y COLLISION: <Multi_key> <a> <b> : x
<Multi_key> <a> <x> : x COLLISION: <Multi_key> <a> <x> <c> : y
<Multi_key> <a> <g> : Q COLLISION: <Multi_key> <a> <g> : y

相关内容