Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在非标准项目结构的标题和实现之间切换的emacs功能 我正在研究一个C++项目,它有一个不寻常的源布局和包含文件(至少对于我所看到的来说是不常见的),我试图想出一个帮助Emacs函数来切换.CPP和.H.H文件之间(对于这个特殊的情况,所以不需要是超级灵活的)因为ff查找其他文件在此设置中失败。这对我来说也是一次学习elisp的经历_C++_Emacs_Elisp - Fatal编程技术网

用于在非标准项目结构的标题和实现之间切换的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
此外,我可能有一个额外的项目签出(projectname2/…),cpp和h之间的切换应该在项目边界内进行

换句话说,对于命名空间a::b::c中Foo类的源文件Foo.cpp,我有:

  • project/src/a/b/c/Foo.cpp
  • 项目/包括/a/b/c/Foo.h
“project”本身保存在一个“src”目录中,我在该目录中保存所有源代码(因此完整路径类似于~/src/project/src/…),这意味着对于路径中最后一次出现的“src”,函数应该只将“src”替换为“include”

我提出了下面的elisp函数;它用当前文件路径中的“include”替换最后出现的“src”,用“h”替换“cpp”扩展名(反之亦然),并尝试访问结果文件

因为我是lisp新手,我很想知道是否可以简化它?或者可以定制ff find其他文件来实现这一点?(是的,我见过ff搜索目录,但在处理同一项目的多个签出时,这并没有帮助)

(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
反过来也不错。我建议使用CEDET
semantic ia fast jump
。一旦您正确地配置了它,它应该适用于几乎所有的include。而
semanicsymref
反过来也不错。我建议使用CEDET
semantic ia fast jump
。一旦您正确地配置了它,它应该适用于几乎所有的include。而
semanicsymref
反过来也不错。我建议使用CEDET
semantic 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