另一个treesitter-context:展示代码层级

看到这个帖子 请问如何获取类似neovim中nvim-treesitter-context的显示代码层级的效果,感觉这个功能有时候还是挺有用的,也试着实现了一个,在treesitter-context.el

这个包定义了一个minor mode:treesitter-context-mode,打开后就可以看到效果了。目前仅支持少数几种语言(java, c, c++, rust, python, go),限于某些parser本身的问题,另外treesitter-context实现得也还比较糙,效果不一定很好。

为了实现方便,依赖我自己对posframe的一个小扩展,posframe-plus(支持Ctrl+g以及移动光标时自动隐藏posframe,不知道posframe本身怎么方便支持这俩特性)。

来张图展示一下效果吧

论坛里有另一位朋友也实现了一个,大家根据自身需要看哪个更适合自己。

7 个赞

支持更多 TreeSitter 的包. 又快又正確! :yum:

用 :hidehandler 可以实现隐藏啊。C-g 可以用advice或者直接设置map?

以前真是没注意到有这个:hidehandler,但C-g还是得额外处理,我现在是用emulation-mode-map-alists,还是有点麻烦。posframe能支持传入一个map的话就方便了。

现在预期要实现的功能基本完成了,也很方便添加对其它语言的支持,欢迎各位提交pr。

今天实现了另一个功能:focus。类似Focus

Focus

就是会将当前代码块前后的代码变得暗淡,更关注当前代码部分。 来个一图胜千言

3 个赞