以前觉得 sublime text中的minimap 是个蛮不错的设计,最近突然想看看Emacs有什么类似方案,发现有好几个(minimap.el, sublimity-mode, demap),用下来minimap.el总体体验最好,就是有个小问题minimap生成后宽度没有固定,修一下就好了,有兴趣的可以试试看
(use-package minimap
:preface
(defun minimap--fix-width ()
(with-current-buffer minimap-buffer-name
(setq window-size-fixed 'width)))
:init (setq minimap-window-location 'right)
:hook (after-init . minimap-mode)
:config
(advice-add #'minimap-new-minimap :after #'minimap--fix-width))
最后来张效果图
4 个赞
用 minimap-minimum-width
不起作用吗?
它会在创建minimap buffer的时候设置好宽度,但是我使用下来 只要 split-window-horizontally
就会被重置,变成三个等分的buffer
twlz0ne
拆分了此话题
4
看代码,宽带是取 minimap-minimum-width
和 (* (window-width) minimap-width-fraction)
的最大值。我用这个简单的配置就行了
(use-package minimap
:init (setq minimap-width-fraction 0.10
minimap-minimum-width 10
minimap-window-location 'right)
:hook (after-init . minimap-mode))
3 个赞
Roife
6
日常写代码的时候会分个两三屏,感觉 minimap 太占空间了
水平的话 两屏还可以,三屏的话 的确就很小了,可以考虑新开个frame
类似地糊了一个去掉左右两边换行箭头的函数,不知为何并不生效?
(use-package minimap
:init
(setq minimap-width-fraction 0.10
minimap-minimum-width 10
minimap-window-location 'right)
(defun minimap--disable-fringe-indicator nil
(with-current-buffer minimap-buffer-name
(setq-local fringe-indicator-alist (append '((continuation nil nil)) fringe-indicator-alist))))
:hook (after-init . minimap-mode)
:config
(advice-add #'minimap-new-minimap :after #'minimap--disable-fringe-indicator))
另外想问问怎样在所有模式下启用minimap
?默认的minimap-major-modes
只能手动一个个添加吗?
用 set-window-fringes
设置fringe会立即刷新buffer,更新显示,你可以试试 , 我是这么设置的
(defun minimap--fix-width ()
(with-current-buffer minimap-buffer-name
(setq window-size-fixed 'width)
(set-window-fringes (minimap-get-window) 0 1 nil)))
(advice-add #'minimap-new-minimap :after #'minimap--fix-width)
至于模式的话,的确是在 minimap-major-modes
里添加自己需要的
谢谢!成功了:
(use-package minimap
:init
(setq minimap-width-fraction 0.10
minimap-minimum-width 10
minimap-window-location 'right)
(setq minimap-major-modes '(prog-mode text-mode))
(defun minimap--customize nil
(with-current-buffer minimap-buffer-name
(setq-local fringe-indicator-alist (append '((continuation nil nil)) fringe-indicator-alist))
(setq-local window-size-fixed 'width)
(set-window-fringes (minimap-get-window) 1 1 nil)))
:hook (after-init . minimap-mode)
:config
(advice-add #'minimap-new-minimap :after #'minimap--customize))
另外我可能知道这个问题的原因了
我遇到的情况是,在balance-window
的时候,minimap这个window也会被拉宽,添上了你的代码之后就正常了。我怀疑是你的配置中,有在split-window-below
或者split-window-right
之后自动balance-window
的行为。像你这样的方法确实从根本上解决了问题。
1 个赞