perché emacs non supporta gli eventi chiave su / giù


9

AFAIK emacs non supporta keyup/keydownsolo eventi keypressed. Un esempio di conseguenza è che quando vogliamo contrassegnare una regione dobbiamo prima impostare un segno set-mark-commande quindi possiamo contrassegnare la regione spostandoci attorno al punto. Mentre questa è davvero una caratteristica interessante in quanto non è necessario tenere premuto il tasto Maiusc mentre si contrassegna il testo, a volte sarebbe desiderabile avere lo stesso comportamento come in altri editor. Questa domanda è capire perché emacs non supporta questa funzione e perché questa è considerata migliore . C'è anche un approccio ideomatico come potremmo risolverlo in emacs?


6
Emacs funziona anche in un terminale e gli eventi chiave su / giù non hanno senso in quell'ambiente. Molto probabilmente, questo è almeno un motivo storico per cui questi eventi non sono supportati. Ciò non significa che non potrebbero essere supportati però. Sospetto che nessuno abbia visto un'esigenza sufficientemente pressante di preoccuparsene.
Harald Hanche-Olsen,

1
Va bene, questo è un argomento valido, anche se ci sono altre funzionalità in emacs che funzionano solo in un ambiente grafico (caratteri, eventi del mouse, ecc.)
albero

3
Ho scritto del codice che simula eventi chiave su / giù per visualizzare l'anteprima di un file su chiave giù, quindi chiudere il buffer di anteprima su chiave su, come la risposta dice che è confuso, ma forse potrebbe essere modellato in qualcosa di stabile. emacs.stackexchange.com/questions/275/…
Jordon Biondo

3
A quale "comportamento simile in altri editor" ti riferisci a [non uso quegli altri editor di testo]? Il resto del testo sembra suggerire "shift + movimento per selezionare", ma questo è già supportato in Emacs.
Stefan,

4
Anche se hai ragione questi eventi chiave non esistono in Emacs, si dovrebbe sapere che Emacs fa selezione del cambio di sostegno (se è quello che ha ispirato la tua domanda).
Malabarba,

Risposte:


2

Come spiegato nei commenti per motivi storici, Emacs funziona nei terminali e quei dispositivi sono orientati ai caratteri - ottieni una sequenza di byte senza alcuna garanzia quando ciò accade sulla tastiera.

La discussione sottolinea anche che è possibile implementarlo per l'ambiente grafico. Ma nessuno è interessato a questo.

Si noti che alcuni programmi come giochi o software musicali potrebbero utilizzare informazioni dettagliate su quando viene premuto il tasto, per quanto tempo e quando vengono rilasciati, ma l'editing del testo non ha nulla in comune con questi.

Dal manuale (info "(elisp)Mouse Events"):

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

L'evento al passaggio del mouse può essere emulato dal timer di inattività, analizzando le cose al momento successivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.