如何在emacs中标记文本

如何在emacs中标记文本,emacs,function,macros,tags,Emacs,Function,Macros,Tags,我正在emacs中开发一个文本注释系统,注释的格式如下所示。如果这是文本: Lorem ipsem por favor 我需要这样注释它: {latin}Lorem imsem{/latin} {spanish}por favor{/spanish} 因此,我要做的是选择一个区域,然后运行一个函数或宏,它将提示输入标记名,并在区域的开始和结束处将大括号、结束/结束符和标记名插入缓冲区 这可能非常简单,但我总是发现emacs lisp在开始使用时相当混乱,因为我根本不经常使用它。是一个,我相信

我正在emacs中开发一个文本注释系统,注释的格式如下所示。如果这是文本:

Lorem ipsem por favor
我需要这样注释它:

{latin}Lorem imsem{/latin} {spanish}por favor{/spanish}
因此,我要做的是选择一个区域,然后运行一个函数或宏,它将提示输入标记名,并在区域的开始和结束处将大括号、结束/结束符和标记名插入缓冲区


这可能非常简单,但我总是发现emacs lisp在开始使用时相当混乱,因为我根本不经常使用它。是一个,我相信很多不同的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))))

如果您想在结束}后找到点,我认为这比搜索更可靠:

(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))))

太棒了,谢谢!为了将光标放在末尾的正确位置,在保存偏移函数之后,我们可以执行(向前搜索“}”)