Я пишу розширення Emacs для використання з розпізнаванням мови, і шукаю допомоги з певною функцією. Деякі слова, які розпізнавач мови (Дракон) розпізнає незмінно погано - не важливо, скільки разів ви тренуєтесь, воно просто засмоктує розпізнавання певних слів. У той же час, зазвичай, коли ви пишете тему або коли кодуєте, ви будете використовувати багато і тих же слів знову і знову.
Тому я написав режим, який використовує накладки для зміни способу відображення слів у буфері. Він бере у слові випадкову букву, підкреслює її у випадковому кольорі та над нею ставить випадкову діакритичну позначку (наголос, умлаут тощо). Ось знімок екрана (вам, ймовірно, потрібно буде збільшити масштаб, щоб побачити позначки / підкреслення):
Тоді ви можете сказати, "фіолетове волосся", і воно буде шукати слово з фіолетовим підкресленням під його "а" з діакритичною позначкою, що схожа на волосся, і введіть це слово для вас. Отже, на наведеному вище знімку скріншот, що призведе до того, що emacs набере для вас "regexp-quote".
Ідея полягає в тому, що ви можете посилатися на будь-яке слово, яке ви вже вживали, на екрані, використовуючи обмежений набір слів, який розпізнавач незмінно добре розпізнає.
Це працює досить добре, за винятком випадків, коли виникає зіткнення. Щоб зробити це таким чином, я можу навчитися послідовно посилатися на слова так само, як я використовую байти з хеду md5 слова замість того (random)
, щоб алгоритм призначив зміни, щоб уникнути зіткнень. Я знайшов лише 6 кольорів, що легко розрізнюються (важко, коли підкреслення лише одного символу шириною та товщиною одного пікселя) та 3 легко розрізнених діакритичних позначки (легко розрізнити один від одного, а також не можна переплутати з підкресленням вище лінії або перекриття підкресленням), видно вгорі джерела вгорі.
Мені потрібно більше способів зміни візуалізації, щоб зменшити частоту зіткнення. В ідеалі модифікація візуалізації:
- Не журіться з решти тексту. Це призвело до відмови, наприклад, властивості зворотного відео.
- Не можна легко переплутати з іншими змінами. Окреслення легко помиляються з підкресленнями в попередньому рядку. Багато діакритичних позначок виглядають подібними, якщо розмір вашого шрифту не є практично незрозумілим.
- Будьте просторово поруч, де є інші зміни. Прямо зараз, коли моє око знаходить орієнтаційного персонажа, вся інформація там, маркер, підкреслення та літера.
- Гарно працюйте з шрифтом фіксованої ширини (необхідним для кодування), який правильно надає діакритичні позначки (мені довелося перейти на DejaVu Sans Mono з Consolas, щоб позначки правильно відображалися)
- Робота над літерами латинського алфавіту. Наприклад, є поєднання арабських знаків, але вони не поєднуються з символами латинського алфавіту.
- Не змінюйте колір букви, оскільки це вже використовується для виділення синтаксису.
- Насправді можна зробити в emacs з emacs lisp;)
Можливо, є спеціальні символи Unicode, що контролюють візуалізацію, якими можна було б зловживати, щоб відкрити нові можливості? Або спосіб згустити підкреслення, щоб я міг легко відрізнити більше кольорів? Або якась інша незрозуміла функція emacs, яка дозволяє вам додавати позначки поверх символів, крім унікоду?
(char-to-string ?\uFEFF)
а другий - цільовий символ, який зменшується в розмір, щоб вони обидва підходили. Іншою ідеєю було б використовувати вертикальний прорив (доступний у деяких шрифтах, але не у всіх), аналогічний тому, що використовується у бібліотеціvline.el
emacswiki.org/emacs/VlineMode