ใช้ประโยชน์จากพื้นที่เสียงสะท้อนที่ว่างเปล่าเพื่อแสดงข้อมูล


10

พื้นที่เสียงก้องว่างเปล่าเกือบตลอดเวลาซึ่งทำให้ฉันคิดว่าฉันสามารถใช้เพื่อแสดงข้อมูลบางอย่าง ตัวอย่างเช่นorg-clockแสดงภารกิจปัจจุบันเวลาที่เหลือและเวลาที่ผ่านไปทั้งหมดบนแบบจำลอง ข้อมูลนี้จะไม่สามารถอ่านได้จริงๆ (modeline สามารถจะค่อนข้างสั้น) จะถูกทำซ้ำในแต่ละ modeline (เพราะมันใช้กับเซสชั่น emacs ทั้งหมด) และไม่ได้เป็นว่ามีประโยชน์ที่ฉันยินดีที่จะเสียสละพื้นที่ modeline บางอันมีค่าสำหรับมัน . ในทางกลับกันมันอาจปรากฏขึ้นในพื้นที่เสียงก้องเมื่อไม่มีอะไรจะแสดงที่นี่

มีวิธีที่ยอมรับได้ของวิธีนี้หรือไม่? ฉันคิดว่าการแฮ็คฟังก์ชั่นแทรกในminibuffer-inactive-mode-hook(แต่มันไม่ทำงานอย่างน่าเชื่อถือเช่นข้อความหายไปทันทีที่มีการใช้พื้นที่เสียงก้องอีกครั้ง) หรือสแปมข้อความที่ไม่ได้เข้าสู่ระบบ (แต่จะยุ่งกับการใช้งานอื่น ๆ พื้นที่สะท้อนและมินิบัส)

คนยากจนรุ่นนี้จะใช้ตัวจับเวลาว่าง แต่พื้นที่เสียงก้องสามารถว่างเปล่าโดยไม่ต้อง emacs ไม่ได้ใช้งาน (ตัวอย่างเช่นเมื่อป้อนข้อความบางส่วน)


1
พื้นที่ echo ที่แสดงเป็นเนื้อหาของ `* Echo Area 0 * 'หรือ` * Echo Area 1 *' และนี่คือบัฟเฟอร์ "ปกติ" มันควรจะเป็นไปได้ที่จะทำการปะแก้ Emacs เพื่อให้ตะขออาจจะทำงานเมื่อใดก็ตามที่บัฟเฟอร์เหล่านี้ "ล้าง" (หรือแสดงและว่างเปล่า) เพื่อให้ฟังก์ชันนี้สามารถใช้งานได้อย่างมีประสิทธิภาพและเชื่อถือได้
สเตฟาน

มันไม่ตรงกับที่คุณคิด แต่ Bastien Guerry ทำสิ่งที่น่าสนใจเพื่อบันทึกหน้าจอโดยเฉพาะอย่างยิ่งกับการแสดงบรรทัดโหมดในชื่อเฟรม: bzg.fr/emacs-strip-tease.html
Dieter.Wilhelm

คำตอบ:


4

ความคิดเห็นเกี่ยวกับคำถามนี้กล่าวว่าแพคเกจชื่อSymonใช้ประโยชน์จากคุณสมบัติดังกล่าว

ทำได้โดยการส่งสแปมข้อความที่ไม่ได้บันทึกไว้เมื่อ minibuffer ไม่ทำงานและหยุดการแสดงซ้ำทุกครั้งที่มีการออกคำสั่ง หม้อไอน้ำสำหรับที่ค่อนข้างสั้นและหลังจากการใช้งานไม่กี่นาทีฉันไม่สามารถสังเกตเห็นปัญหาใด ๆ กับที่: การใช้ข้อความและ minibuffer ยังคงมีความสำคัญมากกว่าข้อความ

องค์ประกอบที่สำคัญคือ:

  • ฟังก์ชั่นการแสดงผลทำงานบนตัวจับเวลาที่ไม่ได้ใช้งาน (เรียกข้อความด้วยการmessage-log-maxตั้งค่าเพื่อnilให้สตริงที่แสดงไม่ได้รับใน*Messages*บัฟเฟอร์)
  • ฟังก์ชั่น redisplay ทำงานบนตัวจับเวลา
  • ฟังก์ชั่นเพื่อหยุดการแสดงผลให้เรียกใช้ pre-command-hook

ปัญหาเดียวก็คือจอแสดงผลจะหยุดเมื่อใดก็ตามที่คำสั่งจะถูกเรียกใช้ซึ่งรวมถึงเมื่อพิมพ์

สำหรับผู้ที่สนใจผมได้สกัดรหัสที่เกี่ยวข้องลงในแพคเกจสำเร็จรูปที่มีอยู่บนGitHub


1

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

โดยสรุปใช้ทางเลือกอื่น นี่คือบางส่วน:

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

  2. ใช้บรรทัดโหมดบางส่วนหรือทั้งหมด (ซึ่งคุณได้พิจารณาแล้วอย่างชัดเจน)

  3. ใช้บรรทัดส่วนหัว

  4. ใช้ชื่อเฟรม

