ComparePlus#

Podstawowe informacje#

Instalacja#

Proces instalacji wtyczki przebiega w sposób standardowy. Finalnie na całą wtyczkę składają się następujące pliki i foldery:

Instalowanie wtyczki poprzez okno Zarządzanie wtyczkami pobiera ostatnią stabilną wersję Compare 2.0.1. Najnowsze wersje wtyczki (jeszcze nieoficjalne) można dograć ręcznie. Różnice między obiema wtyczkami są znaczące: nowa nazwa "ComparePlus" vs "Compare", przebudowane okno opcji, więcej poleceń w menu wtyczki czy inteligentniejsze wyszukiwanie różnic, dlatego też dalsze opisy będą dotyczyły tylko najnowszych wersji ComparePlus.

Menu wtyczki#

U góry na Pasku menu plugin tworzy następujące menu wtyczki:

ComparePlus - menu wtyczki w domyślnym stanie

Rysunek. ComparePlus - menu wtyczki w domyślnym stanie

Opis#

Wtyczka wprowadza do programu Notepad++ mechanizm porównywania pewnych danych tekstowych obok siebie. Na chwilę obecną dostępnych jest kilka wariantów porównawczych #, które ze względu na sposób działania można podzielić na dwie grupy:

Pełne (główne) warianty porównawcze #
Uproszczone (dodatkowe) warianty porównawcze #
Dwa dodatkowe porównania ze specyficznym zachowaniem (szczegóły).

Niezależnie od wybranego wariantu wszystkie porównania odbywają się na tej samej zasadzie, tj. przywoływany jest tryb podwójnego widoku (automatycznie lub ręcznie), po czym następuje wyszukanie różnic między danymi tekstowymi z dwóch różnych kart w obu widokach.

ComparePlus - przykładowy wyniki porównania dwóch różnych plików przy domyślnych ustawieniach i z włączonym panelem ComparePlus NavBar

Rysunek. ComparePlus - przykładowy wyniki porównania dwóch różnych plików przy domyślnych ustawieniach i z włączonym panelem ComparePlus NavBar

Istnieje także szereg wspólnych reguł ulokowanych w menu wtyczki, które można włączyć na stałe lub wywoływać na żądanie, i mają one zastosowanie dla wszystkich wariantów porównawczych.

Podstawowe informacje na temat wtyczki można znaleźć w oknie przywoływanym za pomocą polecenia Help / About... z menu wtyczki.

ComparePlus - okno ComparePlus z podstawowymi informacjami o wtyczce

Rysunek. ComparePlus - okno ComparePlus z podstawowymi informacjami o wtyczce

Proces porównywania#

Działanie wtyczki sprowadza się do porównywania między sobą danych tekstowych z dwóch różnych kart ulokowanych w dwóch różnych widokach, gdzie w pierwszym widoku (lewym/górnym) zwykle znajduje się starsza wersja danych #, a w drugim widoku (prawym/dolnym) nowsza wersja danych #. Lokalizację nowszej wersji danych (i w konsekwencji także starszej wersji danych) w konkretnym widoku można zmienić. Wtyczka zakłada, że nowsza wersja danych jest ważniejsza niż starsza wersja danych, i uważa ją za bardziej reprezentatywną.

Każdy wariant porównawczy używa tego samego algorytmu różnicującego, który jest nakierunkowany na wyszukiwanie różnić między porównywanymi danymi w bardziej inteligenty sposób, niż ma to miejsce w klasycznym bajtowym porównywaniu stosownym choćby we wtyczce HexEditor. Można kontrolować pewne zachowania tego algorytmu za pośrednictwem wspólnych reguł lub okna ComparePlus Settings.

ComparePlus - przykładowy wyniki porównania dwóch różnych plików przy domyślnych ustawieniach

Rysunek. ComparePlus - przykładowy wyniki porównania dwóch różnych plików przy domyślnych ustawieniach

Markery różnicujące#

Po wykonaniu jakiegoś wariantu porównawczego wszystkie odnalezione różnice oznaczane są bezpośrednio w Obszarze edycji osobnymi kolorami tła (można zmienić) i dodatkowymi symbolami umieszczanymi na pionowej belce z numerami wierszy. Obecnie można wymienić następujące markery różnicujące #:

