จะใช้ while-no-input ได้อย่างไร?


11

จาก docstring:

ดำเนินการ BODY ตราบใดที่ไม่มีการป้อนข้อมูลที่รอดำเนินการ
หากอินพุตมาถึงนั่นจะเป็นการจบการทำงานของ BODY และwhile-no-inputส่งคืน t การเลิกทำให้มันกลับมาเป็นศูนย์ ถ้า BODY เสร็จแล้วwhile-no-inputส่งคืนค่าใด ๆ ที่ BODY สร้างขึ้น

หากฉันเข้าใจอย่างถูกต้องมาโครนี้จะอนุญาตให้ฉัน (พยายาม) ทำการคำนวณอย่างหนักโดยไม่ต้องแขวนอินเทอร์เฟซ นั่นเป็นแนวคิดที่ฉันคิดว่าน่าสนใจ แต่ฉันก็ยังสงสัยว่าเมื่อไรที่มีประโยชน์ในทางปฏิบัติ

ดูเหมือนว่าการคำนวณสามารถถูกขัดจังหวะได้ตลอดเวลาโดยไม่มีข้อมูลว่าเกิดอะไรขึ้นและไม่มีวิธีที่ง่ายในการดำเนินการต่อในภายหลัง ซึ่งทำให้ฉันคิดว่ามันอาจจะไม่เป็นประโยชน์หลังจากทั้งหมด ...

  • มีวิธีแนะนำให้ใช้while-no-inputแมโครหรือไม่?
  • มีตัวอย่างการใช้มาโครนี้ในป่าไหม?

1
ดูเหมือนว่า icomplete +, ivy, helm เป็นบางแพ็คเกจที่ใช้งาน
Kaushal Modi

คำตอบ:


10

แน่นอนว่าไม่มีการสนับสนุนสำหรับการเริ่มต้นใหม่ แน่นอนร่างของwhile-no-inputสามารถทำ "จุดตรวจ" ปกติเพื่อให้ทราบว่าจะเริ่มในครั้งต่อไป

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


4

มันมีประโยชน์อย่างมากในการให้คำปรึกษา - git-grep : ฉันสามารถโทรหาgit grepที่เก็บ git Emacs ทั้งหมด 3,800,000 บรรทัดหลังจากกดปุ่มแต่ละครั้ง ไม่มีแฮงค์ และมันก็โอเคที่จะถูกขัดจังหวะคุณเพียงแค่ต้องตรวจสอบว่า

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