dumb-jump 怎样添加对新语言的支持?

如题,dumb-jump 怎样添加对新语言的支持呢?

我要添加支持的语言类似于这样的:

def myFunction(param)
    doSomething
end

或者

def myFunc
    doSomething
end

在函数体外调用函数时是这样的:

@myFunction

我是这样设置 dumb-jump 的(参考的 Python 的写法):

(push '(:type "function" :supports ("ag" "grep" "rg" "git-grep") :language "mylang"
              :regex "def\\s*JJJ\\b\\s*\\\(?")
        dumb-jump-find-rules)
(push '(:language "mylang" :ext "ml" :agtype "mylang" :rgtype "mylang")
        dumb-jump-language-file-exts)
(push '(:comment ";" :language "mylang") dumb-jump-language-comments)

但是并没有卵用,dumb-jump-go 并没有跳转到函数的定义。请问这是怎么回事?

PS:ag grep rg git-grep 在我的系统中都是可以用的。

感觉你需要写一个 mylang 的 Major Mode 或者让 ag / rg 懂你的 mylang 类型。

major mode 已经有了。ag / rg 不是单纯的搜索吗? dumb-jump 提供了这样一个搜索框架。

你设置了 agtypergtype,但是

$ ag --mylang myFunc

肯定搜不到任何结果,因为 ag 默认并不支持 mylang 这种类型。你可以试试改成 nil

'(:language "mylang" :ext "ml" :agtype nil :rgtype nil)
1 个赞

ag 支持的语言在源码中就限定了:

这里有个 PR Added support for user-defined languages 没合并

1 个赞

多谢两位的解答,原来是这样。涨姿势了 :joy:

但是改成 nil 还是不行。