我想在 emacs 中设置一个键,用于对缓冲区中的文件执行 shell 命令,并在没有提示的情况下还原缓冲区。shell 命令是:p4 edit 'currentfilename.ext'(global-set-key [\C-...
我想在 emacs 中设置一个键,对缓冲区中的文件执行 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 手册 ,revert-buffer 的定义如下:
Command: revert-buffer &optional ignore-auto noconfirm preserve-modes
谢谢!
您看到的实际错误是因为您错误地指定了全局设置键,即函数调用。您想要的是:
(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)
显然,自定义命令,并根据需要添加错误检查。