加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何实现“shell-command-on-region-to-string”emacs / elisp函

发布时间:2020-12-15 21:27:57 所属栏目:安全 来源:网络整理
导读:我需要得到一个范围(或整个范围)的当前缓冲区,运行程序来处理作为输入的范围,得到结果并将字符串放在当前缓冲区的末尾. 我了解到shell-command-on-region可以处理一个地区. 我了解到shell-command-to-string可以将程序的结果存储到字符串中. 那么,我该如何实
我需要得到一个范围(或整个范围)的当前缓冲区,运行程序来处理作为输入的范围,得到结果并将字符串放在当前缓冲区的末尾.

我了解到shell-command-on-region可以处理一个地区.

我了解到shell-command-to-string可以将程序的结果存储到字符串中.

那么,我该如何实现’shell-command-on-region-to-string’?

(defun shell-command-on-region-to-string (process &optional b e) 
  (interactive)
  (let ((b (if mark-active (min (point) (mark)) (point-min)))
        (e (if mark-active (max (point) (mark)) (point-max))))

  ?? (shell-command-on-region b e process (current-buffer) t)
  ?? how to store the return of a process to a string
  ?? how to insert the result at the end of current buffer
))

解决方法

(defun shell-command-on-region-to-string (start end command)
  (with-output-to-string
    (shell-command-on-region start end command standard-output)))

(defun shell-command-on-region-with-output-to-end-of-buffer (start end command)
  (interactive
   (let ((command (read-shell-command "Shell command on region: ")))
     (if (use-region-p)
         (list (region-beginning) (region-end) command)
       (list (point-min) (point-max) command))))
  (save-excursion
    (goto-char (point-max))
    (insert (shell-command-on-region-to-string start end command))))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读