[英]Emacs - Specific Linum Customization
我正在尝试使用此EmacsWiki页面上行号 (标题为Linum:从文本中分离行号 )中的部分,对Emacs的linum.el
应用一些相当具体的自定义设置。
我实现了对linum.el的编辑,在行号右侧添加了一个空格。 我现在想弄清楚的是如何在行号左侧添加一个额外的空格,以便行号看起来像这样:
| 1 |#include <stdio.h> (Vertical bars for visualization)
| 2 |int main()
我试图完成的另一项定制涉及在行号的背景着色中包含正确的空格。 当我为linum脸部设置背景时,它不会为行号右侧的新空格着色。
为了说明这一点,这是当前linum背景如何覆盖的内容:
(current) |1| #!/bin/bash -- vs. --> |1 |#!/bin/bash (ideal)
|2| echo "123" ---------> |2 |echo "123"
我确实尝试通过盲目修改EmacsWiki中提供正确空间的行来实现前一个(左空间),但没有成功。 不幸的是,由于我是Emacs和Elisp的新手,所以我的技能还没到能使我自己轻松改变的水平。
链接:
EmacsWiki:行号[部分-Linum: 从文本中分离行号 ]
我相信设置(setq linum-format "%d ")
将满足您的要求。 如果您还想在左边留空格,请使用" %d "
作为格式。
这样的事情会给您关于您自己的定制类型的任何想法吗? 您可能对设置边缘宽度更感兴趣,而不是更改行号右侧的空格。
(setq-default left-fringe-width 10)
(setq-default right-fringe-width 0)
(set-face-attribute 'fringe nil :background "white" :foreground "white")
;; (setq linum-format "%d") ;; alternative solution to intermittent line numbers
(custom-set-faces '(linum ((t (:foreground "pink" :background "white" :box nil)))) )
(eval-after-load 'linum
'(progn
(defface linum-leading-zero
`((t :inherit 'linum
:foreground ,(face-attribute 'linum :background nil t)))
"Face for displaying leading zeroes for line numbers in display margin."
:group 'linum)
(defun linum-format-func (line)
(let ((w (length
(number-to-string (count-lines (point-min) (point-max))))))
(concat
;; (propertize (make-string (- w (length (number-to-string line))) ?0)
(propertize (make-string (- w (length (number-to-string line))) ? ) ;; change leading zero to a soft space
'face 'linum-leading-zero)
(propertize (number-to-string line) 'face 'linum))))
(setq linum-format 'linum-format-func)))
如果您确实想按照您的说明进行操作,请使用空格,而不是按照@lawlist的建议进行操作,请在函数linum-update-window
找到包含(number-to-string w)
,并将其更改为:
(number-to-string (+ w 1))
该数字是打印行号的框的宽度,并右对齐。 原始w
是最后一个行号中的位数。
也许更简单的解决方案是使用以下方法固定linum
face属性的大小:
(set-face-attribute 'linum nil :height 140)
在实际使用 linum-mode
之后,您可能需要将其连接起来:
(defun fix-linum-size ()
(interactive)
(set-face-attribute 'linum nil :height 140))
(add-hook 'linum-mode-hook 'fix-linum-size)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.