【问题标题】:Emacs, Objective-C, and autocompleteEmacs、Objective-C 和自动完成
【发布时间】:2010-10-14 16:49:01
【问题描述】:

我最近切换到 emacs 进行代码编辑,而且大部分情况下效果很好。

但是,对于 Objective-C,我发现自己缺少 Xcode 的自动完成功能,因为我无法记住长函数名称,例如

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen;

有没有办法在 emacs 上获得 Xcode 样式的自动完成功能?

另外,我应该有什么好的包来帮助 Cocoa 或 Objective-C?

【问题讨论】:

  • 我会注意到您可以在 Xcode 中使用 Emacs 键绑定,这样您就可以在 Xcode 中获得 Emacs 的一些优势。
  • 取消标记 cocoa,因为它与 Objective-C 更相关,并且因为“Cocoa 自动完成”是完全不同的东西。

标签: objective-c emacs autocomplete


【解决方案1】:

编辑文件auto-complete.el(当然是在你安装“auto-complete”包的文件夹中查找):

转到第 165 行,我保证你已经知道该做什么了。 :)

【讨论】:

  • 我更喜欢 M-xcustom-variable RETac-mode RET。或者甚至更好的 .emacs 添加 (setq ac-mode (cons 'objc-mode ac-mode))
【解决方案2】:

我写了一个脚本来导出 Cocoa SDK 中的函数定义为 yasn-p sn-ps:http://github.com/zegal/yasobjc

在 ETAGS 和自动完成的帮助下,完成体验非常接近 XCode。你可以试一试。

【讨论】:

  • 非常聪明,超级有用,我喜欢它!谢谢zegal
  • 干得好!但是,我想知道是否有可能将其与语义联系起来?如果我知道消息名称,yasn-p+yasobjc 可以完成,但如果我需要先找到正确的消息怎么办?语义可以确定所讨论对象的类型,并从 yasn-ps 呈现有效消息。
【解决方案3】:

clang svn 中找到的clang-completion-mode.el 是一个有点bug 和hacky 但非常好的解决方案。

【讨论】:

    【解决方案4】:

    我还没有尝试过,但是 company-mode 有一个 xcode 后端可能会很有帮助:

    http://nschum.de/src/emacs/company-mode/

    【讨论】:

      【解决方案5】:

      我没有使用过 XCode,但是 emacs 带有几种自动完成模式。

      见:

      • 内置 dabbrev-expand(M-/ 运行命令 dabbrev-expand “自动完成”部分写入的文本)
      • AutoComplete
      • HippieExpand

      还有cedet 用于更复杂的东西 - 但不幸的是我认为它不适用于objective-c。

      【讨论】:

      • 谢谢,我不确定这些中的任何一个是否能很好地工作(看起来没有足够的上下文敏感),我想我可能只是坚持使用 XCode for Objective-C。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2014-09-18
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      相关资源
      最近更新 更多