代码之家  ›  专栏  ›  技术社区  ›  Cheeso

Emacs:左边缘的Todo指示器有一个奇怪的副作用-删除字符

  •  5
  • Cheeso  · 技术社区  · 15 年前

    我刚读过 Emacs :TODO indicator at left side 尝试了一下。这似乎很有趣。小的指示三角形出现了,但我得到了一个奇怪的副作用:文本本身正在被修改。正在删除字符。

    之前:

    alt text http://i50.tinypic.com/25ge83s.jpg

    后:

    alt text http://i46.tinypic.com/2qn4e94.jpg

    模式行指示缓冲区在运行后已被更改 annotate-todo . 这是怎么解释的?

    (我在Windows上使用Emacs22.2.1)

    1 回复  |  直到 15 年前
        1
  •  5
  •   Trey Jackson    15 年前

    啊哈…我早就看到了我的错误。这是一个新版本。

    (defun annotate-todo ()
      "put fringe marker on TODO: lines in the curent buffer"
      (interactive)
      (save-excursion
        (goto-char (point-min))
        (while (re-search-forward "TODO:" nil t)
          (let ((overlay (make-overlay (- (point) 5) (point))))
            (overlay-put overlay 'before-string (propertize (format "A")
                                                            'display '(left-fringe right-triangle)))))))
    

    第一个解决方案使用了 'display 文本属性,用于更改指定文本的显示方式,在本例中是 已替换 在三角形的旁边 left fringe . 我需要做的是使用 'before-string overlay 相反。这不会改变正在显示的字符串。

    另一个优点是,由它注释的代码的剪切/粘贴不带标记。

    我已经更新了原始问题中的代码以反映此更改。