ถ้าเป็นฉันฉันอาจเลือก # 1 (แต่ฉันไม่ต้องการ / ต้องการการแสดงข้อมูลสถานะแบบเต็มเวลาจริง ๆ ฉันจะกำหนดคำสั่งที่แสดงข้อมูล (แม้กระทั่งประวัติ / บันทึก) ตามต้องการ)


อัปเดตหลังจากความคิดเห็นของคุณ:

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

หากคุณต้องการใช้พื้นที่เสียงก้องจริงๆให้ใช้minibuffer-inactive-mode-hookตามที่คุณกล่าวถึงหรือใช้ตัวจับเวลาเพื่อโทรmessageหรือแทรกข้อความเวลาในพื้นที่เสียงก้องด้วยวิธีอื่น อย่างไรก็ตามคุณได้จดบันทึกปัญหาไว้แล้ว ปัญหาเหล่านั้น (การเขียนทับลบออก) ปฏิบัติตามจาก ( ตั้งใจ ) ไม่จีรังของพื้นที่สะท้อน

โดยรวมคุณต้องการใช้พื้นที่ที่มีไว้สำหรับข้อความชั่วคราว แต่คุณไม่ต้องการให้ข้อความของคุณหายไปทันทีที่พื้นที่นั้นถูกใช้อีกครั้ง

(BTW - คุณพูดถึงว่าข้อมูลบรรทัดโหมดซ้ำแล้วซ้ำอีกในทุกบรรทัดโหมด: ที่ไม่จำเป็นต้องเป็นกรณีนี้คุณสามารถทำให้บรรทัดโหมดเฉพาะเจาะจงสำหรับบัฟเฟอร์ที่เจาะจง ฯลฯ IOW คุณสามารถเลือกหนึ่งบรรทัดโหมดได้เสมอ (หรือแสดงเป็นครั้งคราว) แสดงนาฬิกาของคุณหรืออะไรก็ตาม)


ขอขอบคุณสำหรับคำแนะนำของคุณ! อย่างแรก, ฉันไม่เข้าใจเลย, ทำไมมันถึงเป็นปัญหา? ฉันต้องการสิ่งที่จะไปที่พื้นที่ echo atm เพื่อแทนที่การใช้พื้นที่ echo อื่น ๆ ดังนั้นการลบมันก็โอเค และข้อมูลเพิ่มเติมควรจะปรากฏเฉพาะเมื่อพื้นที่เสียงก้องว่างเปล่าดังนั้นจึงไม่มีอะไรที่จะลบ เสียงนั้นไม่เหมือนสเปคที่สมเหตุสมผลหรือไม่ เกี่ยวกับ # 1 ปัญหาคือฉันไม่ต้องการเสียพื้นที่หน้าจอ พื้นที่เสียงก้องอยู่ที่นั่นเสมอแม้ในขณะที่ว่างเปล่า ฉันแสดงปัญหาบางอย่างกับ # 2 และ # 3 และ # 4 แบ่งปันปัญหาเหล่านี้มากมาย
T. Verron

เกี่ยวกับเหตุผลที่ผมต้องการแสดงผลแบบเต็มเวลาของข้อมูลที่ใช้สำหรับตัวอย่างorg-clockเช่นจากคำถาม: ฉันต้องการจับเวลาฟ้องลงไปเตือนฉันของสิ่งที่ฉันควรจะทำและว่าผมควรจะทำที่ตอนนี้เป็น บ่อยที่สุด
T. Verron

"ข้อความหายไปทันทีที่มีการใช้พื้นที่ก้องอีกครั้ง" ตกลงที่ไม่ชัดเจน สิ่งที่ฉันหมายถึงคือถ้าฉันใช้minibuffer-inactive-mode-hookและออกจาก minibuffer ข้อความจะแสดง จากนั้นหากมีคำสั่งอื่นพิมพ์สิ่งใดไปยังพื้นที่ echo ข้อความใหม่นี้จะถูกเพิ่มและข้อความชั่วคราวจะไม่กลับมา (เพราะ minibuffer ไม่ได้เกี่ยวข้องในครั้งนี้)
T. Verron

เกี่ยวกับ modeline ปัญหาหลักคือพื้นที่ว่างขนาดเล็กที่นั่น (ฉันมักจะมีหน้าต่างจำนวนมากแบ่งเป็นแนวนอนเป็นแบบจำลองสั้นมาก)
T. Verron

อีกครั้ง - " โดยรวมคุณต้องการใช้พื้นที่ที่มีไว้สำหรับข้อความชั่วคราว แต่คุณไม่ต้องการให้ข้อความของคุณหายไปทันทีที่พื้นที่นั้นถูกใช้อีกครั้ง " ใช้ตัวจับเวลาด้วยmessageหรือpost-command-hookหากคุณต้องการ แต่ปัญหาที่สำคัญของการหายไป / เขียนทับจะทำให้ศีรษะของคุณบางครั้งเนื่องจากคุณพยายามใช้พื้นที่แสดงผลชั่วคราวสำหรับบางสิ่งที่คุณไม่ต้องการให้เป็นชั่วคราว
ดึง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.