	``NotePad++`` un nuovo editor per NVDA, un'Odissea a lieto fine.

Di Adriano Barbieri.

Vi racconto una bella storia...


Ma serve un breve ripasso per focalizzare il problema:

Dunque, integrato in NVDA c' un editor per la gestione di tre tipi di dizionari:

- Dizionario di default

- Dizionario specifico per la voce

- Dizionario temporaneo

I primi due dizionari risiedono su altrettanti files, mentre l'ultimo risiede in memoria e ovviamente il suo contenuto, ad ogni riavvio della macchina o dello stesso NVDA, viene perduto.

L'editor integrato di NVDA  attualmente concepito per gestire dei files con estensione ".dic" compatibili col modulo dizionario, esso contiene delle linee con delle tabulazioni e sintassi che se sbagliate anche di un singolo carattere che non sia al posto giusto, non vengono caricati in memoria.

NVDA risponde subito col tipico suono d'errore, a volte anche tornando a parlare con la voce di Espeak quando l'errore  grave.

Il modulo dizionario di NVDA  fondamentalmente basato sulle Espressioni Regolari (Regex), anche se le ultime Snapshots dello Screen Reader grazie a due caselle di controllo, consentono di scegliere tra l'usarle o meno, cio ogni vocaboloinserito nel campo di ricerca potr essere processato come Regex, oppure essere semplicemente interpretato nel suo significato letterale.

L'editor integrato permette di intervenire sui vocaboli:

- Aggiungendo

- Modificando

- Rimuovendo

I vocaboli vengono semplicemente accodati all'elenco, e anche salvati nello stesso ordine cronologico.

Questa cosa incide non poco negativamente con le Regex, che facilmente vanno in conflitto fra loro.

Per evitare che ci avvenga, in alcuni casi  neccessario dare la priorit a una Regex, anteponendola ad un'altra per far funzionare tutto a dovere, questo  dovuto al fatto che il modulo dizionario memorizza tutti i vocaboli nello stesso ordine in cui li trova elencati nel file dizionario.

Manca in pratica la possibilit di inserire un vocabolo alla posizione desiderata, basterebbe che l'inserimento avvenisse subito sotto la voce selezionata dall'elenco.

Questo, per, dovrebbe anche essere affiancato da un campo di ricerca che consenta di velocizzare le cose, e sarebbe anche agevolato dalle note di commento che fortunatamente sono gi supportate dall'editor interno.

Trovarsi dentro a una lista di centinaia o migliaia di vocaboli da spulciare, pergiunta disposti in maniera disordinata diventerebbe un incubo da Nightmare.

Il problema  stato gi segnalato alla Comunit Internazionale degli sviluppatori di NVDA.

E' auspicabile una modifica all'editor integrato in NVDA, che speriamo sia realizzata al pi presto, perch, se le cose resteranno cos, tanto varrebbe alleggerire NVDA lasciando solamente il dizionario temporaneo, che per testare un vocabolo al volo  sempre molto utile.

Qui iniziava l'Odissea.

Per esperienza personale, trovandomi a editare un dizionario con le suddette caratteristiche, per risolvere il problema sono dovuto ricorrere all'utilizzo del Blocco Note di Windows, l'unico, a parte Microsoft Word, di manipolare e salvare correttamente i files dizionari di NVDA, consigliato anche dalla stessa comunit quando l'editor interno era ancora ai suoi primi vagiti, ma nessuno evidentemente, oltre il sottoscritto, l'ha mai testato cos a fondo.

Tutto bene in principio col Blocco Note di Windows, usando NVDA per ogni tanto , ma sempre pi frequentemente manmano che il file cresceva, il focus stranamente si perdeva e tutto ad un tratto leggeva quello che non era.

La ricerca di una parola dava l'identico risultato.

Provai con WordPad di Windows, ma non salvava correttamente, alterando in modo quasi impercettibile il file, la prima volta, fiducioso non avevo creato una copia di sicurezza, non vi dico il tempo, che ho perso ricreando pezzo dopo pezzo, in blocchi che copiavo e incollavo, e poi testavo nel tentativo di scovare il bug.

Il problema l'avevo momentaneamente risolto swappando fra Jaws e NVDA, Jaws era in grado di dirmi la verit sul vocabolo puntato dal focus, anche se stranamente leggeva dei caratteri sdoppiati e appiccicati l dove non lo erano.

