trunk
ファイルがいずれかで終わる Subversion リポジトリに基づくディレクトリにある場合、orをモードラインに表示するにはbranches/X
どうすればよいですか。trunk
X
SVN-trunk
SVN-X
Git-master
2 に答える
SVN ステータスの決定
これを行う組み込みの方法は知りませんが、この目的のために独自のコードを書くことができます。
に基づいてvc-svn-repository-name
、vc-backend
SVN のカスタム モード テキストを返し、他のすべての VC システムのデフォルトにフォールバックする関数を作成できます。
(defun lunaryorn-vc-mode-line ()
(let ((backend (vc-backend (buffer-file-name))))
(if (eq backend 'SVN)
(let ((url (vc-svn-repository-hostname (buffer-file-name))))
(cond
((string-match-p "/trunk/" url) "SVN-trunk")
((string-match "/branches/\\([^/]+\\)/" url)
(concat "SVN-" (match-string 1 url)))
(t vc-mode)))
;; Use default mode text for other backends
vc-mode)))
現在のファイルが SVN の下にある場合、規則に従ってリポジトリ URL をチェックし、対応するモード テキストをコンパイルします。の名前に惑わされないでくださいvc-svn-repository-hostname
。この関数は実際には、指定されたファイルの完全なリポジトリ URL を返します。
他のすべてのバックエンドの場合、または URL がどのパターンとも一致しない場合は、のようにデフォルトの VC ステータス テキストにフォールバックしますvc-mode
。
モードラインへの追加
次に、対応するモード ライン コンストラクトを に追加することで、この関数をモード ラインで使用できますmode-line-format
。
(setq-default mode-line-format
'(…
(vc-mode (" " (:eval (lunaryorn-vc-mode-line))))
…))
mode-line-format
はバッファローカルであるため、グローバル値を変更するために使用しsetq-default
ます。新しいモード ライン コンストラクトvc-mode
は、ファイルがアクティブかどうか、つまりファイルがバージョン管理下にあるかどうかをチェックし、この場合は関数を評価して、カスタム ステータス テキストを取得します。モード ライン構造の詳細については、モード ライン データを参照してください。
省略記号は、モード行のその他の内容を表し、好みに合わせてカスタマイズすることもできます。ただし、 のデフォルト値を単純にコピーして、新しい構造mode-line-format
に置き換えることをお勧めします。(vc-mode vc-mode)
これにより、古い VC 情報がカスタム ステータス テキストに置き換えられ、他のすべては以前のままになります。