emacs projectile - "you are not in a project" 在目录中显示

emacs projectile - "you are not in a project" displayed when in directory

我刚刚创建了一个包含 javascript 个文件的新文件夹。

结构是:

.gitignore
README.md
build
node_modules
package.json
src
webpack.config.js

但是当我尝试使用 C-c p f 查找文件时,我在状态栏中收到一条消息,指出

You're not in a project

我有其他结构相同但运行良好的项目,所以我不知道发生了什么。

我认为你的项目确实被 projectile 认为是一个项目,前提是你有一个 .git 文件夹(你忘了 git init 了吗?)。我没有看到你的情况。您也可以添加 .projectile 文件。该文件夹中包含 .projectile 文件和所有子文件夹的所有内容都将被视为同一项目的一部分。

免责声明:我知道这个post现在已经过时了,但自从我遇到了类似的问题 今天,在我看来,分享我的笔记很有意义,照顾不太熟悉 emacs lisp 的用户。


罪魁祸首 函数 很可能是 projectile-project-root

您可以尝试通过

进行调查
  • C-h f(describe-function 'projectile-project-root)
  • C-h v(describe-variable 'projectile-require-project-root)

帮助屏幕为 elisp 源代码 提供了一个 link,您可以使用 debug-on-entry 逐步完成(参见信息节点 "Debugging"在 elisp 中)

此函数使用缓存,因此这可能有些不方便,具体取决于您的 emacs lisp 技能。


解决方法:

我通过将我的项目移动到另一个目录解决了我的问题,怀疑它的名称以 "test" 开头可能导致了问题。我还删除了项目缓存子目录(也检查隐藏)。

只需使用 C-x C-f 打开 git 项目中的任何文件,然后尝试 运行 命令 C-c p f。

在git项目中打开文件将使弹丸识别该项目。

Just open some file in a version-controlled (e.g. git) or a project (e.g. maven) directory that's recognized by Projectile and you're ready for action.