💾 Archived View for it.omarpolo.com › articoli › acme-mouse.gmi captured on 2022-06-03 at 22:48:16. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-01-08)

-=-=-=-=-=-=-

Acme e il mouse

Uno degli aspetti più particolari e caratteristici di Acme è l'uso del mouse. Come tutto il resto di plan9, Acme ha un'interfaccia mouse-driven al punto da usare "mouse chords" (a differenza delle forse più note "key-chords" usate da altri programmi.)

Il mouse, che deve essere con tre bottoni, è il vero strumento di controllo. Alcune azioni sono intuitive: cliccando sul testo si può spostare il cursore e tenendo premuto è possibile selezionare del testo; ma non finisce lì!

Il tasto destro su Acme è una sorta di "tuttofare" (un DWIM in Emacs-parlance.) Acme usa plumber per decidere cosa fare e le azioni sono personalizzabili. Di default, Acme cerca di aprire il file/directory se esiste, oppure inizia a cercare la parola nel documento, ma non solo: premendo su alcuni costrutti, come un URL, Acme esegue dei programmi esterni per aprirli. C'è anche un costrutto speciale per aprire un file e "saltare" a specifiche posizioni, magari indicate da espressioni regolari: "nomefile:/<espressione-regolare>". Lavorando in C spesso scrivo indirizzi come ":/^nome_funzione" per saltare alla definizione di una funzione nel file corrente.

Un workflow mouse-driven può far venire la pelle d'oca a molti, ma Acme non è scritto con un toolkit moderno, è scritto da gente che aveva cura per i particolari. Quando si cerca del testo usando il tasto destro, Acme sposta automaticamente il mouse in prossimità di ogni "match" in modo da facilitare l'interazione, così come sposta il cursore in prossimità del comand Del del prossimo file ogni volta che si chiude un buffer in una colonna. Allo stesso modo, quando compare un buffer +Errors, Acme sposta automaticamente il mouse nel buffer. Il workflow è mouse-driven, ma l'editor cerca di aiutare nel minimizzare i movimenti. Ancora, un doppio click a fine riga la seleziona tutta, mentre un doppio click su una parentesi, che sia quadra, tonda o graffa, oppure sulle virgolette doppie, seleziona tutto il testo contenuto.

Le mouse-chord sono forse il tratto distintivo, il "copia-incolla" su Acme diventa un'operazione completamente mouse-driven: si tiene premuto il tasto sinistro (button 1) mentre si trascina il mouse per selezionare, al che si preme *contemporaneamente* il tasto centrale (button 2) per tagliare. Per incollare si preme contemporaneamente il tasto sinistro e destro.

Non c'è un vero "copia" usando il mouse; il pattern usuale è "taglia+incolla": premendo il tasto sinistro e centrale per tagliare, poi rilasciando il centrale per premere il destro per incollare.

Il tasto centrale però è l'aspetto più importante secondo me, in quanto è la chiave di Acme: esegue il testo sotto il cursore (oppure quello selezionato) come fosse un comando. Questo, unito al fatto che l'interfaccia di Acme è completamente testuale e modificabile, è uno dei motivi principali per il quale torno ad usare l'editor di tanto in tanto.

Un esempio pratico: se digito `<date' (senza le virgolette) nel "tag" (la riga di colore azzurro pastello sopra ogni buffer e colonna) e clicco col tasto centrale Acme esegue il comando "date" e inserisce il suo output nel buffer subito dopo il cursore. Demo time:

Sat Jan 1 18:26:37 CET 2022

(tocca fidarsi della mia parole, ma la data l'ha inserita Acme! :D)

Gli stessi comandi di Acme, come Put per salvare o Undo per l'annulla, sono disponibili in questo modo, anche se credo sia più comodo usare le (poche) combinazioni di tasti per queste azioni comuni (ctrl-s e ctrl-z rispettivamente, almeno in Acme da plan9ports.)

Per concludere rigardo l'uso del mouse su Acme credo manchi solo una nota sullo scrolling. Su Acme ogni buffer ha una scroll bar che permette, appunto, di "scrollare" il buffer. Il punto interessante però, condiviso anche dalle altre utility di plan9 come 9term o sam, è che lo scrolling è radicalmente diverso da quello delle GUI moderne: cliccando sulla scrollbar col tasto destro o sinistro è possibile scrollare, rispettivamente, in basso o in alto in base alla posizione verticale del mouse. Se si clicca in cima alla scrollbar si potrà scrollare di una riga alla volta, mentre cliccando in fondo si scrolla di un'intera pagina. Tenere premuto "accellera" lo scrolling, in modo da rendere piu veloce saltare in fondo o in cima al documento.

Edit: ho dimenticato di aggiungere un piccolo fatto di trivia. Con Acme da plan9ports è possibile "simulare" il tasto centrale premendo control mentre si clicca col sinistro, e similmente il tasto destro tenendo premuto shift mentre si clicca col sinistro. Usando control e shift è possibile simulare anche le mouse-chord.

$BlogIt: acme-mouse.gmi,v 1.2 2022/01/01 18:08:01 op Exp $