Dwa ostatnie, tj. marker dodanego tekstu w linii i marker usuniętego tekstu w linii występują bezpośrednio w markerze zmienionej linii.

Uproszczone porównania#

Każdy z głównych wariantów porównawczych używa wszystkich markerów różnicujących. W menu wtyczki istnieją jednak dwa dodatkowe polecenia wykonujące uproszczone porównanie #, które w odnalezionych różnicach używają jedynie markera dodanej linii i markera usuniętej linii:

ComparePlus - pełny wyniki porównania (u góry) i uproszczony (na dole) dwóch różnych plików przy domyślnych ustawieniach

Rysunek. ComparePlus - pełny wyniki porównania (u góry) i uproszczony (na dole) dwóch różnych plików przy domyślnych ustawieniach

Istotne jest to, że oba powyższe polecenia mogą stanowić nakładki dla dwóch pozostałych głównych wariantów porównawczych, czyli dla porównania tego samego pliku oraz porównania tego samego pliku z repozytorium Git lub SVN, z tą jednak różnicą, że działanie w drugą stronę, czyli ponowne wywołanie tych głównych wariantów na uproszczonych wynikach, nie jest możliwe.

Powyższe reguły mogą wydawać się zawiłe dlatego najwygodniej wykonywać jeden konkretny wariant porównawczy (pełny lub uproszczony) bez wykonywania nakładek na już istniejące porównania, no chyba że nie ma innej możliwości uzyskania uproszczonego wariantu, jak w przypadku porównania tego samego pliku lub porównania tego samego pliku z repozytorium Git lub SVN.

Wiele współistniejących porównań#

Wywołanie jednego z wariantów porównawczych powoduje, że obie porównywane karty z dwóch różnych widoków zostaną ze sobą sparowane #, a to z kolei oznacza, że nie mogą one uczestniczyć w kolejnych porównaniach z innymi kartami, o czym zostaniemy poinformowaniu stosownym komunikatem.

ComparePlus - komunikat przy próbie porównania pliku będącego w porównaniu z innym plikiem

Rysunek. ComparePlus - komunikat przy próbie porównania pliku będącego w porównaniu z innym plikiem

Sparowanie ze sobą dwóch porównywanych kart wprowadza kilka interesujących zachowań:

W danej chwili może istnieć wiele sparowanych ze sobą kart, co oznacza, że wielokrotne wywołanie jednego z wariantów porównawczych jest dopuszczalne. Istotne jest to, aby nie próbować porównywać kart, które są już porównane/sparowane z innymi kartami. Sparowaną parę kart najprościej rozpoznać po dodatkowych opisach zwracanych z lewej strony na Pasku stanu lub po aktywnym stanie przycisku szybkiego dostępu Clear Active Compare.

ComparePlus - przykładowy wyniki porównania dwóch różnych plików umieszczany z lewej strony Paska stanu

Rysunek. ComparePlus - przykładowy wyniki porównania dwóch różnych plików umieszczany z lewej strony Paska stanu

W przypadku porównania tego samego pliku i porównania tego samego pliku z repozytorium Git lub SVN w tytule jednej z kart (po jego prawej stronie) pojawi się dodatkowy dopisek Last Save/Git/SVN, co także powinno ułatwić rozpoznanie sparowanych ze sobą kart.

Karta sparowana z jakąś kartą może zostać porównana z inną kartą pod warunkiem, że porównanie zostanie anulowane stosownym poleceniem (wybiórczo lub grupowo). Ręczne zamknięcie jednej ze sparowanych kart także powoduje anulowanie porównania i odblokowuje możliwość ponownego porównania dla drugiej karty z tej pary.

Ogólnie rzecz biorąc radziłbym unikać wielu współistniejących porównań, bo wraz z ich wzrostem zwiększa się ryzyko zepsucia jakiejś funkcji wtyczki lub całkowitego jej wysypania. Zawsze najpewniejsza będzie sytuacja, kiedy będziemy starali się utrzymywać tylko jedno porównanie w danej chwili.

Wykonywanie nowych porównań na już istniejących#

