首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在Emacs缓冲区右边显示相关行号,并在左边界保留正常行号?

是否可以在Emacs缓冲区右边显示相关行号,并在左边界保留正常行号?
EN

Stack Overflow用户
提问于 2018-05-07 06:30:30
回答 1查看 0关注 0票数 0

是否可以在Emacs缓冲区右边显示相关行号,并在左边界保留正常行号?

EN

回答 1

Stack Overflow用户

发布于 2018-05-07 16:17:06

加载定义并执行M-x linum-mode

代码语言:javascript
复制
(defun linum-relative-right-set-margin ()
  "Make width of right margin the same as left margin"
  (let* ((win (get-buffer-window))
     (width (car (window-margins win))))
    (set-window-margins win width width)))

(defadvice linum-update-current (after linum-left-right-update activate)
  "Advice to run right margin update"
  (linum-relative-right-set-margin)
  (linum-relative-right-update (line-number-at-pos)))

(defadvice linum-delete-overlays (after linum-relative-right-delete activate)
  "Set margins width to 0"
  (set-window-margins (get-buffer-window) 0 0))

(defun linum-relative-right-update (line)
  "Put relative numbers to the right margin"
  (dolist (ov (overlays-in (window-start) (window-end)))
    (let ((str (overlay-get ov 'linum-str)))
      (if str
      (let ((nstr (number-to-string
               (abs (- (string-to-number str) line)))))
        ;; copy string properties
        (set-text-properties 0 (length nstr) (text-properties-at 0 str) nstr)
        (overlay-put ov 'after-string
             (propertize " " 'display `((margin right-margin) ,nstr))))))))

看截图

emacs截图
emacs截图
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档