"C:/Users/final/code/MyQuake/src/ren_gl/gl_draw.cpp"
"c:/Users/final/code/MyQuake/tags"
(or (and $input (eq\? $input "C:/Users/final/code/MyQuake/src/ren_gl/gl_draw.cpp")))
难道是盘符大小写的问题?
"C:/Users/final/code/MyQuake/src/ren_gl/gl_draw.cpp"
"c:/Users/final/code/MyQuake/tags"
(or (and $input (eq\? $input "C:/Users/final/code/MyQuake/src/ren_gl/gl_draw.cpp")))
难道是盘符大小写的问题?
好怪啊,我记得之前在 windows 上看 buffer-file-name
的时候,盘符是小写的,而 tags 文件里面盘符都是大写的。为此还专门做了处理。
另外你确认这个 tags 文件里面用的是相对路径,对吧?
我晚上回去再看看吧。
是的。所以Windows上最安全的做法是路径全部统一到大写或者小写再比较,或者干脆用大小写无关比较。
另外我发现在写TypeScript的时候,补全候选里会出现C++的内容,这些明显是没有用处的,在补全时是否应该直接过滤掉其他语言的候选项呢?
这样的话就是 Citre 的 bug 了。之后我看下。
这个有些时候是有用的。能在混合编程的项目中起作用是 ctags 的优势,请看 citre/docs/developer-manual/design-principle.md at master · universal-ctags/citre · GitHub
我理解你的需求,但这个需要仔细设计一下。
我建议还是应该用用,可以比较比较嘛,作为相互的参考。
最近几个晚上对 Citre 的核心各种敲敲打打,终于应该是修好了在 Windows 上卡顿的问题。
这个是在 Chromium 仓库里面,170 多万条 tags(大概是 Linux 内核代码的 1/5)。可以看到弹出补全还是需要一小会,但是打字时候完全不粘手。实际体感比 gif 上看起来要好。
更惊喜的是在 Linux 上补全速度也变快了(同一台笔记本电脑),秒出:
不过我再也不想碰平台相关的问题了
这个周末计划把大家反馈的 bug 都处理了,如果还有时间的话可能会把生成 tags 文件的命令做出来。
Edit: 考虑到 Citre 确实在巨型代码库里有很好的性能,我认真觉得对一般的项目,把代码中用到的外部库全扫描了也不会影响体验,这样还能解决补全来自外部库的符号的问题。不过生成的时候要配置好,想必也比较麻烦。
能不能使用动态模块来优化速度?
能。libreadtags 和 Ctags 本体是分开的。不过我个人比较喜欢装完就能用的东西,因此一直没有折腾过动态模块。
Edit: 刚看了下代码,libreadtags 提供的东西还是比较 primitive,关键是用来过滤和排序的那套 dsl 还是在 Ctags 仓库里面的。这我有点搞不懂了。
动态模块安装确实啰嗦了一点,不过这个工具本身就依赖ctags, 如果ctags软件包可以内置一个emacs动态模块的话,安装就非常简单了
楼主,能放出你的emacs配置吗?
不好意思,太乱了
可以,我先玩一下,可行的话就弄,想必会鼓励更多 Emacs hacker 来尝试 universal ctags。
其实我也想知道那个截图中的主题是什么
doom-gruvbox
继续折腾了一下,发现citre似乎不支持tramp?会探测不到远程的readtags和tags文件
我从未用过 tramp。之前听说 tramp 其实等于是把文件下载回本地编辑的吧,这样的话探测不到应该也正常吧?
哇楼主回复好快! 我这边的输出是这样的
helm-M-x-execute-command: readtags exits 1
/usr/local/bin/readtags: cannot open tag file: No such file or directory: /scp:arch-home:/home/<edited>/tags
Updating buffer list...
看样子是本地的 readtags 试图打开远程的文件失败了吧。
我看了下 tramp 似乎有启动远程机器上的进程的能力,但我首先需要一台远程的机器才能研究这个问题
233333楼主以后想研究了可以PM我,我给你一个远程机器的权限hhhh 还是要大喊一声楼主NB!
谢谢。我只是个普通的家庭 pc 用户,工作上也没有这个需要,所以一直没有用过 tramp。
我先试试用自己的两台本本能不能搞起来,不行的话就麻烦你啦