+ Test_files Libraries: add new extension and new test files.

This commit is contained in:
Pairi Daiza 2019-07-20 21:03:54 +02:00
parent 8f3e8ba17e
commit fedcb69ef0
8 changed files with 1487 additions and 2 deletions

View File

@ -30,12 +30,13 @@ UCD - (UCD)ARDET is an Encoding Detector Library
==================================================
Current Version 5.19.717.build (17 July 2019)
Current Version 5.19.720.build (20 July 2019)
==================================================
--------------------------------------------------
NEW:
--------------------------------------------------
- Add Web Template Action to context menu
- Advanced TOML Lexer
- Multiselect Edit Indicator
- Color hover and picker (HTML color def only #RRGGBB)
@ -43,11 +44,11 @@ NEW:
--------------------------------------------------
CHANGES:
--------------------------------------------------
- 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
- For new "Text File" scheme: use regular Segoe UI font
- 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
@ -67,6 +68,7 @@ ENHANCEMENT:
--------------------------------------------------
FIXES:
--------------------------------------------------
- Use string begin/end terminator for most recent lists
- Oniguruma allow CRLF as newline token
- Notepad3.ini file, remove some keys with default values (styles)
- Extended encoding detection debug information

View File

@ -0,0 +1,11 @@
@echo off
exit
echo 输入u盘目录
set /p DriveU=
echo on
attrib "%DriveU%:\System Volume Information" -s
rd /s /q "%DriveU%:\System Volume Information"
del /f /q /A:RH "%DriveU%:\System Volume Information"
echo. >"%DriveU%:\System Volume Information"
attrib "%DriveU%:\System Volume Information" +R +H
pause

View File

@ -0,0 +1,62 @@
@ ECHO OFF
exit
SET PROG=清理系统通知区域 XP/WIN7/VISTA
COLOR 1F
@ ECHO.
@ ECHO. 说 明
@ ECHO.
@ ECHO --------------------------------------------------------------------------------
@ ECHO.
@ ECHO. WINDOWS 系统能在通知区域自动隐藏不活动的图标,这是个非常实用的功能。但是日积
@ ECHO.月累之下,通知区域的图标越来越多,有的是很久之前的图标,甚至该软件已经卸载,图标
@ ECHO.的增多带来了臃肿,此批处理文件能帮你清理掉通知区域的历史图标。但此方法操作会清除
@ ECHO.你对图标进行的任何设置。
@ ECHO.
@ ECHO --------------------------------------------------------------------------------
TITLE %PROG%
PAUSE
CLS
@ ECHO.
@ ECHO. ☆☆☆ 第一步:清理通知区域在注册表内的相关子项 ☆☆☆
@ ECHO.
@ ECHO.
ECHO     ║   [1] WINDOWS XP    
ECHO     ║   [2] WINDOWS 7 / VISTA 
@ ECHO.
@ ECHO.
SET /P CHOICE=   请选择你当前的操作系统版本 (1/2) ,然后按回车键执行:
IF /I '%CHOICE%'=='1' GOTO WINXP
IF /I '%CHOICE%'=='2' GOTO WIN7
:WINXP
REG DELETE "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\TRAYNOTIFY" /V ICONSTREAMS /F
REG DELETE "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\TRAYNOTIFY" /V PASTICONSSTREAM /F
PAUSE
GOTO SUCCESS
:WIN7
REG DELETE "HKEY_CLASSES_ROOT\LOCAL SETTINGS\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\TRAYNOTIFY" /V ICONSTREAMS /F
REG DELETE "HKEY_CLASSES_ROOT\LOCAL SETTINGS\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\TRAYNOTIFY" /V PASTICONSSTREAM /F
PAUSE
GOTO SUCCESS
:SUCCESS
CLS
@ ECHO.
@ ECHO. ☆☆☆ 第二步重启EXPLORER进程 ☆☆☆
@ ECHO.
@ ECHO. 警告:执行此命令,以完成清理通知区域的整个过程。为了安全起见,执行前请保存当
@ ECHO.前正在编辑的文件或文档,然后选择第 1 项继续。如果你不想执行此步,请选择第 2 项
@ ECHO.退出,清理任务在下次启动计算机后生效。
@ ECHO.
@ ECHO.
ECHO     ║   [1] 重启EXPLORER进程    
ECHO     ║   [2] 退出程序  ║
@ ECHO.
@ ECHO.
SET /P CHOICE=   请选择要进行的操作 (1/2) ,然后按回车键执行:
IF /I '%CHOICE%'=='1' GOTO EXPLORER
IF /I '%CHOICE%'=='2' GOTO SUCCESS1
:EXPLORER
TASKKILL /IM EXPLORER.EXE /F
START EXPLORER.EXE
GOTO SUCCESS1
:SUCCESS1
EXIT

View File

@ -0,0 +1,612 @@
#cs ---------------------------------------------------
AutoIt Version: 3.3.14.5
Author: Craig O'Brien
Script Function:
Configure the supplied Notepad3 executable how I like it
Designed for Notepad3 5.19.709+
Prerequisites:
- Cousine font
To Do:
- Cope with element repositioning caused by font scaling
#ce ---------------------------------------------------
autoitsetoption("MustDeclareVars", 1) ; must declare variables
autoitsetoption("WinTitleMatchMode", 2) ; window title: match anywhere
autoitsetoption("MouseCoordMode", 0) ; mouse coordinate mode: window
autoitsetoption("PixelCoordMode", 0) ; pixel coordinate mode: window
If $CmdLine[0] <> 1 Then
MsgBox(0, "Error - Incorrect Arguments", "This script must be passed exactly one argument - the full path and filename to the Notepad3 executable to be configured. Check that this script has been passed an argument, and that if the argument includes spaces, that it is enclosed in quotes.", 10)
Exit(1)
EndIf
Dim $PathToNotepad3 = $CmdLine[1]
Dim $WindowTitle = "Untitled - Notepad3"
Dim $WindowTitleShort = " - Notepad3"
Dim $DefaultWait = 250
Dim $ToolTip_X
Dim $ToolTip_Y
Dim $WindowLeftEdge = (@DesktopWidth / 2) + 16
Dim $WindowTopEdge = 90
Dim $WindowWidth = (@DesktopWidth / 2) - 32
Dim $WindowHeight = @DesktopHeight - 146
Dim $Reply
Dim $Colour_MenuTickbox = 0x333333
; Dim $Colour_ExitButtonHighDPIOff = 0x2244AD
Dim $Colour_ExitButtonHighDPIOn = 0x5B9FE2
; Dim $Colour_HistoryButton =
Dim $CheckboxToggled
; Launch Notepad3
ToolTip("")
ToolTip("Launching Notepad3...", 800, 0)
ShellExecute($PathToNotepad3)
Sleep(1800)
ToolTip("")
ToolTip("Waiting for Notepad3 window...", 800, 0)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
; Position Window
ToolTip("")
ToolTip("Positioning application window...", 800, 0)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
WinMove($WindowTitle, "", $WindowLeftEdge, $WindowTopEdge, $WindowWidth, $WindowHeight, 3)
; Set ToolTip coordinates relative to application window
$ToolTip_X = $WindowLeftEdge + 275
$ToolTip_Y = $WindowTopEdge
; This is a good place to do a coordinate check
; CheckCoords("!p", 120, 130, 134, 144)
; Exit
; Enter some text so we can see what's going on
ToolTip("")
ToolTip("Entering some text...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("O0 1Il{ENTER}TMasgqlI|12345{+}6-7*8/9{^}0Oo'""$&?.,;:-(){{}{}}[]<>{ENTER}Illegal1 = O0{ENTER}")
; FILE MENU
; Default Encoding: UTF8
ToolTip("")
ToolTip("Setting default encoding to UTF-8...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!f")
Sleep($DefaultWait)
Send("e")
Sleep($DefaultWait)
Send("{UP}")
Sleep($DefaultWait)
Send("{ENTER}")
Sleep($DefaultWait)
WinWait("Encoding", "Default Encoding")
WinActivate("Encoding", "Default Encoding")
ControlCommand("Encoding", "Default Encoding", "ComboBoxEx321", "SetCurrentSelection", 6)
Sleep($DefaultWait)
ControlClick("Encoding", "Default Encoding", "[CLASS:Button; TEXT:OK]") ; OK
Sleep($DefaultWait)
; Page Margins: 10mm everywhere
ToolTip("")
ToolTip("Setting page margins to 10mm...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!f")
Sleep($DefaultWait)
Send("t")
Sleep($DefaultWait)
WinWait("Page Setup", "Margins (millimeters)")
WinActivate("Page Setup", "Margins (millimeters)")
While ControlGetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:1]") <> "10"
ControlSetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:1]", "10")
Sleep($DefaultWait)
WEnd
While ControlGetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:2]") <> "10"
ControlSetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:2]", "10")
Sleep($DefaultWait)
WEnd
While ControlGetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:3]") <> "10"
ControlSetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:3]", "10")
Sleep($DefaultWait)
WEnd
While ControlGetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:4]") <> "10"
ControlSetText("Page Setup", "Margins (millimeters)", "[CLASS:Edit; INSTANCE:4]", "10")
Sleep($DefaultWait)
WEnd
ControlClick("Page Setup", "Margins (millimeters)", "[CLASS:Button; TEXT:OK]") ; OK
Sleep($DefaultWait)
; VIEW MENU
; Word Wrap: enable
ToolTip("")
ToolTip("Checking Word Wrap is enabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While Not DisplayElementSet("!v", 80, 56, 94, 70, $Colour_MenuTickbox)
Send("^w")
Sleep($DefaultWait)
WEnd
; Long Line Marker: disable
ToolTip("")
ToolTip("Checking Long Line Marker is disabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While DisplayElementSet("!v", 80, 78, 94, 92, $Colour_MenuTickbox)
Send("^L")
Sleep($DefaultWait)
WEnd
; Show Wrap Symbols: disable
ToolTip("")
ToolTip("Checking Show Wrap Symbols is disabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While DisplayElementSet("!v", 80, 129, 94, 143, $Colour_MenuTickbox)
Send("^+7")
Sleep($DefaultWait)
WEnd
; Show Blanks: enable
ToolTip("")
ToolTip("Checking Show Blanks is enabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While Not DisplayElementSet("!v", 80, 151, 94, 165, $Colour_MenuTickbox)
Send("^+8")
Sleep($DefaultWait)
WEnd
; Selection Margin: disable
ToolTip("")
ToolTip("Checking Selection Margin is disabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While DisplayElementSet("!v", 80, 341, 94, 355, $Colour_MenuTickbox)
Send("^M")
Sleep($DefaultWait)
WEnd
; Customise Toolbar: remove Exit button and preceding separator
ToolTip("")
ToolTip("Customising Toolbar...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!v")
Sleep($DefaultWait)
Send("t")
Sleep($DefaultWait)
Send("c")
Sleep($DefaultWait)
WinWait("Customize Toolbar", "A&vailable toolbar buttons:")
WinActivate("Customize Toolbar", "A&vailable toolbar buttons:")
If DisplayElementSet("", 286, 143, 306, 161, $Colour_ExitButtonHighDPIOn) Then
ControlClick("Customize Toolbar", "A&vailable toolbar buttons:", "[CLASS:ListBox; INSTANCE:2]", "left", 1, 11, 101)
Sleep($DefaultWait)
ControlClick("Customize Toolbar", "A&vailable toolbar buttons:", "[CLASS:Button; TEXT:<- &Remove]") ; Remove
Sleep($DefaultWait)
ControlClick("Customize Toolbar", "A&vailable toolbar buttons:", "[CLASS:ListBox; INSTANCE:2]", "left", 1, 11, 101)
Sleep($DefaultWait)
ControlClick("Customize Toolbar", "A&vailable toolbar buttons:", "[CLASS:Button; TEXT:<- &Remove]") ; Remove
Sleep($DefaultWait)
EndIf
ControlClick("Customize Toolbar", "A&vailable toolbar buttons:", "[CLASS:Button; TEXT:&Close]") ; Close
Sleep($DefaultWait)
; Save as Default Position
ToolTip("")
ToolTip("Saving Default Position...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!v")
Sleep($DefaultWait)
Send("{UP}")
Sleep($DefaultWait)
Send("{RIGHT}")
Sleep($DefaultWait)
Send("{DOWN}")
Sleep($DefaultWait)
Send("{DOWN}")
Sleep($DefaultWait)
Send("{ENTER}")
Sleep($DefaultWait)
; APPEARANCE MENU
; Default Text Font: Cousine Regular 10
ToolTip("")
ToolTip("Disabling 2nd Default Text...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While DisplayElementSet("!p", 120, 130, 134, 144, $Colour_MenuTickbox)
Send("+{F12}")
Sleep($DefaultWait)
WEnd
ToolTip("")
ToolTip("Setting Default Text font to Cousine Regular 10...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!{F12}")
WinWait(" BASE (Default Style)", "")
WinActivate(" BASE (Default Style)", "")
While ControlGetText(" BASE (Default Style)", "", "[CLASS:Edit; INSTANCE:1]") <> "Cousine"
ControlFocus(" BASE (Default Style)", "", "[CLASS:Edit; INSTANCE:1]")
Sleep($DefaultWait)
Send("Cousine")
Sleep($DefaultWait * 4)
WEnd
While ControlGetText(" BASE (Default Style)", "", "[CLASS:Edit; INSTANCE:2]") <> "Regular"
ControlFocus(" BASE (Default Style)", "", "[CLASS:Edit; INSTANCE:2]")
Sleep($DefaultWait)
Send("Regular")
Sleep($DefaultWait * 4)
WEnd
While ControlGetText(" BASE (Default Style)", "", "[CLASS:Edit; INSTANCE:3]") <> "10"
ControlFocus(" BASE (Default Style)", "", "[CLASS:Edit; INSTANCE:3]")
Sleep($DefaultWait)
Send("10")
Sleep($DefaultWait * 4)
WEnd
ControlClick(" BASE (Default Style)", "", "[CLASS:Button; TEXT:OK]") ; OK
Sleep($DefaultWait)
; 2nd Default Text Font: Verdana Regular 10
ToolTip("")
ToolTip("Enabling 2nd Default Text...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While Not DisplayElementSet("!p", 120, 130, 134, 144, $Colour_MenuTickbox)
Send("+{F12}")
Sleep($DefaultWait)
WEnd
ToolTip("")
ToolTip("Setting 2nd Default Text font to Verdana Regular 10...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!{F12}")
WinWait(" BASE (2nd Default Style)", "")
WinActivate(" BASE (2nd Default Style)", "")
While ControlGetText(" BASE (2nd Default Style)", "", "[CLASS:Edit; INSTANCE:1]") <> "Verdana"
ControlFocus(" BASE (2nd Default Style)", "", "[CLASS:Edit; INSTANCE:1]")
Sleep($DefaultWait)
Send("Verdana")
Sleep($DefaultWait * 4)
WEnd
While ControlGetText(" BASE (2nd Default Style)", "", "[CLASS:Edit; INSTANCE:2]") <> "Regular"
ControlFocus(" BASE (2nd Default Style)", "", "[CLASS:Edit; INSTANCE:2]")
Sleep($DefaultWait)
Send("Regular")
Sleep($DefaultWait * 4)
WEnd
While ControlGetText(" BASE (2nd Default Style)", "", "[CLASS:Edit; INSTANCE:3]") <> "10"
ControlFocus(" BASE (2nd Default Style)", "", "[CLASS:Edit; INSTANCE:3]")
Sleep($DefaultWait)
Send("10")
Sleep($DefaultWait * 4)
WEnd
ControlClick(" BASE (2nd Default Style)", "", "[CLASS:Button; TEXT:OK]") ; OK
Sleep($DefaultWait)
ToolTip("")
ToolTip("Activating Default Text...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While DisplayElementSet("!p", 120, 130, 134, 144, $Colour_MenuTickbox)
Send("+{F12}")
Sleep($DefaultWait)
WEnd
; SETTINGS MENU
; Insert Tabs as Spaces: enable
ToolTip("")
ToolTip("Checking Insert Tabs as Spaces is enabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While Not DisplayElementSet("!s", 196, 86, 210, 100, $Colour_MenuTickbox)
Send("!s")
Sleep($DefaultWait)
Send("s")
Sleep($DefaultWait)
WEnd
; Word Wrap Settings: no wrap indent
ToolTip("")
ToolTip("Checking No wrap indent...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("!s")
Sleep($DefaultWait)
Send("w")
Sleep($DefaultWait)
WinWait("Word Wrap Settings")
WinActivate("Word Wrap Settings")
ControlCommand("Word Wrap Settings", "", "ComboBox1", "SetCurrentSelection", 0)
Sleep($DefaultWait)
ControlClick("Word Wrap Settings", "", "[CLASS:Button; TEXT:OK]") ; OK
Sleep($DefaultWait)
; Save Settings on Exit: disabled
ToolTip("")
ToolTip("Checking Save Settings on Exit is disabled...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
While DisplayElementSet("!sa", 522, 474, 536, 488, $Colour_MenuTickbox)
Send("!s")
Sleep($DefaultWait)
Send("a")
Sleep($DefaultWait)
Send("x")
Sleep($DefaultWait)
WEnd
; Save Settings Now
ToolTip("")
ToolTip("Saving settings...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("{F7}")
WinWait("Notepad3", "The current program settings have been saved.")
WinActivate("Notepad3", "The current program settings have been saved.")
ControlClick("Notepad3", "The current program settings have been saved.", "[CLASS:Button; TEXT:OK]") ; OK
Sleep($DefaultWait)
; SETTINGS FILE
; Open Settings File
ToolTip("")
ToolTip("Opening settings file...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
Send("^{F7}")
WinWait("Notepad3", "Save changes to ""Untitled""?")
WinActivate("Notepad3", "Save changes to ""Untitled""?")
ControlClick("Notepad3", "Save changes to ""Untitled""?", "[CLASS:Button; TEXT:&No]") ; No
Sleep($DefaultWait)
; Settings File: DefaultExtension
ToolTip("")
ToolTip("Setting DefaultExtension...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitleShort, "")
WinActivate($WindowTitleShort, "")
Send("^h")
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:1]", ";DefaultExtension=txt\r\n;") ; Search String
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:2]", ";DefaultExtension=txt\r\nDefaultExtension=txt\r\n;") ; Replace with
If Not ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "IsChecked") Then
ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "Check")
$CheckboxToggled = True
Else
$CheckboxToggled = False
EndIf
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Replace &All]") ; Replace All
WinWait("Notepad3", "specified text")
WinActivate("Notepad3", "specified text")
ControlClick("Notepad3", "specified text", "[CLASS:Button; TEXT:OK]"); OK
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
If $CheckboxToggled Then
ControlClick("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]")
EndIf
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Close]") ; Close
Sleep($DefaultWait)
; Settings File: FileLoadWarning
ToolTip("")
ToolTip("Setting FileLoadWarning...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitleShort, "")
WinActivate($WindowTitleShort, "")
Send("^h")
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:1]", ";FileLoadWarningMB=1\r\n;") ; Search String
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:2]", ";FileLoadWarningMB=1\r\nFileLoadWarningMB=5\r\n;") ; Replace with
If Not ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "IsChecked") Then
ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "Check")
$CheckboxToggled = True
Else
$CheckboxToggled = False
EndIf
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Replace &All]") ; Replace All
WinWait("Notepad3", "specified text")
WinActivate("Notepad3", "specified text")
ControlClick("Notepad3", "specified text", "[CLASS:Button; TEXT:OK]"); OK
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
If $CheckboxToggled Then
ControlClick("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]")
EndIf
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Close]") ; Close
Sleep($DefaultWait)
; Settings File: MarkOccurrencesMaxCount
ToolTip("")
ToolTip("Setting MarkOccurrencesMaxCount...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitleShort, "")
WinActivate($WindowTitleShort, "")
Send("^h")
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:1]", ";MarkOccurrencesMaxCount=2000\r\n;") ; Search String
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:2]", ";MarkOccurrencesMaxCount=2000\r\nMarkOccurrencesMaxCount=30000\r\n;") ; Replace with
If Not ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "IsChecked") Then
ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "Check")
$CheckboxToggled = True
Else
$CheckboxToggled = False
EndIf
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Replace &All]") ; Replace All
WinWait("Notepad3", "specified text")
WinActivate("Notepad3", "specified text")
ControlClick("Notepad3", "specified text", "[CLASS:Button; TEXT:OK]"); OK
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
If $CheckboxToggled Then
ControlClick("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]")
EndIf
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Close]") ; Close
Sleep($DefaultWait)
; Settings file: VisibleSections
ToolTip("")
ToolTip("Setting VisibleSections...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitleShort, "")
WinActivate($WindowTitleShort, "")
Send("^h")
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:1]", ";VisibleSections=0 1 12 14 2 4 5 6 7 8 9 10 11\r\n;") ; Search String
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:2]", ";VisibleSections=0 1 12 14 2 4 5 6 7 8 9 10 11\r\nVisibleSections=0 1 14 2 4 5 6 7 8 9 10 11\r\n;") ; Replace with
If Not ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "IsChecked") Then
ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "Check")
$CheckboxToggled = True
Else
$CheckboxToggled = False
EndIf
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Replace &All]") ; Replace All
WinWait("Notepad3", "specified text")
WinActivate("Notepad3", "specified text")
ControlClick("Notepad3", "specified text", "[CLASS:Button; TEXT:OK]"); OK
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
If $CheckboxToggled Then
ControlClick("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]")
EndIf
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Close]") ; Close
Sleep($DefaultWait)
; Settings file: SectionWidthSpecs
ToolTip("")
ToolTip("Setting SectionWidthSpecs...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitleShort, "")
WinActivate($WindowTitleShort, "")
Send("^h")
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:1]", ";SectionWidthSpecs=30 20 20 20 20 20 0 0 0 0 0 0 20 20 20\r\n;") ; Search String
ControlSetText("Replace Text", "Replace wit&h:", "[CLASS:Edit; INSTANCE:2]", ";SectionWidthSpecs=30 20 20 20 20 20 0 0 0 0 0 0 20 20 20\r\nSectionWidthSpecs=30 20 20 20 20 20 0 0 -44 -32 -32 0 20 20 20\r\n;") ; Replace with
If Not ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "IsChecked") Then
ControlCommand("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]", "Check")
$CheckboxToggled = True
Else
$CheckboxToggled = False
EndIf
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Replace &All]") ; Replace All
WinWait("Notepad3", "specified text")
WinActivate("Notepad3", "specified text")
ControlClick("Notepad3", "specified text", "[CLASS:Button; TEXT:OK]"); OK
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
If $CheckboxToggled Then
ControlClick("Replace Text", "&Transform backslashes", "[CLASS:Button; TEXT:&Transform backslashes]")
EndIf
WinWait("Replace Text", "Replace wit&h:")
WinActivate("Replace Text", "Replace wit&h:")
ControlClick("Replace Text", "Replace wit&h:", "[CLASS:Button; TEXT:Close]") ; Close
Sleep($DefaultWait)
; Check Settings
ToolTip("")
ToolTip("Check Settings...", $ToolTip_X, $ToolTip_Y)
$Reply = MsgBox(4, "Check Settings", "Check settings and make any additional required manual changes." & @CRLF & @CRLF & "Save?")
Switch $Reply
Case 6
; Yes - save and close settings file
ToolTip("")
ToolTip("Saving and closing settings file...", $ToolTip_X, $ToolTip_Y)
Send("^s")
Send("!{F4}")
Case 7
; No - close settings file without saving
ToolTip("")
ToolTip("Closing settings file without saving...", $ToolTip_X, $ToolTip_Y)
Send("!{F4}")
Sleep($DefaultWait)
If WinExists("Notepad3", "Save changes to ") Then
ControlClick("Notepad3", "Save changes to ", "[CLASS:Button; TEXT:&No]") ; No
EndIf
Case Else
; Should never happen - exit
Exit(1000)
EndSwitch
; Relaunch Notepad3
ToolTip("")
ToolTip("Relaunching Notepad3...", $ToolTip_X, $ToolTip_Y)
ShellExecute($PathToNotepad3)
Sleep(1800)
ToolTip("")
ToolTip("Waiting for Notepad3 window...", $ToolTip_X, $ToolTip_Y)
WinWait($WindowTitle, "")
WinActivate($WindowTitle, "")
; FUNCTIONS
; DisplayElementSet: searches given box area for colour that indicates set
; Parameters:
; $PreFuncCommand: keys to send first to invoke menu (optional)
; $Coord_Left: left edge
; $Coord_Top: top edge
; $Coord_Right: right edge
; $Coord_Bottom: bottom edge
; $Colour_Set: colour to search for that indicates element is set
Func DisplayElementSet($PreFuncCommand, $Coord_Left, $Coord_Top, $Coord_Right, $Coord_Bottom, $Colour_Set)
; MouseMove(150, 8)
Dim $CheckboxArea
Dim $IsSet
If $PreFuncCommand <> "" Then
Send($PreFuncCommand)
Sleep($DefaultWait)
EndIf
$CheckboxArea = PixelSearch($Coord_left, $Coord_top, $Coord_right, $Coord_bottom, $colour_set, 5)
If @error Then
$IsSet = False
Else
$IsSet = True
EndIf
If $PreFuncCommand <> "" Then
Send("{ALT}")
EndIf
Return $IsSet
EndFunc
; CheckCoords: move mouse pointer to window coordinates to check screen element position
; (called for testing)
; Parameters:
; $PreFuncCommand: keys to send first to invoke menu (optional)
; $Coord_Left: left edge
; $Coord_Top: top edge
; $Coord_Right: right edge
; $Coord_Bottom: bottom edge
Func CheckCoords($PreFuncCommand, $Coord_Left, $Coord_Top, $Coord_Right, $Coord_Bottom)
If $PreFuncCommand <> "" Then
Send($PreFuncCommand)
Sleep($DefaultWait)
EndIf
MouseMove($Coord_Left, $Coord_Top)
Sleep(1000)
MouseMove($Coord_Right, $Coord_Top)
Sleep(1000)
MouseMove($Coord_Left, $Coord_Bottom)
Sleep(1000)
MouseMove($Coord_Right, $Coord_Bottom)
Sleep(1000)
; Send("{ALT}")
EndFunc

