match- *函数不表现?

时间:2015-05-03 21:20:49

标签: emacs elisp

我正在尝试编写一个elisp函数,根据输入将Python测试函数标记为绿色或红色。这些论点非常明显。导航部分有效,但put-text-property部分无效。我已尝试eval - match-*函数,但我无法理解返回值。它们似乎也会返回不同的东西,具体取决于我eval中的缓冲区。

这个的基本要点是从rainbow-mode.el的相关部分借来的,并且在那里它完美地运作。

put-text-property来电有什么问题?相关地,我该怎么做才能调试并了解更多信息?

(defun snake-decorate-test (file class func status)
  ; FIXME: Path hardcoded while developing.
  (find-file (format "/home/thiderman/git/piper/%s" file))
  (beginning-of-buffer)
  (re-search-forward (format "^class %s(" class) nil t)
  (re-search-forward (format "^    def \\(%s\\)(" func) nil t)
  (put-text-property
   (match-beginning 1) (match-end 1)
   'face `((:background ,(if (s-equals? status ".")
                             "#007200" "#720000")))))```

1 个答案:

答案 0 :(得分:3)

  1. 该缓冲区是否已字体锁定?如果是,请尝试使用 public partial class formOpConfig : Form { private Form1 Opener { get; set; } public formOpConfig(Form1 opener) { //initialize component } } 代替font-lock-face作为文本属性。字体锁是贪婪的 - 它会消除(覆盖)你添加的任何face突出显示。

  2. 您是否尝试过调试?

    一个。您是否在代码中突出显示的字符上使用了face?您可能会发现它确实具有您尝试提供的C-u C-x =属性,但字体锁定会覆盖该突出显示(请参阅#1)。

    湾使用face,然后使用M-x debug-on-entry snake-decorate-test(偶尔d)浏览该功能,跳过一个步骤。随时使用c评估任何性别并查看返回值。

    ℃。或者,添加对{1}}的调用,打印出您要检查的中间状态,这样您就可以看到发生了什么。例如,向自己展示e究竟是什么,看看它是否符合你的期望。