如何在Emacs中配置Ruff的两个命令绑定以检查和修复当前缓冲区?
如何在Emacs中配置Ruff的两个命令绑定以检查和修复当前缓冲区?
没问题,我来教你怎么在Emacs里配置这两个Ruff命令,直接把下面的代码加到你的Emacs配置文件(比如~/.emacs或者~/.emacs.d/init.el)里就行:
首先定义检查命令ruff-check:
(defun ruff-check () "Run ruff check --select ALL on the current buffer's file." (interactive) (let ((file-name (buffer-file-name))) (if file-name (shell-command (format "ruff check --select ALL %s" (shell-quote-argument file-name))) (message "Current buffer is not visiting a file!"))))
接着定义修复命令ruff-fix:
(defun ruff-fix () "Run ruff check --select ALL --fix on the current buffer's file." (interactive) (let ((file-name (buffer-file-name))) (if file-name (progn (shell-command (format "ruff check --select ALL --fix %s" (shell-quote-argument file-name))) (revert-buffer t t t)) ; 修复后自动刷新缓冲区,直接看到修改效果 (message "Current buffer is not visiting a file!"))))
简单解释下这两个函数:
- 它们都会先判断当前缓冲区是否关联了本地文件,如果是新建未保存的空缓冲区,会弹出提示告诉你没法执行命令
ruff-fix里额外加了revert-buffer,因为Ruff修复是直接修改磁盘上的文件,这步能自动刷新缓冲区,让你立刻看到修复后的内容
配置加好之后,要么重启Emacs,要么在配置文件里执行M-x eval-buffer加载修改,之后你就可以通过M-x ruff-check执行全量检查,用M-x ruff-fix执行全量修复啦。
如果想更方便,还可以给这两个命令绑定快捷键,比如把下面的代码也加到配置里:
;; 可选:绑定快捷键,示例为C-c r c 触发检查,C-c r f 触发修复 (global-set-key (kbd "C-c r c") 'ruff-check) (global-set-key (kbd "C-c r f") 'ruff-fix)
备注:内容来源于stack exchange,提问作者Timur Shtatland
相关产品推荐
相关产品推荐

