Obszar edycji#
Centralną część w głównym oknie programu stanowi Obszar edycji #. Jest to miejsce, w którym wyświetlana zostaje zawartość aktualnie wybranego pliku. Użytkując NPP zazwyczaj najwięcej czasu spędzamy właśnie w obrębie Obszaru edycji (np. tworząc lub modyfikując kod). Prawdę mówiąc to cały kontent Obszaru edycji zarządzany jest przez komponent Scintilla, a wszystko co go otacza to właśnie nadbudówka wykonana przez autora NPP.
Inną często używaną nazwą dla Obszaru edycji może być widok/podgląd dokumentu (document view).

Rysunek. Notepad++ - główne okno programu w trybie standardowego wyświetlania z zaznaczonym Obszarem edycji
Notepad++ udostępnia specjalny tryb podwójnego widoku, w którym główne okno programu zawiera dwa niezależne Obszary edycji obok siebie (w układzie pionowym lub poziomym), i każdy z nich posiada swój własny Pasek kart.
Menu kontekstowe Obszaru edycji#
Menu kontekstowe w Obszarze edycji pojawia się po kliknięciu prawym przyciskiem myszy w dowolnym miejscu Obszaru edycji. Struktura tego menu znajduje się w pliku NPP\contextMenu.xml. Dla osób nieprzepadających za skrótami klawiszowymi jest to idealne miejsce do umieszczenia najczęściej stosowanych poleceń.
Istnieje możliwość wydobycia lub utworzenia przycisku dla większości poleceń NPP i umieszczenia go na Pasku narzędzi.

Rysunek. Notepad++ - domyślne menu kontekstowe Obszaru edycji
W zależności od aktualnego stanu dokumentu w Obszarze edycji niektóre pozycje w menu kontekstowym będą niedostępne (wyszarzone).
Modyfikacja menu kontekstowego Obszaru edycji#
Edycję pliku NPP\contextMenu.xml można przeprowadzić bezpośrednio w uruchomionym programie. Akurat w przypadku menu kontekstowego nie następuje automatyczny zapisy odpowiadającego mu pliku konfiguracyjnego przy zamykaniu programu. W celu otwarcia pliku można skorzystać z wbudowanego polecenia w samym programie, wystarczy wybrać u góry na Pasku menu kolejno Ustawienia >> Edycja menu kontekstowe. Po wprowadzeniu i zapisaniu zmian należy uruchomić NPP ponownie.
Na stronie "Context Menu" oraz w samym pliku NPP\contextMenu.xml znajduje się dokładna instrukcja jego modyfikacji. Wszystkie opcje widoczne w Paska menu (u góry) można dodać do menu kontekstowego (włącznie z opcjami wtyczek) za pomocą składni XML. Dodajemy lub modyfikujemy znacznik <item /> nadając mu odpowiednie atrybuty z wartościami:
- W przypadku opcji wbudowanych trzeba podać nazwę menu widoczną na Pasku menu (np.
MenuEntryName="File") oraz nazwę konkretnego polecenia z tego menu, niezależnie od jego poziomu zagnieżdżenia (np.MenuItemName="Save"). - W przypadku rozszerzeń podajemy jego nazwę widoczną w menu Wtyczki na Pasku menu (np.
PluginEntryName="NppFTP") oraz nazwę konkretnego polecenia tego dodatku, które znajduje się w głównym menu wtyczki (np.PluginCommandItemName="Show NppFTP Window"). Zagnieżdżone polecenia rozmieszczone na dalszych poziomach głównego menu wtyczki nie są obsługiwane (bug 3429).
dodatki mogą dodawać elementy poza menu Wtyczki (np. TextFX lub Emmet w wersji JS). Dla takich wtyczek nie będzie możliwe podpięcie ich poleceń do menu kontekstowego. Od NPP w wersji 6.6.6 menu kontekstowe jest ładowane przed takimi pluginami, dlatego też nie ma do nich dostępu. W niektórych przypadkach ograniczenie to można obejść tworząc skrypt (np. za pomocą wtyczek NppExec lub PythonScript), który potem dodajemy do menu kontekstowego (efekt działania będzie identyczny z ręcznym wywołaniem), ale nie ma gwarancji, że takie obejście zawsze zadziała.
Warto podkreślić, że przy podawaniu wszelkich nazw poleceń wymagana jest ich oryginalna forma angielska #. W tym celu najlepiej chwilowo zmienić język aplikacji Ustawienia >> Ustawienia... >> Język >> English. Zamiast nazwy wbudowanego polecenia można podać jego numer ID, ale trzeba go wydobyć z pliku NPP\localization\english.xml, resource.h lub menuCmdID.h.
W menu kontekstowym można grupować wiele poleceń, dzięki czemu utworzymy listę rozwijaną (czyli submenu, ale dostępny jest tylko jeden poziom zagnieżdżenia). Wystarczy do każdej pozycji dodać atrybut z wartością FolderName="nazwa_submenu". Czasami nazwa danego polecenia może być zbyt długa lub oryginalna wersja angielska może nam nie odpowiadać, zawsze możemy ją nadpisać własną nazwą za pomocą atrybutu z wartością ItemNameAs="nowa_nazwa". Separator między poleceniami/grupami wstawiamy przy użyciu nowego elementu <item /> z atrybutem id="0".
Oto kilka przykładowych definicji:
<!-- Wbudowane opcje (identyfikacja po nazwie) -->
<Item MenuEntryName="Edit" MenuItemName="Cut" />
<Item MenuEntryName="Edit" MenuItemName="Copy" />
<!-- Wbudowane opcje (jak wyżej, ale identyfikacja po ID) -->
<Item id="42001" />
<Item id="42002" />
<!-- Separator -->
<Item id="0" />
<!-- Opcje pluginów zgrupowane we własnym folderze -->
<Item FolderName="Plugin commands" PluginEntryName="MIME Tools" PluginCommandItemName="Base64 Encode" />
<Item FolderName="Plugin commands" PluginEntryName="MIME Tools" PluginCommandItemName="Base64 Decode" />
<!-- Separator -->
<Item id="0" />
<!-- Wbudowane opcje z nadpisaniem ich nazw -->
<Item MenuEntryName="Edit" MenuItemName="UPPERCASE" ItemNameAs="Duże litery" />
<Item MenuEntryName="Edit" MenuItemName="lowercase" ItemNameAs="Małe litery" />