Ma una volta modificato o aggiunto uno, dovevo salvare, uscire da Jaws, eseguire NVDA e sperare di non aver commesso errori, altrimenti...

Richiudere NVDA, riaprire Jaws, correggere, e cos via.

L'abitudine ha reso tali operazioni molto rapide, e l'esperienza maturata sulle Regex raramente mi fa commettere errori, ma quando li faccio, solo Jaws mi toglie le castagne dal fuoco.

Ma la pacchia era durata poco.

Stavolta era il Blocco Note di Windows che non ce la faceva pi, e oltretutto salvava con effetto WordPad di Windows, cio inserendo anche caratteri fantasma, e rendendo indigesti i file al modulo dizionario.

La necessit aguzza l'ingegno e questa volta avevo almeno 4 copie di backup.

Ultimo Jolly il mitico Microsoft Word, ma non tutti ce l'hanno, considerato il motivoche non  affatto un programma gratuito ed  anche abbastanza pesantuccio, e non facilissimo da destreggiare nella sua miriade di funzioni, percarit, sempre molto utili e apprezzabili.

Allora, si  resa neccessaria la ricerca di un software alternativo, un Editor di testo, con almeno tre requisiti: 
- Inanzitutto freeware oppure opensource.

- In grado di salvare e gestire correttamente e senza perdere il focus i file dizionario di NVDA.

- Essere possibilmente in italiano.

Ecco la bella storia.

Dopo una estenuante ricerca, effettuata in rete, scaricati e testati svariati programmi in modo infruttuoso, programmi quasi sempre inaccessibili a NVDA e parzialmente gestibili da Jaws, spesso in lingua inglese, spesso con ghirigori grafici inaccessibili, spesso non freeware, e soprattutto non adatti a salvare i dizionari di NVDA.

Ma, grazie alla segnalazione di Luigi Russo, un amico della lista NVDA italiana, gestita da Gianluca Casalino e Simone Dalmaso, lo abbiamo finalmente trovato, e risponde pienamente alle nostre esigenze:

1. E' multilingue e comprende anche l'italiano.

2. E' in grado di gestire e salvare comodamente, ricercare rapidamente e senza mai perdere il focus anche in grossi file.

3. E' Opensource.

Dai risultati ottenuti in seguito alle caratteristiche di questo software, direi colpito ed affondato.

Questo software si chiama ``NotePad++`` e vediamo qualche nota:

- La versione testata  la 4.9.2.

- Autore : Don HO.

- Home Page : http://notepad-plus.sourceforge.net/

- L'ultima versione stabile, che consiglio di scaricare la si pu prelevare dal seguente link diretto: http://kent.dl.sourceforge.net/sourceforge/notepad-plus/npp.4.9.2.Installer.exe

- L'ultima versione disponibile al momento in cui scrivo  la 5.0 beta, ma,a me ha dato un problema, seleziona automaticamente interi paragrafi, e appena si v aeditare qualcosa, li cancella. Considerato che  in fase beta, suscettibile di possibili bugs c'era da aspettarselo, e ve la sconsiglio almeno finch rester una "beta".

 
- Chi ha voglia di avventurarsi la pu scaricare da questo link diretto: http://heanet.dl.sourceforge.net/sourceforge/notepad-plus/npp.5.0.beta.Installer.exe

Ringrazio Luigi Russo per avermi indicato questo bel programma.

Il programma eseguibile di setup  di soli 2029 kb e non necessita di particolari attenzioni durante l'installazione che risulta anche completamente accessibile.

Viene richiesta la lingua desiderata disponibile da un elenco ben fornito.

Una volta accettate le consuete condizioni di licenza attivando il classico pulsante radio, si pu scegliere la modalit full, o personalizzata, sar cos possibile determinare i componenti da installare  sufficiente premere i vari pulsanti "avanti" fino al completamento dell'installazione, non sar nemmeno neccessario riavviare il Pc, ma lo consiglio, in modo da poter essere rilevato e messo in elenco dei programmi disponibili...

