emacs扩展执行系统调用、睡眠,然后重新加载缓冲区

emacs扩展执行系统调用、睡眠,然后重新加载缓冲区,emacs,lisp,Emacs,Lisp,我想编写一个emacs扩展,这样当我执行M-x,b,k,e时,会发生以下事情: 执行系统/shell调用,其中最后一个参数是当前选定缓冲区文件的完整路径 如果无法阻止返回系统调用,请等待命令终止或休眠3秒钟 重新加载/恢复当前缓冲区 这是怎么做到的?给你(三个中至少有两个) 1) 带最后一个参数的Shell调用 (defun b () (interactive) (shell-command (concat (read-string "$ ") " " buffer-file-name)

我想编写一个emacs扩展,这样当我执行M-x,b,k,e时,会发生以下事情:

  • 执行系统/shell调用,其中最后一个参数是当前选定缓冲区文件的完整路径
  • 如果无法阻止返回系统调用,请等待命令终止或休眠3秒钟
  • 重新加载/恢复当前缓冲区
  • 这是怎么做到的?

    给你(三个中至少有两个)

    1) 带最后一个参数的Shell调用

    (defun b ()
      (interactive)
      (shell-command (concat (read-string "$ ") " " buffer-file-name)))
    
    2) 我不知道,对不起

    3) 重新加载文件

    (defun e ()
      (interactive)
      (revert-buffer t t t))
    
    给你(三个中至少两个)

    1) 带最后一个参数的Shell调用

    (defun b ()
      (interactive)
      (shell-command (concat (read-string "$ ") " " buffer-file-name)))
    
    2) 我不知道,对不起

    3) 重新加载文件

    (defun e ()
      (interactive)
      (revert-buffer t t t))
    

    除密钥绑定部分外,此问题与:elisp:.

    相同。除密钥绑定部分外,此问题与:elisp:.

    相同。此问题应关闭:

    (defun bke ()
      (interactive)
      (let ((buf-name (buffer-file-name)))
        (with-temp-buffer
          (shell-command (concat "your-command-here " buf-name) t))
        (revert-buffer t t t))
    
    这应该很接近:

    (defun bke ()
      (interactive)
      (let ((buf-name (buffer-file-name)))
        (with-temp-buffer
          (shell-command (concat "your-command-here " buf-name) t))
        (revert-buffer t t t))
    

    一个好的开始方法是学习Lisp。一个好的开始方法可能的重复是学习Lisp。它可能的重复看起来像shell命令块,因此它将固有地等待。谢谢你的回答。它看起来像shell命令块,所以它会等待。谢谢你的回答。太好了!我刚刚用
    (全局设置键(kbd“C-C bke”)'bke)
    将它绑定到一个键序列,然后我就开始运行了。谢谢完美的我刚刚用
    (全局设置键(kbd“C-C bke”)'bke)
    将它绑定到一个键序列,然后我就开始运行了。谢谢