Глобальная нумерация строк прерывистая - конфликт с глобальным пробелом

Я имею (global-linum-mode 1) а также (global-whitespace-mode t) определено в моем init.el с Aquamacs 2.4. Нумерация строк прерывистая и пропускает отображение номера строки после пустой строки. Отключение пробелов устраняет проблему. Есть ли способ отобразить номер строки для каждой строки, а также включить пробелы?

Возможно, есть альтернатива linum.el, которая делает что-то очень похожее?

В следующем примере знак доллара представляет собой пустую строку без текста.

1  First line.
2  Second line.
3  $
   Fourth line.
5  $
   Sixth Line.
7  Seventh line.
8  $
   Ninth line.

1 ответ

Решение

Решение № 1 - с http://www.emacswiki.org/LineNumbers (цитируя Майкла Хоффмана) - размещено там по другой причине, но также решает мою проблему:

(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)
                      'face 'linum-leading-zero)
          (propertize (number-to-string line) 'face 'linum))))

     (setq linum-format 'linum-format-func)))

Решение № 2:

(setq linum-format "%d")

К вашему сведению: A:

Для тех, кто интересуется, как решить связанную проблему, когда различные цвета пробелов (и / или выделение текущей строки) вторгаются в левое поле, которое зарезервировано для нумерации строк, установка фоновой окраски этой области устраняет проблему. Передний план и / или фон номеров строк могут быть определены пользователем. Решение номер один выше может быть изменено также путем добавления определения цвета после слова foreground в строке 5 - например, :foreground "red", ... Следующий фрагмент представляет собой отдельную строку, которая будет предшествовать или следовать всему обходному пути, упомянутому в решении номер один, и изменяться в соответствии с любыми цветами, которые пожелает пользователь:

(custom-set-faces '(linum ((t (:foreground "red" :background "white" :height 120 :family "Courier")))) )

К вашему сведению: B: я изменил строку 13 решения номер один, чтобы устранить 0 и замените его простым старым пробелом, потому что я не привык видеть начальные нули и просто искал решение начальной проблемы, описанной в этой теме. Решение № 2 выглядит заподлицо слева, а решение № 1 заподлицо справа. Просто вопрос личных предпочтений. Есть, несомненно, несколько других возможностей для изменения linum-format к чему-то, кроме динамического по умолчанию, определенного в linum.el,

Другие вопросы по тегам