elisp: call command on current file

后端 未结 2 1947
粉色の甜心
粉色の甜心 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.

    0 讨论(0)
  • 2021-02-20 06:10

    Maybe using the minor mode "auto-revert-mode" is an option. Just enable it on the current buffer:

    M-x "auto-revert-mode"
    

    and always ensure the buffer is saved, before executing an external command.

    0 讨论(0)
提交回复
热议问题