Można na już istniejących porównaniach wykonywać inne porównania, ale trzeba to robić w odpowiedni sposób. Najważniejsze jest to, aby w obu widokach wybierać te karty, które zostały ze sobą porównane (tj. obecnie są sparowane). Cała reszta jest zależna od tego, jakie nowe porównanie wywołujemy na już istniejącym porównaniu, i w zależności od tego pierwszego porównania mamy następujące możliwości:

Nakładanie nowych porównań na już istniejące porównania jest o tyle wygodne, że jeszcze przed ich wywołaniem mamy od razu rozlokowane dwie karty w osobnych widokach i nie ma potrzeby ręcznego ich przenoszenia.

Trzeba wyraźnie zaznaczyć, że wywołanie poleceń czyszczących (dla aktywnego porównania lub wszystkich porównań) powoduje, że część kroków z anulowania porównania odnosi się także do pierwszego (najstarszego) porównania wykonanego na sparowanych kartach, co oznacza, że może nastąpić przywrócenie oryginalnego położenia obu porównywanych ze sobą kart lub zamknięcie jednej z nich (jeśli była tymczasowa).

Anulowanie porównań i statusu pierwszeństwa karty#

Po wykonaniu jednego z wariantów porównawczych ewentualne sparowane ze sobą karty będące wynikiem tych porównań można anulować poprzez:

Samo anulowanie porównania # między obiema sparowanymi ze sobą kartami, niezależnie od sposobu jego wykonania, polega na:

Warto poświęcić nieco czasu na przyswojenie powyższych reguł, a już na pewno w sytuacji, gdy notorycznie pracujemy na wielu pootwieranych plikach i część z tych plików musimy niejednokrotnie ze sobą porównywać.

Zużycie zasobów#

Im większe różnice między porównywanymi danymi tekstowymi tym większe wymagania dla całego procesu, zarówno pod względem czasowym jak i sprzętowym. Długa praca zostanie zasygnalizowana stosownym oknem z paskiem postępu, z poziomu którego możemy przerwać cały proces klikając na przycisku Cancel.

ComparePlus - okno z paskiem postępu dla procesu porównywania

Rysunek. ComparePlus - okno z paskiem postępu dla procesu porównywania

Wydaje się, że w trakcie porównywania wtyczka rozkłada obciążenie na wszystkie dostępne rdzenie/wątki. Na mojej maszynie z Intel i7-2600K (4 rdzenie/8 wątków) obciążenie dla całego CPU dobija do 84%.

ComparePlus - okno Menedżer zadań Windows w trakcie porównywania dwóch dużych i znacznie różniących się od siebie plików

Rysunek. ComparePlus - okno Menedżer zadań Windows w trakcie porównywania dwóch dużych i znacznie różniących się od siebie plików

Porównanie dwóch różnych plików#

Podstawowa funkcja wtyczki, i z mojego punktu widzenia najczęściej wykorzystywana, która polega na porównywaniu całych danych tekstowych z dwóch różnych kart. W ujęciu praktycznym ten główny wariant porównawczy może obejmować porównywanie:

W tym wariancie tak naprawdę porównujemy dwa bufory danych tekstowych pochodzących z dwóch różnych kart, których zawartość prezentowana jest w Obszarze edycji. Istotne jest to, że musimy mieć do czynienia z różnymi buforami/plikami, czyli porównanie buforu/pliku sklonowanego do drugiego widoku nie jest możliwe, o czym zostaniemy poinformowaniu stosownym komunikatem.

ComparePlus - komunikat przy próbie porównania tego samego pliku sklonowanego do drugiego widoku

Rysunek. ComparePlus - komunikat przy próbie porównania tego samego pliku sklonowanego do drugiego widoku

Z racji tego, że porównywanie dwóch różnych plików zawsze dotyczy dwóch różnych kart, to próba wywołania polecenia w programie Notepad++, gdzie mamy jedną otwartą kartą nie ma najmniejszego sensu, o czym zostaniemy poinformowaniu stosownym komunikatem.

ComparePlus - komunikat przy próbie porównania przy jednej otwartej karcie

Rysunek. ComparePlus - komunikat przy próbie porównania przy jednej otwartej karcie

