【问题标题】:youcompleteme can not complete sigaction struct correctlyyoucompleteme 无法正确完成 sigaction 结构
【发布时间】:2017-09-04 05:06:38
【问题描述】:

如您在上面看到的,youcompleteme 无法正确完成可能具有以下成员的 sigaction 结构(当然我知道 sa_restoreer 元素已过时,不应使用):

那么,我的 youcompleteme 有什么问题吗?如何让它正常工作?

注意:我真正想问的是,为什么你不能为我显示更多像 sa_hander 这样的 sigaction 成员,而只显示 sa_restorer、sa_mask 和 sa_flags。

【问题讨论】:

  • sa_restorer 字段已过时且未指定。您的youcompleteme 没有显示是正确的
  • 我知道,我只是想知道为什么我的 youcompletemy 不能正常工作
  • 在 $PLUGIN 上需要帮助吗?使用 $PLUGIN 的问题跟踪器。
  • 我注意到代沟。我已经足够老了(58 岁),可以在没有花哨的自动完成的情况下工作,相反,我对当前的自动完成器在实践中可以实现的目标感到兴奋。在某些方面,你们这一代人被可用的伟大工具“宠坏了”——不要把这当成个人的。你想要更多是对的,但是你应该为免费软件做出贡献工具(并努力改进它们,或者花钱请人这样做)。
  • 我的意思是 YCM 有两个专门的支持渠道。使用它们。

标签: c linux vim youcompleteme


【解决方案1】:

仔细阅读signal(7)signal-safety(7)sigaction(2)sa_restorer 已过时,禁止使用。

如何让它正常工作?

所以 YouCompleteMe 是正确的(而且很聪明!)没有显示它

(你的问题应该是:“YouCompleteMe 怎么聪明到可以隐藏sa_restorer?”)

更有趣的问题是为什么它没有显示它而 sa_restorer 显然出现在例如/usr/include/x86_64-linux-gnu/bits/sigaction.h,但这是一个不同的问题(我不知道它的答案)。如果你完成了特别标准函数(例如,有一些关于它们的配置文件),我不会感到惊讶。 BTW YouCompleteMefree softwareopen source 所以你可以研究它的源代码

sa_restorer 的类型是__sigrestore_t(请参阅/usr/include/asm-generic/signal.h),以下划线开头的标识符保留给实现,不应由用户代码使用,因此 YouCompleteMe 可能会跳过此类字段或数据。这只是一个猜测。请自己查看YouCompleteMe源代码(也可能是它使用的其他工具的代码,如libclang)。

我真正想问的是,你为什么不能给我展示更多像 sa_handler 这样的 sigaction 成员

在我的 Linux 系统上,sa_handler 是一个宏,因为/usr/include/x86_64-linux-gnu/bits/sigaction.h(内部包含来自<signal.h>)包含:

 # define sa_handler    __sigaction_handler.sa_handler

如果 YouCompleteMe 不在完成菜单中显示所有宏,我不会感到惊讶。他们太多了!这(只是一个猜测)可能解释了为什么 sa_handler 没有明确建议完成。

(也许如果你输入siga.sa_,完成者可能更明智,建议sa_handler但我没有尝试)

您的struct sigaction 只是文档 所告诉的内容。实际的实现更为复杂。如果您想了解,请研究它,然后改进 YouCompleteMe 的行为。 YouCompleteMeYouCompleteMe 提出一个补丁(通过几周或几个月的工作)来改善它的行为。

您在 YouCompleteMe 上的未来补丁可能会专门处理以下划线开头的标识符和使用它们的预处理器宏。这是一个有趣的项目,但可能需要几个月的时间。

【讨论】:

  • 我的意思是为什么你不能为我完成 sa_handler 或 sa_flags 或其他成员?
  • 这是一个不同的问题。我会向 YouCompleteMe 的开发人员询问,也许是通过填写错误请求。顺便说一句,在我的 Linux 上 sa_handler 是一个 #define-d 宏。
  • 那么,你的意思是这是一个无法解决的问题?
  • 只要努力,是可以解决的。您愿意花几个月的时间来改进 YouCompleteMe 吗?如果是,请这样做,这就是免费软件的工作原理。
  • 顺便说一句,如果自动补全恰好与 Halting Problem 相关,我不会感到惊讶,但我没有想到这一点。
猜你喜欢
  • 2015-07-15
  • 2018-04-18
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多