gpt4 book ai didi

emacs - elisp:对当前文件调用命令

转载 作者:行者123 更新时间:2023-12-03 15:09:42 26 4
gpt4 key购买 nike

我想在emacs中设置一个key,对缓冲区中的文件执行shell命令,不提示就恢复缓冲区。 shell 命令是:p4 edit 'currentfilename.ext'

(global-set-key [\C-E] (funcall 'revert-buffer 1 1 1)) 
;; my attempt above to call revert-buffer with a non-nil
;; argument (ignoring the shell command for now) -- get an init error:
;; Error in init file: error: "Buffer does not seem to be associated with any file"

全新的elisp。来自 emacs manual ,这里是还原缓冲区的定义:
Command: revert-buffer &optional ignore-auto noconfirm preserve-modes

谢谢!

最佳答案

您看到的实际错误是因为您错误地指定了 global-set-key,即函数调用。你想要的是:

(global-set-key (kbd "C-S-e") '(lambda () (revert-buffer t t t)))

你有 funcall实际评估 .emacs 何时加载,这就是导致错误的原因。

然后,为了得到整个事情,你可以创建一个命令,如:
(defun call-something-on-current-buffers-file ()
"run a command on the current file and revert the buffer"
(interactive)
(shell-command
(format "/home/tjackson/bin/dummy.sh %s"
(shell-quote-argument (buffer-file-name))))
(revert-buffer t t t))
(global-set-key (kbd "C-S-e") 'call-something-on-current-buffers-file)

显然可以自定义命令,并根据需要添加错误检查。

关于emacs - elisp:对当前文件调用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com