Riavviata la macchina, consiglio di posizionarvi subito su un file dizionario di NVDA, dal men di contesto che si apre con il tasto applicazioni, date invio sul sottomen: "apri con", quindi invio su: "Programma..." e selezionate ``"NotePad++"`` dall'elenco dei programmi disponibili, poi marcate la casella di controllo: "Usa sempre il programma selezionato per aprire questo tipo di file".

Infine fate invio su "Ok" in modo che ogni volta che vorrete aprire un file dizionario con estensione: ".dic" sar ``NotePad++`` ad aprirlo, fate la stessa cosa anche con tutti i tipi di file che normalmente usate aprire con Blocco note, e adesso vi spiego il perch:

``NotePad++``  veramente comodo, ha la caratteristica di poter gestire pi documenti contemporaneamente, se si tenta di aprire un documento con ``NotePad++`` e questo  gi in esecuzione, il documento verr aperto dallo stesso programma in una nuova scheda.

Per swappare tra le varie schede  sufficiente premere "control+tab", sar per possibile portare in primo piano solo due documenti alternativamente alla volta.

Se si ha aperto e salvato altri files, ``NotePad++`` ne tiene traccia in una sorta di dati recenti, e se si desidera portarle in primo piano, basta sceglierle dal men "Finestre".

Se si chiude un documento ad esempio con: "control+w", ``NotePad++`` non conserver la sua traccia.

Molto comodo perch  possibile tenere una scheda con ad esempio un libro, e un'altra col dizionario.

Personalmente ho creato un collegamento sul desktop abbinato al dizionario col suo bel comando rapido: "Control+alt+d".

Mentre con ``NotePad++`` leggo il libro e mi imbatto in una parola da inserire nel dizionario, premo una volta sola la combinazione "control+alt+d" e il dizionario viene immediatamente caricato da ``NotePad++`` in una seconda scheda.

Il programma  dotato di men ben forniti e ricchi, tutte le voci sono attivabili da comodi comandi rapidi da tastiera.

Una volta aggiunto il vocabolo salvo il file con "Control+s", swappo con "control+tab" e riprendo la mia lettura del libro; e quando incappo in un'altra parola da correggere swappo con "control+tab" e mi trovo il dizionario l, belle e pronto, aggiungo, salvo con "control+s", swappo con "control+tab" e riprendo la mia lettura sul documento e cos via.

 Il comando"control+s",  valido per la scheda corrente che  in primo piano, ma volendo  possibile agire su tutti i documenti aperti.

Quando ho bisogno di testare il buon funzionamento di un vocabolo appena inserito, apro provvisoriamente una scheda nuova con "control+n", quando ho finito, richiudo la scheda con "control+w", e torno a leggere il libro.

A una successiva riapertura di ``NotePad++`` verranno aperti gli ultimi due documenti che erano presenti al momento della chiusura del programma, o durante l'ultima sessione salvata.

 Grazie a segnalibri automatici si potr riprendere la nostra lettura esattamente da dove l'avevamo lasciata, il nostro dizionario sar l dietro in un'altra scheda che aspetta...

Ancora con il focus sull'ultimo vocabolo inserito, stessa cosa per il libro. Ottimo quindi anche per chi ama la lettura.

Dovreste provarlo con una cartella piena di file di testo, ad esempio una volta aperta la cartella da esplora risorse, invio sul file da leggere... alla fine della lettura, chiudiamo il file: "control+w", "alt+tab" e invio sul file successivo,e ``NotePad++``, ancora aperto, si porta in primo piano e ce lo fa leggere... "control+w", chiudiamo il file... alt+tab... e cos via.


Alla fine con alt+f4 si chiude il programma.

Per quanto riguarda la ricerca e sostituzione di una parola c' un men interamente dedicato a tale operazione, molto fornito, ma per la semplice ricerca basta premere "Control+f" e si apre subito la finestra di ricerca.

Il campo di ricerca  intelligente e tiene memoria delle parole digitate fino alla chiusura del programma, in pi inserisce gi nel campo la parola selezionata o/e copiata negli appunti e prelevata dal documento dalla posizione del cursore.

Le parole in memoria si scorrono con le frecce verticali.

Supporta le Regex, questo  naturale, considerato che il programma  principalmente un editor di sorgente, in ambiente MS Windows, che supporta diversi linguaggi di programmazione.

