elisp: call command on current file

后端 未结 2 1950
粉色の甜心
粉色の甜心 2021-02-20 05:56

I want to set a key in emacs to perform a shell command on the file in the buffer, and revert the buffer without prompting. The shell command is: p4 edit \'currentfilename

2条回答
  •  孤城傲影
    2021-02-20 06:09

    The actual error you're seeing is because you've specified the global-set-key incorrectly, namely the function call. What you want is:

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

    You had the funcall actually evaluating when your .emacs was loading, which is what caused the error.

    Then, to get the whole thing, you can create a command like:

    (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)
    

    Obviously customize the command, and add error checking if you want.

提交回复
热议问题