Q
着色当前行号
3
A
回答
8
我从我之前回答的Relative Line Numbers In Emacs得出了这个答案,因为它处理的是在linum格式化过程中记住当前行号的相同问题。
我从linum
脸上继承,但使用hl-line
的背景色。如果前景和背景不匹配很好,你可以用
的Mxcustomize-face
RETmy-linum-hl
RET
(require 'hl-line)
(defface my-linum-hl
`((t :inherit linum :background ,(face-background 'hl-line nil t)))
"Face for the current line number."
:group 'linum)
(defvar my-linum-format-string "%3d")
(add-hook 'linum-before-numbering-hook 'my-linum-get-format-string)
(defun my-linum-get-format-string()
(let* ((width (1+ (length (number-to-string
(count-lines (point-min) (point-max))))))
(format (concat "%" (number-to-string width) "d")))
(setq my-linum-format-string format)))
(defvar my-linum-current-line-number 0)
(setq linum-format 'my-linum-format)
(defun my-linum-format (line-number)
(propertize (format my-linum-format-string line-number) 'face
(if (eq line-number my-linum-current-line-number)
'my-linum-hl
'linum)))
(defadvice linum-update (around my-linum-update)
(let ((my-linum-current-line-number (line-number-at-pos)))
ad-do-it))
(ad-activate 'linum-update)
与其他答案明确分配前景色,这是更有效生成的动态宽度大于默认的dynamic
格式,但您可以通过注释行(add-hook linum-before-numbering-hook 'my-linum-get-format-string)
(并可选修改初始值my-linum-format-string
以设置您的首选宽度)来使用最大速度的静态宽度。
0
我不确定行号,但可以使用global-hl-line-mode
突出显示当前行。
5
+0
很好的工作,但记得首先显示行号,例如用'(global-linum-mode 1 )' –
相关问题
- 1. Vim配置行号着色
- 2. 当前行号或行号
- 3. 当前页面链接未着色
- 4. 如何交换当前片段着色器颜色与邻居?
- 5. 着色行
- 6. 着色datagrid行
- 7. 获取当前行号?
- 8. Lua中的当前行号
- 9. DAX - 获取当前行号
- 10. 获得当前行号列号
- 11. 以特定颜色对LaTeX背景的前15%进行着色?
- 12. WPF DataGrid行着色
- 13. Primefaces Datatable着色行
- 14. QSqlRelationalTableModel QTableView着色行
- 15. C#DataGridView行着色
- 16. RichTextbox着色行为
- 17. Excel VBA仅为以前未着色的文本着色
- 18. 更改标签文本和颜色随着当前时间
- 19. 如何给DataGridView中的当前单元格着色
- 20. 金属碎片着色器,访问当前帧缓冲区颜色
- 21. 由无符号字符数组着色
- 22. 添加%符号并为其着色
- 23. 在Vim中对齐当前行号
- 24. Vim的:如何改变当前行号
- 25. 获取当前行号码Java
- 26. TextMate - 命令 - 更改当前行号
- 27. 插入当前行号到SQL Server表
- 28. 在Sublime中打印当前行号
- 29. phpQuery中的当前行/列号?
- 30. 如何获取当前行号?
谢谢!优秀作品!顺便说一句 - 这个想法是使用它*而不是* hl-line(或者用当前行的下划线代替突出显示)。 – user673592
我认为可能是这样。原来,这可以在使用或不使用'hl-line'的情况下快乐地工作,但是如果你想避免加载'hl-line'库,你可以删除'(require'hl-line)'并且改变' ,(face-background'hl-line nil t)'为硬编码值。 – phils
由于'linum'的实现细节,多个窗口中的相同缓冲区将共享当前行高亮。每个窗口中的点数保持正确,因此无论哪个窗口是最新的,都将具有正确的亮点。解决这个问题需要更改linum以及它如何在缓冲区局部变量中缓存/重用覆盖。如果有人决定解决这个问题,你也可以扩展linum来追踪当前行并将其传递给'linum-format' :) – toolbear