La cosa viene molto utile ad esempio per eliminare dal dizionario tutte le tabulazioni che si trovano alla fine di ogni linea, presenti nei files dizionario delle Snapshots pi recenti, quelle che contengono i flag false =0, e true = 1, che con microsoft Word si specificano con: ``"^t1^t1^p"`` e si vanno a sostituire con: ``"^p"...``

Ne parlai gi tempo f in un altro articolo, chiss se ve lo ricordate.


Microsoft Word sembrava l'unico a supportare alcuni caratteri speciali del tipo:

``"^t" = tabulazione``

``"^p" = ritorno a capo, eccetera``.

Col Blocco Note e WordPad neanche a parlarne...

Ma con ``NotePad++`` si entra nel men: Cerca/sostituisci... anche col comando rapido: "control+h", e l, fra le varie opzioni attivabili comodamente da caselle di controllo, c' anche un pulsante radio: "Search mode" che permette di scegliere la modalit di ricerca fta:

- Normal

- Extended (esteso a +sintassi di espressioni regolari).

- Espressione Regolare.



Scegliamo "Espressione regolare", e nel campo di ricerca digitiamo: ``"[\t0\t1]+[\t0\t1]"``, attenti alle barre diagonali rovesciate, e ovviamente senza le virgolette, e lasciamo vuoto il campo sostituisci.

Facendo invio sul pulsante "gruppo, sostituisci tutti", o tramite la scorciatoia da tastiera: Alt+t, tutte le tabulazioni con i flags verranno rimosse dal nostro file dizionario, in un sol colpo.

Dopo avere salvato con il solito: "control+s", avremo ottenuto un dizionario perfettamente compatibile con le vecchie versioni di Nvda, e senza dipendere da Microsoft Word.

