LINUX.ORG.RU

Linum — фон и щель

 


0

1

Использую linum, чтобы отображать номера строк. Проблема в том, что после того как строки заканчиваются для колонки используется цвет фона, а не тот, что я задал для Линума:

http://i.imgur.com/fWhYX.png?5272

Похоже что это вообще не лечится: http://stackoverflow.com/questions/6983069/how-to-set-custom-background-for-l...

Посоветуйте другой плагин для отображения номеров строк, где этой проблемы нет. Или как исправить это в Линуме, если способ всё же есть.



Последнее исправление: ksevelyar (всего исправлений: 1)

Мда. Тут надо звать лисперов, чтобы править исходник плагина. А вам я могу только посоветовать заглянуть на страницу http://emacswiki.org/emacs/LineNumbers и выбрать какой-нибудь другой плагин для нумерации строк.

delete83 ★★
()
Ответ на: комментарий от delete83

На самом деле проблема с linum решаема, но надо неплохо так знать elisp, чтобы ее решить. Беглый взгляд дилетанта на исходник: номера проставляются в цикле с одновременным форматированием, потому те строки, где номера не проставляются, не форматируются и цвет сбивается. Надо лишь расширить цикл на те строки, где номера не нужно ставить. К сожалению, я слишком дилетант, чтобы такое написать.

delete83 ★★
()
Ответ на: комментарий от delete83

Кстати, а вот этот патч не то, что вам нужно делает?

--- linum.el-rev474.svn000.tmp.el	Fri May 08 11:30:24 2009
+++ linum.el	Fri May 08 11:29:38 2009
@@ -135,8 +135,15 @@
-  (let ((line (line-number-at-pos))
-        (limit (window-end win t))
-        (fmt (cond ((stringp linum-format) linum-format)
-                   ((eq linum-format 'dynamic)
-                    (let ((w (length (number-to-string
-                                      (count-lines (point-min) (point-max))))))
-                      (concat "%" (number-to-string w) "d")))))
-        (width 0))
+  (let* ((line (line-number-at-pos))
+         (limit (window-end win t))
+         ;; set empty-line-at-eob flag
+         (empty-line-at-eob (or (equal ?\n (char-before (point-max)))
+                                (equal (point-min) (point-max))))
+         ;; we will automatically number the line at eob if it's not empty
+         ;; (so we'll say it's already done)
+         (numbered-line-at-eob (not empty-line-at-eob))
+         (fmt (cond ((stringp linum-format) linum-format)
+                    ((eq linum-format 'dynamic)
+                     (let* ((c (count-lines (point-min) (point-max)))
+                            (w (length (number-to-string
+                                        (+ c (if empty-line-at-eob 1 0))))))
+                       (concat "%" (number-to-string w) "d")))))
+         (width 0))
@@ -146 +153,2 @@
-    (while (and (not (eobp)) (<= (point) limit))
+    ;; stop if point>limit, or if eobp and numbered-line-at-eob
+    (while (and (not (and (eobp) numbered-line-at-eob)) (<= (point) limit))
@@ -165,0 +174,4 @@
+      ;; before moving forward, if we're already at eob
+      (if (eobp)
+          ;; then we've numbered the empty line
+          (setq numbered-line-at-eob t))

delete83 ★★
()
Ответ на: комментарий от Deleted

Есть — где номера строк заканчиваются дальше идёт цвет фона. Мне именно это и не нравится.

А что за скролбар такой, откуда?

ksevelyar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.