# Notepad++

Notepad++ è un popolare editor di testo e codice sorgente gratuito e open source per il sistema operativo Windows, uscito nel 2003. È stato creato come un miglioramento del Blocco note standard di Windows, offrendo molte funzionalità avanzate utili agli sviluppatori, programmatori e utenti in generale.

## Storia

Il programma è stato creato da Don Ho e la prima versione venne pubblicata il 24 novembre 2003. Su SourceForge, dove per lungo tempo è stata ospitata la pagina web ufficiale di Notepad++, a giugno 2010 è risultato essere stato scaricato più di 25 milioni di volte.
Dall'inizio del 2010, in base alle leggi statunitensi, SourceForge ha bloccato l'accesso al server da parte di Cuba, Iran, Corea Del Nord, Sudan e Siria. Attualmente è ospitato da un provider francese dove non esistono restrizioni sulla distribuzione di questo tipo.
Dalla versione 7, uscita il 22 settembre 2016, il programma è disponibile anche nella versione a 64 bit.

## Caratteristiche

Notepad++ è un software che segue la filosofia FOSS, supporta l'autocompletamento, la ricerca/sostituzione tramite espressioni regolari, la scrittura a schermo diviso, il code folding, i segnalibri, l'evidenziazione delle parentesi e dell'indentazione. Supporta anche l'aggiunta di macro e plugin. Di base è già incluso un plugin chiamato TextFX, scritto da un utente, che fornisce molte opzioni di trasformazione del testo.
Ha un'interfaccia personalizzabile ed è possibile aprire più documenti all'interno della stessa finestra di programma tramite l'uso delle linguette. Presenta stili, font e colori a tema propri di editor di testo più evoluti. Il tradizionale Notepad non permette di scegliere il colore del font e dello sfondo. Sono presenti alcuni temi che recuperano la tradizionale modalità sfondo nero/caratteri bianchi o grigi.
Inoltre gli utenti possono definire l'evidenziazione della sintassi e l'autocompletamento per qualunque altro linguaggio, tramite un sistema di definizione basato su XML che rende Notepad++ estensibile.
Ecco alcune delle caratteristiche principali di Notepad++:
* Sintassi evidenziata: Notepad++ è in grado di riconoscere la sintassi di numerosi linguaggi di programmazione e di evidenziare automaticamente la sintassi del codice, rendendo più facile la lettura e la scrittura del codice.
* Auto-completamento: Fornisce suggerimenti e completamento automatico del codice, che accelera il processo di scrittura del codice.
* Gestione di schede multiple: È possibile aprire e gestire più documenti in schede, semplificando la navigazione tra i file aperti.
* Ricerca e sostituzione avanzate: Offre funzionalità di ricerca e sostituzione di testo avanzate, con supporto per espressioni regolari.
* Plug-in e estensioni: Notepad++ supporta una vasta gamma di plug-in e estensioni, consentendo agli utenti di personalizzare ulteriormente il software e aggiungere funzionalità extra.
* Supporto per molteplici linguaggi: È in grado di gestire una varietà di linguaggi di programmazione, tra cui C, C++, Java, HTML, CSS, Python, e molti altri.
* Interfaccia utente personalizzabile: Gli utenti possono personalizzare l'aspetto e il comportamento di Notepad++ tramite opzioni di configurazione e temi.

## Linguaggi supportati

I linguaggi di programmazione e di marcatura supportati (versione 8.4) sono:
* ActionScript
* Ada
* ASN.1
* ASP
* Assembly
* AutoIt
* AviSynth
* BaanC
* Batch
* Blitzbasic
* C
* C++
* C#
* Caml
* CMake
* COBOL
* CoffeeScript
* CSound
* CSS
* D
* Diff
* Erlang
* ESCRIPT
* Forth
* Fortran
* Freebasic
* Gui4Cli
* Haskell
* HTML
* INI
* Inno Setup
* Intel HEX
* Java
* JavaScript
* JSON
* JSP
* KIXtart
* LaTeX
* Lisp
* Lua
* Makefile
* Matlab
* MMIXAL
* MS-DOS
* Nim
* Nncrontab
* NSIS
* Objective-C
* OScript
* Pascal
* Perl
* PHP
* PostScript
* PowerShell
* Properties
* Purebasic
* Python
* R
* REBOL
* Registry
* Resource file
* Ruby
* Rust
* S-Record
* Scheme
* Shell
* Smalltalk
* Spice
* SQL
* Swift
* TCL
* Tektronix extended HEX
* TeX
* Txt2tags
* TypeScript
* Verilog
* VHDL
* Visual Basic
* Visual Prolog
* XML
* YAML

## Aspetti tecnici

Il progetto è basato sul componente open source Scintilla ed è scritto in C++, facendo uso esclusivamente delle API Win32, quindi senza impiegare Microsoft Foundation Classes (MFC) o librerie simili, il che assicura una minore dimensione del programma e quindi un caricamento più veloce. È distribuito secondo la licenza GPL.
Sebbene Scintilla non supporti internamente la ricerca di testo con espressioni regolari su più righe, Notepad++ permette l'uso di plugin che aiutano a mitigare questo problema.