Bachelor's Thesis

Extension for Open Salamander

Final Thesis 927.26 kB

Author of thesis: Michal Mores

Acad. year: 2025/2026

Supervisor: Ing. Zbyněk Křivka, Ph.D.

Reviewer: Ing. Radim Kocman, Ph.D.

Abstract:

This thesis focuses on the development of a plugin for Open Salamander that enables viewing text files with syntax highlighting. The work presents the main design challenges and explores possible solutions. The implementation is based on the integration of a library containing a TextMate parser, which is used for the analysis and highlighting of the text. The solution includes visualization implemented using the Win32 API. The resulting plugin is published as an open source project. It provides functionality similar to the internal viewer of Open Salamander, while additionally supporting syntax highlighting and correct rendering of Unicode characters.

Keywords:

syntax highlighting, plugin, Open Salamander, C++, Win32 API, TextMate, grammar, theme

Date of defence

15.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaBznamka

Grading

B

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Topics for thesis defence

  1. Co vedlo k výběru kódování UTF-16 pro vnitřní reprezentaci Unicode v pluginu? Má v pluginu toto kódování nějaké výhody oproti běžnějšímu UTF-8, které již bylo nachystané v připojovaném nástroji TextMate?
  2. Uvažujte komplikovanější případy Unicode znaků (např. U+1F680), které se nevejdou do jedné kódové jednotky v UTF-16, ale například i jiné okrajovější případy Unicode: více znaků skládajících jeden zobrazovaný symbol, symboly upravující zarovnání dalších znaků. Jde tyto případy při práci s Win32 API správně pokrýt?
  3. Jak jste testoval výslední implementaci?

Language of thesis

Slovak

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

doc. RNDr. Milan Češka, Ph.D. (předseda)
doc. Ing. Jan Kořenek, Ph.D. (místopředseda)
Ing. Zdeněk Materna, Ph.D. (člen)
Ing. Miloš Musil, Ph.D. (člen)
Ing. Martin Hrubý, Ph.D. (člen)

Supervisor’s report
Ing. Zbyněk Křivka, Ph.D.

Student konzultoval vždy, když to bylo potřeba a ve svých klíčových rozhodnutích vycházel z konzultací s vedoucím, ačkoli to většinou znamenalo zvýšené úsilí. Práci hodnotím známkou B.

Evaluation criteria Verbal classification
Informace k zadání

Práce byla implementačního charakteru a rozšiřovala v praxi používaný souborový manažér s otevřeným zdrojovým kódem, ale velmi slabou dokumentací, což považuji za nejnáročnější aspekt zadání.

Práce s literaturou

Student kromě doporučených zdrojů vyhledával samostatně i další zdroje, které byly vzhledem k charakteru práce spíše webové.

Aktivita během řešení, konzultace, komunikace

Aktivita během řešení byla spíše průměrná, ale oceňuji, že především zásadnější návrhová rozhodnutí (např. podpora i dřívější verze programu nebo použití populárnější zvýrazňovací technologie) byla provedena dle konzultace s vedoucím.

Aktivita při dokončování

Student dal vedoucímu práci k dispozici v předstihu a připomínky před odevzdáním opravil. V té době již byla téměř finální i implementace, takže na zlepšování kvality textu a implementace zbyl nějaký čas.

Publikační činnost, ocenění

Modul je publikován jako open source a je možné jej využít jak pro Open Salamander, tak i pro více rozšířený freeware Altap Salamander.

Points proposed by supervisor: 83

Grade proposed by supervisor: B

Reviewer’s report
Ing. Radim Kocman, Ph.D.

Vzhledem ke kvalitnímu zpracování technické zprávy i realizačního výstupu navrhuji hodnotit práci i přes určité problémy stupněm B (80 bodů).

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: méně obtížné zadání