View File

@ -0,0 +1,246 @@
diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp
index 567ac09c..021d940f 100644
--- a/src/Config/Config.cpp
+++ b/src/Config/Config.cpp
@@ -1370,6 +1370,7 @@ bool SaveSettings(bool bSaveSettingsNow)
if (ok) {
Style_Save(); // Scintilla Styles
+ Globals.bIniFileFromScratch = false;
}
return ok;
}
diff --git a/src/Styles.c b/src/Styles.c
index 4e394569..4e7e78bc 100644
--- a/src/Styles.c
+++ b/src/Styles.c
@@ -633,7 +633,7 @@ bool Style_ImportFromFile(const WCHAR* szFile)
//
void Style_Save()
{
- Style_ExportToFile(Theme_Files[s_idxSelectedTheme].szFilePath, false);
+ Style_ExportToFile(Theme_Files[s_idxSelectedTheme].szFilePath, Globals.bIniFileFromScratch);
if (s_idxSelectedTheme > 1) {
IniFileSetString(Globals.IniFile, L"Styles", STYLING_THEME_NAME, Theme_Files[s_idxSelectedTheme].szName);
@@ -667,17 +667,15 @@ bool Style_Export(HWND hwnd)
ofn.Flags = /*OFN_FILEMUSTEXIST |*/ OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT
| OFN_PATHMUSTEXIST | OFN_SHAREAWARE /*| OFN_NODEREFERENCELINKS*/ | OFN_OVERWRITEPROMPT;
- Globals.dwLastError = ERROR_SUCCESS;
-
+ bool ok = false;
if (GetSaveFileName(&ofn))
{
- Globals.dwLastError = Style_ExportToFile(szFile, true);
-
- if (Globals.dwLastError != ERROR_SUCCESS) {
+ ok = Style_ExportToFile(szFile, true);
+ if (!ok) {
InfoBoxLng(MB_ICONERROR, NULL, IDS_MUI_EXPORT_FAIL, PathFindFileName(szFile));
}
}
- return (Globals.dwLastError == ERROR_SUCCESS);
+ return ok;
}
@@ -694,115 +692,112 @@ bool Style_ExportToFile(const WCHAR* szFile, bool bForceAll)
return false;
}
- bool const ok = LoadIniFile(szFile);
-
- if (ok) {
+ LoadIniFile(szFile); // reset
// Custom colors
- const WCHAR* const CustomColors_Section = L"Custom Colors";
+ const WCHAR* const CustomColors_Section = L"Custom Colors";
- for (int i = 0; i < 16; i++) {
- if (bForceAll || (g_colorCustom[i] != s_colorDefault[i])) {
- WCHAR tch[32] = { L'\0' };
- WCHAR wch[32] = { L'\0' };
- StringCchPrintf(tch, COUNTOF(tch), L"%02i", i + 1);
- StringCchPrintf(wch, COUNTOF(wch), L"#%02X%02X%02X",
- (int)GetRValue(g_colorCustom[i]), (int)GetGValue(g_colorCustom[i]), (int)GetBValue(g_colorCustom[i]));
- IniSectionSetString(CustomColors_Section, tch, wch);
- }
+ for (int i = 0; i < 16; i++) {
+ if (bForceAll || (g_colorCustom[i] != s_colorDefault[i])) {
+ WCHAR tch[32] = { L'\0' };
+ WCHAR wch[32] = { L'\0' };
+ StringCchPrintf(tch, COUNTOF(tch), L"%02i", i + 1);
+ StringCchPrintf(wch, COUNTOF(wch), L"#%02X%02X%02X",
+ (int)GetRValue(g_colorCustom[i]), (int)GetGValue(g_colorCustom[i]), (int)GetBValue(g_colorCustom[i]));
+ IniSectionSetString(CustomColors_Section, tch, wch);
}
+ }
- const WCHAR* const Styles_Section = L"Styles";
+ const WCHAR* const Styles_Section = L"Styles";
- // auto select
- bool const bUse2ndSty = Style_GetUse2ndDefault();
- if (bUse2ndSty) {
- IniSectionSetBool(Styles_Section, L"Use2ndDefaultStyle", bUse2ndSty);
- }
- else {
- IniSectionDelete(Styles_Section, L"Use2ndDefaultStyle", false);
- }
+ // auto select
+ bool const bUse2ndSty = Style_GetUse2ndDefault();
+ if (bUse2ndSty) {
+ IniSectionSetBool(Styles_Section, L"Use2ndDefaultStyle", bUse2ndSty);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"Use2ndDefaultStyle", false);
+ }
- // default scheme
- if (s_iDefaultLexer != 0) {
- IniSectionSetInt(Styles_Section, L"DefaultScheme", s_iDefaultLexer);
- }
- else {
- IniSectionDelete(Styles_Section, L"DefaultScheme", false);
- }
+ // default scheme
+ if (s_iDefaultLexer != 0) {
+ IniSectionSetInt(Styles_Section, L"DefaultScheme", s_iDefaultLexer);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"DefaultScheme", false);
+ }
- // auto select
- if (!s_bAutoSelect) {
- IniSectionSetBool(Styles_Section, L"AutoSelect", s_bAutoSelect);
- }
- else {
- IniSectionDelete(Styles_Section, L"AutoSelect", false);
- }
+ // auto select
+ if (!s_bAutoSelect) {
+ IniSectionSetBool(Styles_Section, L"AutoSelect", s_bAutoSelect);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"AutoSelect", false);
+ }
- // scheme select dlg dimensions
- if (s_cxStyleSelectDlg != STYLESELECTDLG_X) {
- IniSectionSetInt(Styles_Section, L"SelectDlgSizeX", s_cxStyleSelectDlg);
+ // scheme select dlg dimensions
+ if (s_cxStyleSelectDlg != STYLESELECTDLG_X) {
+ IniSectionSetInt(Styles_Section, L"SelectDlgSizeX", s_cxStyleSelectDlg);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"SelectDlgSizeX", false);
+ }
+ if (s_cyStyleSelectDlg != STYLESELECTDLG_Y) {
+ IniSectionSetInt(Styles_Section, L"SelectDlgSizeY", s_cyStyleSelectDlg);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"SelectDlgSizeY", false);
+ }
+
+ // create canonical order of lexer sections
+ if (bForceAll) {
+ for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
+ {
+ IniSectionClear(g_pLexArray[iLexer]->pszName, true);
}
- else {
- IniSectionDelete(Styles_Section, L"SelectDlgSizeX", false);
+ for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
+ {
+ IniSectionSetString(g_pLexArray[iLexer]->pszName, NULL, NULL);
}
- if (s_cyStyleSelectDlg != STYLESELECTDLG_Y) {
- IniSectionSetInt(Styles_Section, L"SelectDlgSizeY", s_cyStyleSelectDlg);
+ bForceAll = !Globals.bIniFileFromScratch;
+ }
+
+ WCHAR szTmpStyle[BUFSIZE_STYLE_VALUE];
+
+ for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); ++iLexer)
+ {
+ LPCWSTR const Lexer_Section = g_pLexArray[iLexer]->pszName;
+
+ if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->szExtensions, g_pLexArray[iLexer]->pszDefExt) != 0))
+ {
+ IniSectionSetString(Lexer_Section, L"FileNameExtensions", g_pLexArray[iLexer]->szExtensions);
}
else {
- IniSectionDelete(Styles_Section, L"SelectDlgSizeY", false);
+ IniSectionDelete(Lexer_Section, L"FileNameExtensions", false);
}
- // create canonical order of lexer sections
- if (bForceAll) {
- for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
- {
- IniSectionClear(g_pLexArray[iLexer]->pszName, true);
- }
- for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
- {
- IniSectionSetString(g_pLexArray[iLexer]->pszName, NULL, NULL);
- }
- }
-
- WCHAR szTmpStyle[BUFSIZE_STYLE_VALUE];
-
- for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); ++iLexer)
+ unsigned i = 0;
+ while (g_pLexArray[iLexer]->Styles[i].iStyle != -1)
{
- LPCWSTR const Lexer_Section = g_pLexArray[iLexer]->pszName;
+ // normalize defaults
+ szTmpStyle[0] = L'\0'; // clear
+ Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].pszDefault, szTmpStyle, COUNTOF(szTmpStyle), true, true);
- if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->szExtensions, g_pLexArray[iLexer]->pszDefExt) != 0))
+ if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle) != 0))
{
- IniSectionSetString(Lexer_Section, L"FileNameExtensions", g_pLexArray[iLexer]->szExtensions);
+ // normalize value
+ szTmpStyle[0] = L'\0'; // clear
+ Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle, COUNTOF(szTmpStyle), true, true);
+ IniSectionSetString(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, szTmpStyle);
}
else {
- IniSectionDelete(Lexer_Section, L"FileNameExtensions", false);
- }
-
- unsigned i = 0;
- while (g_pLexArray[iLexer]->Styles[i].iStyle != -1)
- {
- // normalize defaults
- szTmpStyle[0] = L'\0'; // clear
- Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].pszDefault, szTmpStyle, COUNTOF(szTmpStyle), true, true);
-
- if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle) != 0))
- {
- // normalize value
- szTmpStyle[0] = L'\0'; // clear
- Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle, COUNTOF(szTmpStyle), true, true);
- IniSectionSetString(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, szTmpStyle);
- }
- else {
- IniSectionDelete(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, false);
- }
- ++i;
+ IniSectionDelete(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, false);
}
+ ++i;
}
-
- SaveIniFile(szFile);
}
- return ok;
+
+ return SaveIniFile(szFile);
}