Se si hanno due dizionari aperti e si desiderasse fare la modifica a entrambi, baster fare invio su "Sostituisci su tutti i documenti aperti", verranno eliminate le tabulazioni superflue a tutti, (fate molta attenzione! notare che non  stato abbinato ad alcun tasto rapido, anche se  possibilissimo aggiungerlo, editando il file: "Configurazione/tasti rapidi..." dallo stesso programma, purtroppo solo Jaws con modalit cursore Jaws a Pc riesce a vederne il contenuto e forse a editarlo.

Il problema della scarsa accessibilit del men di configurazione sembraessere l'unica nota stonata di questo ottimo programma.

Se non si avesse per intenzione di apportare modifiche, si pu usare lo stesso metodo per contare le occorrenze, nel nostro caso potrebbe essere il numero:

- Totale dei vocaboli ``"[\t0\t1]+[\t0\t1]"``.

- Di Espressioni Regolari che distinguono fra maiuscole/minuscole ``"[\t1][\t1]"``.

- Di Espressioni Regolari che non distinguono fra maiuscole/minuscole ``"[\t0][\t1]"``.

- Di non Espressioni Regolari che distinguono tra maiuscole/minuscole ``"[\t1\t0]"``.

- Di non Espressioni Regolari che non distinguono tra maiuscole/minuscole ``"[\t0\t0]"``.

Aprite la finestra di ricerca accedendo dal men: "Cerca/Trova...", oppure premendo: "control+f".


Se inserite una delle stringhe che ho appena elencato nel campo di ricerca, dal pulsante radio impostate il Search Mode su: "Espressione Regolare", e infine fate invio sul pulsante: "Conta occorrenze"... b! comodo! no?

Ecco, a quel pulsante io metter una scorciatoia da tastiera, perch manca.

Un'altra serie di funzioni utilissime nella editazione del dizionario  la possibilit di duplicare e spostare le linee intere,allo scopo ci sono alcune voci del men "Modifica", tra cui:

- Duplica la linea corrente control+d.

- Sposta su la linea corrente Control+Shift+freccia su.

- Sposta gi la linea corrente Control+Shift+freccia gi.

Ho volutamente descritto solo ci che riguarda la gestione dei files dizionario di NVDA con ``NotePad++``, ma questo programma ha ancora moltissime potenzialit.

Oltre a supportare molti formati di file sorgenti di linguaggi di programmazione, pu effettuare conversioni di formato e di codifica, ha la possibilit di visualizzare e operare anche come un Hex Editor , una moltitudine di funzioni e plugin, e sono tantissime, da esplorare e provare.

Ecco alcune feature tratte direttamente dalla home page ufficiale:

- Evidenziazione della Sintassi e Folding.

- WYSIWYG.

- Evidenziazione della Sintassi definita dall'Utente.

- Auto-completion.

- Multi-Documento.

- Multi-Vista.

- Supporto per Ricerca mediante Espressioni Regolari.

- Supporto completo al Drag 'N' Drop.

- Posizionamento Dinamico delle Viste.

- Auto-rivelazione dello Stato del File.

- Zoom in e zoom out.

- Supporto ambiente Multi-Lingua.

- Bookmark (Segnalibri).

- Evidenziazione delle Parentesi e LineaGuida all'Indentazione.

- Configuratore di Stili.

Grazie al supporto delle Espressioni Regolari, integrato nei moduli di ricerca e sostituzione, con ``NotePad++`` possiamo operare sui nostri libri in formato testo, e tentare di migliorarne la lettura.

Ecco una piccola lista di operazioni utili, che se usata bene,pu servire a migliorare la lettura dei nostri libri in formato testo.

1. Innanzi tutto occorre essere nella scheda del libro da modificare.

2. Fare invio sulla voce di men: "Cerca/Sostituisci...", o premere la combinazione rapida "control+h".

3. inserire nei rispettivi campi di editazione le stringhe, e impostare il Search Mode riferiti a uno dei seguenti casi:

- ``#`` Eliminare tutti gli spazi vuoti a inizio righe.

- Stringa di ricerca: ``"^[\s]"``.


- Stringa di sostituzione: Lasciare vuoto.

- Search Mode = Espressione Regolare.

Descrizione:

L'accento circonflesso (apice davanti al carattere speciale ``"\s"`` (barra diagonale rovesciata s), indica che gli spazi devono trovarsi all'inizio della riga. Tutti gli spazi a inizio riga saranno eliminati.

Nota:

Nella classe  possibile inserire anche il carattere speciale di tabulazione ``"\t"`` (barra diagonale rovesciata t), esempio: ``"^[\s\t]"``, per eliminare anche possibili tabulazioni a inizio linea.

``#`` Eliminare tutti gli spazi superflui fra le righe.

Stringa di ricerca: ``"\s\s"``.

Stringa di sostituzione: ``" "`` (uno spazio).

Search Mode = Espressione regolare.


Descrizione:

Vengono ricercati tutti gli spazi doppi in ogni riga, ma ne rimarr soltanto uno obbligato dal campo in sostituzione, evitando di appiccicare le parole fra loro.

Se saranno presenti degli spazi ai margini delle righe, ne rimarr sempre uno.

``#`` Eliminare tutti gli spazi vuoti a fine riga.

Stringa di ricerca: ``"[\s]$"``.

Stringa di sostituzione: Lasciare vuoto.


Search Mode = Espressione Regolare.

Descrizione:

Il carattere dollaro a destra del ``"\s"`` barra diagonale rovesciata s) indica che gli spazi devono trovarsi alla fine della riga. Tutti gli spazi a fine riga saranno eliminati.

Nota:

Ripetere il ciclo finch il numero totale di sostituzioni non sar uguale a zero.

Nota2:

Nella classe  possibile inserire anche il carattere speciale di tabulazione ``"\t"`` (barra diagonale rovesciata t), esempio: ``"[\s\t]$"``, per eliminare anche possibili tabulazioni a fine riga.

``#`` Eliminare la sillabazione.

Stringa di ricerca: ``"-\r\n"``.

Stringa di sostituzione: Lasciare vuoto.

Search Mode = Extended.

Descrizione:

Viene cercato il trattino a fine riga, seguito da un ritorno a capo, rappresentato dal carattere speciale ``"\r"`` (barra diagonale rovesciata r), seguito a sua volta da una nuova linea, rappresentata dal carattere speciale ``"\n"`` (barra diagonale rovesciata n).


Questi 3 caratteri vengono eliminati con il risultato di trascinare alla riga superiore la riga sottostante e affiancarla a quella precedente.

``#`` Eliminare tutti i ritorni a capo.

Stringa di ricerca: ``"\r\n"``.

Stringa di sostituzione: " " (uno spazio).