Stěžejní funkcionalita stanovená zadáním se zdá být poměrně jednoduchá na realizaci. Cílem je vytvořit plugin, který primárně propojuje funkce již existujících nástrojů. Jako komplikovanější část vnímám pouze potřebu seznámit se s poměrně rozsáhlým projektem a nutnost výběru vhodných nástrojů k propojení.

Prezentační úroveň technické zprávy

Technická zpráva je dobře členěna, samotný text je psán čtivě a srozumitelně.

80
Formální úprava technické zprávy

Typograficky je práce na dobré úrovni. Gramatickou stránku slovenštiny nejsem schopen detailně posoudit, ale žádných závažných nedostatků jsem si nevšiml.

85
Realizační výstup

Vytvořený plugin je funkční a splňuje požadavky ze zadání. Dle dostupných informací proběhlo i řádné testování s uživateli a zapracování jejich připomínek. Plugin se velmi jednoduše instaluje i používá a nabízí užitečné možnosti konfigurace.

Z části návrhu mohu vyzdvihnout průzkum dostupných nástrojů pro zvýrazňování syntaxe a výběr přívětivého řešení jak pro uživatele, tak i pro zasazení do zbytku programu.

Na druhou stranu nemohu jako příliš šťastnou volbu hodnotit zvolený způsob vizualizace textu. Zvláště když se student zároveň pustil i do implementace podpory Unicode. Zvolená vizualizace přes Win32 API značně komplikuje vývoj pluginu, kdy je nutné řešit vlastní implementaci pro vykreslování znaků i další navázané funkce (např. výběr textu). Většina popisu implementace pak probírá realizaci právě této funkcionality. Z popisu implementace není jasné, proč bylo potřeba zvolit vnitřní reprezentaci UTF-16 a upravovat pro ni navázané nástroje. Správná implementace práce s Unicode je komplikovaná záležitost. Dle mého testování se zdá, že student správně pokryl základní situace, ale u složitější situací začne docházet k problémům. Např. když se v textu vyskytnou znaky, které v UTF-16 vyžadují dvě kódové jednotky (např. emoji rakety U+1F680), tak přestane správně fungovat výběr textu. Výběr vhodnější technologie by mohl sám o sobě pokrýt funkce pro práci s textem i kompletní podporu Unicode.

80
Využitelnost výsledků

Výsledkem práce je plugin do programu Open Salamander, který umožňuje prohlížet soubory se zvýrazněním syntaxe. Plugin je použitelný pro praktické využití a je zveřejněn jako open source. Nedostatky v práci s Unicode jsou srovnatelné se staršími editory textu, do kterých byla částečná podpora Unicode přidávána dodatečně.

Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Všechny body zadání jsou v předložené práci splněny.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Rozsah technické zprávy je odpovídající a přiměřený.

Práce s literaturou

Celkem je uvedeno 13 studijních pramenů a všechny jsou relevantní k tématu bakalářské práce. Vlastní výsledky studenta jsou v práci řádně odlišeny. Většina zdrojů však odkazuje pouze na webové stránky analyzovaných nástrojů a použitých technologií. K tématu zvýrazňování syntaxe v textových editorech by mělo být možné nalézt relevantnější studijní prameny.

70
Topics for thesis defence:
  1. Co vedlo k výběru kódování UTF-16 pro vnitřní reprezentaci Unicode v pluginu? Má v pluginu toto kódování nějaké výhody oproti běžnějšímu UTF-8, které již bylo nachystané v připojovaném nástroji TextMate?
  2. Uvažujte komplikovanější případy Unicode znaků (např. U+1F680), které se nevejdou do jedné kódové jednotky v UTF-16, ale například i jiné okrajovější případy Unicode: více znaků skládajících jeden zobrazovaný symbol, symboly upravující zarovnání dalších znaků. Jde tyto případy při práci s Win32 API správně pokrýt?
Points proposed by reviewer: 80

Grade proposed by reviewer: B

Responsibility: Mgr. et Mgr. Hana Odstrčilová