繁体   English   中英

Emacs-特定的Linum定制

[英]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: 从文本中分离行号 ]

http://www.emacswiki.org/emacs/LineNumbers

我相信设置(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM