2012-03-06 2 views
0

enter image description hereПоследняя строка на Emacs

Как вы можете видеть в этом образе, я могу двигать курсор к последней строке (если я использую RET на последнем столбце последней строки), а последняя строка Безразлично» t отображается в столбце номера левой строки.

Он также не подсвечивается, но как только я нахожу его, как если бы я ввел «a», он будет подсвечен и появится в списке номеров строк слева.

Это очень крошечная ошибка, но меня это немного раздражает - это действительно не серьезная проблема, но мне очень хотелось бы исправить ее.

Спасибо!

+0

http://www.emacswiki.org/emacs/LineNumbers#toc7 –

+0

malenkiy_scot, хороший момент, кажется, что я только оцениваю их, а не выбрал один из них, я сделаю это во всех своих вопросах Теперь! благодаря! –

ответ

5

Предполагая, что вы используете Linum пакет для номеров строк (в левом поле), here's патч, что номер последней строки буфера:

--- 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)) 
+1

Не могли бы вы объяснить, как применить этот патч? – Kanguros

7

Собственно, это не ошибка. Строка пуста, и на ней ничего нет. Поэтому на самом деле это не считается «линией», пока на ней не появится контент. Последний символ в файле - символ новой строки в строке 99. Строка 100 функционально рассматривается как «она не существует», пока на ней не будет контента.

+1

Согласовано: если OP просто запустит 'wc' против файла, который показан на скриншоте, они быстро убедятся, что на самом деле у файла есть только 99 строк, пока они не начнут вводить символы за новую линию 99-й строки, чтобы создать 100-ю , –

2

Вы можете редактировать linum.el, если вы действительно хотите для изменения функциональности. Here - это код, который нужно делать.

Вы должны знать, что это не ошибка. То, что вы хотите, субъективно; это было дизайнерское решение.

Смежные вопросы