ฉันกำลังเขียนส่วนขยาย emacs สำหรับใช้กับการรู้จำเสียงและฉันกำลังมองหาความช่วยเหลือเกี่ยวกับคุณลักษณะเฉพาะ คำบางคำที่ตัวจดจำเสียงพูด (Dragon) รู้จำได้ไม่ดีอย่างต่อเนื่อง - มันไม่สำคัญว่าคุณจะฝึกมันกี่ครั้งก็ตามมันจะดูดที่จำคำบางคำได้ ในเวลาเดียวกันโดยทั่วไปเมื่อคุณเขียนหัวข้อหรือเมื่อเขียนโปรแกรมคุณจะใช้คำเดียวกันหลายครั้งซ้ำแล้วซ้ำอีก
ดังนั้นฉันจึงเขียนโหมดที่ใช้การซ้อนทับเพื่อเปลี่ยนวิธีการแสดงคำในบัฟเฟอร์ มันใช้ตัวอักษรสุ่มในคำขีดเส้นใต้ในสีแบบสุ่มและวางเครื่องหมายกำกับการออกเสียงแบบสุ่ม (สำเนียงเครื่องหมายบนอากาศ ฯลฯ ) เหนือส่วนบนของมัน นี่คือภาพหน้าจอ (คุณอาจต้องซูมเพื่อดูเครื่องหมาย / ขีดเส้นใต้):
จากนั้นคุณสามารถพูดว่า "ผมสีม่วง p" และมันจะมองหาคำที่มีสีม่วงขีดเส้นใต้ภายใต้ 'a' ที่มีเครื่องหมายกำกับออกเสียงที่ดูเหมือนผมและพิมพ์คำนั้นสำหรับคุณ ดังนั้นในภาพหน้าจอด้านบนที่บอกว่าจะทำให้ emacs พิมพ์ "regexp-quote" ให้คุณ
แนวคิดนี้ช่วยให้คุณสามารถอ้างอิงคำใด ๆ ที่คุณใช้ไปแล้วบนหน้าจอโดยใช้ชุดคำที่ จำกัด ซึ่งตัวจดจำจะจดจำได้ดีอยู่เสมอ
มันใช้งานได้ดียกเว้นในบางครั้งอาจมีการชนกัน เพื่อให้ฉันสามารถเรียนรู้ที่จะอ้างอิงคำอย่างเดียวกับที่ฉันใช้ bytes จาก md5 hash ของคำแทนที่จะ(random)
เป็นอัลกอริธึมหรือกำหนดการเปลี่ยนแปลงที่หลีกเลี่ยงการชน ฉันพบเพียง 6 สีที่แยกแยะได้ง่าย (มันยากเมื่อขีดเส้นใต้มีความกว้างเพียงหนึ่งตัวอักษรและหนาพิกเซลเดียว) และ 3 เครื่องหมายที่แยกได้ง่ายสามารถแยกแยะได้ง่าย (ง่ายต่อการแยกออกจากกัน เส้นหรือทับซ้อนกับขีดเส้นใต้) เห็นที่ด้านบนของแหล่งที่มาด้านบน
ฉันต้องการวิธีเพิ่มเติมในการแก้ไขการแสดงผลเพื่อลดความถี่การชน เป็นการดีที่การแก้ไขการเรนเดอร์จะ:
- ไม่ต้องสั่นสะเทือนจากข้อความที่เหลือ สิ่งนี้นำฉันไปสู่การยกเลิกคุณสมบัติของวิดีโอผกผัน
- ไม่สับสนได้ง่ายกับการเปลี่ยนแปลงอื่น ๆ การขีดเส้นทับนั้นเข้าใจผิดได้ง่ายสำหรับขีดเส้นใต้ในบรรทัดก่อนหน้า เครื่องหมายกำกับออกเสียงจำนวนมากมีลักษณะคล้ายกันเว้นแต่ขนาดตัวอักษรของคุณจะใหญ่มาก
- อยู่ใกล้กับที่ซึ่งการเปลี่ยนแปลงอื่น ๆ ตอนนี้เมื่อตาของฉันพบว่าตัวละครกำหนดเป้าหมายข้อมูลทั้งหมดที่มีเครื่องหมายเครื่องหมายขีดเส้นใต้และตัวอักษร
- ทำงานได้ดีกับตัวอักษรความกว้างคงที่ (จำเป็นสำหรับการเข้ารหัส) ที่แสดงเครื่องหมายกำกับอย่างถูกต้อง (ฉันต้องเปลี่ยนไปใช้ DejaVu Sans Mono จาก Consolas เพื่อให้เครื่องหมายแสดงผลอย่างถูกต้อง)
- ทำงานตัวอักษรละติน มีเครื่องหมายรวมเป็นภาษาอาหรับ แต่ไม่รวมกับตัวอักษรละติน
- ไม่เปลี่ยนสีตัวอักษรเนื่องจากมันถูกใช้เพื่อเน้นไวยากรณ์ไปแล้ว
- จริง ๆ แล้วทำได้ใน emacs กับ emacs lisp;)
อาจมีอักขระยูนิโค้ดพิเศษที่ควบคุมการเรนเดอร์ที่อาจถูกละเมิดเพื่อเปิดโอกาสใหม่ ๆ ? หรือวิธีการขีดเส้นใต้หนาขึ้นดังนั้นฉันอาจแยกความแตกต่างของสีได้ง่ายขึ้น? หรือคุณสมบัติ emacs ที่คลุมเครืออื่น ๆ ให้คุณแสดงเครื่องหมายที่ด้านบนของตัวละครนอกเหนือจาก Unicode?
(char-to-string ?\uFEFF)
และอีกตัวเป็นเป้าหมายที่ลดลง ขนาดดังนั้นพวกเขาทั้งสองพอดี อีกแนวคิดหนึ่งคือการใช้การโจมตีแนวดิ่ง (มีให้ในแบบอักษรบางตัว แต่ไม่ทั้งหมด) คล้ายกับสิ่งที่ใช้ในไลบรารีvline.el
emacswiki.org/emacs/VlineMode