มีโหมด Emacs หรือไม่ซึ่งเน้นความแตกต่างจากเวอร์ชั่นที่กำหนดไว้?


31

คุณสมบัติหนึ่งที่ Xcode มีซึ่งฉันคิดว่าค่อนข้างเรียบร้อยคือโหมด "การเปรียบเทียบ" ซึ่งแสดงความแตกต่างอย่างต่อเนื่องระหว่างบัฟเฟอร์ปัจจุบันและการกระทำล่าสุด

โหมดเปรียบเทียบ

มีอะไรแบบนี้สำหรับ Emacs ไหม? ฉันไม่สนใจเกี่ยวกับมุมมองด้านข้างพร้อมกัน เพียงแค่เน้นพื้นหลังของบรรทัดใด ๆ ที่มีการเปลี่ยนแปลงจะเป็นความช่วยเหลือที่ดี

ฉันรู้ว่าฉันสามารถทำได้ตลอดเวลาC-x v =แต่มันเป็นมุมมองคงที่ของเวลาหนึ่งจุดและแสดงให้เห็นถึงความแตกต่าง ฉันต้องการที่จะเห็นไฟล์ทั้งหมดของฉันแก้ไขได้โดยมีการเน้นสี

คำตอบ:


30

Dmitry Gutov ของdiff-hlห้องสมุดให้diff-hl-modeซึ่งจะช่วยให้คุณขอบเน้นแสดงในหน้าต่างด้านบนในภาพต่อไปนี้ (ที่มีความแตกต่างที่เกิดขึ้นจริงแสดงในหน้าต่างด้านล่างสำหรับการเปรียบเทียบ):

ภาพหน้าจอ diff-hl

มันใช้vcฟังก์ชั่นทั่วไปใน Emacs เพื่อให้เป็นผู้ไม่เชื่อเรื่องพระเจ้า VCS readme บอกว่า "ผ่านการทดสอบกับ Git, Mercurial, Bazaar และ SVN อาจทำงานร่วมกับแบ็กเอนด์ VC อื่น ๆ ได้เช่นกัน"

โปรดทราบว่าdiff-hl-margin-modeสามารถใช้งานได้หากคุณใช้ Terminal Emacs มากกว่า GUI Emacs

โดยค่าเริ่มต้นdiff-hlเน้นเฉพาะความแตกต่างระหว่างไฟล์ที่บันทึกและที่เก็บ; แต่diff-hl-flydiff-modeเปิดใช้งานการเน้นความแตกต่างที่ไม่ได้บันทึกไว้เพื่อให้คุณเห็นการเปลี่ยนแปลงในขณะที่คุณแก้ไข

นอกจากนี้ยังทราบในตัว (เพื่อ Emacs highlight-changes-modeมาตรฐาน) แต่นั่นไม่ได้แก้ปัญหาของคุณออกนอกกรอบจริงๆ แต่highlight-compare-*ฟังก์ชั่นอาจช่วยแก้ปัญหาได้


# 33 ได้รับการแก้ไข
Dmitry

1
มิทรี: แท้จริง - ฉันได้จริงรับการพยายามที่มันออกมาในช่วงไม่กี่วันที่ผ่านมาและผมสามารถยืนยันได้ว่าคุณลักษณะนี้ทำงานเป็นอย่างดี :)
Phils

ฉันดีใจที่ได้ยิน มันถูกเขียนขึ้นโดยผู้มีส่วนร่วมที่อดทนมากคนหนึ่ง ขอบคุณสำหรับการอัพเดทคำตอบ!
Dmitry

10

คุณไม่ได้ระบุว่าคุณใช้ระบบควบคุมเวอร์ชันใด แต่ถ้าเป็น git คุณสามารถใช้git-gutterเพื่อใส่ตัวบ่งชี้ในระยะขอบเมื่อมีการเพิ่มลบหรือแก้ไขบรรทัด มันมีอยู่ใน MELPA M-x package-install git-gutterผ่าน


สิ่งนี้ดูใกล้เคียงกับที่ฉันจินตนาการเอาไว้ แต่ดูเหมือนว่าจะอัปเดตเฉพาะรางน้ำเมื่อบันทึกบัฟเฟอร์ ฉันสงสัยว่ามันยากแค่ไหนที่จะทำงานร่วมกับ flymake (หรือทำตัวเป็นอย่างอื่นมากกว่า) ...
Ken

10

คุณควรตรวจสอบEdiff มันสามารถแสดงผลต่างและทำหน้าที่เป็นเครื่องมือผสาน (3 ทาง) มันช่วยให้คุณย้อนกลับการเปลี่ยนแปลงได้อย่างง่ายดายและยังเน้นถึงความแตกต่างที่ละเอียดอ่อนเพื่อแสดงเฉพาะส่วนของแต่ละก้อนที่เปลี่ยนแปลงจริง

สกรีนช็อตของ ediff

ediff-revision จะช่วยให้คุณเปรียบเทียบกับการคอมมิทล่าสุดหรือคอมมิชชันก่อนหน้าใด ๆ ได้อย่างง่ายดาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.