为 indent-bars 设置特别的竖线字符,在字符的最左边展示竖线

我最近用 indent-bars 来在 prog-mode 下展示缩进提示。

略微不满意的是:indent-bars 默认提供的竖线字符是在放在中间的,而我想要将竖线放在最左边。

于是找到了这个Unicode 字符: “⎸” (U+23B8) “⎸” U+23B8 Left Vertical Box Line Unicode Character

(use-package
  indent-bars
  ;; :disabled ;; will cause lsp rust stuck after insert `std::'
  :ensure (indent-bars :host github :repo "jdtsmith/indent-bars")
  :hook (prog-mode . indent-bars-mode)
  :custom-face
  (indent-bars-face ((t (:height 1.08))))
  :custom
  (indent-bars-treesit-support t)
  (indent-bars-no-descend-string t)
  (indent-bars-treesit-ignore-blank-lines-types '("module"))
  (indent-bars-prefer-character t)
  (indent-bars-treesit-wrap
   '((python
	  argument_list
	  parameters ; for python, as an example
	  list
	  list_comprehension
	  dictionary
	  dictionary_comprehension
	  parenthesized_expression
	  subscript)))
  (indent-bars-no-stipple-char ?\⎸)
  )

效果如下:

3 个赞

哈哈哈,我也不满意这一点,我再来试试这个包

这个包最坑的地方是竟然对emacs编译条件有要求

它提供了不使用 :stipple 的方案就是题主使用的 indent-bars-prefer-character. 根据作者的描述这样的缺点应该仅仅是无法做到 :stipple 那样更细致的图案绘制, 但对性能并没有影响. 所以大多情况下不影响使用吧~

于是找到了这个Unicode 字符: “⎸” (U+23B8) “⎸” U+23B8 Left Vertical Box Line Unicode Character

这个字符不同的字体显示效果不大一样,可能显示是断开的。

试用了下 indent-bars,效果还不错,性能还没感觉出来。还是有些小问题,不知道是不是配置问题,再看看。这个包还没发布到melpa,安装稍微麻烦点。目前还在用highlight-indent-guides

你可以试试给这个字符的 :height 设置高一点。看看能不能上下连起来

个人体验在一些极端场景下(比如折叠了大段代码)体验会比 highlight-indent-guides 很多

作为极简的推崇者,我倾向于优先考虑性能,其次考虑外观。indent-bars 的一些功能(比如 indent-bars-display-on-blank-lines 用于在空行显示缩进线)会对性能有很大影响,但是在功能上来说没啥用,所以我都关了

分享一下我的配置:

(use-package indent-bars
  :straight (indent-bars :type git :host github :repo "jdtsmith/indent-bars")
  :hook (prog-mode . indent-bars-mode)
  :config
  (setq indent-bars-display-on-blank-lines nil
        indent-bars-width-frac 0.2
        indent-bars-color '(highlight :face-bg t :blend 0.2)
        indent-bars-zigzag nil
        indent-bars-highlight-current-depth nil
        indent-bars-pattern "|"
        indent-bars-prefer-character t)
  )

效果:

4 个赞