View File

@ -0,0 +1,140 @@
diff --git a/Versions/build.txt b/Versions/build.txt
index 38ac9c59..8c88d58d 100644
--- a/Versions/build.txt
+++ b/Versions/build.txt
@@ -1 +1 @@
-2398
+2399
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index 051bb650..cb40e1bf 100644
--- a/res/Notepad3.exe.manifest.conf
+++ b/res/Notepad3.exe.manifest.conf
@@ -3,7 +3,7 @@
<assemblyIdentity
name="Notepad3"
processorArchitecture="*"
- version="5.19.719.2398"
+ version="5.19.719.2399"
type="win32"
/>
<description>Notepad3 BETA</description>
diff --git a/scintilla/win32/ScintillaWin.cxx b/scintilla/win32/ScintillaWin.cxx
index 28596fa7..12fd7173 100644
--- a/scintilla/win32/ScintillaWin.cxx
+++ b/scintilla/win32/ScintillaWin.cxx
@@ -1437,22 +1437,12 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
break;
}
- // Hold RIGHT MOUSE BUTTON and SCROLL to cycle through UNDO history
- if (wParam & MK_RBUTTON) {
- if (GET_WHEEL_DELTA_WPARAM(wParam) > 0) {
- Redo();
- }
- else if (GET_WHEEL_DELTA_WPARAM(wParam) < 0) {
- Undo();
- }
- return 0;
- }
-
// Don't handle datazoom.
// (A good idea for datazoom would be to "fold" or "unfold" details.
// i.e. if datazoomed out only class structures are visible, when datazooming in the control
// structures appear, then eventually the individual statements...)
- if (wParam & MK_SHIFT) {
+ if (wParam & (MK_SHIFT | MK_RBUTTON)) {
+ // send to client
return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
}
diff --git a/src/Notepad3.c b/src/Notepad3.c
index b70ad278..53a8e102 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -142,6 +142,7 @@ static int s_cyReBar;
static int s_cyReBarFrame;
static int s_cxEditFrame;
static int s_cyEditFrame;
+static bool s_bUndoRedoScroll = false;
// for tiny expression calculation
static double s_dExpression = 0.0;
@@ -1557,7 +1558,20 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
case WM_MOUSEWHEEL:
- if (wParam & MK_CONTROL) { ShowZoomCallTip(); }
+ if (wParam & MK_CONTROL) {
+ ShowZoomCallTip();
+ }
+ else if (wParam & MK_RBUTTON) {
+ // Hold RIGHT MOUSE BUTTON and SCROLL to cycle through UNDO history
+ if (GET_WHEEL_DELTA_WPARAM(wParam) > 0) {
+ s_bUndoRedoScroll = true;
+ SciCall_Redo();
+ }
+ else if (GET_WHEEL_DELTA_WPARAM(wParam) < 0) {
+ s_bUndoRedoScroll = true;
+ SciCall_Undo();
+ }
+ }
break;
case WM_INPUTLANGCHANGE:
@@ -2846,21 +2860,25 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
//
LRESULT MsgContextMenu(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
- HMENU hmenu;
- int imenu = 0;
- POINT pt;
- int nID = GetDlgCtrlID((HWND)wParam);
+ // no context menu after undo/redo history scrolling
+ if (s_bUndoRedoScroll) {
+ s_bUndoRedoScroll = false;
+ return FALSE;
+ }
+ int nID = GetDlgCtrlID((HWND)wParam);
if ((nID != IDC_EDIT) && (nID != IDC_STATUSBAR) &&
(nID != IDC_REBAR) && (nID != IDC_TOOLBAR))
return DefWindowProc(hwnd, umsg, wParam, lParam);
- hmenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_POPUPMENU));
+ HMENU hmenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_POPUPMENU));
//SetMenuDefaultItem(GetSubMenu(hmenu,1),0,false);
+ POINT pt;
pt.x = (int)(short)LOWORD(lParam);
pt.y = (int)(short)HIWORD(lParam);
+ int imenu = 0;
switch (nID) {
case IDC_EDIT:
{
diff --git a/src/StyleLexers/styleLexStandard.c b/src/StyleLexers/styleLexStandard.c
index 9aafcd5f..0a9868b0 100644
--- a/src/StyleLexers/styleLexStandard.c
+++ b/src/StyleLexers/styleLexStandard.c
@@ -53,7 +53,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"",
&KeyWords_NULL,{
- { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"font:Segoe UI; size:11; smoothing:cleartype", L"" },
+ { {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"" },
{ {SCI_SETEXTRAASCENT + SCI_SETEXTRADESCENT}, IDS_LEX_STD_X_SPC, L"Extra Line Spacing (Size)", L"size:-1", L"" },
EDITLEXER_SENTINEL } };
diff --git a/src/VersionEx.h b/src/VersionEx.h
index f400c6a1..53bab1d5 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -8,7 +8,7 @@
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 719
-#define VERSION_BUILD 2398
+#define VERSION_BUILD 2399
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define VERSION_PATCH BETA

View File

@ -0,0 +1,257 @@
From 7b76641b14b04c38b561a58ba9a7b2f5b7bdb045 Mon Sep 17 00:00:00 2001
From: Rainer Kottenhoff <rainer.kottenhoff@gmail.com>
Date: Mon, 8 Jul 2019 22:08:49 +0200
Subject: [PATCH] + fix: broken Style Scheme Export (due to new ini file
handler)
---
src/Config/Config.cpp | 1 +
src/Styles.c | 181 ++++++++++++++++++++----------------------
2 files changed, 89 insertions(+), 93 deletions(-)
diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp
index 567ac09c..021d940f 100644
--- a/src/Config/Config.cpp
+++ b/src/Config/Config.cpp
@@ -1370,6 +1370,7 @@ bool SaveSettings(bool bSaveSettingsNow)
if (ok) {
Style_Save(); // Scintilla Styles
+ Globals.bIniFileFromScratch = false;
}
return ok;
}
diff --git a/src/Styles.c b/src/Styles.c
index 4e394569..4e7e78bc 100644
--- a/src/Styles.c
+++ b/src/Styles.c
@@ -633,7 +633,7 @@ bool Style_ImportFromFile(const WCHAR* szFile)
//
void Style_Save()
{
- Style_ExportToFile(Theme_Files[s_idxSelectedTheme].szFilePath, false);
+ Style_ExportToFile(Theme_Files[s_idxSelectedTheme].szFilePath, Globals.bIniFileFromScratch);
if (s_idxSelectedTheme > 1) {
IniFileSetString(Globals.IniFile, L"Styles", STYLING_THEME_NAME, Theme_Files[s_idxSelectedTheme].szName);
@@ -667,17 +667,15 @@ bool Style_Export(HWND hwnd)
ofn.Flags = /*OFN_FILEMUSTEXIST |*/ OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT
| OFN_PATHMUSTEXIST | OFN_SHAREAWARE /*| OFN_NODEREFERENCELINKS*/ | OFN_OVERWRITEPROMPT;
- Globals.dwLastError = ERROR_SUCCESS;
-
+ bool ok = false;
if (GetSaveFileName(&ofn))
{
- Globals.dwLastError = Style_ExportToFile(szFile, true);
-
- if (Globals.dwLastError != ERROR_SUCCESS) {
+ ok = Style_ExportToFile(szFile, true);
+ if (!ok) {
InfoBoxLng(MB_ICONERROR, NULL, IDS_MUI_EXPORT_FAIL, PathFindFileName(szFile));
}
}
- return (Globals.dwLastError == ERROR_SUCCESS);
+ return ok;
}
@@ -694,115 +692,112 @@ bool Style_ExportToFile(const WCHAR* szFile, bool bForceAll)
return false;
}
- bool const ok = LoadIniFile(szFile);
-
- if (ok) {
+ LoadIniFile(szFile); // reset
// Custom colors
- const WCHAR* const CustomColors_Section = L"Custom Colors";
+ const WCHAR* const CustomColors_Section = L"Custom Colors";
- for (int i = 0; i < 16; i++) {
- if (bForceAll || (g_colorCustom[i] != s_colorDefault[i])) {
- WCHAR tch[32] = { L'\0' };
- WCHAR wch[32] = { L'\0' };
- StringCchPrintf(tch, COUNTOF(tch), L"%02i", i + 1);
- StringCchPrintf(wch, COUNTOF(wch), L"#%02X%02X%02X",
- (int)GetRValue(g_colorCustom[i]), (int)GetGValue(g_colorCustom[i]), (int)GetBValue(g_colorCustom[i]));
- IniSectionSetString(CustomColors_Section, tch, wch);
- }
+ for (int i = 0; i < 16; i++) {
+ if (bForceAll || (g_colorCustom[i] != s_colorDefault[i])) {
+ WCHAR tch[32] = { L'\0' };
+ WCHAR wch[32] = { L'\0' };
+ StringCchPrintf(tch, COUNTOF(tch), L"%02i", i + 1);
+ StringCchPrintf(wch, COUNTOF(wch), L"#%02X%02X%02X",
+ (int)GetRValue(g_colorCustom[i]), (int)GetGValue(g_colorCustom[i]), (int)GetBValue(g_colorCustom[i]));
+ IniSectionSetString(CustomColors_Section, tch, wch);
}
+ }
- const WCHAR* const Styles_Section = L"Styles";
+ const WCHAR* const Styles_Section = L"Styles";
- // auto select
- bool const bUse2ndSty = Style_GetUse2ndDefault();
- if (bUse2ndSty) {
- IniSectionSetBool(Styles_Section, L"Use2ndDefaultStyle", bUse2ndSty);
- }
- else {
- IniSectionDelete(Styles_Section, L"Use2ndDefaultStyle", false);
- }
+ // auto select
+ bool const bUse2ndSty = Style_GetUse2ndDefault();
+ if (bUse2ndSty) {
+ IniSectionSetBool(Styles_Section, L"Use2ndDefaultStyle", bUse2ndSty);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"Use2ndDefaultStyle", false);
+ }
- // default scheme
- if (s_iDefaultLexer != 0) {
- IniSectionSetInt(Styles_Section, L"DefaultScheme", s_iDefaultLexer);
- }
- else {
- IniSectionDelete(Styles_Section, L"DefaultScheme", false);
- }
+ // default scheme
+ if (s_iDefaultLexer != 0) {
+ IniSectionSetInt(Styles_Section, L"DefaultScheme", s_iDefaultLexer);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"DefaultScheme", false);
+ }
- // auto select
- if (!s_bAutoSelect) {
- IniSectionSetBool(Styles_Section, L"AutoSelect", s_bAutoSelect);
- }
- else {
- IniSectionDelete(Styles_Section, L"AutoSelect", false);
- }
+ // auto select
+ if (!s_bAutoSelect) {
+ IniSectionSetBool(Styles_Section, L"AutoSelect", s_bAutoSelect);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"AutoSelect", false);
+ }
- // scheme select dlg dimensions
- if (s_cxStyleSelectDlg != STYLESELECTDLG_X) {
- IniSectionSetInt(Styles_Section, L"SelectDlgSizeX", s_cxStyleSelectDlg);
+ // scheme select dlg dimensions
+ if (s_cxStyleSelectDlg != STYLESELECTDLG_X) {
+ IniSectionSetInt(Styles_Section, L"SelectDlgSizeX", s_cxStyleSelectDlg);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"SelectDlgSizeX", false);
+ }
+ if (s_cyStyleSelectDlg != STYLESELECTDLG_Y) {
+ IniSectionSetInt(Styles_Section, L"SelectDlgSizeY", s_cyStyleSelectDlg);
+ }
+ else {
+ IniSectionDelete(Styles_Section, L"SelectDlgSizeY", false);
+ }
+
+ // create canonical order of lexer sections
+ if (bForceAll) {
+ for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
+ {
+ IniSectionClear(g_pLexArray[iLexer]->pszName, true);
}
- else {
- IniSectionDelete(Styles_Section, L"SelectDlgSizeX", false);
+ for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
+ {
+ IniSectionSetString(g_pLexArray[iLexer]->pszName, NULL, NULL);
}
- if (s_cyStyleSelectDlg != STYLESELECTDLG_Y) {
- IniSectionSetInt(Styles_Section, L"SelectDlgSizeY", s_cyStyleSelectDlg);
+ bForceAll = !Globals.bIniFileFromScratch;
+ }
+
+ WCHAR szTmpStyle[BUFSIZE_STYLE_VALUE];
+
+ for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); ++iLexer)
+ {
+ LPCWSTR const Lexer_Section = g_pLexArray[iLexer]->pszName;
+
+ if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->szExtensions, g_pLexArray[iLexer]->pszDefExt) != 0))
+ {
+ IniSectionSetString(Lexer_Section, L"FileNameExtensions", g_pLexArray[iLexer]->szExtensions);
}
else {
- IniSectionDelete(Styles_Section, L"SelectDlgSizeY", false);
+ IniSectionDelete(Lexer_Section, L"FileNameExtensions", false);
}
- // create canonical order of lexer sections
- if (bForceAll) {
- for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
- {
- IniSectionClear(g_pLexArray[iLexer]->pszName, true);
- }
- for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); iLexer++)
- {
- IniSectionSetString(g_pLexArray[iLexer]->pszName, NULL, NULL);
- }
- }
-
- WCHAR szTmpStyle[BUFSIZE_STYLE_VALUE];
-
- for (int iLexer = 0; iLexer < COUNTOF(g_pLexArray); ++iLexer)
+ unsigned i = 0;
+ while (g_pLexArray[iLexer]->Styles[i].iStyle != -1)
{
- LPCWSTR const Lexer_Section = g_pLexArray[iLexer]->pszName;
+ // normalize defaults
+ szTmpStyle[0] = L'\0'; // clear
+ Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].pszDefault, szTmpStyle, COUNTOF(szTmpStyle), true, true);
- if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->szExtensions, g_pLexArray[iLexer]->pszDefExt) != 0))
+ if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle) != 0))
{
- IniSectionSetString(Lexer_Section, L"FileNameExtensions", g_pLexArray[iLexer]->szExtensions);
+ // normalize value
+ szTmpStyle[0] = L'\0'; // clear
+ Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle, COUNTOF(szTmpStyle), true, true);
+ IniSectionSetString(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, szTmpStyle);
}
else {
- IniSectionDelete(Lexer_Section, L"FileNameExtensions", false);
- }
-
- unsigned i = 0;
- while (g_pLexArray[iLexer]->Styles[i].iStyle != -1)
- {
- // normalize defaults
- szTmpStyle[0] = L'\0'; // clear
- Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].pszDefault, szTmpStyle, COUNTOF(szTmpStyle), true, true);
-
- if (bForceAll || (StringCchCompareXI(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle) != 0))
- {
- // normalize value
- szTmpStyle[0] = L'\0'; // clear
- Style_CopyStyles_IfNotDefined(g_pLexArray[iLexer]->Styles[i].szValue, szTmpStyle, COUNTOF(szTmpStyle), true, true);
- IniSectionSetString(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, szTmpStyle);
- }
- else {
- IniSectionDelete(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, false);
- }
- ++i;
+ IniSectionDelete(Lexer_Section, g_pLexArray[iLexer]->Styles[i].pszName, false);
}
+ ++i;
}
-
- SaveIniFile(szFile);
}
- return ok;
+
+ return SaveIniFile(szFile);
}

