在 CIDER 中是否可以使用 M-。在没有 REPL 运行 的情况下跳转到定义?

In CIDER is it possible to use M-. to jump to definition without the REPL running?

此 CIDER 功能似乎仅在执行 cider-jack-in 后才起作用:

M-. Jump to the definition of a symbol. If invoked with a prefix argument, or no symbol is found at point, prompt for a symbol.

当我打开一个新的 clj 文件时,它只显示 cider[未连接] M-. 组合键给了我 Wrong type argument: stringp, nil

是否可以在不启动和连接到 REPL 的情况下使用此功能?有没有其他方法可以在不使用 CIDER 的情况下获得相同的行为?

CIDER 没有这种能力,因为它使用附加到变量的元数据执行符号定义的查找:

> (defn x [] 0)
#'user/x
> (meta #'x)
{... :line <line_nuber>, :file <file_path> ...}

显然,要附加元数据,您需要启动 REPL 并评估符号定义。

如果没有 REPL,您可以尝试使用 rgrep(将光标放在所需符号上之后):

M-x rgrep <RET>

但是,这只是文本搜索。它将为您提供指定目录中出现的所有符号(也没有命名空间解析)。