问题描述
我想从以下位置计算组织标题:
* heading how
* heading are
* heading you
到
* 1.heading how
* 2.heading are
* 3.heading you
所以我把 numerate-org-heading
写成:
(defun numerate-org-heading (args)
"Numerate org headings"
(interactive "s")
(let ((count 0))
(while (re-search-forward args nil t)
(setq count (1+ count))
(replace-match (concat "\1" (string count)
(forward-char 1))))))
不幸的是,当我以交互方式调用 Wrong type argument: stringp,^*
并用字符串“^*”馈送它时,它报告 numerate-org-heading
错误。
(defun numerate-org-heading (args)
"Numerate org headings"
(interactive "s")
(let ((count 0))
(while (re-search-forward args nil t)
(setq count (1+ count))
(replace-match (concat "* " (number-to-string count) ".")
(forward-char 1))))))
解决方法
如果您将 args
设置为匹配组并捕获任何尾随空格,您可以将其替换为组 1 ("\\1"
),后跟您的编号,例如1.
(defun numerate-org-heading (args)
"Numerate org headings"
(interactive "s")
(let ((count 0))
(while (re-search-forward (concat "\\(" args "[ \\t]*\\)") nil t)
(setq count (1+ count))
(replace-match (concat "\\1" (number-to-string count) ".")))))