【插件分享】利用 fringe 显示滚动条和文档标记

下午 vibe 了一个小包:scrollview.el,虽然还没来得及 review,但是用起来还不错,先发出来分享一下。

项目地址:GitHub - roife/scrollview.el · GitHub

它能在 fringe 里显示一个滚动条,同时把搜索结果、诊断信息、VC diff hunk 等标记也放进来。灵感主要来自于 VS Code 和 Zed。

它能做什么

  • 在 left/right fringe 显示垂直滚动条
  • 内置一些 sign group:
    • search:当前 isearch lazy highlight 的匹配位置
    • diagnostics:Flymake 诊断,以及已加载的 Flycheck errors
    • conflicts:通过 smerge-mode 找 conflict markers
    • keywords:通过 hl-todo 找 TODO/HACK 等关键词
    • spell:ispell 中的拼写
    • vc:通过 diff-hl 显示 add/change/delete hunk
  • 提供 scrollview-next / scrollview-prev / scrollview-first / scrollview-last 在可见 sign 之间跳转

利用这个插件,可以节省掉很多 modeline 上的空间,比如 progress、flymake indicator 等。

感谢 GitHub - emacsorphanage/yascroll: Yet Another Scroll Bar Mode · GitHub ,大量参考了这个仓库的代码

7 个赞

windows doom emacs 如何配置使用呢?我按这个配置看不到 fringe, 当然我用这个之前也没用过 fringe…

可能终端里没有 fringe,我没有 windows 设备没办法测试诶。

应该是有效果的,可能因为太细或者配色的原因没看清。截图里那样的效果如何配置的?比如 fringe 宽度等等

如果TUI下也能显示就太棒了,是不是可以利用margin?

或许可以,我可以看看怎么做的

继续用 AI 糊了一个,似乎表现很好

1 个赞

你是在终端下使用的吗,默认不需要任何配置就可以的

(use-package scrollview
  :straight (:host github :repo "roife/scrollview.el" :branch "main")
  :hook (after-init . global-scrollview-mode))

你也可以切换成 margin 试试

已试用起来啦,看着很棒,谢谢楼主开发

的确原来就有显示,改成 margin 就显示的大了,字符大小跟输入区一样了。原来显示看不清的现在能看到了: F 和 * 分别表示什么?其位置是固定的,还不随pageup/down 改变:

这个显示逻辑还是有点没太明白,会根据位置变化吗?

Group Fringe Margin
search = =
highlight-symbol + +
symbol-overlay + +
bookmarks * *
eglot = =
diagnostics o !
compilation o !
conflicts top <, middle =, bottom > top <, middle =, bottom >
keywords TODO T, FIXME F, HACK H, NOTE N, WORKAROUND W, TRICK(R) R, DEFECT D, ISSUE I, other keywords * TODO T, FIXME F, HACK H, NOTE N, WORKAROUND W, TRICK(R) R, DEFECT D, ISSUE I, other keywords *
spell ~ ~
vc add and change |, delete = add +, change |, delete -

参考 Emacs 是否能实现类似 VS Code 或者 NeoVim 的滚动条装饰

是 decorated scrollbar,类似 vscode 和 zed,参考 Emacs 是否能实现类似 VS Code 或者 NeoVim 的滚动条装饰

我这个 config.el 里有 3 个 FIXME, 正好对应显示的 3 个 F. 但这三个 F 加上找不到哪里设置的 bookmark *, 不管我的 buffer 显示在第几行,始终固定不动。看上去对应这 FIXME 在整个 buffer 的位置比例,如第一个 FIXME 在 line 177/600, 第一个 F 出现在整个 fringe 的大概 30% 的位置。但当我 buffer 首行显示 177 行时,那个 F 还是在 30% 的位置。跟显示右侧还有字符的 → 行为不一样,当然这个 → 应该是 emacs 自带的,不是 scrollview 提供的。

就是要实现这个功能啊……你看我发的链接

看了啊,滚动条滚动时,那些标志位置不变?这是 feature 啊?

你可以把它理解为 minimap

3 个赞