W zależności od aktualnego stanu trybu podwójnego widoku cały proces porównawczy możemy przeprowadzić w następujący sposób:

Porównanie zaznaczeń z dwóch różnych plików#

Ten główny wariant porównawczydziała podobnie do porównywania dwóch różnych plików, a zasadnicza różnica objawia się tym, że porównywane są dane tekstowe z zaznaczeń wykonanych w dwóch różnych plikach/buforach. Porównywanie rozpoczynamy wybierając z menu wtyczki polecenie Compare Selections (domyślny skrót Ctrl+Alt+N) lub klikając na przycisk szybkiego dostępu Compare Selections.

Reszta uwag i wytycznych jest w zasadzie taka sama, jak dla porównywania dwóch różnych plików, i z tego też powodu nie ma sensu opisywać wszystkiego ponownie. Warto jedynie nadmienić, że przeprowadzenie porównania bez uprzedniego wykonania obu zaznaczeń w dwóch różnych kartach nie jest możliwe, o czym zostaniemy poinformowaniu stosownym komunikatem.

ComparePlus - komunikat przy próbie porównania danych tekstowych bez uprzedniego wykonania zaznaczeń w dwóch różnych kartach

Rysunek. ComparePlus - komunikat przy próbie porównania danych tekstowych bez uprzedniego wykonania zaznaczeń w dwóch różnych kartach

Cechą charakterystyczną dla tego porównania jest sposób prezentacji jego wyników. W obu Obszarach edycji dane tekstowe pochodzące z zaznaczeń zostaną otoczone specjalnymi granicznymi markerami --- Selection Compare Block Start --- (wskazuje na początek zaznaczenia) i --- Selection Compare Block End --- (wskazuje na koniec zaznaczenia). Właśnie po tych granicznych markerach możemy łatwo stwierdzić, że mamy do czynienia z porównanie zaznaczeń z dwóch różnych plików.

Marker --- Selection Compare Block Start --- nigdy nie pojawi się w sytuacji, kiedy jedno z zaznaczeń zostało rozciągnięte na pierwszą linię (nawet częściowo) w porównywanych danych tekstowych.

ComparePlus - przykładowe pełne zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) przy domyślnych ustawieniach

Rysunek. ComparePlus - przykładowe pełne zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) przy domyślnych ustawieniach

Sprawą kluczową, którą bardzo łatwo przeoczyć jest faktyczne interpretowanie zaznaczeń przez wtyczkę. Zaznaczenie jakiegoś tekstu, nawet pojedynczego znaku w danej linii spowoduje, że do porównania użyte zostaną wszystkie znaki tej linii, a nie tylko te pochodzące z zaznaczenia. Wynika to wprost ze sposobu działania powyższych granicznych markerów, które otaczają całe linie, a nie poszczególne ich fragmenty. W praktyce oznacza to, że przy porównywaniu konkretnych linii nie ma potrzeby całkowitego ich zaznaczania, jak w poniższym przykładzie, gdzie w lewym zaznaczeniu za jednym zamachem wybrano ostatni znak w linii 4, całą linię 5 i pierwszy znak w linii 6, a w prawym zaznaczeniu za jednym zamachem wybrano połowę znaków w linii 4, całą linię 5 i połowę znaków w linii 6. Finalnie w obu Obszarach edycji porównane zostały linie 4/5/6, bo tylko na tych liniach wystąpiło zaznaczeniu.

ComparePlus - przykładowe niepełne zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) przy domyślnych ustawieniach

Rysunek. ComparePlus - przykładowe niepełne zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) przy domyślnych ustawieniach

Dla zaznaczenia nieciągłego, tj. składającego się z wielu zakresów w osobnych liniach , które można wykonać przy pomocą klawisza Ctrl i lewego przycisku myszy, do porównania wybrane zostaną linie objęte ostatnio wykonanym zakresem z tego zaznaczenia. Kolejności wykonania zakresów w nieciągłym zaznaczeniu nie należy mylić z wizualną kolejnością występowania tych zakresów w Obszarze edycji, bo nie zawsze muszą się one pokrywać. Tak dzieje się w poniższym przykładzie, gdzie w lewym zaznaczeniu najpierw wybrano linię 1, potem część z linii 2, i na koniec jednocześnie linię 4/5/6, a w prawym zaznaczeniu najpierw wybrano linię 9, potem część z linii 8, i na koniec jednocześnie linię 6/5/4. Finalnie w obu Obszarach edycji porównane zostały linie 4/5/6, bo tylko te linie objął ostatnio wykonany zakres w nieciągłym zaznaczeniu.

