เสร็จสิ้นไม่ชัดเจนเมื่อใส่อักขระ Unicode


12

ฉันเพิ่งค้นพบC-x 8 RETวิธีแทรกอักขระ Unicode ด้วยชื่อ Unicode หรือรหัสฐานสิบหก ฉันยังไม่ได้จำชื่ออักขระ Unicode ทั้งหมดดังนั้นฉันจึงไม่พบอักขระที่ถูกต้องเสมอไป

ตัวอย่างเช่นมีตัวละคร "SNOW CAPPED MOUNTAIN" ถ้าฉันพิมพ์เพียง "MOUNTAIN" ตัวละครนี้จะไม่ปรากฏในรายการความสมบูรณ์ ฉันต้องจำไว้ว่าต้องค้นหาคำว่า "SNOW" เพื่อดูตัวละครนี้โดยเฉพาะในรายการความสำเร็จ

ในฐานะที่เป็นคนที่พึ่งพา IDO สำหรับสิ่งใดก็ตามที่เกี่ยวข้องกับการทำให้สมบูรณ์ ido-ubiquitous-modeฉันใช้

ฉันจะใช้การจับคู่เหมือน IDO สำหรับอินพุต Unicode ได้อย่างไร ฉันจะใช้ความสมบูรณ์แบบยืดหยุ่นสำหรับทุกสิ่งได้อย่างไร

(ฉันจะโอเคกับการละทิ้งโหมด IDO หากมีสิ่งที่ดีกว่า)


C-q SPC mountain TABในฐานะที่เป็นวิธีแก้ปัญหาสำหรับปัญหาเดียวกันที่ผมจะพิมพ์ ที่จะจับคู่ชื่อตัวละครกับ "ภูเขา" เป็นคำที่ไม่ใช่คำแรก
legoscia

1
ดูemacs.stackexchange.com/a/3139/2094สำหรับการใช้หางเสือ
abo-abo

1
อืมเสียงเช่นนี้ข้อผิดพลาดคุณสามารถรายงานในโครงการติดตามปัญหา
wasamasa

1
หากคุณพิมพ์*cap*mou TABคุณจะได้รับความสำเร็จทั้งหมด
Juancho

@ Juancho มันเป็นเรื่องจริง แต่มันไม่ใช่พฤติกรรมที่ฉันต้องการ
rekado

คำตอบ:


8

ตามที่ @wasamasa แนะนำido-ubiquitousควรดูแลให้เสร็จเมื่อinsert-charใช้งาน มีความเป็นรายงานข้อผิดพลาดที่ถูกปิดในปี 2013แต่ผมยังคงเห็นพฤติกรรมนี้กับ Emacs 24.4 และido-ubiquitousรุ่น 20,140,904.1547 ดังนั้นฉันยื่นอีกรายงานข้อผิดพลาด

แก้ไข:

ผู้ดูแลido-ubiquitousเขียนสิ่งนี้:

ตกลงฉันหาปัญหาแล้ว มีอักขระยูนิโค้ดอยู่จำนวนมากดังนั้นรายการความสำเร็จจึงเกินido-ubiquitous-max-itemsและido-ubiquitousปิดใช้งานตัวเองด้วยเหตุผลดังกล่าว ในระบบของฉันมีความสมบูรณ์เกือบ 40k และค่าเริ่มต้นสำหรับido-ubiquitous-max-items30k การตั้งค่าเป็น 50k เปิดใช้งานidoแล้วinsert-charสำหรับฉัน ดังนั้นลองปรับแต่งที่

แน่นอน(setq ido-ubiquitous-max-items 50000)แก้ไขมัน


สำหรับido-completing-read+ใช้(setq ido-cr+-max-items 50000)เพื่อแก้ไขข้อผิดพลาดนี้
Bach Lien

5

หากต้องการsnow capped mountainรวมเมื่อคุณพิมพ์mountคุณอาจต้อง:

(push '(unicode-name (styles substring)) completion-category-overrides)

ที่จริงแล้วsubstringสไตล์นี้ควรเปิดใช้งานตามค่าเริ่มต้นสำหรับชื่อ Unicode เช่นเดียวกับชื่อบัฟเฟอร์ M-x report-emacs-bugบางทีคุณอาจจะล็อบบี้ให้มันผ่าน


3

ถ้าคุณใช้Iciclesแล้วC-x 8 RETช่วยให้คุณใช้substring หรือ regexpหรือเลือนการจับคู่ในระหว่างการดำเนิน และคุณสามารถใช้ความสมบูรณ์แบบก้าวหน้าเพื่อจับคู่กับรูปแบบที่หลากหลาย (เช่นง่าย)

นอกจากนี้หากตัวเลือกicicle-read-char-by-name-multi-completion-flagไม่ใช่ - nilซึ่งเป็นค่าเริ่มต้นคุณสามารถใช้การเติมหลายค่าเพื่อจับคู่กับชุดค่าผสมเหล่านี้:

  • ชื่อ Unicode
  • จุดโค้ด Unicode เป็นตัวเลขฐานสิบหก
  • ตัวละครตัวเอง (ตามที่ปรากฏในข้อความไม่ได้เป็นจำนวนเต็ม)

ตัวเลือกที่เสร็จสมบูรณ์ที่คุณเห็นในบัฟเฟอร์*Completions*ประกอบด้วยองค์ประกอบเหล่านี้ทั้งหมด - WYSIWYG

ทำไมคุณถึงต้องการเทียบกับตัวละครเอง? หากต้องการดูจุดโค้ด Unicode ที่เกี่ยวข้องและชื่อตัวละครรวมถึงชื่อเก่าใด ๆ ตัวอย่างเช่นสำหรับตัวละคร` (สำเนียงหลุมศพ) คุณจะได้ผู้สมัครที่สำเร็จสองคนนี้:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `

ฉันคิดว่าฉันควรลอง Icicles จริงๆวันหนึ่ง ขอบคุณสำหรับคำตอบ.
rekado

0

คุณสามารถใช้คำสั่งapropos-charในไลบรารีapu.elเพื่อแสดงตัวอักษร Unicode ทั้งหมดที่มีชื่อตรงกับ regexp หรือรายการคำที่คุณพิมพ์ โดยค่าเริ่มต้นคำจะถูกจับคู่เป็นสารตั้งต้น

ในรายการการแข่งขันคุณสามารถกด^เพื่อแทรกอักขระที่แสดงบนบรรทัดปัจจุบันลงในบัฟเฟอร์ที่คุณเรียกใช้apropos-charณ จุดนั้น หรือคุณสามารถกดC-yเพื่อคัดลอกอักขระนั้นไปยังวงแหวนฆ่า (หรือM-yคัดลอกไปยังตัวเลือกรอง ) (กดRETเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับถ่าน)

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