1

行番号に関するこの EmacsWiki ページlinum.elのセクション( Linum: Separating line numbers from textというタイトル) をガイドとして使用して、 Emacs にいくつかのかなり具体的なカスタマイズを適用しようとしています。

行番号の右側にスペースを追加する編集をlinum.elに実装しました。私が今理解しようとしているのは、行番号が次のようになるように、行番号の左側にスペースを追加する方法です。

| 1 |#include <stdio.h>  (Vertical bars for visualization)
| 2 |int main()

私が達成しようとしているもう 1 つのカスタマイズは、行番号の背景の色付けに適切なスペースを含めることです。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

4

4 に答える 4

3

このようなことから、独自のタイプのカスタマイズについて何かアイデアが得られますか? 行番号の右側のスペースを変更するのではなく、フリンジ幅を設定することに関心があるかもしれません。

(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)))
于 2013-08-31T22:58:34.627 に答える
0

おそらく、より簡単な解決策は、linum顔の属性のサイズを次のように修正することです。

(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)
于 2014-05-25T17:26:18.313 に答える
0

あなたが本当に言ったように、@lawlistが提案したのではなく、スペースを使用してそれを行いたい場合は、(number-to-string w)in functionlinum-update-windowを含む行を見つけて、次のように変更します。

(number-to-string (+ w 1))

この数値は、行番号が右揃えで印刷されるボックスの幅です。元wは最終行番号の桁数です。

于 2013-08-31T23:14:30.437 に答える