ComparePlus - przykładowe nieciągłe zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) przy domyślnych ustawieniach

Rysunek. ComparePlus - przykładowe nieciągłe zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) przy domyślnych ustawieniach

Przy domyślnych ustawieniach w obu Obszarach edycji są widoczne tylko te dane tekstowe, które zostały objęte zaznaczeniem, a pozostały tekst spoza zaznaczenia jest ukrywany. Nie dotyczy to pierwszej linii, która zawsze pozostaje widoczna. Ukrywanie zbędnej treści sprawdza się w przypadku danych tekstowych o dużych objętościach, gdzie najistotniejsze są tylko te dane, które pochodzą z zaznaczeń i są ze sobą porównywane, a cała reszta w tym momencie nie ma znaczenia. W razie potrzeby można wymusić wyświetlanie wszystkich danych tekstowych wyłączając opcję Show Only Compared Selections.

ComparePlus - przykładowe zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) z wyłączoną opcją Show Only Compared Selections

Rysunek. ComparePlus - przykładowe zaznaczenia w dwóch różnych plikach przed porównaniem (u góry) i po porównaniu (na dole) z wyłączoną opcją Show Only Compared Selections

Zawężanie porównań do określonych fragmentów tekstu pozwala zaoszczędzić nieco czasu i mocy obliczeniowej potrzebnych na wykonanie całego procesu. Może być to przydatne dla osób dysponujących starszym sprzętem, gdzie porównywane są dane tekstowe o duży objętościach, a różniące je fragmenty występują sporadycznie.

Porównanie tego samego pliku#

Ten główny wariant porównawczy polega na porównywaniu zapisanej wersji pliku z jego wersją niezapisaną. Po przełączeniu się na kartę z niezapisaną wersją pliku porównywanie rozpoczynamy wybierając z menu wtyczki polecenie Diff since last Save (domyślny skrót Ctrl+Alt+D). Przeprowadzenie operacji ma sens tylko i wyłącznie po spełnieniu dwóch poniższych warunków:

Po wykonaniu porównania obie sparowane ze sobą karty zawsze umieszczane są na końcach Paska kart w obu widokach, ale nie stanowi to większego problemu bo anulowanie porównania przywróci kartę z niezapisaną wersją pliku na swoje oryginalne miejsce. Istotne natomiast jest to, że w jednym z widoków pojawi się tymczasowa karta z zapisaną wersją pliku, którego lokalizacja (widoczna na Pasku tytułu w głównym oknie programu) będzie wskazywała na systemowy katalog Temp. Tytuł tej karty będzie składał się z nazwy porównywanego pliku, po którym nastąpi dopisek Last Save. Właśnie po tym dopisku w tytule karty możemy łatwo stwierdzić, że mamy do czynienia z porównaniem tego samego pliku. Tymczasowa wersja pliku w systemowym katalogu Temp jest tworzona według wzorca:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
name_LastSavenum.ext

gdzie poszczególne człony oznaczają:

Pliki tymczasowe tworzone przez wtyczkę mają zablokowaną edycję i nie można ich wprost modyfikować, no chyba że sami zdejmiemy blokadę wybierając u góry na Pasku menu kolejno Edycja >> Zablokuj edycję lub poprzez menu kontekstowe karty. Pliki te powinny zostać usunięte w automacie po wywołaniu poleceń czyszczących (dla aktywnego porównania lub wszystkich porównań) lub po standardowym zamknięciu programu Notepad++.

Porównanie tego samego pliku z repozytorium Git lub SVN#

Ten główny wariant porównawczy polega na porównywaniu ostatniej wersji pliku znajdującego się w repozytorium Git/SVN z jego zmodyfikowaną wersja, która jeszcze nie została wprowadzona do repozytorium Git/SVN.

