Sesje#

Sesja to specjalny plik, w którym zapisany zostaje bieżący stan pewnych aspektów programu związanych z aktualnie otwartymi plikami. W programie Notepad++ plik sesji może zapamiętywać m.in.:

W ujęciu praktycznym sesje stanowią osobny/dodatkowych mechanizm usprawniający prace programistyczne. Im większy projekt, im większa liczba plików, tym większe znaczenie sesji. Warto poświęcić nieco czasu na dokładniejsze przeanalizowanie implementacji sesji w NPP, by w przyszłości czas zaoszczędzony na otwieraniu/przełączaniu między wieloma plikami przeznaczyć na inne zadania.

Domyślna sesja#

Przy standardowych ustawieniach Notepad++ przechowuje stan bieżącej sesji w domyślnym pojedynczym pliku NPP\session.xml. Plik ten jest automatycznie aktualizowany (tj. ponownie zapisywany) jedynie przy prawidłowym zamknięciu NPP. Jest to bardzo istotne, bo w przypadku niestandardowego zamknięcia (np. zabijając proces notepad++.exe) plik domyślnej sesji posiada poprzedni niezmieniony stan.

W opcjach programu możemy dodatkowo kontrolować:

Tworzenie i automatyczne zapisywanie domyślnego pliku sesji można potraktować jako jeden z elementów kopii zapasowej naszej pracy, dlatego warto pozostawić tę opcję trwale włączoną.

Budowa sesji#

Sesja, podobnie zresztą jak cała konfiguracja w NPP, to plik tekstowy bazujący na specjalnej XML-owej składni. Położenie, nazwa czy samo rozszerzenie pliku jest nieistotne, ważna jest prawidłowa zawartość tego pliku. Załóżmy, że nasze główne okno programu jest w następującym stanie:

Notepad++ - główne okno programu z kilkoma otwartymi plikami w trybie podwójnego widoku

Rysunek. Notepad++ - główne okno programu z kilkoma otwartymi plikami w trybie podwójnego widoku

Mamy zatem główne okno programu w trybie podwójnego widoku, gdzie w pierwszym widoku (aktywnym) otworzono pliki polish.xml i english.xml (wybrany), a w drugim widoku otworzono pliki french.xml (wybrany) i italian.xml. Po zamknięciu i ponownym uruchomieniu NPP zawartość pliku NPP\session.xml jest następująca:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<NotepadPlus>
    <Session activeView="0">
        <mainView activeIndex="1">
            <File firstVisibleLine="0" xOffset="0" scrollWidth="872" startPos="0" endPos="0" selMode="0" lang="XML" encoding="-1" userReadOnly="no" filename="D:\_test\NPPClean\localization\polish.xml" backupFilePath="" originalFileLastModifTimestamp="992742051" originalFileLastModifTimestampHigh="30770798" mapFirstVisibleDisplayLine="-1" mapFirstVisibleDocLine="-1" mapLastVisibleDocLine="-1" mapNbLine="-1" mapHigherPos="-1" mapWidth="-1" mapHeight="-1" mapKByteInDoc="0" mapWrapIndentMode="-1" mapIsWrap="no" />
            <File firstVisibleLine="0" xOffset="0" scrollWidth="688" startPos="0" endPos="0" selMode="0" lang="XML" encoding="-1" userReadOnly="no" filename="D:\_test\NPPClean\localization\english.xml" backupFilePath="" originalFileLastModifTimestamp="-993743108" originalFileLastModifTimestampHigh="30779776" mapFirstVisibleDisplayLine="-1" mapFirstVisibleDocLine="-1" mapLastVisibleDocLine="-1" mapNbLine="-1" mapHigherPos="-1" mapWidth="-1" mapHeight="-1" mapKByteInDoc="6881388" mapWrapIndentMode="-1" mapIsWrap="no" />
        </mainView>
        <subView activeIndex="0">
            <File firstVisibleLine="0" xOffset="0" scrollWidth="824" startPos="0" endPos="0" selMode="0" lang="XML" encoding="-1" userReadOnly="no" filename="D:\_test\NPPClean\localization\french.xml" backupFilePath="" originalFileLastModifTimestamp="-993516542" originalFileLastModifTimestampHigh="30779776" mapFirstVisibleDisplayLine="-1" mapFirstVisibleDocLine="-1" mapLastVisibleDocLine="-1" mapNbLine="-1" mapHigherPos="-1" mapWidth="-1" mapHeight="-1" mapKByteInDoc="1139802112" mapWrapIndentMode="-1" mapIsWrap="no" />
            <File firstVisibleLine="0" xOffset="0" scrollWidth="960" startPos="0" endPos="0" selMode="0" lang="XML" encoding="-1" userReadOnly="no" filename="D:\_test\NPPClean\localization\italian.xml" backupFilePath="" originalFileLastModifTimestamp="-1488766285" originalFileLastModifTimestampHigh="30772454" mapFirstVisibleDisplayLine="-1" mapFirstVisibleDocLine="-1" mapLastVisibleDocLine="-1" mapNbLine="-1" mapHigherPos="-1" mapWidth="-1" mapHeight="-1" mapKByteInDoc="6881388" mapWrapIndentMode="-1" mapIsWrap="no" />
        </subView>
    </Session>
