Saya sedang menulis ekstensi emacs untuk digunakan dengan pengenalan ucapan, dan saya mencari bantuan dengan fitur tertentu. Beberapa kata yang dikenal secara konsisten oleh pengenal ucapan (Naga) - tidak masalah berapa kali Anda melatihnya, ia hanya akan payah dalam mengenali kata-kata tertentu. Pada saat yang sama biasanya ketika Anda sedang menulis tentang suatu topik atau ketika coding Anda akan menggunakan banyak kata yang sama berulang-ulang.
Jadi saya telah menulis mode yang menggunakan overlay untuk mengubah bagaimana kata-kata disajikan dalam buffer. Dibutuhkan huruf acak dalam kata, menggarisbawahi dalam warna acak, dan menempatkan tanda diakritik acak (aksen, umlaut, dll.) Di atasnya. Berikut screenshot (Anda mungkin perlu memperbesar untuk melihat tanda / garis bawah):
Kemudian Anda dapat mengatakan, "rambut ungu" dan itu akan mencari kata dengan garis bawah ungu di bawah 'a' dengan tanda diakritik yang terlihat seperti rambut dan ketik kata itu untuk Anda. Jadi dalam screenshot di atas mengatakan itu akan menyebabkan emacs mengetik "regexp-quote" untuk Anda.
Idenya adalah ini memungkinkan Anda merujuk ke kata apa pun yang telah Anda gunakan yang ada di layar menggunakan serangkaian kata terbatas yang secara konsisten baik dikenali oleh pengenal.
Ini bekerja cukup baik, kecuali kadang-kadang ada tabrakan. Untuk membuatnya jadi saya bisa belajar untuk secara konsisten merujuk pada kata-kata dengan cara yang sama saya menggunakan byte dari md5 hash dari kata, bukannya (random)
atau memiliki algoritma menetapkan perubahan sehingga tabrakan dihindari. Saya hanya menemukan 6 warna yang mudah dibedakan (sulit ketika garis bawahnya hanya satu karakter lebar dan satu piksel tebal) dan 3 tanda diakritik mudah dibedakan (mudah untuk membedakan satu sama lain dan juga tidak dapat dibedakan dengan garis bawah di atas) garis atau tumpang tindih dengan garis bawah), terlihat di bagian atas sumber di atas.
Saya perlu lebih banyak cara untuk mengubah rendering untuk mengurangi frekuensi tabrakan. Idealnya, render modifikasi akan:
- Tidak akan menggelegar dari sisa teks. Ini membuat saya mengabaikan misalnya properti video terbalik.
- Tidak mudah dikacaukan dengan perubahan lain. Overline mudah dikira sebagai underline pada baris sebelumnya. Banyak tanda diakritik terlihat serupa kecuali ukuran font Anda tidak praktis besar.
- Dekat dengan tempat di mana perubahan lainnya berada. Saat ini begitu mata saya menemukan karakter penargetan semua informasi ada di sana, penanda, garis bawah, dan surat itu.
- Bekerja dengan baik dengan font lebar tetap (diperlukan untuk pengkodean) yang dengan benar membuat tanda diakritik (saya harus beralih ke DejaVu Sans Mono dari Consolas untuk membuat tanda-tanda itu dirender dengan benar)
- Bekerja pada huruf alfabet latin. Ada tanda menggabungkan Arab misalnya, tetapi mereka tidak menggabungkan pada karakter alfabet latin.
- Tidak mengubah warna huruf, karena itu sudah digunakan untuk penyorotan sintaksis.
- Sebenarnya bisa dilakukan di emacs dengan emacs lisp;)
Mungkin ada karakter unicode khusus yang mengendalikan rendering yang bisa disalahgunakan untuk membuka kemungkinan baru? Atau cara untuk mengentalkan garis bawah sehingga aku bisa dengan mudah membedakan lebih banyak warna? Atau fitur emacs tidak jelas lainnya yang memungkinkan Anda membuat tanda di atas karakter selain unicode?
(char-to-string ?\uFEFF)
dan yang lainnya adalah karakter target yang dikurangi dalam ukuran sehingga mereka berdua cocok. Gagasan lain adalah dengan menggunakan pemogokan vertikal (tersedia dalam beberapa font, tetapi tidak semua) mirip dengan apa yang digunakan di perpustakaanvline.el
emacswiki.org/emacs/VlineMode