Osobiście użytkuję jedynie system Git dlatego dalsze opisy zostały zweryfikowane tylko w tym jednym systemie kontroli wersji. Niemniej jednak w przypadku systemu SVN całości powinna działać w analogiczny sposób.

Po przełączeniu się na kartę ze zmodyfikowaną wersją pliku z repozytorium Git porównywanie rozpoczynamy wybierając z menu wtyczki polecenie Git Diff (domyślny skrót Ctrl+Alt+G). Przeprowadzenie operacji ma sens tylko i wyłącznie po spełnieniu poniższych warunków:

Po wykonaniu porównania obie sparowane ze sobą karty zawsze umieszczane są na końcach Paska kart w obu widokach, ale nie stanowi to większego problemu bo anulowanie porównania przywróci kartę z niezapisaną wersją pliku na swoje oryginalne miejsce. Istotne natomiast jest to, że w jednym z widoków pojawi się tymczasowa karta z ostatnią wersją pliku dodaną do repozytorium Git, którego lokalizacja (widoczna na Pasku tytułu w głównym oknie programu) będzie wskazywała na systemowy katalog Temp. Tytuł tej karty będzie składał się z nazwy porównywanego pliku, po którym nastąpi dopisek Git. Właśnie po tym dopisku w tytule karty możemy łatwo stwierdzić, że mamy do czynienia z porównaniem tego samego pliku z repozytorium Git lub SVN. Tymczasowa wersja pliku w systemowym katalogu Temp jest tworzona według wzorca:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
name_Gitnum.ext

gdzie poszczególne człony oznaczają:

Pliki tymczasowe tworzone przez wtyczkę mają zablokowaną edycję i nie można ich wprost modyfikować, no chyba że sami zdejmiemy blokadę wybierając u góry na Pasku menu kolejno Edycja >> Zablokuj edycję lub poprzez menu kontekstowe karty. Pliki te powinny zostać usunięte w automacie po wywołaniu poleceń czyszczących (dla aktywnego porównania lub wszystkich porównań) lub po standardowym zamknięciu programu Notepad++.

Przyciski szybkiego dostępu#

Wtyczka na Pasku narzędzi udostępnia dziesięć przycisków dla najczęściej wykonywanych operacji. Gdy szerokość głównego okna programu jest zbyt mała by pomieścić wszystkie te przyciski, to niewidoczne przyciski zostaną zwinięte do jednej listy dostępnej pod ostatnim przyciskiem reprezentowanym przez wskaźnik >>.

ComparePlus - przyciski szybkiego dostępu

Rysunek. ComparePlus - przyciski szybkiego dostępu

Kolejność (wszystkich) przycisków na Pasku narzędzi można dowolnie modyfikować za pośrednictwem wtyczki Customize Toolbar.

Poniżej zamieszczam opis każdego przycisku szybkiego dostępu zgodnie z domyślną kolejnością występowania na Pasku narzędzi:

Wspólne reguły dla wszystkich porównań#

W menu wtyczki znajduje się kilka dodatkowych reguł, które dostrajają działanie procesu porównawczego. Wszystkie one mają charakter dwustanowy, tj. mogą być włączone lub wyłączone na stałe lub na żądanie w danej chwili, a podjęta decyzja zostaje zapamiętana nawet po ponownym uruchomieniu programu Notepad++. Reguły mają zastosowanie we wszystkich wariantach porównawczych.

Poniżej zamieszczam opis wszystkich dodatkowych reguł zgodnie z kolejnością występowania w menu wtyczki oraz ich domyślny stan:

ComparePlus NavBar#

Wtyczka tworzy własne dokowalne okno z miniaturowymi podglądami dla obu porównywanych ze sobą kart. Samodzielne okno lub panel osadzony w kontenerze aktywujemy poleceniem Navigation Bar dostępnym w menu wtyczki lub przy użyciu przycisku szybkiego dostępu Navigation Bar.

ComparePlus - panel ComparePlus NavBar w prawym kontenerze

Rysunek. ComparePlus - panel ComparePlus NavBar w prawym kontenerze

