gpt4 book ai didi

emacs - 一打开 HTML 标签就关闭它们

转载 作者:行者123 更新时间:2023-12-04 17:35:58 26 4
gpt4 key购买 nike

我希望每当我打开一个时自动插入相应的关闭 HTML 标记。

所以如果我输入

<div>

我应该得到
<div></div>

无需调用 sgml-close-tag我。

如何做到这一点?

最佳答案

与其在每次击键后调用钩子(Hook)函数,不如只在输入 > 后调用它。这可以通过重新绑定(bind) sgml-mode 的键盘映射中的 > 字符来实现。用途。

此外,sgml-close-tag如果标签已经关闭,则不应调用。因此,以下代码为此添加了一个简单的正则表达式检查:

(defun my-sgml-insert-gt ()
"Inserts a `>' character and calls
`my-sgml-close-tag-if-necessary', leaving point where it is."
(interactive)
(insert ">")
(save-excursion (my-sgml-close-tag-if-necessary)))

(defun my-sgml-close-tag-if-necessary ()
"Calls sgml-close-tag if the tag immediately before point is
an opening tag that is not followed by a matching closing tag."
(when (looking-back "<\\s-*\\([^</> \t\r\n]+\\)[^</>]*>")
(let ((tag (match-string 1)))
(unless (and (not (sgml-unclosed-tag-p tag))
(looking-at (concat "\\s-*<\\s-*/\\s-*" tag "\\s-*>")))
(sgml-close-tag)))))

(eval-after-load "sgml-mode"
'(define-key sgml-mode-map ">" 'my-sgml-insert-gt))

关于emacs - 一打开 HTML 标签就关闭它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631059/

26 4 0