regex - ctags 和 R 正则表达式

标签 regex r ctags

我正在尝试将 ctags 与 R 一起使用。使用 this我已添加的答案

--langdef=R
--langmap=r:.R.r
--regex-R=/^[ \t]*"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t]function/\1/f,Functions/
--regex-R=/^"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^f][^u][^n][^c][^t][^i][^o][^n]/\1/g,GlobalVars/ 
--regex-R=/[ \t]"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^f][^u][^n][^c][^t][^i][^o][^n]/\1/v,FunctionVariables

到我的.ctags 文件。但是,当尝试使用以下 R 文件生成标签时

x <- 1
foo <- function () {
    y <- 2
    return(y)
}

仅识别函数foo。我也想为变量生成标签(即上面代码中的 xy)。我应该更改 ctags 文件中的正则表达式吗?提前致谢。

最佳答案

这些模式似乎不正确,因为只有为变量分配一个与“函数”长度相同但不共享任何字符的值时,该变量才会被识别。例如:

x <- aaaaaaaa

以下 ctags 配置应该可以正常工作:

--langdef=R
--langmap=R:.R.r
--regex-R=/^[ \t]*"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t]function[ \t]*\(/\1/f,Functions/
--regex-R=/^"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^\(]+$/\1/g,GlobalVars/
--regex-R=/[ \t]"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^\(]+$/\1/v,FunctionVariables/

这里的想法是函数必须后面跟着一个括号,而变量声明则不需要。鉴于正则表达式解析器的限制,此括号必须与关键字“function”出现在同一行,此配置才能起作用。

更新:R 支持将包含在 Universal Ctags 中,所以尝试一下并报告错误和缺失的功能。

关于regex - ctags 和 R 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32206608/

相关文章:

r - 编辑 SAS 配置文件以执行 R(使 SAS 与其他人一起玩)

c++ - 是否可以在 Vim 中使用不同的标签文件进行 omnicomplete 和 general 标签浏览?

vim ctags 设置

python - 从字符串中提取整数 - 包括负整数

javascript - 链接检查正则表达式

在 R 中读取 SDMX - 解析错误?

在 R 中复制 T 检验

ubuntu - .ctags 文件位于 Ubuntu 中的什么位置?

javascript - 正则表达式替换引号之间的值

javascript - 正则表达式替换两个标签之间(外部)的文本