如何在emacs中标记文本

3
我正在Emacs中开发一个文本注释系统,其中注释的格式类似于这样。如果这是文本:
Lorem ipsem por favor

我需要像这样注释它:
{latin}Lorem imsem{/latin} {spanish}por favor{/spanish}

所以我想要做的是选择一个区域,然后运行一个函数或宏,提示标签名称,并在该区域的开头和结尾处插入花括号、闭合符号和标签名称。
这可能很简单,但我始终发现Emacs Lisp很难入门,因为我几乎不经常使用它。
2个回答

11

好的,有很多种方法。其中之一是yasnippet,我相信很多xml/html模式都有这个功能。

为了简单起见,你可以使用一些elisp代码:

(defun my-tag-region (b e tag)
  "'tag' a region"
  (interactive "r\nMTag for region: ")
  (save-excursion
    (goto-char e)
    (insert (format "{/%s}" tag))
    (goto-char b)
    (insert (format "{%s}" tag))))

1
太棒了,谢谢!为了让光标在保存回归函数后处于正确的位置,我们可以执行(search-forward“}”)。 - singingfish

4
如果您希望在完成后将光标放在闭合 } 后面,我认为这种方法比搜索更加健壮。
(defun my-tag-region (b e tag)
  "'tag' a region"
  (interactive "r\nMTag for region: ")
  (let ((e (copy-marker e)))
    (goto-char b)
    (insert (format "{%s}" tag))
    (goto-char e)
    (insert (format "{/%s}" tag))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接