vibe coding 了一个 blame-reveal 包,Fringe 彩色显示 Git Blame

老哥,我让AI做了一个,你是不是想要这种效果?不过切换大文件会卡住,有点慢。

AI大法都上了啊,好的,我明天试试。

来个图看看

其实大文件切换会卡,我也没办法,总不能让我都缓存了吧,不过有个样子还是不错的。

这个是另外弄了个buffer吧,我的做了缓存,做了异步(大文件,通过阈值设置何为大文件。)

对的,另外的buffer为了展示。我其实觉得展示出来比较有用,你的那些命令我都用不上。你那个项目也可以这么做一个类似的同步滚动显示的buffer,颜色和你的侧边栏对应上就好。我要的功能比较少,所以项目这样就差不多了,不知道异步先显示一个屏幕会不会好点,但是得慢慢尝试了,暂时就先这样了。

不打算做,我自己用不到。

嗯嗯,本身就得先满足自己的使用。

改成idea的git显示风格,但是有些问题,能帮忙看看吗?

  1. 显示不完整,历史commit没有完全显示出来
  2. 移动光标后,commit message有叠加了一次

overlay应该是不行哦,得单独的buffer来展示。

经过我不懈地测试,这个idea风格实现起来还是比较麻烦的,而且效果不一定好,当然最大的问题肯定是我菜。

首先是你想要的展示出来,overlay就不合适,你可以看见它侵占了编辑区。

第二种方式是child frame,最具代表的是posframe,不侵占。就算实现随光标移动而显示git blame信息,它也会覆盖编辑区。

第三种方式是我测试的sidebar,单独的buffer。但是也很麻烦,比如@LuciusChen做的侧边,它可以和diff-hl之类结合使用来显示新编辑的内容,它不用接管。但是如果是单独的buffer,做同步卡编辑。

总结:不好做。不过有人如果做出来了当我白说。最后来看看我做的效果。

test

占一点编辑区无所谓的,有舍有得,参考idea的界面,git的commit message只有时间和author,占不了多少,而且字体比编辑区的字体小一些。

overlay应该是可以的,就是实现起来有点麻烦。没写过overlay的代码,在一点点熟悉。@LuciusChen用位图显示的。

看一行的commit msg我用的是vc-msg。就是想直观的看见每行的commit。

那你再试试吧。举个例子,比如你新编辑一行,那么这一行的前面是有占用吗?如果没有,那就像你现在截图那样,那整体看起来就很奇怪。如果有,你咋补上呢?你现在显示的内容是能对齐的,因为信息是一样的,如果都显示出来,整体还要做对齐。想想就烦 :face_with_raised_eyebrow:

哈哈哈哈,都是我做过程中遇到的。我目前在加在代码后显示的overlay,限定一行。另外大文件异步加载还加了个小彩蛋(不过有可能就我自己喜欢)

你为啥不像别人那样做右侧inline 显示呢?好奇

在做呀 上面说的就是,但那种不适合emacs分了好多window工作时去查看。

哦,怪不得说的是代码后。我记得是光标上方来的。。

参考magit-blame的overlay使用方法,改了一下

可以的👍

这个显示好,我参考下。应该能解决我对齐的问题。

编辑:

暂时还是放弃了。假如是随光标移动渲染显示,对我来说太闪了。假如全部显示呢,做编辑的时候overlay又要重新计算位置卡编辑。。。:thinking: