首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将region替换为在region上调用函数的结果

将region替换为在region上调用函数的结果
EN

Stack Overflow用户
提问于 2013-01-08 02:22:11
回答 1查看 600关注 0票数 3

我如何编写一个交互式函数,该函数接受一个函数,并将当前选定的区域替换为对该区域调用该函数的结果。

我看到了这个答案:https://stackoverflow.com/a/6539916/625365

但这是每行调用一次函数,而不是将区域作为参数提供给它,这看起来像是大量的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-08 03:08:38

我认为您可以在filter-buffer-substring周围做一些技巧,但这似乎是一个晦涩的函数,至少对我来说是这样。另一方面,在Emacs Lisp中直接执行此操作似乎并不复杂:

代码语言:javascript
复制
(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),并将区域大写。该函数将询问要应用的函数。最后,删除的文本被保存在删除环中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14201740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档