Miniaturowa wizualizacja porównywanych ze sobą danych tekstowych pozwala szybciej zlokalizować różniące je miejsca, jak również oszacować przybliżoną liczbę samych różnic, co przy danych tekstowych o dużych objętościach może okazać się sporym udogodnieniem.

Okno z miniaturowymi podglądami ComparePlus NavBar można scharakteryzować następująco:

ComparePlus Settings#

Wtyczka daje większą kontrolę nad procesem porównawczym i ogólnie nad swoim zachowaniem za pośrednictwem okna ComparePlus Settings, które przywołujemy poleceniem Settings... dostępnym w menu wtyczki.

ComparePlus - okno ComparePlus Settings w domyślnym stanie

Rysunek. ComparePlus - okno ComparePlus Settings w domyślnym stanie

Po wprowadzeniu zmian ich zatwierdzenie następuje dopiero po kliknięciu na przycisku OK. Ustawienia są przetrzymywane w pliku konfiguracji # NPP\plugins\Config\ComparePlus.ini. Można całkowicie usunąć ten plik, co przywróci całą konfigurację do domyślnych wartości, chociaż o wiele wygodniejsze będzie po prostu kliknięcie na przycisku Reset.

Okno ComparePlus Settings dzieli się na dwie części, gdzie lewa część odpowiada za główne ustawienia wtyczki, a prawa część za kwestie kolorystyczne. Poniżej zamieszczam dokładniejszy opis wszystkich tych opcji zgodnie z kolejnością występowania oraz ich domyślny stan:

Main Settings #
Color and Highlight Settings #

Domyślne wartości dla kolorów teł w markerach różnicujących podano w formacie dziesiętnie/heksadecymalnie/(r, g, b).

  • Added line # - ustala kolor tła dla markera dodanej linii, domyślnie 13041606/C6FFC6/(198, 255, 198).
  • Removed line # - ustala kolor tła dla markera usuniętej linii, domyślnie 13027071/FFC6C6/(255, 198, 198).
  • Moved line # - ustala kolor tła dla markera przesuniętej linii, domyślnie 16770764/CCE6FF/(204, 230, 255).
  • [30] Changed threshold percentage # - ustala procentową czułość procesu porównawczego w przedziale 1-99, która determinuje użycie markera zmienionej linii między dwiema porównywanymi ze sobą liniami. Wartość 1 oznacza, że dwie linie muszą być zgodne między sobą przynajmniej w 1%, aby uznane zostały za tę samą, choć zmienioną (nawet bardzo) linię. Wartość 99 oznacza, że dwie linie muszą być zgodne między sobą przynajmniej w 99%, aby uznane zostały za tę samą, choć nieco zmienioną linię. Przy zgodności mniejszej od zadeklarowanej obie porównywane ze sobą linie potraktowane zostaną jako odrębne i oznaczone markerem dodanej linii lub markerem usuniętej linii.

    ComparePlus - wyniki porównani z wartością 38 (u góry), 58 (na środku) i 84 (na dole) dla opcji Changed threshold percentage

    Rysunek. ComparePlus - wyniki porównani z wartością 38 (u góry), 58 (na środku) i 84 (na dole) dla opcji Changed threshold percentage

    W powyższych przykładach czułość procesu porównawczego dla testowanych danych tekstowych dobrano tak, aby obniżenie wartości choćby o 1 dawało zauważalną różnicę w wyniku porównania, co można opisać w następujący sposób:

    • W górnym przykładzie zmniejszenie czułości z 38 na 37 spowoduje, że ostatnia linia 9 uznana zostanie za zmienioną linię.
    • W środkowym przykładzie zmniejszenie czułości z 58 na 57 spowoduje, że linia 5 uznana zostanie za zmienioną linię.
    • W dolnym przykładzie zmniejszenie czułości z 84 na 83 spowoduje, że linia 1 uznana zostanie za zmienioną linię.

    W ujęciu praktycznym wpływ czułości na wynik porównania jest silnie uzależniony od ilości znaków w porównywanych ze sobą liniach, jak i zawartych w nich różnicach. Dobór odpowiedniej czułości, innej niż domyślne 30, może być konieczny w jakiś specyficznych przypadkach.

  • Changed line # - ustala kolor tła dla markera zmienionej linii, domyślnie 10020839/E7E798/(231, 231, 152).
  • Added Highlight # - ustala kolor tła dla markera dodanego tekstu w linii, domyślnie 427007/FF8306/(255, 131, 6).
  • Removed Highlight # - ustala kolor tła dla markera usuniętego tekstu w linii, domyślnie 427007/FF8306/(255, 131, 6).
  • [0] Highlight transparency # - ustala poziom przezroczystości w przedziale 0-100 dla markera dodanego tekstu w linii i markera usuniętego tekstu w linii względem markera zmienionej linii. Wartość 0 oznacza najmniejszą przezroczystości dla tych dwóch markerów różnicujących, tj. ich kolor tła nakłada się na kolor tła w markerze zmienionej linii, ale nigdy w takim stopniu, aby całkowicie przykrył ten drugi kolor (w pewnych przypadkach może powstać nowy kolor będący mieszanką obu nakładających się kolorów). Wartość 100 oznacza całkowitą przezroczystości dla tych dwóch markerów różnicujących, tj. ich kolor tła jest niewidoczny względem koloru tła w markerze zmienionej linii, a jedyną wskazówką świadczącą o ich istnieniu jest otaczający je prostokątny obrys (ledwo widocznym) w ustawionym kolorze.

    ComparePlus - wyniki porównani z wartością 0 (u góry), 50 (na środku) i 100 (na dole) dla opcji Highlight transparency

    Rysunek. ComparePlus - wyniki porównani z wartością 0 (u góry), 50 (na środku) i 100 (na dole) dla opcji Highlight transparency

