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