чому emacs не підтримує ключові події вгору / вниз


9

AFAIK emacs не підтримує keyup/keydownлише події keypressed. Прикладом наслідку є те, що коли ми хочемо позначити регіон, ми повинні спочатку встановити позначку, set-mark-commandа потім можемо позначити регіон, рухаючись навколо точки. Хоча це дійсно цікава функція, оскільки вам не потрібно утримувати натиснуту клавішу зсуву під час маркування тексту, іноді хочеться мати таку поведінку, як і в інших редакторах. Це питання - зрозуміти, чому emacs не підтримує цю функцію і чому це вважається кращим . Чи існує ідеоматичний підхід, як ми могли вирішити це в emacs?


6
Emacs також працює в терміналі, і ключові події вгору / вниз не мають сенсу в цьому середовищі. Цілком ймовірно, що це хоча б історична причина, чому ці події не підтримуються. Це не означає, що їх не можна було підтримати. Я підозрюю, що ніхто не бачив достатньо нагальної потреби з цим турбуватися.
Харальд Ханш-Олсен

1
Гаразд, це вірний аргумент, хоча в emacs є й інші функції, які працюють лише у графічному середовищі (шрифти, події миші тощо)
shaft

3
Я написав якийсь код, який імітує події вгору / вниз, щоб переглянути файл на клавіші, а потім закрити буфер попереднього перегляду на клавіші вгору, як у відповіді сказано, що це хакі, але, можливо, його можна перетворити на щось стабільне. emacs.stackexchange.com/questions/275 / ...
Джордон Biondo

3
Яку "таку поведінку, як і в інших редакторах", ви маєте на увазі [я не використовую ці інші текстові редактори]? Інший текст начебто натякає на "shift + рух на вибір", але це вже підтримується в Emacs.
Стефан

4
Хоча ви праві ці ключові події не існує в Emacs, ви повинні знати , що Emacs робить вибір підтримка перемикання передач (якщо це те, що натхненні ваше запитання).
Малабарба

Відповіді:


2

Як відповіли в коментарях з історичної причини Emacs працює у терміналах, і ці пристрої орієнтовані на символи - ви отримуєте послідовність байтів без будь-якої гарантії, коли це відбувається на клавіатурі.

Дискусія також вказує, що це можливо реалізувати для графічного середовища. Але в цьому ніхто не цікавився.

Зауважте, що деякі програми, такі як ігри чи музичне програмне забезпечення, можуть використовувати детальну інформацію про натискання клавіші, як довго та коли випускається, але редагування тексту не має нічого спільного з цими.

З посібника (info "(elisp)Mouse Events"):

Emacs supports four kinds of mouse events:
click events, drag events, button-down events, and motion events.

Наведення курсору може бути імітовано простою таймером - аналізуючи річ у точці після затримки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.