emacs27.1@windows下想要抓一些特定text-property
的文字, 根据官方文档貌似可以用next-property-change
进行遍历,我写如下代码作为interactive wrapper, 每次摁下<F5>
, 想要观察text-property
的变化.
(defun xx/text-property-change-next (point)
(interactive "d")
(let* ((pos (next-property-change point (current-buffer)))
(temp (text-properties-at pos (current-buffer))))
(message (format "%d" pos))
(goto-char pos)
(message (pp-to-string temp))))
;; doom keybinding
(map! :map evil-normal-state-map
:g "<f5>" 'xx/text-property-change-next)
但使用的结果是在org-mode
内只会停到org-src-block
或类似一段text-object
末或代码行末尾, 而不会继续下去遍历整个文档, *Message*
显示总是停留在那一个点, 道理何在呢?
于是我把这些驻点
的point作为数值输入给(next-property-change)
, C-x C-e
运行script, (而不是按绑定的<F5>
运行), 发现是能够返回新点的, 为什么会这样呢?
我实验了一下在js-mode下也会停驻在一点, 返回的text-property
是fontified t
, 都是在行末, 但并不是行末一定会驻点.