Search Mode = Extended.

Descrizione:

Vengono cercati i caratteri di ritorno a capo seguiti da una new line, una volta trovati, vengono sostituiti da uno spazio, per evitare di attaccare le parole, con il risultato che le linee saranno spezzate solamente dall'opzione: "a capo automatico" attivabile dal men: "Visualizza".

``#`` Inserire linee vuote dopo la punteggiatura.

Stringa di ricerca: ``"([.])$"``.

Stringa di sostituzione: ``"\1\n"``.

Search Mode = Espressione Regolare.

Descrizione:

Vengono ricercate le punteggiature presenti nella classe e che sono a fine linea.

Il gruppo nel campo di ricerca contiene una classe (le parentesi quadre), oltre al punto si pu creare una lista di punteggiature, ad esempio: ``"([.!:;?,])$"``.

Nota:

Se il documento termina con una delle punteggiature presenti nella lista, alla fine del file vi troverete con delle linee vuote in coda, per evitarlo, prima di iniziare sar sufficiente rimuovere temporaneamente la punteggiatura alla fine dell'ultima linea del documento.

Nota2:

Per inserire pi di una riga vuota sar neccessario indicarlo nel campo di sostituzione, aggiungendo tante ``"\n"`` (barra diagonale rovesciata n) per ogni linea vuota che si volesse inserire. Ad esempio, per 3 linee: ``"(\1)\n\n\n"``.


Oppure, ripetere il ciclo di sostituzione premendo, quando ci si ritrova nella finestrina di "sostituisci " " Alt+t" tante volte per il numero di linee vuote che volete aggiungere, si potr andare avanti a oltranza.

``#`` Eliminare tutte le linee vuote.

Stringa di ricerca: ``"\r\n\r\n"``.

Stringa di sostituzione: ``"\r\n"``.

Search Mode = Extended.

Descrizione:

Vengono cercate le linee vuote identificati da due ritorni a capo con rispettivi new line. Se trovati ne verr eliminata una coppia, corrispondente alla linea vuota, lasciandone solo una, quella giusta, con il risultato che tutte le linee finiranno con l'accodarsi tutte una sotto all'altra.

Nota:

Ripetere il ciclo finch il numero totale di sostituzioni non sar uguale a zero.

4. Una volta impostati i parametri, fare invio sul pulsante "gruppo Sostituisci tutti", o per fare prima, usando la combinazione: "Alt pi t".

Nota:

Prima di salvare  prudente fare una copia del documento.

Ricordate che in caso di ripensamenti dopo una modifica, esiste sempre la voce: "modifica/annulla", ma non  cumulativa, quindi funziona solo per l'ultima azione eseguita.

Se non avete ancora salvato il documento, e con "Annulla" non riuscite pi a ripristinare il documento,  sempre possibile "Ricaricarlo dal disco", tramite la voce di men omonima ppresente nel men "File".

Conclusione.

Insomma non un semplice lettore/editor di testo, ma anche un Editor per i programmatori pi esigenti,paragonabile solo ad altri software a pagamento, con in pi dotato di una quasi totale accessibilit.

 Anche la finestra"Opzioni..." raggiungibile dal men: "Configurazione", strutturata a schede, fa parte della nota stonata descritta prima, NVDA non riesce a leggere le opzioni all'interno delle varie schedine, che invece si scorrono comodamente con le frecce orizzontali, e di pi non fa, ma nonostante tutto sembra pi accurato nella lettura/editazione dei documenti, e anche la gestione dei vari menu.

Jaws 6.10, con le "opzioni" se la cava un po' meglio, ma portando il cursore Jaws al cursore pc e lavorando con la simulazione del clik del mouse, ma sembra non leggere correttamente i files dizionari di Nvda, a volte si trovano caratteri appiccicati, l dove non lo sono veramente, o sdoppiati, ingenerando spesso confusione nel debug.

L'importtante  che per il momento lavorare sui dizionari, al volo, e conNVDA, non  neccessario modificare alcuna opzione dal men di configurazione.


Direi che per il momento, fino a quando non sar migliorato l'editor interno di Nvda, ````NotePad++```` sar pi di un'ottima alternativa opensource, assolutamente da installare.

`Adriano Barbieri. <barbadriano@libero.it>`_
