Có chế độ Emacs làm nổi bật sự khác biệt so với phiên bản đã cam kết không?


31

Một tính năng mà Xcode có mà tôi nghĩ là khá gọn gàng là chế độ "So sánh", liên tục hiển thị sự khác biệt giữa bộ đệm hiện tại và cam kết gần đây nhất.

Chế độ so sánh

Có bất cứ điều gì như thế này cho Emacs? Tôi không thực sự quan tâm đến các quan điểm song song đồng thời. Chỉ cần làm nổi bật nền của bất kỳ dòng nào đã được thay đổi sẽ là một trợ giúp tuyệt vời.

Tôi biết tôi luôn có thể làm được C-x v =, nhưng đó là chế độ xem tĩnh tại một thời điểm và chỉ hiển thị các khác biệt. Tôi muốn xem toàn bộ tập tin của mình, có thể chỉnh sửa, với các khác biệt được tô sáng.

Câu trả lời:


30

Thư viện diff-hl của Dmitry Gutov cung cấp diff-hl-mode, cung cấp cho bạn phần tô sáng rìa được hiển thị trong cửa sổ trên cùng trong ảnh chụp màn hình sau (với độ lệch thực tế được hiển thị trong cửa sổ dưới cùng để so sánh):

ảnh chụp màn hình diff-hl

Nó sử dụng vcchức năng chung trong Emacs để trở thành thuyết bất khả tri của VCS. Người đọc nói "Đã thử nghiệm với Git, Mercurial, Bazaar và SVN. Cũng có thể làm việc với các phụ trợ VC khác."

Lưu ý rằng diff-hl-margin-modecó thể được sử dụng nếu bạn đang sử dụng Emacs đầu cuối thay vì GUI Emacs.

Theo mặc định, diff-hlchỉ nêu bật sự khác biệt giữa tệp đã lưu và kho lưu trữ; nhưng cũng diff-hl-flydiff-modecho phép làm nổi bật các khác biệt chưa lưu để bạn có thể thấy các thay đổi trong khi chỉnh sửa.

Cũng lưu ý tích hợp (theo Emacs tiêu chuẩn) highlight-changes-mode. Điều đó không thực sự giải quyết vấn đề của bạn, nhưng các highlight-compare-*chức năng có thể tạo điều kiện cho một giải pháp.


# 33 đã được giải quyết.
Dmitry

1
Dmitry: Thật vậy - Tôi thực sự đã dùng thử trong vài ngày qua và tôi có thể xác nhận rằng tính năng này hoạt động rất tốt :)
phils

Rất vui khi nghe điều này; nó được viết bởi một người đóng góp rất kiên nhẫn. Cảm ơn đã cập nhật câu trả lời!
Dmitry

10

Bạn không chỉ định hệ thống kiểm soát phiên bản nào bạn đang sử dụng, nhưng nếu đó là git, ou có thể sử dụng git-máng xối để đặt chỉ báo vào lề khi một dòng được thêm, xóa hoặc sửa đổi. Nó có sẵn trong MELPA thông qua M-x package-install git-gutter.


Điều này trông khá gần với những gì tôi đang tưởng tượng, nhưng có vẻ như nó chỉ cập nhật máng xối khi bộ đệm được lưu. Tôi tự hỏi làm thế nào khó để tích hợp với (hay nói cách khác là hành động giống như) ...
Ken

10

Bạn nên kiểm tra Ediff . Nó có thể hiển thị cả diffs và hoạt động như một công cụ hợp nhất (3 chiều). Nó cho phép bạn dễ dàng hoàn nguyên các thay đổi và cũng làm nổi bật các khác biệt được tinh chỉnh để chỉ cho bạn thấy các phần của mỗi khối đã thực sự thay đổi.

ảnh chụp màn hình của ediff

ediff-revision sẽ cho phép bạn dễ dàng so sánh với các cam kết gần đây nhất hoặc bất kỳ cam kết nào trước đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.