- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
自动完成
不适用于具有多个模块的 Emacs C++ 项目。每个子模块所依赖的头文件既存在于模块本身,也存在于其他模块中。换句话说,一个模块可以包括另一个模块的头文件。
下面是我的示例源代码:
.
├── CMakeLists.txt
├── my_inc
│ ├── CMakeLists.txt
│ ├── myadd.cpp
│ └── myadd.h
├── README.md
└── src
├── CMakeLists.txt
├── Hello.java
├── helper.cpp
├── helper.h
└── main.cpp
main.cpp
:
#include "myadd.h"
#include "helper.h"
int main() {
MyAdd add_obj;
Helper h;
h.toString(); // Auto-complete works since Helper is in the same directory.
add_obj. // Auto-complete for add_obj does not work
// because myadd.h is in another directory (my_inc).
}
当我在 h
之后键入 .
时,方法列表会弹出,但对于变量 add_obj
则不会,它的类定义在来自其他模块 my_inc
的 myadd.h
。
我已经尝试了一些解决方案(与 CEDET 相关):
(ede-cpp-root-project)
此解决方案在这里确实有效。我不想申请这个,因为
它会使我的 .emacs
变大,因为我有很多项目。
:include-path
这里无法处理 20 多个子模块的复杂头依赖,这使得这个解决方案更像玩具。我更喜欢将配置与 .emacs
分开。
EDE项目
我通过 ede-new
和 c c 创建项目和目标。 t,但这仅用于编译而不是名称,方法自动完成。
ede-generic-project
如 this question 的解决方案中所述和 manual on ede-generic-project
但我收到此错误:
eieio-oref: Wrong type argument: (or eieio-object-p class-p), nil
一旦我执行:
M-x ede-customize-project
RET 在 (ede-enable-generic-projects)
之后。
环境:我使用 Emacs 24.3 并安装了 auto-complete
和 cedet2.0
。
最佳答案
处理涉及项目、头文件和完成的问题时,第一步是启用(global-semantic-decoration-mode 1)
,其中包括一种机制,可以在可以时以红色突出显示头文件找到了。这有助于快速解决配置问题。
如果您想保持您的 .emacs
文件干净并获得一些项目支持,那么通用项目类型是一个不错的选择,直到该错误开始出现为止。在撰写本文时(2014 年 7 月 14 日),该问题已在 ede-ldf 分支下的 CEDET bzr 存储库中修复,并将很快合并。
如果你有很多子模块,你也可以依赖像 GNU Global 这样的工具。 cedet 手册有一个关于使用 GNU Global 的简短部分,其中包含帮助它定位文件所需的片段。这样,Global 将跟踪您的所有 header ,然后可用于查找它们。如果您所有的 header 都有一个唯一的名称,那么您就万事大吉了。如果文件“myadd.h”存在于多个地方,并且您需要根据 C 文件所在的位置选择哪个“myadd.h”,那么您将不走运,并且需要自定义项目类型来执行此操作。
每次配置更改后,您都需要使用要找到的 header 对缓冲区进行强制重新解析,以便刷新缓存。使用 C-u M-x bovinate RET
强制执行。
关于c++ - 跨目录头文件的 Emacs-24 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292833/
从 Redis 获取消息时,onDone:(){print('done')} 从未起作用。 import 'package:dartis/dartis.dart' as redis show PubS
昨天我玩了一些vim脚本,并设法通过循环来对当前输入的内容进行状态栏预测(请参见屏幕截图(灰色+黄色栏))。 问题是,我不记得我是怎么得到的,也找不到我用于该vim魔术的代码片段(我记得它很简单):它
我尝试加载 bash_completion在我的 bash (3.2.25) 中,它不起作用。没有消息等。我在我的 .bashrc 中使用了以下内容 if [ -f ~/.bash_completio
我正在尝试构建一个 bash 完成例程,它将建议命令行标志和合适的标志值。例如在下面 fstcompose 命令我想比赛套路先建议 compose_filter= 标志,然后建议来自 [alt_seq
当我尝试在重定向符号后完成路径时,bash 完成的行为就好像它仍在尝试在重定向之前完成命令的参数一样。 例如: dpkg -l > /med标签 通过在 /med 之后点击 Tab我希望它完成通往 /
我的类中有几个 CAKeyframeAnimation 对象。 他们都以 self 为代表。 在我的animationDidStop函数中,我如何知道调用来自哪里? 是否有任何变量可以传递给 CAKe
我有一个带有 NSDateFormatter 的 NSTextField。格式化程序接受“mm/dd/yy”。 可以自动补全日期吗?因此,用户可以输入“mm”,格式化程序将完成当前月份和年份。 最佳答
有一个解决方案可以使用以下方法完成 NSTextField : - (NSArray *)control:(NSControl *)control textView:(NSTextView *)tex
我正在阅读 Passport 的文档,我注意到 serialize()和 deserialize() done()被调用而不被返回。 但是,当使用 passport.use() 设置新策略时在回调函数
在 ubuntu 11.10 上的 Firefox 8.0 中,尽管 img.complete 为 false,但仍会调用 onload 函数 draw。我设法用 setTimeout hack 解决
假设我有两个与两个并行执行的计算相对应的 future 。我如何等到第一个 future 准备好?理想情况下,我正在寻找类似于Python asyncio's wait且参数为return_when=
我正在寻找一种 Java 7 数据结构,其行为类似于 java.util.Queue,并且还具有“最终项目已被删除”的概念。 例如,应可以表达如下概念: while(!endingQueue.isFi
这是一个简单的问题。 if ($('.dataTablePageList')) { 我想做的是执行一个 if 语句,该语句表示如果具有 dataTablesPageList 类的对象也具有 menu
我用replaceWith批量替换了许多div中的html。替换后,我使用 jTruncate 来截断文本。然而它不起作用,因为在执行时,replaceWith 还没有完成。 我尝试了回调技巧 ( H
有没有办法调用 javascript 表单 submit() 函数或 JQuery $.submit() 函数并确保它完成提交过程?具体来说,在一个表单中,我试图在一个 IFrame 中提交一个表单。
我有以下方法: function animatePortfolio(fadeElement) { fadeElement.children('article').each(function(i
我刚刚开始使用 AndEngine, 我正在像这样移动 Sprite : if(pValueY < 0 && !jumping) { jumping =
我正在使用 asynctask 来执行冗长的操作,例如数据库读取。我想开始一个新 Activity 并在所有异步任务完成后呈现其内容。实现这一目标的最佳方法是什么? 我知道 onPostExecute
我有一个脚本需要命令名称和该命令的参数作为参数。 所以我想编写一个完成函数来完成命令的名称并完成该命令的参数。 所以我可以这样完成命令的名称 if [[ "$COMP_CWORD" == 1 ]];
我的应用程序有一个相当奇怪的行为。我在 BOOT_COMPLETE 之后启动我的应用程序,因此在我启动设备后它是可见的。 GUI 响应迅速,一切正常,直到我调用 finish(),按下按钮时,什么都没
我是一名优秀的程序员,十分优秀!