假设有这段html:
<div class="content">
<h1>title</h1>
<a href="url">
<img src="src"/>
</a>
<p>
paragraph1
<span>content of span</span>
paragraph2
</p>
</div>
div有子级元素,h1没有,a有子级元素,img没有,…
请问如何用elisp判断一个标签下有没有子级元素呢?
假设有这段html:
<div class="content">
<h1>title</h1>
<a href="url">
<img src="src"/>
</a>
<p>
paragraph1
<span>content of span</span>
paragraph2
</p>
</div>
div有子级元素,h1没有,a有子级元素,img没有,…
请问如何用elisp判断一个标签下有没有子级元素呢?
可以参考 highlight-rename-tag.el 的代码
感谢懒猫,参考了 highlight-matching-tag.el 的代码,解决了。
(require 'web-mode)
(defun print-html--has-child-p ()
(let ((open-tag-pos (save-excursion
(web-mode-element-beginning)
(point)))
(close-tag-pos (save-excursion
(web-mode-tag-match)
(point))))
(save-excursion
(goto-char close-tag-pos)
(or (search-backward-regexp "</.+>" open-tag-pos t)
(search-backward-regexp "/>" open-tag-pos t)))
))
如果有子级元素则返回子级元素close tag的position,没有子级元素返回nil
有web mode作基础的话啥都好办