From 16dbb6ab8c4718cc73b3a4796168eacb5883a8f6 Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Thu, 25 Jul 2019 00:16:13 +0200 Subject: [PATCH 1/9] + chg: Organisation test_files folders by StyleLexers instead of by Extensions --- .../AHK => StyleLexers/styleLexAHKL}/AHKL.ahk | 0 .../styleLexANSI}/DEADLINE.nfo | 0 .../styleLexANSI}/FILE_ID.DIZ | 0 .../styleLexANSI}/NFO_01 - BOX.nfo | 0 .../styleLexANSI}/NFO_02 - PENTIUM.nfo | 0 .../NFO => StyleLexers/styleLexANSI}/acme.nfo | 0 .../styleLexANSI}/file01_id.diz | 0 .../styleLexANSI}/file02_id.diz | 0 .../styleLexANSI}/file03_id.diz | 0 .../styleLexANSI}/jerry.nfo | 0 .../styleLexANSI}/wwc94.nfo | 0 .../styleLexASM}/lowhelpr.asm | 0 .../styleLexAU3}/Configure_NP3 (Craigo-).au3 | 0 .../styleLexAU3}/clipboard_logger.au3 | 0 .../styleLexAU3}/environment.au3 | 0 .../styleLexAU3}/evernote_details.au3 | 0 .../styleLexAU3}/free_diskspace.au3 | 0 .../styleLexAU3}/get_putty_sessions.au3 | 0 .../styleLexAU3}/logoff.au3 | 0 .../styleLexAU3}/security_eventlog.au3 | 0 .../AWK => StyleLexers/styleLexAwk}/mve.awk | 0 .../styleLexBASH}/autogen.sh | 0 .../SH => StyleLexers/styleLexBASH}/backup.sh | 0 .../CSH => StyleLexers/styleLexBASH}/gawk.csh | 0 .../styleLexBASH}/gettext.sh | 0 .../styleLexBASH}/perlbin.csh | 0 .../styleLexBAT}/BAT_01.bat | 0 .../styleLexBAT}/CMD_01.cmd | 0 .../styleLexCOFFEESCRIPT}/coffeelint.coffee | 0 .../styleLexCOFFEESCRIPT}/commandline.coffee | 0 .../styleLexCONF}/INI_Notepad3_01.ini | Bin .../styleLexCONF}/INI_Old_Reg_01.ini | Bin .../styleLexCONF}/WildCard.0809.cfg | 0 .../styleLexCONF}/fonts.conf | 0 .../styleLexCONF}/jsl.node.conf | 0 .../styleLexCONF}/mscormmc.cfg | 0 .../styleLexCPP}/Config.cpp | 0 .../CXX => StyleLexers/styleLexCPP}/DBCS.cxx | 0 .../styleLexCPP}/DefaultLexer.cxx | 0 .../C => StyleLexers/styleLexCPP}/Notepad3.c | 0 .../styleLexCS}/SecurityPage.cs | 0 .../styleLexCSS}/markdown.css | 0 .../styleLexCmake}/minizip-exports.cmake | 0 .../styleLexCmake}/symbols.cmake | 0 ...ix broken Style Scheme Export (#1409).diff | 0 ...x broken Style Scheme Export (#1409).patch | 0 ...e-defined font for Text Files (#1445).diff | 0 ...-defined font for Text Files (#1445).patch | 0 .../styleLexDIFF}/float.patch | 0 .../styleLexGo}/Go_goroutine_channel.go | 0 .../styleLexHTML}/Design.html | 0 .../styleLexINNO}/USetup.iss | 0 .../styleLexINNO}/notepad3_setup.iss | 0 .../styleLexJAVA}/DecryptNotepad3.java | 0 .../styleLexJS}/environment.js | 0 .../styleLexJS}/pythonMain.js | 0 .../styleLexJSON}/sourcetreeconfig.json | 0 .../styleLexMAK}/scintilla.mak | 0 .../styleLexMARKDOWN}/README.md | 0 .../styleLexMATLAB}/ThinICAnew.m | 0 .../styleLexMATLAB}/bresenham.m | 0 .../styleLexMATLAB}/evidence.m | 0 .../styleLexMATLAB}/example.m | 0 .../styleLexNSIS}/GeneratorWizard.nsi | 0 .../PortableApps.comLauncher.nsi | 0 .../styleLexNim}/aliases.nim | 0 .../NIM => StyleLexers/styleLexNim}/sugar.nim | 0 .../PAS => StyleLexers/styleLexPAS}/nsis.pas | 0 .../PL => StyleLexers/styleLexPL}/CA.pl | 0 .../PL => StyleLexers/styleLexPL}/svn.pl | 0 .../styleLexPROPS}/html.properties | 0 .../styleLexPROPS}/usbxhci.inf | Bin .../styleLexPS}/PS1_Version_NP3.ps1 | 0 .../PY => StyleLexers/styleLexPY}/python.py | 0 .../styleLexRC}/np3_en_us.rc | 0 .../RB => StyleLexers/styleLexRUBY}/test.rb | 0 .../styleLexRUBY}/test_erb.rb | 0 .../styleLexRUBY}/test_logger.rb | 0 .../styleLexRegistry}/REG_01.reg | Bin .../styleLexRegistry}/REG_02.reg | Bin .../styleLexRegistry}/Registry.reg | Bin .../RS => StyleLexers/styleLexRust}/Rust.rs | Bin .../styleLexSQL}/SQL-File-10-Rows.sql | 0 .../styleLexSQL}/SQL-TestData.sql | 0 .../styleLexTCL}/branch_create.tcl | 0 .../styleLexTCL}/commit.tcl | 0 .../styleLexTCL}/option.tcl | 0 .../styleLexTEXT}/LOG_01_log.log | 0 .../styleLexTEXT}/License.txt | 0 .../styleLexTEXT}/Malayan_Problem.txt | 0 .../styleLexTEXT}/SampleCSVFile_1kb.csv | 0 .../styleLexTEXT}/SampleCSVFile_2kb.csv | 0 .../styleLexTEXT}/SampleCSVFile_4kb.csv | 0 .../styleLexTEXT}/TXT_Readme_01.txt | 0 .../styleLexTEXT}/TXT_Readme_02.txt | 0 .../styleLexTEXT}/TXT_Test_20_Long_Lines.txt | 0 .../styleLexTEXT}/TXT_The_quick_brown_fox.txt | 0 .../TXT_Word-Wrapped_1_Lines.txt | 0 .../TXT_Word-Wrapped_many_Lines.txt | 0 .../TXT_vertical-selection-bug.txt | 0 .../styleLexTEXT}/regex_find.txt | 0 .../strange_chacter_visual_artefacts.txt | 0 .../styleLexTOML}/TOML.toml | 0 .../styleLexVBS}/VBS_01.vbs | 0 .../styleLexVBS}/VBS_02.vbs | 0 .../VBS => StyleLexers/styleLexVBS}/base.vbs | 0 .../styleLexVBS}/wisubstg.vbs | 0 .../styleLexXML/Sample of FFS_GUI.ffs_gui | 67 ++++++++++++++++++ .../styleLexXML}/Sample of NZB.nzb | 0 .../styleLexXML}/XML_01.xml | 0 .../styleLexYAML}/appveyor.yml | 0 test/test_files/StyleLexers/sync.ffs_db | Bin 0 -> 1534 bytes .../LOG/LOG_02_Long_log (500.00 lines).log.7z | Bin 261788 -> 0 bytes 113 files changed, 67 insertions(+) rename test/test_files/{extensions/AHK => StyleLexers/styleLexAHKL}/AHKL.ahk (100%) rename test/test_files/{extensions/NFO => StyleLexers/styleLexANSI}/DEADLINE.nfo (100%) rename test/test_files/{extensions/DIZ => StyleLexers/styleLexANSI}/FILE_ID.DIZ (100%) rename test/test_files/{extensions/NFO => StyleLexers/styleLexANSI}/NFO_01 - BOX.nfo (100%) rename test/test_files/{extensions/NFO => StyleLexers/styleLexANSI}/NFO_02 - PENTIUM.nfo (100%) rename test/test_files/{extensions/NFO => StyleLexers/styleLexANSI}/acme.nfo (100%) rename test/test_files/{extensions/DIZ => StyleLexers/styleLexANSI}/file01_id.diz (100%) rename test/test_files/{extensions/DIZ => StyleLexers/styleLexANSI}/file02_id.diz (100%) rename test/test_files/{extensions/DIZ => StyleLexers/styleLexANSI}/file03_id.diz (100%) rename test/test_files/{extensions/NFO => StyleLexers/styleLexANSI}/jerry.nfo (100%) rename test/test_files/{extensions/NFO => StyleLexers/styleLexANSI}/wwc94.nfo (100%) rename test/test_files/{extensions/ASM => StyleLexers/styleLexASM}/lowhelpr.asm (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/Configure_NP3 (Craigo-).au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/clipboard_logger.au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/environment.au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/evernote_details.au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/free_diskspace.au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/get_putty_sessions.au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/logoff.au3 (100%) rename test/test_files/{extensions/AU3 => StyleLexers/styleLexAU3}/security_eventlog.au3 (100%) rename test/test_files/{extensions/AWK => StyleLexers/styleLexAwk}/mve.awk (100%) rename test/test_files/{extensions/SH => StyleLexers/styleLexBASH}/autogen.sh (100%) rename test/test_files/{extensions/SH => StyleLexers/styleLexBASH}/backup.sh (100%) rename test/test_files/{extensions/CSH => StyleLexers/styleLexBASH}/gawk.csh (100%) rename test/test_files/{extensions/SH => StyleLexers/styleLexBASH}/gettext.sh (100%) rename test/test_files/{extensions/CSH => StyleLexers/styleLexBASH}/perlbin.csh (100%) rename test/test_files/{extensions/BAT => StyleLexers/styleLexBAT}/BAT_01.bat (100%) rename test/test_files/{extensions/CMD => StyleLexers/styleLexBAT}/CMD_01.cmd (100%) rename test/test_files/{extensions/COFFEE => StyleLexers/styleLexCOFFEESCRIPT}/coffeelint.coffee (100%) rename test/test_files/{extensions/COFFEE => StyleLexers/styleLexCOFFEESCRIPT}/commandline.coffee (100%) rename test/test_files/{extensions/INI => StyleLexers/styleLexCONF}/INI_Notepad3_01.ini (100%) rename test/test_files/{extensions/INI => StyleLexers/styleLexCONF}/INI_Old_Reg_01.ini (100%) rename test/test_files/{extensions/CFG => StyleLexers/styleLexCONF}/WildCard.0809.cfg (100%) rename test/test_files/{extensions/CONF => StyleLexers/styleLexCONF}/fonts.conf (100%) rename test/test_files/{extensions/CONF => StyleLexers/styleLexCONF}/jsl.node.conf (100%) rename test/test_files/{extensions/CFG => StyleLexers/styleLexCONF}/mscormmc.cfg (100%) rename test/test_files/{extensions/CPP => StyleLexers/styleLexCPP}/Config.cpp (100%) rename test/test_files/{extensions/CXX => StyleLexers/styleLexCPP}/DBCS.cxx (100%) rename test/test_files/{extensions/CXX => StyleLexers/styleLexCPP}/DefaultLexer.cxx (100%) rename test/test_files/{extensions/C => StyleLexers/styleLexCPP}/Notepad3.c (100%) rename test/test_files/{extensions/CS => StyleLexers/styleLexCS}/SecurityPage.cs (100%) rename test/test_files/{extensions/CSS => StyleLexers/styleLexCSS}/markdown.css (100%) rename test/test_files/{extensions/CMAKE => StyleLexers/styleLexCmake}/minizip-exports.cmake (100%) rename test/test_files/{extensions/CMAKE => StyleLexers/styleLexCmake}/symbols.cmake (100%) rename test/test_files/{extensions/DIFF => StyleLexers/styleLexDIFF}/Fix broken Style Scheme Export (#1409).diff (100%) rename test/test_files/{extensions/PATCH => StyleLexers/styleLexDIFF}/Fix broken Style Scheme Export (#1409).patch (100%) rename test/test_files/{extensions/DIFF => StyleLexers/styleLexDIFF}/No pre-defined font for Text Files (#1445).diff (100%) rename test/test_files/{extensions/PATCH => StyleLexers/styleLexDIFF}/No pre-defined font for Text Files (#1445).patch (100%) rename test/test_files/{extensions/PATCH => StyleLexers/styleLexDIFF}/float.patch (100%) rename test/test_files/{extensions/GO => StyleLexers/styleLexGo}/Go_goroutine_channel.go (100%) rename test/test_files/{extensions/HTML => StyleLexers/styleLexHTML}/Design.html (100%) rename test/test_files/{extensions/ISS => StyleLexers/styleLexINNO}/USetup.iss (100%) rename test/test_files/{extensions/ISS => StyleLexers/styleLexINNO}/notepad3_setup.iss (100%) rename test/test_files/{extensions/JAVA => StyleLexers/styleLexJAVA}/DecryptNotepad3.java (100%) rename test/test_files/{extensions/JS => StyleLexers/styleLexJS}/environment.js (100%) rename test/test_files/{extensions/JS => StyleLexers/styleLexJS}/pythonMain.js (100%) rename test/test_files/{extensions/JSON => StyleLexers/styleLexJSON}/sourcetreeconfig.json (100%) rename test/test_files/{extensions/MAK => StyleLexers/styleLexMAK}/scintilla.mak (100%) rename test/test_files/{extensions/MD => StyleLexers/styleLexMARKDOWN}/README.md (100%) rename test/test_files/{extensions/M => StyleLexers/styleLexMATLAB}/ThinICAnew.m (100%) rename test/test_files/{extensions/M => StyleLexers/styleLexMATLAB}/bresenham.m (100%) rename test/test_files/{extensions/M => StyleLexers/styleLexMATLAB}/evidence.m (100%) rename test/test_files/{extensions/M => StyleLexers/styleLexMATLAB}/example.m (100%) rename test/test_files/{extensions/NSI => StyleLexers/styleLexNSIS}/GeneratorWizard.nsi (100%) rename test/test_files/{extensions/NSI => StyleLexers/styleLexNSIS}/PortableApps.comLauncher.nsi (100%) rename test/test_files/{extensions/NIM => StyleLexers/styleLexNim}/aliases.nim (100%) rename test/test_files/{extensions/NIM => StyleLexers/styleLexNim}/sugar.nim (100%) rename test/test_files/{extensions/PAS => StyleLexers/styleLexPAS}/nsis.pas (100%) rename test/test_files/{extensions/PL => StyleLexers/styleLexPL}/CA.pl (100%) rename test/test_files/{extensions/PL => StyleLexers/styleLexPL}/svn.pl (100%) rename test/test_files/{extensions/PROPERTIES => StyleLexers/styleLexPROPS}/html.properties (100%) rename test/test_files/{extensions/INF => StyleLexers/styleLexPROPS}/usbxhci.inf (100%) rename test/test_files/{extensions/PS1 => StyleLexers/styleLexPS}/PS1_Version_NP3.ps1 (100%) rename test/test_files/{extensions/PY => StyleLexers/styleLexPY}/python.py (100%) rename test/test_files/{extensions/RC => StyleLexers/styleLexRC}/np3_en_us.rc (100%) rename test/test_files/{extensions/RB => StyleLexers/styleLexRUBY}/test.rb (100%) rename test/test_files/{extensions/RB => StyleLexers/styleLexRUBY}/test_erb.rb (100%) rename test/test_files/{extensions/RB => StyleLexers/styleLexRUBY}/test_logger.rb (100%) rename test/test_files/{extensions/REG => StyleLexers/styleLexRegistry}/REG_01.reg (100%) rename test/test_files/{extensions/REG => StyleLexers/styleLexRegistry}/REG_02.reg (100%) rename test/test_files/{extensions/REG => StyleLexers/styleLexRegistry}/Registry.reg (100%) rename test/test_files/{extensions/RS => StyleLexers/styleLexRust}/Rust.rs (100%) rename test/test_files/{extensions/SQL => StyleLexers/styleLexSQL}/SQL-File-10-Rows.sql (100%) rename test/test_files/{extensions/SQL => StyleLexers/styleLexSQL}/SQL-TestData.sql (100%) rename test/test_files/{extensions/TCL => StyleLexers/styleLexTCL}/branch_create.tcl (100%) rename test/test_files/{extensions/TCL => StyleLexers/styleLexTCL}/commit.tcl (100%) rename test/test_files/{extensions/TCL => StyleLexers/styleLexTCL}/option.tcl (100%) rename test/test_files/{extensions/LOG => StyleLexers/styleLexTEXT}/LOG_01_log.log (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/License.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/Malayan_Problem.txt (100%) rename test/test_files/{extensions/CSV => StyleLexers/styleLexTEXT}/SampleCSVFile_1kb.csv (100%) rename test/test_files/{extensions/CSV => StyleLexers/styleLexTEXT}/SampleCSVFile_2kb.csv (100%) rename test/test_files/{extensions/CSV => StyleLexers/styleLexTEXT}/SampleCSVFile_4kb.csv (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_Readme_01.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_Readme_02.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_Test_20_Long_Lines.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_The_quick_brown_fox.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_Word-Wrapped_1_Lines.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_Word-Wrapped_many_Lines.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/TXT_vertical-selection-bug.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/regex_find.txt (100%) rename test/test_files/{extensions/TXT => StyleLexers/styleLexTEXT}/strange_chacter_visual_artefacts.txt (100%) rename test/test_files/{extensions/TOML => StyleLexers/styleLexTOML}/TOML.toml (100%) rename test/test_files/{extensions/VBS => StyleLexers/styleLexVBS}/VBS_01.vbs (100%) rename test/test_files/{extensions/VBS => StyleLexers/styleLexVBS}/VBS_02.vbs (100%) rename test/test_files/{extensions/VBS => StyleLexers/styleLexVBS}/base.vbs (100%) rename test/test_files/{extensions/VBS => StyleLexers/styleLexVBS}/wisubstg.vbs (100%) create mode 100644 test/test_files/StyleLexers/styleLexXML/Sample of FFS_GUI.ffs_gui rename test/test_files/{extensions/NZB => StyleLexers/styleLexXML}/Sample of NZB.nzb (100%) rename test/test_files/{extensions/XML => StyleLexers/styleLexXML}/XML_01.xml (100%) rename test/test_files/{extensions/YML => StyleLexers/styleLexYAML}/appveyor.yml (100%) create mode 100644 test/test_files/StyleLexers/sync.ffs_db delete mode 100644 test/test_files/extensions/LOG/LOG_02_Long_log (500.00 lines).log.7z diff --git a/test/test_files/extensions/AHK/AHKL.ahk b/test/test_files/StyleLexers/styleLexAHKL/AHKL.ahk similarity index 100% rename from test/test_files/extensions/AHK/AHKL.ahk rename to test/test_files/StyleLexers/styleLexAHKL/AHKL.ahk diff --git a/test/test_files/extensions/NFO/DEADLINE.nfo b/test/test_files/StyleLexers/styleLexANSI/DEADLINE.nfo similarity index 100% rename from test/test_files/extensions/NFO/DEADLINE.nfo rename to test/test_files/StyleLexers/styleLexANSI/DEADLINE.nfo diff --git a/test/test_files/extensions/DIZ/FILE_ID.DIZ b/test/test_files/StyleLexers/styleLexANSI/FILE_ID.DIZ similarity index 100% rename from test/test_files/extensions/DIZ/FILE_ID.DIZ rename to test/test_files/StyleLexers/styleLexANSI/FILE_ID.DIZ diff --git a/test/test_files/extensions/NFO/NFO_01 - BOX.nfo b/test/test_files/StyleLexers/styleLexANSI/NFO_01 - BOX.nfo similarity index 100% rename from test/test_files/extensions/NFO/NFO_01 - BOX.nfo rename to test/test_files/StyleLexers/styleLexANSI/NFO_01 - BOX.nfo diff --git a/test/test_files/extensions/NFO/NFO_02 - PENTIUM.nfo b/test/test_files/StyleLexers/styleLexANSI/NFO_02 - PENTIUM.nfo similarity index 100% rename from test/test_files/extensions/NFO/NFO_02 - PENTIUM.nfo rename to test/test_files/StyleLexers/styleLexANSI/NFO_02 - PENTIUM.nfo diff --git a/test/test_files/extensions/NFO/acme.nfo b/test/test_files/StyleLexers/styleLexANSI/acme.nfo similarity index 100% rename from test/test_files/extensions/NFO/acme.nfo rename to test/test_files/StyleLexers/styleLexANSI/acme.nfo diff --git a/test/test_files/extensions/DIZ/file01_id.diz b/test/test_files/StyleLexers/styleLexANSI/file01_id.diz similarity index 100% rename from test/test_files/extensions/DIZ/file01_id.diz rename to test/test_files/StyleLexers/styleLexANSI/file01_id.diz diff --git a/test/test_files/extensions/DIZ/file02_id.diz b/test/test_files/StyleLexers/styleLexANSI/file02_id.diz similarity index 100% rename from test/test_files/extensions/DIZ/file02_id.diz rename to test/test_files/StyleLexers/styleLexANSI/file02_id.diz diff --git a/test/test_files/extensions/DIZ/file03_id.diz b/test/test_files/StyleLexers/styleLexANSI/file03_id.diz similarity index 100% rename from test/test_files/extensions/DIZ/file03_id.diz rename to test/test_files/StyleLexers/styleLexANSI/file03_id.diz diff --git a/test/test_files/extensions/NFO/jerry.nfo b/test/test_files/StyleLexers/styleLexANSI/jerry.nfo similarity index 100% rename from test/test_files/extensions/NFO/jerry.nfo rename to test/test_files/StyleLexers/styleLexANSI/jerry.nfo diff --git a/test/test_files/extensions/NFO/wwc94.nfo b/test/test_files/StyleLexers/styleLexANSI/wwc94.nfo similarity index 100% rename from test/test_files/extensions/NFO/wwc94.nfo rename to test/test_files/StyleLexers/styleLexANSI/wwc94.nfo diff --git a/test/test_files/extensions/ASM/lowhelpr.asm b/test/test_files/StyleLexers/styleLexASM/lowhelpr.asm similarity index 100% rename from test/test_files/extensions/ASM/lowhelpr.asm rename to test/test_files/StyleLexers/styleLexASM/lowhelpr.asm diff --git a/test/test_files/extensions/AU3/Configure_NP3 (Craigo-).au3 b/test/test_files/StyleLexers/styleLexAU3/Configure_NP3 (Craigo-).au3 similarity index 100% rename from test/test_files/extensions/AU3/Configure_NP3 (Craigo-).au3 rename to test/test_files/StyleLexers/styleLexAU3/Configure_NP3 (Craigo-).au3 diff --git a/test/test_files/extensions/AU3/clipboard_logger.au3 b/test/test_files/StyleLexers/styleLexAU3/clipboard_logger.au3 similarity index 100% rename from test/test_files/extensions/AU3/clipboard_logger.au3 rename to test/test_files/StyleLexers/styleLexAU3/clipboard_logger.au3 diff --git a/test/test_files/extensions/AU3/environment.au3 b/test/test_files/StyleLexers/styleLexAU3/environment.au3 similarity index 100% rename from test/test_files/extensions/AU3/environment.au3 rename to test/test_files/StyleLexers/styleLexAU3/environment.au3 diff --git a/test/test_files/extensions/AU3/evernote_details.au3 b/test/test_files/StyleLexers/styleLexAU3/evernote_details.au3 similarity index 100% rename from test/test_files/extensions/AU3/evernote_details.au3 rename to test/test_files/StyleLexers/styleLexAU3/evernote_details.au3 diff --git a/test/test_files/extensions/AU3/free_diskspace.au3 b/test/test_files/StyleLexers/styleLexAU3/free_diskspace.au3 similarity index 100% rename from test/test_files/extensions/AU3/free_diskspace.au3 rename to test/test_files/StyleLexers/styleLexAU3/free_diskspace.au3 diff --git a/test/test_files/extensions/AU3/get_putty_sessions.au3 b/test/test_files/StyleLexers/styleLexAU3/get_putty_sessions.au3 similarity index 100% rename from test/test_files/extensions/AU3/get_putty_sessions.au3 rename to test/test_files/StyleLexers/styleLexAU3/get_putty_sessions.au3 diff --git a/test/test_files/extensions/AU3/logoff.au3 b/test/test_files/StyleLexers/styleLexAU3/logoff.au3 similarity index 100% rename from test/test_files/extensions/AU3/logoff.au3 rename to test/test_files/StyleLexers/styleLexAU3/logoff.au3 diff --git a/test/test_files/extensions/AU3/security_eventlog.au3 b/test/test_files/StyleLexers/styleLexAU3/security_eventlog.au3 similarity index 100% rename from test/test_files/extensions/AU3/security_eventlog.au3 rename to test/test_files/StyleLexers/styleLexAU3/security_eventlog.au3 diff --git a/test/test_files/extensions/AWK/mve.awk b/test/test_files/StyleLexers/styleLexAwk/mve.awk similarity index 100% rename from test/test_files/extensions/AWK/mve.awk rename to test/test_files/StyleLexers/styleLexAwk/mve.awk diff --git a/test/test_files/extensions/SH/autogen.sh b/test/test_files/StyleLexers/styleLexBASH/autogen.sh similarity index 100% rename from test/test_files/extensions/SH/autogen.sh rename to test/test_files/StyleLexers/styleLexBASH/autogen.sh diff --git a/test/test_files/extensions/SH/backup.sh b/test/test_files/StyleLexers/styleLexBASH/backup.sh similarity index 100% rename from test/test_files/extensions/SH/backup.sh rename to test/test_files/StyleLexers/styleLexBASH/backup.sh diff --git a/test/test_files/extensions/CSH/gawk.csh b/test/test_files/StyleLexers/styleLexBASH/gawk.csh similarity index 100% rename from test/test_files/extensions/CSH/gawk.csh rename to test/test_files/StyleLexers/styleLexBASH/gawk.csh diff --git a/test/test_files/extensions/SH/gettext.sh b/test/test_files/StyleLexers/styleLexBASH/gettext.sh similarity index 100% rename from test/test_files/extensions/SH/gettext.sh rename to test/test_files/StyleLexers/styleLexBASH/gettext.sh diff --git a/test/test_files/extensions/CSH/perlbin.csh b/test/test_files/StyleLexers/styleLexBASH/perlbin.csh similarity index 100% rename from test/test_files/extensions/CSH/perlbin.csh rename to test/test_files/StyleLexers/styleLexBASH/perlbin.csh diff --git a/test/test_files/extensions/BAT/BAT_01.bat b/test/test_files/StyleLexers/styleLexBAT/BAT_01.bat similarity index 100% rename from test/test_files/extensions/BAT/BAT_01.bat rename to test/test_files/StyleLexers/styleLexBAT/BAT_01.bat diff --git a/test/test_files/extensions/CMD/CMD_01.cmd b/test/test_files/StyleLexers/styleLexBAT/CMD_01.cmd similarity index 100% rename from test/test_files/extensions/CMD/CMD_01.cmd rename to test/test_files/StyleLexers/styleLexBAT/CMD_01.cmd diff --git a/test/test_files/extensions/COFFEE/coffeelint.coffee b/test/test_files/StyleLexers/styleLexCOFFEESCRIPT/coffeelint.coffee similarity index 100% rename from test/test_files/extensions/COFFEE/coffeelint.coffee rename to test/test_files/StyleLexers/styleLexCOFFEESCRIPT/coffeelint.coffee diff --git a/test/test_files/extensions/COFFEE/commandline.coffee b/test/test_files/StyleLexers/styleLexCOFFEESCRIPT/commandline.coffee similarity index 100% rename from test/test_files/extensions/COFFEE/commandline.coffee rename to test/test_files/StyleLexers/styleLexCOFFEESCRIPT/commandline.coffee diff --git a/test/test_files/extensions/INI/INI_Notepad3_01.ini b/test/test_files/StyleLexers/styleLexCONF/INI_Notepad3_01.ini similarity index 100% rename from test/test_files/extensions/INI/INI_Notepad3_01.ini rename to test/test_files/StyleLexers/styleLexCONF/INI_Notepad3_01.ini diff --git a/test/test_files/extensions/INI/INI_Old_Reg_01.ini b/test/test_files/StyleLexers/styleLexCONF/INI_Old_Reg_01.ini similarity index 100% rename from test/test_files/extensions/INI/INI_Old_Reg_01.ini rename to test/test_files/StyleLexers/styleLexCONF/INI_Old_Reg_01.ini diff --git a/test/test_files/extensions/CFG/WildCard.0809.cfg b/test/test_files/StyleLexers/styleLexCONF/WildCard.0809.cfg similarity index 100% rename from test/test_files/extensions/CFG/WildCard.0809.cfg rename to test/test_files/StyleLexers/styleLexCONF/WildCard.0809.cfg diff --git a/test/test_files/extensions/CONF/fonts.conf b/test/test_files/StyleLexers/styleLexCONF/fonts.conf similarity index 100% rename from test/test_files/extensions/CONF/fonts.conf rename to test/test_files/StyleLexers/styleLexCONF/fonts.conf diff --git a/test/test_files/extensions/CONF/jsl.node.conf b/test/test_files/StyleLexers/styleLexCONF/jsl.node.conf similarity index 100% rename from test/test_files/extensions/CONF/jsl.node.conf rename to test/test_files/StyleLexers/styleLexCONF/jsl.node.conf diff --git a/test/test_files/extensions/CFG/mscormmc.cfg b/test/test_files/StyleLexers/styleLexCONF/mscormmc.cfg similarity index 100% rename from test/test_files/extensions/CFG/mscormmc.cfg rename to test/test_files/StyleLexers/styleLexCONF/mscormmc.cfg diff --git a/test/test_files/extensions/CPP/Config.cpp b/test/test_files/StyleLexers/styleLexCPP/Config.cpp similarity index 100% rename from test/test_files/extensions/CPP/Config.cpp rename to test/test_files/StyleLexers/styleLexCPP/Config.cpp diff --git a/test/test_files/extensions/CXX/DBCS.cxx b/test/test_files/StyleLexers/styleLexCPP/DBCS.cxx similarity index 100% rename from test/test_files/extensions/CXX/DBCS.cxx rename to test/test_files/StyleLexers/styleLexCPP/DBCS.cxx diff --git a/test/test_files/extensions/CXX/DefaultLexer.cxx b/test/test_files/StyleLexers/styleLexCPP/DefaultLexer.cxx similarity index 100% rename from test/test_files/extensions/CXX/DefaultLexer.cxx rename to test/test_files/StyleLexers/styleLexCPP/DefaultLexer.cxx diff --git a/test/test_files/extensions/C/Notepad3.c b/test/test_files/StyleLexers/styleLexCPP/Notepad3.c similarity index 100% rename from test/test_files/extensions/C/Notepad3.c rename to test/test_files/StyleLexers/styleLexCPP/Notepad3.c diff --git a/test/test_files/extensions/CS/SecurityPage.cs b/test/test_files/StyleLexers/styleLexCS/SecurityPage.cs similarity index 100% rename from test/test_files/extensions/CS/SecurityPage.cs rename to test/test_files/StyleLexers/styleLexCS/SecurityPage.cs diff --git a/test/test_files/extensions/CSS/markdown.css b/test/test_files/StyleLexers/styleLexCSS/markdown.css similarity index 100% rename from test/test_files/extensions/CSS/markdown.css rename to test/test_files/StyleLexers/styleLexCSS/markdown.css diff --git a/test/test_files/extensions/CMAKE/minizip-exports.cmake b/test/test_files/StyleLexers/styleLexCmake/minizip-exports.cmake similarity index 100% rename from test/test_files/extensions/CMAKE/minizip-exports.cmake rename to test/test_files/StyleLexers/styleLexCmake/minizip-exports.cmake diff --git a/test/test_files/extensions/CMAKE/symbols.cmake b/test/test_files/StyleLexers/styleLexCmake/symbols.cmake similarity index 100% rename from test/test_files/extensions/CMAKE/symbols.cmake rename to test/test_files/StyleLexers/styleLexCmake/symbols.cmake diff --git a/test/test_files/extensions/DIFF/Fix broken Style Scheme Export (#1409).diff b/test/test_files/StyleLexers/styleLexDIFF/Fix broken Style Scheme Export (#1409).diff similarity index 100% rename from test/test_files/extensions/DIFF/Fix broken Style Scheme Export (#1409).diff rename to test/test_files/StyleLexers/styleLexDIFF/Fix broken Style Scheme Export (#1409).diff diff --git a/test/test_files/extensions/PATCH/Fix broken Style Scheme Export (#1409).patch b/test/test_files/StyleLexers/styleLexDIFF/Fix broken Style Scheme Export (#1409).patch similarity index 100% rename from test/test_files/extensions/PATCH/Fix broken Style Scheme Export (#1409).patch rename to test/test_files/StyleLexers/styleLexDIFF/Fix broken Style Scheme Export (#1409).patch diff --git a/test/test_files/extensions/DIFF/No pre-defined font for Text Files (#1445).diff b/test/test_files/StyleLexers/styleLexDIFF/No pre-defined font for Text Files (#1445).diff similarity index 100% rename from test/test_files/extensions/DIFF/No pre-defined font for Text Files (#1445).diff rename to test/test_files/StyleLexers/styleLexDIFF/No pre-defined font for Text Files (#1445).diff diff --git a/test/test_files/extensions/PATCH/No pre-defined font for Text Files (#1445).patch b/test/test_files/StyleLexers/styleLexDIFF/No pre-defined font for Text Files (#1445).patch similarity index 100% rename from test/test_files/extensions/PATCH/No pre-defined font for Text Files (#1445).patch rename to test/test_files/StyleLexers/styleLexDIFF/No pre-defined font for Text Files (#1445).patch diff --git a/test/test_files/extensions/PATCH/float.patch b/test/test_files/StyleLexers/styleLexDIFF/float.patch similarity index 100% rename from test/test_files/extensions/PATCH/float.patch rename to test/test_files/StyleLexers/styleLexDIFF/float.patch diff --git a/test/test_files/extensions/GO/Go_goroutine_channel.go b/test/test_files/StyleLexers/styleLexGo/Go_goroutine_channel.go similarity index 100% rename from test/test_files/extensions/GO/Go_goroutine_channel.go rename to test/test_files/StyleLexers/styleLexGo/Go_goroutine_channel.go diff --git a/test/test_files/extensions/HTML/Design.html b/test/test_files/StyleLexers/styleLexHTML/Design.html similarity index 100% rename from test/test_files/extensions/HTML/Design.html rename to test/test_files/StyleLexers/styleLexHTML/Design.html diff --git a/test/test_files/extensions/ISS/USetup.iss b/test/test_files/StyleLexers/styleLexINNO/USetup.iss similarity index 100% rename from test/test_files/extensions/ISS/USetup.iss rename to test/test_files/StyleLexers/styleLexINNO/USetup.iss diff --git a/test/test_files/extensions/ISS/notepad3_setup.iss b/test/test_files/StyleLexers/styleLexINNO/notepad3_setup.iss similarity index 100% rename from test/test_files/extensions/ISS/notepad3_setup.iss rename to test/test_files/StyleLexers/styleLexINNO/notepad3_setup.iss diff --git a/test/test_files/extensions/JAVA/DecryptNotepad3.java b/test/test_files/StyleLexers/styleLexJAVA/DecryptNotepad3.java similarity index 100% rename from test/test_files/extensions/JAVA/DecryptNotepad3.java rename to test/test_files/StyleLexers/styleLexJAVA/DecryptNotepad3.java diff --git a/test/test_files/extensions/JS/environment.js b/test/test_files/StyleLexers/styleLexJS/environment.js similarity index 100% rename from test/test_files/extensions/JS/environment.js rename to test/test_files/StyleLexers/styleLexJS/environment.js diff --git a/test/test_files/extensions/JS/pythonMain.js b/test/test_files/StyleLexers/styleLexJS/pythonMain.js similarity index 100% rename from test/test_files/extensions/JS/pythonMain.js rename to test/test_files/StyleLexers/styleLexJS/pythonMain.js diff --git a/test/test_files/extensions/JSON/sourcetreeconfig.json b/test/test_files/StyleLexers/styleLexJSON/sourcetreeconfig.json similarity index 100% rename from test/test_files/extensions/JSON/sourcetreeconfig.json rename to test/test_files/StyleLexers/styleLexJSON/sourcetreeconfig.json diff --git a/test/test_files/extensions/MAK/scintilla.mak b/test/test_files/StyleLexers/styleLexMAK/scintilla.mak similarity index 100% rename from test/test_files/extensions/MAK/scintilla.mak rename to test/test_files/StyleLexers/styleLexMAK/scintilla.mak diff --git a/test/test_files/extensions/MD/README.md b/test/test_files/StyleLexers/styleLexMARKDOWN/README.md similarity index 100% rename from test/test_files/extensions/MD/README.md rename to test/test_files/StyleLexers/styleLexMARKDOWN/README.md diff --git a/test/test_files/extensions/M/ThinICAnew.m b/test/test_files/StyleLexers/styleLexMATLAB/ThinICAnew.m similarity index 100% rename from test/test_files/extensions/M/ThinICAnew.m rename to test/test_files/StyleLexers/styleLexMATLAB/ThinICAnew.m diff --git a/test/test_files/extensions/M/bresenham.m b/test/test_files/StyleLexers/styleLexMATLAB/bresenham.m similarity index 100% rename from test/test_files/extensions/M/bresenham.m rename to test/test_files/StyleLexers/styleLexMATLAB/bresenham.m diff --git a/test/test_files/extensions/M/evidence.m b/test/test_files/StyleLexers/styleLexMATLAB/evidence.m similarity index 100% rename from test/test_files/extensions/M/evidence.m rename to test/test_files/StyleLexers/styleLexMATLAB/evidence.m diff --git a/test/test_files/extensions/M/example.m b/test/test_files/StyleLexers/styleLexMATLAB/example.m similarity index 100% rename from test/test_files/extensions/M/example.m rename to test/test_files/StyleLexers/styleLexMATLAB/example.m diff --git a/test/test_files/extensions/NSI/GeneratorWizard.nsi b/test/test_files/StyleLexers/styleLexNSIS/GeneratorWizard.nsi similarity index 100% rename from test/test_files/extensions/NSI/GeneratorWizard.nsi rename to test/test_files/StyleLexers/styleLexNSIS/GeneratorWizard.nsi diff --git a/test/test_files/extensions/NSI/PortableApps.comLauncher.nsi b/test/test_files/StyleLexers/styleLexNSIS/PortableApps.comLauncher.nsi similarity index 100% rename from test/test_files/extensions/NSI/PortableApps.comLauncher.nsi rename to test/test_files/StyleLexers/styleLexNSIS/PortableApps.comLauncher.nsi diff --git a/test/test_files/extensions/NIM/aliases.nim b/test/test_files/StyleLexers/styleLexNim/aliases.nim similarity index 100% rename from test/test_files/extensions/NIM/aliases.nim rename to test/test_files/StyleLexers/styleLexNim/aliases.nim diff --git a/test/test_files/extensions/NIM/sugar.nim b/test/test_files/StyleLexers/styleLexNim/sugar.nim similarity index 100% rename from test/test_files/extensions/NIM/sugar.nim rename to test/test_files/StyleLexers/styleLexNim/sugar.nim diff --git a/test/test_files/extensions/PAS/nsis.pas b/test/test_files/StyleLexers/styleLexPAS/nsis.pas similarity index 100% rename from test/test_files/extensions/PAS/nsis.pas rename to test/test_files/StyleLexers/styleLexPAS/nsis.pas diff --git a/test/test_files/extensions/PL/CA.pl b/test/test_files/StyleLexers/styleLexPL/CA.pl similarity index 100% rename from test/test_files/extensions/PL/CA.pl rename to test/test_files/StyleLexers/styleLexPL/CA.pl diff --git a/test/test_files/extensions/PL/svn.pl b/test/test_files/StyleLexers/styleLexPL/svn.pl similarity index 100% rename from test/test_files/extensions/PL/svn.pl rename to test/test_files/StyleLexers/styleLexPL/svn.pl diff --git a/test/test_files/extensions/PROPERTIES/html.properties b/test/test_files/StyleLexers/styleLexPROPS/html.properties similarity index 100% rename from test/test_files/extensions/PROPERTIES/html.properties rename to test/test_files/StyleLexers/styleLexPROPS/html.properties diff --git a/test/test_files/extensions/INF/usbxhci.inf b/test/test_files/StyleLexers/styleLexPROPS/usbxhci.inf similarity index 100% rename from test/test_files/extensions/INF/usbxhci.inf rename to test/test_files/StyleLexers/styleLexPROPS/usbxhci.inf diff --git a/test/test_files/extensions/PS1/PS1_Version_NP3.ps1 b/test/test_files/StyleLexers/styleLexPS/PS1_Version_NP3.ps1 similarity index 100% rename from test/test_files/extensions/PS1/PS1_Version_NP3.ps1 rename to test/test_files/StyleLexers/styleLexPS/PS1_Version_NP3.ps1 diff --git a/test/test_files/extensions/PY/python.py b/test/test_files/StyleLexers/styleLexPY/python.py similarity index 100% rename from test/test_files/extensions/PY/python.py rename to test/test_files/StyleLexers/styleLexPY/python.py diff --git a/test/test_files/extensions/RC/np3_en_us.rc b/test/test_files/StyleLexers/styleLexRC/np3_en_us.rc similarity index 100% rename from test/test_files/extensions/RC/np3_en_us.rc rename to test/test_files/StyleLexers/styleLexRC/np3_en_us.rc diff --git a/test/test_files/extensions/RB/test.rb b/test/test_files/StyleLexers/styleLexRUBY/test.rb similarity index 100% rename from test/test_files/extensions/RB/test.rb rename to test/test_files/StyleLexers/styleLexRUBY/test.rb diff --git a/test/test_files/extensions/RB/test_erb.rb b/test/test_files/StyleLexers/styleLexRUBY/test_erb.rb similarity index 100% rename from test/test_files/extensions/RB/test_erb.rb rename to test/test_files/StyleLexers/styleLexRUBY/test_erb.rb diff --git a/test/test_files/extensions/RB/test_logger.rb b/test/test_files/StyleLexers/styleLexRUBY/test_logger.rb similarity index 100% rename from test/test_files/extensions/RB/test_logger.rb rename to test/test_files/StyleLexers/styleLexRUBY/test_logger.rb diff --git a/test/test_files/extensions/REG/REG_01.reg b/test/test_files/StyleLexers/styleLexRegistry/REG_01.reg similarity index 100% rename from test/test_files/extensions/REG/REG_01.reg rename to test/test_files/StyleLexers/styleLexRegistry/REG_01.reg diff --git a/test/test_files/extensions/REG/REG_02.reg b/test/test_files/StyleLexers/styleLexRegistry/REG_02.reg similarity index 100% rename from test/test_files/extensions/REG/REG_02.reg rename to test/test_files/StyleLexers/styleLexRegistry/REG_02.reg diff --git a/test/test_files/extensions/REG/Registry.reg b/test/test_files/StyleLexers/styleLexRegistry/Registry.reg similarity index 100% rename from test/test_files/extensions/REG/Registry.reg rename to test/test_files/StyleLexers/styleLexRegistry/Registry.reg diff --git a/test/test_files/extensions/RS/Rust.rs b/test/test_files/StyleLexers/styleLexRust/Rust.rs similarity index 100% rename from test/test_files/extensions/RS/Rust.rs rename to test/test_files/StyleLexers/styleLexRust/Rust.rs diff --git a/test/test_files/extensions/SQL/SQL-File-10-Rows.sql b/test/test_files/StyleLexers/styleLexSQL/SQL-File-10-Rows.sql similarity index 100% rename from test/test_files/extensions/SQL/SQL-File-10-Rows.sql rename to test/test_files/StyleLexers/styleLexSQL/SQL-File-10-Rows.sql diff --git a/test/test_files/extensions/SQL/SQL-TestData.sql b/test/test_files/StyleLexers/styleLexSQL/SQL-TestData.sql similarity index 100% rename from test/test_files/extensions/SQL/SQL-TestData.sql rename to test/test_files/StyleLexers/styleLexSQL/SQL-TestData.sql diff --git a/test/test_files/extensions/TCL/branch_create.tcl b/test/test_files/StyleLexers/styleLexTCL/branch_create.tcl similarity index 100% rename from test/test_files/extensions/TCL/branch_create.tcl rename to test/test_files/StyleLexers/styleLexTCL/branch_create.tcl diff --git a/test/test_files/extensions/TCL/commit.tcl b/test/test_files/StyleLexers/styleLexTCL/commit.tcl similarity index 100% rename from test/test_files/extensions/TCL/commit.tcl rename to test/test_files/StyleLexers/styleLexTCL/commit.tcl diff --git a/test/test_files/extensions/TCL/option.tcl b/test/test_files/StyleLexers/styleLexTCL/option.tcl similarity index 100% rename from test/test_files/extensions/TCL/option.tcl rename to test/test_files/StyleLexers/styleLexTCL/option.tcl diff --git a/test/test_files/extensions/LOG/LOG_01_log.log b/test/test_files/StyleLexers/styleLexTEXT/LOG_01_log.log similarity index 100% rename from test/test_files/extensions/LOG/LOG_01_log.log rename to test/test_files/StyleLexers/styleLexTEXT/LOG_01_log.log diff --git a/test/test_files/extensions/TXT/License.txt b/test/test_files/StyleLexers/styleLexTEXT/License.txt similarity index 100% rename from test/test_files/extensions/TXT/License.txt rename to test/test_files/StyleLexers/styleLexTEXT/License.txt diff --git a/test/test_files/extensions/TXT/Malayan_Problem.txt b/test/test_files/StyleLexers/styleLexTEXT/Malayan_Problem.txt similarity index 100% rename from test/test_files/extensions/TXT/Malayan_Problem.txt rename to test/test_files/StyleLexers/styleLexTEXT/Malayan_Problem.txt diff --git a/test/test_files/extensions/CSV/SampleCSVFile_1kb.csv b/test/test_files/StyleLexers/styleLexTEXT/SampleCSVFile_1kb.csv similarity index 100% rename from test/test_files/extensions/CSV/SampleCSVFile_1kb.csv rename to test/test_files/StyleLexers/styleLexTEXT/SampleCSVFile_1kb.csv diff --git a/test/test_files/extensions/CSV/SampleCSVFile_2kb.csv b/test/test_files/StyleLexers/styleLexTEXT/SampleCSVFile_2kb.csv similarity index 100% rename from test/test_files/extensions/CSV/SampleCSVFile_2kb.csv rename to test/test_files/StyleLexers/styleLexTEXT/SampleCSVFile_2kb.csv diff --git a/test/test_files/extensions/CSV/SampleCSVFile_4kb.csv b/test/test_files/StyleLexers/styleLexTEXT/SampleCSVFile_4kb.csv similarity index 100% rename from test/test_files/extensions/CSV/SampleCSVFile_4kb.csv rename to test/test_files/StyleLexers/styleLexTEXT/SampleCSVFile_4kb.csv diff --git a/test/test_files/extensions/TXT/TXT_Readme_01.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_Readme_01.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_Readme_01.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_Readme_01.txt diff --git a/test/test_files/extensions/TXT/TXT_Readme_02.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_Readme_02.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_Readme_02.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_Readme_02.txt diff --git a/test/test_files/extensions/TXT/TXT_Test_20_Long_Lines.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_Test_20_Long_Lines.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_Test_20_Long_Lines.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_Test_20_Long_Lines.txt diff --git a/test/test_files/extensions/TXT/TXT_The_quick_brown_fox.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_The_quick_brown_fox.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_The_quick_brown_fox.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_The_quick_brown_fox.txt diff --git a/test/test_files/extensions/TXT/TXT_Word-Wrapped_1_Lines.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_Word-Wrapped_1_Lines.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_Word-Wrapped_1_Lines.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_Word-Wrapped_1_Lines.txt diff --git a/test/test_files/extensions/TXT/TXT_Word-Wrapped_many_Lines.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_Word-Wrapped_many_Lines.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_Word-Wrapped_many_Lines.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_Word-Wrapped_many_Lines.txt diff --git a/test/test_files/extensions/TXT/TXT_vertical-selection-bug.txt b/test/test_files/StyleLexers/styleLexTEXT/TXT_vertical-selection-bug.txt similarity index 100% rename from test/test_files/extensions/TXT/TXT_vertical-selection-bug.txt rename to test/test_files/StyleLexers/styleLexTEXT/TXT_vertical-selection-bug.txt diff --git a/test/test_files/extensions/TXT/regex_find.txt b/test/test_files/StyleLexers/styleLexTEXT/regex_find.txt similarity index 100% rename from test/test_files/extensions/TXT/regex_find.txt rename to test/test_files/StyleLexers/styleLexTEXT/regex_find.txt diff --git a/test/test_files/extensions/TXT/strange_chacter_visual_artefacts.txt b/test/test_files/StyleLexers/styleLexTEXT/strange_chacter_visual_artefacts.txt similarity index 100% rename from test/test_files/extensions/TXT/strange_chacter_visual_artefacts.txt rename to test/test_files/StyleLexers/styleLexTEXT/strange_chacter_visual_artefacts.txt diff --git a/test/test_files/extensions/TOML/TOML.toml b/test/test_files/StyleLexers/styleLexTOML/TOML.toml similarity index 100% rename from test/test_files/extensions/TOML/TOML.toml rename to test/test_files/StyleLexers/styleLexTOML/TOML.toml diff --git a/test/test_files/extensions/VBS/VBS_01.vbs b/test/test_files/StyleLexers/styleLexVBS/VBS_01.vbs similarity index 100% rename from test/test_files/extensions/VBS/VBS_01.vbs rename to test/test_files/StyleLexers/styleLexVBS/VBS_01.vbs diff --git a/test/test_files/extensions/VBS/VBS_02.vbs b/test/test_files/StyleLexers/styleLexVBS/VBS_02.vbs similarity index 100% rename from test/test_files/extensions/VBS/VBS_02.vbs rename to test/test_files/StyleLexers/styleLexVBS/VBS_02.vbs diff --git a/test/test_files/extensions/VBS/base.vbs b/test/test_files/StyleLexers/styleLexVBS/base.vbs similarity index 100% rename from test/test_files/extensions/VBS/base.vbs rename to test/test_files/StyleLexers/styleLexVBS/base.vbs diff --git a/test/test_files/extensions/VBS/wisubstg.vbs b/test/test_files/StyleLexers/styleLexVBS/wisubstg.vbs similarity index 100% rename from test/test_files/extensions/VBS/wisubstg.vbs rename to test/test_files/StyleLexers/styleLexVBS/wisubstg.vbs diff --git a/test/test_files/StyleLexers/styleLexXML/Sample of FFS_GUI.ffs_gui b/test/test_files/StyleLexers/styleLexXML/Sample of FFS_GUI.ffs_gui new file mode 100644 index 000000000..a0b065ab9 --- /dev/null +++ b/test/test_files/StyleLexers/styleLexXML/Sample of FFS_GUI.ffs_gui @@ -0,0 +1,67 @@ + + + + TimeAndSize + Exclude + + + + Mirror + false + Versioning + E:\Data_D\Versioning + + + + * + + + \System Volume Information\ + \$Recycle.Bin\ + \RECYCLER\ + \RECYCLED\ + *\desktop.ini + *\thumbs.db + + 0 + 0 + 0 + + + + D:\Rizonesoft + E:\Data_D\Rizonesoft + + Mirror + false + Versioning + E:\Data_D\Versioning\Rizonesoft + + + + * + + + \Develop\Notepad3\Bin\ + \Develop\Notepad3\.git\ + \Develop\Notepad3\.vs\ + \Develop\Notepad3\np3portableapp\*.paf.exe + \Develop\Notepad3\np3portableapp\Notepad3Portable\App\Notepad3\ + \Notepad++\Notepad++Portable\ + \Notepad2\Notepad2-zufuliu\ + \NP3Portable\Notepad3Portable\ + \EditPadLite7\EditPadLite7Portable\ + + 0 + 0 + 0 + + + + + + + + Action + + diff --git a/test/test_files/extensions/NZB/Sample of NZB.nzb b/test/test_files/StyleLexers/styleLexXML/Sample of NZB.nzb similarity index 100% rename from test/test_files/extensions/NZB/Sample of NZB.nzb rename to test/test_files/StyleLexers/styleLexXML/Sample of NZB.nzb diff --git a/test/test_files/extensions/XML/XML_01.xml b/test/test_files/StyleLexers/styleLexXML/XML_01.xml similarity index 100% rename from test/test_files/extensions/XML/XML_01.xml rename to test/test_files/StyleLexers/styleLexXML/XML_01.xml diff --git a/test/test_files/extensions/YML/appveyor.yml b/test/test_files/StyleLexers/styleLexYAML/appveyor.yml similarity index 100% rename from test/test_files/extensions/YML/appveyor.yml rename to test/test_files/StyleLexers/styleLexYAML/appveyor.yml diff --git a/test/test_files/StyleLexers/sync.ffs_db b/test/test_files/StyleLexers/sync.ffs_db new file mode 100644 index 0000000000000000000000000000000000000000..6a3ccd1fa7c3f0f72c9b52933aab7a4516d89c57 GIT binary patch literal 1534 zcmV4Uvd2V9>3IG5A0RR915C8xG92%d5%<`Q}vCcHXq$pO=0nh~i z00RI30K^3V000000I~%D04oXr000000C--FR#|i7HVoe0_kB%|X+6_+W_Mb%PO>}g zJ~}=UcYQVTCfUAdC<&68NTimeeB{>`AMK=_9y5KgKzslQ5ClNKbno81?&*`)cVsN& z^7glvvJW^r1oIx*5_ zacPQz*t$7-k8#o~WsR;#`&(67k=4dioROERbihAk)!Y(e%3Zr!rUdj;Mho(B-FUx^ z9XY3r4*G9~Kns)S;67o_QQBC=YP`MnEQ27#fAQosCe@0!T!(`mcNef{5_b+nBK-?E zAD}6RRm<#1q|oaPPd;FBp~|esClj4tI*&z~7syiOQe&$s1^)_kC*3Cl#8D}&ZdBc- zO>L}qBCX^#y@LR^Rbu$G0SMbq`tZpFVWd^|D!AEjI2gcf%7-H=6(?@DM2=EZRZ?e+ z(jI*|7)^)RDmNM)`KI9T%9TQ!42n7r4(IdWFx;d_>-t4-5w0oPXKyYG)^|ZWIz@#P zoHRz3Z}GY&TP8|_-DyN271Ca3W(|06c#cFwvZ_n!Mdw3RQhacouzdAT!Qp=i9_|Fe z(d8vV=^ytZk#08cV@5?jH4Z@YQ z?tgpmu=DtV$W)&H6fV70TWV*Nb5^q!lE@$1TF}O~5WEW}4gJMu9cjR*0l zFPKHbbJpz~#42OGn>*m}@4(R>KvfQhQGD`r^!Z)BS|)GpL6PS!E*gbfI+=ZjuZas| zP2)MxI9*DusT765*-safF+%E-Q-u~wUzG@SG#vtMT(ViFN~m2SjHaWHb|k*7c$6Sl zE@}+$tjyvwD)wlwi6Ruw(};Xi3*{VC(Z=W(?#(@lSbpuEcQF(Cl-h0W@0#jLt|Sig zYxFLE|2i429MV;9{nF@(dn)sPXIsTQT8CF?j_4 zzQ08d`#XZc& zVK{e1U1GYrmF5-hbbdCQ56%{&K^T8%7g1Zo1I{Z7Q*0g`AVo~#bFz4N@bHP+9fWtR2nEZSY{D#xG_d=}(I&y7hl0@cQA|2+oUq~5IUAfHKqlxu zOT`^`2o5IPnaX*-e&)kQ5nP`&aP0s@r!bO@Hw9_omIyYH={0w*TSCOIs^{^>99%}f zjZtuqrKm{|Q zgz^*o^+vaKSRnTvtAu(+kSu2vg<=;G1DLfCaWY5(v^j&jzzO+y4|D+g0=Rc5;WnP? z>e2T-y$8rQ5kr5&>%fu0U%wdV{}Ym0v`=xll81c-dOabd#|6}hEM{%UfV-rXbmO`^ zqCwIn8nKa>ah&fE`dq8Ml_F10qnFhR=nO$sedml!zJe(G2iP==?DCa~TEb%341&o_ zJ*ISz6f~Pit0Onj|DW+X(!=4-qN20!$Hz)ccP9h>>Pb5%;5CWU^qD6AnGPF<`ijXt z$VW((UF9^$K;B?p&L!~#xa`!BSrnW7_!Cuw4;{~@6q?a*%CyE-?- zpX;-vF3MXM#LvZNb{tF)jFfKib%kfrg5ue5E8w5;n~!ZcI&5qvkQ0#e4tk;pn}8KI zV`w8_!3f|Z0yrPn0Px(fT|^M}FK+ShBAL6s%y7n|YBqTz0b_J|3~02F!n~3YgoybGgR7Es7RQX_|C9A~XUJz~ zf34mwAPw{7{uF>V5u9b<8cl?SoO20JOmQ+g-#F^qrOq&e>6f&2>(~ zv>5ooHih6?L*t{YTHjagX2x83Ye(v%im^W(37jYDs)x8d#+4tSRNIS>Bo1DV`QYNq z0~i_0<#;*#ppSKy9`)525%hSdeR;3*k3Tk?8*ekBJo-)kTpxESG2N0YnJ60&v=meM z8Ju}6&4IPh@E{Ody2V#I0!_)%dD%T7cS1(x{wxKSD=?VtcIF@nds zfPf6acJNl;XZ}Bu%7%Hzds7om5hdkVkPfn_24awr!t;vY+wW{uP`Puo{}gzH%v~;DiN{gf)hLM42Uv zULofoslnDdH3aHd;LK3#$UWxXF;mRI&l=$1%#Ns z!DqAECqy!4azDgiauHV}>zoeI&!414MjG@y9huKf*RJU{XG7&mh1o)X9E>pVt#+qr z;9*CD-8ZTiSV{VUcE~E%hz=c`As81n?W$K>MG^^NB5jMV#aRTq6gvpmOr#N+88nH0 z;lJb0aUIiw`}=77U1l>$^WEZ7kv`VWobb3vz?L&*N;N$3bLV#bS@3^oF>x zDG96?q4LR~Q*WP1i z7P8;N7uNj+;Xy<(khwtRDA-a?)krMuy+Rn8E#O)#TiMCVgc^4BjHNRLOq8Cz{-nP?Dy`hA8(N9l3O_fH36zjkgwKdV#hQPT$cxxT z)le>zy|1%N<*I|OvkVTW^-zb>Kv?Ra%@;Ay?llB0)+dA;gcf%7);?8+6`|?mNMqD~ zUx1YU&_USh@fN_VdE;r~Uz!+7#s{q?t4etK4{*G;Fb1VtFm`E@!RgZ=lTeq^cA=e+ zO=W(2M9eHD>t+iIAq~WgUQF}{g#&9ew?AnBu<@=TE3vmMFX{8FU0QdcnfG@idBlUBH0D?%Zp3jKg48I9?Zmcy5*nh_F5~Qgh7GhXB!Hz8FA)S%VgX{Zg1Xl0_;QsWo{#V;>;)tR#B(?ZWHDiRnM=R3l|PrSYMbN z;$pOQlIjl(^ys452V3Lf4))&x4gYvimey?jnZf{Z8YifO9kFnNzt}Drs4iN}1)REg z3l5Amm>zVH&YW&f(8v!e?=}CPAufk4@Nso2##|rwj&FPD~ z>2^l(iwVv4DO^#eoCq93CxI^ocet=Zs1dh)5ulAr<9H~2C2NLHh9V?65HEMIKjUBb zCX3EDj&5$qq(v_riJS0zqE^wIuC*%9&=-fiOxfr?s;yvY)NTy9DMNQ_7>PS*|7GQ& z82xDZx}9Ro>CYA^hn4n92Db4wX~hlpiOvR?l#Y;Dy%MsZrL_C?SFv1Lx+un){3$T0 z9+fSzi5Kug#dV$!pMhDEQ+AdCh-yO1h{luV2_#BHgKgGsMMCfmXwt7*d5R{hz8!Du zwYO8*l)ZJj2(d>Cmw8xX#ukw$GAr7~hYp-CDgdcxJnJc4jiD5*yNG8mwh&+MUC>5F z5v-E9_VbC#n^X5+kl;haN!$7x2`606ig30kNAoMwT+mK^SEOZeBR^>aHgc8WzW0#h z%@py{5if|;=a03owq0o4@w)ui>NCrv4WBZ@nW~*X%DfWPV&V7;!l^gWVk#r=+3(^< z)WtSVe*dN27p(pJxG-_LPOiB_;2sag&7nMgL>YbU#2?De^95lTZ{TQP#S)9CXCVq{-<(P=Y!#iJs_uf<= z(M7;p?jszqC#A-~BZysLK48N5TClvVNoB`&%Tw{>?8X}+gcBxxZI%?PwEdXwahd8rC-(8_2O}7hPhSG?KWvJllTp!>N(2l z*rMlABeq+&$YKtQEVc7#B>3{A&EEE>d+&w@ji5r5jHtk_dSug8PuQZFl(%dQ?I=DB ztyL7*76P-Nh<4r-PF7&1f}&zhOHpRkUC`ZC>Ef61YsxA}lT`Ojo->Hz*!0I;ErA(Z zMnuMekCXW}O2PN-3BN8t#}y-8N?8<{ha{!fPOor3)wTQR{AY1R6^7mcRXk+R?FBdh zPRpOEfnop+HLC$({oJ|8jkS2RbDnyNpeb=Wo7YS~*p3v7?eK&6{AB@ts5W7^|?OaiLw z3F=nxU_sm$EP2h%mx=bMg)=bYw>|- zop3WPd-F=1+k>cI5zZi%g!kP7%di)}i>8bpnfIwT^#NIv#;+a#*t(UqZwHa}=X;S^ zo2mCIi-8!rG(=3HC)u0|9(X^hB|0+)vFJvq0%=?LRS9pT;f7+Y2R8l%5cdVLa* zu4rfLXYur2_Dp)TYR5I&Ocxg_OoAgB%1I)vx zF+ZQ7Ivx1zqO?&^u|b|Wp+x2=m&;V}0DE_X5(Zj?eP~)J9uqtenRM{#+!e<@-Pl~4 zDmpF|3R%3i=u2v;FxQAH+@j}3X6`fLH4 zs#6%=g^Ss-E*;{r$Bn&gRgic{99%2a)^a8k${gv(rPEiq*=4osDC)X~MAj!!KHz=_ zQt-1ySk0mp{3U79TPrVro?i&|_D6dX-(-FEt|G&@0bA%R2`ZfY$EL+>_%*FZR$=!U8O-f~$23GNXX2;YX9MSPH*B?T zXz&sMh!;a)49_}Z=5xry2# zds47uaayBiy5m1f0zosg=H{uCTG#=INy$6vhzw(QmW@EES_z z`p{BELbt?9TtP)&Z{jjEdEnJ6>79Pt;y@(|9CsxL z@gFh)2e*a<5|)xBa@kS(9++x)?9E-rU@8b&<#6s3!{LpW>0LwssnF7UoS?`(Zcs00 z?kWC=cS(#Q8p=9zOS)iIbo8zo57pc@J+9GAyM{rYB^^JGn3iX!(Ft4<=`-K0QL4j# z?sRpI@eJ$DZ%2P{0!m;1*hJ3+{Cr6Z7=RAHNQT9R179~(iydK;BH~%db8vo!k)i?8 zfhu8#2zpecQJJqUisCqK7i*iF*B<9Tl!^z2kA8Q>xNjBSPZ7|NaKx3-*!;jrPEU&M z#pLE!xwI6Go_$~<(&iQLo89MJ(ARff z3OnZieHcC$lIQ)=jGs`@L(W+$cIOTSGiJCPA2L1OJ&victJcezRf6MXO`=;bV~D`z z+C)zFvc-4wJf8*QBF07>iZFy08l!bK$AG#Jo3ES(oJgO~vE(qqe0&ja6=5ihKOcAR z;_{53^w&F>t*l%)eZe7AW=C7Fm^k05>ZZz&A&`{agps6+w0)d6?-Ue=mG0YQwdVkl z+qpz{+3MHpqH0s^fQcXarJq!Dg?R;QO4BKd?$ZeuEJUpvQD`}BKbj;2%B5F(Rq`2@ z1sg`1#n_Ix9wibQSNuV#?<6>v#zE@NgVxURpg0@H#5&~9sFWflv>YNWs1Re;pE-t zYN;+UCam2<{uHAFUUryvTr|QLzp`28Pde{GW7_<`SsywP_GMSONytMI&B+f#mbn}2 zAe*$7f|av%)e9T(Zcv1I0m*I+acMAHXh6jd(59a74QB)(&SRl@ZC=SK^8#~K3^x2; zD30{cNj_p<>wMm_w(Fr7{#1&WLi3<0cIO(bT6?X0&@uEBr?@?#1sMhg{{5`rEeeFW zX=502V|57(Xlyd~otI}j&WAZ9p7>a%N8eTp-c$|GAy@WAfSursbktNN65b^1_3^t? z7sq^@5*dr*)|?A)K<6AO;1(H4b--6#gN2F5%}(GgNCk~cx2-e~Kd=jaEHNFF-(?Iz zUjQ2a3>#OM3+81~DyQ~TMxUpu$aOJ7s)5jb93};d;aDZpa&NG@qAE*!DJzN7+0CUH zxwHp%(azr>(pogo-T^)^A-B)6q=ZB9jK|P-vNq^(fTzJyZ7$~%dUVP-ZtH8zdj%$q zS2BS&xWd091;cw+mc~pUMj=naMfB5#4KqOwZx4V9mT2z=A1aW|blRyzv;GFWDDEQ>oi-$rWp z%+U)_rbb$Cb-6hjD7CC9v`YAO3z`(+A^SKbvk={s3OL#bvUYXb8#6xcU#H>bsPDES zX&EhA_Ww*OH;x%D$!$pIqCa@vk+$E}$kgDX`wt>4GsItNrY*OusOXKutt{%E$p0LQ z=#Ik3ut-C!rtMp>o`R~K2pd9AA)hb`1CF^QM%m3i$>ni1_~iFu+boa%fMX;b*#w!D zSCk%e=Ofq$g8QznF+rOWM(*G`2H22a>^)|$T8s#BB8UU*Q!xJHD=Z}TjJTvQ+1=8* zki|VF$dDNLio!Z+)-g`SM;~A8w&TJwmqhBjUXNVL80SrwmXcJqcQRp#iaxoAo7t5RNdgY6U-BRTWoT zIqKls@J~!0LSBD%Kj(ucHV8*uQZ;3CK0IvSrE9z=Q>Se}fBz`d+&Bpje|^FeDIq>y zy5&#b4#1izTu?~Ru0*t@d+)aj;SrOh27HzB5Fx+fZ0XhvGx2zOl-W~1-u}Xj8PVzZ z4idBpByd^WkQSKD92m#6rC!t(E9q(!xdBZ??1YWkfUy{62~OJD)wUARr>d!-r)P6X z>m={rSouq6l#oB|_Z^3db{|Q??Z2c~Hvh;jS13-}B{f;&m7VCGh=ECC;wxrvvNwbO z3J>h0-R?A^)zA{@&i2&cuLmp%1tv&E%>byM-VZ2g(EXqqFKKcgO>+Jn4Sdk$gWMRL ze%oW%_OzYAOqfVB4)Mf=SBQ50|1l&3jugm>R-G8Qom#0={V_)=y{(_Ps3?lRV#M*n z^IOsqK&9m+D2owUsn)zhihPR$pw*#pC^_l=H& zS*M#@w&eMD;Y}PS*hE<2DDq~5EYGzWJ?gw~Nm4->#%$M-hZYOeo3L0Ikd>42*+GLT zgAcg6L<-u5g!mR{>iDr5*LfvIQ8Lt5uw<-X1D4f4p=;Rks7Op7c9B| zNFm67RiJzE8eH-GioS`r`|EDhI>Aw7KL%f`L$df0m(`pU2P7A_y_z8d_+Rxz-q&5P zccjSLn%P^Mm6nu%8)m3nXbD{%PERtpwQUlqtCx(#0YC~$-ZLLGd;B`5O|1C~l$r`Z z%gq1~e?&jTWC6vn(u|a)Tw^B0>{Ai9BgKIqc(MYY922c2Q7y*=v_mHVaKroJlt~Dn zq*#h8Vgoiny5cS%Q+%73kajjT>6y#y2YL!47$^ogG8%wNkwEdX{+W~)9@rS>U*K>A zui7WYcygjs5mQp3Mr8x2gO58i&DB4{`#)@Y6Zi+SVCcP%KPjmWZ?Kr4QC&*$xmNFZ zQH>P=U^(oZ0qjk4Q^uX1Zx!k&Bl&Ezu?@v1_^crQuXBOx}hkox>nMI zfREGk;cuh##PoH@w2e~V`@R*4h7Dz&ebZ$z{oBYq zH$2gkM0%&;eZwH4ly2wP3SE9@t|lxDAO?p{qGY+wJMBgPD=io@dkWfvJF4lks0=^3 z$SReN;y~`7kUQ!h$F5VFoXu2FPkDw$FlHKP;M&~Q#C$K- z#k-2}=@MHwCteul<5#s(OUyJU9)Ep&hXD>!UQwgG_2Y-Q6A06HLA@)_9itsQqZGR-{o)_#PbrQo@D7~kyKO&FdbNZ4+J=}%2D8DN$s_kx#pd_yTXn39BRKYi%(lo*q~CC28Bfhsg&s#H zTw@jitEn>Flsy+()wCo@@`g!)vlM}YC)TON;1I=X|1ikAZ{GsQx7TD4I$bc9rk)0X zt{CHaD-=GIhQmqX95$ksoxe{%hXO$hJol?N(XrjeHixuk@IynTrjs~5t3Z=rX<`Ha zRJv~as?F}5c?Vo?w`PUX4`8eAS=2Q+;eDtZ6u^M;Ea0@eK`Z!P`im?-bW$>|h%YfrTc>cssNTxol;DV< zt8BQj34xt1iZrPcwA#xg((I+9x0$y)q6fF?hnVP;2lltbl@r(hg9E>^oQP!oBx#!5 zw_DT(v2$T=*=a9Ev)P&@X>-fLSUmZ8(t7 zZ?f@Iohs`ob%>-=aQh;>5Je3GPR^a(lnhS`jl$;!UjsB{A3$ov&nytTrK=V;o9IR( z$%h?-)|_mUCz+9r?raj6ur;eI=L>v(Nrk^)<9syz_5yV`xsc`rx*0_r@nArnX(zR# z>DI=(DA9GX(Sl_V9-WSJDYxA}N)@H5xoBk~HIK4Xpr#1cx)JoiNBs#9KeidACI{Fu7%`jYcpDG&-wRp+WeE~A>r0>4_x1+X*?vOyfyHM8aE?D_a;_t-BEZ#G};|E=W2`efGPG{P(?%HxA@l-Kx zF~lez5aEeF$6qTLK2xYF+5*kCDtKgv#NY&|tM!Rh0lv1q?Fvy0#{5SiGe7nYgK^h+ zHT625{`jDx8l(Gu90;$&H&C4gDOq<~Uqqc7bm@7;hi)AH$*j7zN{mFtd?CV^==)IJ z*d_4&;rPwK9zG!7g}cNk=nH+a!U9@23J;+T`VV#sBV|nOh7k!5% zP!LAokr0gkbi?2WKNEc~kMf2P0CJ;iz1sH2oQ5%<&DBey2@hDWS?E0D7;#nr>H zYfiM|#X3aNh*Ysd!#eZRnUG-zzWIU2!R0);2C7kJk~=WtH}nW64$RgYE?L06pBM{& z(0rRZD~dyLUgrd@N*j5P@U1AB(}&+0GD-Hi2DK%bnF(Ypc`nXk2_q@_ktA4&SS2zB zeLySdJ?pR36mP9>i6Sot8zel`!#d%EJI+MN6=yE)C(<(V6%p?N1$tKFhKtkx13p&o z86`~Tx6mhBDuU3X7-vIPQvK^kwAxb%##~5~r)_&$2_xYmwl`ywGV6_bv(%Z9OVdpp zOmr3w3rBIWOdHK9X-@Fs25^^xnn2Ps$U72Ca4zKfn2FqH!W(;;I-ImOSS*C{lH6LH zb6Z|d>gOU%`Aj!(`n?vQnDZoPf^{BN^%Sxa9d#n)9g%(nkmdW?4#5_5%+D#=SD^;% zHK2h*1(1(p7HF0`CZGvb4+F zA535QJTLVNohYfw7xvpvzwaxiO=#Ut)o&_<5?Go?VPzu%%vmjvcot3~vji!CaK_Pq z-5p{3j9i(h#)rhRLL>Hzak2N4witV5(4)clX!e;4@C2D+w+&9mDWF+}mw9vC>Bv`k zXl!8m%L?VaVVqRACQRbN+cy%}g}uAy>0ZoW6RCW&wn+s) zGr85T9955r7!5~Gq#jxb&~je59+Sk~^iS5JTbGxNiOr>!fVAXOmEgI=I@(fi{)E9M zyNEqL^}Oz`G~QrcU4$zVVhcye3M#PAh1>Ty9V>U%N{(I-buTKTMu`}`X_(-WMb!5P zW;0sOdEanMMDXF?)c7aTb4>zsueP#qBSwsk)x)k&$A$+eXpb76fx=4@J}ZqxGUZKc z=p}md34XCisJec1Rn>gzzpLP7oIQ$^cCgF7ng(SJ@$3Q>2i8FyC=}MSR&+x@?$ju9p}6F zC0+}`;Q_zMdK|eni-+E|oKIFOeMj8%-ckWi<1up%IEmdzH3Gw`*dlF*zNEOpt=}I4 zm;qcIp~q!yb58i=T9sx%Rxs$4Ck`C2L5Nq>}wP6O^z=KJ0Z)kGi|{ioe+NgTKKjB-S6V#MxFC8 zW^%@`(?b5JKyO6dmY!Ihzs`q zk9M|-V64E%QAl50tv#`ghl19C#NXo%!Oe+=CqNa(CBf5R5 zKo86Xj#|!MZPDgu_!#RuBDkVAcGcph7?3iF8?%y z#Ys>+BCvyTKRq!aIl}cmI)8JEeJK*Y^VEc6cb3MjlRpsX-2T4ZM7?7MqXPt>WQgbe z`5lg0ICBj_APoD$wYpZ|7*_hLAkt$z2I+V>3-)CBlgE_GPcb`4_;i=Na}4rXQtNjl zlB0M1@%4Cvhq|j9CM&u>)gx^b+FvB-gym*Se;-(=L^u-O1AqF|n{!Jo zhYrpMTJu9OpY6G@6@~6q}tDSpd4jGaedn`lV$=>S*Os^DW*lIN|lVtj2D5oL2q2S z{M@HJ7L*b@!zcpZCRIw_87z?COciHWB~1($9b0`^#t@Vl{8fRUH0OQ#`IWZj&WP;Xu&s>4c z@FcVdi~`*7eV|dVs)vCKTtcM@v|5Mfm7cYKYW|fT>-DvEyu4XD-YdAN&l)a3x?#y)o-aC5f zY9W)W+ZAaz0)A>*#e3cAD!+Rn8azX ztL5JJ8$I*9o?`-E<}R?w+!qDBqjeqsPli{<=XIX?ip?Br$aPsWOG~!zW|~#0X`Q3* zt8&6VoFc;4+vt%3e~U&os9)=#u@Mjc1T#9omc1`HfhD{x4iSc3{skRHe7q~t%Uu&x z^($mK8^&_63wcuS;FQN$T;<*4CA4p%gXtcx_yVAPs8g)#4H33mjOB~hKhRp-092PP zZ--x_SQ2O*GT`1AYmULK6b?fiAOzR{sdG5Hon--tpu850M9&?JDMg{Tmamn*V#due zndwkZ`7p@F;fv-Q1FA?%?qsG;k0Ewf&6r%{m7rO7iC#9cNx%3D3<|*5>%sxKZV$lx zd#k+!8&u(|&McbF-Xdb6d?I_gLh8kfb9iPw$)=%o7u%CaX7!J7J+T0S@Lts};cY8a zFxD!1rk@Y6h#@K&ijCl?1e7V4q#wjuL7+A+zzDZM`Hzkr&hAh_Bza` zJvcL~LQo7%4=@BSl+8j{$24_mHR4|t(1>T+>o_y;B1+W}d)GoC7`b%UyobS82 zc>C`1z@serX&zOHbcHy#y!p^9A$JQ)wi(Nwb)-0bnTw|PtpwzpvbTA`z2}tVm{&w8 zj}eR@6uiWLINnPL-I3hD7}Y4{rA9Zv zaKy*Fi=4X7wx(}!?R`MZ5!o1e>3i#AM<|Um&Vt!0xTrqneSuxR0Y($gN4!*#|KMmi zSmWbaX#tRv=T_`x4~ek!IwP9@7vhX$?AC@4y}eT2B+|uvhCQUFy&OTm=kSYhL7k+N z(6q!PM0RkF8Uw=WYUl)&%nk+OZvP)(lXB{E;TblyGN*?lh941C`%n-1}kJzAe3ix@N*eD^O4=dzuwn`zr$tI>>$p0cY!%l$+h)%j0HxqdZ)rey8Es(w z+$?3Hq){gH$av5>36*bl^Ox}}DFAEVa8qpf98o%!v7muN4`tj5$k`v#^L|sg!yD;Z z7RCnxeU-}|AA~NneCBq&L-SOb6^ACs`=DL8v&HdUy%R2y_~wHKXg68W<=f=_I6Yyk z!jHMTpz7z#;@b)lu#}0iQGN-gWfdlH_RBak#N@2>U}&N-u&z*HP}9#50fxMH*`usW z5O1bK3T?~4s7Uqa?Cwk}PiQQ)@+ADtsW-3st${U_cT8qWpfmUKE<*eTgtqgt8ozO% zr-ry^;dc!^lJ_QTn#*V)On)v)(SAGcl@Y2j#gLcppG>i=|Is4&%W^LD(UkK>$j@U8PWJ=?XD8+o#!Y{LE8a3n=nfx6sCQQ#C@#pO{^XX3x~(UG8oA| z8aqaV-(VTQ~eLIT_ru7ctNMYXzie}7zp4W0Gv)iNLn{^WgQQ)@EC`R);l9Uy-m#CuHQXeYm zOo;umIV}I}bX#b{_e5g>abN2)Dqoyh%pZzNr4J<92twRgH?Y=|rhKaly|-!Kmw_{Wvgh>OB1k#* z6E$$GHbZd=Z_{J^!;ay7UYhf?%1QOSL$pDv;(uXe@2`;>(D3 zsx%S^i2?Eo?V{I5U!t3GvECx0p?UoxXVYx2?YMo3h~l$ywqAZuZ3Xw(L~{52Le|tL zZ|Va|4FcJF!jL4Ip?bFb-+nhL&e+}4m*31PIwU`Ssl1F^#@!dv0%Sxd8Y=ac7R(GR z(EBtUOmZm^461Kj*Exh7P5o0Jb>NQ>pw=DRCRp>32(FYAF9P;?oc^K#r{mR!GVB86 zv-Qg8>9lQ~5k*pI)2F}qBt;7r6C16cNMrrWfYN0H8i+90P>%}NmA!q~RB%`o417k3 zPNv2g>y0(%tyg9xO@K`7#w_TG9*_~$EQSy9xNy+NdI^F0ILk{NMHp!~v#gIqF{aR~ zT>CgSJhFX!F2Nzu$2T`?f=@T!_5+h~iM!s>y}_*63c7|wDQ6`Nk!nZRhIg!uToj=# z3OmuE;-wx`>| zfstk0H*9j~q~cyKT@gI1po04mYtcm076gT+l-QFt_7XhR1}%p;X0oUZ;(kG-m>+dX zc8fXb>RgVl#H|L+`oy0N;_dOyN9-h{{`5GC>|bwXUu9uj-iNnMyjzZNydYUO468 zMK{v89%ieC@xss+sz^HW(fd=C3Zsf1)f#n4+meyJ`2FE>nS(zvN5*igifpbDS($Uh0 zIKp@6#tx_4aPG~1EWe$)l^X@_kG6-es+d+%GgjGP-deH z3PSB`F&|C?!T2sS=027hik_+c@T-WC!8 z1PT#%=m-g#HbDb}cvne4Cm0N5-+yY zYvA6oWrdo;4tMpDsT>Er1($#i6qLhDyMA{wuLuqpaorERvYbyP1Ls@Pf1rx;rT-{( zxz@B)SG4Y}7gi&L#vyd!m<0-Ji@(5sLhmU~dL)*guvWg)MJr$Um4j6Q0H8L5PYESM z(E#>7#H(%Mk$|*-ouP0x| zC+m*e-}BUOin9tvY!lIBEXh7##$R}>O<+k%Pl{Ha`GgzbdBe&X)&#OX)9+(4f>U?} z#%^_%7ax8r3o8VKC>rZ(?&i}Q1XV8i1euo$y}uoSqNTEg^0F`_xQ`=9;HjH1bZpVB@4Imr<4D#3)f@ec ziwuPIw+?4iEjM&i>+&h0QoQ5&2ztd8~fyf0M_I^^lUv}FDkondt9(nfV zQe;z^U1OY!T;doX4<~`ud`q4=xvEk~;^=CNE*C-z7J%5~*nD1y*7=farEbtu-R*BT zjy2+j8+vXBLy^ds0P3xD|5xzMAH?E^Pfqq4Dh9KDaBKaxia^ZK0JcG=Y#N`PZH3bg8$Im! zK(sg_Ate!vhHB!tYHatQT+nsxSKL=3_3&r(w>cIzOC8{#ZAB5e_jklx{KIB5k$?#+ zYYkiM@N%qGV-u=?9?A6@>Oo;%Bu1IGVw-Q<4~q~bXmmPv{#ox&WN@DCi$=MC4Nng@ zdF`CnuQCju#~kz4T&*MRZBty^eCqyK>MpA z|5)I1BWpWm=>;){95_73gsbmy#>0ZX=`xp>eE9x-NIra9a`wBd3}l{7^?5CCN_lnTuQ@McYTS$|N>fqadfjZ3a!ZUqT|ESd?9`gU4z2r8X)vElb{7KdwCNU77$I z_d}0X!T$s@w4}VdqegmQS8}@;Yzu(=P?wH2;~Vd>cNov^`7A zTe63P{EijmVnG?`agNUsF9eDaO)o^@O;e2 zfp8~{`uK$Q>Uh$*}3x`|YqB(S(BLq`ikQGvd%SE_YzqarQecqIjMeBJ$xDEONtf zBMaL2^h>7pnTLql>!wse+1=X%wox0TOg4%StMQl{YMPt=nFnZmOlx-Uld~ z;htHhYWrwE%MwX%x!q!kY>M?@-2+Jvpz+bgV}BQjlzj#7?N}3oUAL~TZRK_l(`eap@U?>|NPAKadX%VB0{ z)Jw-Y%$%OivyB$dw$anu(|Q6DL^rsioPm%82L2=c>nmGG=)a5dreBGT{Y0DFY&l|Z z0~p>~AnR=a>8{op1GId8_R_n=*x>SO#Z^FYVQ})+C#?G^ zh4rj@;PrB$6P0s5TvHjmFXkQxkY-?@?2nemBbTjzm!Z9h;aEDOlc=I+kAWG42R4U* zliV+$zFLyj;;WHMS2*1-4IIaR^Wky+aCLZvLdo3kKJ^5cmt(v1+anH|LcS3mGZ^V> zGmdD>+_>_{dM)eH^x;|v-GkBo;#joGK=k?bI)8Ff5H*O9#HGdf`**V9FXg$t*%VrF zQ0HyKQnMxG%A4H~JV37F#8sOFYC|5qbt2*^nCHja?OykH>ApEE3`dwS>x!y zwiVtEih=3bZ%*L(cll_hA}zSP|4P-j$fNseb9@0|kkl>ayjQh6mNr-C;KVhjVUwMd zMd{JJF__H_(jFbD6D^OQdbL-W4UpfN1O8=W%#Ae}K7r+&`~{kUJ;}dxVv37}VQuM9 z{4>pJ1JSa{Cq2Mn=y^<2RR!^>$fH&uSGV%4seY+RcHZt9ErKIg{47SkIb-(u_IbS5 zhNVe78v_O3=@+R~ELb2#d$q7Y!qQR@}kj zO7Q#P9VTB@IGVH9@aL4OmC{@s4}t5BeW#rjOYenCv7+_4$x|-*l4PRM)T`0r!BjrP z%rBY@P{V^Hb@|5Zuq(||NT;8`ieI0q%X`Y0wZRZELu=}hM>5?bKmvnz`9s==3Y1s} zUAF>U&2|cwlUvPuWcqMy)*oF@fOKtzqzYDCpIE3D7RUpkCg?VkxZXgl=CMf1U~qYV zv0NM4UqCa}AQh)7C_6s)Vq=8_Pm>^v(dq~8Sgw5FSpY3S(!cf@loCiWOGJ73e8tgFd?Hmnrmoquhcy7sJ)^5wjV1e9rcs^lmSjL4O{ZtLBjAbSr z&!|mcn}Z9_*CW*xj$4-*nJE9s$jXqO3S}JF>^F6k4DFs+nSzhWsT$txDM3}U?(#0Fu9QBOzU^NoL#eES8MNh zQ&R}f$tvndt1-K;G_9Uz#o1KtSoDavk!U38d4l$eR$xEYyfT7+M?a4BUertX7uU*y zn9C`PbDH!k5VCA8fKiddGxW%wqa$w^H3K`l}90Iw6hyW3%PZPf7)oD+csJRqH*nHkSw|rO| z>+#SqUOe1EpU~rsu+#^|o$i4viWHO8e0HJVA~kdFeD0FsA^`2rRo8vHt&-@r^l;co zY_?@v9oP0#0*jr^HPgD2&BTLNs|uB32xMT^X*;=9^OYs-9ilFd_xhkYH>I?XVX&i`bk?XC+u4Y zHJr!8krms&%frjunnqLXP$SVPXxB)%TUXHUjB)pH_ zr7d;^{SnKY*|t1cELqnZij7Olg~fbA;dNc6y_6KGoGcM84COeIq8A>38XE; z5EEqFGjoPwY5)Qod++JO4hp;>WT0 zP}Q7eEbXdhW>DHuW_o?}UO3lS8ZFvDJ`|yduhmquh0+;xEL2c(N=NT@R~2GI%G?%` zN6h(|C(;4OMjW~x0H*4E_d^>=VazKs;$sQU<~68)j#e9T6x%So4g&%ESFNSiW;EY# zbwUxjTXE|fP46GhlyE)nIDf;9&7%q_j|^6h*pyGR>}E3DiDrFjOF2s`CK4Rbd@$S= zYert-2N6&MHe3)X(@jH{m|>N)&j%NWn4{0PWA_+n^0P1_mAxv+MY`*Sv zcOqxXSAsehK^TWpoG1UQ!e}@GKjIp;^f#Ht0+YyK7 zA(h}6ZTAoR?jlE?AwgI#m!Lsvh{HqRfTI38rklPDUWV`F`?v0mx zFB<#{M^y435D}oX8XbEqCNB`qV{0yW<$0>NI+Wo~bAVBd_-=zML!G9IBRGsb+|gG& z5IP%`J3!-4R_$L5Qr%bGR%iD~_<6~^+d+v}PPx#hYfo-Z_vUY=;uw64dkkpvtqsC; zAuMhEQhh2rLL5XME6Y~NDOUU=1`~q-Y$lDE__z{g$UskSxN=71XZ%f1^B+wbGz{8@ z1h;Qnpg;=H_9djL4i>2X2tGmV4@`1Pbrq-z+e{rJk4JMSq6}dby_K}B_rWKSqsUT# z-C%mQ%_UABj9>r0*VR)~Y?cTHh~8%;+v!qz z8ST`4t7GUl)(5w-EVWlR*LDmvN3m#PBv;6!UpC9YX1cB^xH9IqRGXtw+}k-`eOV5Z zd;ln?wo&Y%bp2`FRCc7YXsi04rtW@7g%f|c{0%V(X}sV9>O*>0dBkFXN9_0;7q+9C z2gCb@3WG8xCFJ>z-Y2Xq4%pX+*MBYcrExjoMq=!HK7T?xRXZ^~+t)G*`KIaEbAg?F zjI0=7y(54rwAB3Me;^CS&&*D7?@}XJsn3~cs}x4U*9q7UwajG;eykXULiz68|L!HA z{Vlos{mYsllUfqir{+tFLwFfn`Doc|Z8CiTL|{QGWyV=jW1b2gieUQ?K1V*23sNmB zgL&|+%iV+V!*;n#{I-}wrxbjcMa9{TSUKyHYx9tOs4D1ime;KPL49sbXYf<8IFJk5 ztjjxEI9c~dwM*PD2?;wN3gkR8L&nYabbb?JLY`o@7e#m-HiJb!e(->HW<$-Lin(+Z zarcqKG^)@1MEP-(RR^R(8sa2Wm2lGQXysAvTbJRxLq87%vDFNR_6mgZA2r%cR&3!| zwzbBTD+lT`enx?DBHq z=w8mYXMDDP1-yaTKka4Jr3EHP33jAdT(8w4BP*rcFyO>~us%TSz7PuaxYKgOrGXgV zN(%q~7^BXog6csCW*~YcI7)8`DC9zZ3v5~a9AtpfVM z8L!K(#wC@jJA=&w!`?PBef!nyDi~x{;tSF^zdo`FIi|}%G~A;{k>ZK$W$hx7bcDG7j5*V+@za}DV{u|}Tsk%;V4OOLPf;{o9_>vZL ze_Q3SG`zATY4trOtF&0mI6iAv@WfoV@{9TfF4)VOhgXyZ~p9l4&b<;NBjZ|m&ieFcBy zfcOXitV}o^VlHLWFukvl&O3bQLvU!+pD5{#h}-J-^Y194q_lyFto}2V$7TkA6I%N7Bdj(knR6 zo55Tq6rtoUtCrHcyoYU|P$hIR7d_nPbS%WtK_1)41(t!n zbaknYU}uJF3HkZt^92kZwFGJa^yRa zNjiK2 zUK-{8Q!Lu9si)1FdZMhX0ok^a_!4U_gVsAVk8hltZ{8U}9U1>IimxdllD6)#v@&Nv zQVQV1QuI#_Kp@=#>LCVjXYFpsf0DUF^78Ch1CpA9f_Vz0kGdlWO9qp%n5V& zw*d7Xr{twqbf0^Gvj^8?IXPZ>_j+w=RpJh-X!T>hqEBLDxH}olwE~>Cc)c-Jl{M8# z1J2BqkjIRHw&Uz^=$_0pa#kd-*a@;|#Uu5APp3dlaFX;w$6y)3{a>!*uLO&8%8I(a zZ)rC#o<9_)BlomHop*E&R0TXrg1oLlABD4W&~{=xbQ_k}8j^;zchpYQzdMY#CuPhX zj%q1K(JYqE`w}FA{}!~i{oGMgD8$RDkzoJyg>|V2r9x}T$n?1f8AouDuDv*nt*{i_4jooblazdr z$REYwsX^<;p6k++ZkI+URwT_W{eRH^MJ5$W zO)2oQl>f>n9u|YLMayAjxzs4m(fgDjPbk(D&;2%RTq#sfrj=$dEQ4KqLkLM6BfX(A~8l!>x}xuSZL@fr&$vO zurZ@(^4=r#-XGuTS_kKYIdw)3U*<6RsFg+J1`*te@tEV2{mBgJY%(iIutQ>_2SG!Lo! zxbmBkbz8~C!7fi)6qpGj=Bt^`MZg{sj2{YRHr^b9viz3gf%w_%H7@&B#$(syzJOk~ z&8+K>S`n6;uDwEAM5cMDmIz++jE@=Fr2yB=2X~US=@@{{k>`aJzD{j?Mb|~!WnPqc z&f8BcELNeD?Z)%Sta5;}vaU#oGk@aPs|z%4v8HWN-O z+;uX|?BN2sT?$`H{9={=KGk^E`DAc!6mT-}M44k!-snK;} zxSK`)Sei!LTCe!cpi6>Mx*YIWY`ofiwj+aelA9RB;I8iNNay=~+y>&t9+j%?Y?DDj zLDYD=37KSj*4uN_O|l?ZM=Jb`oQju0D;MHyO6~GePkb~k0<3k@b6#LL?~cOkRAZ4i zGg!rT1}yAOBr1m(M1wZMVcm-kJ(T`nSWI+ccJKT&L;sK|^TCpq$7sXKDe*?N z(&PYPyC+i7pejQnuUzZ5E9Ws({OOlO_BAym-2eZf&U8O(S{U}N!fP~6CZ!iH$_k!yjlcsDJ5RPHt z@aI1mJ2>3sO$(E$mJ+)mw1A1vazWc{m5 zi(0IOT8=tUZ902Km$NSre6h68A+%k|k^6AYQaDJ-tKOim; zyev2PdOu3a9(V2go51WAsHb74nI|t$%+3Fia?5qD^@nJ!a!}$7fRIn+pBU&b$oa4n zh6lMw*>UlOHm!l5^Xbo^@WPF$D7qHFTv0^aceHCKUJ&R6sWDE+fh8_Nv=Ax(oTtr! z%QhzPI`w?xiUfDgq=3#$`~qVQ&KlkK8W{Xe81yu?GXs&%GE!B`@@s=cm9z>Z8j~SUKcYU%%1_&MZNm&8 zgc8c&A)6q#GXT$WT2y$5$QCpFGE+_?$hDLnnUfYKcq*8+cx2NzigJJg53BaHdXp+*oxdY)cdgLt3pWehb>Y^;1-=5P>lcdhf^% zqWYK-&0S+qN%C23-|8UOof^~t&vMH!Sud&Ee|ktuRGkJDg8sK^Yi&oq z=Jf7iJj+Ok917?ajJ+~$zkqB|SsUvZNgMyZWrbfyzMKH90#`_7h@qo34@1OiBvY-H zN#IDlekH4@iO4vXBp$)=AhKG*>pT&N);B}X;5-KrMJEqB61o~?TY=4&D`@59k107G zFcTFg+LH@6oFsk)!6>$4p^mOLcUuk%d&!eoDq;hhF@Y!kE0#L|J88G){FUy}3iRdg znE7jmsHZ&r#GeKw#(Uj9OKu-zWBQ_aHz5xcfe+{7A=7cJOn6yfAn|eUGq3NKa^ZNh zHJ?xmJ*Z>b>^Yq!APFfP-rkt{^d5yR!ada*C`gsyo0@93#I?U?#O@xNU=W`70j0xS-JnUVmHl{KAcP;UE(kHoM9g1u2ARO zxzE+oLbc3NmpHXu)wC1f0^&=`GU(&U^Ex^WM1IlxdxCxdQY{&kpwClnp@i?sB~e8D z;-6?U6eohL4gSo`3>DTthbk0Ny`o?;YuL3niEe|Q+V@h1wA6Km&7a^f^<1=q#??_ zvhx=E!iGHy+DdK;XlHU7ocMa<;fca0B=(6dHYUWsYvH#w+W-4Y5$DzpK@4w1kdtAK zZ+e%6T9$X!xg+G26_&=DMAjhXv?c&^LQMV?@k!XtWBufzW%2ViZvXNTVZN!XgY}Ks z#z#x}7sh4_G~KY8s|2EM1zrLL`gib)$zs6XH)jmdVihx4A-)O;e@5L0EvJq-YYiKX z?K4S@131dGX{xMbpJwZ`F7hlc4V&eWXfHzE!UB~5!tX+3 zsnTE?3OpXMAD8ZMF8t5QK2w{R}@Z z-~Z;_3#bJV#V$)}>DHLVpELrXi?a7aDBQeWEmA9f%*rivx*Mk7rAE@Rs)r*ta~E)vWtBS0m#R43-`zJF?KDoH- zP%Bj7yj{e^5@S8Y)h{aYF*EXbNIr)b*2!iyMTR?2qD#5WHCiA19PT&iW&kAAIosKP zO(}2SCOmVhSHn^XuuXnyZ%v z=V_#7wegyh9q<=$Kat8Y{9CKfV8`xqTP{5~RDHp;0Pi+YME~@eu37Y0PN16gmsk2w z2O7FAQ@4mY5;jlF@j5E|+#~c(4T+jM@;(IYR96xv(nMk~;ikgTHDL9fTSC`7-|n(Q zo}Z!HCazMT{&vIrY2M{ z*3_txiJ~Z}Rw1^$2rJ+v!#-Lh0P}%fI2y*#1yZf)wZ=YFJ((TNfJ6(n^BxskrkJt3ChXQW4WyqBB=@BQ$uv3I`_;_Cv27P%}htR7kT%6mxv; z;g-V_gkwx=P5t&eCvw>Pch zB_BNDf$!y+;o-6eZXD3|m=)fJj63$duMSEM*Lq*aBIZJamwBEf>9*!_ObE&T30nvI z|3*FP-Ermyd9+H73qka}&J|hCn%Rb5MW`e^^RM^D$~bgq1=018>Ax$|>dof6btRh&XDETCzJEh0_A1 zZrWCpK&GaO)mbHEVao~={fgOPm2V*0DIX(3!Xv5+r!vF}LGe~GlS&yFlTe=GWGvSG zY+_LEiRMsOPd5Lq`#aR}Pq4Nj z(ZYf*1~(c`BsKZiA0IV^I6%}A-yzEkpOEG8fFN;8cPQzB-(4(#%e9zr_NkO(8_xt`?C?6XbVdhxG z0^hikf4ewX)aRI-6w#FGS0;{ofQlx&qj9>tZ7g3knTS->R#dDml-3YllnnTq`5qZY z*Xbzpc9fkKfo0gPn^glh8#85)?gzU&C3a!U2oKVgpHmjqH-k5vx? zu6tm9Se#IRp|wtP>~?n$E_pzCI2|M2xyTWNw3FWz~)qT1ApM8Z$JOZc;u}V1(BKkLHf;8oFVE`nIFsTUShN$X2v%X>H{7{ zIG_2&v@6A|u$)E{5)8X!Op2dpW%BNlTo!;i?VT8khip4p1202rJox<8*}9!wkp%km zUd_-5Ajnfoi&{Z|Vapqe3F6R%Kk!`x2j0bFBhF_1>PK&OCD)H}0%EUoAMe?WU?MnL z()~($i24cQXA*%5iSe-9gS1%kqlpJ$T{4 z;!T+}f|#>R!_^%Cq|EN<2Q^%%8h&c=HB=w#(Y_zrX}|mYE7{BK5s4GkWb|ib;FT5tc6n-Mm2#i6K!() z^?I}OBrrdV44uX+Div@mJX9c50q__gWB8hM&IV46Wy3!N1q(_Q9X_aHTlPM|)QH5Q zo`HK^mOG)~*CYZ?VWZdN)6lKH?fpqCD=O2$g5PrUfh$#Z86th|a0C2S`_c*)G7YgY zq&&FHDFbY4Z}v>mF+>2f$WC5b(pSe3TGO)?x8O{0Vq%-A(yp`uSd=eO0nVXzA$1$S ze*brZbUY#~7 z$Rqd0<$4U-Dc?l_5?u-RN92FrU|T&8n^n(Y0w>yIR5tboAi<3C^3llI(n z*KLG3k^cHfjIhpv6JmXUdY0&>8!s4%K%LM{k|q5;)EB-ikVkZHo*BXv2sK(?1LoB`?XpW&{^Dp zv^P0s%nsuD{(kjqUCK-uG1mUuuXu8*_fYH3CMS+?5OQw3nr&?00O5kE4pCWB+6zBr zpd*K=0J%+a-s`X|k?{snU^qzy z88qNCZMsdMxai32eo*{?c=oJ+5K9j4cVOkh>Iu&E=K`3@tdYt8a&(wc_LFV(-LzU! z45@GpO0Fso`Oj0ADMdt87{zdi7FhI2KfO)?G-e&CUs3C|Infcudy6bSFnC&wDQK=l zq~g87`A@mb#^$dWqwlx-Y;yioYl!7fkFAKfmjrj%K(q1~Q5CW}R4UI|siiC^0IM9~ z^@T`D9T#9Si_63KT87+M(1;I`&C4xhWe#+`=>89MM#WLIO!$jT5j^$Bb%TC9@)zQX zY>NGhidV-JMwmmt({Y_Fs`nrE2-ln2%+zb!&rq;0p}SM4ni1Zp&W;n!tP~e1Z9=m5 zwoO#N0FMZz25J&Lsr2Ck6SJ_A(d9VDO7Wzj>SL2?Z|;#H5g@ zQ9NtkpqGfW&PSSYIP=Eb00$|RhHm0#B&J=#{LCzFexXRO7chzi+)KlZ%WHy=&@W|VIi=~+Ivlk)l5Ft)2m3s%c z=T3;`^)UZzi zR7&qlFJ>bOI=Zah{)E=DZf?h``UX;D3bTW29=;!;?LZMMfG7fPcKWdG%K2=9qI8-b zO9mHpiBd%A3^;^H5YZ6#(u#GSnDSeliUYr{aMpen?c9!BRM8hC)Q}F@I1g(nS8LAK zY`SMV{~ZXEAN1BbNk(c24U*_#;6{X5iEkkWB1JN0k_P!oabidZ9H&R614P zr1nB?lDz)yCGkxF&Ju1CVDtvbkPiuJh+RrC2%ACcK&@{_3)yC67NP_y;jKUM{JtWO ziK6hr^Qs6|qU0!(-x^fJbf!DR#U7c=8}n@ST8wn7v9~tQAVXESOpmNkt-*g}qj9kT zB^P8W`p}wFQXwl4NT(kH&k!RW?EE$fX`sCYkVQ=gS2=${RvX{h<)7HmvuuuajsiGT`rAjCIiX0{Xc!rjk?hQ<*t5%BZ~;&`h)IjZNI)B=CI=9RYY zp7iOVj4Q6uJmPcH5M$o4kiGiaT~y(*R{!guGhAPe7`4tH2n0)o>eSX+%@K#Sn_7Lx7-)?m&9dz*>t}`m0ALxQyivjiT)S zs3RayHr-92om)hlGL!9GweYs{KJEWaml^HS=J6l)(qN`NAy%v*eH7tp#e`FbA8R5 zM`n`{-cvEEe44THLhpQ_SU_&1s*D7s6+L3=(z&$ADz&fA0pHoR;f>~@H8^=H#?P~{ z^rS?tX4EKe2@q^7yeDF<^KTu&_=^RL2GWw93N$%=UR=8*1NgOit^({)BV~iJu30Ke zx|iFn?J$~{(EVSeWdh;(3$#bLTX79CYyiq4QIXP02xK}^a&&Z-K&$F%Sq0xv4cyhc z`**ivvWzA@R0MG2s9a3+1?JGE0!wK>5~dq&#QYZ*mv+nR*SrjfLBCDO)Eqb(vzr7` zSF_+`L-gNGeJS#9@P5x@woxTB=|9FmFiG)TxDxNb`QbFZ%12-E^Gl?jz%;{+0k?vO z(-DEeC|+c|Ih?n`@l6+DFR`;hc>8pp{TpqU&?Yk}>=UTa+o*i?5X-wv;6%8FX$Ur>#-y%q7(6Vw5H&Euy_5W5uK{Pc;F zc>>bgt9(ps&p$TNzdvF-KT-pWq}3B?HxibXHh#CqQpe{#zaGB8Vu%7uxuv5Fa|g<4 zZ?>O8O4J-Z^KMS1!POiUM;;X{?I`ThayhqI?L1uJ7@Kj;;W!F1j>!asJ=!l>y?=#E zuj?6PA?qKu6XMYZe?t2tdup->Ayi9s$fu}?>*J~(2o9qp(2Vc33@VU@-zsr`e4g=d zC&{EYpojPcvTe>B+*}r26)^{-9as1k+YH==eJi%hmg5ors8|rR=kf>p?)!4LnO}la zY%AON-Mjp0%x0NQUgOnZqKrnaCaF0o^F#PUF9JIt3iVb`#uS#el?azU3eGE@J&zUy zw)?RW3Hi2`3Xa6`^|$DYDa=?THwIP0BGX7_x4*Ld>b}%n`g&l@@z6rM`%M=Uk}%$J z(D*K@4{X4}*H(?r_EbMAI41-iKPf zaLBps@Mjd6D;LtRFU`>4XV_=#;(snB1^f4zu3SG-s~ae`sbiz4E+HcBrVHjr09)H} zV@W7UhN$U&yy0ITX{E%;p2;NQg<9OEc9f0@jMPXN0YLKO4Lj)U4MX1)kSNXDSB&OH zNU5cNAmGkOGiNAYXv=ls?NL(V3?4nR-g?C(DgeT+DrNW5dG3!Rz_(Fp-+)+W)$Y*( zokj64yP%cC!4mKQ^0{5pOutyQR=nYT{$T(r0B=DHrH=xz%552(Nsj*dQCMYUvtXlS zf-1E71dsHZUP|;j4mtb4OON3XgrcCYtT1;KNVI^{d7c{hP|QzPn!srL=v-~A_{doe zHkeC!VaeT)T8-PO-bi?X7SxGED{b|i)ls_w70NqU)W?#R@HZ@Ix)yCPYw2`uXc0(0 zcRxU%Rk_OZJxIBUSD922+kz|zegYFkfscj}LC8$cRG~C->!)Uak+pnmMAOx2lvpRJ z6SJ3UKyiRD{xPh+7A0B`v`K2POQDS$CK8oE(>Cdz z=hgnHfiq1<>mHtJ7oUW3kB58&$kKxjGkq+ejs5ZU%^vd3r5xN^PTA#Dh2K#RNd48Y z$uv}lkgPPvg*$3Ukm4qy;Ceh!JwF>;<@K7*8lZO)b5SNrqidKwb|Sf_Lqg!uXdp+E zfxdB6ByL+|QahQ*zjB%Pn7B6GZiH=Jb2e{3g5u;XzyOo^>`A<#9>hvdP>{8qvt|y> zmxO~IL)Qjrvd-h&aF`zjI3svKeBbqZ%NiEXcD+{=7~e2fDlx57>vE=XQI|`~El|&e z1h|o1jn^>L+~NXS3}+3->%>p3W=(tvkB5`4E8FM{JH+>vo7!2&j>&!-)7cgpnxr6a zdGKLTDC@Czv3~c!s5(yw5Jse%;5FEo871r?{1u*O;^d0$KYazGo=8@jd52juEH66T zqt1P8S8NGoO(^cOebfVk#&Im^!LX6np|6e$Nn1C-8&AtKcW9rLc8_W%SZ)}X!MzKI+j&9G_QfM+1?+!dTWQ=M{Cj=XmJ7^hipG?suS&1c-qusV|w3G2m z&uwPDn3;sE!r| zB0i0Dd!!>>BaTn$UKh^8^U|L#u}JsLM>BEdRO&<(%7{MA%_mJ({LB5?|}v77ASlP+F|cqFfqigg*9$D?amCXo(iVRWaiI?=RqBl zr)`#})l1^lHH2v_$L;{5JtA;O4;5;J26Fme2TkrwVJ}xc>ZNhws(n8z%X=T#UuA4v zNNOo0c_q`?J#=INFk39$v!BLnA0?^-EKw;fNT18G7u&=cj#r4nqu~y88_VYYl#T2TZP^vN@FXyYu=->W?8stJnN%PY8aqUVFHhH z!C_8#Syw0g<4 z{tUhTa5*B3|Rq1@yKX^}%FLnQR~6S6$R(D&^3^QQoa5*t9|qK51s55!(j5 z0obfe8ryP}YySl_A(MCzw+96`tlXJ}SwYO)oj8Xj|6Yk3XezYHO6*s;RW`ArbjE(9 z$!>%Uz;(j*j{Pz`gSpUCE4)a#eG5u(3-+*UYkvrz)<^rtX?z2k9AHF}E{6p^Toyta z6?pm(EDg3uE_1}^0K=%wJdGbmPjtaO6cFe(f(kVcZ^5fQGf>eNP^6eWmIeoz2jXqg z+bfNN&lN|3vWc+_#%Q&8x_bBjO;PcUZ&Wv^(!QPJ2k~Y@(+TSY9j1|eNU5_6D`!Q@ z3m|qiA@bDq{@lYF_ue8h6~Ql8$pX$*r@Xn`?`tyu*uHh*F6v30mgm*AmNI7-7${lM z!(~e+aF>?-hFx;B$4T@870(}3@ls9T#Au^ogSq?AGRLoC3pHF#0iJwZ>T)EDyuYc< zaeZ@BXB9(NsXlsde4scbgAA(;%)-mwEaz}wA8N_bN;QIOoUSzamW&}>6(rfn8KT`{W`2nKd2x|Yb#SPAb+bJ(z zSFx5|XGVLjU|(M)qZFMvl@q{sr|ViZg2*L4v2a&wkb>7WZOhd!47<*JNJJ8iyOxGG zrps=0KJ7?~Ti!y_-vhU{1YOekwL0 zeb+~&e!)yGH?C?pH+L+lq1Lp%E(Z{`sBJ(-b)T&LsQM%2Iv|g2EY-U5pQ=HJ|;|q+}it zL9IOz$eQA{UiZ56a;)ocD_9d%t@M?Pae{h4Kz>r$hQMn9_#6%3{F0@%l;x9@Of!Tf zV3aMe9I{@|tN_qOE0@x2XUziLx$e(EnRX>m7oXs_hz#CK|2&5oVGghxVr_0aiRw`) zz~1wP?_IbBK}j@cWBZU%fE1GBn0X@W)$H~cGAkQfWk%ib9U5peFbxK)!C5;OR&c5j zZ+V<6xMghB^9{cz054wm*wL<+CFzYgvjP4IBy7APLXIGUZr7B`5v#&SYc=A;hXrNy z6IeQK=@gUHuX*`Ig-2d^RrRYB-hF1$pHjp6sGYsYp+T*49xbj6i#8>t+V*dNJ5Zt{ zT+-_)B78N!&2M5Q{vf?5<#IeLW><9L?al_zevu3qJI&x|NSp zA>7kD-PIP1Nob=3bE+SOefOVQXo6*0OZbfg6!?R9+RH&X{jJ^0mFQSkmA6wU55@=Y zzrCk5DT8U0U20VVHBf6arKqz8#w^j|csq6|rHaUwOfIGt*-;Y6p5S}!Zj1K-AbbO5 zUWi8kAHHEdmdOr)&T+k=g&zzHXc6V+{{!?YYa<9+xmlWUj4j4^cH}of1k?KaOV!MpNl>GWTahGr$BPa|F7RV_ItSi*b+-vB~zRTdC5`9 z&CapiPEr2uy3s&MvGq{LZ0L@F>61I%ba_dkRZJTW<2ex+&u#IE0YBlXd+)mWEi7vl zvu>}lj(pw~)do`5BWV*28x>|!l?gV5`Ph*XjD)oN^$@WRDXV)E09wywYX-Q|4=Ww8 zP!cNkWJgW3SBgl^q+pYH$shIRlMDQ-SkxJD>*>OWN)qd^# z??9F2;j_lQP>ieo?z9M%={nl`xbN)#QJ_)r8hB07@Xef$;jAaL^&hoPigv zC&cS@2f}+G6Bh9#(`iszWm9de0I}fX-UW+0QcO|!+F2b$D89=DIE?X9*SlXllFIg{ zV_8|ugaGG~S^{0J4?mt8obHLF1I*iRBmlk->2c5n?$RJfs0p~dq|6v9BBmdzrhXN? z(4ht2r<0y|5vQ{U zn0relAN*ZmW32k)uB;a?cmA4tNE`9Ji_-y%CIQ;DI`x45*`5R5Z^$WILi#@>}k(mJiqf~pDC4^lt56(Qrgua>CpE2o?S_q|Fw%pPb#Uh34gl~rv2qtjX#3PIi%*EBv)~CrTz$3_2nd_s9I?x{qna z=PXZZ!}k=?og+QUa9uRrWbp{??<+%FCev2$Rtw%zxSY}{Eg=Twx1FMK25;e8-kU5) z*U9gy>|zWpBQ<<|UAQ@)VU>@E4!d(^wq_K2VU`ePxUcX4JwU?0>fSrNq;be%;XXOe zvxJGNK$IG5_lq2naA0l_Q)%EN0&n@or zsJggl4sIC|foMs7hCe#ZIGEh-%7}eOOfN)>opI`#0ZgemNn*4yD6GGZ&1bKT)a~(+ zQF%((yMsuVxlb4;-f|(S)*9)5D99_wk6gdGW7Cq>6JA>LDTGN{%G&ZB$LvloI^vQ% z%jAeLio))>oAe~R_AE=}?9>Qyei#tVw)I?1n+OCfor@Ky71tkvcz(h}h`**?MkL`W za56rfD-l+~dqntE387d8RPIQB(NhEkgTpfAqkkLllk!y@^0_mt8>k)k z5N8Ow;hzK~F41KOKw)Q*2^`9rmHSSen5xN=z%VT>$ zV)RrDXi4(N6w6YnLdzZIJ z9h}&(Wf`V)(-g%wPB6*}WBb&8HzlhES7M+c(~&G32?x5dG3zPQgmpC>LR41IQO^*Vj}8FnMmHzyP%?|@z7rt8 zrl`|pJEqC~Z?C{1)6@h|=4>rRTL+g5?3W`+pGdg zT59cu6zI#l5;nlakCKg%y7T4~&@-cox4|%UfX%2=9XA*jk)WSegu{)&=pIit*RFUS zkxmzYrW)GlcN>0ahgSlKp}9)aF`zYBXhc_SX<98AV4YwJ?9CaSO-%QtI-riryN5Cz zv*~;Z%=iEA)f@&R1AfVBEDS4&@uIG8Oj@MUR~<9#uKB#pkmPcLB-OOSFV&@S28-9t z$712*0x?0YMBLjRu0E%)%DOJejgWgJvayN_oiz+gw#8>PS83>>5#pbqxWAt*)+H1O zU;o*m4kCK5iy|5c#+W@yi8%ZT$%Ad#nakfb@Mjx94y_b@N&-N0NlHrbU>pm~LV6my zJgHLivYi3tz$)Z7fVYV_ZzT3=Knf4|&UGEmISHbdHUlo7lDOwomSbG&jtOa}pi~8c zv`~M^j;LUwW7MorN=OM{pR=Z#aILZe7tDpd(g-mzSsP$5M=kX6f&+|(4)LrIS`OZ& z5k>f02BnB##Me8c;zCL$ClUJynN9pr@H!}=OEH`ER!j8?wfLo&j987YIJ4X|c*H<}Bg)u(w5j?($-M>L#^4%Psyk}u6OGJs{HhFJ4 zpB4%FUJc|;O#t&}JD+EasiAhxA^w4*7E9*te|f9zOFYY+Vs#6)_E%|=f+D*L09(|X z2A|rHye^_ejl$qO!T|I(@e*E{Qy}}y#)|c-g{GQQYXKj*#&45EnlOm@vF;5LG;Y+F7Ut53>r9dH#;ON<{kt>mJpSkw<4j zJD4zgd-&xu=oT7CfC{r_XOHV!8k8=%>A8Zpf?CG`+$S35MI&&AG5c8M zH(dhCqH>&5x@4!jSSvgATNj#~bC-2N%V$4}PH{lGN4f8jz&{N-V`a+k3Gf;=dq{&f zinQcf(HrG1$`d`uG>%%@n&I`YnZ%R#V~u2kN%|FTdj(aAu?ql^SyW8uwaNC>TIgCExr7@xQ{hcZv>?$C4>nxhKFJ?Zn zRhX&ykG6_l2cp?uXRCS+x-{Uo`CghVFSTe$3Lu&hYn1o9YWj^->5^vDA?e=|iEERV zn4iBhoX1-{ijN9&Z}@gOy8aB}FdE+C+)M_LqRA)uSNyZ|CUd+C<*9x4%&1cxoqb6c zM5?iY+xdehfEc_O+HIsF54g*2hnyFK&h;Jv6R=a#Qakg;bcBJ=0|SLbIL+a6sm;?4 z-b-g}Kw*cuP*)alREfHz>a+2(N`SK&`_N^(Pq|)8c+eE8Bu3VlUl5nQW~_W1r~0dnosqmjUV5A|}FDZH( z9_4#A<-``ipieq*#I+ZpY;cp68H-CGp=q;3PWFl~*j4fHY(5`ij;!%V-gqT;PDI4T zc0U^h%`Fr5Vw>QogF8F@pwp9C;yvU0QPI_GUng3caa|@f+k8psg?i`z(IfrKM2oj- zQ2nWwEGQ0_DWERMmy|>r-HhoX$PEKxo(#lnmjo3EBDMT!z-wvm-!aaYM#wH(&;JCf zQE-K)$smu2W@Z?rGrkJOfiumRIM5ePAt%}}Hqw?VqsS>37|IGUo8As)Ttjvo z#>M+X4(z2M!LlS(W1w&hTJcs~hxOxO@Q|5eO!<}9StL`|-IPr$&{aMN^d!P?E!cm2ODHVC zV))-TB2eQuh3fO0pCP~i@qO~DxOe^B5_5V6INf$NfQKbgCgC5zf0ket4My9df0-P+ zIPE-?gxTM=^3`Z9=gawB$t)!OJF@@Mmv3U1k&6 zPnUr)*-=~AaoY%%(BKL%&N93-JbJ?x#I=EGW~pN$mTIg!D(}1uq2*Cp13DvjSWW*Z zY|F<;yt{*v-N~ssYV@%rwTPeCZ`=8acv7jDFsZ@(6}nl{>lc$N)$tSweDx-aJj#mt z()6AeL(_Lh)h#d$ENwL8#eb`BA6b&6+!*B2wdj74cFe6KJGX5dzk zz8Kz_&x`FWadAdu?>dp_!-dkqrI&xNZa?P25MxRl>3hemn}wMIixu=H8dXY)zhj9e zb8nUbfF*j>+m`#7xSR?JlOF^E2|)z>ii-6kyszTXm*oqFUMNHGsK~nV(}ieQ6x&(` zAq$)Wc=w{D@HmFz_;&#x`lZVwv@1Is>JH3WFZB^K!{~ynV^F?CRO>qoJH{o^AyRh| zY#S5n{IMi+86p#*jfzt2%8fh2Z2?)cm0t4QdbibX9d*xcV^qja1?&ePC$Nb(1X-X# z3A=rXJuViUVG}Ei@*;boU}xY!e=b&N>k%bY|A13+4uo@)uiT zAEj=V$h>vD5!+T_SI{k<6;xEGNx*J8Zvf^g$_{|gYfN3h1Xp!a@;I|44@1B=&%Y1* zSZ=$biY;u(+j1hx{V&q~PQyKC$#gAO;OGM)tNuS&r|7HhwSX^jp9?6ubkr&+*|8eM z09}^_3NeRULMmwX3~`aC3^s=k+p7BApWS^-x1-xR4Ns@wLC>2R-DPrYj2NE8oA|B~ z=B5f804^x8rhh&@=?6Ds5bK%h+udmOc?j#MZPIxM4qTf?77U5th@^6k9Y%1e-Nr}7_70$<@ z+3{en_L_2J9>5$hBvEY3*i3c^X$uvEU323PJOaYr2*Fe)CHtlfEiaftiN z2_7i7@%1H4CeIcdB{~f;nq3WyA<+h5kWyA4NEi%FQRw^FUXba?*y;3LIG+hbp8@&> zk_<#=#GiR`lZnGHX$S(YagDYJ;Z|{7e-fW*3FqfUCI|e*X%Vd|iD?=V8?ala9AidC zX;|C8AbWw^_+TOiryYLY0{r+AVPFX*#kSrF>E!yOg4 zWRWQ|Dzb0{bvo|A=?{e`0_J5EKn%J-0F+i@OV}SkQ!j2N=c^#47b2XANM-D5St8cj zjVR$QmV$dI@e9vc&({ZS<}yKK)}8L~NG%ihPRO<3QgoFUp^da2do_>^|80g^Ic^n0 zuKDehx|5*E2cn06pHRD+@zO>oY&a_Tx1iV7PJKq z?zH^0YCZ7_ho9!0r7LlCt{&Q!OoRjAc z*Do{?==X&a^Xr1u>0^Ts2eA-BPh#Kj!{zA z{6k%|cdEWrZfnj{KMYL?+U0+=*}kYr6ahtu%F;bhhaUK4u)xf7;NIC#vnyOXN+_() zeXfe3DJDuG1Y5F}x&JIT_Qa&V4C+VLQ2z7Dlw?XldDNy+cI=5mEY*^z+IU^!=HL>r zt&HG|uW|`WShH=K^9V?|++Xly*tjCWl?MQ)>DOdosyRSOoYGuBnma!-v5=EIh9q5A zS1Fl(z_cN880C~xef#CXxS-i?Cfg*^W2BBR$(=MheV^St)kCkiJpUHOD+zUQWk#l` zGtR#|)36N>akP#Y!vCHwylh3ZKk(Kjo7cgZSY-PY9Nj^gXUWViFJpA==CiNgUq|KL zBC<2btjTv58`-mE8BGNm?B^?)Nt~jf?(8!oq)_UyelJRlS|ge~WueXFO48lOM{ee* zbH!ir1p;xM-mqI%vu^cj2L=Ag4pMKvIHJBrY2+Q;=S|fn7kz^Sjl^95ulir8mb-nJh-TaSt7sw#XXwGTq2o${!i4CiZW(2$$LE_@gE2zY-}-^zi7cjU9mDKD?T$takDk zC5FBBF}})lc}ZG46U~|w`uvlK+!}$v!-)IM0~-PY{n~6^t7O0)Y>-i4=_^Z zhnE{d=E988z^kgSRq|zH$R9<-Au`{Y3+7RtQ%BQLF##qsd7O+eWQVO*Qt+(@6vswh z!5D$o8O>iwPKco-#~etH4e+vlt3wjcen#RVi$S?8p=7k0On@G(ALr%@~lc=KZ0OcIx-quP%}bQ|9xP}(<8@tExW=_7H#+H z>c4HH0)hO`lW48|bf!c}j0p6Hg8@+LdIy7Ed@#5op#EVI38X;PQvLBC2{b7shmg!t zuo#B)h4V@=nE7$OqN4L<=GNK1;%KOiN`xj~==sW#f^;pNj-Zh94tsuMR_({}Z9kiB z#an@8eu$Uz0nbzB5XdZ5T~wQ-J@cp_PlfNCA3OZ@lkQAW@y#JLXLG$3X85{%sA*pi zrFlLL8kjpV$Bz-9pkPThcNT@{TMis-NxFRI|F@0#CClm)M0ep)xz6BqC-|Sin;tXf za!9XWmfpAM@K&2>x)1meIXRnpHJ{Faqv8`>HbBjsClY!vRVbu+vru5mjmG3n*mN|> z7x!bNFiJ16o{IE#&LPh7jIYuBUnI0_DX#NtrP;HCbHo+%9DKLv&kK&%+qAfrvy!a| zz~1tfI!hH#7#9JEUPxKGXq+*r}T+YWkrC7VU1YjtI}D`LKiF0jLhQs zn)V3fL#NCEhIf_2i?9X)yvQ-5P(Zqda|IGfW&LuAD@t)xvJJAol-s(PLQrq*V8g#2 z4IX)2Qbm;Xye)I=CNzNa)itcI7Tu`uQ}5#J(&grkj194qAF3lJ`k%_UWU-TTLX2$5 zg;k+r1$<)x^yr(mt6}5AUd(Hrw&g>==HPJXp-&Kh_TF3hq5&5akp~YexIpa4@?xCp z2^c$OrYRs{Op6>)ANu*IANFhnoRw#63Ts+ ziLNL}W9l;4rK$L6cOnyXho%FwT1+|hw6micCc19>Id`~cquE%%SidR1iCub+>O#Q! zxPM6{G<%eh!Szny*9n`KGJa25gA`X2ZN&fG!EN;LSO?PYR6i zX)uT4NZp~q)UWk7@Yt)7Vr1E%4xcOe0XV`#kg&ib z1FXz>y1B7q^?IsTa&daI>7zI#XP>a?YyI5}uc?>{Bw~nY`fGRW53R?8Pj4*x%rJr^ zAXLP*|Et9e2@Lqjh_{8Mu{p_S*-$JSOuGO-T@Q;Q8DQx~&wIMxNGFVxdo#8Y*M^hF$=O(k5#?Yp8%f;Ce0C!*cTHwDuz zWR1bV8kCa$J50>(3cDR=9oIX4_c6uJz}=cb#P=)s|Fox4SZfxppQ2(4QE+4_A@Gb~ zmTJgAbxeo-_LJE(h!a+l7y`RC>Lh2#|7^0{-%VwoGBlx`Oz$7BobfC}#vPLd%z1i@900+L>Pf&X)*DvPNQvXeBymz^F-eWC?5 zJgwyouPDIaz|zFP=8mGA(HT7`_&F$qkvIDOtecw^AuwRCb3)rQe(83Fb4wRYWF(Z&I!BtXzA+6~XJ-k@u z+%Xy`C6nif?`YJNU1F&(G?cioPF8)pVI(WQU|M6WUuMq5cPNIPAU20n%A6~ob- zu-vQXo+Oq_u+L$yQD!j~!G^bQQcM`J+Jxh+x9OD?BHQOX?EZyt{EcTUx25nyxaTlN zKE>r@+u|1AXTbf>7Ar)+fk@9XDoW7lUdkCukOycW^v zED(1mQaW$fgjSp+ubufF=|Olur*wO&9BEVJk1z1618Qa2BeOynY378Jb)KTM)>Z|f zN4#|chV;1ovoNlhRaYV1?0#o7|D`BNJnIV#qdw=0(H^qr?5cUEA=Nk63>9X5X)G+^EO{%J@jYY=*bxZ1kF# z3?G~NW_Up%D;Hxv(ESqu5fBb%Qqoq|`UBiz<(N%>G45r7x~lS0*3T&~Y)3Pwd(dPV zoI0tfbaEqTS{Ni*zZP`FX@5M6ES(kSMHi?2y(bQD*)Y6_I_0a|%Ctm)huxWg?aMHP zLXJo^d7J386*lFKMuTV#wXP72JPVm{_?jDDtW3ZNE9Dm` zoEX%t;{~IG^+A#~0^c*nQ&>0qQ2Un*pF&{nvI4!@K=#6utU&Z>2E4q@^6ceW43zzp zOTlijJTY+TeeVucO;JP8k&jhinnc6ike&~ZIzl^S0T*hHUSu{FMDi`6{YGKLde7!h znt|WdvxZP_jO-T*#RM4fIkf{v=uV#fF zz9@{tk@I!hOVx;#FU&d;rgH6q%PZWl*A7#>(=ybw=VojX33}xA#9j=4BxF`<6lyvZ zwzaDWZPrOtkP%d&J_vZ&8s3B z)e-a~Jj{O%&ZB^U1y^4_K?#k#uP%pTt;W#v?Ho~s)R3WuPRx08cF4SJQq`zST|moK zYb`TWwL@7ErYx_8EPvhgL0VSIR zm5wj6_S+xfqedVD7WHL^Y6JoJDp!a~|4FiMK-sZbXu4NInA{yLK(>QRV7(6tciDJQG!{u9N~M!MDyC#;K{#1`cX31{E`JxUEqy|RGrD%13EUN zE~_!NBe|$3u%z(Cb!4koiGVRYdytbxdf?c|RXc ze9O9_}c;&kpx}AMT|Z1FG;PZitKb45>-;pP0*sRYm$o zInayBsWa z*;4dtH$RCrPdPtnK*k!TG)|?NxTIlBYoLk-(?wglNi}U{y) zo!IblPcRfz3Xi+4uj1&!CE!&U{2GTx3sn$YVfs+SY~?Mrm;WY=0M~87^ixA z7#{9vDmdxYF^*tWd*)5s+8gbzWC+#K2($;^M7s%)a{xV3nov`h+DQ92d9p(tI(D_F zblJAFtpfH5&RXsOgB_>Nn=aDZg-&J!JHH{;XRQY%r<3;HYZ2+?Oz_@7TM!#s_#@V!g=B z${@Egg)ZZ)8DUl6Osy-J(_d~`usjWi{$w*`P>mB79ZqGLRS(iRFR7%xoR;xxx2)GK3b^z1apqPppyIS!HR1)Rw=-4puhGMk^i%*Kwt9hC(w{X zi54t&sfDpfnIVuL?az*0r574%@sYZU&L)2ebi`T;6m!nKpRH`>2pswMW1c$YP9xb`nF3-v9C1}7-DOBa$@Kuc zq4)aSA%*yE*!;0Ei8B@wJ2C39U0dqbX;$-9=Zb{q{6UWr+n*<$@{8tb>M`lH<$*Tm!X z!813ITqFEfFrp4F#PXj&jtUj3QLNeSJP)zVa=mz#S4fyB6r^u}WTVdur(T*0ltC+? z-p(pkOp5zKJh@26X#x62BhWwYir7tsfK-$Mgj2qU#B7kSYM#5h(LYeROKB`KvKS3-#y}^;J&4|DgcgZ44F?v;Ja~y z=-Z1SRhRB2UK&l)pXu<9{ucbkjNH6bkPe$)N9@+jF6+}0%$S{0VfK8nhgG#l+@Dn z_>xrWY}5E%IYj4y9MN~Vn&tCVxxra}eG9tQ6X{OX{FdDom9yI(h2piV#x$xnjFKm& zAe+ZwE*+I7-X^8mgY(@CxgL3UBbKx%ztC>l)@dpt=8jmkKeC_ZRky&hPOEO}rrIVp zNMnR1N>c})%07)(XEOTtocf+4A-MwZ-(AgT?ppaRC&n=@6Bc*L~gEpYnmu z@Zw4Tt4BE$FgTs?IZvN9K6OA*U1!WR3&++!W ze+Nt40k|0^E!71sY5clAI!nFSyjXH;u$C&ch(3;-3#JXd%18tbDDd_$E-=J&AXQBe z`k(qXU4)Etjx1bhihMMWPifAQ_p-2~Lw4 z9Dv!IeDggf3~<}qGv9<*&zAca>Q?CHxpY4d5TyD3;0;y$6Z_KY8QOoMt zD^!6{i*k%zpMW>FIcT@%rt4S` zG(QGR>7Bi25QKmR%Fcj8hQIBP%8S2xGjy~>X0An88O9i0Hk#;| zVS$zI0q5LCpk0R zglT@I&B`ikhDHXacdR?)Qtmz`RAr4?>#BiM z`2tsuSlZb9#cJd?(hsaYJ30dAuH4C#jo5{e=R(Gw8^Z3E)a@@eRR&=<&ftpx@PL;gQ9Au6#QJ4~sj)N4$N+6EtabF?pM>Vd5jx%xEN z!B$;Hzt-$l`DTw5`qs|v4cev7s|Xg7 z(t-hQA$YWZ%)a$$9uHhqiii_eEj6~D|Hj<}m0jD(l^xEP0koQ}PBqAuL~WJt?usT$ zXh5#{BlLXn?SM>`B_Z$;w64m~M9R`umiH4AC`7)wL?1<6cGZNk@8dc__O$(6qM1Tc zB1ditzlh$JSfbG^YY(8s`xUQFvz-Y@f7S0wO|)d^0byhZJVj&qJf5Ty-c%^#Ty>uM zenk)-?Qxc2a29<^6b1gTer`{D(0Q+ElQM08CMiZ!{5=u|R&c0+%unT~Ue_e72XtQT z{g2_1E39GKlk3TC*}0=)d=JenizEET6#aqsDBaj|;kHlTfLs@$U^H?xoR?+zMFtH_&73$OYg24lT zwu06FVAhKv&)K?4<|?g$tTar(-N3|(NgP71DvRgHl7j)H79s@4aA-n@=$r%GTM2ro zI)DaR*YHJ8&ys$?mfLh%iPyZw^mx-sT1UQG*?SSPQ%ZbUxzd!-g&#VVuS#UGP58|R znckf@*Bm}ktLNd84ZJ@=&i1T&jxp>&4ygKUjp~I*zXXy5dl5_jUWGnwV;K~Mw>A?T zdmegou!9xe{Kct)NEYCJ*Wvdlvxq$9OyOvRzlH?XDf61mvOuW1tP%?CNF>;?!Au!x& zjaTkz2ccionGnEyR1a?}yknmHSqcY|P*;(b4-z4R_|slwpmVJvj4JiHV%q>MD$I;9b72QP=c8Vr;y zw5WAtkO{gX1^GHB-5_PjdD3)dJyW-2trPo=tK$x(VP6p{luB1|4c>qU;sU=p2V(8Z zT98YX+ZsOde^Q1%XrA$(=2O5MWccZ}cj^vPa>wwds}L0RXx7jeN_67hi;;=lPYoI9 zv2K34w2j_OF`l)KQs7{J5}`$`(S$!s-IhMb|9p=Xo-0yG&bKw=bt(*GlTC!L`au~@ zQOH@ubfiWM(UOZ6;~f@>+k1eVW|^F1qR0YxMrpB?pzT^DzV8FJRdoUX3d@XAv%bjO zuR0)>R7?;Ro2ihAbOnQJJDw5dIxBTY!l)}4^c%liazk9qntXw!7E>fQ#HccwOq{$AYCMLS@Y63HF%)3$ama0Fp+*SuTECSImnknpte6eC;$TEY=oOr$)&ESreP z=2vaM5F8l6gI9kd0*eP_nCo71V0Vgj?TLbb{(Wqm_}GO3B*1^Slo=G?Nq;NISp7ks zrV4)fudbsE`{G^LNX1ic6Iu^)aS%bsj+Ad2(-bSyOP3KJgN9BpI^HGrV%(XTQgUF# z1R@S*U{s?Zq~+=lrRwqB9ww|yFV0v5bfUp~O6i61V$6T);SPN@9DYQFXwtGGvH&Tw zR~0`5qf1~){Tj@vB*Nf7+2Z&~-+^vEUn$RZPdPj@7Qel+oW@7J5suGnH9;vHmnp&w@tLZeq?;=2_kDgoIrYk+S&xs9ma5x7P(+Dlx5xC_1!;GJ0O9DO}FMM z^p8N~F-PogZFe-sqaxVrEzad?XF0P2BKl?_fzRHlGPD2sn-4IqZ7H zo(a^e76U4^$HZ6UZzEev3^^WAfYUGT4yi^eEZjo;bL(wBo7`CGf^br=G_nG`JL*&a zU~g`$jG84U0GY-^#%=6yhHNxKk(~$J#!#F@dYB&uU(^H@Rytt?T6KgA#d5>7j`{!& zPZC0_Ja`@?m9rYlRG^!@dj_RPWy+-|&(bT~9!{?g%ZH@ObF~y+&vr6LUBJ}}GJC03 zndH!Ec2jSxol?qd4N~yymF)k`gfpW88MI+Q+=Qe^!nr4`LbF9D5qfe|V}+1VFR%XG zmCQF7`8D>B}DF_oKc+&Q|Eb|cq;dGol{!HMxh+faol%}CD>I$el6ne1px5Im-6x4mJZLu#3e4GByXf?p?XJ&c!^a@b8FE3D1vtBt5vy$o#&xbu zHcY+t*y%0eJM%u*B}~qhuTJ6Fhswt~xYgpkGFPk|JiwT5%E4o^4&46Di*3(yC8W3O8{4Yj`Vm*W*v>mXb<8+`eS1zlW@dye;iCJ%d|jIu<`{ZsVU z%MH2o+PowmVPH<^&r-GWE&T=b#=VxlL0=6mSpMb8&uMWY{^2*=0CuyVUnK0Kd0hoN zOVJgUAq8O-|G`>s%r|lg<`);8zLVZ?MxM>tOP}@#kS%dxYQ~W4X;JdL#PiPWwHw6B zdXq!mH$ZJ8#s@e8F0Pjakf_W1t`2PmU5@k&IhvhFoD%i&y9GEw&%VI=AT!+2&q2A+ zEXmSoV^At#ig21*$5W-|*97cHTO%UIWP4)9F(_2umg#SJ!?lfC{t^u6guRKdhds4P z-YlP#q%+JRx!| zA;6KIbcxt1Fkf-}FuTy@lnN_$63kd(1-4T)|HcB~2x?96cL8x+&N)XC0N6zoyBdE8 zR~63ImGt;&vZqI<`kEa*MDdKq(z->iP-rl&OcdcU)ru?@P!2o-x2_V*dOG4w2h!_- zuub&0CHW^Nb3H_;K07RXG^y;7z}MG4&*=7aqvoJxwUPM6uE)*i?RSe!i*;9W==6{s zQyo&M+~MiX%pD2BRL<>l_vhlCx8G zY=wz8MvGt4bg6o#`}hB)??<`r-8?bWeetGm2O}Ymy|B$^_mCoc?4ocCo|isvg;zc3 zoRJ`@5es-9aYli@V<5+K--97lub1fq<&ocs+bFTVBNE|UOM*#0MgEY$r5z!%UZ8;D zRBCYm*LNb0g}Q_59PS>1)OU)-`g^J?K6#8g|A(tbdB_OREngiiiQJE(IWjMwQ!oI# z6MqBg#r(k%MKg|+9ikr^sQjYUi*|ng8&jT~P%Z28^Y9N_`N^_diV3!YK%~;*DBKR{ zNK;gxP+9q}igaFFpXF!+aRNs;8a)vFnjK@JP;{MzTCR}S&)$V^&{vFdX$&+2K}&8X z?lD~m1>SI!@}}S?(p1hRy$MH{=IgCsJ08dzNuM<(wDXW$9|rTsDOBhS1LF0tbz5%i z{sNz?2nz5TJ714H@otW@p0LKr9g1KllH3Y?>CI0+~NRgq<5{9)Ib0ryo0R<;y(8+c3$ zQb*%X>ciBgAtl)xEP%pzr@3ocKa%>y6vfZ6*tjO4do5?2(s_oSR+j*dvdqJcEWeovaeQ!B@rUWPU>RM+?LL7-*>Pps>Wu=WU;jZ zag0KZZ)@NBT0!rZ1S)cHxmR`pyKZ#v_Hcs6iTvp&G?pGQ8!ll>pEJo^M)TuVR^pH_jtKUuFR-NvEdb-cBRJB};`&$=1>^Rv(ktSpuL&48{4Wc0S&7n*RF) z(n{$AKk0Av-&VASx(TqgyN`Yd*peCX!hnL`v8HIJnpW`%asJ4(rRTRxa6dVo2&9gz ze8o#AB*!d*9$o2V{eGuw3Z0mEw(55x1d-twaue@YWS@2!h6|g%$bid~68)}|!N`P) zApQBYHyx=-Ye}H4qu{+R>V3h`3*9b7)+XzL#2-UVBi%NmN|S#P#Gd>%ykj3$dW{Ey zi!)*Os8DYHS&QFIWURX=D%jwoIJ5jgI%S*H&5?~s0Pjq4#k&7c`UjU?GQ1oH5HZs- z1^~lY2tkO8?=CO{HX=M+cz(s!=t(a5T)cCjT$m;?qBl(-`5TlqD>r82<`8Or4W=PJ z&&&i6z|BSr!P$79L6S}N}FnD=4P?V^<$mLmEP!l6WCUZ*_esZ zKb@VjgRyXYw&`lFoXXQ$pbMQ6G5Bw?aAE`(WGQyXe|t_<=^AN-R^4U5WIw={7_zq5 z`=63s%%KI1Ki9di|2l;2UfDFa?TpzGWX0O@~rDAlzgX7_E{(c)?Vq?-kG-!@CKAh9(s&U zG}|v0j{5W4OSeOYx-2CRNFuojmoDQ;bS^6wJbq3P%PGEiyA1$;H3ImJn_PFIB@=Rw z+AVBJ^jGv<>F7->;ro_y$#J}x&@$j;z{RmI4j*g?A=*~8fOWVS<&|BFJda4kcYL+< zf_ELZ0T^?qPBl#Y50@IAjPt3wl<*XUM_Kxep@RFJV};&mnN&c= zQ2Bd1LQj_gYz3&RAJ_lLaqK)lS1b5nYfF`n6+!giQ)|CLJsd4OrzAE4%r8(j>#68v zv~(8EHVE;sFeMHfHv$_hW?=ki!M&*Hhw$0t6;&wDBrNX!Q*A~hAQcwIOvPvdx*lMT znLw?qOFp2kK`ngSYol3JQc6!MnGhT*2KM~_!@^BBbVGoH@{Qv2UP84~W2`+_Bd{xr zmgMF&YRZDA$aM*fGxf>^J<9y<;+HFIYkO5B$*`;GNP!)eJ2 z`wBE9r8;fhLae@Ve@fSzAh;zX=-%e|n6x4r+VzU>*;3}QtI3~Xj5BzLtgE(FYo%TF z&V}q&EM&Q`1zHPYOA)keiFKulNr>28LUH7t&P~CXHZmMKtacx}pa0wYy{;V|(am*ybay>cY{Nwj zJyTxuTzZ$ek;cf0gpR5xoOntYD?6!Lu74Qyv0!M zsIFs4mt@V{lT^kQFZ^HBgQ0Dej4)#vpmxecCWPo9<>?Qnm1bl*%PXZl^VAIXr5s8f z&#^q1JUJ_bajvlIT0oj6FAb!8VHigTl+~rY#({}fic9BTGm_(Fvikrdx!kMmS)F>TF)F<;d&q%qzN|g=#m;OvLTH!_rs;L`rZ?i%XX!&m~16aBh4?+*;NjizOX z^gDz5obFV=12wO%Gq_*Cu7`W`-_Fyrm7!hdE-w3Ju80?Abu>D#heGOi%0H3w)UetC zZ4l;**10J9I#~?bhaZgq+4=AtNAOXiUcv2IEsmBHBJ@vubj~9rFqxLOtDSum+K*Q! zse7q6iQBXO_kmj`+sS2I%XpssUFJJvg-kB-W891P(hv*^xVrNL`b4~;LWAG~E=x8+ zvd9PvmU|6^u~81}Za#rM{uX?+V1UZ!Ge@YNMn1c(Pnps;Z8SpKC;+20Dt4!~J&gp_ z!L&$8Ng!68c|{4q&HMgOHHZLCdO4?7CY^UL_c~S}%gOT|7jYc~&3r91v%cDQ)RU(1 zG@y@ubO-9`)^2(#!7E z^CP_em~128rKPgn%`{C?uBOCf|5vPZlWMTQ1^_H_PSt$%Kmz{-Bmi{3F7B-r8v#p9 zGslYVjXBOFGLLvw$LjnVT4~9aA9BqIwgh{8dnO22zNV}8fm_Os_L8UHHRbO_u+uXo z$^cD3vcEmJ`!5x;M;%@?$|do|6w>&piI$awqR9R@zKfk@r)#_ZRV-9zPLU;>jr8z| z&Keb(R{eA(SNu8ncQ;ibv&yCr&xUSVsoW5Rs%e8*F-<^EDg{tf5W48bX@L*CaS{B2F00EUAI7im) zIahb^toybRpFB_R1~Y*4G4WtI@<Lo+zI)e>La@P__Ho z85YQ{=O?*CT|I6aNCcg;n{MXx^G482GBcDb%Q)aZ+1uQxXPr8G+HnfT^-y%_79b=J zit>e|TGn|WUkIa&|Z-D2VMZH~Y$dHOV7Z+k(d z=#-)Xpr(XnP#S+*Stlr*(EhP<5pC{ad<~4k)9}0b;u)=Wm3myv)-(yfJRZmaZ;$6s zD#3DGS=l_@Mo-uI6iFI+^ec)Qye(1h;KK!ybdC(f0*MOJP3l>f?I6Rbz6`Bk5~fxp z9OLnz0jmZM6Gtx+navS*C0DWl4Bv}%6AMO3ZH9O07BE+08%Oyh zAJ0*u)t)b>Bh^4RASn0rp$!A;2R#?$!e`$cYFZw~YsDqD=)<=O%8bvd@37oy@Vp;= z4umA|Y6Gq9T5M=~pcTSKQDt}-UyLmf>Uy)?N|_dK$oylEZa1*brSI{xCf!g05A9;i zpxE!IkvR;w-bFF3<)>#sBWaqU7Rm=uoKBnwH3rO2Bb~ML~-7*4x+m7hhL_vG|XymX2C-kgV*NGz2!0<^BU_* zK#63Tc=7_gMaR^|IYbocARI4TFYyosCq|BKx|Q?_1^NIS5wzoRDC5oT2WiwXBSIjfm#{Vlx@XIqAwG?oU(2xqFmUKKf#yPgm6?e5*SP0A z8#l%G#KV=vakLjl`6RZJx^By+c!bo4OR4V!9b{XB5iLhmp1kL~q=C-VsMeBypt&;4 z(~)LbPy2IkW?;tT;*jL9Ns7e{?%-(AA`N*L!yq9e%i$T^4%xe#6X!zUFzA6U%F*(ky7Z(q9Er{ijSi7?*@U)W`h>q}hoK!CN71|6j6(CLHf)h| zIv|mQpw`)Uw?d%hceV4J;kzrWCWbqLGvhv@a--tYAL)*kInICDV>;8bE#hB@XTex-ghY26cZz)3rkEHJ2 zhh;Za5y;WfWHbNS`F~LMGObdCY|W>Q1H6MpMa*WF57w`Y8bCnO%KkN5l9TSC@!%%8%8EV6YLNggIkiqmCq84G`~$pW{rZ;PR0)V`8Jf7UC_ zr;#Gh5Li0{FMk9{#jxj30-KvS`&DWip?n_dLs=2#0!Us0i{1kRF|<(uAu-#z9FL>= z&*gjWg~wxJ+p8*GIM_oiY@Qm@`cI6T#0@*$EqlfWi+|P#qjbUChB_mIvOLl=Nx8Ip zTO_<2POVO#ZVb}*9XYchI20iRA7NX5#$V-GdGbUk+J)6<=0dE&2Qs*20Cj`RJ|AxT zv3f96vBN%DmpInn^RC%sq8Fq`4%vMjZ#pWSi-`%(ix{^>@Q_}tI8VJ-#S6?fYfspR zT~O?1fn{6vpU+w0Q;W%g95A?*6)+{jO^V5?JAa_})p>fInONvqbMGrdL{$)6sjd~z zpiVD|X5>efu{M@ABXsJ2667$Le--XB7vEr|c|kbv6(D*(CqKAsPJl`Q|j-6{;mh01Ca>qAE509#B*IQQq2=VBF>X(RInTvHOcY4;-4 zAp0z|CR9^D=At2FmDTkEl>qG#sE>nJn1`|?3jzpCD8(i2;)$fsjQ*T|ZrF;@1 zmkt*TnTLnW9m|ZI>CQg2Mksw@F6+m8Ny*^R?u6D}b9(v> zwJ`hv%a7AH;-OlMU}V5f(|F0hMSJjh9fKckV)S1}E>EqXJ^ADFx{q|*rqu_PslX+x znyj68%ZNhrFi!#&k*nP-!b^8byu`#yyb*~c<=;?D*81-T1~4Zb%2A^%VwC0Yr+1{- z+&oh)KSLOR<%4{&;+(!+Gffo^OQ>Z^0Ql+C5=Z>d2&O}9$JvyXw4@V51)Xc{DtT3C z)?~tpRN>=hNvOSkE!PRX5|^x0laNU0xq7wtT0c7ANQ$L%I&Y^nLLfC$L&*3$E zfOd-S91sLFZKrRYj>liU-M(lfIPjv=R#1m07w0aR-GNJA+Aw!zohWnN{bL1;fe;*I9XWTazOzA>^;aQnVyUZZuuj>z z{ux7zI7JO!*#-75ey}PqK@ITHu^2@@q21e6Yi5kx)~E^opf#qP(A=F z;*+PYXO6VP(iEp?yPp`2gwhcl91#jLj<3nTuDuY87V1rB~|s{C=r z`eZ98BTTf=;#RV!BF@IVV0)T02P=kbK0u~Rp~AieqKdO<`Tz+823X8}e8;u816qZj z3C|rL*(pmbNjlY+SGCEkf95Ov(hm;uGzW*to}=qgVK78GqbcYW(`{}kg5u8qqo|np z0J3U+>-}!`UIcA_|K$TgvIjT5;x7gIC70^Jt73F;5{ww3wPR*>Cl{JeG9^6 z3_!ke8B{EcFsiEn(NqyK{VT{sUQ&3L>_Xk4=HAZ->Dy1-H_)R}TzLE31AnL&1t?7V zwx4^vdq)4|@KZe)WG!ynP)ay#aoW-Vpb9hb+sbqRWFxJ3xP#7)Md2%Y69hKWw7!u? zRl8pvBnJi`k4u4l%-|el8iN&9VPR~IKa+Jncr^D~$l?tH zqV&1F6GnsMSDVa+7GlL2fV2bZ7W|UCEjt~_<(So>ahxa|#VXeG>;+i>nagdvLOm32 zZJ9yFVY!K8Tu@oQ!MJR=k){;BBdd#gjw0UDcm!^-gf;}~%j0owSSN2@%StB6Be-OR z)&r8+tnF>)vxK;AeRI>_`VC-2cdT6_&{~Vrab7#JXCNcA`18Gx=BN_R0#4GLg04L( z`4X7Lvmr$q!K4x1-T#%GalB7T$~=_9pVr(fF$fVP;%S#7|FFGLn4S6 z2)5KTmo;zUkKwW@qO!F-4O|usm&%B{nE`?8y}5)RIR5*J(=y)e+I^|A+6n5ED+#{A zgXauZD-}0~r z`hi-}3OE$KRQn@-bIRrO(4K$>vPX_x>@nmXu?VdmNm&iyMT1R+BPl@=(6wFFHihJ% z8qwr{sQ*&0xjVp-z|qWz+);Iap)$Wl@9a-!KKxhzU(qa1N)1nSiBn+CSlIgWic_`z zj~S*6FaDF3>vDt(4D{P?v)p4_QugR6-^yA`DK+~dRpxBw#Qxmtw!n^Afb{sR-Q|C) zID1RjWSWSGIF#$3By2G+Alh!6pqm**VWy$0G4XMdmqi<}T)%c~Bb%aCqYGNEWLszX z4Bd_LzsenyB$J;-2_`er)`YRh;)+>n_=zes1x&Np=O$KdlF_i*t-Ruo18^t#=bpz_ zN=Q5e)ph~X&}lVq2<{27c>2mK7i_I{mr1ch-sXr!-v)#MW?!vA*ON5H_6x?I`cZP% z#xypYC+NnuYBA~4uD_>bqjJ;(8XfF+K6_7-8uYrN?CWnapWR}6(Zp~=>b$O23>?6l{-1HKbBG2ge=U7E^$*R1Siu zzWUsSv5dV|gcRrS&~Ox`E-d2*$0hGkju*kZyQkAM47f`?D<@);4j1!8j9@rpw;{rL zX2(%xS56=*66t<$k3znIoC6VyPI-PqNp!gu;10SQqkOn@D$;SE9~PBP${EPc902kD z!SIs5=RVGus{y%_NiVyY1Wo(@(alLex7cdU52_#mh6;qJ+#Yjw)4&CLf))0puZY^_ zU>QKA*8af>m}G}GZ;SVL%88Oupn%LR5uPhbaEa;6HkY=a|Gic*8-eX$spXL}OZ+gE zl<+pf`d`UVeZfKBEbEf&moM3Cu-=fN6tZyEq92C8Q@mFvbfb$CG#=Ubmo ziW-ags5X?)cgTb6jGyO1`oVKFmWWCaeGieQW-p$>zKZP4+H~RB0kK_*@YTp5Z=Df# zD%fbCo?!?BRWJE!n9Q#pVs!6wD4*O#Ag8 zh=}ha1NCpkyZjsD?Jw*YnEsqU3@+xSjQdxL^*alE2#_KEejZb8%RT%8!Bgp_ARmPF z{bD~B*0!(Z?bG=2odvfx9^KJvhI!KSVyr15NtH%N9T$5tsGCw6_?nbr*scV+A=!$`&sN5b@1f6W-`G9KPMO1CcS;CeULdgtRIuU zW-0~}k%i-lB1fcG2Yx6>pXlO)UV%S87Gu-jLZWEw@H`)5Q*Z9nE`zVv9<>uvF%771 zQ8wR0ruA(}iq<<=Uquf!$G~zkNjBZ7EV(O-ZWu?JH|`xz$yf$F^o4a#>Du*CAdknI zJl~*82RG?Pr5ziUL8{rNnu#)ptxr50?PBBa^Q*Xf1REJ^O{m_~L#a1z?A85(31a95 zn&@0&l?A`Q#G?b7?r~ z9^VodGkUMr_e`X>;~Shi>fWiL;YckFA09ipp%uiy;5CXeTY^+w36EpUms@oyBT%@1NBC82EQ#J+DkKeYH6i^uqvX$q>6KUmJ-kCG*AH6A$GL@>_oAJDAS)@mE+3!QuPhPm6;%q0e>2V) z;AdCMBxi;?_p!o%8e}!4(I9yx6khz6;(xT^f(%cxA6_bzEqD3v%qf6LNe^GgYq|u* z2PG!CXfv&gsD+;osd;0nn9OsAT{=o=vP3N%@M1Os@l{g?flZO%%sWM?`!kj$+ z|1*?#9jslja#}`13kP7Io12{B5@oh`OB8Ea9dt*Aw-+Nb>L3!eS1m;q(!N=?7S>_d z)#NRehcEWT$3?C4O@8{1uW59~$n;+LXsIrZh*ZdsjVzyV0^I^#fR+pHoRLm z1pm_tBAz5F33gjT{R=!`@2)E%37l#hk-ddz{Epd4Zk2d0G_=WG@>`v9mSVBBQYE@T z2t!n%fLFyAri|kOPu!x}FHGF2m0XmGJCV1K;xJw5LGuoH>KZS+WkMQw(3)Hr84HzcVHHu2NTw+FWCJ2Gd@05EodZ`%^m5`Pow!T* zD~wUBhEyaCPJ9)kMFXT1P{{$isYCsD;(=I_=5U{M+Ig6*s;?XbXJ2ca=}C8JT-ShB%8Kg(5YYc`^*=5d6^}{d`#R43XEutyM`zC zV;isB#yQW;Nc{_njv%|%qCv!xx_~2RX%=c>`{kd(0GOSGjuv30HaM?k*W} z!wbH^L$hw_J>v$JXN-8}%lFM9;r8}=0*tyI+TOCoofieKD1EgVNk4|0 z#+`6&RQ*l~W2)?*q&9)h6NR|g!+2KU+;>Z2(xN!K-YIe#F^d=@R)y9lk=t@L#H1H?rd>dLHMp2fSk@MsKYq$=ixA#>vT)?|we1hlW@#BPva=T)PO@jN zg-%65kvi+M9~Ufo-ofv_6!f$QSV6?DX85cAm*H2zR@p9?nZgSD>91!Tx(t=FbKh;cl9ek6|C_Jr(nx(U?w2MPs5RDVWt72s!dws;A1-*H9F5Xv=52NMy}K)#$(Nx zQh)w;v>3SAOI>c86E}~)rxiQv#p@+dnM;=t_9t$HYssiQt&3Ect~f;(R-V<}3Slwy z2zd0Jyp9jwj9)7DjPF)Q_1Ro%7CskG>z8t)Qip9zpQ@Tf23$+3QZ@=hd5; z-zxk@4sZ|=N$TG!8Db8!!SrO^R{s_F7)N)={_gjR+!5rAmDB(IGPRq4|Ig-9AK z>tWjx2cjTEB$ByX;h zR4L-Kj++ID;;VMjtr2|VwRQp~kmX$Yftoy%NZn}xomJ2M95K}He>Mlj?2kLQq4^jX z5|7z3sD7U`qC`A1vKWr5zvD_e5O2E`Kb%OSwA*j8oR+&w;uGBP!6;K7vne?-WTi3& z$o21Bo2ycQFv1Oz5&}q{bJ66W?U!L@Yt3n3!Anc7k8C+oY=qRcOAiS*mULRHbh|_8 zd5g3Md}2%F()CRBY0zk7YC#R{i3SiRYqZFIE+&2A`d6!Monas}ndTi4*%ppvc}QA8 zdW9=haY(s3(jdT3l$hAHW6?exnS$36 z21_P7i$2%gvyDmtZ^0MX8yd7f{_7n}S@68wqbNfc$w1l(1w@spzJj!J) zv1z*paB_iG)yTdYmd>k`An&>J+6faDGj3p*EDhuFRkqPgy#i{hzze*<0O#-?>7% zCWV+itGc+`-^B5I0k}&!J%^w$MQIxvB3dK<^*QX3RPNjG1CW4 zxbZuT+|WfM6RDok+CJRg7vgP@vOXeiAp^Z6adjCBO(I`W-V(=KVIRx9D6_}>d*0L- zF|oayCjTZ3%2i9R_qb#JiGznu*FZg+IF+Tzg6tgqgp$JT{?}W*<*SIGfL62kY~GT6SV@n-b+02&_Jn_g-gQNwB~j!`p>>O14; z)Nwy|FY=X-x%l))oI7#c55J;dcYWG7+p^8zbM;N#@3Wo*hMM9r=ITAJ8 zSCYy!lex1%u}{4C0|FTy zdz;?Bwa3@Ap74rgi)!sV)2fOxK_h*>dc{2yx88j}lsp=VqT8Vq%Fub7`Ui(n0ajHlWImr; z@SvjAoi0KK#P-l;o_pEmX^(x+^Lxpb61N@19XFR%c0`tG4447@U;HgJ;_8sMNKxY;hH zRZKQ#yFra`?=`Yw^av7;)%qRrI~sVBsf@k6zJoG&!&_RT(q%rElJ+1esB&hoB$F%O zGqFr|bW~Hw@(2(CJpUjM#?>tpeNO-ekdW~`>n8$t)eC!BCZoyZxfMUtZKOO5dSh|z z$^cV;udvvR-jA*TzmZ85eyWIl_Pr5lqrLBVbMV_HNdL&+{ZB@5i=18eELeg%!3ww{ zHV`s+)(@&u)NvKqBoh89b|z;lJ)1}DGR`R^{bD(4t!;(uss~aQn8rSfkft zQ5K%7ZtM2pbTKKZt+j?)PxT0f?*Ay&kZ3+4q=UBwDtua}2wsh-`88K2OKoR1SLc!9!*gh9+DDh6NTdK>!p?dyX!2!54MsFDCPiP=q z5^5+)Q8=g!TIoDX1uBSheIRndJOy26HmATa%V`3JWIEzA%0DfNHN!;zS?pfgh!&+| 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%0D{_nTT?l3AjMQVf&bxE!w|Lb8bk`#j? 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 Date: Thu, 25 Jul 2019 00:19:49 +0200 Subject: [PATCH 2/9] + chg: Add extensions to StyleLexXXX.c (partial update) - update Notepad3.ini --- Build/Changes.txt | 3 ++- Build/Notepad3.ini | 1 - src/StyleLexers/styleLexStandard.c | 2 +- src/StyleLexers/styleLexXML.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Build/Changes.txt b/Build/Changes.txt index fac1d8919..9dbfa7d17 100644 --- a/Build/Changes.txt +++ b/Build/Changes.txt @@ -30,7 +30,7 @@ UCD - (UCD)ARDET is an Encoding Detector Library ================================================== -Current BETA Version 5.19.723.#(build) (2019-07-23) +Current BETA Version 5.19.724.#(build) (2019-07-24) ================================================== -------------------------------------------------- @@ -44,6 +44,7 @@ NEW: -------------------------------------------------- CHANGES: -------------------------------------------------- +- Complete impl. of UTF-8Sig MinPath.ini file handler - Use double-quotes as MRU list string limiter - Keep .ini backward compatibility for moved "Text Files" lexer (from "Default Text") - Update to Oniguruma v.6.9.3 diff --git a/Build/Notepad3.ini b/Build/Notepad3.ini index 52e0be288..2f4458018 100644 --- a/Build/Notepad3.ini +++ b/Build/Notepad3.ini @@ -94,7 +94,6 @@ SettingsVersion=4 [ANSI Art] [Apache Config Files] [Assembly Script] -[AutoHotkey Script] [AutoHotkey_L Script] [AutoIt3 Script] [AviSynth Script] diff --git a/src/StyleLexers/styleLexStandard.c b/src/StyleLexers/styleLexStandard.c index 0a9868b0a..b4fd612d2 100644 --- a/src/StyleLexers/styleLexStandard.c +++ b/src/StyleLexers/styleLexStandard.c @@ -51,7 +51,7 @@ SCLEX_NULL, IDS_LEX_STR_63266, L"2nd Common Base", L"", L"", EDITLEXER lexTEXT = { -SCLEX_NULL, IDS_LEX_TEXT_FILES, L"Text Files", L"txt; text; tmp; log; asc; doc; wtx", L"", +SCLEX_NULL, IDS_LEX_TEXT_FILES, L"Text Files", L"txt; text; tmp; log; asc; doc; wtx; csv", L"", &KeyWords_NULL,{ { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, { {STYLE_LINENUMBER}, IDS_LEX_STD_MARGIN, L"Margins and Line Numbers", L"font:Lucida Console; size:-2", L"" }, diff --git a/src/StyleLexers/styleLexXML.c b/src/StyleLexers/styleLexXML.c index 0a5d8a3d1..7501e3438 100644 --- a/src/StyleLexers/styleLexXML.c +++ b/src/StyleLexers/styleLexXML.c @@ -6,7 +6,7 @@ KEYWORDLIST KeyWords_XML = EMPTY_KEYWORDLIST; EDITLEXER lexXML = { -SCLEX_XML, IDS_LEX_XML_DOC, L"XML Document", L"xml; xsl; rss; svg; xul; xsd; xslt; axl; rdf; xaml; vcproj", L"", +SCLEX_XML, IDS_LEX_XML_DOC, L"XML Document", L"xml; xsl; rss; svg; xul; xsd; xslt; axl; rdf; xaml; vcproj; ffs_gui; nzb", L"", &KeyWords_XML, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, { {MULTI_STYLE(SCE_H_TAG,SCE_H_TAGUNKNOWN,SCE_H_TAGEND,0)}, IDS_LEX_STR_63187, L"XML Tag", L"fore:#881280", L"" }, From f67935ecf1f3ed9dd12cc106c76f73eaf2ef31a7 Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Thu, 25 Jul 2019 00:41:42 +0200 Subject: [PATCH 3/9] Delete sync.ffs_db --- test/test_files/StyleLexers/sync.ffs_db | Bin 1534 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/test_files/StyleLexers/sync.ffs_db diff --git a/test/test_files/StyleLexers/sync.ffs_db b/test/test_files/StyleLexers/sync.ffs_db deleted file mode 100644 index 6a3ccd1fa7c3f0f72c9b52933aab7a4516d89c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1534 zcmV4Uvd2V9>3IG5A0RR915C8xG92%d5%<`Q}vCcHXq$pO=0nh~i z00RI30K^3V000000I~%D04oXr000000C--FR#|i7HVoe0_kB%|X+6_+W_Mb%PO>}g zJ~}=UcYQVTCfUAdC<&68NTimeeB{>`AMK=_9y5KgKzslQ5ClNKbno81?&*`)cVsN& z^7glvvJW^r1oIx*5_ zacPQz*t$7-k8#o~WsR;#`&(67k=4dioROERbihAk)!Y(e%3Zr!rUdj;Mho(B-FUx^ z9XY3r4*G9~Kns)S;67o_QQBC=YP`MnEQ27#fAQosCe@0!T!(`mcNef{5_b+nBK-?E zAD}6RRm<#1q|oaPPd;FBp~|esClj4tI*&z~7syiOQe&$s1^)_kC*3Cl#8D}&ZdBc- zO>L}qBCX^#y@LR^Rbu$G0SMbq`tZpFVWd^|D!AEjI2gcf%7-H=6(?@DM2=EZRZ?e+ z(jI*|7)^)RDmNM)`KI9T%9TQ!42n7r4(IdWFx;d_>-t4-5w0oPXKyYG)^|ZWIz@#P zoHRz3Z}GY&TP8|_-DyN271Ca3W(|06c#cFwvZ_n!Mdw3RQhacouzdAT!Qp=i9_|Fe z(d8vV=^ytZk#08cV@5?jH4Z@YQ z?tgpmu=DtV$W)&H6fV70TWV*Nb5^q!lE@$1TF}O~5WEW}4gJMu9cjR*0l zFPKHbbJpz~#42OGn>*m}@4(R>KvfQhQGD`r^!Z)BS|)GpL6PS!E*gbfI+=ZjuZas| zP2)MxI9*DusT765*-safF+%E-Q-u~wUzG@SG#vtMT(ViFN~m2SjHaWHb|k*7c$6Sl zE@}+$tjyvwD)wlwi6Ruw(};Xi3*{VC(Z=W(?#(@lSbpuEcQF(Cl-h0W@0#jLt|Sig zYxFLE|2i429MV;9{nF@(dn)sPXIsTQT8CF?j_4 zzQ08d`#XZc& zVK{e1U1GYrmF5-hbbdCQ56%{&K^T8%7g1Zo1I{Z7Q*0g`AVo~#bFz4N@bHP+9fWtR2nEZSY{D#xG_d=}(I&y7hl0@cQA|2+oUq~5IUAfHKqlxu zOT`^`2o5IPnaX*-e&)kQ5nP`&aP0s@r!bO@Hw9_omIyYH={0w*TSCOIs^{^>99%}f zjZt Date: Thu, 25 Jul 2019 01:15:26 +0200 Subject: [PATCH 4/9] + chg: MiniPath SimpleIni .ini-file handler: clear default values --- CmdLnTools.sln | 46 +++ Notepad3.sln | 24 -- Notepad3DLL.sln | 24 -- Versions/build.txt | 2 +- minipath/minipathDLL.vcxproj | 3 + minipath/minipathDLL.vcxproj.filters | 9 + minipath/src/Config.cpp | 444 +++++++++++++-------------- minipath/src/Config.h | 1 + minipath/src/Dialogs.c | 284 ++++++++--------- minipath/src/Dlapi.h | 7 +- minipath/src/Helpers.c | 9 +- minipath/src/Helpers.h | 1 + minipath/src/minipath.c | 376 +++++++++++------------ minipath/src/minipath.h | 59 ++++ res/Notepad3.exe.manifest.conf | 2 +- src/VersionEx.h | 4 +- 16 files changed, 642 insertions(+), 653 deletions(-) create mode 100644 CmdLnTools.sln diff --git a/CmdLnTools.sln b/CmdLnTools.sln new file mode 100644 index 000000000..4d8a2cba1 --- /dev/null +++ b/CmdLnTools.sln @@ -0,0 +1,46 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28606.126 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "np3encrypt", "np3encrypt\np3encrypt.vcxproj", "{0210F830-26C6-40FC-BFD1-6ED833B90830}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ced", "ced\ced.vcxproj", "{12BD16A7-3BD9-4205-99B0-75E821EA7449}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6E5B87EB-C468-4334-8384-E9A3F0F6FBDA}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + Build\Changes.txt = Build\Changes.txt + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|Win32.ActiveCfg = Debug|Win32 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|Win32.Build.0 = Debug|Win32 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|x64.ActiveCfg = Debug|x64 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|x64.Build.0 = Debug|x64 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|Win32.ActiveCfg = Release|Win32 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|Win32.Build.0 = Release|Win32 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|x64.ActiveCfg = Release|x64 + {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|x64.Build.0 = Release|x64 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|Win32.ActiveCfg = Debug|Win32 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|Win32.Build.0 = Debug|Win32 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|x64.ActiveCfg = Debug|x64 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|x64.Build.0 = Debug|x64 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|Win32.ActiveCfg = Release|Win32 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|Win32.Build.0 = Release|Win32 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|x64.ActiveCfg = Release|x64 + {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C0B8FE68-ECBC-4173-9027-E1EC2C9B5BDF} + EndGlobalSection +EndGlobal diff --git a/Notepad3.sln b/Notepad3.sln index ccbc8a892..d573d6769 100644 --- a/Notepad3.sln +++ b/Notepad3.sln @@ -45,10 +45,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minipath", "minipath\minipa {29AB36E1-284E-4E0B-9DF4-F4F84760BD9B} = {29AB36E1-284E-4E0B-9DF4-F4F84760BD9B} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "np3encrypt", "np3encrypt\np3encrypt.vcxproj", "{0210F830-26C6-40FC-BFD1-6ED833B90830}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ced", "ced\ced.vcxproj", "{12BD16A7-3BD9-4205-99B0-75E821EA7449}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "np3_de_de", "language\np3_de_de\np3_de_de.vcxproj", "{146D0122-33C6-4C1B-9E7A-178DEC80842E}" ProjectSection(ProjectDependencies) = postProject {9DC82B0D-2484-4925-92AD-1237C64CCB78} = {9DC82B0D-2484-4925-92AD-1237C64CCB78} @@ -209,8 +205,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Notepad3", "Notepad3", "{C3 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MiniPath", "MiniPath", "{D21C1F85-6FA3-4695-82CD-DDC5690E2D66}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{F91299D3-6992-4F0E-B284-7AC9AF559512}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "language", "language", "{8FD783D5-8709-432D-A88E-6E3073AFF220}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "language", "language", "{8C28F8E6-5B4E-4233-B5C7-5A903596AEB2}" @@ -262,22 +256,6 @@ Global {781B17E7-427F-488F-A8E9-360BA38A10F3}.Release|x64.ActiveCfg = Release|x64 {781B17E7-427F-488F-A8E9-360BA38A10F3}.Release|x64.Build.0 = Release|x64 {781B17E7-427F-488F-A8E9-360BA38A10F3}.Release|x64.Deploy.0 = Release|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|Win32.ActiveCfg = Debug|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|Win32.Build.0 = Debug|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|x64.ActiveCfg = Debug|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|x64.Build.0 = Debug|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|Win32.ActiveCfg = Release|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|Win32.Build.0 = Release|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|x64.ActiveCfg = Release|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|x64.Build.0 = Release|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|Win32.ActiveCfg = Debug|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|Win32.Build.0 = Debug|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|x64.ActiveCfg = Debug|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|x64.Build.0 = Debug|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|Win32.ActiveCfg = Release|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|Win32.Build.0 = Release|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|x64.ActiveCfg = Release|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|x64.Build.0 = Release|x64 {146D0122-33C6-4C1B-9E7A-178DEC80842E}.Debug|Win32.ActiveCfg = Debug|Win32 {146D0122-33C6-4C1B-9E7A-178DEC80842E}.Debug|Win32.Build.0 = Debug|Win32 {146D0122-33C6-4C1B-9E7A-178DEC80842E}.Debug|x64.ActiveCfg = Debug|x64 @@ -565,8 +543,6 @@ Global GlobalSection(NestedProjects) = preSolution {BAAD32AB-CD47-12FD-873C-0BBC204B7641} = {C3735E17-6EAE-4CC5-980E-30BCEF094862} {781B17E7-427F-488F-A8E9-360BA38A10F3} = {D21C1F85-6FA3-4695-82CD-DDC5690E2D66} - {0210F830-26C6-40FC-BFD1-6ED833B90830} = {F91299D3-6992-4F0E-B284-7AC9AF559512} - {12BD16A7-3BD9-4205-99B0-75E821EA7449} = {F91299D3-6992-4F0E-B284-7AC9AF559512} {146D0122-33C6-4C1B-9E7A-178DEC80842E} = {8C28F8E6-5B4E-4233-B5C7-5A903596AEB2} {EC255B64-2C2F-4CB6-9D40-4542893FE5E6} = {8C28F8E6-5B4E-4233-B5C7-5A903596AEB2} {3B8C289D-FF47-4237-AD7B-0702230F41A3} = {8C28F8E6-5B4E-4233-B5C7-5A903596AEB2} diff --git a/Notepad3DLL.sln b/Notepad3DLL.sln index a1784b8de..a870a3e1a 100644 --- a/Notepad3DLL.sln +++ b/Notepad3DLL.sln @@ -47,10 +47,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minipath", "minipath\minipa EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Scintilla", "scintilla\ScintillaDLL.vcxproj", "{5877B917-512B-49F5-B514-1B4159E7A9CA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "np3encrypt", "np3encrypt\np3encrypt.vcxproj", "{0210F830-26C6-40FC-BFD1-6ED833B90830}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ced", "ced\ced.vcxproj", "{12BD16A7-3BD9-4205-99B0-75E821EA7449}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "np3_de_de", "language\np3_de_de\np3_de_de.vcxproj", "{146D0122-33C6-4C1B-9E7A-178DEC80842E}" ProjectSection(ProjectDependencies) = postProject {9DC82B0D-2484-4925-92AD-1237C64CCB78} = {9DC82B0D-2484-4925-92AD-1237C64CCB78} @@ -211,8 +207,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Notepad3", "Notepad3", "{C3 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MiniPath", "MiniPath", "{D21C1F85-6FA3-4695-82CD-DDC5690E2D66}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{F91299D3-6992-4F0E-B284-7AC9AF559512}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "language", "language", "{8FD783D5-8709-432D-A88E-6E3073AFF220}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "language", "language", "{8C28F8E6-5B4E-4233-B5C7-5A903596AEB2}" @@ -276,22 +270,6 @@ Global {5877B917-512B-49F5-B514-1B4159E7A9CA}.Release|Win32.Build.0 = Release|Win32 {5877B917-512B-49F5-B514-1B4159E7A9CA}.Release|x64.ActiveCfg = Release|x64 {5877B917-512B-49F5-B514-1B4159E7A9CA}.Release|x64.Build.0 = Release|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|Win32.ActiveCfg = Debug|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|Win32.Build.0 = Debug|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|x64.ActiveCfg = Debug|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Debug|x64.Build.0 = Debug|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|Win32.ActiveCfg = Release|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|Win32.Build.0 = Release|Win32 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|x64.ActiveCfg = Release|x64 - {0210F830-26C6-40FC-BFD1-6ED833B90830}.Release|x64.Build.0 = Release|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|Win32.ActiveCfg = Debug|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|Win32.Build.0 = Debug|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|x64.ActiveCfg = Debug|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Debug|x64.Build.0 = Debug|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|Win32.ActiveCfg = Release|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|Win32.Build.0 = Release|Win32 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|x64.ActiveCfg = Release|x64 - {12BD16A7-3BD9-4205-99B0-75E821EA7449}.Release|x64.Build.0 = Release|x64 {146D0122-33C6-4C1B-9E7A-178DEC80842E}.Debug|Win32.ActiveCfg = Debug|Win32 {146D0122-33C6-4C1B-9E7A-178DEC80842E}.Debug|Win32.Build.0 = Debug|Win32 {146D0122-33C6-4C1B-9E7A-178DEC80842E}.Debug|x64.ActiveCfg = Debug|x64 @@ -572,8 +550,6 @@ Global {BAAD32AB-CD47-12FD-873C-0BBC204B7641} = {C3735E17-6EAE-4CC5-980E-30BCEF094862} {781B17E7-427F-488F-A8E9-360BA38A10F3} = {D21C1F85-6FA3-4695-82CD-DDC5690E2D66} {5877B917-512B-49F5-B514-1B4159E7A9CA} = {C3735E17-6EAE-4CC5-980E-30BCEF094862} - {0210F830-26C6-40FC-BFD1-6ED833B90830} = {F91299D3-6992-4F0E-B284-7AC9AF559512} - {12BD16A7-3BD9-4205-99B0-75E821EA7449} = {F91299D3-6992-4F0E-B284-7AC9AF559512} {146D0122-33C6-4C1B-9E7A-178DEC80842E} = {8C28F8E6-5B4E-4233-B5C7-5A903596AEB2} {EC255B64-2C2F-4CB6-9D40-4542893FE5E6} = {8C28F8E6-5B4E-4233-B5C7-5A903596AEB2} {3B8C289D-FF47-4237-AD7B-0702230F41A3} = {8C28F8E6-5B4E-4233-B5C7-5A903596AEB2} diff --git a/Versions/build.txt b/Versions/build.txt index 1475ea901..075c4f664 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2404 +2405 diff --git a/minipath/minipathDLL.vcxproj b/minipath/minipathDLL.vcxproj index 9f4fa2673..6aac33037 100644 --- a/minipath/minipathDLL.vcxproj +++ b/minipath/minipathDLL.vcxproj @@ -274,6 +274,7 @@ + @@ -282,12 +283,14 @@ + + diff --git a/minipath/minipathDLL.vcxproj.filters b/minipath/minipathDLL.vcxproj.filters index b7d5236ca..a658614f8 100644 --- a/minipath/minipathDLL.vcxproj.filters +++ b/minipath/minipathDLL.vcxproj.filters @@ -34,6 +34,9 @@ C/C++ Source Files + + C/C++ Source Files + @@ -60,6 +63,12 @@ H Source Files + + H Source Files + + + H Source Files + diff --git a/minipath/src/Config.cpp b/minipath/src/Config.cpp index 2e592fcff..ed279053b 100644 --- a/minipath/src/Config.cpp +++ b/minipath/src/Config.cpp @@ -25,62 +25,10 @@ extern "C" { } extern "C" HWND hwndMain; - extern "C" WCHAR g_wchIniFile[MAX_PATH]; extern "C" WCHAR g_wchIniFile2[MAX_PATH]; extern "C" WCHAR g_wchNP3IniFile[MAX_PATH]; -extern "C" BOOL bSaveSettings; -extern "C" WCHAR szQuickview[MAX_PATH]; -extern "C" WCHAR szQuickviewParams[MAX_PATH]; -extern "C" WCHAR g_tchFavoritesDir[MAX_PATH]; -extern "C" BOOL bNP3sFavoritesSettings; -extern "C" WCHAR tchOpenWithDir[MAX_PATH]; -extern "C" WCHAR tchToolbarButtons[512]; -extern "C" WCHAR tchToolbarBitmap[MAX_PATH]; -extern "C" WCHAR tchToolbarBitmapHot[MAX_PATH]; -extern "C" WCHAR tchToolbarBitmapDisabled[MAX_PATH]; -extern "C" BOOL bClearReadOnly; -extern "C" BOOL bRenameOnCollision; -extern "C" BOOL bSingleClick; -extern "C" BOOL bTrackSelect; -extern "C" BOOL bFullRowSelect; -extern "C" int iStartupDir; -extern "C" int iEscFunction; -extern "C" BOOL bFocusEdit; -extern "C" BOOL bAlwaysOnTop; -extern "C" BOOL g_bTransparentMode; -extern "C" BOOL bMinimizeToTray; -extern "C" BOOL fUseRecycleBin; -extern "C" BOOL fNoConfirmDelete; -extern "C" BOOL bShowToolbar; -extern "C" BOOL bShowStatusbar; -extern "C" BOOL bShowDriveBox; -extern "C" int cxGotoDlg; -extern "C" int cxOpenWithDlg; -extern "C" int cyOpenWithDlg; -extern "C" int cxCopyMoveDlg; - -extern "C" BOOL bHasQuickview; - -extern "C" WCHAR tchFilter[DL_FILTER_BUFSIZE]; -extern "C" BOOL bNegFilter; -extern "C" BOOL bDefCrNoFilt; -extern "C" BOOL bDefCrFilter; -extern "C" COLORREF crNoFilt; -extern "C" COLORREF crFilter; -extern "C" COLORREF crCustom[16]; - -extern "C" LPWSTR lpPathArg; -extern "C" LPWSTR lpFilterArg; - -extern "C" WININFO wi; - -extern "C" WCHAR szCurDir[MAX_PATH + 40]; -extern "C" DWORD dwFillMask; -extern "C" int nSortFlags; -extern "C" BOOL fSortRev; - extern "C" WCHAR g_tchPrefLngLocName[LOCALE_NAME_MAX_LENGTH + 1]; extern "C" LANGID g_iPrefLANGID; @@ -400,6 +348,43 @@ extern "C" BOOL IniFileIterateSection(LPCWSTR lpFilePath, LPCWSTR lpSectionName, + +//============================================================================= +// +// InitDefaultSettings() +// +// +void InitDefaultSettings() +{ + Defaults.szQuickview[0] = L'\0'; + Defaults.szQuickviewParams[0] = L'\0'; + Defaults.g_tchFavoritesDir[0] = L'\0'; + Defaults.tchOpenWithDir[0] = L'\0'; + Defaults.tchToolbarButtons[0] = L'\0'; + Defaults.tchToolbarBitmap[0] = L'\0'; + Defaults.tchToolbarBitmapHot[0] = L'\0'; + Defaults.tchToolbarBitmapDisabled[0] = L'\0'; + Defaults.tchFilter[0] = L'\0'; + Defaults.szCurDir[0] = L'\0'; + + // Initialize custom colors for ChooseColor() + Defaults.crCustom[0] = RGB(0, 0, 128); Defaults.crCustom[8] = RGB(255, 255, 226); + Defaults.crCustom[1] = GetSysColor(COLOR_WINDOWTEXT); Defaults.crCustom[9] = GetSysColor(COLOR_WINDOW); + Defaults.crCustom[2] = GetSysColor(COLOR_INFOTEXT); Defaults.crCustom[10] = GetSysColor(COLOR_INFOBK); + Defaults.crCustom[3] = GetSysColor(COLOR_HIGHLIGHTTEXT); Defaults.crCustom[11] = GetSysColor(COLOR_HIGHLIGHT); + Defaults.crCustom[4] = GetSysColor(COLOR_ACTIVECAPTION); Defaults.crCustom[12] = GetSysColor(COLOR_DESKTOP); + Defaults.crCustom[5] = GetSysColor(COLOR_3DFACE); Defaults.crCustom[13] = GetSysColor(COLOR_3DFACE); + Defaults.crCustom[6] = GetSysColor(COLOR_3DFACE); Defaults.crCustom[14] = GetSysColor(COLOR_3DFACE); + Defaults.crCustom[7] = GetSysColor(COLOR_3DFACE); Defaults.crCustom[15] = GetSysColor(COLOR_3DFACE); + + Defaults.wi.x = CW_USEDEFAULT; + Defaults.wi.y = CW_USEDEFAULT; + Defaults.wi.cx = CW_USEDEFAULT; + Defaults.wi.cy = CW_USEDEFAULT; +} + + + //============================================================================= // // CreateIniFile() @@ -684,162 +669,129 @@ void LoadFlags() // LoadSettings() // // +extern "C" LPWSTR lpFilterArg; + +#define GET_BOOL_VALUE_FROM_INISECTION(VARNAME,KEYNAME,DEFAULT) \ + Defaults.VARNAME = DEFAULT; \ + Settings.VARNAME = IniSectionGetBool(Settings_Section, KEYNAME, Defaults.VARNAME) + +#define GET_INT_VALUE_FROM_INISECTION(VARNAME,KEYNAME,DEFAULT,MIN,MAX) \ + Defaults.VARNAME = DEFAULT; \ + Settings.VARNAME = clampi(IniSectionGetInt(Settings_Section, KEYNAME, Defaults.VARNAME),MIN,MAX) + +// ----------------------------------------------------------- + void LoadSettings() { LoadIniFile(g_wchIniFile); const WCHAR* const Settings_Section = L"Settings"; - bSaveSettings = IniSectionGetInt(Settings_Section, L"SaveSettings", 1); - if (bSaveSettings) bSaveSettings = 1; + GET_BOOL_VALUE_FROM_INISECTION(bSaveSettings, L"SaveSettings", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bSingleClick, L"SingleClick", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bTrackSelect, L"TrackSelect", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bFullRowSelect, L"FullRowSelect", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(fUseRecycleBin, L"UseRecycleBin", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(fNoConfirmDelete, L"NoConfirmDelete", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(bClearReadOnly, L"ClearReadOnly", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bRenameOnCollision, L"RenameOnCollision", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(bFocusEdit, L"FocusEdit", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bAlwaysOnTop, L"AlwaysOnTop", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(bMinimizeToTray, L"MinimizeToTray", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(g_bTransparentMode, L"TransparentMode", FALSE); + GET_INT_VALUE_FROM_INISECTION(iEscFunction, L"EscFunction", 2, 0, 2); + GET_INT_VALUE_FROM_INISECTION(iStartupDir, L"StartupDirectory", 2, 0, 2); - bSingleClick = IniSectionGetInt(Settings_Section, L"SingleClick", 1); - if (bSingleClick) bSingleClick = 1; - - bTrackSelect = IniSectionGetInt(Settings_Section, L"TrackSelect", 1); - if (bTrackSelect) bTrackSelect = 1; - - bFullRowSelect = IniSectionGetInt(Settings_Section, L"FullRowSelect", 0); - if (bFullRowSelect) bFullRowSelect = 1; - - fUseRecycleBin = IniSectionGetInt(Settings_Section, L"UseRecycleBin", 0); - if (fUseRecycleBin) fUseRecycleBin = 1; - - fNoConfirmDelete = IniSectionGetInt(Settings_Section, L"NoConfirmDelete", 0); - if (fNoConfirmDelete) fNoConfirmDelete = 1; - - bClearReadOnly = IniSectionGetInt(Settings_Section, L"ClearReadOnly", 1); - if (bClearReadOnly) bClearReadOnly = 1; - - bRenameOnCollision = IniSectionGetInt(Settings_Section, L"RenameOnCollision", 0); - if (bRenameOnCollision) bRenameOnCollision = 1; - - bFocusEdit = IniSectionGetInt(Settings_Section, L"FocusEdit", 1); - if (bFocusEdit) bFocusEdit = 1; - - bAlwaysOnTop = IniSectionGetInt(Settings_Section, L"AlwaysOnTop", 0); - if (bAlwaysOnTop) bAlwaysOnTop = 1; - - bMinimizeToTray = IniSectionGetInt(Settings_Section, L"MinimizeToTray", 0); - if (bMinimizeToTray) bMinimizeToTray = 1; - - g_bTransparentMode = IniSectionGetInt(Settings_Section, L"TransparentMode", 0); - if (g_bTransparentMode) g_bTransparentMode = 1; - - iEscFunction = IniSectionGetInt(Settings_Section, L"EscFunction", 2); - iEscFunction = max(min(iEscFunction, 2), 0); - - iStartupDir = IniSectionGetInt(Settings_Section, L"StartupDirectory", 2); - iStartupDir = max(min(iStartupDir, 2), 0); - - if (!IniSectionGetString(Settings_Section, L"Favorites", L"", - g_tchFavoritesDir, COUNTOF(g_tchFavoritesDir))) { + Defaults.g_tchFavoritesDir[0] = L'\0'; + if (!IniSectionGetString(Settings_Section, L"Favorites", Defaults.g_tchFavoritesDir, + Settings.g_tchFavoritesDir, COUNTOF(Settings.g_tchFavoritesDir))) { // try to fetch Favorites dir from Notepad3.ini if (StrIsNotEmpty(g_wchNP3IniFile)) { - bNP3sFavoritesSettings = TRUE; - IniFileGetString(g_wchNP3IniFile, L"Settings", L"Favorites", L"", g_tchFavoritesDir, COUNTOF(g_tchFavoritesDir)); + Settings.bNP3sFavoritesSettings = TRUE; + IniFileGetString(g_wchNP3IniFile, L"Settings", L"Favorites", L"", Settings.g_tchFavoritesDir, COUNTOF(Settings.g_tchFavoritesDir)); } } - if (StrIsEmpty(g_tchFavoritesDir)) - SHGetFolderPath(nullptr, CSIDL_PERSONAL, nullptr, SHGFP_TYPE_CURRENT, g_tchFavoritesDir); + if (StrIsEmpty(Settings.g_tchFavoritesDir)) + SHGetFolderPath(nullptr, CSIDL_PERSONAL, nullptr, SHGFP_TYPE_CURRENT, Settings.g_tchFavoritesDir); else - PathAbsoluteFromApp(g_tchFavoritesDir, nullptr, COUNTOF(g_tchFavoritesDir), TRUE); + PathAbsoluteFromApp(Settings.g_tchFavoritesDir, nullptr, COUNTOF(Settings.g_tchFavoritesDir), TRUE); - if (!IniSectionGetString(Settings_Section, L"Quikview.exe", L"", - szQuickview, COUNTOF(szQuickview))) { - GetSystemDirectory(szQuickview, COUNTOF(szQuickview)); - PathAddBackslash(szQuickview); - lstrcat(szQuickview, L"Viewers\\Quikview.exe"); + + Defaults.szQuickview[0] = L'\0'; + if (!IniSectionGetString(Settings_Section, L"Quikview.exe", Defaults.szQuickview, + Settings.szQuickview, COUNTOF(Settings.szQuickview))) { + GetSystemDirectory(Settings.szQuickview, COUNTOF(Settings.szQuickview)); + PathAddBackslash(Settings.szQuickview); + lstrcat(Settings.szQuickview, L"Viewers\\Quikview.exe"); } else - PathAbsoluteFromApp(szQuickview, nullptr, COUNTOF(szQuickview), TRUE); + PathAbsoluteFromApp(Settings.szQuickview, nullptr, COUNTOF(Settings.szQuickview), TRUE); - bHasQuickview = PathFileExists(szQuickview); + Settings.bHasQuickview = PathFileExists(Settings.szQuickview); - IniSectionGetString(Settings_Section, L"QuikviewParams", L"", szQuickviewParams, COUNTOF(szQuickviewParams)); + Defaults.szQuickviewParams[0] = L'\0'; + IniSectionGetString(Settings_Section, L"QuikviewParams", Defaults.szQuickviewParams, + Settings.szQuickviewParams, COUNTOF(Settings.szQuickviewParams)); - if (!IniSectionGetString(Settings_Section, L"OpenWithDir", L"", tchOpenWithDir, COUNTOF(tchOpenWithDir))) { + + lstrcpy(Defaults.tchOpenWithDir, L"%USERPROFILE%\\Desktop"); + if (IniSectionGetString(Settings_Section, L"OpenWithDir", L"", + Settings.tchOpenWithDir, COUNTOF(Settings.tchOpenWithDir)) == 0) { // try to fetch Open With dir from Notepad3.ini - IniFileGetString(g_wchNP3IniFile, L"Settings", L"OpenWithDir", L"", tchOpenWithDir, COUNTOF(tchOpenWithDir)); + IniFileGetString(g_wchNP3IniFile, L"Settings", L"OpenWithDir", L"", Settings.tchOpenWithDir, COUNTOF(Settings.tchOpenWithDir)); } - if (StrIsEmpty(tchOpenWithDir)) - SHGetSpecialFolderPath(nullptr, tchOpenWithDir, CSIDL_DESKTOPDIRECTORY, TRUE); + if (StrIsEmpty(Settings.tchOpenWithDir)) + SHGetSpecialFolderPath(nullptr, Settings.tchOpenWithDir, CSIDL_DESKTOPDIRECTORY, TRUE); else - PathAbsoluteFromApp(tchOpenWithDir, nullptr, COUNTOF(tchOpenWithDir), TRUE); + PathAbsoluteFromApp(Settings.tchOpenWithDir, nullptr, COUNTOF(Settings.tchOpenWithDir), TRUE); - dwFillMask = IniSectionGetInt(Settings_Section, L"FillMask", DL_ALLOBJECTS); - if (dwFillMask & ~DL_ALLOBJECTS) dwFillMask = DL_ALLOBJECTS; - - nSortFlags = IniSectionGetInt(Settings_Section, L"SortOptions", DS_TYPE); - nSortFlags = min(3, max(nSortFlags, 0)); - - fSortRev = IniSectionGetInt(Settings_Section, L"SortReverse", 0); - if (fSortRev) fSortRev = 1; + GET_INT_VALUE_FROM_INISECTION(dwFillMask, L"FillMask", DL_ALLOBJECTS, DL_FOLDERS, DL_ALLOBJECTS); + GET_INT_VALUE_FROM_INISECTION(nSortFlags, L"SortOptions", DS_TYPE, 0, 3); + GET_BOOL_VALUE_FROM_INISECTION(fSortRev, L"SortReverse", FALSE); + lstrcpy(Defaults.tchFilter, L"*.*"); if (!lpFilterArg) { - if (!IniSectionGetString(Settings_Section, L"FileFilter", L"", - tchFilter, COUNTOF(tchFilter))) - lstrcpy(tchFilter, L"*.*"); - - bNegFilter = IniSectionGetInt(Settings_Section, L"NegativeFilter", 0); - if (bNegFilter) bNegFilter = 1; + IniSectionGetString(Settings_Section, L"FileFilter", Defaults.tchFilter, Settings.tchFilter, COUNTOF(Settings.tchFilter)); } - else { // ignore filter if /m was specified - if (*lpFilterArg == L'-') { - bNegFilter = TRUE; - lstrcpyn(tchFilter, lpFilterArg + 1, COUNTOF(tchFilter)); + if (*(lpFilterArg) == L'-') { + Settings.bNegFilter = TRUE; + (void)lstrcpyn(Settings.tchFilter, lpFilterArg + 1, COUNTOF(Settings.tchFilter)); } else { - bNegFilter = FALSE; - lstrcpyn(tchFilter, lpFilterArg, COUNTOF(tchFilter)); + Settings.bNegFilter = FALSE; + (void)lstrcpyn(Settings.tchFilter, lpFilterArg, COUNTOF(Settings.tchFilter)); } } + GET_BOOL_VALUE_FROM_INISECTION(bNegFilter, L"NegativeFilter", FALSE); + GET_BOOL_VALUE_FROM_INISECTION(bDefCrNoFilt, L"DefColorNoFilter", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bDefCrFilter, L"DefColorFilter", TRUE); + GET_INT_VALUE_FROM_INISECTION(crNoFilt, L"ColorNoFilter", GetSysColor(COLOR_WINDOWTEXT), 0, INT_MAX); + GET_INT_VALUE_FROM_INISECTION(crFilter, L"ColorFilter", GetSysColor(COLOR_HIGHLIGHT), 0, INT_MAX); - bDefCrNoFilt = IniSectionGetInt(Settings_Section, L"DefColorNoFilter", 1); - if (bDefCrNoFilt) bDefCrNoFilt = 1; - bDefCrFilter = IniSectionGetInt(Settings_Section, L"DefColorFilter", 1); - if (bDefCrFilter) bDefCrFilter = 1; - - crNoFilt = IniSectionGetInt(Settings_Section, L"ColorNoFilter", GetSysColor(COLOR_WINDOWTEXT)); - crFilter = IniSectionGetInt(Settings_Section, L"ColorFilter", GetSysColor(COLOR_HIGHLIGHT)); - - if (IniSectionGetString(Settings_Section, L"ToolbarButtons", L"", tchToolbarButtons, COUNTOF(tchToolbarButtons)) == 0) { - lstrcpy(tchToolbarButtons, L"1 2 3 4 5 0 8"); + lstrcpy(Defaults.tchToolbarButtons, L"1 2 3 4 5 0 8"); + if (IniSectionGetString(Settings_Section, L"ToolbarButtons", Defaults.tchToolbarButtons, Settings.tchToolbarButtons, COUNTOF(Settings.tchToolbarButtons)) == 0) { + lstrcpy(Settings.tchToolbarButtons, Defaults.tchToolbarButtons); } - bShowToolbar = IniSectionGetInt(Settings_Section, L"ShowToolbar", 1); - if (bShowToolbar) bShowToolbar = 1; - bShowStatusbar = IniSectionGetInt(Settings_Section, L"ShowStatusbar", 1); - if (bShowStatusbar) bShowStatusbar = 1; + GET_BOOL_VALUE_FROM_INISECTION(bShowToolbar, L"ShowToolbar", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bShowStatusbar, L"ShowStatusbar", TRUE); + GET_BOOL_VALUE_FROM_INISECTION(bShowDriveBox, L"ShowDriveBox", TRUE); + GET_INT_VALUE_FROM_INISECTION(cxGotoDlg, L"GotoDlgSizeX", 0, 0, INT_MAX); + GET_INT_VALUE_FROM_INISECTION(cxOpenWithDlg, L"OpenWithDlgSizeX", 0, 0, INT_MAX); + GET_INT_VALUE_FROM_INISECTION(cyOpenWithDlg, L"OpenWithDlgSizeY", 0, 0, INT_MAX); + GET_INT_VALUE_FROM_INISECTION(cxCopyMoveDlg, L"CopyMoveDlgSizeX", 0, 0, INT_MAX); - bShowDriveBox = IniSectionGetInt(Settings_Section, L"ShowDriveBox", 1); - if (bShowDriveBox) bShowDriveBox = 1; - - cxGotoDlg = IniSectionGetInt(Settings_Section, L"GotoDlgSizeX", 0); - cxGotoDlg = max(cxGotoDlg, 0); - - cxOpenWithDlg = IniSectionGetInt(Settings_Section, L"OpenWithDlgSizeX", 0); - cxOpenWithDlg = max(cxOpenWithDlg, 0); - - cyOpenWithDlg = IniSectionGetInt(Settings_Section, L"OpenWithDlgSizeY", 0); - cyOpenWithDlg = max(cyOpenWithDlg, 0); - - cxCopyMoveDlg = IniSectionGetInt(Settings_Section, L"CopyMoveDlgSizeX", 0); - cxCopyMoveDlg = max(cxCopyMoveDlg, 0); + // -------------------------------------------------------------------------- int ResX = GetSystemMetrics(SM_CXSCREEN); int ResY = GetSystemMetrics(SM_CYSCREEN); - const WCHAR* const ToolbarImages_Section = L"Toolbar Images"; - IniSectionGetString(ToolbarImages_Section, L"BitmapDefault", L"", - tchToolbarBitmap, COUNTOF(tchToolbarBitmap)); - IniSectionGetString(ToolbarImages_Section, L"BitmapHot", L"", - tchToolbarBitmapHot, COUNTOF(tchToolbarBitmap)); - IniSectionGetString(ToolbarImages_Section, L"BitmapDisabled", L"", - tchToolbarBitmapDisabled, COUNTOF(tchToolbarBitmap)); + IniSectionGetString(ToolbarImages_Section, L"BitmapDefault", L"", Settings.tchToolbarBitmap, COUNTOF(Settings.tchToolbarBitmap)); + IniSectionGetString(ToolbarImages_Section, L"BitmapHot", L"", Settings.tchToolbarBitmapHot, COUNTOF(Settings.tchToolbarBitmap)); + IniSectionGetString(ToolbarImages_Section, L"BitmapDisabled", L"", Settings.tchToolbarBitmapDisabled, COUNTOF(Settings.tchToolbarBitmap)); if (!flagPosParam) { // ignore window position if /p was specified @@ -852,31 +804,45 @@ void LoadSettings() const WCHAR* const Window_Section = L"Window"; - wi.x = IniSectionGetInt(Window_Section, tchPosX, CW_USEDEFAULT); - wi.y = IniSectionGetInt(Window_Section, tchPosY, CW_USEDEFAULT); - wi.cx = IniSectionGetInt(Window_Section, tchSizeX, CW_USEDEFAULT); - wi.cy = IniSectionGetInt(Window_Section, tchSizeY, CW_USEDEFAULT); + Settings.wi.x = IniSectionGetInt(Window_Section, tchPosX, Defaults.wi.x); + Settings.wi.y = IniSectionGetInt(Window_Section, tchPosY, Defaults.wi.y); + Settings.wi.cx = IniSectionGetInt(Window_Section, tchSizeX, Defaults.wi.cx); + Settings.wi.cy = IniSectionGetInt(Window_Section, tchSizeY, Defaults.wi.cy); } - // Initialize custom colors for ChooseColor() - crCustom[0] = RGB(0, 0, 128); crCustom[8] = RGB(255, 255, 226); - crCustom[1] = GetSysColor(COLOR_WINDOWTEXT); crCustom[9] = GetSysColor(COLOR_WINDOW); - crCustom[2] = GetSysColor(COLOR_INFOTEXT); crCustom[10] = GetSysColor(COLOR_INFOBK); - crCustom[3] = GetSysColor(COLOR_HIGHLIGHTTEXT); crCustom[11] = GetSysColor(COLOR_HIGHLIGHT); - crCustom[4] = GetSysColor(COLOR_ACTIVECAPTION); crCustom[12] = GetSysColor(COLOR_DESKTOP); - crCustom[5] = GetSysColor(COLOR_3DFACE); crCustom[13] = GetSysColor(COLOR_3DFACE); - crCustom[6] = GetSysColor(COLOR_3DFACE); crCustom[14] = GetSysColor(COLOR_3DFACE); - crCustom[7] = GetSysColor(COLOR_3DFACE); crCustom[15] = GetSysColor(COLOR_3DFACE); - + for (int i = 0; i < COUNTOF(Settings.crCustom); ++i) { + Settings.crCustom[i] = Defaults.crCustom[i]; + } + ReleaseIniFile(); } + //============================================================================= // // SaveSettings() // // + +#define SAVE_VALUE_IF_NOT_EQ_DEFAULT(TYPE,KEYNAME,VARNAME) \ + if (Settings.VARNAME != Defaults.VARNAME) { \ + IniSectionSet##TYPE(Settings_Section, KEYNAME, Settings.VARNAME); \ + } \ + else { \ + IniSectionDelete(Settings_Section, KEYNAME, false); \ + } + +#define SAVE_STRING_IF_NOT_EQ_DEFAULT(KEYNAME,VARNAME) \ + if (lstrcmp(Settings.VARNAME, Defaults.VARNAME) != 0) { \ + IniSectionSetString(Settings_Section, KEYNAME, Settings.VARNAME); \ + } \ + else { \ + IniSectionDelete(Settings_Section, KEYNAME, false); \ + } + +// ---------------------------------------------------------------------------- + void SaveSettings(BOOL bSaveSettingsNow) { WCHAR wchTmp[MAX_PATH]; @@ -885,11 +851,11 @@ void SaveSettings(BOOL bSaveSettingsNow) CreateIniFile(); - if (!bSaveSettings && !bSaveSettingsNow) { - if (iStartupDir == 1) { - IniFileSetString(g_wchIniFile, L"Settings", L"MRUDirectory", szCurDir); + if (!Settings.bSaveSettings && !bSaveSettingsNow) { + if (Settings.iStartupDir == 1) { + IniFileSetString(g_wchIniFile, L"Settings", L"MRUDirectory", Settings.szCurDir); } - IniFileSetBool(g_wchIniFile, L"Settings", L"SaveSettings", bSaveSettings); + IniFileSetBool(g_wchIniFile, L"Settings", L"SaveSettings", Settings.bSaveSettings); return; } @@ -897,49 +863,59 @@ void SaveSettings(BOOL bSaveSettingsNow) const WCHAR* const Settings_Section = L"Settings"; - IniSectionSetInt(Settings_Section, L"SaveSettings", bSaveSettings); - IniSectionSetInt(Settings_Section, L"SingleClick", bSingleClick); - IniSectionSetInt(Settings_Section, L"TrackSelect", bTrackSelect); - IniSectionSetInt(Settings_Section, L"FullRowSelect", bFullRowSelect); - IniSectionSetInt(Settings_Section, L"UseRecycleBin", fUseRecycleBin); - IniSectionSetInt(Settings_Section, L"NoConfirmDelete", fNoConfirmDelete); - IniSectionSetInt(Settings_Section, L"ClearReadOnly", bClearReadOnly); - IniSectionSetInt(Settings_Section, L"RenameOnCollision", bRenameOnCollision); - IniSectionSetInt(Settings_Section, L"FocusEdit", bFocusEdit); - IniSectionSetInt(Settings_Section, L"AlwaysOnTop", bAlwaysOnTop); - IniSectionSetInt(Settings_Section, L"MinimizeToTray", bMinimizeToTray); - IniSectionSetInt(Settings_Section, L"TransparentMode", g_bTransparentMode); - IniSectionSetInt(Settings_Section, L"EscFunction", iEscFunction); - IniSectionSetInt(Settings_Section, L"StartupDirectory", iStartupDir); - if (iStartupDir == 1) { - IniSectionSetString(Settings_Section, L"MRUDirectory", szCurDir); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"SaveSettings", bSaveSettings); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"SingleClick", bSingleClick); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"TrackSelect", bTrackSelect); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"FullRowSelect", bFullRowSelect); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"UseRecycleBin", fUseRecycleBin); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"NoConfirmDelete", fNoConfirmDelete); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"ClearReadOnly", bClearReadOnly); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"RenameOnCollision", bRenameOnCollision); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"FocusEdit", bFocusEdit); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"AlwaysOnTop", bAlwaysOnTop); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"MinimizeToTray", bMinimizeToTray); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"TransparentMode", g_bTransparentMode); + + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"EscFunction", iEscFunction); + + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"StartupDirectory", iStartupDir); + if (Settings.iStartupDir == 1) { + IniSectionSetString(Settings_Section, L"MRUDirectory", Settings.szCurDir); } - if (!bNP3sFavoritesSettings) { - PathRelativeToApp(g_tchFavoritesDir, wchTmp, COUNTOF(wchTmp), FALSE, TRUE, flagPortableMyDocs); + if (!Settings.bNP3sFavoritesSettings) { + PathRelativeToApp(Settings.g_tchFavoritesDir, wchTmp, COUNTOF(wchTmp), FALSE, TRUE, flagPortableMyDocs); IniSectionSetString(Settings_Section, L"Favorites", wchTmp); } - PathRelativeToApp(szQuickview, wchTmp, COUNTOF(wchTmp), FALSE, TRUE, flagPortableMyDocs); + + PathRelativeToApp(Settings.szQuickview, wchTmp, COUNTOF(wchTmp), FALSE, TRUE, flagPortableMyDocs); IniSectionSetString(Settings_Section, L"Quikview.exe", wchTmp); - IniSectionSetString(Settings_Section, L"QuikviewParams", szQuickviewParams); - PathRelativeToApp(tchOpenWithDir, wchTmp, COUNTOF(wchTmp), FALSE, TRUE, flagPortableMyDocs); - IniSectionSetString(Settings_Section, L"OpenWithDir", wchTmp); - IniSectionSetInt(Settings_Section, L"FillMask", dwFillMask); - IniSectionSetInt(Settings_Section, L"SortOptions", nSortFlags); - IniSectionSetInt(Settings_Section, L"SortReverse", fSortRev); - IniSectionSetString(Settings_Section, L"FileFilter", tchFilter); - IniSectionSetInt(Settings_Section, L"NegativeFilter", bNegFilter); - IniSectionSetInt(Settings_Section, L"DefColorNoFilter", bDefCrNoFilt); - IniSectionSetInt(Settings_Section, L"DefColorFilter", bDefCrFilter); - IniSectionSetInt(Settings_Section, L"ColorNoFilter", crNoFilt); - IniSectionSetInt(Settings_Section, L"ColorFilter", crFilter); - IniSectionSetString(Settings_Section, L"ToolbarButtons", tchToolbarButtons); - IniSectionSetInt(Settings_Section, L"ShowToolbar", bShowToolbar); - IniSectionSetInt(Settings_Section, L"ShowStatusbar", bShowStatusbar); - IniSectionSetInt(Settings_Section, L"ShowDriveBox", bShowDriveBox); - IniSectionSetInt(Settings_Section, L"GotoDlgSizeX", cxGotoDlg); - IniSectionSetInt(Settings_Section, L"OpenWithDlgSizeX", cxOpenWithDlg); - IniSectionSetInt(Settings_Section, L"OpenWithDlgSizeY", cyOpenWithDlg); - IniSectionSetInt(Settings_Section, L"CopyMoveDlgSizeX", cxCopyMoveDlg); + SAVE_STRING_IF_NOT_EQ_DEFAULT(L"Quikview.exe", szQuickviewParams); + + PathRelativeToApp(Settings.tchOpenWithDir, wchTmp, COUNTOF(wchTmp), FALSE, TRUE, flagPortableMyDocs); + if (lstrcmp(wchTmp, Defaults.tchOpenWithDir) != 0) { + IniSectionSetString(Settings_Section, L"OpenWithDir", wchTmp); + } + + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"FillMask", dwFillMask); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"SortOptions", nSortFlags); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"SortReverse", fSortRev); + SAVE_STRING_IF_NOT_EQ_DEFAULT(L"FileFilter", tchFilter); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"NegativeFilter", bNegFilter); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"DefColorNoFilter", bDefCrNoFilt); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"DefColorFilter", bDefCrFilter); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"ColorNoFilter", crNoFilt); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"ColorFilter", crFilter); + SAVE_STRING_IF_NOT_EQ_DEFAULT(L"ToolbarButtons", tchToolbarButtons); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"ShowToolbar", bShowToolbar); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"ShowStatusbar", bShowStatusbar); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, L"ShowDriveBox", bShowDriveBox); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"GotoDlgSizeX", cxGotoDlg); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"OpenWithDlgSizeX", cxOpenWithDlg); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"OpenWithDlgSizeY", cyOpenWithDlg); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, L"CopyMoveDlgSizeX", cxCopyMoveDlg); + + // cleanup + IniSectionDelete(Settings_Section, L"WriteTest", FALSE); /* SaveSettingsNow(): query Window Dimensions @@ -948,15 +924,15 @@ void SaveSettings(BOOL bSaveSettingsNow) if (bSaveSettingsNow) { WINDOWPLACEMENT wndpl; - + ZeroMemory(&wndpl, sizeof(WINDOWPLACEMENT)); // GetWindowPlacement wndpl.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(hwndMain, &wndpl); - wi.x = wndpl.rcNormalPosition.left; - wi.y = wndpl.rcNormalPosition.top; - wi.cx = wndpl.rcNormalPosition.right - wndpl.rcNormalPosition.left; - wi.cy = wndpl.rcNormalPosition.bottom - wndpl.rcNormalPosition.top; + Settings.wi.x = wndpl.rcNormalPosition.left; + Settings.wi.y = wndpl.rcNormalPosition.top; + Settings.wi.cx = wndpl.rcNormalPosition.right - wndpl.rcNormalPosition.left; + Settings.wi.cy = wndpl.rcNormalPosition.bottom - wndpl.rcNormalPosition.top; } WCHAR tchPosX[32], tchPosY[32], tchSizeX[32], tchSizeY[32], tchMaximized[32]; @@ -970,10 +946,10 @@ void SaveSettings(BOOL bSaveSettingsNow) const WCHAR* const Windows_Section = L"Window"; - IniSectionSetInt(Windows_Section, tchPosX, wi.x); - IniSectionSetInt(Windows_Section, tchPosY, wi.y); - IniSectionSetInt(Windows_Section, tchSizeX, wi.cx); - IniSectionSetInt(Windows_Section, tchSizeY, wi.cy); + IniSectionSetInt(Windows_Section, tchPosX, Settings.wi.x); + IniSectionSetInt(Windows_Section, tchPosY, Settings.wi.y); + IniSectionSetInt(Windows_Section, tchSizeX, Settings.wi.cx); + IniSectionSetInt(Windows_Section, tchSizeY, Settings.wi.cy); SaveIniFile(g_wchIniFile); } diff --git a/minipath/src/Config.h b/minipath/src/Config.h index 2f0df71ca..767a1301a 100644 --- a/minipath/src/Config.h +++ b/minipath/src/Config.h @@ -24,6 +24,7 @@ extern "C" { //==== Ini-File Handling ============================================= + void InitDefaultSettings(); void LoadSettings(); void SaveSettings(BOOL); void LoadFlags(); diff --git a/minipath/src/Dialogs.c b/minipath/src/Dialogs.c index f07e5acd1..e4c1e3023 100644 --- a/minipath/src/Dialogs.c +++ b/minipath/src/Dialogs.c @@ -41,9 +41,9 @@ // // L"Title\nMessage Text" // -extern HWND hwndMain; -extern LANGID g_iPrefLANGID; -extern HICON g_hDlgIcon; +extern HWND hwndMain; +extern HICON g_hDlgIcon; +extern LANGID g_iPrefLANGID; int ErrorMessage(int iLevel, UINT uIdMsg, ...) @@ -57,7 +57,7 @@ int ErrorMessage(int iLevel, UINT uIdMsg, ...) return(0); //int t = wvsprintf(szTitle,szText,(LPVOID)((PUINT_PTR)&uIdMsg + 1)); - int t = vswprintf_s(szTitle,COUNTOF(szTitle),szText,(LPVOID)((PUINT_PTR)&uIdMsg + 1)); + int const t = clampi(vswprintf_s(szTitle,COUNTOF(szTitle),szText,(LPVOID)((PUINT_PTR)&uIdMsg + 1)), 0, 1023); szTitle[t] = L'\0'; WCHAR* c = StrChr(szTitle,L'\n'); @@ -180,8 +180,6 @@ BOOL GetDirectory2(HWND hwndParent,int iTitle,LPWSTR pszFolder,int iBase) } -extern WCHAR szCurDir[MAX_PATH + 40]; - //============================================================================= // // RunDlgProc() @@ -316,7 +314,7 @@ INT_PTR CALLBACK RunDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) sei.lpVerb = NULL; sei.lpFile = arg1; sei.lpParameters = arg2; - sei.lpDirectory = szCurDir; + sei.lpDirectory = Settings.szCurDir; sei.nShow = SW_SHOWNORMAL; if (ShellExecuteEx(&sei)) @@ -363,8 +361,8 @@ INT_PTR RunDlg(HWND hwnd) // GotoDlgProc() // // -extern HISTORY mHistory; -extern int cxGotoDlg; + +extern HISTORY g_mHistory; INT_PTR CALLBACK GotoDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -390,9 +388,9 @@ INT_PTR CALLBACK GotoDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) mmiPtMinX = rc.right-rc.left; mmiPtMaxY = rc.bottom-rc.top; - if (cxGotoDlg < (rc.right-rc.left)) - cxGotoDlg = rc.right-rc.left; - SetWindowPos(hwnd,NULL,rc.left,rc.top,cxGotoDlg,rc.bottom-rc.top,SWP_NOZORDER); + if (Settings.cxGotoDlg < (rc.right-rc.left)) + Settings.cxGotoDlg = rc.right-rc.left; + SetWindowPos(hwnd,NULL,rc.left,rc.top, Settings.cxGotoDlg,rc.bottom-rc.top,SWP_NOZORDER); SetWindowLongPtr(hwnd,GWL_STYLE,GetWindowLongPtr(hwnd,GWL_STYLE)|WS_THICKFRAME); SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); @@ -414,13 +412,13 @@ INT_PTR CALLBACK GotoDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) SendDlgItemMessage(hwnd,IDC_GOTO,CB_SETEXTENDEDUI,TRUE,0); for (int i = 0; i < HISTORY_ITEMS; i++) { - if (mHistory.psz[i]) { + if (g_mHistory.psz[i]) { int iItem = (int)SendDlgItemMessage(hwnd,IDC_GOTO, - CB_FINDSTRINGEXACT,(WPARAM)-1,(LPARAM)mHistory.psz[i]); + CB_FINDSTRINGEXACT,(WPARAM)-1,(LPARAM)g_mHistory.psz[i]); if (iItem != LB_ERR) SendDlgItemMessage(hwnd,IDC_GOTO,CB_DELETESTRING,iItem,0); SendDlgItemMessage(hwnd,IDC_GOTO,CB_INSERTSTRING,0, - (LPARAM)mHistory.psz[i]); + (LPARAM)g_mHistory.psz[i]); } } @@ -438,7 +436,7 @@ INT_PTR CALLBACK GotoDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { RECT rc; GetWindowRect(hwnd,&rc); - cxGotoDlg = rc.right-rc.left; + Settings.cxGotoDlg = rc.right-rc.left; } return FALSE; @@ -647,23 +645,6 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) // // extern WCHAR g_wchIniFile[MAX_PATH]; -extern BOOL bSaveSettings; -extern WCHAR szQuickview[MAX_PATH]; -extern WCHAR szQuickviewParams[MAX_PATH]; -extern WCHAR g_tchFavoritesDir[MAX_PATH]; -extern BOOL bNP3sFavoritesSettings; -extern BOOL bClearReadOnly; -extern BOOL bRenameOnCollision; -extern BOOL bSingleClick; -extern BOOL bTrackSelect; -extern BOOL bFullRowSelect; -extern BOOL bFocusEdit; -extern BOOL bAlwaysOnTop; -extern BOOL bMinimizeToTray; -extern BOOL fUseRecycleBin; -extern BOOL fNoConfirmDelete; -extern int iStartupDir; -extern int iEscFunction; INT_PTR CALLBACK GeneralPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -676,28 +657,28 @@ INT_PTR CALLBACK GeneralPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam if (g_hDlgIcon) { SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)g_hDlgIcon); } if (StrIsNotEmpty(g_wchIniFile)) { - if (bSaveSettings) + if (Settings.bSaveSettings) CheckDlgButton(hwnd,IDC_SAVESETTINGS,BST_CHECKED); } else EnableWindow(GetDlgItem(hwnd,IDC_SAVESETTINGS),FALSE); - if (bSingleClick) + if (Settings.bSingleClick) CheckDlgButton(hwnd,IDC_SINGLECLICK,BST_CHECKED); - if (bTrackSelect) + if (Settings.bTrackSelect) CheckDlgButton(hwnd,IDC_TRACKSELECT,BST_CHECKED); - if (bFullRowSelect) + if (Settings.bFullRowSelect) CheckDlgButton(hwnd,IDC_FULLROWSELECT,BST_CHECKED); - if (bFocusEdit) + if (Settings.bFocusEdit) CheckDlgButton(hwnd,IDC_FOCUSEDIT,BST_CHECKED); - if (bAlwaysOnTop) + if (Settings.bAlwaysOnTop) CheckDlgButton(hwnd,IDC_ALWAYSONTOP,BST_CHECKED); - if (bMinimizeToTray) + if (Settings.bMinimizeToTray) CheckDlgButton(hwnd,IDC_MINIMIZETOTRAY,BST_CHECKED); if (IniFileGetInt(g_wchIniFile, L"Settings2", L"ReuseWindow", 1)) { @@ -715,40 +696,40 @@ INT_PTR CALLBACK GeneralPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam if (IsWindowEnabled(GetDlgItem(hwnd,IDC_SAVESETTINGS))) { if (IsDlgButtonChecked(hwnd,IDC_SAVESETTINGS)) - bSaveSettings = 1; + Settings.bSaveSettings = 1; else - bSaveSettings = 0; + Settings.bSaveSettings = 0; } if (IsDlgButtonChecked(hwnd,IDC_SINGLECLICK)) - bSingleClick = 1; + Settings.bSingleClick = 1; else - bSingleClick = 0; + Settings.bSingleClick = 0; if (IsDlgButtonChecked(hwnd,IDC_TRACKSELECT)) - bTrackSelect = 1; + Settings.bTrackSelect = 1; else - bTrackSelect = 0; + Settings.bTrackSelect = 0; if (IsDlgButtonChecked(hwnd,IDC_FULLROWSELECT)) - bFullRowSelect = 1; + Settings.bFullRowSelect = 1; else - bFullRowSelect = 0; + Settings.bFullRowSelect = 0; if (IsDlgButtonChecked(hwnd,IDC_FOCUSEDIT)) - bFocusEdit = 1; + Settings.bFocusEdit = 1; else - bFocusEdit = 0; + Settings.bFocusEdit = 0; if (IsDlgButtonChecked(hwnd,IDC_ALWAYSONTOP)) - bAlwaysOnTop = 1; + Settings.bAlwaysOnTop = 1; else - bAlwaysOnTop = 0; + Settings.bAlwaysOnTop = 0; if (IsDlgButtonChecked(hwnd,IDC_MINIMIZETOTRAY)) - bMinimizeToTray = 1; + Settings.bMinimizeToTray = 1; else - bMinimizeToTray = 0; + Settings.bMinimizeToTray = 0; int const rw = IsDlgButtonChecked(hwnd, IDC_REUSEWINDOW) ? 1 : 0; IniFileSetInt(g_wchIniFile, L"Settings2", L"ReuseWindow", rw); @@ -782,22 +763,22 @@ INT_PTR CALLBACK AdvancedPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPara if (g_hDlgIcon) { SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)g_hDlgIcon); } - if (bClearReadOnly) + if (Settings.bClearReadOnly) CheckDlgButton(hwnd,IDC_CLEARREADONLY,BST_CHECKED); - if (bRenameOnCollision) + if (Settings.bRenameOnCollision) CheckDlgButton(hwnd,IDC_RENAMEONCOLLISION,BST_CHECKED); - if (fUseRecycleBin) + if (Settings.fUseRecycleBin) CheckDlgButton(hwnd,IDC_USERECYCLEBIN,BST_CHECKED); - if (fNoConfirmDelete) + if (Settings.fNoConfirmDelete) CheckDlgButton(hwnd,IDC_NOCONFIRMDELETE,BST_CHECKED); - if (iStartupDir) + if (Settings.iStartupDir) { CheckDlgButton(hwnd,IDC_STARTUPDIR,BST_CHECKED); - if (iStartupDir == 1) + if (Settings.iStartupDir == 1) CheckRadioButton(hwnd,IDC_GOTOMRU,IDC_GOTOFAV,IDC_GOTOMRU); else CheckRadioButton(hwnd,IDC_GOTOMRU,IDC_GOTOFAV,IDC_GOTOFAV); @@ -809,10 +790,10 @@ INT_PTR CALLBACK AdvancedPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPara EnableWindow(GetDlgItem(hwnd,IDC_GOTOFAV),FALSE); } - if (iEscFunction) + if (Settings.iEscFunction) { CheckDlgButton(hwnd,IDC_ESCFUNCTION,BST_CHECKED); - if (iEscFunction == 1) + if (Settings.iEscFunction == 1) CheckRadioButton(hwnd,IDC_ESCMIN,IDC_ESCEXIT,IDC_ESCMIN); else CheckRadioButton(hwnd,IDC_ESCMIN,IDC_ESCEXIT,IDC_ESCEXIT); @@ -868,42 +849,42 @@ INT_PTR CALLBACK AdvancedPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPara case PSN_APPLY: if (IsDlgButtonChecked(hwnd,IDC_CLEARREADONLY)) - bClearReadOnly = 1; + Settings.bClearReadOnly = 1; else - bClearReadOnly = 0; + Settings.bClearReadOnly = 0; if (IsDlgButtonChecked(hwnd,IDC_RENAMEONCOLLISION)) - bRenameOnCollision = 1; + Settings.bRenameOnCollision = 1; else - bRenameOnCollision = 0; + Settings.bRenameOnCollision = 0; if (IsDlgButtonChecked(hwnd,IDC_USERECYCLEBIN)) - fUseRecycleBin = 1; + Settings.fUseRecycleBin = 1; else - fUseRecycleBin = 0; + Settings.fUseRecycleBin = 0; if (IsDlgButtonChecked(hwnd,IDC_NOCONFIRMDELETE)) - fNoConfirmDelete = 1; + Settings.fNoConfirmDelete = 1; else - fNoConfirmDelete = 0; + Settings.fNoConfirmDelete = 0; if (IsDlgButtonChecked(hwnd,IDC_STARTUPDIR)) { if (IsDlgButtonChecked(hwnd,IDC_GOTOMRU)) - iStartupDir = 1; + Settings.iStartupDir = 1; else - iStartupDir = 2; + Settings.iStartupDir = 2; } else - iStartupDir = 0; + Settings.iStartupDir = 0; if (IsDlgButtonChecked(hwnd,IDC_ESCFUNCTION)) { if (IsDlgButtonChecked(hwnd,IDC_ESCMIN)) - iEscFunction = 1; + Settings.iEscFunction = 1; else - iEscFunction = 2; + Settings.iEscFunction = 2; } else - iEscFunction = 0; + Settings.iEscFunction = 0; SetWindowLongPtr(hwnd,DWLP_MSGRESULT,PSNRET_NOERROR); @@ -923,11 +904,6 @@ INT_PTR CALLBACK AdvancedPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPara // ItemsPageProc // // -extern BOOL bDefCrNoFilt; -extern BOOL bDefCrFilter; -extern COLORREF crNoFilt; -extern COLORREF crFilter; -extern COLORREF crCustom[16]; INT_PTR CALLBACK ItemsPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -950,11 +926,11 @@ INT_PTR CALLBACK ItemsPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) if (g_hDlgIcon) { SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)g_hDlgIcon); } - m_bDefCrNoFilt = bDefCrNoFilt; - m_bDefCrFilter = bDefCrFilter; + m_bDefCrNoFilt = Settings.bDefCrNoFilt; + m_bDefCrFilter = Settings.bDefCrFilter; - m_crNoFilt = crNoFilt; - m_crFilter = crFilter; + m_crNoFilt = Settings.crNoFilt; + m_crFilter = Settings.crFilter; m_hbrNoFilt = CreateSolidBrush(m_crNoFilt); m_hbrFilter = CreateSolidBrush(m_crFilter); @@ -1024,7 +1000,7 @@ INT_PTR CALLBACK ItemsPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwnd; cc.rgbResult = m_crNoFilt; - cc.lpCustColors = crCustom; + cc.lpCustColors = Settings.crCustom; cc.Flags = CC_RGBINIT | CC_SOLIDCOLOR; if (ChooseColor(&cc)) { @@ -1042,7 +1018,7 @@ INT_PTR CALLBACK ItemsPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwnd; cc.rgbResult = m_crFilter; - cc.lpCustColors = crCustom; + cc.lpCustColors = Settings.crCustom; cc.Flags = CC_RGBINIT | CC_SOLIDCOLOR; if (ChooseColor(&cc)) { @@ -1065,11 +1041,11 @@ INT_PTR CALLBACK ItemsPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) case PSN_APPLY: - bDefCrNoFilt = m_bDefCrNoFilt; - bDefCrFilter = m_bDefCrFilter; + Settings.bDefCrNoFilt = m_bDefCrNoFilt; + Settings.bDefCrFilter = m_bDefCrFilter; - crNoFilt = m_crNoFilt; - crFilter = m_crFilter; + Settings.crNoFilt = m_crNoFilt; + Settings.crFilter = m_crFilter; SetWindowLongPtr(hwnd,DWLP_MSGRESULT,PSNRET_NOERROR); @@ -1116,18 +1092,18 @@ INT_PTR CALLBACK ProgPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) MakeBitmapButton(hwnd,IDC_BROWSE_Q,g_hInstance,IDB_OPEN); MakeBitmapButton(hwnd,IDC_BROWSE_F,g_hInstance,IDB_OPEN); - lstrcpy(tch,szQuickview); + lstrcpy(tch, Settings.szQuickview); PathQuoteSpaces(tch); - if (StrIsNotEmpty(szQuickviewParams)) { + if (StrIsNotEmpty(Settings.szQuickviewParams)) { StrCatBuff(tch,L" ",COUNTOF(tch)); - StrCatBuff(tch,szQuickviewParams,COUNTOF(tch)); + StrCatBuff(tch, Settings.szQuickviewParams,COUNTOF(tch)); } SendDlgItemMessage(hwnd,IDC_QUICKVIEW,EM_LIMITTEXT,MAX_PATH - 2,0); SetDlgItemText(hwnd,IDC_QUICKVIEW,tch); SHAutoComplete(GetDlgItem(hwnd,IDC_QUICKVIEW),SHACF_FILESYSTEM); SendDlgItemMessage(hwnd,IDC_FAVORITES,EM_LIMITTEXT,MAX_PATH - 2,0); - SetDlgItemText(hwnd,IDC_FAVORITES,g_tchFavoritesDir); + SetDlgItemText(hwnd,IDC_FAVORITES, Settings.g_tchFavoritesDir); SHAutoComplete(GetDlgItem(hwnd,IDC_FAVORITES),SHACF_FILESYSTEM); } return TRUE; @@ -1215,23 +1191,23 @@ INT_PTR CALLBACK ProgPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) if (!GetDlgItemText(hwnd,IDC_QUICKVIEW,tch,MAX_PATH)) { - GetSystemDirectory(szQuickview,MAX_PATH); - PathAddBackslash(szQuickview); - lstrcat(szQuickview,L"Viewers\\Quikview.exe"); - PathQuoteSpaces(szQuickview); - lstrcpy(szQuickviewParams,L""); + GetSystemDirectory(Settings.szQuickview,MAX_PATH); + PathAddBackslash(Settings.szQuickview); + lstrcat(Settings.szQuickview,L"Viewers\\Quikview.exe"); + PathQuoteSpaces(Settings.szQuickview); + lstrcpy(Settings.szQuickviewParams,L""); } else - ExtractFirstArgument(tch,szQuickview,szQuickviewParams); + ExtractFirstArgument(tch, Settings.szQuickview, Settings.szQuickviewParams); - lstrcpy(tch, g_tchFavoritesDir); - if (!GetDlgItemText(hwnd, IDC_FAVORITES, g_tchFavoritesDir, MAX_PATH)) { - GetDefaultFavoritesDir(g_tchFavoritesDir, COUNTOF(g_tchFavoritesDir)); + lstrcpy(tch, Settings.g_tchFavoritesDir); + if (!GetDlgItemText(hwnd, IDC_FAVORITES, Settings.g_tchFavoritesDir, MAX_PATH)) { + GetDefaultFavoritesDir(Settings.g_tchFavoritesDir, COUNTOF(Settings.g_tchFavoritesDir)); } else - StrTrim(g_tchFavoritesDir,L" \""); + StrTrim(Settings.g_tchFavoritesDir,L" \""); - if (lstrcmpi(tch, g_tchFavoritesDir) != 0) { bNP3sFavoritesSettings = FALSE; } + if (lstrcmpi(tch, Settings.g_tchFavoritesDir) != 0) { Settings.bNP3sFavoritesSettings = FALSE; } SetWindowLongPtr(hwnd,DWLP_MSGRESULT,PSNRET_NOERROR); @@ -1249,10 +1225,6 @@ INT_PTR CALLBACK ProgPageProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) // // extern HWND hwndStatus; -extern int nIdFocus; - -extern WCHAR tchFilter[DL_FILTER_BUFSIZE]; -extern BOOL bNegFilter; INT_PTR OptionsPropSheet(HWND hwnd,HINSTANCE hInstance) { @@ -1306,12 +1278,12 @@ INT_PTR OptionsPropSheet(HWND hwnd,HINSTANCE hInstance) // Apply the results if (nResult) { - if (bAlwaysOnTop) + if (Settings.bAlwaysOnTop) SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); else SetWindowPos(hwnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); - if (bTrackSelect) + if (Settings.bTrackSelect) ListView_SetExtendedListViewStyleEx(hwndDirList, LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE, LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE); @@ -1319,7 +1291,7 @@ INT_PTR OptionsPropSheet(HWND hwnd,HINSTANCE hInstance) ListView_SetExtendedListViewStyleEx(hwndDirList, LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE,0); - if (bFullRowSelect) { + if (Settings.bFullRowSelect) { ListView_SetExtendedListViewStyleEx(hwndDirList, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); @@ -1333,12 +1305,12 @@ INT_PTR OptionsPropSheet(HWND hwnd,HINSTANCE hInstance) SetTheme(hwndDirList,L"Listview"); } - if (lstrcmp(tchFilter,L"*.*") || bNegFilter) { - ListView_SetTextColor(hwndDirList,(bDefCrFilter) ? GetSysColor(COLOR_WINDOWTEXT) : crFilter); + if (lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter) { + ListView_SetTextColor(hwndDirList,(Settings.bDefCrFilter) ? GetSysColor(COLOR_WINDOWTEXT) : Settings.crFilter); ListView_RedrawItems(hwndDirList,0,ListView_GetItemCount(hwndDirList)-1); } else { - ListView_SetTextColor(hwndDirList,(bDefCrNoFilt) ? GetSysColor(COLOR_WINDOWTEXT) : crNoFilt); + ListView_SetTextColor(hwndDirList,(Settings.bDefCrNoFilt) ? GetSysColor(COLOR_WINDOWTEXT) : Settings.crNoFilt); ListView_RedrawItems(hwndDirList,0,ListView_GetItemCount(hwndDirList)-1); } @@ -1352,8 +1324,6 @@ INT_PTR OptionsPropSheet(HWND hwnd,HINSTANCE hInstance) // GetFilterDlgProc() // // -extern WCHAR tchFilter[DL_FILTER_BUFSIZE]; -extern BOOL bNegFilter; static HWND s_hWnd = NULL; static HMENU s_hMenu = NULL; @@ -1389,10 +1359,10 @@ INT_PTR CALLBACK GetFilterDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPara MakeBitmapButton(hwnd,IDC_BROWSEFILTER,NULL,OBM_COMBO); - SendDlgItemMessage(hwnd,IDC_FILTER,EM_LIMITTEXT,COUNTOF(tchFilter)-1,0); - SetDlgItemText(hwnd,IDC_FILTER,tchFilter); + SendDlgItemMessage(hwnd,IDC_FILTER,EM_LIMITTEXT,COUNTOF(Settings.tchFilter)-1,0); + SetDlgItemText(hwnd,IDC_FILTER, Settings.tchFilter); - CheckDlgButton(hwnd,IDC_NEGFILTER, DlgBtnChk(bNegFilter)); + CheckDlgButton(hwnd,IDC_NEGFILTER, DlgBtnChk(Settings.bNegFilter)); CenterDlgInParent(hwnd); } @@ -1472,12 +1442,12 @@ INT_PTR CALLBACK GetFilterDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPara case IDOK: - if (GetDlgItemText(hwnd,IDC_FILTER,tchFilter,COUNTOF(tchFilter)-1)) { - bNegFilter = IsDlgButtonChecked(hwnd,IDC_NEGFILTER)?TRUE:FALSE; + if (GetDlgItemText(hwnd,IDC_FILTER, Settings.tchFilter,COUNTOF(Settings.tchFilter)-1)) { + Settings.bNegFilter = IsDlgButtonChecked(hwnd,IDC_NEGFILTER)?TRUE:FALSE; } else { - lstrcpy(tchFilter,L"*.*"); - bNegFilter = FALSE; + lstrcpy(Settings.tchFilter,L"*.*"); + Settings.bNegFilter = FALSE; } EndDialog(hwnd,IDOK); break; @@ -1510,12 +1480,12 @@ BOOL GetFilterDlg(HWND hwnd) WCHAR tchOldFilter[DL_FILTER_BUFSIZE]; BOOL bOldNegFilter; - lstrcpy(tchOldFilter,tchFilter); - bOldNegFilter = bNegFilter; + lstrcpy(tchOldFilter, Settings.tchFilter); + bOldNegFilter = Settings.bNegFilter; if (IDOK == ThemedDialogBox(g_hLngResContainer,MAKEINTRESOURCE(IDD_FILTER),hwnd,GetFilterDlgProc)) { - if (!lstrcmpi(tchFilter,tchOldFilter) && (bOldNegFilter == bNegFilter)) + if (!lstrcmpi(Settings.tchFilter,tchOldFilter) && (bOldNegFilter == Settings.bNegFilter)) return(FALSE); // Old and new filters are identical else return(TRUE); @@ -1669,8 +1639,6 @@ BOOL RenameFileDlg(HWND hwnd) // CopyMoveDlgProc() // // -extern int cxCopyMoveDlg; - INT_PTR CALLBACK CopyMoveDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -1700,9 +1668,9 @@ INT_PTR CALLBACK CopyMoveDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam mmiPtMinX = rc.right-rc.left; mmiPtMaxY = rc.bottom-rc.top; - if (cxCopyMoveDlg < (rc.right-rc.left)) - cxCopyMoveDlg = rc.right-rc.left; - SetWindowPos(hwnd,NULL,rc.left,rc.top,cxCopyMoveDlg,rc.bottom-rc.top,SWP_NOZORDER); + if (Settings.cxCopyMoveDlg < (rc.right-rc.left)) + Settings.cxCopyMoveDlg = rc.right-rc.left; + SetWindowPos(hwnd,NULL,rc.left,rc.top, Settings.cxCopyMoveDlg,rc.bottom-rc.top,SWP_NOZORDER); SetWindowLongPtr(hwnd,GWL_STYLE,GetWindowLongPtr(hwnd,GWL_STYLE)|WS_THICKFRAME); SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); @@ -1751,7 +1719,7 @@ INT_PTR CALLBACK CopyMoveDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam { RECT rc; GetWindowRect(hwnd,&rc); - cxCopyMoveDlg = rc.right-rc.left; + Settings.cxCopyMoveDlg = rc.right-rc.left; DeleteBitmapButton(hwnd,IDC_BROWSEDESTINATION); } @@ -1903,7 +1871,7 @@ BOOL CopyMoveDlg(HWND hwnd,UINT *wFunc) shfos.pFrom = tchSource; shfos.pTo = tchDestination; shfos.fFlags = FOF_NO_CONNECTED_ELEMENTS | FOF_ALLOWUNDO; - if (shfos.wFunc == FO_COPY && bRenameOnCollision) + if (shfos.wFunc == FO_COPY && Settings.bRenameOnCollision) shfos.fFlags |= FOF_RENAMEONCOLLISION; // Save item @@ -1930,7 +1898,7 @@ BOOL CopyMoveDlg(HWND hwnd,UINT *wFunc) if (SHFileOperation(&shfos) == 0) // success { - if (bClearReadOnly) + if (Settings.bClearReadOnly) { DWORD dwFileAttributes = GetFileAttributes(tchDestination); if (dwFileAttributes & FILE_ATTRIBUTE_READONLY) @@ -1952,12 +1920,7 @@ BOOL CopyMoveDlg(HWND hwnd,UINT *wFunc) } - -extern WCHAR tchOpenWithDir[MAX_PATH]; -extern int flagNoFadeHidden; - -extern int cxOpenWithDlg; -extern int cyOpenWithDlg; +extern int flagNoFadeHidden; INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -1985,11 +1948,11 @@ INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam mmiPtMinX = rc.right-rc.left; mmiPtMaxY = rc.bottom-rc.top; - if (cxOpenWithDlg < (rc.right-rc.left)) - cxOpenWithDlg = rc.right-rc.left; - if (cyOpenWithDlg < (rc.bottom-rc.top)) - cyOpenWithDlg = rc.bottom-rc.top; - SetWindowPos(hwnd,NULL,rc.left,rc.top,cxOpenWithDlg,cyOpenWithDlg,SWP_NOZORDER); + if (Settings.cxOpenWithDlg < (rc.right-rc.left)) + Settings.cxOpenWithDlg = rc.right-rc.left; + if (Settings.cyOpenWithDlg < (rc.bottom-rc.top)) + Settings.cyOpenWithDlg = rc.bottom-rc.top; + SetWindowPos(hwnd,NULL,rc.left,rc.top, Settings.cxOpenWithDlg, Settings.cyOpenWithDlg,SWP_NOZORDER); SetWindowLongPtr(hwnd,GWL_STYLE,GetWindowLongPtr(hwnd,GWL_STYLE)|WS_THICKFRAME); SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); @@ -2013,7 +1976,7 @@ INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam ListView_SetExtendedListViewStyle(GetDlgItem(hwnd,IDC_OPENWITHDIR),/*LVS_EX_FULLROWSELECT|*/LVS_EX_DOUBLEBUFFER|LVS_EX_LABELTIP); ListView_InsertColumn(GetDlgItem(hwnd,IDC_OPENWITHDIR),0,&lvc); DirList_Init(GetDlgItem(hwnd,IDC_OPENWITHDIR),NULL); - DirList_Fill(GetDlgItem(hwnd,IDC_OPENWITHDIR),tchOpenWithDir,DL_ALLOBJECTS,NULL,FALSE,flagNoFadeHidden,DS_NAME,FALSE); + DirList_Fill(GetDlgItem(hwnd,IDC_OPENWITHDIR), Settings.tchOpenWithDir,DL_ALLOBJECTS,NULL,FALSE, flagNoFadeHidden,DS_NAME,FALSE); DirList_StartIconThread(GetDlgItem(hwnd,IDC_OPENWITHDIR)); ListView_SetItemState(GetDlgItem(hwnd,IDC_OPENWITHDIR),0,LVIS_FOCUSED,LVIS_FOCUSED); @@ -2032,8 +1995,8 @@ INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam DeleteBitmapButton(hwnd,IDC_GETOPENWITHDIR); GetWindowRect(hwnd,&rc); - cxOpenWithDlg = rc.right-rc.left; - cyOpenWithDlg = rc.bottom-rc.top; + Settings.cxOpenWithDlg = rc.right-rc.left; + Settings.cyOpenWithDlg = rc.bottom-rc.top; } return FALSE; @@ -2130,9 +2093,9 @@ INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam case IDC_GETOPENWITHDIR: { - if (GetDirectory(hwnd,IDS_OPENWITH,tchOpenWithDir,tchOpenWithDir,TRUE)) + if (GetDirectory(hwnd,IDS_OPENWITH,Settings.tchOpenWithDir, Settings.tchOpenWithDir,TRUE)) { - DirList_Fill(GetDlgItem(hwnd,IDC_OPENWITHDIR),tchOpenWithDir,DL_ALLOBJECTS,NULL,FALSE,flagNoFadeHidden,DS_NAME,FALSE); + DirList_Fill(GetDlgItem(hwnd,IDC_OPENWITHDIR), Settings.tchOpenWithDir,DL_ALLOBJECTS,NULL,FALSE,flagNoFadeHidden,DS_NAME,FALSE); DirList_StartIconThread(GetDlgItem(hwnd,IDC_OPENWITHDIR)); ListView_EnsureVisible(GetDlgItem(hwnd,IDC_OPENWITHDIR),0,FALSE); ListView_SetItemState(GetDlgItem(hwnd,IDC_OPENWITHDIR),0,LVIS_FOCUSED,LVIS_FOCUSED); @@ -2208,7 +2171,7 @@ BOOL OpenWithDlg(HWND hwnd,LPDLITEM lpdliParam) if (SHFileOperation(&shfos) == 0) // success { - if (bClearReadOnly) + if (Settings.bClearReadOnly) { DWORD dwFileAttributes = GetFileAttributes(szDestination); if (dwFileAttributes & FILE_ATTRIBUTE_READONLY) @@ -2234,7 +2197,7 @@ BOOL OpenWithDlg(HWND hwnd,LPDLITEM lpdliParam) sei.lpVerb = NULL; sei.lpFile = dliOpenWith.szFileName; sei.lpParameters = szParam; - sei.lpDirectory = szCurDir; + sei.lpDirectory = Settings.szCurDir; sei.nShow = SW_SHOWNORMAL; // resolve links and get short path name @@ -2498,6 +2461,7 @@ extern WCHAR szDDEMsg[256]; extern WCHAR szDDEApp[256]; extern WCHAR szDDETopic[256]; + INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -2564,11 +2528,11 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar else CheckRadioButton(hwnd,IDC_LAUNCH,IDC_TARGET,IDC_LAUNCH); - lstrcpy(wch,szTargetApplication); + lstrcpy(wch, szTargetApplication); PathQuoteSpaces(wch); if (StrIsNotEmpty(szTargetApplicationParams)) { StrCatBuff(wch,L" ",COUNTOF(wch)); - StrCatBuff(wch,szTargetApplicationParams,COUNTOF(wch)); + StrCatBuff(wch, szTargetApplicationParams,COUNTOF(wch)); } SetDlgItemText(hwnd,IDC_TARGETPATH,wch); @@ -2578,11 +2542,11 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar CheckRadioButton(hwnd,IDC_ALWAYSRUN,IDC_USEDDE,IDC_ALWAYSRUN + i); } - lstrcpy(szTargetWndClass,szTargetApplicationWndClass); + lstrcpy(szTargetWndClass, szTargetApplicationWndClass); - SetDlgItemText(hwnd,IDC_DDEMSG,szDDEMsg); - SetDlgItemText(hwnd,IDC_DDEAPP,szDDEApp); - SetDlgItemText(hwnd,IDC_DDETOPIC,szDDETopic); + SetDlgItemText(hwnd,IDC_DDEMSG, szDDEMsg); + SetDlgItemText(hwnd,IDC_DDEAPP, szDDEApp); + SetDlgItemText(hwnd,IDC_DDETOPIC, szDDETopic); CenterDlgInParent(hwnd); diff --git a/minipath/src/Dlapi.h b/minipath/src/Dlapi.h index 328889f1b..289de19d7 100644 --- a/minipath/src/Dlapi.h +++ b/minipath/src/Dlapi.h @@ -136,14 +136,15 @@ BOOL DirList_SelectItem(HWND,LPCWSTR,LPCWSTR); //==== DlCreateFilter() and DlMatchFilter() =================================== -#define DL_FILTER_BUFSIZE 128 +#define DL_FILTER_BUFSIZE 256 typedef struct tagDL_FILTER { //dlf int nCount; WCHAR tFilterBuf[DL_FILTER_BUFSIZE]; - WCHAR *pFilter [DL_FILTER_BUFSIZE]; + WCHAR* pFilter[DL_FILTER_BUFSIZE]; BOOL bExcludeFilter; -} DL_FILTER, *PDL_FILTER; +} DL_FILTER, * PDL_FILTER; + void DirList_CreateFilter(PDL_FILTER,LPCWSTR,BOOL); diff --git a/minipath/src/Helpers.c b/minipath/src/Helpers.c index c542e6f9e..fe20433d3 100644 --- a/minipath/src/Helpers.c +++ b/minipath/src/Helpers.c @@ -24,6 +24,7 @@ #include #include #include +#include "minipath.h" #include "dlapi.h" #include "config.h" #include "resource.h" @@ -1051,26 +1052,24 @@ void PathCanonicalizeEx(LPWSTR lpSrc) // // This Expansion also searches the L"Favorites" folder // -extern WCHAR g_tchFavoritesDir[MAX_PATH]; -extern WCHAR szCurDir[MAX_PATH]; BOOL SearchPathEx(LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer) { DWORD dwRetVal = 0; if (StrEqual(lpFileName, L"..") || StrEqual(lpFileName, L".")) { - if (StrEqual(lpFileName, L"..") && PathIsRoot(szCurDir)) { + if (StrEqual(lpFileName, L"..") && PathIsRoot(Settings.szCurDir)) { lstrcpyn(lpBuffer, L"*.*", nBufferLength); dwRetVal = 1; } } if (!dwRetVal) { - dwRetVal = SearchPath(szCurDir, lpFileName, NULL, nBufferLength, lpBuffer, NULL); + dwRetVal = SearchPath(Settings.szCurDir, lpFileName, NULL, nBufferLength, lpBuffer, NULL); } // Search Favorites if no result if (!dwRetVal) { - dwRetVal = SearchPath(g_tchFavoritesDir, lpFileName, NULL, nBufferLength, lpBuffer, NULL); + dwRetVal = SearchPath(Settings.g_tchFavoritesDir, lpFileName, NULL, nBufferLength, lpBuffer, NULL); } return dwRetVal != 0; diff --git a/minipath/src/Helpers.h b/minipath/src/Helpers.h index 7d8836b80..84aad927f 100644 --- a/minipath/src/Helpers.h +++ b/minipath/src/Helpers.h @@ -143,6 +143,7 @@ inline BOOL StrIsEmptyW(LPCWSTR s) { return ((s == NULL) || (*s == L'\0')); } //==== History Functions ====================================================== #define HISTORY_ITEMS 50 + typedef struct tagHISTORY { WCHAR *psz[HISTORY_ITEMS]; // Strings diff --git a/minipath/src/minipath.c b/minipath/src/minipath.c index 24397214b..5fe6bf13c 100644 --- a/minipath/src/minipath.c +++ b/minipath/src/minipath.c @@ -30,8 +30,20 @@ #include "minipath.h" #include "resource.h" + +SETTINGS_T Settings; +SETTINGS_T Defaults; + +WCHAR g_wchIniFile[MAX_PATH]; +WCHAR g_wchIniFile2[MAX_PATH]; +WCHAR g_wchNP3IniFile[MAX_PATH]; + HICON g_hDlgIcon = NULL; +WCHAR g_tchPrefLngLocName[LOCALE_NAME_MAX_LENGTH + 1]; +LANGID g_iPrefLANGID; + + /****************************************************************************** * * Local Variables for minipath.c @@ -70,66 +82,19 @@ HWND hwndMain; HANDLE hChangeHandle = NULL; -HISTORY mHistory; +HISTORY g_mHistory; WCHAR g_wchIniFile[MAX_PATH] = L""; WCHAR g_wchIniFile2[MAX_PATH] = L""; WCHAR g_wchNP3IniFile[MAX_PATH] = L""; -BOOL bSaveSettings; -WCHAR szQuickview[MAX_PATH] = L""; -WCHAR szQuickviewParams[MAX_PATH] = L""; -WCHAR g_tchFavoritesDir[MAX_PATH] = L""; -BOOL bNP3sFavoritesSettings = FALSE; -WCHAR tchOpenWithDir[MAX_PATH] = L""; -WCHAR tchToolbarButtons[512] = L""; -WCHAR tchToolbarBitmap[MAX_PATH] = L""; -WCHAR tchToolbarBitmapHot[MAX_PATH] = L""; -WCHAR tchToolbarBitmapDisabled[MAX_PATH] = L""; -BOOL bClearReadOnly; -BOOL bRenameOnCollision; -BOOL bSingleClick; -BOOL bTrackSelect; -BOOL bFullRowSelect; -int iStartupDir; -int iEscFunction; -BOOL bFocusEdit; -BOOL bAlwaysOnTop; -BOOL g_bTransparentMode; -BOOL bMinimizeToTray; -BOOL fUseRecycleBin; -BOOL fNoConfirmDelete; -BOOL bShowToolbar; -BOOL bShowStatusbar; -BOOL bShowDriveBox; -int cxGotoDlg; -int cxOpenWithDlg; -int cyOpenWithDlg; -int cxCopyMoveDlg; - -WCHAR tchFilter[DL_FILTER_BUFSIZE]; -BOOL bNegFilter; -BOOL bDefCrNoFilt; -BOOL bDefCrFilter; -COLORREF crNoFilt; -COLORREF crFilter; -COLORREF crCustom[16]; - -WININFO wi; - +int nIdFocus = IDC_DIRLIST; int cyReBar; int cyReBarFrame; int cyDriveBoxFrame; -int nIdFocus = IDC_DIRLIST; - -WCHAR szCurDir[MAX_PATH + 40]; -DWORD dwFillMask; -int nSortFlags; -BOOL fSortRev; - -LPWSTR lpPathArg = NULL; -LPWSTR lpFilterArg = NULL; +LPWSTR lpPathArg = NULL; +LPWSTR lpFilterArg = NULL; UINT wFuncCopyMove = FO_COPY; @@ -274,7 +239,6 @@ int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPWSTR lpCmdLine,int HWND hwnd; HACCEL hAcc; - INITCOMMONCONTROLSEX icex; // Set global variable g_hInstance g_hInstance = hInstance; @@ -290,6 +254,7 @@ int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPWSTR lpCmdLine,int SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX); // Command Line, Ini File and Flags + InitDefaultSettings(); ParseCommandLine(); FindIniFile(); TestIniFile(); @@ -302,6 +267,8 @@ int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPWSTR lpCmdLine,int // Init OLE and Common Controls OleInitialize(NULL); + INITCOMMONCONTROLSEX icex; + ZeroMemory(&icex, sizeof(INITCOMMONCONTROLSEX)); icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_WIN95_CLASSES|ICC_COOL_CLASSES|ICC_BAR_CLASSES|ICC_USEREX_CLASSES; InitCommonControlsEx(&icex); @@ -430,11 +397,17 @@ HWND InitInstance(HINSTANCE hInstance,LPWSTR pszCmdLine,int nCmdShow) { UNUSED(pszCmdLine); + WININFO wi = Settings.wi; + RECT rc; - rc.left = wi.x; rc.top = wi.y; rc.right = wi.x + wi.cx; rc.bottom = wi.y + wi.cy; + rc.left = wi.x; + rc.top = wi.y; + rc.right = wi.x + wi.cx; + rc.bottom = wi.y + wi.cy; RECT rc2; MONITORINFO mi; + HMONITOR hMonitor = MonitorFromRect(&rc,MONITOR_DEFAULTTONEAREST); mi.cbSize = sizeof(mi); GetMonitorInfo(hMonitor,&mi); @@ -496,10 +469,10 @@ HWND InitInstance(HINSTANCE hInstance,LPWSTR pszCmdLine,int nCmdShow) hInstance, NULL); - if (bAlwaysOnTop) + if (Settings.bAlwaysOnTop) SetWindowPos(hwndMain,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); - if (g_bTransparentMode) { + if (Settings.g_bTransparentMode) { int const iAlphaPercent = IniFileGetInt(g_wchIniFile, L"Settings2", L"OpacityLevel", 75); SetWindowTransparentMode(hwndMain, TRUE, clampi(iAlphaPercent, 0, 100)); } @@ -521,9 +494,9 @@ HWND InitInstance(HINSTANCE hInstance,LPWSTR pszCmdLine,int nCmdShow) } // Use a startup directory - else if (iStartupDir) + else if (Settings.iStartupDir) { - if (iStartupDir == 1) + if (Settings.iStartupDir == 1) { WCHAR tch[MAX_PATH]; if (IniFileGetString(g_wchIniFile, L"Settings", L"MRUDirectory", L"", tch, COUNTOF(tch))) @@ -532,17 +505,19 @@ HWND InitInstance(HINSTANCE hInstance,LPWSTR pszCmdLine,int nCmdShow) ErrorMessage(2,IDS_ERR_STARTUPDIR); } else - DisplayPath(g_tchFavoritesDir,IDS_ERR_STARTUPDIR); + DisplayPath(Settings.g_tchFavoritesDir,IDS_ERR_STARTUPDIR); } // Favorites else if (flagGotoFavorites) - DisplayPath(g_tchFavoritesDir,IDS_ERR_FAVORITES); + DisplayPath(Settings.g_tchFavoritesDir,IDS_ERR_FAVORITES); // Update Dirlist if (!ListView_GetItemCount(hwndDirList)) PostMessage(hwndMain,WM_COMMAND,MAKELONG(IDM_VIEW_UPDATE,1),0); + Settings.wi = wi; + return(hwndMain); } @@ -632,18 +607,18 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) wndpl.length = sizeof(WINDOWPLACEMENT); GetWindowPlacement(hwnd,&wndpl); - wi.x = wndpl.rcNormalPosition.left; - wi.y = wndpl.rcNormalPosition.top; - wi.cx = wndpl.rcNormalPosition.right - wndpl.rcNormalPosition.left; - wi.cy = wndpl.rcNormalPosition.bottom - wndpl.rcNormalPosition.top; + Settings.wi.x = wndpl.rcNormalPosition.left; + Settings.wi.y = wndpl.rcNormalPosition.top; + Settings.wi.cx = wndpl.rcNormalPosition.right - wndpl.rcNormalPosition.left; + Settings.wi.cy = wndpl.rcNormalPosition.bottom - wndpl.rcNormalPosition.top; DirList_Destroy(hwndDirList); DragAcceptFiles(hwnd,FALSE); - History_Uninit(&mHistory); + History_Uninit(&g_mHistory); // prepare save - Toolbar_GetButtons(hwndToolbar, IDT_HISTORY_BACK, tchToolbarButtons, COUNTOF(tchToolbarButtons)); + Toolbar_GetButtons(hwndToolbar, IDT_HISTORY_BACK, Settings.tchToolbarButtons, COUNTOF(Settings.tchToolbarButtons)); SaveSettings(FALSE); @@ -665,12 +640,12 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { LRESULT lret = DefWindowProc(hwnd,umsg,wParam,lParam); - if (lstrcmp(tchFilter,L"*.*") || bNegFilter) { - ListView_SetTextColor(hwndDirList,(bDefCrFilter) ? GetSysColor(COLOR_WINDOWTEXT) : crFilter); + if (lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter) { + ListView_SetTextColor(hwndDirList,(Settings.bDefCrFilter) ? GetSysColor(COLOR_WINDOWTEXT) : Settings.crFilter); ListView_RedrawItems(hwndDirList,0,ListView_GetItemCount(hwndDirList)-1); } else { - ListView_SetTextColor(hwndDirList,(bDefCrNoFilt) ? GetSysColor(COLOR_WINDOWTEXT) : crNoFilt); + ListView_SetTextColor(hwndDirList,(Settings.bDefCrNoFilt) ? GetSysColor(COLOR_WINDOWTEXT) : Settings.crNoFilt); ListView_RedrawItems(hwndDirList,0,ListView_GetItemCount(hwndDirList)-1); } @@ -733,7 +708,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) case WM_SETFOCUS: - SetFocus(GetDlgItem(hwnd,nIdFocus)); + SetFocus(GetDlgItem(hwnd, nIdFocus)); break; @@ -839,7 +814,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) case SC_MINIMIZE: case SC_MINIMIZE | 0x02: ShowOwnedPopups(hwnd,FALSE); - if (!bMinimizeToTray) + if (!Settings.bMinimizeToTray) return DefWindowProc(hwnd,umsg,wParam,lParam); else { MinimizeWndToTray(hwnd); @@ -854,12 +829,12 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) } case SC_ALWAYSONTOP: - if (bAlwaysOnTop) { - bAlwaysOnTop = 0; + if (Settings.bAlwaysOnTop) { + Settings.bAlwaysOnTop = 0; SetWindowPos(hwnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); } else { - bAlwaysOnTop = 1; + Settings.bAlwaysOnTop = 1; SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); } break; @@ -972,7 +947,7 @@ LRESULT MsgCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) SetWindowPos(hwndDirList,NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); } - if (bShowDriveBox) + if (Settings.bShowDriveBox) dwDriveBoxStyle |= WS_VISIBLE; hwndDriveBox = CreateWindowEx( @@ -997,11 +972,11 @@ LRESULT MsgCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) ListView_SetExtendedListViewStyle(hwndDirList,LVS_EX_DOUBLEBUFFER|LVS_EX_LABELTIP); ListView_InsertColumn(hwndDirList,0,&lvc); DirList_Init(hwndDirList,NULL); - if (bTrackSelect) + if (Settings.bTrackSelect) ListView_SetExtendedListViewStyleEx(hwndDirList, LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE, LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE); - if (bFullRowSelect) { + if (Settings.bFullRowSelect) { ListView_SetExtendedListViewStyleEx(hwndDirList, LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT); @@ -1012,8 +987,8 @@ LRESULT MsgCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) // Drag & Drop DragAcceptFiles(hwnd,TRUE); // History - History_Init(&mHistory); - History_UpdateToolbar(&mHistory,hwndToolbar, + History_Init(&g_mHistory); + History_UpdateToolbar(&g_mHistory,hwndToolbar, IDT_HISTORY_BACK,IDT_HISTORY_FORWARD); // ToolTip with Current Directory ZeroMemory(&ti,sizeof(TOOLINFO)); @@ -1102,7 +1077,7 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance) WCHAR tchDesc[256]; WCHAR tchIndex[256]; - if (bShowToolbar) + if (Settings.bShowToolbar) dwReBarStyle |= WS_VISIBLE; hwndToolbar = CreateWindowEx(0,TOOLBARCLASSNAME,NULL,dwToolbarStyle, @@ -1112,9 +1087,9 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance) // Add normal Toolbar Bitmap hbmp = NULL; - if (StrIsNotEmpty(tchToolbarBitmap)) + if (StrIsNotEmpty(Settings.tchToolbarBitmap)) { - hbmp = _LoadBitmapFile(tchToolbarBitmap); + hbmp = _LoadBitmapFile(Settings.tchToolbarBitmap); } if (hbmp) { bExternalBitmap = TRUE; @@ -1134,9 +1109,9 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance) // Optionally add hot Toolbar Bitmap hbmp = NULL; - if (StrIsNotEmpty(tchToolbarBitmapHot)) + if (StrIsNotEmpty(Settings.tchToolbarBitmapHot)) { - hbmp = _LoadBitmapFile(tchToolbarBitmapHot); + hbmp = _LoadBitmapFile(Settings.tchToolbarBitmapHot); if (hbmp) { GetObject(hbmp,sizeof(BITMAP),&bmp); @@ -1149,9 +1124,9 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance) // Optionally add disabled Toolbar Bitmap hbmp = NULL; - if (StrIsNotEmpty(tchToolbarBitmapDisabled)) + if (StrIsNotEmpty(Settings.tchToolbarBitmapDisabled)) { - hbmp = _LoadBitmapFile(tchToolbarBitmapDisabled); + hbmp = _LoadBitmapFile(Settings.tchToolbarBitmapDisabled); if (hbmp) { GetObject(hbmp,sizeof(BITMAP),&bmp); @@ -1218,12 +1193,12 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance) SendMessage(hwndToolbar,TB_ADDBUTTONS,NUMINITIALTOOLS,(LPARAM)tbbMainWnd); //SendMessage(hwndToolbar,TB_SAVERESTORE,FALSE,(LPARAM)lptbsp); - if (Toolbar_SetButtons(hwndToolbar,IDT_HISTORY_BACK,tchToolbarButtons,tbbMainWnd,COUNTOF(tbbMainWnd)) == 0) + if (Toolbar_SetButtons(hwndToolbar,IDT_HISTORY_BACK, Settings.tchToolbarButtons,tbbMainWnd,COUNTOF(tbbMainWnd)) == 0) SendMessage(hwndToolbar,TB_ADDBUTTONS,NUMINITIALTOOLS,(LPARAM)tbbMainWnd); SendMessage(hwndToolbar,TB_GETITEMRECT,0,(LPARAM)&rc); //SendMessage(hwndToolbar,TB_SETINDENT,2,0); - if (bShowStatusbar) + if (Settings.bShowStatusbar) dwStatusbarStyle |= WS_VISIBLE; hwndStatus = CreateStatusWindow(dwStatusbarStyle,NULL,hwnd,IDC_STATUSBAR); @@ -1277,7 +1252,7 @@ void MsgThemeChanged(HWND hwnd,WPARAM wParam,LPARAM lParam) if (IsVista() && bIsAppThemed) { SetWindowLongPtr(hwndDirList,GWL_EXSTYLE,GetWindowLongPtr(hwndDirList,GWL_EXSTYLE) & ~WS_EX_CLIENTEDGE); SetWindowPos(hwndDirList,NULL,0,0,0,0,SWP_NOZORDER|SWP_FRAMECHANGED|SWP_NOMOVE|SWP_NOSIZE); - if (bFullRowSelect) + if (Settings.bFullRowSelect) SetTheme(hwndDirList,L"Explorer"); else SetTheme(hwndDirList,L"Listview"); @@ -1293,7 +1268,7 @@ void MsgThemeChanged(HWND hwnd,WPARAM wParam,LPARAM lParam) SendMessage(hwndStatus,SB_GETTEXT,ID_FILEINFO,(LPARAM)chStatus); // recreate toolbar and statusbar - Toolbar_GetButtons(hwndToolbar,IDT_HISTORY_BACK,tchToolbarButtons,COUNTOF(tchToolbarButtons)); + Toolbar_GetButtons(hwndToolbar,IDT_HISTORY_BACK, Settings.tchToolbarButtons,COUNTOF(Settings.tchToolbarButtons)); DestroyWindow(hwndToolbar); DestroyWindow(hwndReBar); @@ -1334,7 +1309,7 @@ void MsgSize(HWND hwnd,WPARAM wParam,LPARAM lParam) cx = LOWORD(lParam); cy = HIWORD(lParam); - if (bShowToolbar) + if (Settings.bShowToolbar) { /* SendMessage(hwndToolbar,WM_SIZE,0,0); GetWindowRect(hwndToolbar,&rc); @@ -1353,7 +1328,7 @@ void MsgSize(HWND hwnd,WPARAM wParam,LPARAM lParam) cy -= cyReBar + cyReBarFrame; // border } - if (bShowStatusbar) + if (Settings.bShowStatusbar) { SendMessage(hwndStatus,WM_SIZE,0,0); GetWindowRect(hwndStatus,&rc); @@ -1365,7 +1340,7 @@ void MsgSize(HWND hwnd,WPARAM wParam,LPARAM lParam) DeferWindowPos(hdwp,hwndDriveBox,NULL,x,y,cx,max(cy,100), SWP_NOZORDER | SWP_NOACTIVATE); - if (bShowDriveBox) { + if (Settings.bShowDriveBox) { GetWindowRect(hwndDriveBox,&rc); y += (rc.bottom - rc.top) + cyDriveBoxFrame; cy -= (rc.bottom - rc.top) + cyDriveBoxFrame; @@ -1417,23 +1392,23 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam) i = (SendMessage(hwndDriveBox,CB_GETCURSEL,0,0) != CB_ERR); EnableCmd(hmenu,IDM_FILE_DRIVEPROP,i); - CheckCmd(hmenu,IDM_VIEW_FOLDERS,(dwFillMask & DL_FOLDERS)); - CheckCmd(hmenu,IDM_VIEW_FILES,(dwFillMask & DL_NONFOLDERS)); - CheckCmd(hmenu,IDM_VIEW_HIDDEN,(dwFillMask & DL_INCLHIDDEN)); + CheckCmd(hmenu,IDM_VIEW_FOLDERS,(Settings.dwFillMask & DL_FOLDERS)); + CheckCmd(hmenu,IDM_VIEW_FILES,(Settings.dwFillMask & DL_NONFOLDERS)); + CheckCmd(hmenu,IDM_VIEW_HIDDEN,(Settings.dwFillMask & DL_INCLHIDDEN)); - EnableCmd(hmenu,IDM_VIEW_FILTERALL,(lstrcmp(tchFilter,L"*.*") || bNegFilter)); + EnableCmd(hmenu,IDM_VIEW_FILTERALL,(lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter)); - CheckCmd(hmenu,IDM_VIEW_TOOLBAR,bShowToolbar); - EnableCmd(hmenu,IDM_VIEW_CUSTOMIZETB,bShowToolbar); - CheckCmd(hmenu,IDM_VIEW_STATUSBAR,bShowStatusbar); - CheckCmd(hmenu,IDM_VIEW_DRIVEBOX,bShowDriveBox); + CheckCmd(hmenu,IDM_VIEW_TOOLBAR, Settings.bShowToolbar); + EnableCmd(hmenu,IDM_VIEW_CUSTOMIZETB, Settings.bShowToolbar); + CheckCmd(hmenu,IDM_VIEW_STATUSBAR, Settings.bShowStatusbar); + CheckCmd(hmenu,IDM_VIEW_DRIVEBOX, Settings.bShowDriveBox); CheckMenuRadioItem(hmenu,IDM_SORT_NAME,IDM_SORT_DATE, - IDM_SORT_NAME + nSortFlags,MF_BYCOMMAND); + IDM_SORT_NAME + Settings.nSortFlags,MF_BYCOMMAND); - CheckCmd(hmenu,IDM_SORT_REVERSE,fSortRev); + CheckCmd(hmenu,IDM_SORT_REVERSE, Settings.fSortRev); - CheckCmd(hmenu,SC_ALWAYSONTOP,bAlwaysOnTop); + CheckCmd(hmenu,SC_ALWAYSONTOP, Settings.bAlwaysOnTop); i = (StrIsNotEmpty(g_wchIniFile) || StrIsNotEmpty(g_wchIniFile2)); EnableCmd(hmenu,IDM_VIEW_SAVESETTINGS,i); @@ -1469,12 +1444,12 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) WCHAR tch[64]; if (DriveBox_GetSelDrive(hwndDriveBox,tch,COUNTOF(tch),TRUE) - && !PathIsSameRoot(szCurDir,tch)) + && !PathIsSameRoot(Settings.szCurDir,tch)) { if (!ChangeDirectory(hwnd,tch,1)) { ErrorMessage(2,IDS_ERR_CD); - DriveBox_SelectDrive(hwndDriveBox,szCurDir); + DriveBox_SelectDrive(hwndDriveBox, Settings.szCurDir); } } SetFocus(hwndDirList); @@ -1600,7 +1575,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) sei.lpVerb = NULL; sei.lpFile = dli.szFileName; sei.lpParameters = NULL; - sei.lpDirectory = szCurDir; + sei.lpDirectory = Settings.szCurDir; sei.nShow = SW_SHOWNORMAL; ShellExecuteEx(&sei); @@ -1630,8 +1605,8 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) else GetShortPathName(dli.szFileName,szTmp,COUNTOF(szTmp)); - if (StrIsNotEmpty(szQuickviewParams)) { - StrCatBuff(szParam,szQuickviewParams,COUNTOF(szParam)); + if (StrIsNotEmpty(Settings.szQuickviewParams)) { + StrCatBuff(szParam, Settings.szQuickviewParams,COUNTOF(szParam)); StrCatBuff(szParam,L" ",COUNTOF(szParam)); } StrCatBuff(szParam,szTmp,COUNTOF(szParam)); @@ -1641,9 +1616,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) sei.fMask = 0; sei.hwnd = hwnd; sei.lpVerb = NULL; - sei.lpFile = szQuickview; + sei.lpFile = Settings.szQuickview; sei.lpParameters = szParam; - sei.lpDirectory = szCurDir; + sei.lpDirectory = Settings.szCurDir; sei.nShow = SW_SHOWNORMAL; ShellExecuteEx(&sei); @@ -1697,7 +1672,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) ofn.lpstrFile = szNewFile; ofn.nMaxFile = MAX_PATH; ofn.lpstrTitle = szTitle; - ofn.lpstrInitialDir = szCurDir; + ofn.lpstrInitialDir = Settings.szCurDir; ofn.Flags = OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT | OFN_NODEREFERENCELINKS | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST; @@ -1816,7 +1791,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) if (!bSuccess) ErrorMessage(2,IDS_ERR_SAVEAS1,dli.szDisplayName); - if (bSuccess && bClearReadOnly) + if (bSuccess && Settings.bClearReadOnly) { DWORD dwFileAttributes = GetFileAttributes(szNewFile); if (dwFileAttributes & FILE_ATTRIBUTE_READONLY) @@ -1862,9 +1837,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) shfos.wFunc = FO_DELETE; shfos.pFrom = tch; shfos.pTo = NULL; - if (fUseRecycleBin && (LOWORD(wParam) != IDM_FILE_DELETE2)) + if (Settings.fUseRecycleBin && (LOWORD(wParam) != IDM_FILE_DELETE2)) shfos.fFlags = FOF_ALLOWUNDO; - if (fNoConfirmDelete || LOWORD(wParam) == IDM_FILE_DELETE3) + if (Settings.fNoConfirmDelete || LOWORD(wParam) == IDM_FILE_DELETE3) shfos.fFlags |= FOF_NOCONFIRMATION; SHFileOperation(&shfos); @@ -1936,7 +1911,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) GetModuleFileName(NULL,szModuleName,COUNTOF(szModuleName)); - lstrcpy(szParameters,szCurDir); + lstrcpy(szParameters, Settings.szCurDir); PathQuoteSpaces(szParameters); lstrcat(szParameters,L" -f"); @@ -1978,30 +1953,30 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_FOLDERS: - if (dwFillMask & DL_FOLDERS) - dwFillMask &= (~DL_FOLDERS); + if (Settings.dwFillMask & DL_FOLDERS) + Settings.dwFillMask &= (~DL_FOLDERS); else - dwFillMask |= DL_FOLDERS; + Settings.dwFillMask |= DL_FOLDERS; SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_VIEW_UPDATE,1),0); ListView_EnsureVisible(hwndDirList,0,FALSE); // not done by update break; case IDM_VIEW_FILES: - if (dwFillMask & DL_NONFOLDERS) - dwFillMask &= (~DL_NONFOLDERS); + if (Settings.dwFillMask & DL_NONFOLDERS) + Settings.dwFillMask &= (~DL_NONFOLDERS); else - dwFillMask |= DL_NONFOLDERS; + Settings.dwFillMask |= DL_NONFOLDERS; SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_VIEW_UPDATE,1),0); ListView_EnsureVisible(hwndDirList,0,FALSE); // not done by update break; case IDM_VIEW_HIDDEN: - if (dwFillMask & DL_INCLHIDDEN) - dwFillMask &= (~DL_INCLHIDDEN); + if (Settings.dwFillMask & DL_INCLHIDDEN) + Settings.dwFillMask &= (~DL_INCLHIDDEN); else - dwFillMask |= DL_INCLHIDDEN; + Settings.dwFillMask |= DL_INCLHIDDEN; SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_VIEW_UPDATE,1),0); ListView_EnsureVisible(hwndDirList,0,FALSE); // not done by update break; @@ -2023,16 +1998,16 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) } } Toolbar_SetButtonImage(hwndToolbar,IDT_VIEW_FILTER, - (lstrcmp(tchFilter,L"*.*") || bNegFilter) ? TBFILTERBMP : TBFILTERBMP+1); + (lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter) ? TBFILTERBMP : TBFILTERBMP+1); break; case IDM_VIEW_FILTERALL: - if (lstrcmp(tchFilter,L"*.*") || bNegFilter) { + if (lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter) { DLITEM dli; - lstrcpy(tchFilter,L"*.*"); - bNegFilter = FALSE; + lstrcpy(Settings.tchFilter,L"*.*"); + Settings.bNegFilter = FALSE; // Store information about currently selected item dli.mask = DLI_ALL; @@ -2057,7 +2032,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_FAVORITES: // Goto Favorites Directory - DisplayPath(g_tchFavoritesDir,IDS_ERR_FAVORITES); + DisplayPath(Settings.g_tchFavoritesDir,IDS_ERR_FAVORITES); break; @@ -2068,7 +2043,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) sei.fMask = 0; sei.hwnd = hwnd; sei.lpVerb = NULL; - sei.lpFile = g_tchFavoritesDir; + sei.lpFile = Settings.g_tchFavoritesDir; sei.lpParameters = NULL; sei.lpDirectory = NULL; sei.nShow = SW_SHOWNORMAL; @@ -2080,13 +2055,13 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_TOOLBAR: - if (bShowToolbar) { + if (Settings.bShowToolbar) { ShowWindow(hwndReBar,SW_HIDE); - bShowToolbar = 0; + Settings.bShowToolbar = 0; } else { ShowWindow(hwndReBar,SW_SHOW); - bShowToolbar = 1; + Settings.bShowToolbar = 1; } SendWMSize(hwnd); break; @@ -2098,28 +2073,28 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_STATUSBAR: - if (bShowStatusbar) { + if (Settings.bShowStatusbar) { ShowWindow(hwndStatus,SW_HIDE); - bShowStatusbar = 0; + Settings.bShowStatusbar = 0; } else { ShowWindow(hwndStatus,SW_SHOW); - bShowStatusbar = 1; + Settings.bShowStatusbar = 1; } SendWMSize(hwnd); break; case IDM_VIEW_DRIVEBOX: - if (bShowDriveBox) { + if (Settings.bShowDriveBox) { ShowWindow(hwndDriveBox,SW_HIDE); - bShowDriveBox = 0; + Settings.bShowDriveBox = 0; if (GetDlgCtrlID(GetFocus()) == IDC_DRIVEBOX) SetFocus(hwndDirList); } else { ShowWindow(hwndDriveBox,SW_SHOW); - bShowDriveBox = 1; + Settings.bShowDriveBox = 1; } SendWMSize(hwnd); break; @@ -2147,18 +2122,20 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) if (IniFileSetString(g_wchIniFile, L"Settings", L"WriteTest", L"ok")) { // prepare save - Toolbar_GetButtons(hwndToolbar, IDT_HISTORY_BACK, tchToolbarButtons, COUNTOF(tchToolbarButtons)); + Toolbar_GetButtons(hwndToolbar, IDT_HISTORY_BACK, Settings.tchToolbarButtons, COUNTOF(Settings.tchToolbarButtons)); BeginWaitCursor(); SaveSettings(TRUE); EndWaitCursor(); ErrorMessage(0,IDS_SAVESETTINGS); } - else - ErrorMessage(2,IDS_ERR_INIWRITE); + else { + ErrorMessage(2, IDS_ERR_INIWRITE); + } + } + else { + ErrorMessage(2, IDS_ERR_INICREATE); } - else - ErrorMessage(2,IDS_ERR_INICREATE); } break; @@ -2170,37 +2147,37 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_OPTIONS: OptionsPropSheet(hwnd, g_hLngResContainer); - bHasQuickview = PathFileExists(szQuickview); + bHasQuickview = PathFileExists(Settings.szQuickview); break; case IDM_SORT_NAME: - nSortFlags = DS_NAME; - DirList_Sort(hwndDirList,nSortFlags,fSortRev); + Settings.nSortFlags = DS_NAME; + DirList_Sort(hwndDirList, Settings.nSortFlags, Settings.fSortRev); break; case IDM_SORT_SIZE: - nSortFlags = DS_SIZE; - DirList_Sort(hwndDirList,nSortFlags,fSortRev); + Settings.nSortFlags = DS_SIZE; + DirList_Sort(hwndDirList, Settings.nSortFlags, Settings.fSortRev); break; case IDM_SORT_TYPE: - nSortFlags = DS_TYPE; - DirList_Sort(hwndDirList,nSortFlags,fSortRev); + Settings.nSortFlags = DS_TYPE; + DirList_Sort(hwndDirList, Settings.nSortFlags, Settings.fSortRev); break; case IDM_SORT_DATE: - nSortFlags = DS_LASTMOD; - DirList_Sort(hwndDirList,nSortFlags,fSortRev); + Settings.nSortFlags = DS_LASTMOD; + DirList_Sort(hwndDirList, Settings.nSortFlags, Settings.fSortRev); break; case IDM_SORT_REVERSE: - fSortRev = !fSortRev; - DirList_Sort(hwndDirList,nSortFlags,fSortRev); + Settings.fSortRev = !Settings.fSortRev; + DirList_Sort(hwndDirList, Settings.nSortFlags, Settings.fSortRev); break; @@ -2232,9 +2209,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case ACC_ESCAPE: if (SendMessage(hwndDriveBox,CB_GETDROPPEDSTATE,0,0)) SendMessage(hwndDriveBox,CB_SHOWDROPDOWN,0,0); - else if (iEscFunction == 1) + else if (Settings.iEscFunction == 1) SendMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,0); - else if (iEscFunction == 2) + else if (Settings.iEscFunction == 2) PostMessage(hwnd,WM_CLOSE,0,0); break; @@ -2256,7 +2233,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) nId = IDC_DIRLIST; } - if (nId == IDC_DRIVEBOX && !bShowDriveBox) + if (nId == IDC_DRIVEBOX && !Settings.bShowDriveBox) nId = IDC_DIRLIST; SetFocus(GetDlgItem(hwnd,nId)); @@ -2266,17 +2243,17 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case ACC_TOGGLE_FOCUSEDIT: - if (bFocusEdit) - bFocusEdit = 0; + if (Settings.bFocusEdit) + Settings.bFocusEdit = 0; else - bFocusEdit = 1; + Settings.bFocusEdit = 1; break; case ACC_SWITCHTRANSPARENCY: - g_bTransparentMode = !g_bTransparentMode; + Settings.g_bTransparentMode = !Settings.g_bTransparentMode; int const iAlphaPercent = IniFileGetInt(g_wchIniFile, L"Settings2", L"OpacityLevel", 75); - SetWindowTransparentMode(hwndMain, g_bTransparentMode, clampi(iAlphaPercent, 0, 100)); + SetWindowTransparentMode(hwndMain, Settings.g_bTransparentMode, clampi(iAlphaPercent, 0, 100)); break; @@ -2342,38 +2319,38 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDT_HISTORY_BACK: - if (History_CanBack(&mHistory)) + if (History_CanBack(&g_mHistory)) { WCHAR tch[MAX_PATH]; - History_Back(&mHistory,tch,COUNTOF(tch)); + History_Back(&g_mHistory,tch,COUNTOF(tch)); if (!ChangeDirectory(hwnd,tch,0)) ErrorMessage(2,IDS_ERR_CD); } else MessageBeep(0); - History_UpdateToolbar(&mHistory,hwndToolbar, + History_UpdateToolbar(&g_mHistory,hwndToolbar, IDT_HISTORY_BACK,IDT_HISTORY_FORWARD); break; case IDT_HISTORY_FORWARD: - if (History_CanForward(&mHistory)) + if (History_CanForward(&g_mHistory)) { WCHAR tch[MAX_PATH]; - History_Forward(&mHistory,tch,COUNTOF(tch)); + History_Forward(&g_mHistory,tch,COUNTOF(tch)); if (!ChangeDirectory(hwnd,tch,0)) ErrorMessage(2,IDS_ERR_CD); } else MessageBeep(0); - History_UpdateToolbar(&mHistory,hwndToolbar, + History_UpdateToolbar(&g_mHistory,hwndToolbar, IDT_HISTORY_BACK,IDT_HISTORY_FORWARD); break; case IDT_UPDIR: { - if (!PathIsRoot(szCurDir)) + if (!PathIsRoot(Settings.szCurDir)) { if (!ChangeDirectory(hwnd,L"..",1)) ErrorMessage(2,IDS_ERR_CD); @@ -2386,7 +2363,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDT_ROOT: { - if (!PathIsRoot(szCurDir)) + if (!PathIsRoot(Settings.szCurDir)) { if (!ChangeDirectory(hwnd,L"\\",1)) ErrorMessage(2,IDS_ERR_CD); @@ -2512,10 +2489,10 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDT_FILE_DELETE: if (ListView_GetSelectedCount(hwndDirList)) { - BOOL fUseRecycleBin2 = fUseRecycleBin; - fUseRecycleBin = 1; + BOOL const fUseRecycleBin2 = Settings.fUseRecycleBin; + Settings.fUseRecycleBin = 1; SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_FILE_DELETE,1),0); - fUseRecycleBin = fUseRecycleBin2; + Settings.fUseRecycleBin = fUseRecycleBin2; } else MessageBeep(0); @@ -2628,7 +2605,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) { wsprintf(tchnum,L"%u",ListView_GetItemCount(hwndDirList)); FormatNumberStr(tchnum); - FormatLngStringW(tch,COUNTOF(tch),(lstrcmp(tchFilter,L"*.*") || bNegFilter)?IDS_NUMFILES2:IDS_NUMFILES,tchnum); + FormatLngStringW(tch,COUNTOF(tch),(lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter)?IDS_NUMFILES2:IDS_NUMFILES,tchnum); } StatusSetText(hwndStatus,ID_FILEINFO,tch); @@ -2639,7 +2616,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) case NM_CLICK: - if (bSingleClick && ListView_GetSelectedCount(hwndDirList)) + if (Settings.bSingleClick && ListView_GetSelectedCount(hwndDirList)) { if (IsKeyDown(VK_MENU)) SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_FILE_PROPERTIES,1),0); @@ -2688,10 +2665,10 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) { case TBN_ENDADJUST: - History_UpdateToolbar(&mHistory,hwndToolbar, + History_UpdateToolbar(&g_mHistory,hwndToolbar, IDT_HISTORY_BACK,IDT_HISTORY_FORWARD); Toolbar_SetButtonImage(hwndToolbar,IDT_VIEW_FILTER, - (lstrcmp(tchFilter,L"*.*") || bNegFilter) ? TBFILTERBMP : TBFILTERBMP+1); + (lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter) ? TBFILTERBMP : TBFILTERBMP+1); break; case TBN_QUERYDELETE: @@ -2736,7 +2713,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) if (((LPTOOLTIPTEXT)lParam)->uFlags & TTF_IDISHWND) { - PathCompactPathEx(((LPTOOLTIPTEXT)lParam)->szText,szCurDir, + PathCompactPathEx(((LPTOOLTIPTEXT)lParam)->szText, Settings.szCurDir, COUNTOF(((LPTOOLTIPTEXT)lParam)->szText),0); } @@ -2796,25 +2773,26 @@ BOOL ChangeDirectory(HWND hwnd,LPCWSTR lpszNewDir,BOOL bUpdateHistory) int iTopItem = ListView_GetTopIndex(hwndDirList); - GetCurrentDirectory(COUNTOF(szCurDir),szCurDir); + GetCurrentDirectory(COUNTOF(Settings.szCurDir), Settings.szCurDir); - SetWindowPathTitle(hwnd,szCurDir); + SetWindowPathTitle(hwnd, Settings.szCurDir); - if (lstrcmp(tchFilter,L"*.*") || bNegFilter) { - ListView_SetTextColor(hwndDirList,(bDefCrFilter) ? GetSysColor(COLOR_WINDOWTEXT) : crFilter); + if (lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter) { + ListView_SetTextColor(hwndDirList,(Settings.bDefCrFilter) ? GetSysColor(COLOR_WINDOWTEXT) : Settings.crFilter); Toolbar_SetButtonImage(hwndToolbar,IDT_VIEW_FILTER,TBFILTERBMP); } else { - ListView_SetTextColor(hwndDirList,(bDefCrNoFilt) ? GetSysColor(COLOR_WINDOWTEXT) : crNoFilt); + ListView_SetTextColor(hwndDirList,(Settings.bDefCrNoFilt) ? GetSysColor(COLOR_WINDOWTEXT) : Settings.crNoFilt); Toolbar_SetButtonImage(hwndToolbar,IDT_VIEW_FILTER,TBFILTERBMP+1); } - cItems = DirList_Fill(hwndDirList,szCurDir,dwFillMask,tchFilter,bNegFilter,flagNoFadeHidden,nSortFlags,fSortRev); + cItems = DirList_Fill(hwndDirList, Settings.szCurDir, Settings.dwFillMask, + Settings.tchFilter, Settings.bNegFilter,flagNoFadeHidden, Settings.nSortFlags, Settings.fSortRev); DirList_StartIconThread(hwndDirList); // Get long pathname - DirList_GetLongPathName(hwndDirList,szCurDir); - SetCurrentDirectory(szCurDir); + DirList_GetLongPathName(hwndDirList, Settings.szCurDir); + SetCurrentDirectory(Settings.szCurDir); if (cItems > 0) ListView_SetItemState(hwndDirList,0,LVIS_FOCUSED,LVIS_FOCUSED); @@ -2830,7 +2808,7 @@ BOOL ChangeDirectory(HWND hwnd,LPCWSTR lpszNewDir,BOOL bUpdateHistory) // setup new change notification handle FindCloseChangeNotification(hChangeHandle); - hChangeHandle = FindFirstChangeNotification(szCurDir,FALSE, + hChangeHandle = FindFirstChangeNotification(Settings.szCurDir,FALSE, FILE_NOTIFY_CHANGE_FILE_NAME | \ FILE_NOTIFY_CHANGE_DIR_NAME | \ FILE_NOTIFY_CHANGE_ATTRIBUTES | \ @@ -2838,18 +2816,18 @@ BOOL ChangeDirectory(HWND hwnd,LPCWSTR lpszNewDir,BOOL bUpdateHistory) FILE_NOTIFY_CHANGE_LAST_WRITE); DriveBox_Fill(hwndDriveBox); - DriveBox_SelectDrive(hwndDriveBox,szCurDir); + DriveBox_SelectDrive(hwndDriveBox, Settings.szCurDir); wsprintf(tchnum,L"%u",cItems); FormatNumberStr(tchnum); - FormatLngStringW(tch,COUNTOF(tch),(lstrcmp(tchFilter,L"*.*") || bNegFilter)?IDS_NUMFILES2:IDS_NUMFILES,tchnum); + FormatLngStringW(tch,COUNTOF(tch),(lstrcmp(Settings.tchFilter,L"*.*") || Settings.bNegFilter)?IDS_NUMFILES2:IDS_NUMFILES,tchnum); StatusSetText(hwndStatus,ID_FILEINFO,tch); // Update History if (bUpdateHistory) { - History_Add(&mHistory,szCurDir); - History_UpdateToolbar(&mHistory,hwndToolbar, + History_Add(&g_mHistory, Settings.szCurDir); + History_UpdateToolbar(&g_mHistory,hwndToolbar, IDT_HISTORY_BACK,IDT_HISTORY_FORWARD); } @@ -2921,15 +2899,15 @@ void ParseCommandLine() case L'P': if (*CharUpper(lp1+1) == L'D' || *CharUpper(lp1+1) == L'S') { flagPosParam = 1; - wi.x = wi.y = wi.cx = wi.cy = CW_USEDEFAULT; + Settings.wi.x = Settings.wi.y = Settings.wi.cx = Settings.wi.cy = CW_USEDEFAULT; } else if (ExtractFirstArgument(lp2,lp1,lp2)) { int itok = - swscanf_s(lp1,L"%i,%i,%i,%i",&wi.x,&wi.y,&wi.cx,&wi.cy); + swscanf_s(lp1,L"%i,%i,%i,%i",&Settings.wi.x,&Settings.wi.y,&Settings.wi.cx,&Settings.wi.cy); if (itok == 4) { // scan successful flagPosParam = 1; - if (wi.cx < 1) wi.cx = CW_USEDEFAULT; - if (wi.cy < 1) wi.cy = CW_USEDEFAULT; + if (Settings.wi.cx < 1) Settings.wi.cx = CW_USEDEFAULT; + if (Settings.wi.cy < 1) Settings.wi.cy = CW_USEDEFAULT; } } break; @@ -3402,7 +3380,7 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew) if (IsIconic(hwnd)) ShowWindowAsync(hwnd,SW_RESTORE); - if (bFocusEdit) + if (Settings.bFocusEdit) SetForegroundWindow(hwnd); if (lpFileName) @@ -3473,7 +3451,7 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew) sei.lpVerb = NULL; sei.lpFile = szFile; sei.lpParameters = szParam; - sei.lpDirectory = szCurDir; + sei.lpDirectory = Settings.szCurDir; sei.nShow = SW_SHOWNORMAL; ShellExecuteEx(&sei); @@ -3545,7 +3523,7 @@ void LaunchTarget(LPCWSTR lpFileName,BOOL bOpenNew) sei.lpFile = lpParam; sei.lpParameters = NULL; } - sei.lpDirectory = szCurDir; + sei.lpDirectory = Settings.szCurDir; sei.nShow = SW_SHOWNORMAL; ShellExecuteEx(&sei); diff --git a/minipath/src/minipath.h b/minipath/src/minipath.h index 57d7b1b75..082fbed7b 100644 --- a/minipath/src/minipath.h +++ b/minipath/src/minipath.h @@ -89,6 +89,65 @@ typedef struct _wi int cy; } WININFO; +// ---------------------------------------------------------------------------- + +#define DL_FILTER_BUFSIZE 256 // should correspond to Dlapi.h def + +typedef struct _settings_t +{ + BOOL bSaveSettings; + WCHAR szQuickview[MAX_PATH]; + WCHAR szQuickviewParams[MAX_PATH]; + WCHAR g_tchFavoritesDir[MAX_PATH]; + BOOL bNP3sFavoritesSettings; + WCHAR tchOpenWithDir[MAX_PATH]; + WCHAR tchToolbarButtons[512]; + WCHAR tchToolbarBitmap[MAX_PATH]; + WCHAR tchToolbarBitmapHot[MAX_PATH]; + WCHAR tchToolbarBitmapDisabled[MAX_PATH]; + BOOL bClearReadOnly; + BOOL bRenameOnCollision; + BOOL bSingleClick; + BOOL bTrackSelect; + BOOL bFullRowSelect; + int iStartupDir; + int iEscFunction; + BOOL bFocusEdit; + BOOL bAlwaysOnTop; + BOOL g_bTransparentMode; + BOOL bMinimizeToTray; + BOOL fUseRecycleBin; + BOOL fNoConfirmDelete; + BOOL bShowToolbar; + BOOL bShowStatusbar; + BOOL bShowDriveBox; + int cxGotoDlg; + int cxOpenWithDlg; + int cyOpenWithDlg; + int cxCopyMoveDlg; + + BOOL bHasQuickview; + + WCHAR tchFilter[DL_FILTER_BUFSIZE]; + BOOL bNegFilter; + BOOL bDefCrNoFilt; + BOOL bDefCrFilter; + COLORREF crNoFilt; + COLORREF crFilter; + COLORREF crCustom[16]; + + WININFO wi; + + WCHAR szCurDir[MAX_PATH + 40]; + DWORD dwFillMask; + int nSortFlags; + BOOL fSortRev; + +} SETTINGS_T, * PSETTINGS_T; + +extern SETTINGS_T Settings; +extern SETTINGS_T Defaults; + //==== Function Declarations ================================================== BOOL InitApplication(HINSTANCE); diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index d22fd8a7a..c9b83e1bf 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 BETA diff --git a/src/VersionEx.h b/src/VersionEx.h index 7b64fbf3f..2d8b043f8 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -7,8 +7,8 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 19 -#define VERSION_REV 723 -#define VERSION_BUILD 2404 +#define VERSION_REV 725 +#define VERSION_BUILD 2405 #define SCINTILLA_VER 420 #define ONIGURUMA_REGEX_VER 6.9.3 #define VERSION_PATCH BETA From d1007a11a217f92a58ac44d903db7d44284a56a5 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Thu, 25 Jul 2019 09:23:33 +0200 Subject: [PATCH 5/9] + upd: VS2019 v,16.2.0 - Compiler v192227905 --- Versions/build.txt | 2 +- res/Notepad3.exe.manifest.conf | 2 +- src/Version.h | 12 +++++++++--- src/VersionEx.h | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Versions/build.txt b/Versions/build.txt index 075c4f664..37bdb5cae 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2405 +2406 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index c9b83e1bf..c4ec9dfc1 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 BETA diff --git a/src/Version.h b/src/Version.h index 34dc5092d..b0f3f6012 100644 --- a/src/Version.h +++ b/src/Version.h @@ -66,10 +66,16 @@ // Compiler specific #if defined(_MSC_VER) - #if (_MSC_VER >= 1920) - #if(_MSC_FULL_VER >= 192127702) + #if (_MSC_VER >= 1922) + #if(_MSC_FULL_VER >= 192227905) + #define VER_CPL MS Visual C++ 2019 v16.2.0 + #endif + #elif (_MSC_VER >= 1921) + #if(_MSC_FULL_VER >= 192127702) #define VER_CPL MS Visual C++ 2019 v16.1.(0-6) - #elif(_MSC_FULL_VER >= 192027508) + #endif + #elif (_MSC_VER >= 1920) + #if(_MSC_FULL_VER >= 192027508) #define VER_CPL MS Visual C++ 2019 v16.0.(0-4) #elif(_MSC_FULL_VER >= 192027027) #define VER_CPL MS Visual C++ 2019 v16.0.Prev(1-4) diff --git a/src/VersionEx.h b/src/VersionEx.h index 2d8b043f8..6a6f47e22 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -8,7 +8,7 @@ #define VERSION_MAJOR 5 #define VERSION_MINOR 19 #define VERSION_REV 725 -#define VERSION_BUILD 2405 +#define VERSION_BUILD 2406 #define SCINTILLA_VER 420 #define ONIGURUMA_REGEX_VER 6.9.3 #define VERSION_PATCH BETA From 98501b115593a864daccb90248f450236f1c7565 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Thu, 25 Jul 2019 11:57:06 +0200 Subject: [PATCH 6/9] + chg: reject "NewLine" for AutoComplete fill-up + add: settings for allowed AutoC fill-up chars --- Build/Notepad3.ini | 1 + src/Config/Config.cpp | 5 ++++- src/Edit.c | 34 +++++++++++++++++++++++++++++++--- src/Edit.h | 1 + src/Helpers.h | 1 + src/Notepad3.c | 26 ++++++++++++++++++++++++++ src/TypeDefs.h | 1 + 7 files changed, 65 insertions(+), 4 deletions(-) diff --git a/Build/Notepad3.ini b/Build/Notepad3.ini index 2f4458018..6773aaf75 100644 --- a/Build/Notepad3.ini +++ b/Build/Notepad3.ini @@ -39,6 +39,7 @@ SettingsVersion=4 ;WebTemplate2=https://en.wikipedia.org/w/index.php?search=%s ;ExtendedWhiteSpaceChars=: ;AutoCompleteWordCharSet= +;AutoCompleteFillUpChars= ;UpdateDelayMarkAllOccurrences=50 ;CurrentLineHorizontalSlop=40 ;CurrentLineVerticalSlop=5 diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index d277afb18..7000585c9 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -728,6 +728,10 @@ void LoadSettings() IniSectionGetString(Settings2_Section, L"AutoCompleteWordCharSet", Defaults2.AutoCompleteWordCharSet, Settings2.AutoCompleteWordCharSet, COUNTOF(Settings2.AutoCompleteWordCharSet)); + Defaults2.AutoCompleteFillUpChars[0] = L'\0'; + IniSectionGetString(Settings2_Section, L"AutoCompleteFillUpChars", Defaults2.AutoCompleteFillUpChars, + Settings2.AutoCompleteFillUpChars, COUNTOF(Settings2.AutoCompleteFillUpChars)); + StringCchCopyW(Defaults2.TimeStamp, COUNTOF(Defaults2.TimeStamp), L"\\$Date:[^\\$]+\\$ | $Date: %Y/%m/%d %H:%M:%S $"); IniSectionGetString(Settings2_Section, L"TimeStamp", Defaults2.TimeStamp, Settings2.TimeStamp, COUNTOF(Settings2.TimeStamp)); @@ -743,7 +747,6 @@ void LoadSettings() StringCchCopyW(Defaults2.WebTemplate2, COUNTOF(Defaults2.WebTemplate2), L"https://en.wikipedia.org/w/index.php?search=%s"); IniSectionGetString(Settings2_Section, L"WebTemplate2", Defaults2.WebTemplate2, Settings2.WebTemplate2, COUNTOF(Settings2.WebTemplate2)); - // -------------------------------------------------------------------------- const WCHAR* const Settings_Section = L"Settings"; // -------------------------------------------------------------------------- diff --git a/src/Edit.c b/src/Edit.c index 543c7a6ed..6309bcffc 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -64,6 +64,9 @@ static char WordCharsAccelerated[ANSI_CHAR_BUFFER] = { '\0' }; static char WhiteSpaceCharsAccelerated[ANSI_CHAR_BUFFER] = { '\0' }; static char PunctuationCharsAccelerated[1] = { '\0' }; // empty! +static char AutoCompleteFillUpChars[64] = { '\0' }; +static bool s_ACFillUpCharsHaveNewLn = false; + // Default Codepage and Character Set #define W_AUTOC_WORD_ANSI1252 L"#$%&@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ" static char AutoCompleteWordCharSet[ANSI_CHAR_BUFFER] = { L'\0' }; @@ -255,6 +258,22 @@ void EditInitWordDelimiter(HWND hwnd) StringCchCopyA(DelimCharsAccel, COUNTOF(DelimCharsAccel), WhiteSpaceCharsDefault); StringCchCatA(DelimCharsAccel, COUNTOF(DelimCharsAccel), lineEnds); + if (StrIsNotEmpty(Settings2.AutoCompleteFillUpChars)) + { + WideCharToMultiByte(Encoding_SciCP, 0, Settings2.AutoCompleteFillUpChars, -1, AutoCompleteFillUpChars, COUNTOF(AutoCompleteFillUpChars), NULL, NULL); + UnSlash(AutoCompleteFillUpChars, Encoding_SciCP); + + s_ACFillUpCharsHaveNewLn = false; + int i = 0; + while (AutoCompleteFillUpChars[i]) { + if ((AutoCompleteFillUpChars[i] == '\r') || (AutoCompleteFillUpChars[i] == '\n')) { + s_ACFillUpCharsHaveNewLn = true; + break; + } + ++i; + } + } + if (StrIsNotEmpty(Settings2.AutoCompleteWordCharSet)) { WideCharToMultiByte(Encoding_SciCP, 0, Settings2.AutoCompleteWordCharSet, -1, AutoCompleteWordCharSet, COUNTOF(AutoCompleteWordCharSet), NULL, NULL); @@ -6705,6 +6724,16 @@ void EditMarkAll(HWND hwnd, char* pszFind, int flags, DocPos rangeStart, DocPos } +//============================================================================= +// +// EditCheckNewLineInACFillUps() +// +bool EditCheckNewLineInACFillUps() +{ + return s_ACFillUpCharsHaveNewLn; +} + + //============================================================================= // // EditAutoCompleteWord() @@ -6901,9 +6930,8 @@ bool EditAutoCompleteWord(HWND hwnd, bool autoInsert) SciCall_AutoCSetIgnoreCase(true); //SendMessage(hwnd, SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR, (WPARAM)SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE, 0); SciCall_AutoCSetChooseSingle(autoInsert); - //SciCall_AutoCSetOrder(SC_ORDER_PERFORMSORT); // already sorted - SciCall_AutoCSetFillups("\t\n\r"); - //SciCall_AutoCSetFillups(Settings.AccelWordNavigation ? WhiteSpaceCharsDefault : WhiteSpaceCharsAccelerated); + //~SciCall_AutoCSetOrder(SC_ORDER_PERFORMSORT); // already sorted + SciCall_AutoCSetFillups(AutoCompleteFillUpChars); ++iWListSize; // zero termination char* const pList = AllocMem(iWListSize, HEAP_ZERO_MEMORY); diff --git a/src/Edit.h b/src/Edit.h index 0f198d778..c713db237 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -110,6 +110,7 @@ void EditFinalizeStyling(HWND hwnd, DocPos iEndPos); void EditUpdateIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bClearOnly); void EditSetAccelWordNav(HWND hwnd,bool); bool EditAutoCompleteWord(HWND hwnd,bool); +bool EditCheckNewLineInACFillUps(); void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition); void EditGetBookmarkList(HWND hwnd,LPWSTR pszBookMarks,int cchLength); void EditSetBookmarkList(HWND hwnd,LPCWSTR pszBookMarks); diff --git a/src/Helpers.h b/src/Helpers.h index eeced1a67..31d5f5b5d 100644 --- a/src/Helpers.h +++ b/src/Helpers.h @@ -347,6 +347,7 @@ bool MRU_MergeSave(LPMRULIST pmru,bool,bool,bool); #define MRU_Count(pmru) MRU_Enum((pmru), 0, NULL, 0) //==== UnSlash Functions ====================================================== +unsigned int UnSlash(char* s, UINT cpEdit); void TransformBackslashes(char* pszInput,bool,UINT cpEdit,int* iReplaceMsg); void TransformMetaChars(char* pszInput,bool,int iEOLMode); diff --git a/src/Notepad3.c b/src/Notepad3.c index 27e1767cc..46dc9527d 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -7015,6 +7015,32 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific case SCN_CALLTIPCLICK: return 0; + case SCN_AUTOCSELECTION: + { + switch (scn->listCompletionMethod) + { + case SC_AC_TAB: + case SC_AC_COMMAND: + case SC_AC_DOUBLECLICK: + // accepted + break; + + case SC_AC_FILLUP: + // see: SciCall_AutoCSetFillups() -> accepted + break; + + case SC_AC_NEWLINE: + if (!EditCheckNewLineInACFillUps()) { + SciCall_AutoCCancel(); // rejected + } + break; + + default: + SciCall_AutoCCancel(); // rejected + break; + } + } + break; case SCN_MODIFIED: { diff --git a/src/TypeDefs.h b/src/TypeDefs.h index 79989ee0b..727412935 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -502,6 +502,7 @@ typedef struct _settings2_t WCHAR FileBrowserPath[MAX_PATH]; WCHAR AppUserModelID[32]; + WCHAR AutoCompleteFillUpChars[64]; WCHAR ExtendedWhiteSpaceChars[ANSI_CHAR_BUFFER + 1]; WCHAR AutoCompleteWordCharSet[ANSI_CHAR_BUFFER + 1]; WCHAR TimeStamp[128]; From d2384a8d247c91a7d3fa0ab47f1aa75843c6cc4a Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Thu, 25 Jul 2019 12:41:58 +0200 Subject: [PATCH 7/9] + fix: send NewLine to sci control, if this id no AutoC fill-up char --- src/Edit.c | 44 ++++++++------------------------------------ src/Notepad3.c | 27 ++++++++++++++------------- src/SciCall.h | 42 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 62 insertions(+), 51 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index 6309bcffc..b26b4d8d2 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -760,8 +760,8 @@ bool EditCopyAppend(HWND hwnd, bool bAppend) HANDLE const hOld = GetClipboardData(CF_UNICODETEXT); const WCHAR* pszOld = GlobalLock(hOld); - int const _eol_mode = SciCall_GetEOLMode(); - const WCHAR *pszSep = ((_eol_mode == SC_EOL_CRLF) ? L"\r\n" : ((_eol_mode == SC_EOL_CR) ? L"\r" : L"\n")); + WCHAR pszSep[3] = { L'\0' }; + Sci_GetCurrentEOL_W(pszSep); size_t cchNewText = cchTextW; if (pszOld && *pszOld) { @@ -3922,14 +3922,8 @@ void EditWrapToColumn(HWND hwnd,DocPos nColumn/*,int nTabWidth*/) return; } - int cchEOL = 2; - WCHAR wszEOL[] = L"\r\n"; - int const cEOLMode = SciCall_GetEOLMode(); - if (cEOLMode == SC_EOL_CR) - cchEOL = 1; - else if (cEOLMode == SC_EOL_LF) { - cchEOL = 1; wszEOL[0] = L'\n'; - } + WCHAR wszEOL[3] = { L'\0' }; + int const cchEOL = Sci_GetCurrentEOL_W(wszEOL); int cchConvW = 0; DocPos iLineLength = 0; @@ -4084,23 +4078,8 @@ void EditJoinLinesEx(HWND hwnd, bool bPreserveParagraphs, bool bCRLF2Space) return; } - char szEOL[] = "\r\n"; - int cchEOL = 2; - switch (SciCall_GetEOLMode()) - { - case SC_EOL_LF: - szEOL[0] = '\n'; - szEOL[1] = '\0'; - cchEOL = 1; - break; - case SC_EOL_CR: - szEOL[1] = '\0'; - cchEOL = 1; - break; - case SC_EOL_CRLF: - default: - break; - } + char szEOL[3] = { '\0' }; + int const cchEOL = Sci_GetCurrentEOL_A(szEOL); for (int i = 0; i < iSelLength; ++i) { @@ -4227,15 +4206,8 @@ void EditSortLines(HWND hwnd, int iSortFlags) DocLn const iLineCount = iLineEnd - iLineStart + 1; - int const cEOLMode = SciCall_GetEOLMode(); - char mszEOL[] = "\r\n"; - if (cEOLMode == SC_EOL_CR) { - mszEOL[1] = '\0'; - } - else if (cEOLMode == SC_EOL_LF) { - mszEOL[0] = '\n'; - mszEOL[1] = '\0'; - } + char mszEOL[3] = { '\0' }; + Sci_GetCurrentEOL_A(mszEOL); int const _iTabWidth = SciCall_GetTabWidth(); diff --git a/src/Notepad3.c b/src/Notepad3.c index 46dc9527d..1f5254f1f 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -3091,11 +3091,11 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) } CheckMenuRadioItem(hmenu,IDM_ENCODING_ANSI,IDM_ENCODING_UTF8SIGN,i,MF_BYCOMMAND); - int const _eol_mode = SciCall_GetEOLMode(); - if (_eol_mode == SC_EOL_CRLF) { + int const eol_mode = SciCall_GetEOLMode(); + if (eol_mode == SC_EOL_CRLF) { i = IDM_LINEENDINGS_CRLF; } - else if (_eol_mode == SC_EOL_CR) { + else if (eol_mode == SC_EOL_CR) { i = IDM_LINEENDINGS_CR; } else { @@ -6787,8 +6787,8 @@ static void _HandleAutoIndent(int const charAdded) { // TODO: handle indent after '{' and un-indent on '}' in C/C++ ? // in CRLF mode handle LF only... - int const _eol_mode = SciCall_GetEOLMode(); - if (((SC_EOL_CRLF == _eol_mode) && (charAdded != '\r')) || (SC_EOL_CRLF != _eol_mode)) + int const eol_mode = SciCall_GetEOLMode(); + if (((SC_EOL_CRLF == eol_mode) && (charAdded != '\r')) || (SC_EOL_CRLF != eol_mode)) { DocPos const iCurPos = SciCall_GetCurrentPos(); DocLn const iCurLine = SciCall_LineFromPosition(iCurPos); @@ -7032,6 +7032,7 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific case SC_AC_NEWLINE: if (!EditCheckNewLineInACFillUps()) { SciCall_AutoCCancel(); // rejected + PostMessage(Globals.hwndEdit, SCI_NEWLINE, 0, 0); } break; @@ -7420,10 +7421,10 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) case STATUS_EOLMODE: { int i; - int const _eol_mode = SciCall_GetEOLMode(); - if (_eol_mode == SC_EOL_CRLF) + int const eol_mode = SciCall_GetEOLMode(); + if (eol_mode == SC_EOL_CRLF) i = IDM_LINEENDINGS_CRLF; - else if (_eol_mode == SC_EOL_CR) + else if (eol_mode == SC_EOL_CR) i = IDM_LINEENDINGS_CR; else i = IDM_LINEENDINGS_LF; @@ -8658,17 +8659,17 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw) if (s_iStatusbarVisible[STATUS_EOLMODE]) { static int s_iEOLMode = -1; - int const _eol_mode = SciCall_GetEOLMode(); + int const eol_mode = SciCall_GetEOLMode(); - if (bForceRedraw || (s_iEOLMode != _eol_mode)) + if (bForceRedraw || (s_iEOLMode != eol_mode)) { static WCHAR tchEOL[16] = { L'\0' }; - if (_eol_mode == SC_EOL_LF) + if (eol_mode == SC_EOL_LF) { StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, (Globals.bDocHasInconsistentEOLs ? _LFi_f : _LF_f), s_mxSBPrefix[STATUS_EOLMODE], s_mxSBPostfix[STATUS_EOLMODE]); } - else if (_eol_mode == SC_EOL_CR) + else if (eol_mode == SC_EOL_CR) { StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, (Globals.bDocHasInconsistentEOLs ? _CRi_f : _CR_f), s_mxSBPrefix[STATUS_EOLMODE], s_mxSBPostfix[STATUS_EOLMODE]); @@ -8677,7 +8678,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw) StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, (Globals.bDocHasInconsistentEOLs ? _CRLFi_f : _CRLF_f), s_mxSBPrefix[STATUS_EOLMODE], s_mxSBPostfix[STATUS_EOLMODE]); } - s_iEOLMode = _eol_mode; + s_iEOLMode = eol_mode; bIsUpdateNeeded = true; } } diff --git a/src/SciCall.h b/src/SciCall.h index 9684c9b30..a19bd58a6 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -539,8 +539,6 @@ DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool) #define Sci_HaveUndoRedoHistory() (SciCall_CanUndo() || SciCall_CanRedo()) -#define Sci_GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1) - #define Sci_GetCurrentLineNumber() SciCall_LineFromPosition(SciCall_GetCurrentPos()) #define Sci_GetLastDocLineNumber() (SciCall_GetLineCount() - 1) @@ -569,6 +567,46 @@ inline DocPos Sci_GetRangeMaxLineLength(DocLn iBeginLine, DocLn iEndLine) { #define Sci_DisableMouseDWellNotification() SciCall_SetMouseDWellTime(SC_TIME_FOREVER) +// ---------------------------------------------------------------------------- + +#define Sci_GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1) + + +inline int Sci_GetCurrentEOL_A(LPCH eol) { + switch (SciCall_GetEOLMode()) { + case SC_EOL_CRLF: + eol[0] = '\r'; eol[1] = '\n'; eol[2] = '\0'; + return 2; + case SC_EOL_CR: + eol[0] = '\r'; eol[1] = '\0'; + return 1; + case SC_EOL_LF: + eol[0] = '\n'; eol[1] = '\0'; + return 1; + default: + return 0; + } +} +// ---------------------------------------------------------------------------- + +inline int Sci_GetCurrentEOL_W(LPWCH eol) { + switch (SciCall_GetEOLMode()) { + case SC_EOL_CRLF: + eol[0] = L'\r'; eol[1] = L'\n'; eol[2] = L'\0'; + return 2; + case SC_EOL_CR: + eol[0] = L'\r'; eol[1] = L'\0'; + return 1; + case SC_EOL_LF: + eol[0] = L'\n'; eol[1] = L'\0'; + return 1; + default: + return 0; + } +} +// ---------------------------------------------------------------------------- + + //============================================================================= #endif //_NP3_SCICALL_H_ From b0e9dfcfe4b7f9d469c4ade2192ba99fbea1019e Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Thu, 25 Jul 2019 20:42:44 +0200 Subject: [PATCH 8/9] + chg: Add extensions to StyleLexXXX.c (complete update) - update Changes.txt --- Build/Changes.txt | 19 ++++++++++--------- src/StyleLexers/styleLexCOFFEESCRIPT.c | 2 +- src/StyleLexers/styleLexCONF.c | 2 +- src/StyleLexers/styleLexCPP.c | 2 +- src/StyleLexers/styleLexHTML.c | 2 +- src/StyleLexers/styleLexJS.c | 2 +- src/StyleLexers/styleLexJSON.c | 2 +- src/StyleLexers/styleLexLUA.c | 2 +- src/StyleLexers/styleLexMAK.c | 2 +- src/StyleLexers/styleLexPAS.c | 2 +- src/StyleLexers/styleLexPL.c | 2 +- src/StyleLexers/styleLexPS.c | 2 +- src/StyleLexers/styleLexPY.c | 2 +- src/StyleLexers/styleLexR.c | 2 +- src/StyleLexers/styleLexRUBY.c | 2 +- src/StyleLexers/styleLexStandard.c | 2 +- src/StyleLexers/styleLexTCL.c | 2 +- src/StyleLexers/styleLexXML.c | 2 +- 18 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Build/Changes.txt b/Build/Changes.txt index 9dbfa7d17..ff2e96adf 100644 --- a/Build/Changes.txt +++ b/Build/Changes.txt @@ -30,13 +30,13 @@ UCD - (UCD)ARDET is an Encoding Detector Library ================================================== -Current BETA Version 5.19.724.#(build) (2019-07-24) +Current BETA Version 5.19.725.#(build) (2019-07-25) ================================================== -------------------------------------------------- NEW: -------------------------------------------------- -- Add Web Template Action to context menu +- Add settings for allowed AutoComplete fill-up chars - Advanced TOML Lexer - Multiselect Edit Indicator - Color hover and picker (HTML color def only #RRGGBB) @@ -44,14 +44,12 @@ NEW: -------------------------------------------------- CHANGES: -------------------------------------------------- -- Complete impl. of UTF-8Sig MinPath.ini file handler - Use double-quotes as MRU list string limiter - Keep .ini backward compatibility for moved "Text Files" lexer (from "Default Text") - Update to Oniguruma v.6.9.3 - Scintilla Library (SCI) version 4.2.0 (2019-Jul-5) - To force UTF-8 as preffered encoding: activate encoding detection failure fallback for default encoding - Allow Fixedsys font for GDI rendering -- Support Compiler version (VC v1921) 192127702 - VS2019 v16.1.(0-6) - Color MarkOccurrences refactoring: use System's HighLight color as default (alpha:60) - Oniguruma: support static build - Merge current (v.6.9.2) Oniguruma docs @@ -61,8 +59,9 @@ CHANGES: -------------------------------------------------- ENHANCEMENT: -------------------------------------------------- -- Use UTF-8 for themes files -- Use UTF-8 for .ini-File Handler (Initial Version) +- Complete implementation of UTF-8-Sig MinPath.ini file handler +- Use UTF-8-Sig for themes files +- Use UTF-8-Sig for .ini-File Handler (Initial Version) - Multi-Selection with selection restore on undo - Bookmark margin click - Some multi-selection enhancements @@ -70,6 +69,7 @@ ENHANCEMENT: -------------------------------------------------- FIXES: -------------------------------------------------- +- Send NewLine to sci control, if this id no AutoComplete fill-up char - Obsolete newline after .ini-file sections with comments - Enhanced Unicode detection - Oniguruma allow CRLF as newline token @@ -81,6 +81,7 @@ FIXES: -------------------------------------------------- REMOVED: -------------------------------------------------- +- Disable "NewLine" for AutoComplete fill-up - Remove (old) AHK Lexer in favour of modern AHK_L Lexer -------------------------------------------------- @@ -306,7 +307,7 @@ CHANGES: - Default ini for Notepad3Portable. - Scintilla library to v4.04. - uthash library updated to current GitHub dev. -- Encoding of Notepad3 sources to UTF-8 (Sig). +- Encoding of Notepad3 sources to UTF-8-Sig. - Focus View icon. - Prep Scintilla "Position" value type changes for large file support. - Rebases internally used code page on UTF-8 (Scintilla multi-byte conversions). @@ -885,7 +886,7 @@ Version 3.17.1210.729 (10 December 2017) - New: URL Hotspot (first version). - Changed: [Settings2] section default values (and comment out if not changed) of initially distributed Notepad3.ini - Enhancement: Code Cleanup -- Fix: Edit/Special : URL encoding/decoding for full UTF8 (non ASCII) characters. +- Fix: Edit/Special : URL encoding/decoding for full UTF-8 (non ASCII) characters. - Fix: flashing of Search text-box of find/replace dialog in case of Win7 Classic theme - Fix: Gibberish output if URL decoded again (2nd time). - Fix: URL decoding, if encoding has "%#nnn" formatted ASCII chars. @@ -955,7 +956,7 @@ Version 3.17.1124.690 (24 November 2017) - Fix: Issue regarding find/replace empty-string. - Fix: Adapt DeelX RE interface according to enhanced find/replace dialog. - Fix: Issue #173 - regex/wildcard search: replacement string not used if "Check All Occurrences" is active. -- Fix: Recoding minipath's version.h to UTF-8 (Sig), because it contains codepage dependant copyright sign. +- Fix: Recoding minipath's version.h to UTF-8-Sig, because it contains codepage dependant copyright sign. - Fix: Corrections to .vcproj settings inconsistencies (reported in release build process). - Fix: undo/redo issues (if no selection choosen). - Fix: Consecutive DEL/BACKSP undo/redo broken (wrapped by unconditional selection undo/redo). diff --git a/src/StyleLexers/styleLexCOFFEESCRIPT.c b/src/StyleLexers/styleLexCOFFEESCRIPT.c index 3a4dca5a6..e731c8df1 100644 --- a/src/StyleLexers/styleLexCOFFEESCRIPT.c +++ b/src/StyleLexers/styleLexCOFFEESCRIPT.c @@ -6,7 +6,7 @@ KEYWORDLIST KeyWords_COFFEESCRIPT = EMPTY_KEYWORDLIST; EDITLEXER lexCOFFEESCRIPT = { -SCLEX_COFFEESCRIPT, IDS_LEX_COFFEE_SCR, L"Coffeescript", L"coffee; Cakefile", L"", +SCLEX_COFFEESCRIPT, IDS_LEX_COFFEE_SCR, L"Coffeescript", L"coffee; cakefile", L"", &KeyWords_COFFEESCRIPT, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_COFFEESCRIPT_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexCONF.c b/src/StyleLexers/styleLexCONF.c index 1b7cf2b6d..b1433ca3a 100644 --- a/src/StyleLexers/styleLexCONF.c +++ b/src/StyleLexers/styleLexCONF.c @@ -116,7 +116,7 @@ KEYWORDLIST KeyWords_CONF = { EDITLEXER lexCONF = { -SCLEX_CONF, IDS_LEX_APC_CFG, L"Apache Config Files", L"conf; cfg; cnf; htaccess; properties; prefs; iface; prop; po; te", L"", +SCLEX_CONF, IDS_LEX_APC_CFG, L"Apache Config Files", L"conf; cfg; cnf; htaccess; prefs; iface; prop; po; te", L"", &KeyWords_CONF, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_CONF_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexCPP.c b/src/StyleLexers/styleLexCPP.c index 1c50c9c66..54d75d2d9 100644 --- a/src/StyleLexers/styleLexCPP.c +++ b/src/StyleLexers/styleLexCPP.c @@ -40,7 +40,7 @@ KEYWORDLIST KeyWords_CPP = { }; EDITLEXER lexCPP = { -SCLEX_CPP, IDS_LEX_CPP_SRC, L"C/C++ Source Code", L"c; cpp; cxx; cc; h; hpp; hxx; hh; m; mm; idl; midl; inl; odl; xpm", L"", +SCLEX_CPP, IDS_LEX_CPP_SRC, L"C/C++ Source Code", L"c; cpp; cxx; cc; h; hpp; hxx; hh; mm; idl; midl; inl; odl; xpm; pch", L"", &KeyWords_CPP, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_C_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexHTML.c b/src/StyleLexers/styleLexHTML.c index d9c3d817b..efa58c706 100644 --- a/src/StyleLexers/styleLexHTML.c +++ b/src/StyleLexers/styleLexHTML.c @@ -60,7 +60,7 @@ KEYWORDLIST KeyWords_HTML = { EDITLEXER lexHTML = { -SCLEX_HTML, IDS_LEX_WEB_SRC, L"Web Source Code", L"html; htm; asp; aspx; shtml; htd; xhtml; php; php3; phtml; htt; cfm; tpl; dtd; hta; htc", L"", +SCLEX_HTML, IDS_LEX_WEB_SRC, L"Web Source Code", L"html; htm; asp; aspx; shtml; htd; xhtml; php; php3; phtml; htt; cfm; tpl; dtd; hta; htc; jsp; mht; jd", L"", &KeyWords_HTML, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, { {MULTI_STYLE(SCE_H_TAG,SCE_H_TAGEND,0,0)}, IDS_LEX_STR_63136, L"HTML Tag", L"fore:#648000", L"" }, diff --git a/src/StyleLexers/styleLexJS.c b/src/StyleLexers/styleLexJS.c index 85836f4e1..28d57c9a6 100644 --- a/src/StyleLexers/styleLexJS.c +++ b/src/StyleLexers/styleLexJS.c @@ -12,7 +12,7 @@ KEYWORDLIST KeyWords_JS = { EDITLEXER lexJS = { -SCLEX_CPP, IDS_LEX_J_SCR, L"JavaScript", L"js; jse; jsm; as", L"", +SCLEX_CPP, IDS_LEX_J_SCR, L"JavaScript", L"js; jse; jsm; as; mjs; qs", L"", &KeyWords_JS, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_C_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexJSON.c b/src/StyleLexers/styleLexJSON.c index d8a89c485..40cae394c 100644 --- a/src/StyleLexers/styleLexJSON.c +++ b/src/StyleLexers/styleLexJSON.c @@ -9,7 +9,7 @@ KEYWORDLIST KeyWords_JSON = { EDITLEXER lexJSON = { -SCLEX_JSON, IDS_LEX_JSON, L"JSON", L"json; eslintrc; jshintrc; jsonld", L"", +SCLEX_JSON, IDS_LEX_JSON, L"JSON", L"json; eslintrc; jshintrc; jsonld; har; ipynb; wxcp; arcconfig", L"", &KeyWords_JSON, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_C_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexLUA.c b/src/StyleLexers/styleLexLUA.c index 657b27c2a..6f749d0bc 100644 --- a/src/StyleLexers/styleLexLUA.c +++ b/src/StyleLexers/styleLexLUA.c @@ -32,7 +32,7 @@ KEYWORDLIST KeyWords_LUA = { EDITLEXER lexLUA = { -SCLEX_LUA, IDS_LEX_LUA, L"Lua Script", L"lua", L"", +SCLEX_LUA, IDS_LEX_LUA, L"Lua Script", L"lua; wlua; nse; luadoc; luax", L"", &KeyWords_LUA, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_LUA_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexMAK.c b/src/StyleLexers/styleLexMAK.c index 959d4d477..7771e68ae 100644 --- a/src/StyleLexers/styleLexMAK.c +++ b/src/StyleLexers/styleLexMAK.c @@ -5,7 +5,7 @@ KEYWORDLIST KeyWords_MAK = EMPTY_KEYWORDLIST; EDITLEXER lexMAK = { -SCLEX_MAKEFILE, IDS_LEX_MAKEFILES, L"Makefiles", L"mak; make; mk; dsp; msc; msvc; am; pro; pri; gmk; ninja", L"", +SCLEX_MAKEFILE, IDS_LEX_MAKEFILES, L"Makefiles", L"mak; make; mk; dsp; msc; msvc; am; pro; pri; gmk; ninja; dsw", L"", &KeyWords_MAK, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_MAKE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexPAS.c b/src/StyleLexers/styleLexPAS.c index 1ee0dab48..40a528c87 100644 --- a/src/StyleLexers/styleLexPAS.c +++ b/src/StyleLexers/styleLexPAS.c @@ -13,7 +13,7 @@ KEYWORDLIST KeyWords_PAS = { EDITLEXER lexPAS = { -SCLEX_PASCAL, IDS_LEX_PASCAL_SRC, L"Pascal Source Code", L"pas; dpr; dpk; dfm; inc; pp", L"", +SCLEX_PASCAL, IDS_LEX_PASCAL_SRC, L"Pascal Source Code", L"pas; dpr; dpk; dfm; pp; lfm; lpr; fpd", L"", &KeyWords_PAS, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_PAS_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexPL.c b/src/StyleLexers/styleLexPL.c index dcac35afc..6f5454766 100644 --- a/src/StyleLexers/styleLexPL.c +++ b/src/StyleLexers/styleLexPL.c @@ -27,7 +27,7 @@ KEYWORDLIST KeyWords_PL = { EDITLEXER lexPL = { -SCLEX_PERL, IDS_LEX_PERL_SCR, L"Perl Script", L"pl; pm; cgi; pod", L"", +SCLEX_PERL, IDS_LEX_PERL_SCR, L"Perl Script", L"pl; pm; cgi; pod; plx; stp", L"", &KeyWords_PL, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_PL_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexPS.c b/src/StyleLexers/styleLexPS.c index 273b28719..8e95be257 100644 --- a/src/StyleLexers/styleLexPS.c +++ b/src/StyleLexers/styleLexPS.c @@ -59,7 +59,7 @@ KEYWORDLIST KeyWords_PS = { EDITLEXER lexPS = { -SCLEX_POWERSHELL, IDS_LEX_PWRSHELL, L"PowerShell Script", L"ps1; psd1; psm1", L"", +SCLEX_POWERSHELL, IDS_LEX_PWRSHELL, L"PowerShell Script", L"ps1; psd1; psm1; psc1", L"", &KeyWords_PS, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_POWERSHELL_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexPY.c b/src/StyleLexers/styleLexPY.c index fb7590cc1..7e44cae74 100644 --- a/src/StyleLexers/styleLexPY.c +++ b/src/StyleLexers/styleLexPY.c @@ -10,7 +10,7 @@ KEYWORDLIST KeyWords_PY = { EDITLEXER lexPY = { -SCLEX_PYTHON, IDS_LEX_PYTHON, L"Python Script", L"py; pyw", L"", +SCLEX_PYTHON, IDS_LEX_PYTHON, L"Python Script", L"py; pyw; pyx; pxd; pxi; boo; empy; cobra; gs", L"", &KeyWords_PY, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_P_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexR.c b/src/StyleLexers/styleLexR.c index a24832d4b..78972650d 100644 --- a/src/StyleLexers/styleLexR.c +++ b/src/StyleLexers/styleLexR.c @@ -79,7 +79,7 @@ KEYWORDLIST KeyWords_R = { EDITLEXER lexR = { -SCLEX_R, IDS_LEX_R_STAT, L"R-S-SPlus Statistics Code", L"R", L"", +SCLEX_R, IDS_LEX_R_STAT, L"R-S-SPlus Statistics Code", L"r, rdata, rds, rda", L"", &KeyWords_R,{ { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_R_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexRUBY.c b/src/StyleLexers/styleLexRUBY.c index d31dc04f2..f8ee31d15 100644 --- a/src/StyleLexers/styleLexRUBY.c +++ b/src/StyleLexers/styleLexRUBY.c @@ -9,7 +9,7 @@ KEYWORDLIST KeyWords_RUBY = { "", "", "", "", "", "", "", "" }; EDITLEXER lexRUBY = { -SCLEX_RUBY, IDS_LEX_RUBY, L"Ruby Script", L"rb; ruby; rbw; rake; rjs; Rakefile; gemspec", L"", +SCLEX_RUBY, IDS_LEX_RUBY, L"Ruby Script", L"rb; ruby; rbw; rake; rjs; rakefile; gemspec; podspec", L"", &KeyWords_RUBY, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_RB_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexStandard.c b/src/StyleLexers/styleLexStandard.c index b4fd612d2..b999f1626 100644 --- a/src/StyleLexers/styleLexStandard.c +++ b/src/StyleLexers/styleLexStandard.c @@ -71,7 +71,7 @@ SCLEX_NULL, IDS_LEX_ANSI_ART, L"ANSI Art", L"nfo; diz", L"", EDITLEXER lexLATEX = { -SCLEX_LATEX, IDS_LEX_LATEX, L"LaTeX Files", L"tex; latex; sty", L"", +SCLEX_LATEX, IDS_LEX_LATEX, L"LaTeX Files", L"tex; latex; sty; texi; texinfo; txi", L"", &KeyWords_NULL, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_L_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexTCL.c b/src/StyleLexers/styleLexTCL.c index 520e41096..79ae6f8d1 100644 --- a/src/StyleLexers/styleLexTCL.c +++ b/src/StyleLexers/styleLexTCL.c @@ -33,7 +33,7 @@ KEYWORDLIST KeyWords_TCL = { EDITLEXER lexTCL = { -SCLEX_TCL, IDS_LEX_TCL, L"Tcl Script", L"tcl; itcl", L"", +SCLEX_TCL, IDS_LEX_TCL, L"Tcl Script", L"tcl; itcl; tm", L"", &KeyWords_TCL, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_TCL_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, diff --git a/src/StyleLexers/styleLexXML.c b/src/StyleLexers/styleLexXML.c index 7501e3438..f623df4ee 100644 --- a/src/StyleLexers/styleLexXML.c +++ b/src/StyleLexers/styleLexXML.c @@ -6,7 +6,7 @@ KEYWORDLIST KeyWords_XML = EMPTY_KEYWORDLIST; EDITLEXER lexXML = { -SCLEX_XML, IDS_LEX_XML_DOC, L"XML Document", L"xml; xsl; rss; svg; xul; xsd; xslt; axl; rdf; xaml; vcproj; ffs_gui; nzb", L"", +SCLEX_XML, IDS_LEX_XML_DOC, L"XML Document", L"xml; xsl; rss; svg; xul; xsd; xslt; axl; rdf; xaml; vcproj; ffs_gui; nzb; resx; plist; xrc; fbp", L"", &KeyWords_XML, { { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, { {MULTI_STYLE(SCE_H_TAG,SCE_H_TAGUNKNOWN,SCE_H_TAGEND,0)}, IDS_LEX_STR_63187, L"XML Tag", L"fore:#881280", L"" }, From 4c756f960f2efaefc8d6a7c1c5c6744fab1e2660 Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Fri, 26 Jul 2019 14:40:23 +0200 Subject: [PATCH 9/9] + chg: Add extensions to Minipath.ini (complete update) --- Build/minipath.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Build/minipath.ini b/Build/minipath.ini index 930d48315..31ace7f34 100644 --- a/Build/minipath.ini +++ b/Build/minipath.ini @@ -47,10 +47,10 @@ [Window] [Filters] &All Files=*.* -&Windows Text Files=*.txt;*.asc;*.bat;*.vbs;*.ini;*.inf;*.reg -&HTML Related Files=*.htm;*.html;*.shtml;*.xml;*.php;*.css;*.js;*.vbs;*.gif;*.png;*.jpg;*.jpeg -&C/C++ Files=*.c;*.cpp;*.h;*.hpp;*.rc;*.ico;*.cur;*.bmp;*.txt -&No Binary Files=-*.exe;*.dll;*.cpl;*.ocx +&C/C++ Files=*.c;*.cpp;*.h;*.hpp;*.rc;*.ico;*.cur;*.bmp;*.txt;*.nsi;*.nsh;*.cs;*.csx;*.vala;*.cxx;*.cc;*.hxx;*.hh;*.mm;*.idl;*.midl;*.inl;*.odl;*.xpm;*.pch +&HTML Related Files=*.htm;*.html;*.shtml;*.php;*.css;*.js;*.vbs;*.gif;*.png;*.jpg;*.jpeg;*.bmp;*.txt;*.css;*.less;*.hss;*.sass;*.scss +&No Binary Files=-*.exe;*.dll;*.cpl;*.ocx;*.bin;*.com;*.sys;*.scr;*.dat;*.dsk +&Windows Text Files=*.txt;*.asc;*.bat;*.vbs;*.ini;*.inf;*.reg;*.xml;*.text;*.tmp;*.log;*.doc;*.wtx;*.csv [Toolbar Images] ;BitmapDefault= ;BitmapHot=