Każda z wyżej wymienionych opcji określająca kolor tła posiada listę wyboru, której rozwinięcie wyświetla uproszczoną paletę kolorów (8x6 = 48 kolorów), a dodatkowy przycisk tej palety More Colors... przywołuje okno z systemową paletą kolorów.

ComparePlus - uproszczona paleta kolorów (po lewej) i systemowa paleta kolorów (po prawej) przywołana z okna ComparePlus Settings

Rysunek. ComparePlus - uproszczona paleta kolorów (po lewej) i systemowa paleta kolorów (po prawej) przywołana z okna ComparePlus Settings

Alternatywa#

Ogólnie rzecz biorąc wtyczka, szczególnie w swojej najnowszej postaci ComparePlus, wprowadza do programu Notepad++ możliwość porównywania danych tekstowych na wiele sposobów. Wtyczka jest aktualizowana na bieżąco, ma rozbudowaną konfigurację, działa stabilnie, i w większości przypadków sprawdza się znakomicie. Jeśli mimo tych wszystkich zalet okaże się niewystarczająca to przy grubszych zadaniach można sięgnąć po zewnętrzne narzędzia:

Trzeba wyraźnie zaznaczyć, że wyszukiwanie różnic między danymi tekstowymi jest silnie uzależnione od użytego algorytmu różnicującego i każde z wyżej wymienionych narzędzi może zwracać odmienne rezultaty. Różnice ustala się w bardziej inteligenty sposób, niż ma to miejsce np. w klasycznym bajtowym porównywaniu. Warto stosować te narzędzia, które pozwalają dostrajać swój algorytm różnicujący w jak najszerszym zakresie.

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

ComparePlus (H1) Podstawowe informacje (H2) Instalacja (H2) Menu wtyczki (H2) Opis (H2) Proces porównywania (H3) Markery różnicujące (H4) Uproszczone porównania (H4) Wiele współistniejących porównań (H4) Wykonywanie nowych porównań na już istniejących (H4) Anulowanie porównań i statusu pierwszeństwa karty (H4) Zużycie zasobów (H4) Porównanie dwóch różnych plików (H3) Porównanie zaznaczeń z dwóch różnych plików (H3) Porównanie tego samego pliku (H3) Porównanie tego samego pliku z repozytorium Git lub SVN (H3) Przyciski szybkiego dostępu (H3) Wspólne reguły dla wszystkich porównań (H3) ComparePlus NavBar (H3) ComparePlus Settings (H3) Alternatywa (H3)