我经常使用replace-regexp
,所以我想把它变成一个函数。但是 M-x replace-regexp
要么扫描文档,要么使用选定的区域;我写的函数似乎只是扫描文档。当我调用replace-regexp
时,如何让它与 M-x my-scripture-links
一样工作,特别是在选择或不选择方面?
(defun my-scripture-links ()
(interactive)
(replace-regexp "^\(.*[0-9]+?:[0-9]+\)" "[[https://www.lds.org/scriptures/search?lang=eng&query=\1&x=0&y=0][\1]]"))
答案 0 :(得分:2)
replace-regexp
的论据是
(replace-regexp REGEXP TO-STRING& optional DELIMITED START END)
要仅在区域内进行替换,您需要指定区域的START
和END
。您可以从region-beginning
和region-end
函数中获取这些内容。要根据区域是否处于活动状态来更改行为,请检查region-active-p
。如果它处于活动状态,这将取代该区域。
(defun my-scripture-links ()
(interactive)
(if (region-active-p)
(replace-regexp "^\(.*[0-9]+?:[0-9]+\)" "[[https://www.lds.org/scriptures/search?lang=eng&query=\1&x=0&y=0][\1]]"
nil (region-beginning) (region-end))
(replace-regexp "^\(.*[0-9]+?:[0-9]+\)" "[[https://www.lds.org/scriptures/search?lang=eng&query=\1&x=0&y=0][\1]]")
))