2012-06-06 198 views
4

我想通過提供命令行參數,例如能夠告訴Emacs的只讀模式 或自動復歸模式打開文件: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)) 

與此相關的問題是,它一次只適用於單個文件。

emacs -R file1 

作品,但

emacs -R file1 file2 

不起作用。

如何更改上述功能,使他們可以在指定的模式下同時打開多個文件? 有人可以建議一個簡單而優雅的解決方案嗎?

回答

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

順便說一句,請注意,這將每個相對於前一個目錄文件打開。