zsh上的Ruby gem选项卡完成会产生“两倍的剩余参数定义”错误?

时间:2019-02-12 17:40:06

标签: ruby rubygems zsh

当我按下gem push <tab>时,它会显示此错误(无论目录是否包含任何.gem文件):

_arguments:comparguments:325: doubled rest argument definition: *:gem:_files -g "*.gem(-.)"
_arguments:comparguments:325: doubled rest argument definition: *:gem:_files -g "*.gem(-.)"
_arguments:comparguments:325: doubled rest argument definition: *:gem:_files -g "*.gem(-.)"

我不知道如何解决此问题,Google也无济于事。我的fpath

> echo $fpath
/Users/robenkleene/.zsh/completion
/usr/local/share/zsh/site-functions
/usr/local/Cellar/zsh/5.7/share/zsh/functions

我已经尝试通过自制程序卸载并重新安装Ruby,因为上面的“地窖”路径包含一个_gem文件,我相信它定义了此完成功能,但是没有用。

还有其他想法吗?谢谢!

(此外,如果有人对我在哪里提交错误报告有任何建议,这也将有所帮助,再次感谢!)

2 个答案:

答案 0 :(得分:0)

我为这个问题制定了自己的糟糕解决方案,但这总比没有好。

我将_gem文件从/usr/local/Cellar/zsh/5.7/share/zsh/functions复制到/Users/robenkleene/.zsh/completion,然后修改了有问题的行(请注意,这仅是因为我的{{1}中有fpath=(~/.zsh/completion $fpath) }):

zshrc

因此,我删除了- args+=( '*:gem:_files -g "*.gem(-.)"' ) + args=( '*:gem:_files -g "*.gem(-.)"' ) 。这似乎可行,但是我希望有一个更优雅的解决方案和/或任何有关原因的信息(基于我的Google搜索),我似乎是唯一经历过此过程的人。

答案 1 :(得分:0)

我在运行默认zsh 5.7.1的macOS 10.15.6上。在默认的zsh gem补全中,我发现push包含在带有远程gem名称的命令列表中-不应,它只包含gem文件的路径:

$ gem push --help                                                      
Usage: gem push GEM [options]

我将以下补丁应用于$fpath中更高文件的副本,现在它对我有用:

--- /usr/share/zsh/5.7.1/functions/_gem
+++ ~/.zsh/completion.d/_gem
@@ -56,7 +56,7 @@
     check|cleanup|contents|dependency|list|open|pristine|rdoc|uninstall|unpack|update)
       args+=( '(--all --skip)*:installed gem:->gems-local' )
     ;|
-    fetch|install|lock|owner|push|search|yank)
+    fetch|install|lock|owner|search|yank)
       args+=( '*:gem:->gems-remote' )
     ;|
     cleanup|uninstall)

我不确定在哪里贡献这个补丁。 ?