คำถามติดแท็ก undo-tree-mode

2
ฉันจะเลิกพฤติกรรมใน Evil ได้อย่างไรเหมือนกับ Vim
พฤติกรรมการเลิกทำที่เป็นค่าเริ่มต้นใน Evil นั้นหยาบเกินไปเพราะจะพิจารณาสิ่งใด ๆ ที่เกิดขึ้นระหว่างการเข้าสู่โหมดแทรกและปล่อยให้มันเป็นการดำเนินการแก้ไขเดียว เมื่อคุณป้อนทั้งย่อหน้าของข้อความในระหว่างการแทรกหนึ่งครั้งจากนั้นดำเนินการเลิกทำทั้งย่อหน้าจะถูกลบออก ในทางตรงกันข้าม Vim จะเริ่มการเลิกทำหน่วยใหม่เมื่อใดก็ตามที่คุณเลื่อนเคอร์เซอร์ในโหมดแทรกโดยใช้วิธีอื่นนอกเหนือจากการป้อนข้อความ Evil มีตัวแปรการปรับแต่งที่สามารถใช้เพื่อรับประวัติเลิกทำที่ละเอียดยิ่งขึ้น: (setq evil-want-fine-undo t) ด้วยการตั้งค่านี้ Evil จะเริ่มการเลิกทำหน่วยใหม่เมื่อเคอร์เซอร์ถูกย้ายในโหมดแทรกเช่นเดียวกับ Vim อย่างไรก็ตามการตั้งค่านี้ยังยุ่งกับวิธีการจัดการการแทนที่: หากคุณแทนที่คำที่ใช้cwคุณต้องเลิกทำสองครั้งเพื่อคืนค่าคำเดิม: หนึ่งครั้งสำหรับการลบคำใหม่และอีกครั้งสำหรับการแทรกคำเดิม สิ่งนี้ไม่สอดคล้องกับ Vim และไม่สมเหตุสมผลเนื่องจากการแทนที่ควรเป็นแบบอะตอมมิก คำถาม: ฉันจะกำหนดค่า Evil และ undo-tree ได้อย่างไรเพื่อรับพฤติกรรมการยกเลิกของ Vim

3
จะยุบประวัติเลิกทำอย่างไร
ฉันกำลังทำงานในโหมด Emacs ที่ให้คุณควบคุม Emacs ด้วยการรู้จำเสียง หนึ่งในปัญหาที่ฉันพบคือวิธีที่ Emacs จัดการเลิกทำไม่ตรงกับที่คุณคาดหวังว่ามันจะทำงานเมื่อควบคุมด้วยเสียง เมื่อผู้ใช้พูดหลาย ๆ คำและหยุดชั่วคราวนั่นเรียกว่า 'คำพูด' คำพูดอาจประกอบด้วยหลายคำสั่งเพื่อให้ Emacs ดำเนินการ บ่อยครั้งที่ตัวจำแนกลายมือรู้จักหนึ่งคำสั่งหรือมากกว่านั้นภายในคำพูดที่ไม่ถูกต้อง ณ จุดนั้นฉันต้องการที่จะพูดว่า "เลิกทำ" และให้ Emacs เลิกทำการกระทำทั้งหมดด้วยคำพูดไม่ใช่แค่การกระทำสุดท้ายภายในคำพูด กล่าวอีกนัยหนึ่งฉันต้องการให้ Emacs ใช้คำพูดเดียวกับคำสั่งที่เกี่ยวข้องกับการเลิกทำแม้ว่าคำพูดนั้นจะประกอบด้วยหลายคำสั่งก็ตาม ฉันต้องการที่จะกลับไปที่เดิมก่อนคำพูดฉันสังเกตเห็นว่า Emacs การเลิกทำตามปกติไม่ได้ทำเช่นนี้ ฉันมีการตั้งค่า Emacs เพื่อรับการเรียกกลับที่จุดเริ่มต้นและจุดสิ้นสุดของคำพูดแต่ละคำเพื่อให้ฉันสามารถตรวจสอบสถานการณ์ได้ฉันต้องคิดว่าจะให้ Emacs ทำอะไร เป็นการดีที่ฉันจะเรียกสิ่งที่ชอบ(undo-start-collapsing)แล้ว(undo-stop-collapsing)และสิ่งที่ทำในระหว่างนั้นจะถูกยุบลงอย่างน่าอัศจรรย์เป็นหนึ่งระเบียน ฉันทำการสืบค้นผ่านเอกสารและพบundo-boundaryแต่มันตรงกันข้ามกับสิ่งที่ฉันต้องการ - ฉันต้องยุบการกระทำทั้งหมดภายในคำพูดเป็นหนึ่งในการยกเลิกการบันทึกไม่ใช่การแยกพวกเขาออก ฉันสามารถใช้undo-boundaryระหว่างคำพูดเพื่อให้แน่ใจว่าการแทรกได้รับการพิจารณาแยกต่างหาก (โดยค่าเริ่มต้นจะพิจารณาการแทรกที่ต่อเนื่องกันเป็นหนึ่งการกระทำจนถึงขีด จำกัด ) แต่นั่นก็คือ ภาวะแทรกซ้อนอื่น ๆ : daemon การจดจำเสียงของฉันส่งคำสั่งไปยัง Emacs โดยการจำลองปุ่มกด X11 …

