emacs - 用区域上调用函数的结果替换区域

标签 emacs elisp

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

我看到这个答案:
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/

相关文章:

python - 在带有 Python 或 IPython 的 Emacs 'python-mode' 中使用多个 Python shell

emacs - 使用Emacs进行Web开发是否值得学习

regex - emacs:使用(字符串匹配)在字符串中查找子字符串

emacs - Emacs中如何构建函数关联表?

emacs - 在 Spacemacs 中,如何在不进入插入模式的情况下插入换行符?

emacs - 在 Emacs Lisp 中突出显示非局部变量

emacs - 如何删除组织模式导出中的标签?

algorithm - 斐波那契的 SICP 解决方案,设置 `a + b = a` ,为什么不设置 `a + b = b` ?

emacs - Emacs 中的智能家居

emacs - 如何在 Emacs 中调用交互式 elisp 解释器?