เหตุใด emacs จึงไม่สนับสนุนเหตุการณ์สำคัญขึ้น / ลง


9

emacs AFAIK ไม่สนับสนุนเหตุการณ์เท่านั้นkeyup/keydown keypressedตัวอย่างของผลที่ตามมาคือเมื่อเราต้องการทำเครื่องหมายภูมิภาคเราต้องตั้งเครื่องหมายset-mark-commandก่อนแล้วจึงสามารถทำเครื่องหมายภูมิภาคโดยเคลื่อนที่ไปรอบ ๆ จุด แม้ว่านี่จะเป็นคุณลักษณะที่น่าสนใจเนื่องจากคุณไม่จำเป็นต้องกดปุ่ม Shift ค้างไว้ในขณะที่ทำเครื่องหมายข้อความบางครั้งมันก็เป็นสิ่งที่พึงปรารถนาที่จะมีพฤติกรรมแบบเดียวกับในบรรณาธิการอื่น ๆ คำถามนี้คือการเข้าใจว่าทำไม emacs ไม่สนับสนุนคุณสมบัตินี้และทำไมจึงถือว่าดีกว่านี้ นอกจากนี้ยังมีวิธีการในอุดมคติที่เราจะแก้ปัญหานี้ใน emacs ได้อย่างไร?


6
Emacs ยังทำงานในเทอร์มินัลและคีย์เหตุการณ์ขึ้น / ลงไม่สมเหตุสมผลในสภาพแวดล้อมนั้น ค่อนข้างเป็นไปได้อย่างน้อยนั่นก็เป็นเหตุผลทางประวัติศาสตร์ว่าทำไมเหตุการณ์เหล่านี้ไม่ได้รับการสนับสนุน ไม่ได้หมายความว่าพวกเขาไม่ได้รับการสนับสนุน ฉันสงสัยว่าไม่มีใครเห็นความจำเป็นเร่งด่วนที่จะรบกวนมัน
Harald Hanche-Olsen

1
ตกลงนั่นคือเหตุผลที่ถูกต้องแม้ว่าจะมีคุณสมบัติอื่น ๆ ใน emacs ที่ทำงานในสภาพแวดล้อมแบบกราฟิกเท่านั้น (แบบอักษรกิจกรรมเมาส์ ฯลฯ )
เพลา

3
ฉันเขียนโค้ดที่จำลองเหตุการณ์การขึ้น / ลงที่สำคัญเพื่อดูตัวอย่างไฟล์ที่ปุ่มลงแล้วปิดบัฟเฟอร์การแสดงตัวอย่างที่สำคัญเช่นคำตอบบอกว่ามันแฮ็ก แต่บางทีมันอาจจะเป็นสิ่งที่มีเสถียรภาพ emacs.stackexchange.com/questions/275/…
Jordon Biondo

3
คุณหมายถึงพฤติกรรมแบบเดียวกันในเครื่องมือแก้ไขอื่น ๆ หรือไม่ฉันไม่ได้ใช้โปรแกรมแก้ไขข้อความอื่น ๆ ข้อความที่เหลือดูเหมือนจะพูดเป็นนัยที่ "shift + Movement to select" แต่ได้รับการสนับสนุนใน Emacs แล้ว
สเตฟาน

4
แม้ว่าคุณขวาเหตุการณ์สำคัญเหล่านี้ไม่ได้มีอยู่ใน Emacs คุณควรรู้ว่า Emacs ไม่เลือกสนับสนุนกะ (ถ้านั่นคือสิ่งที่เป็นแรงบันดาลใจสำหรับคำถามของคุณ)
Malabarba

คำตอบ:


2

ตามที่ได้รับคำตอบในความคิดเห็นด้วยเหตุผลทางประวัติศาสตร์ Emacs ทำงานในอาคารผู้โดยสารและอุปกรณ์เหล่านั้นเป็นตัวอักษร - คุณจะได้รับลำดับไบต์โดยไม่มีการรับประกันใด ๆ เมื่อสิ่งนี้เกิดขึ้นที่แป้นพิมพ์

การอภิปรายยังชี้ให้เห็นว่าเป็นไปได้ที่จะใช้สิ่งนี้สำหรับสภาพแวดล้อมแบบกราฟิก แต่ไม่มีใครสนใจเรื่องนั้น

โปรดทราบว่าบางโปรแกรมเช่นเกมหรือซอฟต์แวร์เพลงอาจใช้ข้อมูลโดยละเอียดเกี่ยวกับเวลาที่กดคีย์ระยะเวลาและเมื่อวางจำหน่าย แต่การแก้ไขข้อความจะไม่เกี่ยวข้องกับสิ่งเหล่านี้

จากคู่มือ(info "(elisp)Mouse Events"):

Emacs supports four kinds of mouse events:
click events, drag events, button-down events, and motion events.

เหตุการณ์โฮเวอร์สามารถเลียนแบบได้โดยตัวจับเวลาที่ไม่ทำงาน - วิเคราะห์สิ่งที่เกิดขึ้นหลังจากผ่านไปล่าช้า

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