</NotepadPlus>

Zaczynając od najbardziej zewnętrznego znacznika całość można scharakteryzować następująco:

Zarządzanie wieloma sesjami#

W programie Notepad++ mamy wiele możliwości nawigacji po plikach. Wszystkie one charakteryzują się tym, że kiedy otworzymy stosunkowo dużą liczbę plików, to manewrowanie nimi będzie coraz mniej komfortowe (np. ze względu na pojawianie się pasków przewijania). Problem narasta wraz ze złożonością projektu, nad którym aktualnie pracujemy. Z własnego doświadczenia wiem, że im mniejsza liczba otwartych plików tym większy komfort pracy z programem. Nie chodzi tu nawet o szybkość działania samego programu przy wielu otwartych plikach, bo ta wciąż pozostaje na bardzo wysokim poziomie, ale o skuteczne zapanowanie nad całością. Zwykle modyfikujemy jeden lub kilka plików w danej chwili, dlatego otwieranie wszystkich plików projektu, nawet przy najdrobniejszej zmianie jednego z nich, mija się z celem.

Do podziału projektu na mniejsze szybko dostępne części idealnie nadają się pliki sesji. Każda sesja powinna zawierać niewielki podzbiór plików, który można wyodrębniać kierując się różnymi kryteriami:

Utworzenie wyspecjalizowanych sesji dla projektu to dopiero połowa sukcesu. Także i tutaj, podobnie zresztą jak przy nawigacji po plikach, przydałoby się jakieś GUI pozwalające w wygodny sposób zarządzać tymi sesjami. Do najważniejszych jego cech można zaliczyć:

Rozwiązanie wbudowane wprost w Notepad++ nie oferuje niczego szczególnego, ale wszystkie te niedostatki uzupełnimy z nawiązką stosując odpowiednią wtyczkę.

Wbudowany zapis i odczyt dodatkowych sesji#

Program Notepad++, obok domyślnego pliku sesji NPP\session.xml, obsługuje także dowolną liczbę innych plików sesji. Nazwa i rozszerzenie takiego pliku jest dobrowolna, ale jego zawartość musi być zgodna z XML-ową składnią wyrażającą sesje w NPP. Całość opiera się na dwóch bazowych poleceniach:

Manewrowanie wieloma plikami sesji za pomocą powyższych poleceń nie jest wygodne, choć w początkowych fazach rozwoju programu była to jedyna namiastka czegoś na kształt menedżera projektów. Co prawda można to nieco usprawnić, tj. ustawiając w opcjach programu domyślne rozszerzenie dla pliku sesji, dzięki czemu będzie działało przeciąganie pliku/plików sesji do głównego okna programu, ale dla wygodnego zarządzania sesjami jest to niewystarczające. Warto sięgnąć po jakiś dedykowany menedżer sesji, który będzie bazował na powyższych poleceniach, ale z jednoczesnym rozszerzeniem ich możliwości.

Zewnętrzny menedżer sesji#

Największą swobodę przy zarządzaniu wieloma plikami sesji zapewniają zewnętrzne menedżery sesji. W przypadku Notepada++ możemy skorzystać z następujących wtyczek:

Osobiście korzystam z pierwszego rozwiązania gdyż jest bardziej uniwersalne (zawiera eksploratora plików). Najlepiej samemu przeanalizować obie wtyczki i wybrać tę, która będzie nam najbardziej odpowiadać.

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Sesje (H1) Domyślna sesja (H2) Budowa sesji (H2) Zarządzanie wieloma sesjami (H2) Wbudowany zapis i odczyt dodatkowych sesji (H3) Zewnętrzny menedżer sesji (H3)