我将如何编写一个交互式函数,该函数接受一个函数并用在该区域上调用该函数的结果替换当前选定的区域。
我看到这个答案:
https://stackoverflow.com/a/6539916/625365
但那是每行调用一次函数,而不是将区域作为参数给它,而且看起来代码很多。
最佳答案
我认为你可以在 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
),并将区域大写。该函数将要求应用一个函数。最后,删除的文本保存在kill ring中。
关于emacs - 用区域上调用函数的结果替换区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201740/