Citre: 先进的 Ctags 前端

按一下 C-l (recenter 命令)

CleanShot 2021-07-01 at 16.24.34

大概是这样,光标跑到最上边了,而且 C-l 好像没有解决这个?

咦,我用了这么久从没见过这个问题。是不是可能是 macOS 的问题?

我是用的 emacs-mac

:rofl: 你告诉我可能也没有用,因为我没有 mac(

mac 有时候确实很特殊,我维护 posframe 的时候,也遇到许多 mac 相关的bug,但也无能为力,因为人穷,买不起果子机。。。。。

1 个赞

我来报告一个bug,生成索引的时候如果不指定 --tag-relative=never 那么在*.cpp文件里面定义的struct会找不到。我研究了一下,发现有这么一条默认过滤规则,

   ;; Exclude tags that have "file" scope, and is not in this file.
   ,(if file-path
        `(and (not ,(citre-core-filter-input file-path tags-file))
              (or ,(citre-core-filter-field-exist 'file)
                  ,(citre-core-filter 'extras "fileScope"
                                      'csv-contain)))

问题是citre给出的这个文件名是绝对路径,而tags文件里默认是相对路径,所以被判定为不是同一个文件。

如果用emacs-plus 也存在类似问题么?

你说的这个问题我应该已经考虑到了。citre-core-input 的文档:

The generated filter can work no matter the tag uses
relative or absolute path.

请告诉我在你遇到问题的文件中,下面这些代码的输出:

(buffer-file-name)
(citre-tags-file-path)
(citre-core-filter-input (buffer-file-name) (citre-tags-file-path))

太好了,最近在学习Linux-0.11,顺手做几个实验,然后用 lsp 的跳转总是跳到我系统/usr/include里面(话说应该可以设置的吧,但是我懒)

无聊刷论坛看到这个,用了之后发现真心不错,能正确跳转,而且用 citre-ace-peek 看起源码来也方便很多了!

不过好像 tags 文件好像需要自己每次修改之后就要手动更新?不知道有没有计划支持自动生成 tags 文件呢?

When in doubt, peek it! :wink:

有计划「半自动」的方法,也就是敲一个 Emacs 命令就可以更新。

tags 文件不需要频繁更新,请看FAQ

这个没有试过,公司配的,emacs plus还要编译就没装

(require 'lsp-pyright),打开python文件会自动安装pyright。

peek功能确实好用。其实,lsp-ui-peek 也超级好用。lsp server给力的语言体验还是非常好的。

我现在就觉得如果有人能把 lsp 的 peek 做成我这种带树形历史的,肯定就有好多人不用 Citre 了 :rofl:

你可以去贡献贡献?:joy: 虽然我在lsp-mode 维护组里,无奈最近实在太忙。。。

容我拒绝 :rofl: 而且我也不是 lsp 用户

"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")))

难道是盘符大小写的问题?

1 个赞

好怪啊,我记得之前在 windows 上看 buffer-file-name 的时候,盘符是小写的,而 tags 文件里面盘符都是大写的。为此还专门做了处理。

另外你确认这个 tags 文件里面用的是相对路径,对吧?

我晚上回去再看看吧。