我如何编写一个交互式函数,该函数接受一个函数,并将当前选定的区域替换为对该区域调用该函数的结果。
我看到了这个答案:https://stackoverflow.com/a/6539916/625365
但这是每行调用一次函数,而不是将区域作为参数提供给它,这看起来像是大量的代码。
发布于 2013-01-08 03:08:38
我认为您可以在filter-buffer-substring周围做一些技巧,但这似乎是一个晦涩的函数,至少对我来说是这样。另一方面,在Emacs Lisp中直接执行此操作似乎并不复杂:
(defun apply-function-to-region (fn)
(interactive "XFunction to apply to region: ")
(save-excursion
(let* ((beg (region-beginning))
(end (region-end))
(resulting-text
(funcall
fn
(buffer-substring-no-properties beg end))))
(kill-region beg end)
(insert resulting-text))))然后,您可以使用一个接受并生成文本的函数(比如capitalize),并将区域大写。该函数将询问要应用的函数。最后,删除的文本被保存在删除环中。
https://stackoverflow.com/questions/14201740
复制相似问题