4

我希望能够通过提供命令行参数来告诉 emacs 以只读模式或自动恢复模式打开文件,例如:

emacs -A file1 file2 file3 ...  

应该以自动恢复模式打开文件

emacs -R file1 file2 file3 ... 

应该以只读模式打开文件

我发现了以下内容:

(defun open-read-only (switch)
  (let ((file1 (expand-file-name (pop command-line-args-left))))
  (find-file-read-only file1)))
(add-to-list 'command-switch-alist '("-R" . open-read-only))

(defun open-tail-revert (switch)
  (let ((file1 (expand-file-name (pop command-line-args-left))))
  (find-file-read-only file1)
  (auto-revert-tail-mode t)))
(add-to-list 'command-switch-alist '("-A" . open-tail-revert))

这样做的问题是它一次只适用于一个文件。

IE

emacs -R file1 

有效,但是

emacs -R file1 file2

不起作用。

如何更改上述功能,以便它们可以在指定模式下同时打开多个文件?有人可以提出一个简单而优雅的解决方案吗?

4

1 回答 1

4

只需消耗物品,command-line-args-left直到下一次切换:

(defun open-read-only (switch)
  (while (and command-line-args-left
              (not (string-match "^-" (car command-line-args-left))))
    (let ((file1 (expand-file-name (pop command-line-args-left))))
      (find-file-read-only file1))))

顺便说一句,请注意,这将打开相对于前一个目录的每个文件。

于 2012-06-06T09:35:23.483 回答