1
การรวม magit กับ undo-tree เพื่อให้ง่ายต่อการนำทางประวัติศาสตร์
ฉันรักundo-tree(ภาพหน้าจอด้านล่าง) มันมีวิธีที่ง่ายสำหรับการนำทางผ่านรุ่นที่แตกต่างของไฟล์ (หน้าต่างด้านบน) โดยให้ย้ายผู้ใช้รอบ ๆ ต้นไม้ประวัติศาสตร์ของไฟล์ในหน้าต่างแยกต่างหาก (หน้าต่างด้านล่าง) ด้วยปุ่มง่ายเช่นn, pและC-bและC-fสวิทช์ข้ามลูกหลานของเดียวกัน ผู้ปกครอง สิ่งที่สะดุดตาที่สุดคือundo-treeอัพเดตบัฟเฟอร์ที่เก็บไฟล์ด้วยเวอร์ชันที่สอดคล้องตามการเลือกในมุมมองแบบต้นไม้โดยอัตโนมัติ แน่นอนว่าmagitเป็นปรากฏการณ์สำหรับคอมไพล์และมันก็น่าทึ่งถ้ามันมีความสามารถที่คล้ายกันคือให้ผู้ใช้สำรวจประวัติคอมไพล์ของไฟล์แบบโต้ตอบในขณะที่อัพเดทบัฟเฟอร์ที่ถือไฟล์โดยอัตโนมัติ วันนี้เป็นไปได้magitหรือไม่

3
เป็นไปได้ที่จะไม่ใช้เลิกทำต้นไม้ในโหมดชั่วร้าย?
ดังนั้นทุกครั้งที่ผมใช้เป็นข้อบกพร่องในการยกเลิกต้นไม้ที่ฉันไม่สามารถทำซ้ำมีดังต่อไปนี้ปัญหาที่รู้จักกัน , รายงานอื่นและReddit ด้าย primitive-undo: Unrecognized entry in undo list undo-tree-canary สิ่งนี้แย่มากและอาจทำให้งานเสียไปหากคุณไม่ได้บันทึกไฟล์เวอร์ชันใหม่ล่าสุด เนื่องจากฉันไม่เคยใช้ฟังก์ชั่นการเลิกทำกิ่งก้านสาขามันเป็นไปได้ไหมที่จะใช้ emacs linear undo กับโหมดความชั่วร้าย? หมายเหตุ: ฉันได้ลองตั้งค่า(global-undo-tree-mode -1)โดยตรงหลังจาก(evil-mode 1)ที่ปิดใช้งานการเลิกทรี แต่การทำซ้ำ (Ctrl-R) ไม่ทำงานหลังจากทำสิ่งนี้

1
การกำหนดค่า Emacs และโดยเฉพาะการเลิกทำต้นไม้สำหรับการจัดการหน้าต่าง
ฉันต้องการใช้ Emacs ในรูปแบบเฟรมและปล่อยให้ตัวจัดการหน้าต่างเรียงต่อกันของฉันจัดการกับองค์กรบัฟเฟอร์ ตัวอย่างเช่นทำตามบทช่วยสอนนี้ ตามค่าเริ่มต้นแพ็คเกจ Emacs เช่น undo-tree-mode ดูเหมือนจะขึ้นอยู่กับหน้าต่างเพื่อแสดงการสร้างภาพ ฉันผิดหรือเปล่า ฉันสามารถยกเลิกโหมดต้นไม้เป็นค่าเริ่มต้นเพื่อเปิด Visualizer ในเฟรมอื่นได้หรือไม่

2
วิธีการสร้างการเลิกทำแบบเส้นต้นไม้ - undo-tree-undo / redo
เมื่อรันคำสั่งundo-tree-undo/redoอย่างต่อเนื่องสิ่งต่าง ๆ จะถูกเลิกทำ / ทำซ้ำตามสาขาที่ใช้งานอยู่ในปัจจุบัน แม้ว่าผู้ใช้จะได้รับข้อความจุดสาขาตลอดทางสาขาก่อนหน้านี้จะถูกละเว้นเว้นแต่ผู้ใช้เลือกสาขาอื่นด้วยตนเอง ฉันเข้าใจว่าฉันสามารถเปิดวิชวลไลเซอร์และเลือกสาขาอื่นได้ แต่มันจะมีประโยชน์มากในการกดปุ่มเลิกทำ / ทำซ้ำและดูทุกอย่างที่เกิดขึ้นตามลำดับตรงกันข้าม โดยหลักการแล้วสิ่งนี้ควรจะทำงานโดยไม่คำนึงว่าvisualizerบัฟเฟอร์นั้นเปิดอยู่หรือไม่นั่นคือการคำนวณคำสั่งจากโปรแกรมจนจบโดยทางโปรแกรมและตั้งแต่ต้นจนจบ ถาม : นี่คือการร้องขอคุณสมบัติเพื่อขยายundo-treeเพื่ออนุญาตให้ยกเลิก / ทำซ้ำแบบเชิงเส้นต่อเนื่องโดยไม่คำนึงว่าบัฟเฟอร์ Visualizer เปิดอยู่หรือไม่ [ฟังก์ชั่นใหม่และแป้นพิมพ์ลัดสำหรับคุณสมบัติใหม่นี้เป็นที่ยอมรับอย่างแน่นอน]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.