コミットされたバージョンとの違いを強調するEmacsモードはありますか?


31

Xcodeが持っている機能の1つに、かなり便利だと思うものがあります。これは、現在のバッファーと最新のコミットの違いを継続的に表示する「比較」モードです。

比較モード

Emacsにこのようなものはありますか?同時並行表示についてはあまり気にしません。変更された行の背景を強調するだけで大​​いに役立ちます。

いつでもできることはわかっていますがC-x v =、これはある時点の静的なビューであり、差分のみを表示します。差分を強調表示して、編集可能なファイル全体を表示したい。

回答:


30

Dmitry Gutovのdiff-hlライブラリはdiff-hl-mode、次のスクリーンショットの上部ウィンドウに表示されるフリンジ強調表示を提供します(比較のために実際のdiffが下部ウィンドウに表示されます)。

diff-hlスクリーンショット

vcVCSに依存しないように、Emacs の汎用機能を使用します。Readmeには、「Git、Mercurial、Bazaar、SVNでテスト済み。他のVCバックエンドでも動作する可能性があります」と書かれています。

diff-hl-margin-modeGUI Emacsではなく端末Emacsを使用している場合に使用できることに注意してください。

デフォルトdiff-hlでは、保存されたファイルとリポジトリの違いのみが強調表示さます。ただしdiff-hl-flydiff-mode、未保存の差異も強調表示できるため、編集中に変更を確認できます。

(標準のEmacsへの)組み込みにも注意してくださいhighlight-changes-mode。すぐに問題を解決できるわけではありませんが、highlight-compare-*機能によって解決が容易になる場合があります。


#33は解決されました。
ドミトリー

1
ドミトリー:確かに-私は実際に過去数日間試してみましたが、この機能が非常にうまく機能することを確認できます:)
phils

それはよかった; それは非常に忍耐強い貢献者によって書かれました。答えを更新していただきありがとうございます!
ドミトリー

10

使用しているバージョン管理システムを指定しませんが、gitの場合、行が追加、削除、または変更されたときにgit-gutterを使用して余白にインジケーターを配置できます。MELPAで入手できますM-x package-install git-gutter


これは私が想像していたものにかなり似ていますが、バッファが保存されたときにのみガターを更新するようです。私は...それはとの統合(あるいはそれ以上のように振る舞う)flymakeするだろういかに難しいだろう
ケン

10

Ediffをチェックアウトする必要があります。差分を表示し、(3方向)マージツールとして機能します。変更を簡単に元に戻すことができ、洗練された違いを強調表示して、実際に変更された各ハンクの部分のみを表示します。

ediffのスクリーンショット

ediff-revision 最新のコミットまたは以前のコミットと簡単に比較できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.