用于在非标准项目结构的标题和实现之间切换的emacs功能 我正在研究一个C++项目,它有一个不寻常的源布局和包含文件(至少对于我所看到的来说是不常见的),我试图想出一个帮助Emacs函数来切换.CPP和.H.H文件之间(对于这个特殊的情况,所以不需要是超级灵活的)因为ff查找其他文件在此设置中失败。这对我来说也是一次学习elisp的经历
项目结构设置如下:用于在非标准项目结构的标题和实现之间切换的emacs功能 我正在研究一个C++项目,它有一个不寻常的源布局和包含文件(至少对于我所看到的来说是不常见的),我试图想出一个帮助Emacs函数来切换.CPP和.H.H文件之间(对于这个特殊的情况,所以不需要是超级灵活的)因为ff查找其他文件在此设置中失败。这对我来说也是一次学习elisp的经历,c++,emacs,elisp,C++,Emacs,Elisp,项目结构设置如下: 源文件位于projectname/src/namespacepath/*.cpp中 相应的include文件使用projectname/include/namespacepath/*.h 此外,我可能有一个额外的项目签出(projectname2/…),cpp和h之间的切换应该在项目边界内进行 换句话说,对于命名空间a::b::c中Foo类的源文件Foo.cpp,我有: project/src/a/b/c/Foo.cpp 项目/包括/a/b/c/Foo.h “proj
- 源文件位于projectname/src/namespacepath/*.cpp中
- 相应的include文件使用projectname/include/namespacepath/*.h
- project/src/a/b/c/Foo.cpp
- 项目/包括/a/b/c/Foo.h
(defun alternate-include-or-src()
(互动)
(让(
(姓名)
(新名称“”)
(答复t)
)
(setq名称(nreverse(拆分字符串(缓冲区文件名)“/”))
(setq文件名(汽车名称))
(dolist(p(cdr name));;遍历路径组件的反向列表
(如果为repl;;仅进行一次src替换
(如果(字符串=p“src”)
(项目
(setq p“包括”
答复(无)
(setq文件名(concat(文件名,无扩展名文件名)“.h”))
)
(如果(字符串=p“包括”)
(项目
(setq p“src”
答复(无)
(setq文件名(concat(文件名,无扩展名文件名)“.cpp”))
)
)
)
)
(setq新名称(concat p“/”新名称))
)
(setq newname(concat newname文件名))
(如果(file-exists-p newname)
(查找文件名)
)
)
)
我建议您查看cc other file alist
,了解它与ff find other file
一起使用的情况。它允许自定义函数调用,您可以保存一些编码:
例如:
(setq cc-other-file-alist
`(
("\\.cxx$" ,(my-look-for-other-file-1))
("\\.hxx$" ,(my-look-for-other-file-2))))
我建议您查看一下
cc other file alist
,了解它与ff find other file
一起使用的情况。它允许自定义函数调用,您可以保存一些编码:
例如:
(setq cc-other-file-alist
`(
("\\.cxx$" ,(my-look-for-other-file-1))
("\\.hxx$" ,(my-look-for-other-file-2))))
我建议您查看一下
cc other file alist
,了解它与ff find other file
一起使用的情况。它允许自定义函数调用,您可以保存一些编码:
例如:
(setq cc-other-file-alist
`(
("\\.cxx$" ,(my-look-for-other-file-1))
("\\.hxx$" ,(my-look-for-other-file-2))))
我建议您查看一下
cc other file alist
,了解它与ff find other file
一起使用的情况。它允许自定义函数调用,您可以保存一些编码:
例如:
(setq cc-other-file-alist
`(
("\\.cxx$" ,(my-look-for-other-file-1))
("\\.hxx$" ,(my-look-for-other-file-2))))
我建议使用CEDET
语义ia快速跳转
。一旦您正确地配置了它,它应该适用于几乎所有的include。而semanicsymref
反过来也不错。我建议使用CEDETsemantic ia fast jump
。一旦您正确地配置了它,它应该适用于几乎所有的include。而semanicsymref
反过来也不错。我建议使用CEDETsemantic ia fast jump
。一旦您正确地配置了它,它应该适用于几乎所有的include。而semanicsymref
反过来也不错。我建议使用CEDETsemantic ia fast jump
。一旦您正确地配置了它,它应该适用于几乎所有的include。另外,semanic symref
也不错。谢谢,它几乎是这样工作的:我稍微修改了我的备用include或src函数,以获取filename参数,并为与预期目录结构不匹配的路径返回nil,我设置了cc other file alist来调用.cpp和.h的函数。然而,现在我对任何其他项目都有一个问题,ff find other file不再适用于典型用例。如何使此配置返回默认行为?我的建议是在c-mode-common-hook中添加一个钩子,当您的路径与“特殊”项目的路径匹配时,使cc其他文件成为本地的,并将该值分配给它。谢谢,几乎是这样工作的:我稍微修改了我的备用include或src函数,以获取filename参数,并为与预期目录结构不匹配的路径返回nil,我设置了cc other file alist来调用.cpp和.h的函数。然而,现在我对任何其他项目都有一个问题,ff find other file不再适用于典型用例。如何使此配置返回默认行为?我的建议是在c-mode-common-hook中添加一个钩子,当您的路径与“特殊”项目的路径匹配时,使cc其他文件成为本地的,并将该值分配给它。谢谢,几乎是这样工作的:我稍微修改了我的备用include或src函数,以获取filename参数,并为与预期目录结构不匹配的路径返回nil,我设置了cc other file alist来调用m