View File

@ -0,0 +1,155 @@
From 421e3c89a27d36a195c56a57e69995a6856f0144 Mon Sep 17 00:00:00 2001
From: Rainer Kottenhoff <rainer.kottenhoff@gmail.com>
Date: Fri, 19 Jul 2019 15:15:51 +0200
Subject: [PATCH] + chg: no pre-defined font for "Text Files" + fix: no context
menu after undo/redo history scrolling
---
Versions/build.txt | 2 +-
res/Notepad3.exe.manifest.conf | 2 +-
scintilla/win32/ScintillaWin.cxx | 14 ++------------
src/Notepad3.c | 30 ++++++++++++++++++++++++------
src/StyleLexers/styleLexStandard.c | 2 +-
src/VersionEx.h | 2 +-
6 files changed, 30 insertions(+), 22 deletions(-)
diff --git a/Versions/build.txt b/Versions/build.txt
index 38ac9c59..8c88d58d 100644
--- a/Versions/build.txt
+++ b/Versions/build.txt
@@ -1 +1 @@
-2398
+2399
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index 051bb650..cb40e1bf 100644
--- a/res/Notepad3.exe.manifest.conf
+++ b/res/Notepad3.exe.manifest.conf
@@ -3,7 +3,7 @@
<assemblyIdentity
name="Notepad3"
processorArchitecture="*"
- version="5.19.719.2398"
+ version="5.19.719.2399"
type="win32"
/>
<description>Notepad3 BETA</description>
diff --git a/scintilla/win32/ScintillaWin.cxx b/scintilla/win32/ScintillaWin.cxx
index 28596fa7..12fd7173 100644
--- a/scintilla/win32/ScintillaWin.cxx
+++ b/scintilla/win32/ScintillaWin.cxx
@@ -1437,22 +1437,12 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
break;
}
- // Hold RIGHT MOUSE BUTTON and SCROLL to cycle through UNDO history
- if (wParam & MK_RBUTTON) {
- if (GET_WHEEL_DELTA_WPARAM(wParam) > 0) {
- Redo();
- }
- else if (GET_WHEEL_DELTA_WPARAM(wParam) < 0) {
- Undo();
- }
- return 0;
- }
-
// Don't handle datazoom.
// (A good idea for datazoom would be to "fold" or "unfold" details.
// i.e. if datazoomed out only class structures are visible, when datazooming in the control
// structures appear, then eventually the individual statements...)
- if (wParam & MK_SHIFT) {
+ if (wParam & (MK_SHIFT | MK_RBUTTON)) {
+ // send to client
return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
}
diff --git a/src/Notepad3.c b/src/Notepad3.c
index b70ad278..53a8e102 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -142,6 +142,7 @@ static int s_cyReBar;
static int s_cyReBarFrame;
static int s_cxEditFrame;
static int s_cyEditFrame;
+static bool s_bUndoRedoScroll = false;
// for tiny expression calculation
static double s_dExpression = 0.0;
@@ -1557,7 +1558,20 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
case WM_MOUSEWHEEL:
- if (wParam & MK_CONTROL) { ShowZoomCallTip(); }
+ if (wParam & MK_CONTROL) {
+ ShowZoomCallTip();
+ }
+ else if (wParam & MK_RBUTTON) {
+ // Hold RIGHT MOUSE BUTTON and SCROLL to cycle through UNDO history
+ if (GET_WHEEL_DELTA_WPARAM(wParam) > 0) {
+ s_bUndoRedoScroll = true;
+ SciCall_Redo();
+ }
+ else if (GET_WHEEL_DELTA_WPARAM(wParam) < 0) {
+ s_bUndoRedoScroll = true;
+ SciCall_Undo();
+ }
+ }
break;
case WM_INPUTLANGCHANGE:
@@ -2846,21 +2860,25 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
//
LRESULT MsgContextMenu(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
- HMENU hmenu;
- int imenu = 0;
- POINT pt;
- int nID = GetDlgCtrlID((HWND)wParam);
+ // no context menu after undo/redo history scrolling
+ if (s_bUndoRedoScroll) {
+ s_bUndoRedoScroll = false;
+ return FALSE;
+ }
+ int nID = GetDlgCtrlID((HWND)wParam);
if ((nID != IDC_EDIT) && (nID != IDC_STATUSBAR) &&
(nID != IDC_REBAR) && (nID != IDC_TOOLBAR))
return DefWindowProc(hwnd, umsg, wParam, lParam);
- hmenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_POPUPMENU));
+ HMENU hmenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_POPUPMENU));
//SetMenuDefaultItem(GetSubMenu(hmenu,1),0,false);
+ POINT pt;
pt.x = (int)(short)LOWORD(lParam);
pt.y = (int)(short)HIWORD(lParam);
+ int imenu = 0;
switch (nID) {
case IDC_EDIT:
{
diff --git a/src/StyleLexers/styleLexStandard.c b/src/StyleLexers/styleLexStandard.c
index 9aafcd5f..0a9868b0 100644
--- a/src/StyleLexers/styleLexStandard.c
+++ b/src/StyleLexers/styleLexStandard.c
@@ -53,7 +53,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"",
&KeyWords_NULL,{
- { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"font:Segoe UI; size:11; smoothing:cleartype", L"" },
+ { {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"" },
{ {SCI_SETEXTRAASCENT + SCI_SETEXTRADESCENT}, IDS_LEX_STD_X_SPC, L"Extra Line Spacing (Size)", L"size:-1", L"" },
EDITLEXER_SENTINEL } };
diff --git a/src/VersionEx.h b/src/VersionEx.h
index f400c6a1..53bab1d5 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -8,7 +8,7 @@
#define VERSION_MAJOR 5
#define VERSION_MINOR 19
#define VERSION_REV 719
-#define VERSION_BUILD 2398
+#define VERSION_BUILD 2399
#define SCINTILLA_VER 420
#define ONIGURUMA_REGEX_VER 6.9.3
#define VERSION_PATCH BETA