├── .gitignore ├── .gitmodules ├── README.md ├── SciTEDirectory.properties ├── installer ├── BuildInstaller.ahk ├── Lib │ ├── RemoveDir.ahk │ ├── SetWBClientSite.ahk │ ├── Util.ahk │ └── WipeProfile.ahk ├── README.md ├── banner.png ├── dialog.html ├── install.ico ├── install.manifest └── setup.ahk ├── scipatches ├── .gitattributes ├── README.md ├── SciTE4AutoHotkey.ico ├── lexilla.diff └── scite.diff ├── source ├── $REVISION ├── License.txt ├── SciTE.VisualElementsManifest.xml ├── SciTEGlobal.properties ├── TestSuite.ahk ├── ahk.commands.properties ├── ahk.keys.api ├── ahk.keys.properties ├── ahk.lua ├── ahk.properties ├── ahk1.keywords.properties ├── ahk1.standard.api ├── ahk2.keywords.properties ├── ahk2.standard.api ├── locales │ ├── Deutsch.locale.properties │ ├── English.locale.properties │ ├── Español.locale.properties │ ├── Français.locale.properties │ ├── Italiano.locale.properties │ ├── Polski.locale.properties │ ├── Svenska.locale.properties │ ├── Русский.locale.properties │ ├── 日本語.locale.properties │ ├── 简体中文.locale.properties │ └── 한국어.locale.properties ├── lua.properties ├── newuser │ ├── AhkAbbrevs.properties │ ├── Autorun.ahk │ ├── Macros │ │ ├── Create new class.macro │ │ ├── Create new function.macro │ │ └── If statement.macro │ ├── SciTEUser.properties │ ├── Scriptlets │ │ ├── (Example) Run or activate Notepad.scriptlet │ │ └── Progress text.scriptlet │ ├── Styles │ │ ├── Blank.style.properties │ │ ├── SciTE4AutoHotkey Dark.style.properties │ │ └── SciTE4AutoHotkey Light.style.properties │ ├── UserLuaScript.lua │ ├── UserToolbar.properties │ └── _extensions.properties ├── other.properties ├── tillagoto.properties ├── toolbar.properties ├── toolbar │ ├── ComInterface.ahk │ ├── Extensions.ahk │ ├── Lib │ │ ├── CEscape.ahk │ │ ├── CUnescape.ahk │ │ ├── ComRemote.ahk │ │ ├── ExportExtension.ahk │ │ ├── ExtractExtension.ahk │ │ ├── Ini2Object.ahk │ │ ├── StrPutVar.ahk │ │ └── Toolbar.ahk │ ├── PlatformDetect.ahk │ ├── SciTEDirector.ahk │ ├── SciTEMacros.ahk │ └── Toolbar.ahk ├── toolicon.icl └── tools │ ├── $gendocs_scite │ ├── Autorun.ahk │ ├── Lib │ ├── Anchor.ahk │ ├── DebugVarsGui.ahk │ ├── GetSciTEInstance.ahk │ ├── ProcessInfo.ahk │ ├── SUpd.ahk │ ├── SciControl.ahk │ └── dbgp.ahk │ ├── MsgBoxC.ahk │ ├── PropEdit.ahk │ ├── SUtility.ahk │ ├── SciTEDebug.ahk │ ├── SciTEDiag.ahk │ ├── SciTEReload.ahk │ ├── SciTEUpdate.ahk │ ├── SmartGUI │ ├── SmartGUI.ahk │ ├── SmartGUI.html │ ├── grid.gif │ ├── smartgui.icl │ └── splash.gif │ ├── StyleEdit.ahk │ ├── TillaGoto.ahk │ ├── WindowSpy.ahk │ ├── __AhkVer.ahk │ ├── s4ahk-big.png │ └── s4ahk-small.png └── syntaxgen ├── Common.ahk ├── CreateAhk1.ahk ├── CreateAhk2.ahk └── CreateKeys.ahk /.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | *.dll 3 | *.chm 4 | *.bak 5 | *.db 6 | *.bin 7 | *.sfx 8 | *.bat 9 | *.zip 10 | *.7z 11 | *.orig 12 | *~ 13 | $DEV 14 | /installer/$TEMP/ 15 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "source/tools/Lib/DebugVars"] 2 | path = source/tools/Lib/DebugVars 3 | url = https://github.com/Lexikos/DebugVars.ahk 4 | [submodule "source/tools/Lib/dbgp"] 5 | path = source/tools/Lib/dbgp 6 | url = https://github.com/Lexikos/dbgp 7 | [submodule "source/tools/GenDocs"] 8 | path = source/tools/GenDocs 9 | url = https://github.com/fincs/GenDocs 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SciTE4AutoHotkey 2 | ================ 3 | 4 | Introduction 5 | ------------ 6 | 7 | SciTE4AutoHotkey is a SciTE-based AutoHotkey script editor. It offers: 8 | 9 | * Syntax highlighting 10 | * Code folding 11 | * Calltips (also known as IntelliSense) 12 | * AutoComplete 13 | * AutoIndent 14 | * AutoHotkey help integration 15 | * Abbreviations 16 | * Debugging support 17 | * Tools for AutoHotkey scripting 18 | * A toolbar that enables easy access to the tools 19 | * Some AutoHotkey scripting facilities 20 | 21 | Building SciTE4AutoHotkey 22 | ------------------------- 23 | 24 | First, SciTE4AutoHotkey must be cloned using the following command to ensure all submodules are also cloned: 25 | 26 | git clone --recursive https://github.com/fincs/SciTE4AutoHotkey 27 | 28 | Afterwards build SciTE/Scintilla by following the instructions in the *scipatches* folder. When done building, copy SciTE.exe and SciLexer.dll to the /source folder. 29 | 30 | You must also build the [documentation](https://github.com/fincs/SciTE4AHK-Docs) and place it in the source folder. 31 | 32 | The latest AutoHotkey Unicode 32-bit binary also needs to be placed in the source folder, as `InternalAHK.exe`. 33 | -------------------------------------------------------------------------------- /SciTEDirectory.properties: -------------------------------------------------------------------------------- 1 | 2 | # Git GUI command - please note that it only affects this project! 3 | command.name.7.*=Git GUI 4 | command.subsystem.7.*=2 5 | command.7.*=cmd /c cd "$(SciteDirectoryHome)" && git gui 6 | -------------------------------------------------------------------------------- /installer/Lib/RemoveDir.ahk: -------------------------------------------------------------------------------- 1 | 2 | RemoveDir(dir) 3 | { 4 | IfExist, %dir% 5 | { 6 | FileRemoveDir, %dir%, 1 7 | return 1 8 | }else 9 | return 0 10 | } 11 | -------------------------------------------------------------------------------- /installer/Lib/SetWBClientSite.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; Complex workaround to override "Active scripting" setting 3 | ; and ensure scripts can run within the WebBrowser control. 4 | ; 5 | ; Author: Lexikos 6 | ; 7 | 8 | global WBClientSite 9 | 10 | SetWBClientSite(wb) 11 | { 12 | interfaces := { 13 | (Join, 14 | IOleClientSite: [0,3,1,0,1,0] 15 | IServiceProvider: [3] 16 | IInternetSecurityManager: [1,1,3,4,8,7,3,3] 17 | )} 18 | unkQI := RegisterCallback("WBClientSite_QI", "Fast") 19 | unkAddRef := RegisterCallback("WBClientSite_AddRef", "Fast") 20 | unkRelease := RegisterCallback("WBClientSite_Release", "Fast") 21 | WBClientSite := {_buffers: bufs := {}}, bufn := 0 22 | for name, prms in interfaces 23 | { 24 | bufn += 1 25 | bufs.SetCapacity(bufn, (4 + prms.MaxIndex()) * A_PtrSize) 26 | buf := bufs.GetAddress(bufn) 27 | NumPut(unkQI, buf + 1*A_PtrSize) 28 | NumPut(unkAddRef, buf + 2*A_PtrSize) 29 | NumPut(unkRelease, buf + 3*A_PtrSize) 30 | for i, prmc in prms 31 | NumPut(RegisterCallback("WBClientSite_" name, "Fast", prmc+1, i), buf + (3+i)*A_PtrSize) 32 | NumPut(buf + A_PtrSize, buf + 0) 33 | WBClientSite[name] := buf 34 | } 35 | 36 | if pOleObject := ComObjQuery(wb, "{00000112-0000-0000-C000-000000000046}") 37 | { 38 | ; IOleObject::SetClientSite 39 | DllCall(NumGet(NumGet(pOleObject+0)+3*A_PtrSize), "ptr" 40 | , pOleObject, "ptr", WBClientSite.IOleClientSite, "uint") 41 | ObjRelease(pOleObject) 42 | } 43 | } 44 | 45 | WBClientSite_QI(p, piid, ppvObject) 46 | { 47 | static IID_IUnknown := "{00000000-0000-0000-C000-000000000046}" 48 | static IID_IOleClientSite := "{00000118-0000-0000-C000-000000000046}" 49 | static IID_IServiceProvider := "{6d5140c1-7436-11ce-8034-00aa006009fa}" 50 | iid := _String4GUID(piid) 51 | if (iid = IID_IOleClientSite || iid = IID_IUnknown) 52 | { 53 | NumPut(WBClientSite.IOleClientSite, ppvObject+0) 54 | return 0 ; S_OK 55 | } 56 | if (iid = IID_IServiceProvider) 57 | { 58 | NumPut(WBClientSite.IServiceProvider, ppvObject+0) 59 | return 0 ; S_OK 60 | } 61 | NumPut(0, ppvObject+0) 62 | return 0x80004002 ; E_NOINTERFACE 63 | } 64 | 65 | WBClientSite_AddRef(p) 66 | { 67 | return 1 68 | } 69 | 70 | WBClientSite_Release(p) 71 | { 72 | return 1 73 | } 74 | 75 | WBClientSite_IOleClientSite(p, p1="", p2="", p3="") 76 | { 77 | if (A_EventInfo = 3) ; GetContainer 78 | { 79 | NumPut(0, p1+0) ; *ppContainer := NULL 80 | return 0x80004002 ; E_NOINTERFACE 81 | } 82 | return 0x80004001 ; E_NOTIMPL 83 | } 84 | 85 | WBClientSite_IServiceProvider(p, pguidService, piid, ppvObject) 86 | { 87 | static IID_IUnknown := "{00000000-0000-0000-C000-000000000046}" 88 | static IID_IInternetSecurityManager := "{79eac9ee-baf9-11ce-8c82-00aa004ba90b}" 89 | if (_String4GUID(pguidService) = IID_IInternetSecurityManager) 90 | { 91 | iid := _String4GUID(piid) 92 | if (iid = IID_IInternetSecurityManager || iid = IID_IUnknown) 93 | { 94 | NumPut(WBClientSite.IInternetSecurityManager, ppvObject+0) 95 | return 0 ; S_OK 96 | } 97 | NumPut(0, ppvObject+0) 98 | return 0x80004002 ; E_NOINTERFACE 99 | } 100 | NumPut(0, ppvObject+0) 101 | return 0x80004001 ; E_NOTIMPL 102 | } 103 | 104 | WBClientSite_IInternetSecurityManager(p, p1="", p2="", p3="", p4="", p5="", p6="", p7="", p8="") 105 | { 106 | if (A_EventInfo = 5) ; ProcessUrlAction 107 | { 108 | if (p2 = 0x1400) ; dwAction = URLACTION_SCRIPT_RUN 109 | { 110 | NumPut(0, p3+0) ; *pPolicy := URLPOLICY_ALLOW 111 | return 0 ; S_OK 112 | } 113 | } 114 | return 0x800C0011 ; INET_E_DEFAULT_ACTION 115 | } 116 | 117 | _String4GUID(pGUID) 118 | { 119 | VarSetCapacity(String, 38*2) 120 | DllCall("ole32\StringFromGUID2", "ptr", pGUID, "str", String, "int", 39) 121 | return String 122 | } 123 | -------------------------------------------------------------------------------- /installer/Lib/Util.ahk: -------------------------------------------------------------------------------- 1 | 2 | Util_GetAhkPath() 3 | { 4 | RegRead, ov, HKLM, SOFTWARE\AutoHotkey, InstallDir 5 | if !ov && A_Is64bitOS 6 | { 7 | q := A_RegView 8 | SetRegView, 64 9 | RegRead, ov, HKLM, SOFTWARE\AutoHotkey, InstallDir 10 | SetRegView, %q% 11 | } 12 | return ov 13 | } 14 | 15 | Util_GetAhkVer() 16 | { 17 | RegRead, ov, HKLM, SOFTWARE\AutoHotkey, Version 18 | if !ov && A_Is64bitOS 19 | { 20 | q := A_RegView 21 | SetRegView, 64 22 | RegRead, ov, HKLM, SOFTWARE\AutoHotkey, Version 23 | SetRegView, %q% 24 | } 25 | return ov 26 | } 27 | 28 | Util_GetWinVer() 29 | { 30 | pack := DllCall("GetVersion", "uint") & 0xFFFF 31 | pack := (pack & 0xFF) "." (pack >> 8) 32 | pack += 0 33 | return pack 34 | } 35 | 36 | Util_CreateShortcut(Shrt, Path, Descr, Args := "", Icon := "", IconN := "") 37 | { 38 | SplitPath, Path,, Dir 39 | FileDelete, %Shrt% 40 | FileCreateShortcut, %Path%, %Shrt%, %Dir%, %Args%, %Descr%, %Icon%,, %IconN% 41 | } 42 | 43 | ; Written by Lexikos. 44 | Util_UserRun(target, args := "") 45 | { 46 | try 47 | _ShellRun(target, args) 48 | catch e 49 | Run, % args="" ? target : target " " args 50 | } 51 | 52 | ; Written by Lexikos. 53 | _ShellRun(prms*) 54 | { 55 | shellWindows := ComObjCreate("{9BA05972-F6A8-11CF-A442-00A0C90A8F39}") 56 | 57 | ; Find desktop window object. 58 | VarSetCapacity(_hwnd, 4, 0) 59 | desktop := shellWindows.FindWindowSW(0, "", 8, ComObj(0x4003, &_hwnd), 1) 60 | 61 | ; Retrieve top-level browser object. 62 | if ptlb := ComObjQuery(desktop 63 | , "{4C96BE40-915C-11CF-99D3-00AA004AE837}" ; SID_STopLevelBrowser 64 | , "{000214E2-0000-0000-C000-000000000046}") ; IID_IShellBrowser 65 | { 66 | ; IShellBrowser.QueryActiveShellView -> IShellView 67 | if DllCall(NumGet(NumGet(ptlb+0)+15*A_PtrSize), "ptr", ptlb, "ptr*", psv:=0) = 0 68 | { 69 | ; Define IID_IDispatch. 70 | VarSetCapacity(IID_IDispatch, 16) 71 | NumPut(0x46000000000000C0, NumPut(0x20400, IID_IDispatch, "int64"), "int64") 72 | 73 | ; IShellView.GetItemObject -> IDispatch (object which implements IShellFolderViewDual) 74 | DllCall(NumGet(NumGet(psv+0)+15*A_PtrSize), "ptr", psv 75 | , "uint", 0, "ptr", &IID_IDispatch, "ptr*", pdisp:=0) 76 | 77 | ; Get Shell object. 78 | shell := ComObj(9,pdisp,1).Application 79 | 80 | ; IShellDispatch2.ShellExecute 81 | shell.ShellExecute(prms*) 82 | 83 | ObjRelease(psv) 84 | } 85 | ObjRelease(ptlb) 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /installer/Lib/WipeProfile.ahk: -------------------------------------------------------------------------------- 1 | 2 | WipeProfile(profile) 3 | { 4 | RemoveDir(profile) 5 | ; Only remove these two if they're empty 6 | FileRemoveDir, %A_MyDocuments%\AutoHotkey\Lib 7 | FileRemoveDir, %A_MyDocuments%\AutoHotkey 8 | } 9 | -------------------------------------------------------------------------------- /installer/README.md: -------------------------------------------------------------------------------- 1 | # SciTE4AutoHotkey Installer 2 | 3 | This folder contains the source code of the program that installs SciTE4AutoHotkey. 4 | A helper script (BuildInstaller.ahk) is provided, and it generates both the installer and the portable zip file. 5 | 7-zip files (7z.exe, 7zSD.sfx) are required for the script to work, and must be copied into this folder manually. 6 | 7 | The target folder used as a template (by default `..\..\S4AHK_Test`) should be a pristine clone of the 8 | SciTE4AutoHotkey repo with a few extra binary files (such as SciTE.exe or InternalAHK.exe, a renamed copy of AutoHotkeyU32.exe) 9 | dropped in place. 10 | -------------------------------------------------------------------------------- /installer/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/installer/banner.png -------------------------------------------------------------------------------- /installer/install.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/installer/install.ico -------------------------------------------------------------------------------- /installer/install.manifest: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scipatches/.gitattributes: -------------------------------------------------------------------------------- 1 | *.diff text eol=lf 2 | -------------------------------------------------------------------------------- /scipatches/README.md: -------------------------------------------------------------------------------- 1 | # SciTE4AutoHotkey patches for Scintilla, Lexilla and SciTE 2 | 3 | ## Prerequisites 4 | 5 | - Mercurial 6 | - Git 7 | - [msys2](https://www.msys2.org/) with clang64 environment and toolchain (`pacman -S --needed mingw-w64-clang-x86_64-toolchain`) 8 | 9 | All commands below assume you are using the clang64 shell provided by msys2. 10 | 11 | ## Getting the source and patching it 12 | 13 | ```bash 14 | hg clone http://hg.code.sf.net/p/scintilla/code scintilla 15 | git clone https://github.com/ScintillaOrg/lexilla -b rel-5-1-6 lexilla 16 | hg clone http://hg.code.sf.net/p/scintilla/scite scite 17 | cd scintilla && hg update rel-5-2-2 && cd .. 18 | cd lexilla && git apply ../lexilla.diff && cd .. 19 | cd scite && hg update rel-5-2-2 && hg import --no-commit ../scite.diff && cd .. 20 | cp SciTE4AutoHotkey.ico scite/win32/ 21 | ``` 22 | 23 | ## Building the components 24 | 25 | ```bash 26 | cd scintilla/win32 && make CLANG=1 && cd ../.. 27 | cd lexilla/src && make CLANG=1 && cd ../.. 28 | cd scite/win32 && make CLANG=1 && cd ../bin && strip *.exe *.dll && cd ../.. 29 | ``` 30 | 31 | The resulting files (SciTE.exe, Scintilla.dll, lexilla.dll) should be present in `scite/bin`, and can be copied to the main SciTE4AutoHotkey program folder. 32 | -------------------------------------------------------------------------------- /scipatches/SciTE4AutoHotkey.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/scipatches/SciTE4AutoHotkey.ico -------------------------------------------------------------------------------- /source/$REVISION: -------------------------------------------------------------------------------- 1 | 20 -------------------------------------------------------------------------------- /source/License.txt: -------------------------------------------------------------------------------- 1 | License for Scintilla and SciTE 2 | =============================== 3 | 4 | Copyright 1998-2013 by Neil Hodgson 5 | 6 | All Rights Reserved 7 | 8 | Permission to use, copy, modify, and distribute this software and its 9 | documentation for any purpose and without fee is hereby granted, 10 | provided that the above copyright notice appear in all copies and that 11 | both that copyright notice and this permission notice appear in 12 | supporting documentation. 13 | 14 | NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 15 | SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 16 | AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY 17 | SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 19 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 20 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE 21 | OR PERFORMANCE OF THIS SOFTWARE. 22 | 23 | License for the toolbar, debugger & setting files 24 | ================================================= 25 | 26 | Copyright 2007-2013 by fincs (@ autohotkey.com forum) 27 | 28 | This program is free software. It comes without any warranty, to 29 | the extent permitted by applicable law. You can redistribute it and/or 30 | modify it under the terms of the WTFPL, Version 2, as published by 31 | Sam Hocevar. The full license text can be found at http://sam.zoy.org/wtfpl/COPYING. -------------------------------------------------------------------------------- /source/SciTE.VisualElementsManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /source/SciTEGlobal.properties: -------------------------------------------------------------------------------- 1 | # Global initialization file for SciTE4AutoHotkey 2 | # 3 | # Do NOT edit this file! 4 | # If there is something here you want to change, go to Options > Open User properties, 5 | # copy the setting there and change it. If you instead want to delete a setting, just 6 | # write an analogous line in the User properties that sets it to blank. 7 | # 8 | 9 | # Window sizes and visibility 10 | position.width=-1 11 | position.height=-1 12 | save.position=1 13 | minimize.to.tray=0 14 | split.vertical=0 15 | output.scroll=1 16 | tabbar.visible=1 17 | tabbar.hide.one=1 18 | tabbar.multiline=1 19 | toolbar.visible=1 20 | statusbar.visible=1 21 | fileselector.width=800 22 | fileselector.height=600 23 | magnification=0 24 | output.magnification=0 25 | 26 | # Sizes and visibility in edit pane 27 | line.margin.visible=1 28 | line.margin.width=5+ 29 | margin.width=$(scale 20) 30 | fold.margin.width=$(scale 12) 31 | blank.margin.left=$(scale 12) 32 | buffered.draw=1 33 | use.palette=0 34 | 35 | # Element styles 36 | caret.period=500 37 | view.whitespace=0 38 | view.indentation.whitespace=1 39 | view.indentation.guides=1 40 | view.indentation.examine=3 41 | strip.trailing.spaces=1 42 | highlight.indentation.guides=1 43 | caret.line.back=#00FF0020 44 | caret.line.layer=1 45 | edge.column=200 46 | edge.mode=0 47 | edge.colour=#F9F9F9 48 | braces.check=1 49 | braces.sloppy=1 50 | selection.back=#00000028 51 | selection.inactive.back=$(selection.back) 52 | selection.additional.back=$(selection.back) 53 | selection.layer=1 54 | selection.always.visible=1 55 | highlight.current.word=1 56 | highlight.current.word.indicator=style:roundbox,colour:#808080 57 | #highlight.current.word.by.style=1 58 | font.quality=3 59 | 60 | # Checking 61 | are.you.sure=1 62 | load.on.activate=1 63 | reload.preserves.undo=1 64 | check.if.already.open=1 65 | save.all.for.build=0 66 | title.full.path=0 67 | title.show.buffers=0 68 | save.recent=1 69 | save.session=1 70 | open.dialog.in.file.directory=1 71 | ensure.consistent.line.ends=1 72 | buffers=20 73 | buffers.zorder.switching=1 74 | read.only=0 75 | properties.directory.enable=1 76 | temp.files.sync.load=1 77 | 78 | # Indentation 79 | tabsize=4 80 | indent.size=4 81 | use.tabs=1 82 | indent.auto=1 83 | indent.automatic=1 84 | indent.opening=0 85 | indent.closing=0 86 | 87 | # EOL handling 88 | eol.mode=CRLF 89 | eol.auto=1 90 | 91 | # Wrapping of long lines 92 | wrap=1 93 | wrap.style=1 94 | cache.layout=3 95 | output.wrap=1 96 | output.cache.layout=3 97 | wrap.visual.flags=3 98 | wrap.visual.flags.location=0 99 | wrap.visual.startindent=4 100 | 101 | # Folding 102 | # enable folding, and show lines below when collapsed. 103 | fold=1 104 | fold.compact=0 105 | fold.flags=16 106 | fold.symbols=3 107 | #fold.on.open=0 108 | session.folds=1 109 | session.bookmarks=1 110 | fold.comment=1 111 | 112 | # Find and Replace 113 | find.command=findstr /n /s /I $(find.what) $(find.files) 114 | find.files=* 115 | find.replace.advanced=1 116 | 117 | # Behaviour 118 | clear.before.execute=1 119 | autocompleteword.automatic=0 120 | autocomplete.choose.single=0 121 | caret.policy.xslop=1 122 | caret.policy.width=20 123 | caret.policy.xstrict=0 124 | caret.policy.xeven=0 125 | caret.policy.xjumps=0 126 | caret.policy.yslop=1 127 | caret.policy.lines=1 128 | caret.policy.ystrict=1 129 | caret.policy.yeven=1 130 | caret.policy.yjumps=0 131 | time.commands=1 132 | dwell.period=500 133 | 134 | # Multiple selections 135 | selection.multiple=1 136 | selection.additional.typing=1 137 | selection.multipaste=1 138 | 139 | # Status Bar ——— 140 | statusbar.number=4 141 | statusbar.text.1=\ 142 | Line: $(LineNumber) | Column: $(ColumnNumber) | $(OverType) | ($(EOLMode)) | $(FileAttr) 143 | statusbar.text.2=\ 144 | $(BufferLength) characters in $(NbOfLines) lines. Selection: $(SelLength) characters. 145 | statusbar.text.3=\ 146 | Date: $(CurrentDate) | Time: $(CurrentTime) 147 | statusbar.text.4=\ 148 | $(FileNameExt): $(FileDate) - $(FileTime) | $(FileAttr) 149 | 150 | # SciTE help 151 | command.scite.help="$(SciteDefaultHome)\SciTE.chm" 152 | command.scite.help.shortcut=Ctrl+F1 153 | command.scite.help.subsystem=2 154 | 155 | # Export 156 | export.html.wysiwyg=1 157 | export.html.folding=1 158 | export.html.styleused=1 159 | # Magnification (added to default screen font size) 160 | export.pdf.magnification=-1 161 | # Font: Courier, Helvetica or Times (Courier line-wraps) 162 | export.pdf.font=Courier 163 | # Page size (in points): width, height 164 | # E.g. Letter 612,792; A4 595,842; maximum 14400,14400 165 | export.pdf.pagesize=595,842 166 | # Margins (in points): left, right, top, bottom 167 | export.pdf.margins=72,72,72,72 168 | export.xml.collapse.spaces=1 169 | export.xml.collapse.lines=1 170 | 171 | # Define values for use in the imported properties files 172 | chars.alpha=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 173 | chars.numeric=0123456789 174 | chars.accented=ŠšŒœŸÿÀàÁáÂâÃãÄäÅ寿ÇçÈèÉéÊêËëÌìÍíÎîÏïÐðÑñÒòÓóÔôÕõÖØøÙùÚúÛûÜüÝýÞþßö 175 | 176 | # The open.filter setting is only used on Windows where the file selector has a menu of filters to apply 177 | # to the types of files seen when opening. 178 | # There is a limit (possibly 256 characters) to the length of a filter, 179 | # so not all source extensions can be in this setting. 180 | # source.files=*.ahk 181 | 182 | default.file.ext=.ahk 183 | open.filter=$(star filter.)All files (*.*)|*.*| 184 | save.filter=$(open.filter) 185 | 186 | # Default font configuration 187 | default.text.font=Consolas 188 | s4ahk.font.settings=font:$(default.text.font),size:11,weight:350 189 | s4ahk.style.base=back:#FFFFFFF,fore:#000000 190 | 191 | # Global default styles for all languages 192 | # Default 193 | style.*.32=$(s4ahk.font.settings),$(s4ahk.style.base) 194 | # Line number 195 | style.*.33=fore:#111111,back:#DDDDDD 196 | # Brace highlight 197 | style.*.34=fore:#0000FF,bold 198 | # Brace incomplete highlight 199 | style.*.35=fore:#FF0000,bold 200 | # Control characters 201 | style.*.36=back:#00FF80 202 | # Indentation guides 203 | style.*.37=fore:#C0C0C0,back:#FFFFFF 204 | 205 | # Fallbacks for obsolete AHKv1 styles 206 | s4ahk.style.old.synop=$(s4ahk.style.operator) 207 | s4ahk.style.old.deref=$(s4ahk.style.var) 208 | s4ahk.style.old.key=$(s4ahk.style.label) 209 | s4ahk.style.old.user=$(s4ahk.style.var) 210 | s4ahk.style.old.bivderef=$(s4ahk.style.known.var) 211 | 212 | # Fallbacks for AHKv2 object identifier styles 213 | s4ahk.style.objprop=$(s4ahk.style.ident.top) 214 | s4ahk.style.biobjprop=$(s4ahk.style.known.var) 215 | s4ahk.style.biobjmethod=$(s4ahk.style.known.func) 216 | 217 | # Backwards compatibility with older styles 218 | s4ahk.style.ident.top=$(s4ahk.style.var) 219 | s4ahk.style.ident.obj=$(s4ahk.style.objprop) 220 | s4ahk.style.ident.reserved=$(s4ahk.style.wordop) 221 | s4ahk.style.known.var=$(s4ahk.style.biv) 222 | s4ahk.style.known.func=$(s4ahk.style.bif) 223 | s4ahk.style.known.class=$(s4ahk.style.func) 224 | s4ahk.style.known.obj.prop=$(s4ahk.style.biobjprop) 225 | s4ahk.style.known.obj.method=$(s4ahk.style.biobjmethod) 226 | 227 | # Printing 228 | print.magnification=-1 229 | # Setup: left, right, top, bottom margins, in local units: 230 | # hundredths of millimeters or thousandths of inches 231 | print.margins=1500,1000,1000,1500 232 | # Header/footer: 233 | # && = &; &p = current page 234 | # &f = file name; &F = full path 235 | # &d = file date; &D = current date 236 | # &t = file time; &T = full time 237 | print.header.format=$(FileNameExt) — Printed on $(CurrentDate), $(CurrentTime) — Page $(CurrentPage) 238 | print.footer.format=$(FilePath) — File date: $(FileDate) — File time: $(FileTime) 239 | # Header/footer style 240 | print.header.style=font:Arial,size:12,bold 241 | print.footer.style=font:Arial Narrow,size:10,italics 242 | 243 | # Define the Lexer menu, 244 | # Each item contains three parts: menu string | file extension | key 245 | # The only keys allowed currently are based on F-keys and alphabetic keys and look like 246 | # [Ctrl+][Shift+][Fn|a] such as F12 or Ctrl+Shift+D. 247 | # A '&' may be placed before a letter to be used as an accelerator. This does not work on GTK+. 248 | menu.language=$(star language.menu.) 249 | 250 | # Contextual menu 251 | user.context.menu=$(ahk.context.menu)$(s4ahk.user.context.menu) 252 | 253 | # User defined key commands 254 | user.shortcuts=\ 255 | Ctrl+Shift+V|IDM_PASTEANDDOWN|\ 256 | Ctrl+PageUp|IDM_PREVFILE|\ 257 | Ctrl+PageDown|IDM_NEXTFILE|\ 258 | Ctrl+F1|IDM_HELP_SCITE|\ 259 | $(ahk.debugger.shortcuts)$(s4ahk.user.shortcuts) 260 | 261 | # Variables for extensions 262 | extensions.dir=$(SciteUserHome)\Extensions 263 | 264 | # Encoding settings 265 | code.page=0 266 | output.code.page=65001 267 | 268 | # Settings which are default in vanilla SciTE 3.4.0 269 | technology=1 270 | find.use.strip=1 271 | replace.use.strip=1 272 | find.close.on.find=0 273 | # The following behaviour can be enabled, but it's more irritating than worth it. 274 | #find.strip.incremental=1 275 | #find.indicator.incremental=style:compositionthick,colour:#FFB700,under 276 | #replace.strip.incremental=1 277 | 278 | #potato.ignore 279 | 280 | # Toolbar autorun 281 | command.autorun="$(LocalAHK)" "$(SciteDefaultHome)\toolbar\Toolbar.ahk" $(scite.hwnd) $(WindowID) 282 | 283 | # Open containing folder 284 | command.name.10.*=Open containing folder... 285 | command.mode.10.*=subsystem:shellexec,savebefore:no 286 | command.10.*=explorer.exe /n, /select,"$(FilePath)" 287 | 288 | # SciTE4AutoHotkey settings 289 | command.name.11.*=SciTE4AutoHotkey settings... 290 | command.mode.11.*=subsystem:shellexec,savebefore:no 291 | command.11.*="$(LocalAHK)" /ErrorStdOut "$(SciteDefaultHome)\tools\PropEdit.ahk" 292 | 293 | # SciTE4AutoHotkey diag util 294 | command.name.12.*=SciTE4AutoHotkey Diagnostics Utility 295 | command.mode.12.*=subsystem:shellexec,savebefore:no 296 | command.12.*="$(LocalAHK)" /ErrorStdOut "$(SciteDefaultHome)\tools\SciTEDiag.ahk" 297 | 298 | # Enable/disable SciTE4AutoHotkey automatic updates 299 | automatic.updates=1 300 | 301 | #potato.endignore 302 | 303 | # Import language properties files 304 | import ahk 305 | import lua 306 | 307 | # Import other properties 308 | import other 309 | -------------------------------------------------------------------------------- /source/TestSuite.ahk: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * SciTE4AutoHotkey Syntax Highlighting Demo 4 | * - by fincs 5 | * 6 | */ 7 | 8 | ; Normal comment 9 | /* 10 | Block comment 11 | */ 12 | 13 | ; Directives, keywords 14 | #SingleInstance Force 15 | #NoTrayIcon 16 | 17 | ; Command, literal text, escape sequence 18 | MsgBox, Hello World `; This isn't a comment 19 | 20 | ; Operators 21 | Bar = Foo ; operators 22 | Foo := Bar ; expression assignment operators 23 | 24 | ; String 25 | Var := "This is a test" 26 | 27 | ; Number 28 | Num = 40 + 4 29 | 30 | ; Dereferencing 31 | Foo := %Bar% 32 | 33 | ; Flow of control, built-in-variables, BIV dereferencing 34 | if true 35 | MsgBox, This will always be displayed 36 | Loop, 3 37 | MsgBox Repetition #%A_Index% 38 | 39 | ; Built-in function call 40 | MsgBox % SubStr("blaHello Worldbla", 4, 11) 41 | 42 | if false 43 | { 44 | ; Keys and buttons 45 | Send, {F1} 46 | ; Syntax errors 47 | MyVar = "This is a test 48 | } 49 | 50 | ExitApp 51 | 52 | ; Label, hotkey, hotstring 53 | Label: 54 | #v::MsgBox You pressed Win+V 55 | ::btw::by the way 56 | -------------------------------------------------------------------------------- /source/ahk.commands.properties: -------------------------------------------------------------------------------- 1 | # AutoHotkey command definitions for SciTE 2 | # 3 | # Do NOT edit this file! 4 | # If there is something here you want to change, go to Options > Open User properties, 5 | # copy the setting there and change it. If you instead want to delete a setting, just 6 | # write an analogous line in the User properties that sets it to blank. 7 | # 8 | 9 | # Contextual menu 10 | ahk.context.menu=||\ 11 | Open #Include|1121|\ 12 | Add scriptlet...|1122|\ 13 | Run selection|1123|\ 14 | ||\ 15 | Inspect variable...|1126| 16 | 17 | # Debugger shortcuts 18 | ahk.debugger.shortcuts=\ 19 | F10|1129|\ 20 | F11|1130|\ 21 | Shift+F11|1131| 22 | 23 | # Run (F5) 24 | command.go.$(file.patterns.ahk)=$(ahk.launcher) /ErrorStdOut "$(FilePath)" $(1) $(2) $(3) $(4) 25 | 26 | # Debug (F7) 27 | command.build.$(file.patterns.ahk)="$(LocalAHK)" "$(SciteDefaultHome)\tools\SciTEDebug.ahk" "$(FilePath)" $(1) $(2) $(3) $(4) 28 | command.build.subsystem.$(file.patterns.ahk)=2 29 | 30 | # Compile (Ctrl+F7) 31 | command.compile.$(file.patterns.ahk)="$(ahk.compiler)" /in "$(FilePath)" $(ahk.compiler.params) 32 | 33 | # Help (F1) 34 | command.help.$(file.patterns.ahk)=$(CurrentWord)!$(ahk.help.file) 35 | command.help.subsystem.$(file.patterns.ahk)=4 36 | 37 | # ShellExecute/non-stream-capturing run command 38 | command.name.1.$(file.patterns.ahk)=Quick run 39 | command.1.$(file.patterns.ahk)="$(AutoHotkey)" "$(FilePath)" $(1) $(2) $(3) $(4) 40 | command.shortcut.1.$(file.patterns.ahk)=Ctrl+Shift+F5 41 | command.mode.1.$(file.patterns.ahk)=subsystem:shellexec 42 | 43 | # Debugger attaching command 44 | command.name.2.*=Debug a currently running script... 45 | command.2.*="$(LocalAHK)" /ErrorStdOut "$(SciteDefaultHome)\tools\SciTEDebug.ahk" /attach 46 | command.shortcut.2.*=Ctrl+Shift+F7 47 | command.mode.2.*=subsystem:shellexec 48 | 49 | ### Commands not in the Tools menu (mostly internal stuff) ### 50 | 51 | # (Context menu) Open Include 52 | command.mode.21.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 53 | command.21.$(file.patterns.ahk)=OpenInclude 54 | 55 | # (Context menu) Add scriptlet 56 | command.mode.22.*=subsystem:shellexec,savebefore:no 57 | command.22.*="$(LocalAHK)" "$(SciteDefaultHome)\tools\SUtility.ahk" /addScriptlet 58 | 59 | # (Context menu) Run selection 60 | command.mode.23.*=subsystem:console,savebefore:no,quiet:yes 61 | command.23.*="$(AutoHotkey)" /CP65001 * 62 | command.input.23.*=$(CurrentSelection) 63 | 64 | # (Internal) Connect debugger 65 | command.mode.24.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 66 | command.24.$(file.patterns.ahk)=DBGp_Connect 67 | 68 | # (Internal) Disconnect debugger 69 | command.mode.25.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 70 | command.25.$(file.patterns.ahk)=DBGp_Disconnect 71 | 72 | # (Context menu) Inspect variable 73 | command.mode.26.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 74 | command.26.$(file.patterns.ahk)=DBGp_Inspect 75 | 76 | # (Internal) Run 77 | command.mode.27.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 78 | command.27.$(file.patterns.ahk)=DBGp_Run 79 | 80 | # (Internal) Stop 81 | command.mode.28.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 82 | command.28.$(file.patterns.ahk)=DBGp_Stop 83 | 84 | # (Internal) Step into 85 | command.mode.29.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 86 | command.29.$(file.patterns.ahk)=DBGp_StepInto 87 | 88 | # (Internal) Step over 89 | command.mode.30.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 90 | command.30.$(file.patterns.ahk)=DBGp_StepOver 91 | 92 | # (Internal) Step out 93 | command.mode.31.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 94 | command.31.$(file.patterns.ahk)=DBGp_StepOut 95 | 96 | # (Internal) Stacktrace 97 | command.mode.32.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 98 | command.32.$(file.patterns.ahk)=DBGp_Stacktrace 99 | 100 | # (Internal) Varlist 101 | command.mode.33.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 102 | command.33.$(file.patterns.ahk)=DBGp_Varlist 103 | 104 | # (Internal) Pause script 105 | command.mode.34.$(file.patterns.ahk)=subsystem:immediate,savebefore:no 106 | command.34.$(file.patterns.ahk)=DBGp_Pause 107 | 108 | # (Internal) Reset breakpoints 109 | command.mode.35.*=subsystem:immediate,savebefore:no 110 | command.35.*=DBGp_BkReset 111 | 112 | # (Internal) Lua callback for AutoHotkey platform changes 113 | command.mode.36.*=subsystem:immediate,savebefore:no 114 | command.36.*=OnPlatformChange 115 | -------------------------------------------------------------------------------- /source/ahk.keys.api: -------------------------------------------------------------------------------- 1 | Alt 2 | AltTab 3 | AltTabAndMenu 4 | AltTabMenu 5 | AltTabMenuDismiss 6 | AppsKey 7 | Backspace 8 | Browser_Back 9 | Browser_Favorites 10 | Browser_Forward 11 | Browser_Home 12 | Browser_Refresh 13 | Browser_Search 14 | Browser_Stop 15 | BS 16 | CapsLock 17 | Control 18 | Ctrl 19 | CtrlBreak 20 | Del 21 | Delete 22 | Down 23 | End 24 | Enter 25 | Esc 26 | Escape 27 | F1 28 | F10 29 | F11 30 | F12 31 | F13 32 | F14 33 | F15 34 | F16 35 | F17 36 | F18 37 | F19 38 | F2 39 | F20 40 | F21 41 | F22 42 | F23 43 | F24 44 | F3 45 | F4 46 | F5 47 | F6 48 | F7 49 | F8 50 | F9 51 | Help 52 | Home 53 | Ins 54 | Insert 55 | LAlt 56 | Launch_App1 57 | Launch_App2 58 | Launch_Mail 59 | Launch_Media 60 | LButton 61 | LControl 62 | LCtrl 63 | Left 64 | LShift 65 | LWin 66 | MButton 67 | Media_Next 68 | Media_Play_Pause 69 | Media_Prev 70 | Media_Stop 71 | NumLock 72 | Numpad0 73 | Numpad1 74 | Numpad2 75 | Numpad3 76 | Numpad4 77 | Numpad5 78 | Numpad6 79 | Numpad7 80 | Numpad8 81 | Numpad9 82 | NumpadAdd 83 | NumpadClear 84 | NumpadDel 85 | NumpadDiv 86 | NumpadDot 87 | NumpadDown 88 | NumpadEnd 89 | NumpadEnter 90 | NumpadHome 91 | NumpadIns 92 | NumpadLeft 93 | NumpadMult 94 | NumpadPgDn 95 | NumpadPgUp 96 | NumpadRight 97 | NumpadSub 98 | NumpadUp 99 | Pause 100 | PgDn 101 | PgUp 102 | PrintScreen 103 | RAlt 104 | RButton 105 | RControl 106 | RCtrl 107 | Right 108 | RShift 109 | RWin 110 | ScrollLock 111 | Shift 112 | ShiftAltTab 113 | Sleep 114 | Space 115 | Tab 116 | Up 117 | Volume_Down 118 | Volume_Mute 119 | Volume_Up 120 | WheelDown 121 | WheelLeft 122 | WheelRight 123 | WheelUp 124 | XButton1 125 | XButton2 126 | -------------------------------------------------------------------------------- /source/ahk.keys.properties: -------------------------------------------------------------------------------- 1 | # This file is autogenerated by CreateKeys.ahk - DO NOT UPDATE MANUALLY 2 | 3 | ahk.keywords.named.keys=\ 4 | alt alttab alttabandmenu alttabmenu alttabmenudismiss appskey backspace \ 5 | browser_back browser_favorites browser_forward browser_home browser_refresh \ 6 | browser_search browser_stop bs capslock control ctrl ctrlbreak del delete down \ 7 | end enter esc escape f1 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f2 f20 f21 f22 \ 8 | f23 f24 f3 f4 f5 f6 f7 f8 f9 help home ins insert lalt launch_app1 launch_app2 \ 9 | launch_mail launch_media lbutton lcontrol lctrl left lshift lwin mbutton \ 10 | media_next media_play_pause media_prev media_stop numlock numpad0 numpad1 \ 11 | numpad2 numpad3 numpad4 numpad5 numpad6 numpad7 numpad8 numpad9 numpadadd \ 12 | numpadclear numpaddel numpaddiv numpaddot numpaddown numpadend numpadenter \ 13 | numpadhome numpadins numpadleft numpadmult numpadpgdn numpadpgup numpadright \ 14 | numpadsub numpadup pause pgdn pgup printscreen ralt rbutton rcontrol rctrl \ 15 | right rshift rwin scrolllock shift shiftalttab sleep space tab up volume_down \ 16 | volume_mute volume_up wheeldown wheelleft wheelright wheelup xbutton1 xbutton2 17 | -------------------------------------------------------------------------------- /source/ahk.properties: -------------------------------------------------------------------------------- 1 | # SciTE settings for AutoHotkey files 2 | # 3 | # Do NOT edit this file! 4 | # If there is something here you want to change, go to Options > Open User properties, 5 | # copy the setting there and change it. If you instead want to delete a setting, just 6 | # write an analogous line in the User properties that sets it to blank. 7 | # 8 | 9 | # Internal AutoHotkey path 10 | LocalAHK=$(SciteDefaultHome)\InternalAHK.exe 11 | 12 | # AutoHotkey path 13 | AutoHotkeyDir=$(SciteDefaultHome)\.. 14 | AutoHotkey=$(AutoHotkeyDir)\AutoHotkey.exe 15 | ahk.launcher="$(AutoHotkey)" 16 | ahk.help.file=$(AutoHotkeyDir)\AutoHotkey.chm 17 | ahk.compiler=$(AutoHotkeyDir)\Compiler\Ahk2Exe.exe 18 | ahk.compiler.params= 19 | 20 | # AutoHotkey Lua editor script, needed for some features 21 | ext.lua.startup.script=$(SciteDefaultHome)\ahk.lua 22 | ext.lua.auto.reload=1 23 | 24 | # AutoHotkey debugger settings 25 | ahk.debugger.address=127.0.0.1 26 | ahk.debugger.port=9000 27 | ahk.debugger.capture.streams=1 28 | ahk.debugger.max.obj.children=100 29 | ahk.debugger.max.data=131072 30 | ahk.debugger.break.exception=0 31 | ahk.debugger.break.exception.message=> Pausing execution for thrown exception 32 | ahk.debugger.break.error=0 33 | ahk.debugger.break.error.message=> Pausing execution for unhandled exception 34 | ahk.debugger.break.error.suppress=0 35 | 36 | # Script file extensions 37 | ahk.file.extension=*.ahk 38 | ahkscriptlet.file.extension=*.scriptlet 39 | 40 | # General settings 41 | file.patterns.ahk=$(ahk.file.extension);$(ahkscriptlet.file.extension) 42 | language.menu.ahk=&AutoHotkey|ahk|| 43 | filter.ahk=\ 44 | AutoHotkey scripts (*.ahk)|$(ahk.file.extension)|\ 45 | AHK scriptlets (*.scriptlet)|$(ahkscriptlet.file.extension)| 46 | 47 | # Placeholders for AutoHotkey v1/v2 platform selection 48 | file.patterns.ahk1= 49 | file.patterns.ahk2= 50 | 51 | # Lexer settings 52 | lexer.$(file.patterns.ahk1)=ahk1 53 | lexer.$(file.patterns.ahk2)=ahk2 54 | 55 | # Brace style settings 56 | braces.ahk1.style=5 57 | braces.ahk2.style=10 58 | 59 | # Word characters 60 | ahk1.word.characters=$(chars.alpha)$(chars.numeric)$(chars.accented)_$@# 61 | ahk2.word.characters=$(chars.alpha)$(chars.numeric)$(chars.accented)_ 62 | word.characters.$(file.patterns.ahk1)=$(ahk1.word.characters) 63 | word.characters.$(file.patterns.ahk2)=$(ahk2.word.characters) 64 | 65 | # Abbreviation settings 66 | abbreviations.$(file.patterns.ahk)=$(SciteUserHome)\AhkAbbrevs.properties 67 | 68 | # Indentation settings (AutoHotkey v2) 69 | statement.indent.$(file.patterns.ahk2)=6 catch else finally for if loop try while 70 | statement.lookback.$(file.patterns.ahk2)=2 71 | block.start.$(file.patterns.ahk2)=10 { 72 | block.end.$(file.patterns.ahk2)=10 } 73 | 74 | # Autocomplete settings (AutoHotkey v1) 75 | api.$(file.patterns.ahk1)=$(SciteDefaultHome)\ahk1.standard.api;$(SciteDefaultHome)\ahk.keys.api;$(SciteUserHome)\ahk1.user.api 76 | autocomplete.ahk1.ignorecase=1 77 | autocomplete.ahk1.start.characters=$(ahk1.word.characters). 78 | autocomplete.ahk1.typesep=? 79 | calltip.ahk1.ahk.mode=1 80 | calltip.ahk1.ignorecase=1 81 | 82 | # Autocomplete settings (AutoHotkey v2) 83 | api.$(file.patterns.ahk2)=$(SciteDefaultHome)\ahk2.standard.api;$(SciteDefaultHome)\ahk.keys.api;$(SciteUserHome)\ahk2.user.api 84 | autocomplete.ahk2.ignorecase=1 85 | autocomplete.ahk2.start.characters=$(ahk2.word.characters).# 86 | autocomplete.ahk2.typesep=? 87 | calltip.ahk2.ahk.mode=1 88 | calltip.ahk2.ignorecase=1 89 | 90 | # Comment definitions (AutoHotkey v1) 91 | comment.block.ahk1=;~ 92 | comment.stream.start.ahk1=/* 93 | comment.stream.end.ahk1=*/ 94 | comment.box.start.ahk1=/* 95 | comment.box.middle.ahk1= * 96 | comment.box.end.ahk1= */ 97 | 98 | # Comment definitions (AutoHotkey v2) 99 | comment.block.ahk2=;~ 100 | comment.stream.start.ahk2=/* 101 | comment.stream.end.ahk2=*/ 102 | comment.box.start.ahk2=/* 103 | comment.box.middle.ahk2= * 104 | comment.box.end.ahk2= */ 105 | 106 | # Style definitions (AutoHotkey v1) 107 | style.ahk1.0=$(s4ahk.style.default) 108 | style.ahk1.1=$(s4ahk.style.comment.line) 109 | style.ahk1.2=$(s4ahk.style.comment.block) 110 | style.ahk1.3=$(s4ahk.style.escape) 111 | style.ahk1.4=$(s4ahk.style.old.synop) 112 | style.ahk1.5=$(s4ahk.style.operator) 113 | style.ahk1.6=$(s4ahk.style.string) 114 | style.ahk1.7=$(s4ahk.style.number) 115 | style.ahk1.8=$(s4ahk.style.ident.top) 116 | style.ahk1.9=$(s4ahk.style.old.deref) 117 | style.ahk1.10=$(s4ahk.style.label) 118 | style.ahk1.11=$(s4ahk.style.flow) 119 | style.ahk1.12=$(s4ahk.style.known.func) 120 | style.ahk1.13=$(s4ahk.style.known.class) 121 | style.ahk1.14=$(s4ahk.style.directive) 122 | style.ahk1.15=$(s4ahk.style.old.key) 123 | style.ahk1.16=$(s4ahk.style.known.var) 124 | style.ahk1.17=$(s4ahk.style.ident.reserved) 125 | style.ahk1.18=$(s4ahk.style.old.user) 126 | style.ahk1.19=$(s4ahk.style.old.bivderef) 127 | style.ahk1.20=$(s4ahk.style.error) 128 | 129 | # Keyword definitions (AutoHotkey v1) 130 | keywords.$(file.patterns.ahk1)=$(ahk1.keywords.flow) 131 | keywords2.$(file.patterns.ahk1)=$(ahk1.keywords.known.cmds) 132 | keywords3.$(file.patterns.ahk1)=$(ahk1.keywords.known.funcs) 133 | keywords4.$(file.patterns.ahk1)=$(ahk1.keywords.directives) 134 | keywords5.$(file.patterns.ahk1)=$(ahk.keywords.named.keys) 135 | keywords6.$(file.patterns.ahk1)=$(ahk1.keywords.known.vars) 136 | keywords7.$(file.patterns.ahk1)=$(ahk1.keywords.reserved) 137 | 138 | # Style definitions (AutoHotkey v2) 139 | style.ahk2.0=$(s4ahk.style.default) 140 | style.ahk2.1=$(s4ahk.style.error) 141 | style.ahk2.2=$(s4ahk.style.comment.line) 142 | style.ahk2.3=$(s4ahk.style.comment.block) 143 | style.ahk2.4=$(s4ahk.style.directive) 144 | style.ahk2.5=$(s4ahk.style.label) 145 | style.ahk2.6=$(s4ahk.style.flow) 146 | style.ahk2.7=$(s4ahk.style.number) 147 | style.ahk2.8=$(s4ahk.style.string) 148 | style.ahk2.9=$(s4ahk.style.escape) 149 | style.ahk2.10=$(s4ahk.style.operator) 150 | style.ahk2.11=$(s4ahk.style.ident.top) 151 | style.ahk2.12=$(s4ahk.style.ident.obj) 152 | style.ahk2.13=$(s4ahk.style.ident.reserved) 153 | 154 | # Top-level identifier substyles (AutoHotkey v2) 155 | substyles.ahk2.11=3 156 | style.ahk2.11.1=$(s4ahk.style.known.var) 157 | style.ahk2.11.2=$(s4ahk.style.known.func) 158 | style.ahk2.11.3=$(s4ahk.style.known.class) 159 | 160 | # Object identifier substyles (AutoHotkey v2) 161 | substyles.ahk2.12=2 162 | style.ahk2.12.1=$(s4ahk.style.known.obj.prop) 163 | style.ahk2.12.2=$(s4ahk.style.known.obj.method) 164 | 165 | # Keyword definitions (AutoHotkey v2) 166 | keywords.$(file.patterns.ahk2)=$(ahk2.keywords.directives.expr) 167 | keywords2.$(file.patterns.ahk2)=$(ahk2.keywords.directives.str) 168 | keywords3.$(file.patterns.ahk2)=$(ahk2.keywords.flow) 169 | keywords4.$(file.patterns.ahk2)=$(ahk2.keywords.reserved) 170 | keywords5.$(file.patterns.ahk2)=$(ahk.keywords.named.keys) 171 | substylewords.11.1.$(file.patterns.ahk2)=$(ahk2.keywords.known.vars) 172 | substylewords.11.2.$(file.patterns.ahk2)=$(ahk2.keywords.known.funcs) 173 | substylewords.11.3.$(file.patterns.ahk2)=$(ahk2.keywords.known.classes) 174 | substylewords.12.1.$(file.patterns.ahk2)=$(ahk2.keywords.known.props) 175 | substylewords.12.2.$(file.patterns.ahk2)=$(ahk2.keywords.known.methods) 176 | 177 | # Keywords 178 | import ahk1.keywords 179 | import ahk2.keywords 180 | import ahk.keys 181 | 182 | # Editor commands 183 | import ahk.commands 184 | 185 | # TillaGoto settings 186 | import tillagoto 187 | -------------------------------------------------------------------------------- /source/ahk1.keywords.properties: -------------------------------------------------------------------------------- 1 | # This file is autogenerated by CreateAhk1.ahk - DO NOT UPDATE MANUALLY 2 | 3 | ahk1.keywords.directives=\ 4 | allowsamelinecomments clipboardtimeout commentflag delimiter derefchar \ 5 | errorstdout escapechar hotkeyinterval hotkeymodifiertimeout hotstring if \ 6 | iftimeout ifwinactive ifwinexist ifwinnotactive ifwinnotexist include \ 7 | includeagain inputlevel installkeybdhook installmousehook keyhistory ltrim \ 8 | maxhotkeysperinterval maxmem maxthreads maxthreadsbuffer maxthreadsperhotkey \ 9 | menumaskkey noenv notrayicon persistent requires singleinstance usehook warn \ 10 | winactivateforce 11 | 12 | ahk1.keywords.flow=\ 13 | break case catch continue else finally for gosub goto if ifequal ifexist \ 14 | ifgreater ifgreaterorequal ifinstring ifless iflessorequal ifmsgbox ifnotequal \ 15 | ifnotexist ifnotinstring ifwinactive ifwinexist ifwinnotactive ifwinnotexist \ 16 | loop return switch throw try until while 17 | 18 | ahk1.keywords.reserved=\ 19 | __call __delete __get __new __set ahk_class ahk_exe ahk_group ahk_id ahk_pid \ 20 | and base byref class extends false files global local new not or parse read \ 21 | reg static true 22 | 23 | ahk1.keywords.known.vars=\ 24 | a_ahkpath a_ahkversion a_appdata a_appdatacommon a_args a_autotrim \ 25 | a_batchlines a_caretx a_carety a_clipboard a_computername a_comspec \ 26 | a_controldelay a_coordmodecaret a_coordmodemenu a_coordmodemouse \ 27 | a_coordmodepixel a_coordmodetooltip a_cursor a_dd a_ddd a_dddd a_defaultgui \ 28 | a_defaultlistview a_defaultmousespeed a_defaulttreeview a_desktop \ 29 | a_desktopcommon a_detecthiddentext a_detecthiddenwindows a_endchar a_eventinfo \ 30 | a_exitreason a_fileencoding a_formatfloat a_formatinteger a_gui a_guicontrol \ 31 | a_guicontrolevent a_guievent a_guiheight a_guiwidth a_guix a_guiy a_hour \ 32 | a_iconfile a_iconhidden a_iconnumber a_icontip a_index a_initialworkingdir \ 33 | a_ipaddress1 a_ipaddress2 a_ipaddress3 a_ipaddress4 a_is64bitos a_isadmin \ 34 | a_iscompiled a_iscritical a_ispaused a_issuspended a_isunicode a_keydelay \ 35 | a_keydelayplay a_keyduration a_keydurationplay a_language a_lasterror \ 36 | a_linefile a_linenumber a_listlines a_loopfield a_loopfileattrib a_loopfiledir \ 37 | a_loopfileext a_loopfilefullpath a_loopfilelongpath a_loopfilename \ 38 | a_loopfilepath a_loopfileshortname a_loopfileshortpath a_loopfilesize \ 39 | a_loopfilesizekb a_loopfilesizemb a_loopfiletimeaccessed a_loopfiletimecreated \ 40 | a_loopfiletimemodified a_loopreadline a_loopregkey a_loopregname \ 41 | a_loopregsubkey a_loopregtimemodified a_loopregtype a_mday a_min a_mm a_mmm \ 42 | a_mmmm a_mon a_mousedelay a_mousedelayplay a_msec a_mydocuments a_now a_nowutc \ 43 | a_numbatchlines a_ostype a_osversion a_priorhotkey a_priorkey a_programfiles \ 44 | a_programs a_programscommon a_ptrsize a_regview a_screendpi a_screenheight \ 45 | a_screenwidth a_scriptdir a_scriptfullpath a_scripthwnd a_scriptname a_sec \ 46 | a_sendlevel a_sendmode a_space a_startmenu a_startmenucommon a_startup \ 47 | a_startupcommon a_storecapslockmode a_stringcasesense a_tab a_temp a_thisfunc \ 48 | a_thishotkey a_thislabel a_thismenu a_thismenuitem a_thismenuitempos \ 49 | a_tickcount a_timeidle a_timeidlekeyboard a_timeidlemouse a_timeidlephysical \ 50 | a_timesincepriorhotkey a_timesincethishotkey a_titlematchmode \ 51 | a_titlematchmodespeed a_username a_wday a_windelay a_windir a_workingdir \ 52 | a_yday a_year a_yweek a_yyyy clipboard clipboardall comspec errorlevel \ 53 | programfiles this 54 | 55 | ahk1.keywords.known.funcs=\ 56 | abs acos array asc asin atan ceil chr comobjactive comobjarray comobjconnect \ 57 | comobjcreate comobject comobjerror comobjflags comobjget comobjquery \ 58 | comobjtype comobjvalue cos dllcall exception exp fileexist fileopen floor \ 59 | format func getkeyname getkeysc getkeystate getkeyvk hotstring il_add \ 60 | il_create il_destroy inputhook instr isbyref isfunc islabel isobject isset ln \ 61 | loadpicture log ltrim lv_add lv_delete lv_deletecol lv_getcount lv_getnext \ 62 | lv_gettext lv_insert lv_insertcol lv_modify lv_modifycol lv_setimagelist max \ 63 | menugethandle menugetname min mod numget numput objaddref objbindmethod \ 64 | objclone objcount objdelete object objgetaddress objgetbase objgetcapacity \ 65 | objhaskey objinsert objinsertat objlength objmaxindex objminindex objnewenum \ 66 | objpop objpush objrawget objrawset objrelease objremove objremoveat objsetbase \ 67 | objsetcapacity onclipboardchange onerror onexit onmessage ord regexmatch \ 68 | regexreplace registercallback round rtrim sb_seticon sb_setparts sb_settext \ 69 | sin sqrt strget strlen strput strreplace strsplit substr tan trim tv_add \ 70 | tv_delete tv_get tv_getchild tv_getcount tv_getnext tv_getparent tv_getprev \ 71 | tv_getselection tv_gettext tv_modify tv_setimagelist varsetcapacity winactive \ 72 | winexist 73 | 74 | ahk1.keywords.known.cmds=\ 75 | autotrim blockinput click clipwait control controlclick controlfocus \ 76 | controlget controlgetfocus controlgetpos controlgettext controlmove \ 77 | controlsend controlsendraw controlsettext coordmode critical detecthiddentext \ 78 | detecthiddenwindows drive driveget drivespacefree edit envadd envdiv envget \ 79 | envmult envset envsub envupdate exit exitapp fileappend filecopy filecopydir \ 80 | filecreatedir filecreateshortcut filedelete fileencoding filegetattrib \ 81 | filegetshortcut filegetsize filegettime filegetversion fileinstall filemove \ 82 | filemovedir fileread filereadline filerecycle filerecycleempty fileremovedir \ 83 | fileselectfile fileselectfolder filesetattrib filesettime formattime \ 84 | getkeystate groupactivate groupadd groupclose groupdeactivate gui guicontrol \ 85 | guicontrolget hotkey imagesearch inidelete iniread iniwrite input inputbox \ 86 | keyhistory keywait listhotkeys listlines listvars menu mouseclick \ 87 | mouseclickdrag mousegetpos mousemove msgbox onexit outputdebug pause \ 88 | pixelgetcolor pixelsearch postmessage process progress random regdelete \ 89 | regread regwrite reload run runas runwait send sendevent sendinput sendlevel \ 90 | sendmessage sendmode sendplay sendraw setbatchlines setcapslockstate \ 91 | setcontroldelay setdefaultmousespeed setenv setformat setkeydelay \ 92 | setmousedelay setnumlockstate setregview setscrolllockstate \ 93 | setstorecapslockmode settimer settitlematchmode setwindelay setworkingdir \ 94 | shutdown sleep sort soundbeep soundget soundgetwavevolume soundplay soundset \ 95 | soundsetwavevolume splashimage splashtextoff splashtexton splitpath \ 96 | statusbargettext statusbarwait stringcasesense stringgetpos stringleft \ 97 | stringlen stringlower stringmid stringreplace stringright stringsplit \ 98 | stringtrimleft stringtrimright stringupper suspend sysget thread tooltip \ 99 | transform traytip urldownloadtofile winactivate winactivatebottom winclose \ 100 | winget wingetactivestats wingetactivetitle wingetclass wingetpos wingettext \ 101 | wingettitle winhide winkill winmaximize winmenuselectitem winminimize \ 102 | winminimizeall winminimizeallundo winmove winrestore winset winsettitle \ 103 | winshow winwait winwaitactive winwaitclose winwaitnotactive 104 | -------------------------------------------------------------------------------- /source/ahk1.standard.api: -------------------------------------------------------------------------------- 1 | #AllowSameLineComments 2 | #ClipboardTimeout 3 | #CommentFlag 4 | #Delimiter 5 | #DerefChar 6 | #ErrorStdOut 7 | #EscapeChar 8 | #HotkeyInterval 9 | #HotkeyModifierTimeout 10 | #Hotstring 11 | #If 12 | #IfTimeout 13 | #IfWinActive 14 | #IfWinExist 15 | #IfWinNotActive 16 | #IfWinNotExist 17 | #Include 18 | #IncludeAgain 19 | #InputLevel 20 | #InstallKeybdHook 21 | #InstallMouseHook 22 | #KeyHistory 23 | #LTrim 24 | #MaxHotkeysPerInterval 25 | #MaxMem 26 | #MaxThreads 27 | #MaxThreadsBuffer 28 | #MaxThreadsPerHotkey 29 | #MenuMaskKey 30 | #NoEnv 31 | #NoTrayIcon 32 | #Persistent 33 | #Requires 34 | #SingleInstance 35 | #UseHook 36 | #Warn 37 | #WinActivateForce 38 | break 39 | case 40 | catch 41 | continue 42 | else 43 | finally 44 | for 45 | gosub 46 | goto 47 | if 48 | IfEqual 49 | IfExist 50 | IfGreater 51 | IfGreaterOrEqual 52 | IfInString 53 | IfLess 54 | IfLessOrEqual 55 | IfMsgBox 56 | IfNotEqual 57 | IfNotExist 58 | IfNotInString 59 | IfWinActive 60 | IfWinExist 61 | IfWinNotActive 62 | IfWinNotExist 63 | Loop 64 | return 65 | switch 66 | throw 67 | try 68 | until 69 | while 70 | __Call 71 | __Delete 72 | __Get 73 | __New 74 | __Set 75 | ahk_class 76 | ahk_exe 77 | ahk_group 78 | ahk_id 79 | ahk_pid 80 | and 81 | base 82 | ByRef 83 | class 84 | extends 85 | false 86 | Files 87 | global 88 | local 89 | new 90 | not 91 | or 92 | Parse 93 | Read 94 | Reg 95 | static 96 | true 97 | A_AhkPath 98 | A_AhkVersion 99 | A_AppData 100 | A_AppDataCommon 101 | A_Args 102 | A_AutoTrim 103 | A_BatchLines 104 | A_CaretX 105 | A_CaretY 106 | A_Clipboard 107 | A_ComputerName 108 | A_ComSpec 109 | A_ControlDelay 110 | A_CoordModeCaret 111 | A_CoordModeMenu 112 | A_CoordModeMouse 113 | A_CoordModePixel 114 | A_CoordModeToolTip 115 | A_Cursor 116 | A_DD 117 | A_DDD 118 | A_DDDD 119 | A_DefaultGui 120 | A_DefaultListView 121 | A_DefaultMouseSpeed 122 | A_DefaultTreeView 123 | A_Desktop 124 | A_DesktopCommon 125 | A_DetectHiddenText 126 | A_DetectHiddenWindows 127 | A_EndChar 128 | A_EventInfo 129 | A_ExitReason 130 | A_FileEncoding 131 | A_FormatFloat 132 | A_FormatInteger 133 | A_Gui 134 | A_GuiControl 135 | A_GuiControlEvent 136 | A_GuiEvent 137 | A_GuiHeight 138 | A_GuiWidth 139 | A_GuiX 140 | A_GuiY 141 | A_Hour 142 | A_IconFile 143 | A_IconHidden 144 | A_IconNumber 145 | A_IconTip 146 | A_Index 147 | A_InitialWorkingDir 148 | A_IPAddress1 149 | A_IPAddress2 150 | A_IPAddress3 151 | A_IPAddress4 152 | A_Is64bitOS 153 | A_IsAdmin 154 | A_IsCompiled 155 | A_IsCritical 156 | A_IsPaused 157 | A_IsSuspended 158 | A_IsUnicode 159 | A_KeyDelay 160 | A_KeyDelayPlay 161 | A_KeyDuration 162 | A_KeyDurationPlay 163 | A_Language 164 | A_LastError 165 | A_LineFile 166 | A_LineNumber 167 | A_ListLines 168 | A_LoopField 169 | A_LoopFileAttrib 170 | A_LoopFileDir 171 | A_LoopFileExt 172 | A_LoopFileFullPath 173 | A_LoopFileLongPath 174 | A_LoopFileName 175 | A_LoopFilePath 176 | A_LoopFileShortName 177 | A_LoopFileShortPath 178 | A_LoopFileSize 179 | A_LoopFileSizeKB 180 | A_LoopFileSizeMB 181 | A_LoopFileTimeAccessed 182 | A_LoopFileTimeCreated 183 | A_LoopFileTimeModified 184 | A_LoopReadLine 185 | A_LoopRegKey 186 | A_LoopRegName 187 | A_LoopRegSubKey 188 | A_LoopRegTimeModified 189 | A_LoopRegType 190 | A_MDay 191 | A_Min 192 | A_MM 193 | A_MMM 194 | A_MMMM 195 | A_Mon 196 | A_MouseDelay 197 | A_MouseDelayPlay 198 | A_MSec 199 | A_MyDocuments 200 | A_Now 201 | A_NowUTC 202 | A_NumBatchLines 203 | A_OSType 204 | A_OSVersion 205 | A_PriorHotkey 206 | A_PriorKey 207 | A_ProgramFiles 208 | A_Programs 209 | A_ProgramsCommon 210 | A_PtrSize 211 | A_RegView 212 | A_ScreenDPI 213 | A_ScreenHeight 214 | A_ScreenWidth 215 | A_ScriptDir 216 | A_ScriptFullPath 217 | A_ScriptHwnd 218 | A_ScriptName 219 | A_Sec 220 | A_SendLevel 221 | A_SendMode 222 | A_Space 223 | A_StartMenu 224 | A_StartMenuCommon 225 | A_Startup 226 | A_StartupCommon 227 | A_StoreCapsLockMode 228 | A_StringCaseSense 229 | A_Tab 230 | A_Temp 231 | A_ThisFunc 232 | A_ThisHotkey 233 | A_ThisLabel 234 | A_ThisMenu 235 | A_ThisMenuItem 236 | A_ThisMenuItemPos 237 | A_TickCount 238 | A_TimeIdle 239 | A_TimeIdleKeyboard 240 | A_TimeIdleMouse 241 | A_TimeIdlePhysical 242 | A_TimeSincePriorHotkey 243 | A_TimeSinceThisHotkey 244 | A_TitleMatchMode 245 | A_TitleMatchModeSpeed 246 | A_UserName 247 | A_WDay 248 | A_WinDelay 249 | A_WinDir 250 | A_WorkingDir 251 | A_YDay 252 | A_Year 253 | A_YWeek 254 | A_YYYY 255 | Clipboard 256 | ClipboardAll 257 | ComSpec 258 | ErrorLevel 259 | ProgramFiles 260 | this 261 | Abs 262 | ACos 263 | Array 264 | Asc 265 | ASin 266 | ATan 267 | Ceil 268 | Chr 269 | ComObjActive 270 | ComObjArray 271 | ComObjConnect 272 | ComObjCreate 273 | ComObject 274 | ComObjError 275 | ComObjFlags 276 | ComObjGet 277 | ComObjQuery 278 | ComObjType 279 | ComObjValue 280 | Cos 281 | DllCall 282 | Exception 283 | Exp 284 | FileExist 285 | FileOpen 286 | Floor 287 | Format 288 | Func 289 | GetKeyName 290 | GetKeySC 291 | GetKeyState 292 | GetKeyVK 293 | Hotstring 294 | IL_Add 295 | IL_Create 296 | IL_Destroy 297 | InputHook 298 | InStr 299 | IsByRef 300 | IsFunc 301 | IsLabel 302 | IsObject 303 | IsSet 304 | Ln 305 | LoadPicture 306 | Log 307 | LTrim 308 | LV_Add 309 | LV_Delete 310 | LV_DeleteCol 311 | LV_GetCount 312 | LV_GetNext 313 | LV_GetText 314 | LV_Insert 315 | LV_InsertCol 316 | LV_Modify 317 | LV_ModifyCol 318 | LV_SetImageList 319 | Max 320 | MenuGetHandle 321 | MenuGetName 322 | Min 323 | Mod 324 | NumGet 325 | NumPut 326 | ObjAddRef 327 | ObjBindMethod 328 | ObjClone 329 | ObjCount 330 | ObjDelete 331 | Object 332 | ObjGetAddress 333 | ObjGetBase 334 | ObjGetCapacity 335 | ObjHasKey 336 | ObjInsert 337 | ObjInsertAt 338 | ObjLength 339 | ObjMaxIndex 340 | ObjMinIndex 341 | ObjNewEnum 342 | ObjPop 343 | ObjPush 344 | ObjRawGet 345 | ObjRawSet 346 | ObjRelease 347 | ObjRemove 348 | ObjRemoveAt 349 | ObjSetBase 350 | ObjSetCapacity 351 | OnClipboardChange 352 | OnError 353 | OnExit 354 | OnMessage 355 | Ord 356 | RegExMatch 357 | RegExReplace 358 | RegisterCallback 359 | Round 360 | RTrim 361 | SB_SetIcon 362 | SB_SetParts 363 | SB_SetText 364 | Sin 365 | Sqrt 366 | StrGet 367 | StrLen 368 | StrPut 369 | StrReplace 370 | StrSplit 371 | SubStr 372 | Tan 373 | Trim 374 | TV_Add 375 | TV_Delete 376 | TV_Get 377 | TV_GetChild 378 | TV_GetCount 379 | TV_GetNext 380 | TV_GetParent 381 | TV_GetPrev 382 | TV_GetSelection 383 | TV_GetText 384 | TV_Modify 385 | TV_SetImageList 386 | VarSetCapacity 387 | WinActive 388 | WinExist 389 | AutoTrim 390 | BlockInput 391 | Click 392 | ClipWait 393 | Control 394 | ControlClick 395 | ControlFocus 396 | ControlGet 397 | ControlGetFocus 398 | ControlGetPos 399 | ControlGetText 400 | ControlMove 401 | ControlSend 402 | ControlSendRaw 403 | ControlSetText 404 | CoordMode 405 | Critical 406 | DetectHiddenText 407 | DetectHiddenWindows 408 | Drive 409 | DriveGet 410 | DriveSpaceFree 411 | Edit 412 | EnvAdd 413 | EnvDiv 414 | EnvGet 415 | EnvMult 416 | EnvSet 417 | EnvSub 418 | EnvUpdate 419 | Exit 420 | ExitApp 421 | FileAppend 422 | FileCopy 423 | FileCopyDir 424 | FileCreateDir 425 | FileCreateShortcut 426 | FileDelete 427 | FileEncoding 428 | FileGetAttrib 429 | FileGetShortcut 430 | FileGetSize 431 | FileGetTime 432 | FileGetVersion 433 | FileInstall 434 | FileMove 435 | FileMoveDir 436 | FileRead 437 | FileReadLine 438 | FileRecycle 439 | FileRecycleEmpty 440 | FileRemoveDir 441 | FileSelectFile 442 | FileSelectFolder 443 | FileSetAttrib 444 | FileSetTime 445 | FormatTime 446 | GetKeyState 447 | GroupActivate 448 | GroupAdd 449 | GroupClose 450 | GroupDeactivate 451 | Gui 452 | GuiControl 453 | GuiControlGet 454 | Hotkey 455 | ImageSearch 456 | IniDelete 457 | IniRead 458 | IniWrite 459 | Input 460 | InputBox 461 | KeyHistory 462 | KeyWait 463 | ListHotkeys 464 | ListLines 465 | ListVars 466 | Menu 467 | MouseClick 468 | MouseClickDrag 469 | MouseGetPos 470 | MouseMove 471 | MsgBox 472 | OnExit 473 | OutputDebug 474 | Pause 475 | PixelGetColor 476 | PixelSearch 477 | PostMessage 478 | Process 479 | Progress 480 | Random 481 | RegDelete 482 | RegRead 483 | RegWrite 484 | Reload 485 | Run 486 | RunAs 487 | RunWait 488 | Send 489 | SendEvent 490 | SendInput 491 | SendLevel 492 | SendMessage 493 | SendMode 494 | SendPlay 495 | SendRaw 496 | SetBatchLines 497 | SetCapsLockState 498 | SetControlDelay 499 | SetDefaultMouseSpeed 500 | SetEnv 501 | SetFormat 502 | SetKeyDelay 503 | SetMouseDelay 504 | SetNumLockState 505 | SetRegView 506 | SetScrollLockState 507 | SetStoreCapsLockMode 508 | SetTimer 509 | SetTitleMatchMode 510 | SetWinDelay 511 | SetWorkingDir 512 | Shutdown 513 | Sleep 514 | Sort 515 | SoundBeep 516 | SoundGet 517 | SoundGetWaveVolume 518 | SoundPlay 519 | SoundSet 520 | SoundSetWaveVolume 521 | SplashImage 522 | SplashTextOff 523 | SplashTextOn 524 | SplitPath 525 | StatusBarGetText 526 | StatusBarWait 527 | StringCaseSense 528 | StringGetPos 529 | StringLeft 530 | StringLen 531 | StringLower 532 | StringMid 533 | StringReplace 534 | StringRight 535 | StringSplit 536 | StringTrimLeft 537 | StringTrimRight 538 | StringUpper 539 | Suspend 540 | SysGet 541 | Thread 542 | ToolTip 543 | Transform 544 | TrayTip 545 | URLDownloadToFile 546 | WinActivate 547 | WinActivateBottom 548 | WinClose 549 | WinGet 550 | WinGetActiveStats 551 | WinGetActiveTitle 552 | WinGetClass 553 | WinGetPos 554 | WinGetText 555 | WinGetTitle 556 | WinHide 557 | WinKill 558 | WinMaximize 559 | WinMenuSelectItem 560 | WinMinimize 561 | WinMinimizeAll 562 | WinMinimizeAllUndo 563 | WinMove 564 | WinRestore 565 | WinSet 566 | WinSetTitle 567 | WinShow 568 | WinWait 569 | WinWaitActive 570 | WinWaitClose 571 | WinWaitNotActive 572 | -------------------------------------------------------------------------------- /source/ahk2.keywords.properties: -------------------------------------------------------------------------------- 1 | # This file is autogenerated by CreateAhk2.ahk - DO NOT UPDATE MANUALLY 2 | 3 | ahk2.keywords.directives.expr=\ 4 | clipboardtimeout hotif hotiftimeout inputlevel maxthreads maxthreadsbuffer \ 5 | maxthreadsperhotkey suspendexempt usehook winactivateforce 6 | 7 | ahk2.keywords.directives.str=\ 8 | dllload errorstdout hotstring include includeagain notrayicon requires \ 9 | singleinstance warn 10 | 11 | ahk2.keywords.flow=\ 12 | break case catch continue else finally for goto if loop return switch throw \ 13 | try until while 14 | 15 | ahk2.keywords.reserved=\ 16 | and as contains false global in is isset local not or static super true unset 17 | 18 | ahk2.keywords.known.vars=\ 19 | a_ahkpath a_ahkversion a_allowmainwindow a_appdata a_appdatacommon a_args \ 20 | a_clipboard a_computername a_comspec a_controldelay a_coordmodecaret \ 21 | a_coordmodemenu a_coordmodemouse a_coordmodepixel a_coordmodetooltip a_cursor \ 22 | a_dd a_ddd a_dddd a_defaultmousespeed a_desktop a_desktopcommon \ 23 | a_detecthiddentext a_detecthiddenwindows a_endchar a_eventinfo a_fileencoding \ 24 | a_hotkeyinterval a_hotkeymodifiertimeout a_hour a_iconfile a_iconhidden \ 25 | a_iconnumber a_icontip a_index a_initialworkingdir a_is64bitos a_isadmin \ 26 | a_iscompiled a_iscritical a_ispaused a_issuspended a_keydelay a_keydelayplay \ 27 | a_keyduration a_keydurationplay a_language a_lasterror a_linefile a_linenumber \ 28 | a_listlines a_loopfield a_loopfileattrib a_loopfiledir a_loopfileext \ 29 | a_loopfilefullpath a_loopfilename a_loopfilepath a_loopfileshortname \ 30 | a_loopfileshortpath a_loopfilesize a_loopfilesizekb a_loopfilesizemb \ 31 | a_loopfiletimeaccessed a_loopfiletimecreated a_loopfiletimemodified \ 32 | a_loopreadline a_loopregkey a_loopregname a_loopregtimemodified a_loopregtype \ 33 | a_maxhotkeysperinterval a_mday a_menumaskkey a_min a_mm a_mmm a_mmmm a_mon \ 34 | a_mousedelay a_mousedelayplay a_msec a_mydocuments a_now a_nowutc a_osversion \ 35 | a_priorhotkey a_priorkey a_programfiles a_programs a_programscommon a_ptrsize \ 36 | a_regview a_screendpi a_screenheight a_screenwidth a_scriptdir \ 37 | a_scriptfullpath a_scripthwnd a_scriptname a_sec a_sendlevel a_sendmode \ 38 | a_space a_startmenu a_startmenucommon a_startup a_startupcommon \ 39 | a_storecapslockmode a_tab a_temp a_thisfunc a_thishotkey a_tickcount \ 40 | a_timeidle a_timeidlekeyboard a_timeidlemouse a_timeidlephysical \ 41 | a_timesincepriorhotkey a_timesincethishotkey a_titlematchmode \ 42 | a_titlematchmodespeed a_traymenu a_username a_wday a_windelay a_windir \ 43 | a_workingdir a_yday a_year a_yweek a_yyyy this thishotkey 44 | 45 | ahk2.keywords.known.funcs=\ 46 | abs acos asin atan blockinput callbackcreate callbackfree caretgetpos ceil \ 47 | chr click clipwait comcall comobjactive comobjconnect comobjflags \ 48 | comobjfromptr comobjget comobjquery comobjtype comobjvalue controladditem \ 49 | controlchooseindex controlchoosestring controlclick controldeleteitem \ 50 | controlfinditem controlfocus controlgetchecked controlgetchoice \ 51 | controlgetclassnn controlgetenabled controlgetexstyle controlgetfocus \ 52 | controlgethwnd controlgetindex controlgetitems controlgetpos controlgetstyle \ 53 | controlgettext controlgetvisible controlhide controlhidedropdown controlmove \ 54 | controlsend controlsendtext controlsetchecked controlsetenabled \ 55 | controlsetexstyle controlsetstyle controlsettext controlshow \ 56 | controlshowdropdown coordmode cos critical dateadd datediff detecthiddentext \ 57 | detecthiddenwindows dircopy dircreate dirdelete direxist dirmove dirselect \ 58 | dllcall download driveeject drivegetcapacity drivegetfilesystem drivegetlabel \ 59 | drivegetlist drivegetserial drivegetspacefree drivegetstatus drivegetstatuscd \ 60 | drivegettype drivelock driveretract drivesetlabel driveunlock edit \ 61 | editgetcurrentcol editgetcurrentline editgetline editgetlinecount \ 62 | editgetselectedtext editpaste envget envset exit exitapp exp fileappend \ 63 | filecopy filecreateshortcut filedelete fileencoding fileexist filegetattrib \ 64 | filegetshortcut filegetsize filegettime filegetversion fileinstall filemove \ 65 | fileopen fileread filerecycle filerecycleempty fileselect filesetattrib \ 66 | filesettime floor format formattime getkeyname getkeysc getkeystate getkeyvk \ 67 | getmethod groupactivate groupadd groupclose groupdeactivate guictrlfromhwnd \ 68 | guifromhwnd hasbase hasmethod hasprop hotif hotifwinactive hotifwinexist \ 69 | hotifwinnotactive hotifwinnotexist hotkey hotstring il_add il_create \ 70 | il_destroy imagesearch inidelete iniread iniwrite inputbox installkeybdhook \ 71 | installmousehook instr isalnum isalpha isdigit isfloat isinteger islabel \ 72 | islower isnumber isobject issetref isspace istime isupper isxdigit keyhistory \ 73 | keywait listhotkeys listlines listvars listviewgetcontent ln loadpicture log \ 74 | ltrim max menufromhandle menuselect min mod monitorget monitorgetcount \ 75 | monitorgetname monitorgetprimary monitorgetworkarea mouseclick mouseclickdrag \ 76 | mousegetpos mousemove msgbox numget numput objaddref objbindmethod objfromptr \ 77 | objfromptraddref objgetbase objgetcapacity objhasownprop objownpropcount \ 78 | objownprops objptr objptraddref objrelease objsetbase objsetcapacity \ 79 | onclipboardchange onerror onexit onmessage ord outputdebug pause persistent \ 80 | pixelgetcolor pixelsearch postmessage processclose processexist processgetname \ 81 | processgetpath processsetpriority processwait processwaitclose random \ 82 | regcreatekey regdelete regdeletekey regexmatch regexreplace regread regwrite \ 83 | reload round rtrim run runas runwait send sendevent sendinput sendlevel \ 84 | sendmessage sendmode sendplay sendtext setcapslockstate setcontroldelay \ 85 | setdefaultmousespeed setkeydelay setmousedelay setnumlockstate setregview \ 86 | setscrolllockstate setstorecapslockmode settimer settitlematchmode setwindelay \ 87 | setworkingdir shutdown sin sleep sort soundbeep soundgetinterface soundgetmute \ 88 | soundgetname soundgetvolume soundplay soundsetmute soundsetvolume splitpath \ 89 | sqrt statusbargettext statusbarwait strcompare strget strlen strlower strptr \ 90 | strput strreplace strsplit strtitle strupper substr suspend sysget \ 91 | sysgetipaddresses tan thread tooltip trayseticon traytip trim type \ 92 | varsetstrcapacity vercompare winactivate winactivatebottom winactive winclose \ 93 | winexist wingetclass wingetclientpos wingetcontrols wingetcontrolshwnd \ 94 | wingetcount wingetexstyle wingetid wingetidlast wingetlist wingetminmax \ 95 | wingetpid wingetpos wingetprocessname wingetprocesspath wingetstyle wingettext \ 96 | wingettitle wingettranscolor wingettransparent winhide winkill winmaximize \ 97 | winminimize winminimizeall winminimizeallundo winmove winmovebottom winmovetop \ 98 | winredraw winrestore winsetalwaysontop winsetenabled winsetexstyle \ 99 | winsetregion winsetstyle winsettitle winsettranscolor winsettransparent \ 100 | winshow winwait winwaitactive winwaitclose winwaitnotactive 101 | 102 | ahk2.keywords.known.classes=\ 103 | any array boundfunc buffer class clipboardall closure comobjarray comobject \ 104 | comvalue comvalueref enumerator error file float func gui indexerror inputhook \ 105 | integer map membererror memoryerror menu menubar methoderror number object \ 106 | oserror primitive propertyerror regexmatchinfo string targeterror timeouterror \ 107 | typeerror unseterror unsetitemerror valueerror varref zerodivisionerror 108 | 109 | ahk2.keywords.known.props=\ 110 | __class __item ateof base capacity casesense count default encoding extra \ 111 | file handle hwnd isbuiltin isvariadic length line maxparams message minparams \ 112 | name pos prototype ptr size stack what 113 | 114 | ahk2.keywords.known.methods=\ 115 | __call __delete __enum __get __init __new __set bind call clear clone close \ 116 | defineprop delete deleteprop get getmethod getownpropdesc has hasbase \ 117 | hasmethod hasownprop hasprop insertat isbyref isoptional ownprops pop push \ 118 | rawread rawwrite read readchar readdouble readfloat readint readint64 readline \ 119 | readshort readuchar readuint readushort removeat seek set write writechar \ 120 | writedouble writefloat writeint writeint64 writeline writeshort writeuchar \ 121 | writeuint writeushort 122 | -------------------------------------------------------------------------------- /source/locales/English.locale.properties: -------------------------------------------------------------------------------- 1 | # locale.properties by Neil Hodgson neilh@scintilla.org 2 | # Placed in the public domain 2001 3 | 4 | # locale.properties defines the localised text for the user interface 5 | # Some definitions are commented out because they duplicate another string 6 | # The format of each line is original=localised, such as File=&Fichier 7 | # Even though the original text may have ellipses "..." and access key 8 | # indicators "&" in the user interface, these do not appear in this file 9 | # for the original texts. Translated texts should have an access key indicator 10 | # if needed as the translated text may not include the original access key. 11 | # Ellipses are automatically added when needed. 12 | # The "/" character should not be used in menu entries as on GTK+ the "/" is 13 | # used to specifiy the menu hierarchy and so will produce extra menu items. 14 | # Each original text may have only one translation, even if it appears in 15 | # different parts of the user interface. 16 | 17 | # Please state any further license conditions and copyright notices you desire. 18 | # If there are no further notices then contributed translations will be assumed 19 | # to be made freely available under the same conditions as SciTE. 20 | # Email addresses included in this file may attract spam if the file is published. 21 | 22 | # !!! Some Renaming is involved in this file !!! 23 | 24 | # Define the encoding of this file so that on GTK+ 2, the file can be 25 | # reencoded as UTF-8 as that is the GTK+ 2 user interface encoding. 26 | # A common choice for European users is LATIN1. For other locales look at 27 | # the set of encodings supported by iconv. 28 | translation.encoding=UTF-8 29 | 30 | # Menus 31 | 32 | # File menu 33 | File= 34 | New= 35 | Open= 36 | Open Selected Filename= 37 | Revert= 38 | Close= 39 | Save= 40 | Save As= 41 | Export= 42 | As HTML= 43 | As RTF= 44 | Page Setup= 45 | Print= 46 | Load Session= 47 | Save Session= 48 | Exit= 49 | 50 | # Edit menu 51 | Edit= 52 | Undo= 53 | Redo= 54 | Cut= 55 | Copy= 56 | Paste= 57 | Delete= 58 | Select All= 59 | Copy as RTF= 60 | Match Brace= 61 | Select to Brace= 62 | Show Calltip= 63 | Complete Symbol= 64 | Complete Word= 65 | Expand Abbreviation= 66 | Block Comment or Uncomment= 67 | Box Comment= 68 | Stream Comment= 69 | Make Selection Uppercase= 70 | Make Selection Lowercase= 71 | 72 | # Search menu 73 | Search= 74 | Find= 75 | Find Next= 76 | Find Previous= 77 | Find in Files= 78 | Replace= 79 | Next Bookmark= 80 | Previous Bookmark= 81 | Toggle Bookmark= 82 | Clear All Bookmarks= 83 | 84 | # View menu 85 | View= 86 | Toggle current fold= 87 | Toggle all folds= 88 | Full Screen= 89 | Tool Bar= 90 | Tab Bar= 91 | Status Bar= 92 | Whitespace= 93 | End of Line= 94 | Indentation Guides= 95 | Line Numbers= 96 | Margin= 97 | Fold Margin= 98 | Output= 99 | Parameters= 100 | 101 | # Tools menu 102 | Tools= 103 | Compile= 104 | Build=&Debug 105 | Go=&Run 106 | Stop Executing= 107 | Next Message= 108 | Previous Message= 109 | Clear Output= 110 | Switch Pane= 111 | 112 | # Options menu 113 | Options= 114 | Always On Top= 115 | Vertical Split= 116 | Line End Characters= 117 | CR + LF= 118 | CR= 119 | LF= 120 | Convert Line End Characters= 121 | Change Indentation Settings= 122 | Use Monospaced Font= 123 | Open Local Options File=Open per-folder properties 124 | Open User Options File=Open User properties 125 | Open Global Options File=Open Global properties 126 | Open Abbreviations File= 127 | 128 | # Language menu 129 | Language= 130 | 131 | # Buffers menu 132 | Buffers=Ta&bs 133 | Previous= 134 | Next= 135 | Close All= 136 | 137 | # Help menu 138 | Help= 139 | About SciTE4AutoHotkey Lite= 140 | About SciTE4AutoHotkey= 141 | 142 | # Dialogs 143 | 144 | # Generic dialog 145 | OK= 146 | Cancel= 147 | Yes= 148 | No= 149 | 150 | # About dialog 151 | About SciTE=About SciTE4AutoHotkey 152 | # This is to add something like: Swahili translation 1.41.1 by Neil Hodgson 153 | TranslationCredit= 154 | Contributors:= 155 | 156 | # Open, Save dialogs 157 | Open File= 158 | Save File= 159 | Save File As= 160 | Export File As HTML= 161 | Export File As RTF= 162 | Save Current Session= 163 | Custom Filter= 164 | 165 | # Find in Files dialog 166 | #Find in Files= 167 | Find what:= 168 | Files:= 169 | #Find= 170 | 171 | # Go To dialog 172 | Go To= 173 | Destination Line Number:= 174 | Current line:= 175 | Last line:= 176 | 177 | # Indentation Settings dialog 178 | Indentation Settings= 179 | Tab Size:= 180 | Indent Size:= 181 | Use tabs:= 182 | 183 | # Replace and Find dialogs 184 | #Replace= 185 | #Find= 186 | #Find what:= 187 | Replace with:= 188 | Match whole word only= 189 | Match case= 190 | Regular expression= 191 | Wrap around= 192 | Transform backslash expressions= 193 | #Find Next= 194 | Replace All= 195 | Replace in Selection= 196 | #Close= 197 | Direction= 198 | Reverse direction= 199 | Up= 200 | Down= 201 | 202 | # Parameters dialog 203 | Execute= 204 | Set= 205 | 206 | # Other UI strings 207 | Untitled= 208 | 209 | # Properties used in global options 210 | Text= 211 | All Source= 212 | All Files (*.*)= 213 | 214 | # Messages 215 | # Messages may contain variables such as file names or search strings indicated 216 | # by ^0 which are replaced by values before display. ^1, ^2, ... may be used in the future. 217 | Can not find the string '^0'.= 218 | Find string must not be empty for 'Replace All' command.= 219 | Selection must not be empty for 'Replace in Selection' command.= 220 | No replacements because string '^0' was not present.= 221 | Could not open file '^0'.= 222 | Could not save file '^0'.= 223 | Save changes to '^0'?= 224 | Save changes to (Untitled)?= 225 | The file '^0' has been modified. Should it be reloaded?= 226 | Bad file.= 227 | Failed to create dialog box: ^0.= 228 | Can not start printer document.= 229 | URI '^0' not understood.= 230 | Invalid directory '^0'.= 231 | 232 | # 1.42 233 | Directory:= 234 | Wrap= 235 | Hide= 236 | Check if already open= 237 | 238 | # 1.43 239 | Find string must not be empty for 'Replace in Selection' command.= 240 | List Macros= 241 | Run Current Macro= 242 | Record Macro= 243 | Stop Recording Macro= 244 | SciTE Help= 245 | Sc1 Help= 246 | Edit Properties= 247 | Wrap Output= 248 | 249 | # 1.44 250 | Read-Only= 251 | READ= 252 | 253 | # 1.46 254 | As TeX= 255 | Export File As TeX= 256 | Save a Copy= 257 | 258 | # 1.47 259 | As LaTeX= 260 | Export File As LaTeX= 261 | Encoding= 262 | 8 Bit= 263 | UTF-8= 264 | 265 | # 1.49 266 | Save All= 267 | Browse= 268 | Select a folder to search from= 269 | UTF-8 Cookie= 270 | 271 | # 1.50 272 | Insert Abbreviation= 273 | Abbreviation:= 274 | Insert= 275 | Mark All= 276 | 277 | # 1.51 278 | In Selection= 279 | Paragraph= 280 | Join= 281 | Split= 282 | 283 | # 1.52 284 | Block comment variable '^0' is not defined in SciTE *.properties!= 285 | Box comment variables '^0', '^1' and '^2' are not defined in SciTE *.properties!= 286 | Stream comment variables '^0' and '^1' are not defined in SciTE *.properties!= 287 | The file '^0' has been modified outside SciTE. Should it be reloaded?= 288 | As PDF= 289 | Export File As PDF= 290 | 291 | # 1.53 292 | Version= 293 | by= 294 | 295 | #1.54 296 | Incremental Search= 297 | Search for:= 298 | 299 | #1.55 300 | Could not save file '^0'. Save under a different name?= 301 | 302 | #1.56 303 | As XML= 304 | Export File As XML= 305 | 306 | #1.57 307 | Destination Line:= 308 | Column:= 309 | 310 | #1.58 311 | Replacements:= 312 | Open Files Here= 313 | 314 | #1.59 315 | 316 | #1.60 317 | 318 | #1.61 319 | File '^0' is ^1 bytes long,\nlarger than the ^2 bytes limit set in the properties.\nDo you still want to open it?= 320 | Open Lua Startup Script=Open Global Lua Script 321 | All Files (*)= 322 | Hidden Files (.*)= 323 | 324 | #1.62 325 | Show hidden files= 326 | 327 | #1.63 328 | Replace in Buffers=Replace in Files 329 | Find string must not be empty for 'Replace in Buffers' command.=Find string must not be empty for 'Replace in Files' command. 330 | Search only in this style:= 331 | 332 | #1.67 333 | Duplicate= 334 | 335 | #1.72 336 | Convert= 337 | 338 | #1.73 339 | Code Page Property= 340 | UTF-8 with BOM= 341 | Open Directory Options File=Open per-project properties 342 | 343 | #1.77 344 | File '^0' is already open in another buffer.=File '^0' is already open. 345 | 346 | # 2.10 347 | UTF-16 Big Endian= 348 | UTF-16 Little Endian= 349 | 350 | # 2.12 351 | The file '^0' has been modified outside SciTE. Should it be saved?= 352 | Copy Path= 353 | in= 354 | of= 355 | 356 | # 2.20 357 | Find:= 358 | Replace:= 359 | 360 | # 2.21 361 | Use tabs= 362 | Case sensitive= 363 | -------------------------------------------------------------------------------- /source/locales/日本語.locale.properties: -------------------------------------------------------------------------------- 1 | # locale.properties by Neil Hodgson neilh@scintilla.org 2 | # Placed in the public domain 2001 3 | 4 | # locale.properties defines the localised text for the user interface 5 | # Some definitions are commented out because they duplicate another string 6 | # The format of each line is original=localised, such as File=&Fichier 7 | # Even though the original text may have ellipses "..." and access key 8 | # indicators "&" in the user interface, these do not appear in this file 9 | # for the original texts. Translated texts should have an access key indicator 10 | # if needed as the translated text may not include the original access key. 11 | # Ellipses are automatically added when needed. 12 | # The "/" character should not be used in menu entries as on GTK+ the "/" is 13 | # used to specifiy the menu hierarchy and so will produce extra menu items. 14 | # Each original text may have only one translation, even if it appears in 15 | # different parts of the user interface. 16 | 17 | # Please state any further license conditions and copyright notices you desire. 18 | # If there are no further notices then contributed translations will be assumed 19 | # to be made freely available under the same conditions as SciTE. 20 | # Email addresses included in this file may attract spam if the file is published. 21 | 22 | # Define the encoding of this file so that on GTK+ 2, the file can be 23 | # reencoded as UTF-8 as that is the GTK+ 2 user interface encoding. 24 | # A common choice for European users is LATIN1. For other locales look at 25 | # the set of encodings supported by iconv. 26 | translation.encoding=UTF-8 27 | 28 | # Menus 29 | 30 | # File menu 31 | File=ファイル(&F) 32 | New=新規作成(&N) 33 | Open=開く(&O) 34 | Open Selected Filename=選択文字列をファイル名として開く(&F) 35 | Revert=再読込(&R) 36 | Close=閉じる(&W) 37 | Save=保存(&S) 38 | Save As=名前を変更して保存(&A) 39 | Export=変換して出力(&E) 40 | As HTML=&HTMLとして 41 | As RTF=&RTFとして 42 | Page Setup=印刷設定(&U) 43 | Print=印刷(&P) 44 | Load Session=セッションを読み出す(&L) 45 | Save Session=セッションの保存(&V) 46 | Exit=終了(&X) 47 | 48 | # Edit menu 49 | Edit=編集(&E) 50 | Undo=取り消し(&U) 51 | Redo=再実行(&R) 52 | Cut=切り取り(&T) 53 | Copy=コピー(&C) 54 | Paste=貼り付け(&P) 55 | Delete=削除(&D) 56 | Select All=すべてを選択(&A) 57 | Copy as RTF=RT&F としてコピー 58 | Match Brace=対応する括弧まで移動(&B) 59 | Select to Brace=対応する括弧まで選択(&O) 60 | Show Calltip=コールチップを見る(&H) 61 | Complete Symbol=識別子補完(&Y) 62 | Complete Word=単語補完(&W) 63 | Expand Abbreviation=省略表現を展開(&E) 64 | Block Comment or Uncomment=ブロック注釈/解除(&M) 65 | Box Comment=ボックス注釈(&X) 66 | Stream Comment=ストリーム注釈(&N) 67 | Make Selection Uppercase=選択部を大文字化する(&S) 68 | Make Selection Lowercase=選択部を小文字化する(&L) 69 | 70 | # Search menu 71 | Search=検索(&S) 72 | Find=検索(&F) 73 | Find Next=次を検索(&N) 74 | Find Previous=前を検索(&S) 75 | Find in Files=ファイル内を検索(&I) 76 | Replace=置換(&E) 77 | # ↓リソースに Go to が二つあるのでこちらを変更した。Windows のみしか修正していないので後はよろしく。 78 | Go to line#=行番号で位置指定(&G) 79 | Next Bookmark=次の栞(&M) 80 | Previous Bookmark=前の栞(&V) 81 | Toggle Bookmark=栞の切り替え(&K) 82 | Clear All Bookmarks=栞をすべて削除(&C) 83 | 84 | # View menu 85 | View=表示(&V) 86 | Toggle current fold=現在位置の折りたたみを切り替え(&C) 87 | Toggle all folds=すべての折りたたみを切り替え(&A) 88 | Full Screen=全画面(&N) 89 | Tool Bar=ツールバー(&T) 90 | Tab Bar=タブバー(&B) 91 | Status Bar=ステータスバー(&S) 92 | Whitespace=空白(&W) 93 | End of Line=行末(&E) 94 | Indentation Guides=タブ位置の表示(&I) 95 | Line Numbers=行番号(&L) 96 | Margin=余白(&M) 97 | Fold Margin=折りたたみ表示用の余白(&F) 98 | Output=出力(&O) 99 | Parameters=引数(&P) 100 | 101 | # Tools menu 102 | Tools=ツール(&T) 103 | Compile=コンパイル(&C) 104 | Build=デバッグ(&D) 105 | Go=実行(&G) 106 | Stop Executing=実行の中断(&S) 107 | Next Message=次のメッセージ(&N) 108 | Previous Message=前のメッセージ(&P) 109 | Clear Output=出力の消去(&O) 110 | Switch Pane=注目区画の切り替え(&S) 111 | 112 | # Options menu 113 | Options=オプション(&O) 114 | Always On Top=常に最前面(&A) 115 | Vertical Split=左右に分割(&S) 116 | Line End Characters=行末文字(&L) 117 | CR + LF=CRLF(Windows/Dos)(&+) 118 | CR=&CR(Mac) 119 | LF=&LF(Unix) 120 | Convert Line End Characters=行末文字の変換(&C) 121 | Change Indentation Settings=字下げ設定の変更(&T) 122 | Use Monospaced Font=固定幅フォントを使用(&M) 123 | Open Local Options File=局所用設定を開く(&O) 124 | Open User Options File=ユーザ特性用設定を開く(&U) 125 | Open Global Options File=共有特性設定を開く(&G) 126 | Open Abbreviations File=省略表現集を開く(&B) 127 | 128 | # Language menu 129 | Language=文書の種類(&L) 130 | 131 | # Buffers menu 132 | Buffers=編集バッファ(&B) 133 | Previous=前(&P) 134 | Next=次(&N) 135 | Close All=すべて閉じる(&C) 136 | 137 | # Help menu 138 | Help=解説書(&H) 139 | About Sc1=SciTE4AutoHotkey Lite 作成者・寄贈者(&A) 140 | About SciTE=SciTE4AutoHotkey 作成者・寄贈者(&A) 141 | 142 | # Dialogs 143 | 144 | # Generic dialog 145 | OK=作業を進める 146 | Cancel=中止 147 | Yes=はい 148 | No=いいえ 149 | 150 | # About dialog 151 | #About SciTE= 152 | # This is to add something like: Swahili translation 1.41.1 by Neil Hodgson 153 | TranslationCredit=翻訳:\n 鈴見咲君高 / 日本語版 1.62+\n Japanese Translation 1.62+ by Suzumizaki-Kimitaka. 154 | Contributors:=寄贈: 155 | 156 | # Open, Save dialogs 157 | Open File=ファイルを開く 158 | Save File=ファイルを保存 159 | Save File As=別名でファイルを保存 160 | Export File As HTML=HTML として出力 161 | Export File As RTF=RTF として出力 162 | Save Current Session=現在のセッションを保存 163 | Custom Filter= 164 | 165 | # Find in Files dialog 166 | #Find in Files= 167 | Find what:=検索文字列 168 | Files:=対象ファイル 169 | #Find= 170 | 171 | # Go To dialog 172 | Go To=位置指定移動 173 | Destination Line Number:=移動先の行 174 | Current line:=現在位置の行 175 | Last line:=全行数 176 | 177 | # Indentation Settings dialog 178 | Indentation Settings=字下げ設定 179 | Tab Size:=タブの大きさ 180 | Indent Size:=字下げの大きさ 181 | Use tabs:=タブコードを使う 182 | 183 | # Replace and Find dialogs 184 | #Replace= 185 | #Find= 186 | #Find what:= 187 | Replace with:=置換内容 188 | Match whole word only=単語単位の一致のみ 189 | Match case=大文字小文字の区別 190 | Regular expression=正規表現 191 | Wrap around=終端に達したら逆の端から続ける 192 | Transform backslash expressions=\表現を変換 193 | #Find Next= 194 | Replace All=すべて置換 195 | Replace in Selection=選択部を置換 196 | #Close= 197 | Direction=検索方向 198 | Reverse direction=逆方向にする 199 | Up=上 200 | Down=下 201 | 202 | # Parameters dialog 203 | Execute=実行 204 | Set=設定 205 | 206 | # Other UI strings 207 | Untitled=名称未設定 208 | 209 | # Properties used in global options 210 | Text=テキスト 211 | All Source=すべてのソース 212 | All Files (*.*)=すべてのファイル (*.*) 213 | 214 | # Messages 215 | # Messages may contain variables such as file names or search strings indicated 216 | # by ^0 which are replaced by values before display. ^1, ^2, ... may be used in the future. 217 | Can not find the string '^0'.=文字列 '^0' が見つかりません。 218 | Find string must not be empty for 'Replace All' command.=「すべてを置換」する時は検索文字列を空にできません。 219 | Selection must not be empty for 'Replace in Selection' command.=「選択部を置換」するときは選択部を空にできません。 220 | No replacements because string '^0' was not present.= 文字列 '^0' が無かったため置換は行われませんでした。 221 | Could not open file '^0'.=ファイル '^0' を開くことができません。 222 | Could not save file '^0'.=ファイル '^0' を保存できませんでした。 223 | Save changes to '^0'?='^0' の編集結果を保存しますか? 224 | Save changes to (Untitled)?=編集結果を保存しますか? 225 | The file '^0' has been modified. Should it be reloaded?='^0' は編集されました。再読込を行いますか? 226 | Bad file.=不正なファイルです。 227 | Failed to create dialog box: ^0.=ダイアログボックスを作成できませんでした。: ^0 228 | Can not start printer document.=印刷を開始できませんでした。 229 | URI '^0' not understood.='^0' は理解できない URI です。 230 | Invalid directory '^0'.='^0' は不正なディレクトリです。 231 | 232 | # 1.42 233 | Directory:=ディレクトリ: 234 | Wrap=折り返し(&W) 235 | Hide=隠す 236 | Check if already open=すでに開いているかどうか調べる 237 | 238 | # 1.43 239 | Find string must not be empty for 'Replace in Selection' command.=「選択部を置換」するときは検索文字列を空にできません。 240 | List Macros=マクロ一覧 241 | Run Current Macro=現在のマクロを実行 242 | Record Macro=マクロの記録 243 | Stop Recording Macro=マクロ記録の中止 244 | SciTE Help=&SciTE4AutoHotkey 説明書 245 | Sc1 Help=&SciTE4AutoHotkey Lite 説明書 246 | Edit Properties=属性の編集 247 | Wrap Output=出力の折り返し(&P) 248 | 249 | # 1.44 250 | Read-Only=読み出し専用(&R) 251 | READ= 252 | 253 | # 1.46 254 | As TeX=TeX として 255 | Export File As TeX=TeX として出力 256 | Save a Copy=複製を保存(&D) 257 | 258 | # 1.47 259 | As LaTeX=LaTeX として 260 | Export File As LaTeX=LaTeX として出力 261 | Encoding=文字コード(&E) 262 | 8 Bit=&8ビット/MBCS 263 | UCS-2 Big Endian=UCS-2&BE 264 | UCS-2 Little Endian=UCS-2&LE 265 | UTF-8=&UTF-8/Bomあり 266 | 267 | # 1.49 268 | Save All=すべて保存(&A) 269 | Browse=閲覧 270 | Select a folder to search from=検索対象フォルダ 271 | UTF-8 Cookie=UTF-8/Bomなし(&C) 272 | 273 | # 1.50 274 | Insert Abbreviation=省略表現の挿入(&I) 275 | Abbreviation:=省略表現 276 | Insert=挿入 277 | Mark All=すべてに目印 278 | 279 | # 1.51 280 | In Selection= 281 | Paragraph=段落(&G) 282 | Join=結合(&J) 283 | Split=分割(&S) 284 | 285 | # 1.52 286 | Block comment variable '^0' is not defined in SciTE *.properties!=ブロック注釈用の変数 '^0' が SciTE の *.properties に存在しません。 287 | Box comment variables '^0', '^1' and '^2' are not defined in SciTE *.properties!=ボックス注釈用の変数 '^0', '^1', '^2' が SciTE の *.properties に存在しません。 288 | Stream comment variables '^0' and '^1' are not defined in SciTE *.properties!=ストリーム注釈用の変数 '^0', '^1' が SciTE の *.properties に存在しません。 289 | The file '^0' has been modified outside SciTE. Should it be reloaded?=他のソフトが '^0' を編集したようです。再読込を行いますか? 290 | As PDF=PDF として 291 | Export File As PDF=PDF として出力する 292 | 293 | # 1.53 294 | # Version, by は寄贈者一覧で使われるらしい。 295 | Version=版号 296 | by=製作: 297 | 298 | #1.54 299 | Incremental Search=インクリメンタルサーチ(&I) 300 | Search for:=検索文字列 301 | 302 | #1.55 303 | Could not save file '^0'. Save under a different name?=ファイル '^0' を保存できませんでした。別の名前で保存しますか? 304 | 305 | #1.56 306 | As XML=XML として 307 | Export File As XML=XML ファイルとして出力する 308 | 309 | #1.57 310 | Destination Line:=移動先行番号 311 | Column:=列番号 312 | 313 | #1.58 314 | Replacements:=置換数 315 | # ↓Open Files Here は何に使うのか不明。 316 | Open Files Here=ここでファイルを開く(&H) 317 | 318 | #1.59 319 | 320 | #1.60 321 | 322 | #1.61 323 | File '^0' is ^1 bytes long,\nlarger than the ^2 bytes limit set in the properties.\nDo you still want to open it?=ファイル '^0' は ^1 バイトあります。\n特性ファイルに指定された上限を ^2 バイト超えています。\n強制的にこのファイルを開きますか? 324 | Open Lua Startup Script=Lua の初期設定スクリプトを開く 325 | All Files (*)=すべてのファイル (*) 326 | Hidden Files (.*)=隠しファイル (.*) 327 | 328 | #1.62+ 329 | No wrap=折り返しなし(&N) 330 | Word wrap=空白類で折り返し(&W) 331 | Char wrap=任意の文字で折り返し(&C) -------------------------------------------------------------------------------- /source/locales/简体中文.locale.properties: -------------------------------------------------------------------------------- 1 | # locale.properties by Neil Hodgson neilh@scintilla.org 2 | # Placed in the public domain 2001 3 | 4 | # locale.properties defines the localised text for the user interface 5 | # Some definitions are commented out because they duplicate another string 6 | # The format of each line is original=localised, such as File=&Fichier 7 | # Even though the original text may have ellipses "..." and access key 8 | # indicators "&" in the user interface, these do not appear in this file 9 | # for the original texts. Translated texts should have an access key indicator 10 | # if needed as the translated text may not include the original access key. 11 | # Ellipses are automatically added when needed. 12 | # Each original text may have only one translation, even if it appears in 13 | # different parts of the user interface. 14 | 15 | # Please state any further license conditions and copyright notices you desire. 16 | # If there are no further notices then contributed translations will be assumed 17 | # to be made freely available under the same conditions as SciTE. 18 | 19 | # 2002/02/03 before 1.43 Translated by Chii Liao (廖啟邑) 20 | # 2003/11/07 1.44-1.56 Translated by Daniel Lin(daniel@twpda.com) 21 | # 2005/03/12 1.57-1.62 Translated by Edward Hsieh(edwardsayer at pchome dot com dot tw) 22 | # 2005/09/03 1.63-1.66 Translated and corrected by 龔維正 in Taipei County. 23 | # 2005/10/02 1.66 Translated and corrected by linnchord(高显华) in Shanghai China. 参考繁体版修改. 24 | # 2006/04/03 1.67-1.68 Translated and corrected by Calon Xu(calon.xu@gmail.com, http://calon.weblogs.us/) in China Mianland. Based on 1.66 traditional and simplified Chinese locale.properties. 25 | # 2007/08/21 1.69-1.74 Translated and corrected by emlvvh(emlvvh@gmail.com) in Beijing, China. Based on simplified Chinese locale.properties. 26 | translation.encoding=UTF-8 27 | 28 | # 在 GBK环境下, SciTEGlobal.properties 要作下列修改 29 | # 让倒退键运作正常 30 | # code.page=936 31 | # 我的设置是 code.page=65001,没有出现以上情况,如果您发现存在此问题,再按照如上说明修改。(by Calon) 32 | 33 | # Menus 34 | 35 | # File menu 36 | File=文件(&F) 37 | New=新建(&N) 38 | Open=打开(&O) 39 | Open Selected Filename=根据所选文件名打开(&F) 40 | Revert=返回上次保存状态(&R) 41 | Close=关闭(&C) 42 | Save=保存(&S) 43 | Save As=另存为(&A) 44 | Export=导出(&E) 45 | As HTML=为 HTML 文件(&H) 46 | As RTF=为 RTF 文件(&R) 47 | Page Setup=页面设置(&U) 48 | Print=打印(&P) 49 | Load Session=载入文件列表(&L) 50 | Save Session=保存当前文件为文件列表(&V) 51 | Exit=退出(&X) 52 | 53 | # Edit menu 54 | Edit=编辑(&E) 55 | Undo=撤销(&U) 56 | Redo=重复上次动作(&R) 57 | Cut=剪切(&T) 58 | Copy=复制(&C) 59 | Paste=粘贴(&P) 60 | Delete=删除(&D) 61 | Select All=全选(&A) 62 | Copy as RTF=复制为 RTF(&F) 63 | Match Brace=跳至对应的括号(&B) 64 | Select to Brace=选取括号内容(包含括号)(&O) 65 | Show Calltip=显示函数提示(&H) 66 | Complete Symbol=补齐符号(&Y) 67 | Complete Word=补齐文字(&W) 68 | Expand Abbreviation=展开缩略语(&E) 69 | Block Comment or Uncomment=增加/消去行首注释符(&M) 70 | Box Comment=区块首尾及行首加注释符(&X) 71 | Stream Comment=区块首尾加注释符(&N) 72 | Make Selection Uppercase=转为大写(&S) 73 | Make Selection Lowercase=转为小写(&L) 74 | 75 | # Search menu 76 | Search=搜索(&S) 77 | Find=查找(&F) 78 | Find Next=查找下一个(&N) 79 | Find Previous=查找上一个(&S) 80 | Find in Files=在文件中查找(&I) 81 | Replace=替换(&E) 82 | Next Bookmark=下一个书签(&M) 83 | Previous Bookmark=上一个书签(&V) 84 | Toggle Bookmark=设置/清除书签(&K) 85 | Clear All Bookmarks=清除所有书签(&C) 86 | 87 | # View menu 88 | View=查看(&V) 89 | Toggle current fold=折叠/展开(&C) 90 | Toggle all folds=全部折叠/展开(&A) 91 | Full Screen=全屏(&N) 92 | Tool Bar=工具栏(&T) 93 | Tab Bar=标签栏(&B) 94 | Status Bar=状态栏(&S) 95 | Whitespace=空白符(&W) 96 | End of Line=换行符(&E) 97 | Indentation Guides=缩排(&I) 98 | Line Numbers=行号(&L) 99 | Margin=书签页边列(&M) 100 | Fold Margin=折叠状态列(&F) 101 | Output=输出窗口(&O) 102 | Parameters=参数(&P) 103 | 104 | # Tools menu 105 | Tools=工具(&T) 106 | Compile=编译(&C) 107 | Build=调试(&D) 108 | Go=执行(&G) 109 | Stop Executing=中止执行(&S) 110 | Next Message=下一个消息(&N) 111 | Previous Message=上一个消息(&P) 112 | Clear Output=清除输出窗口(&O) 113 | Switch Pane=切换窗格(&S) 114 | 115 | # Options menu 116 | Options=选项(&O) 117 | Always On Top=保持在顶层(&A) 118 | Vertical Split=窗格垂直并列(&S) 119 | Line End Characters=设置换行符(&L) 120 | CR + LF=CR + LF(&+) 121 | CR=CR(&C) 122 | LF=LF(&L) 123 | Convert Line End Characters=转换换行符(&C) 124 | Change Indentation Settings=更改缩排设置(&T) 125 | Use Monospaced Font=使用等宽字体(&M) 126 | Open Local Options File=打开 Local Options 文件(&O) 127 | Open User Options File=打开 User Options 文件(&U) 128 | Open Global Options File=打开 Global Options 文件(&G) 129 | Open Abbreviations File=打开 Abbreviations 文件(&B) 130 | 131 | # Language menu 132 | Language=语言(&L) 133 | 134 | # Buffers menu 135 | Buffers=缓冲区文档(&B) 136 | Previous=上一个文档(&P) 137 | Next=下一个文档(&N) 138 | Close all=全部关闭(&C) 139 | 140 | # Help menu 141 | Help=帮助(&H) 142 | About Sc1=关于 SciTE4AutoHotkey Lite(&S) 143 | About SciTE=关于 SciTE4AutoHotkey(&A) 144 | 145 | # Dialogs 146 | 147 | # Generic dialog 148 | OK=确定 149 | Cancel=取消 150 | Yes=是 151 | No=否 152 | 153 | # About dialog 154 | About SciTE=关于 SciTE4AutoHotkey 155 | # This is to add something like: Swahili translation 1.41.1 by Neil Hodgson 156 | TranslationCredit=Chinese translation v1.43-1.74 by\n Chii Liao\n Daniel Lin\n Edward Hsieh\n Gong Weizheng\n Linnchord\n Calon Xu\n emlvvh 157 | Contributors:= 158 | 159 | # Open, Save dialogs 160 | Open File=打开文件 161 | Save File=保存文件 162 | Save File As=另存为... 163 | Export File As HTML=导出为 HTML 文件 164 | Export File As RTF=导出为 RTF 文件 165 | Save Current Session=保存当前打开的文件为文件列表 166 | Custom Filter=自定义文件类型 167 | 168 | # Find in Files dialog 169 | #Find in Files=在眾檔中尋找 170 | Find what:=输入查找字符(&N) 171 | Files:=文件(&I) 172 | #Find= 173 | 174 | # Go To dialog 175 | Go To=跳至(&G) 176 | Destination Line Number:=目的行号(&D) 177 | Current line:=当前行号 178 | Last line:=前一次行号 179 | 180 | # Indentation Settings dialog 181 | Indentation Settings=缩排设置 182 | Tab Size:=制表符宽度(&T) 183 | Indent Size:=缩进宽度(&I) 184 | Use tabs:=使用制表符(&U) 185 | 186 | # Replace and Find dialogs 187 | Replace=替换(&R) 188 | #Find= 189 | Find what:=输入查找字符(&N) 190 | Replace with:=替换为(&P) 191 | Match whole word only=全字符匹配(&W) 192 | Match case=区分大小写(&C) 193 | Regular expression=使用正则表达式(reg. exp.)(&E) 194 | Wrap around=循环查找(&O) 195 | Transform backslash expressions=使用反斜线(&B) 196 | Find Next=查找下一个(&F) 197 | Replace All=全部替换(&A) 198 | Replace in Selection=在选取文字中替换(&S) 199 | #Close= 200 | Direction=查找方向 201 | Reverse direction=反向查找 202 | Up=向上 203 | Down=向下 204 | 205 | # Parameters dialog 206 | Execute=执行 207 | Set=设置(&S) 208 | 209 | # Other UI strings 210 | Untitled=无标题 211 | 212 | # Properties used in global options 213 | Text=纯文本 214 | All Source=源代码 215 | All Files (*.*)=所有文件 (*.*) 216 | 217 | # Messages 218 | # Messages may contain variables such as file names or search strings indicated 219 | # by ^0 which are replaced by values before display. ^1, ^2, ... may be used in the future. 220 | Can not find the string '^0'.=找不到 '^0'。 221 | Find string must not be empty for 'Replace All' command.=全部替换时查找内容不能空白。 222 | Selection must not be empty for 'Replace in Selection' command.=在选取的文字中替换时一定要先选取文字。 223 | No replacements because string '^0' was not present.=没有找到字符 '^0',未完成替换。 224 | Could not open file '^0'.=无法打开 '^0'。 225 | Could not save file '^0'.=无法保存 '^0'。 226 | Save changes to '^0'?=文件已被更改,是否要保存为 '^0'? 227 | Save changes to (Untitled)?=文件已被更改,是否保存为 无标题 ? 228 | The file '^0' has been modified. Should it be reloaded?=文件 '^0'已被更改过,是否重新载入? 229 | Bad file.=损坏文件。 230 | Failed to create dialog box: ^0.=无法开启 ^0 对话框。 231 | Can not start printer document.=无法打印。 232 | URI '^0' not understood.=不能解析 '^0' URI。 233 | Invalid directory '^0'.=无效的目录/文件夹 '^0'。 234 | 235 | # 1.42 236 | Directory:=目录(&D) 237 | Wrap=自动换行(&W) 238 | Hide=隐藏(&H) 239 | Check if already open=检查文件是否已经打开(&H) 240 | 241 | # 1.43 242 | Find string must not be empty for 'Replace in Selection' command.=在选取的文字中替换时查找内容不能为空白。 243 | List Macros=列出所有宏 244 | Run Current Macro=执行当前宏 245 | Record Macro=录制宏 246 | Stop Recording Macro=停止录制宏 247 | SciTE4AutoHotkey Help=SciTE4AutoHotkey 文档(&S) 248 | Sci4AutoHotkey Lite Help=SciTE4AutoHotkey Lite 帮助 249 | Edit Properties=编辑选项 250 | Wrap Output=输出时自动换行(&P) 251 | 252 | # 1.44 253 | Read-Only=只读(&R) 254 | READ=读入 255 | 256 | # 1.46 257 | As TeX=为 TeX 文件 258 | Export File As TeX=导出为 Tex 文件 259 | Save a Copy=保存副本(&P) 260 | 261 | # 1.47 262 | As LaTeX=为 LaTeX 文件(&L) 263 | Export File As LaTeX=导出为 TeX 文件 264 | Encoding=编码 265 | 8 Bit=8位元 266 | UCS-2 Big Endian= 267 | UCS-2 Little Endian= 268 | UTF-8= 269 | 270 | # 1.49 271 | Save All=全部保存(&S) 272 | Browse=浏览(&B) 273 | Select a folder to search from=选择要查找的目录/文件夹 274 | UTF-8 Cookie= 275 | 276 | # 1.50 277 | Insert Abbreviation=插入缩略语(&I) 278 | Abbreviation:=缩略语: 279 | Insert=插入 280 | Mark All=标记搜索结果(&M) 281 | 282 | # 1.51 283 | In Selection=在选定区域 284 | Paragraph=段落(&G) 285 | Join=合并(&J) 286 | Split=分割(&S) 287 | 288 | # 1.52 289 | Block comment variable '^0' is not defined in SciTE *.properties!=行首的注释符号 '^0' 没有在 SciTE *.properties 中定义! 290 | Box comment variables '^0', '^1' and '^2' are not defined in SciTE *.properties!=区块首尾和其中各行首的注释符号 '^0' 、 '^1' 、 '^2' 没有在 SciTE *.properties 中定义! 291 | Stream comment variables '^0' and '^1' are not defined in SciTE *.properties!=区块首尾的注释符号 '^0' 及 '^1' 没有在 SciTE *.properties 中定义! 292 | The file '^0' has been modified outside SciTE. Should it be reloaded?=文件 '^0' 已经被其他程序修改过,是否要重新载入? 293 | As PDF=为 PDF 文件(&P) 294 | Export File As PDF=导出为 PDF 文件 295 | 296 | # 1.53 297 | Version= 298 | by= 299 | 300 | #1.54 301 | Incremental Search=即输即查(&L) 302 | Search for:=即输即查 303 | 304 | #1.55 305 | Could not save file '^0'. Save under a different name?=无法保存 '^0' 文件,是否更名另存? 306 | 307 | #1.56 308 | As XML=为 XML 文件(&X) 309 | Export File As XML=导出为 XML 文件 310 | 311 | #1.57 312 | Destination Line:=目的行(&D) 313 | Column:=目的栏(&C) 314 | 315 | #1.58 316 | Replacements:=替换: 317 | Open Files Here=在此打开文件(&H) 318 | 319 | #1.59 320 | 321 | #1.60 322 | 323 | #1.61 324 | File '^0' is ^1 bytes long,\nlarger than the ^2 bytes limit set in the properties.\nDo you still want to open it?=文件 '^0' 的长度为 ^1 字节,\n超过了 properties 文件中\n ^2 字节的限制,您仍要打开\n它吗? 325 | Open Lua Startup Script=打开 Lua Startup Script 326 | All Files (*)=所有文件(*) 327 | Hidden Files (.*)=隐藏文件(.*) 328 | 329 | #1.62 330 | Show hidden files=显示隐藏文件 331 | 332 | #1.63 333 | Replace in Buffers=在缓冲区中替换(&U) 334 | Find string must not be empty for 'Replace in Buffers' command.=在缓冲区中替换时查找内容不能为空。 335 | Search only in this style:=仅以此样式查找: 336 | 337 | #1.67 338 | Duplicate=重复当前行(&D) 339 | 340 | #1.72 341 | Convert=转换(&C) 342 | 343 | #1.73 344 | Code Page Property=系统内码 345 | UTF-8 with BOM=带 BOM 的 UTF-8 346 | Open Directory Options File=打开 Directory Options 文件(&D) -------------------------------------------------------------------------------- /source/locales/한국어.locale.properties: -------------------------------------------------------------------------------- 1 | # 한국어.locale.properties by joyfuI (http://joyfui.wo.tc/) 2 | 3 | # locale.properties defines the localised text for the user interface 4 | # Some definitions are commented out because they duplicate another string 5 | # The format of each line is original=localised, such as File=&Fichier 6 | # Even though the original text may have ellipses "..." and access key 7 | # indicators "&" in the user interface, these do not appear in this file 8 | # for the original texts. Translated texts should have an access key indicator 9 | # if needed as the translated text may not include the original access key. 10 | # Ellipses are automatically added when needed. 11 | # The "/" character should not be used in menu entries as on GTK+ the "/" is 12 | # used to specifiy the menu hierarchy and so will produce extra menu items. 13 | # Each original text may have only one translation, even if it appears in 14 | # different parts of the user interface. 15 | 16 | # Please state any further license conditions and copyright notices you desire. 17 | # If there are no further notices then contributed translations will be assumed 18 | # to be made freely available under the same conditions as SciTE. 19 | # Email addresses included in this file may attract spam if the file is published. 20 | 21 | # Define the encoding of this file so that on GTK+ 2, the file can be 22 | # reencoded as UTF-8 as that is the GTK+ 2 user interface encoding. 23 | # A common choice for European users is LATIN1. For other locales look at 24 | # the set of encodings supported by iconv. 25 | translation.encoding=UTF-8 26 | 27 | # Menus 28 | 29 | # File menu 30 | File=파일(&F) 31 | New=새로 만들기(&N) 32 | Open=열기(&O) 33 | Open Selected Filename=선택된 파일 이름 열기(&F) 34 | Revert=다시 읽기(&R) 35 | Close=닫기(&W) 36 | Save=저장(&S) 37 | Save As=다른 이름으로 저장(&A) 38 | Export=내보내기(&E) 39 | As HTML=HTML 내보내기(&H) 40 | As RTF=RTF 내보내기(&R) 41 | Page Setup=페이지 설정(&U) 42 | Print=인쇄(&P) 43 | Load Session=세션 읽기(&L) 44 | Save Session=세션 저장(&V) 45 | Exit=종료(&X) 46 | 47 | # Edit menu 48 | Edit=편집(&E) 49 | Undo=실행 취소(&U) 50 | Redo=다시 실행(&R) 51 | Cut=잘라내기(&T) 52 | Copy=복사(&C) 53 | Paste=붙여넣기(&P) 54 | Delete=삭제(&D) 55 | Select All=모두 선택(&A) 56 | Copy as RTF=RTF로 복사(&F) 57 | Match Brace=괄호짝 찾기(&B) 58 | Select to Brace=괄호 영역 선택(&O) 59 | Show Calltip= 60 | Complete Symbol= 61 | Complete Word=단어 완성(&W) 62 | Expand Abbreviation=약어 확장(&E) 63 | Block Comment or Uncomment=행 주석/해제(&M) 64 | Box Comment=구역 주석(&X) 65 | Stream Comment=선택영역 주석(&N) 66 | Make Selection Uppercase=대문자로(&S) 67 | Make Selection Lowercase=소문자로(&L) 68 | 69 | # Search menu 70 | Search=찾기(&S) 71 | Find=찾기(&F) 72 | Find Next=다음 찾기(&N) 73 | Find Previous=이전 찾기(&S) 74 | Find in Files=파일에서 찾기(&I) 75 | Replace=바꾸기(&E) 76 | Next Bookmark=다음 책갈피로(&M) 77 | Previous Bookmark=이전 책갈피로(&V) 78 | Toggle Bookmark=책갈피 설정/해제(&K) 79 | Clear All Bookmarks=모든 책갈피 제거(&C) 80 | 81 | # View menu 82 | View=보기(&V) 83 | Toggle current fold=현재 폴드 전환(&C) 84 | Toggle all folds=모든 폴드 전환(&A) 85 | Full Screen=전체 화면(&N) 86 | Tool Bar=도구 모음(&T) 87 | Tab Bar=탭 표시줄(&B) 88 | Status Bar=상태 표시줄(&S) 89 | Whitespace=공백 표시(&W) 90 | End of Line=개행 문자 표시(&E) 91 | Indentation Guides=들여쓰기 가이드(&I) 92 | Line Numbers=줄 번호(&L) 93 | Margin=여백(&M) 94 | Fold Margin=폴딩(&F) 95 | Output=출력(&O) 96 | Parameters=매개 변수(&P) 97 | 98 | # Tools menu 99 | Tools=도구(&T) 100 | Compile=컴파일(&C) 101 | Build=디버깅(&D) 102 | Go=실행(&G) 103 | Stop Executing=실행 중지(&S) 104 | Next Message=다음 메시지(&N) 105 | Previous Message=이전 메시지(&P) 106 | Clear Output=출력 비우기(&O) 107 | Switch Pane=스위치 창(&S) 108 | 109 | # Options menu 110 | Options=옵션(&O) 111 | Always On Top=항상 맨 위(&A) 112 | Vertical Split=수직 분할(&S) 113 | Line End Characters=개행 형식(&L) 114 | CR + LF=CR + LF (윈도우즈)(&+) 115 | CR=CR (맥)(&C) 116 | LF=LF (유닉스)(&L) 117 | Convert Line End Characters=개행 형식 변환(&C) 118 | Change Indentation Settings=들여쓰기 설정(&T) 119 | Use Monospaced Font=고정폭 글꼴 사용(&M) 120 | Open Local Options File=로컬 옵션 파일 열기(&O) 121 | Open User Options File=유저 옵션 파일 열기(&U) 122 | Open Global Options File=글로벌 옵션 파일 열기(&G) 123 | Open Abbreviations File=약어 파일 열기(&B) 124 | 125 | # Language menu 126 | Language=문법 강조(&L) 127 | 128 | # Buffers menu 129 | Buffers=창(&B) 130 | Previous=이전 창(&P) 131 | Next=다음 창(&N) 132 | Close All=모두 닫기(&C) 133 | 134 | # Help menu 135 | Help=도움말(&H) 136 | About SciTE4AutoHotkey Lite=SciTE4AutoHotkey Lite 정보(&A) 137 | About SciTE4AutoHotkey=SciTE4AutoHotkey 정보(&A) 138 | 139 | # Dialogs 140 | 141 | # Generic dialog 142 | OK=확인 143 | Cancel=취소 144 | Yes=예 145 | No=아니오 146 | 147 | # About dialog 148 | About SciTE=SciTE4AutoHotkey에 대하여... 149 | # This is to add something like: Swahili translation 1.41.1 by Neil Hodgson 150 | TranslationCredit=한국어 번역:\n joyfuI (http://joyfui.wo.tc/) 151 | Contributors:=도움을 주신 분들: 152 | 153 | # Open, Save dialogs 154 | Open File=열기 155 | Save File=저장 156 | Save File As=다른 이름으로 저장 157 | Export File As HTML=HTML로 내보내기 158 | Export File As RTF=RTF로 내보내기 159 | Save Current Session=현재 세션을 저장 160 | Custom Filter=사용자 정의 필터 161 | 162 | # Find in Files dialog 163 | #Find in Files= 164 | Find what:=찾을내용(&N): 165 | Files:=파일(&I): 166 | #Find= 167 | 168 | # Go To dialog 169 | Go To=이동(&G) 170 | Destination Line Number:=대상 행: 171 | Current line:=현재 행: 172 | Last line:=마지막 행: 173 | 174 | # Indentation Settings dialog 175 | Indentation Settings=들여쓰기 설정 176 | Tab Size:=탭 크기(&T) 177 | Indent Size:=들여쓰기 크기(&I) 178 | Use tabs:=탭 사용(&U) 179 | 180 | # Replace and Find dialogs 181 | #Replace= 182 | #Find= 183 | #Find what:= 184 | Replace with:=바꿀내용(&P): 185 | Match whole word only=완전히 일치하는 단어(&W) 186 | Match case=대/소문자 구분(&C) 187 | Regular expression=정규식 검색(&E) 188 | Wrap around=처음부터 검색(&O) 189 | Transform backslash expressions=백슬래시 변환(&B) 190 | #Find Next= 191 | Replace All=모두 바꾸기(&A) 192 | Replace in Selection=선택 내에서만(&S) 193 | #Close= 194 | Direction=방향 195 | Reverse direction=역방향 196 | Up=위로(&U) 197 | Down=아래로(&D) 198 | 199 | # Parameters dialog 200 | Execute=실행 201 | Set=설정(&S) 202 | 203 | # Other UI strings 204 | Untitled=제목 없음 205 | 206 | # Properties used in global options 207 | Text=텍스트 208 | All Source=모든 소스 209 | All Files (*.*)=모든 파일 (*.*) 210 | 211 | # Messages 212 | # Messages may contain variables such as file names or search strings indicated 213 | # by ^0 which are replaced by values before display. ^1, ^2, ... may be used in the future. 214 | Can not find the string '^0'.=지정된 문자열을 찾을 수 없습니다. '^0' 215 | Find string must not be empty for 'Replace All' command.=찾을 내용을 지정하십시오. 216 | Selection must not be empty for 'Replace in Selection' command.=범위를 선택하십시오. 217 | No replacements because string '^0' was not present.='^0'을(를) 찾을 수 없기 때문에 아무것도 변경되지 않았습니다. 218 | Could not open file '^0'.='^0'을(를) 열 수 없습니다. 219 | Could not save file '^0'.='^0'을(를) 저장할 수 없습니다. 220 | Save changes to '^0'?=변경 내용을 '^0'에 저장하시겠습니까? 221 | Save changes to (Untitled)?=변경 내용을 '제목 없음'에 저장하시겠습니까? 222 | The file '^0' has been modified. Should it be reloaded?='^0'이(가) 수정되었습니다. 다시 읽겠습니까? 223 | Bad file.=잘못된 파일입니다. 224 | Failed to create dialog box: ^0.=대화 상자를 만들 수 없습니다: ^0 225 | Can not start printer document.=인쇄를 시작할 수 없습니다. 226 | URI '^0' not understood.='^0' 이해할 수 없는 URI입니다. 227 | Invalid directory '^0'.=잘못된 디렉토리 '^0' 228 | 229 | # 1.42 230 | Directory:=디렉토리(&D): 231 | Wrap=자동 줄 바꿈(&W) 232 | Hide=숨기기(&H) 233 | Check if already open=이미 열려 있는지 확인(&H) 234 | 235 | # 1.43 236 | Find string must not be empty for 'Replace in Selection' command.='선택 내에서만 바꾸기'할 때 찾을내용을 비워 둘 수 없습니다. 237 | List Macros=매크로 목록(&L) 238 | Run Current Macro=매크로 실행(&M) 239 | Record Macro=매크로 기록(&R) 240 | Stop Recording Macro=매크로 기록 중지(&T) 241 | SciTE Help=SciTE4AutoHotkey 도움말(&S) 242 | Sc1 Help=SciTE4AutoHotkey Lite 도움말(&S) 243 | Edit Properties=편집 옵션 244 | Wrap Output= 245 | 246 | # 1.44 247 | Read-Only=읽기 전용(&R) 248 | READ= 249 | 250 | # 1.46 251 | As TeX=TeX 내보내기(&T) 252 | Export File As TeX=TeX로 내보내기 253 | Save a Copy=클립보드에 저장(&P) 254 | 255 | # 1.47 256 | As LaTeX=LaTeX 내보내기(&L) 257 | Export File As LaTeX=LaTeX로 내보내기 258 | Encoding=인코딩(&G) 259 | 8 Bit= 260 | UTF-8=UTF-8(&U) 261 | 262 | # 1.49 263 | Save All=모두 저장(&S) 264 | Browse=찾아보기(&B) 265 | Select a folder to search from=검색 대상 폴더 266 | UTF-8 Cookie= 267 | 268 | # 1.50 269 | Insert Abbreviation=약어 삽입(&I) 270 | Abbreviation:=약어: 271 | Insert삽입= 272 | Mark All=모두 표시(&M) 273 | 274 | # 1.51 275 | In Selection= 276 | Paragraph=줄(&G) 277 | Join=줄 합치기(&J) 278 | Split=줄 나누기(&S) 279 | 280 | # 1.52 281 | Block comment variable '^0' is not defined in SciTE *.properties!= 282 | Box comment variables '^0', '^1' and '^2' are not defined in SciTE *.properties!= 283 | Stream comment variables '^0' and '^1' are not defined in SciTE *.properties!= 284 | The file '^0' has been modified outside SciTE. Should it be reloaded?= 285 | As PDF=PDF 내보내기(&P) 286 | Export File As PDF=PDF로 내보내기 287 | 288 | # 1.53 289 | Version=버전: 290 | by=제작: 291 | 292 | #1.54 293 | Incremental Search=증분 검색(&L) 294 | Search for:=검색 문자열: 295 | 296 | #1.55 297 | Could not save file '^0'. Save under a different name?=파일 '^0'을(를 저장할 수 없습니다. 다른 이름으로 저장하시겠습니까? 298 | 299 | #1.56 300 | As XML=XML 내보내기(&X) 301 | Export File As XML=XML로 내보내기 302 | 303 | #1.57 304 | Destination Line:=행(&D): 305 | Column:=열(&C): 306 | 307 | #1.58 308 | Replacements:=교체: 309 | Open Files Here= 310 | 311 | #1.59 312 | 313 | #1.60 314 | 315 | #1.61 316 | File '^0' is ^1 bytes long,\nlarger than the ^2 bytes limit set in the properties.\nDo you still want to open it?= 317 | Open Lua Startup Script=Lua 초기화 스크립트 열기 318 | All Files (*)=모든 파일 (*) 319 | Hidden Files (.*)=숨김 파일 (.*) 320 | 321 | #1.62 322 | Show hidden files= 323 | 324 | #1.63 325 | Replace in Buffers=파일에서 바꾸기(&U) 326 | Find string must not be empty for 'Replace in Buffers' command.=Find string must not be empty for 'Replace in Files' command. 327 | Search only in this style:= 328 | 329 | #1.67 330 | Duplicate=복제(&D) 331 | 332 | #1.72 333 | Convert=적용(&C) 334 | 335 | #1.73 336 | Code Page Property=코드 페이지 속성(&C) 337 | UTF-8 with BOM=UTF-8 with BOM(&W) 338 | Open Directory Options File=Open per-project properties(&D) 339 | 340 | #1.77 341 | File '^0' is already open in another buffer.=File '^0' is already open. 342 | 343 | # 2.10 344 | UTF-16 Big Endian=UTF-16 Big Endian(&B) 345 | UTF-16 Little Endian=UTF-16 Little Endian(&L) 346 | 347 | # 2.12 348 | The file '^0' has been modified outside SciTE. Should it be saved?= 349 | Copy Path=경로 복사(&H) 350 | in= 351 | of= 352 | 353 | # 2.20 354 | Find:=찾기(&N): 355 | Replace:=바꾸기(&E): 356 | 357 | # 2.21 358 | Use tabs= 359 | Case sensitive= 360 | -------------------------------------------------------------------------------- /source/lua.properties: -------------------------------------------------------------------------------- 1 | # SciTE settings for Lua files 2 | # 3 | # Do NOT edit this file! 4 | # If there is something here you want to change, go to Options > Open User properties, 5 | # copy the setting there and change it. If you instead want to delete a setting, just 6 | # write an analogous line in the User properties that sets it to blank. 7 | # 8 | 9 | file.patterns.lua=*.lua 10 | language.menu.lua=&Lua|lua|| 11 | filter.lua=Lua scripts (*.lua)|*.lua| 12 | lexer.$(file.patterns.lua)=lua 13 | 14 | word.chars.lua=$(chars.alpha)$(chars.numeric)$(chars.accented)_% 15 | word.characters.$(file.patterns.lua)=$(word.chars.lua) 16 | 17 | keywordclass.lua=and break do else elseif end false for function if \ 18 | in local nil not or repeat return then true until while 19 | keywords.$(file.patterns.lua)=$(keywordclass.lua) 20 | 21 | keywordclass2.lua=_VERSION assert collectgarbage dofile error gcinfo loadfile loadstring \ 22 | print rawget rawset require tonumber tostring type unpack 23 | 24 | keywordclass2.lua4=_ALERT _ERRORMESSAGE _INPUT _PROMPT _OUTPUT \ 25 | _STDERR _STDIN _STDOUT call dostring foreach foreachi getn globals newtype \ 26 | sort tinsert tremove 27 | 28 | keywordclass3.lua4=abs acos asin atan atan2 ceil cos deg exp \ 29 | floor format frexp gsub ldexp log log10 max min mod rad random randomseed \ 30 | sin sqrt strbyte strchar strfind strlen strlower strrep strsub strupper tan 31 | 32 | keywordclass4.lua4=openfile closefile readfrom writeto appendto \ 33 | remove rename flush seek tmpfile tmpname read write \ 34 | clock date difftime execute exit getenv setlocale time 35 | 36 | keywordclass2.lua5=_G getfenv getmetatable ipairs loadlib next pairs pcall \ 37 | rawequal setfenv setmetatable xpcall \ 38 | string table math coroutine io os debug \ 39 | load module select 40 | 41 | keywordclass3.lua5=string.byte string.char string.dump string.find string.len \ 42 | string.lower string.rep string.sub string.upper string.format string.gfind string.gsub \ 43 | table.concat table.foreach table.foreachi table.getn table.sort table.insert table.remove table.setn \ 44 | math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.deg math.exp \ 45 | math.floor math.frexp math.ldexp math.log math.log10 math.max math.min math.mod \ 46 | math.pi math.pow math.rad math.random math.randomseed math.sin math.sqrt math.tan \ 47 | string.gmatch string.match string.reverse table.maxn \ 48 | math.cosh math.fmod math.modf math.sinh math.tanh math.huge 49 | 50 | keywordclass4.lua5=coroutine.create coroutine.resume coroutine.status \ 51 | coroutine.wrap coroutine.yield \ 52 | io.close io.flush io.input io.lines io.open io.output io.read io.tmpfile io.type io.write \ 53 | io.stdin io.stdout io.stderr \ 54 | os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename \ 55 | os.setlocale os.time os.tmpname \ 56 | coroutine.running package.cpath package.loaded package.loadlib package.path \ 57 | package.preload package.seeall io.popen 58 | 59 | keywords2.$(file.patterns.lua)=$(keywordclass2.lua) $(keywordclass2.lua4) $(keywordclass2.lua5) 60 | keywords3.$(file.patterns.lua)=$(keywordclass3.lua4) $(keywordclass3.lua5) 61 | keywords4.$(file.patterns.lua)=$(keywordclass4.lua4) $(keywordclass4.lua5) 62 | 63 | statement.indent.$(file.patterns.lua)=5 do else function then 64 | statement.end.$(file.patterns.lua)=5 end 65 | #statement.lookback.$(file.patterns.lua)=20 66 | indent.maintain.$(file.patterns.lua)=1 67 | 68 | comment.block.lua=--~ 69 | comment.block.at.line.start.lua=1 70 | 71 | # Lua styles 72 | 73 | # White space: Visible only in View Whitespace mode (or if it has a back colour) 74 | style.lua.0=$(s4ahk.style.default) 75 | # Block comment (Lua 5.0) 76 | style.lua.1=$(s4ahk.style.comment.block) 77 | # Line comment 78 | style.lua.2=$(s4ahk.style.comment.line) 79 | # Doc comment -- Not used in Lua (yet?) 80 | style.lua.3=$(s4ahk.style.comment.block) 81 | # Number 82 | style.lua.4=$(s4ahk.style.number) 83 | # Keyword (mostly control-flow) 84 | style.lua.5=$(s4ahk.style.flow) 85 | # (Double quoted) String 86 | style.lua.6=$(s4ahk.style.string) 87 | # Character (Single quoted string) 88 | style.lua.7=$(s4ahk.style.string) 89 | # [[Literal string]] 90 | style.lua.8=$(s4ahk.style.string) 91 | # Preprocessor (obsolete in Lua 4.0 and up) 92 | style.lua.9=$(s4ahk.style.directive) 93 | # Operators 94 | style.lua.10=$(s4ahk.style.operator) 95 | # Identifier (everything else...) 96 | style.lua.11=$(s4ahk.style.ident.top) 97 | # End of line where string is not closed 98 | style.lua.12=$(s4ahk.style.error) 99 | # Other keywords 100 | style.lua.13=$(s4ahk.style.known.func) 101 | style.lua.14=$(s4ahk.style.known.func) 102 | style.lua.15=$(s4ahk.style.known.func) 103 | style.lua.16=$(s4ahk.style.known.func) 104 | style.lua.17=$(s4ahk.style.known.func) 105 | style.lua.18=$(s4ahk.style.known.func) 106 | style.lua.19=$(s4ahk.style.known.func) 107 | # Braces are only matched in operator style 108 | braces.lua.style=10 109 | -------------------------------------------------------------------------------- /source/newuser/AhkAbbrevs.properties: -------------------------------------------------------------------------------- 1 | # User abbreviations file for SciTE4AutoHotkey 2 | # 3 | # You are encouraged to edit this file! 4 | # 5 | 6 | newfunc=|(){\n} 7 | -------------------------------------------------------------------------------- /source/newuser/Autorun.ahk: -------------------------------------------------------------------------------- 1 | ; SciTE4AutoHotkey v3 user autorun script 2 | ; 3 | ; You are encouraged to edit this script! 4 | ; 5 | 6 | #NoEnv 7 | #NoTrayIcon 8 | SetWorkingDir, %A_ScriptDir% 9 | -------------------------------------------------------------------------------- /source/newuser/Macros/Create new class.macro: -------------------------------------------------------------------------------- 1 | 2170;0IS;0;class Name\n{\n} 2 | 2302;0II;0;0 3 | 2302;0II;0;0 4 | 2306;0II;0;0 5 | 2306;0II;0;0 6 | 2306;0II;0;0 7 | 2306;0II;0;0 8 | 2306;0II;0;0 9 | 2307;0II;0;0 10 | 2307;0II;0;0 11 | 2307;0II;0;0 12 | 2307;0II;0;0 -------------------------------------------------------------------------------- /source/newuser/Macros/Create new function.macro: -------------------------------------------------------------------------------- 1 | 2170;0IS;0;function_name()\n{\n} 2 | 2304;0II;0;0 3 | 2302;0II;0;0 4 | 2302;0II;0;0 5 | 2307;0II;0;0 6 | 2307;0II;0;0 7 | 2307;0II;0;0 8 | 2307;0II;0;0 9 | 2307;0II;0;0 10 | 2307;0II;0;0 11 | 2307;0II;0;0 12 | 2307;0II;0;0 13 | 2307;0II;0;0 14 | 2307;0II;0;0 15 | 2307;0II;0;0 16 | 2307;0II;0;0 17 | 2307;0II;0;0 -------------------------------------------------------------------------------- /source/newuser/Macros/If statement.macro: -------------------------------------------------------------------------------- 1 | 2170;0IS;0;if \n{\n} 2 | 2304;0II;0;0 3 | 2302;0II;0;0 4 | 2302;0II;0;0 5 | 2306;0II;0;0 6 | 2306;0II;0;0 7 | 2306;0II;0;0 -------------------------------------------------------------------------------- /source/newuser/SciTEUser.properties: -------------------------------------------------------------------------------- 1 | # User initialization file for SciTE4AutoHotkey 2 | # 3 | # You are encouraged to edit this file! 4 | # 5 | 6 | # Import the platform-specific settings 7 | import _platform 8 | 9 | # Import the settings that can be edited by the bundled properties editor 10 | import _config 11 | 12 | # Add here your own settings 13 | -------------------------------------------------------------------------------- /source/newuser/Scriptlets/(Example) Run or activate Notepad.scriptlet: -------------------------------------------------------------------------------- 1 | ; Run or activate Notepad 2 | ; Works with any Windows version 3 | ; (uses window classes instead of 4 | ; windows title). 5 | IfWinNotExist, ahk_class Notepad 6 | Run, notepad.exe 7 | WinWait, ahk_class Notepad 8 | WinActivate -------------------------------------------------------------------------------- /source/newuser/Scriptlets/Progress text.scriptlet: -------------------------------------------------------------------------------- 1 | Progress, m2 b zh0, Text here -------------------------------------------------------------------------------- /source/newuser/Styles/Blank.style.properties: -------------------------------------------------------------------------------- 1 | # SciTE4AutoHotkey syntax highlighting style definition file 2 | # Blank style 3 | # 4 | s4ahk.style=2 5 | 6 | # Base style (inherited by all others) 7 | s4ahk.style.base=back:#FFFFFF,fore:#000000 8 | 9 | # Default (whitespace, unrecognised text) 10 | s4ahk.style.default= 11 | # Syntax error 12 | s4ahk.style.error= 13 | # Line comment (; syntax) 14 | s4ahk.style.comment.line= 15 | # Block comment (/*...*/ syntax) 16 | s4ahk.style.comment.block= 17 | # Directive (e.g. #HotIf) 18 | s4ahk.style.directive= 19 | # Label and hotkey 20 | s4ahk.style.label= 21 | # Control flow statement 22 | s4ahk.style.flow= 23 | # Number 24 | s4ahk.style.number= 25 | # String 26 | s4ahk.style.string= 27 | # Escape sequence (e.g. `n) 28 | s4ahk.style.escape= 29 | # Operator 30 | s4ahk.style.operator= 31 | # Identifier (v1: %variable% dereference) 32 | s4ahk.style.ident.top= 33 | # Object syntax identifier (v2 only) 34 | s4ahk.style.ident.obj= 35 | # Reserved word or operator 36 | s4ahk.style.ident.reserved= 37 | # Known variable (v1: Built-in variable) 38 | s4ahk.style.known.var= 39 | # Known function (v1: Command) 40 | s4ahk.style.known.func= 41 | # Known class (v1: Built-in function) 42 | s4ahk.style.known.class= 43 | # Known object property (v2 only) 44 | s4ahk.style.known.obj.prop= 45 | # Known object method (v2 only) 46 | s4ahk.style.known.obj.method= 47 | -------------------------------------------------------------------------------- /source/newuser/Styles/SciTE4AutoHotkey Dark.style.properties: -------------------------------------------------------------------------------- 1 | # SciTE4AutoHotkey syntax highlighting style definition file 2 | # Dark style 3 | # 4 | s4ahk.style=2 5 | 6 | # Base style (inherited by all others) 7 | s4ahk.style.base=back:#121212,fore:#FFFFFF 8 | 9 | # Default (whitespace, unrecognised text) 10 | s4ahk.style.default= 11 | # Syntax error 12 | s4ahk.style.error=fore:#FFD0D0,back:#800000 13 | # Line comment (; syntax) 14 | s4ahk.style.comment.line=fore:#40D080,italics 15 | # Block comment (/*...*/ syntax) 16 | s4ahk.style.comment.block=fore:#A0E0A0,italics 17 | # Directive (e.g. #HotIf) 18 | s4ahk.style.directive=fore:#F04020,bold 19 | # Label and hotkey 20 | s4ahk.style.label=fore:#E0E0E0,bold 21 | # Control flow statement 22 | s4ahk.style.flow=fore:#8080E0,bold 23 | # Number 24 | s4ahk.style.number=fore:#A0A0FF 25 | # String 26 | s4ahk.style.string=fore:#FFA0A0 27 | # Escape sequence (e.g. `n) 28 | s4ahk.style.escape=fore:#FF8000,bold 29 | # Operator 30 | s4ahk.style.operator=fore:#C0FFC0 31 | # Identifier (v1: %variable% dereference) 32 | s4ahk.style.ident.top= 33 | # Object syntax identifier (v2 only) 34 | s4ahk.style.ident.obj=fore:#B0B0B0 35 | # Reserved word or operator 36 | s4ahk.style.ident.reserved=fore:#00FFFF 37 | # Known variable (v1: Built-in variable) 38 | s4ahk.style.known.var=fore:#FF80FF 39 | # Known function (v1: Command) 40 | s4ahk.style.known.func=fore:#40A0E0,bold 41 | # Known class (v1: Built-in function) 42 | s4ahk.style.known.class=fore:#80E0FF,bold 43 | # Known object property (v2 only) 44 | s4ahk.style.known.obj.prop=fore:#FFB0FF 45 | # Known object method (v2 only) 46 | s4ahk.style.known.obj.method=fore:#70D0FF 47 | 48 | #------------------------------------------------------------------------------ 49 | 50 | # Extra customisations 51 | caret.fore=#FFFFFF 52 | selection.back=#FFFFFF38 53 | highlight.current.word.indicator=style:roundbox,colour:#FFFFFF 54 | fold.margin.colour=#121212 55 | fold.margin.highlight.colour=#204020 56 | 57 | # Line number 58 | style.*.33=fore:#AAFFAA,back:#204020 59 | # Brace highlight 60 | style.*.34=fore:#FFFF00,bold 61 | # Brace incomplete highlight 62 | style.*.35=fore:#FF8080,bold 63 | # Control characters 64 | style.*.36=back:#00FF80 65 | # Indentation guides 66 | style.*.37=fore:#000000,back:#FFFFFF 67 | -------------------------------------------------------------------------------- /source/newuser/Styles/SciTE4AutoHotkey Light.style.properties: -------------------------------------------------------------------------------- 1 | # SciTE4AutoHotkey syntax highlighting style definition file 2 | # Light style 3 | # 4 | s4ahk.style=2 5 | 6 | # Base style (inherited by all others) 7 | s4ahk.style.base=back:#FFFFFF,fore:#000000 8 | 9 | # Default (whitespace, unrecognised text) 10 | s4ahk.style.default= 11 | # Syntax error 12 | s4ahk.style.error=fore:#800000,back:#FFD0D0 13 | # Line comment (; syntax) 14 | s4ahk.style.comment.line=fore:#008000,italics 15 | # Block comment (/*...*/ syntax) 16 | s4ahk.style.comment.block=fore:#305030,italics 17 | # Directive (e.g. #HotIf) 18 | s4ahk.style.directive=fore:#F04020,bold 19 | # Label and hotkey 20 | s4ahk.style.label=fore:#202020,bold 21 | # Control flow statement 22 | s4ahk.style.flow=fore:#6F008A,bold 23 | # Number 24 | s4ahk.style.number=fore:#305080 25 | # String 26 | s4ahk.style.string=fore:#A03030 27 | # Escape sequence (e.g. `n) 28 | s4ahk.style.escape=fore:#FF8000,bold 29 | # Operator 30 | s4ahk.style.operator=fore:#206020 31 | # Identifier (v1: %variable% dereference) 32 | s4ahk.style.ident.top= 33 | # Object syntax identifier (v2 only) 34 | s4ahk.style.ident.obj=fore:#606060 35 | # Reserved word or operator 36 | s4ahk.style.ident.reserved=fore:#0000FF 37 | # Known variable (v1: Built-in variable) 38 | s4ahk.style.known.var=fore:#C000C0 39 | # Known function (v1: Command) 40 | s4ahk.style.known.func=fore:#004080,bold 41 | # Known class (v1: Built-in function) 42 | s4ahk.style.known.class=fore:#107080,bold 43 | # Known object property (v2 only) 44 | s4ahk.style.known.obj.prop=fore:#D040D0 45 | # Known object method (v2 only) 46 | s4ahk.style.known.obj.method=fore:#2060D0 47 | 48 | #------------------------------------------------------------------------------ 49 | 50 | # Extra customisations 51 | caret.fore=#000000 52 | selection.back=#00000028 53 | highlight.current.word.indicator=style:roundbox,colour:#008080 54 | fold.margin.colour=#CCDDCC 55 | fold.margin.highlight.colour=#FFFFFF 56 | 57 | # Line number 58 | style.*.33=fore:#204020,back:#CCDDCC 59 | -------------------------------------------------------------------------------- /source/newuser/UserLuaScript.lua: -------------------------------------------------------------------------------- 1 | -- UserLuaScript.lua 2 | -- ================= 3 | 4 | -- This file contains user-defined Lua functions 5 | -- You are encouraged to add your own custom functions here! 6 | -------------------------------------------------------------------------------- /source/newuser/UserToolbar.properties: -------------------------------------------------------------------------------- 1 | ; SciTE4AutoHotkey toolbar user settings file 2 | ; 3 | ; You are encouraged to edit this file! 4 | ; 5 | 6 | ; Tool definitions are in the following format: 7 | ; =Tool Name|Command line|Hotkey (optional)|Icon (optional) 8 | ; Paths support the following variables: 9 | ; %FILENAME% represents the filename of the current script 10 | ; %FILEPATH% represents the path to the current script 11 | ; %FULLFILENAME% represents the path and filename of the current script 12 | ; %SCITEDIR% represents the directory where SciTE resides 13 | ; %USERDIR% represents the user SciTE directory (My Documents\AutoHotkey\SciTE) 14 | ; %PLATFORM% represents the active platform 15 | ; %LOCALAHK% is the path of SciTE4AutoHotkey's internal copy of AutoHotkey.exe 16 | ; %AUTOHOTKEY% is the path of AutoHotkey.exe 17 | ; %ICONRES% is the toolbar icon library 18 | ; Use - or -- to add separators. 19 | 20 | ; Place here your tools 21 | 22 | ; Place here your scriptlets (required by the Scriptlet Utility) 23 | =Scriptlet: (Example) Run or activate Notepad|%LOCALAHK% tools\SUtility.ahk /insert "(Example) Run or activate Notepad"||%ICONRES%,12 24 | =Scriptlet: Progress text|%LOCALAHK% tools\SUtility.ahk /insert "Progress text"||%ICONRES%,12 -------------------------------------------------------------------------------- /source/newuser/_extensions.properties: -------------------------------------------------------------------------------- 1 | # THIS FILE IS SCRIPT-GENERATED - DON'T TOUCH -------------------------------------------------------------------------------- /source/other.properties: -------------------------------------------------------------------------------- 1 | # Properties for miscellaneous syntax highlighting 2 | # 3 | # Do NOT edit this file! 4 | # If there is something here you want to change, go to Options > Open User properties, 5 | # copy the setting there and change it. If you instead want to delete a setting, just 6 | # write an analogous line in the User properties that sets it to blank. 7 | # 8 | 9 | # Language menu 10 | language.menu.other=\ 11 | &INI and property files|ini||\ 12 | &Difference|diff|| 13 | 14 | # Other filters 15 | filter.other=\ 16 | INI files (*.ini)|*.ini|\ 17 | Diff files (*.diff)|*.diff|\ 18 | Patch files (*.patch)|*.patch|\ 19 | Configuration files (*.properties)|*.properties| 20 | 21 | # Errorlists 22 | style.errorlist.3=$(s4ahk.style.error) 23 | style.errorlist.4=$(s4ahk.style.comment.line) 24 | style.errorlist.5=$(s4ahk.style.error) 25 | style.errorlist.6=$(s4ahk.style.error) 26 | style.errorlist.7=$(s4ahk.style.error) 27 | style.errorlist.8=$(s4ahk.style.error) 28 | 29 | style.errorlist.10=fore:#007F00 30 | style.errorlist.11=fore:#00007F 31 | style.errorlist.12=fore:#007F7F 32 | style.errorlist.13=fore:#7F0000 33 | lexer.errorlist.value.separate=1 34 | 35 | # .ini and .properties files 36 | file.patterns.props=*.properties;*.ini 37 | lexer.$(file.patterns.props)=props 38 | comment.block.props=#~ 39 | # Default 40 | style.props.0=$(s4ahk.style.string) 41 | # Comment 42 | style.props.1=$(s4ahk.style.comment.line) 43 | # Section 44 | style.props.2=$(s4ahk.style.label) 45 | # Assignment operator 46 | style.props.3=$(s4ahk.style.operator) 47 | # Key 48 | style.props.5=$(s4ahk.style.ident.top) 49 | 50 | # .diff and .patch files 51 | file.patterns.diff=*.diff;*.patch 52 | lexer.$(file.patterns.diff)=diff 53 | # Default 54 | style.diff.0=$(s4ahk.style.default) 55 | # Comment (part before "diff ..." or "--- ..." and , Only in ..., Binary file...) 56 | style.diff.1=$(s4ahk.style.comment.line) 57 | # Command (diff ...) 58 | style.diff.2=$(s4ahk.style.label),eolfilled 59 | # Source file (--- ...) and Destination file (+++ ...) 60 | style.diff.3=$(s4ahk.style.string) 61 | # Position setting (@@ ...) 62 | style.diff.4=$(s4ahk.style.number) 63 | # Line removal (-...) 64 | style.diff.5=back:#FFCFCF,fore:#000000 65 | # Line addition (+...) 66 | style.diff.6=back:#CFFFCF,fore:#000000 67 | # Line change (!...) 68 | style.diff.7=back:#FFFFCF,fore:#000000 69 | -------------------------------------------------------------------------------- /source/tillagoto.properties: -------------------------------------------------------------------------------- 1 | # Global TillaGoto settings 2 | # 3 | # Do NOT edit this file! 4 | # If there is something here you want to change, go to Options > Open User properties, 5 | # copy the setting there and change it. If you instead want to delete a setting, just 6 | # write an analogous line in the User properties that sets it to blank. 7 | # 8 | 9 | # TillaGoto settings do not take effect automatically; you need to restart TillaGoto. 10 | 11 | # Set to 1 to enable TillaGoto. 12 | tillagoto.enable=1 13 | 14 | #------------------------------------------------------------------------------ 15 | # Appearance 16 | #------------------------------------------------------------------------------ 17 | 18 | # Set to 1 to show the tray icon, 0 to keep it hidden. 19 | tillagoto.show.tray.icon=1 20 | 21 | # Specify the width of the GUI. If tillagoto.gui.wide.view is 1, tillagoto.gui.width 22 | # represents the minimum width of the GUI, no matter how short the items are. 23 | tillagoto.gui.width=230 24 | 25 | # Specify, in number of rows, the height of the listbox. 26 | tillagoto.gui.height=12 27 | 28 | # Specify the width of the GUI's margins. 29 | tillagoto.gui.margin=2 30 | 31 | # Specify the transparency of the GUI. Preferably divisible by 15. Set it to 255 for 32 | # no transparency at all (consumes less resources). Put 0 to disable fade-in effect. 33 | tillagoto.gui.transparency=255 34 | 35 | # Set to 1 to position the GUI on the left side instead of the right side. 36 | tillagoto.gui.posleft=0 37 | 38 | # Set to 1 to auto-resize the width of the GUI so that all the items are visible 39 | # without the horizontal scrollbar. 40 | tillagoto.gui.wide.view=1 41 | 42 | # This setting is used only if tillagoto.include.mode has the option 0x10000000. It 43 | # determines how the filenames are appended to functions/labels/hotkeys: 44 | # - Set to 0 to append the filenames without any alignment (minimal GUI width) 45 | # - Set to 1 to right-align the filenames (also minimal GUI width) 46 | # - Set to 2 to left-align the filenames (GUI width might be larger) 47 | tillagoto.gui.align.filenames=1 48 | 49 | # Specify the GUI's background colour. Leave blank for default. 50 | #tillagoto.gui.bgcolor= 51 | 52 | # Specify the controls' background colour. Leave blank for default. 53 | #tillagoto.gui.controlbgcolor= 54 | 55 | # Specify the controls' foreground (text) colour. Leave blank for default. 56 | #tillagoto.gui.controlfgcolor= 57 | 58 | # Specify the size of the font for the textbox and listbox. 59 | tillagoto.gui.font.size=8 60 | 61 | # Name of the font for the textbox and listbox. Must be monospace for proper 62 | # alignment. A better font than Courier New would be Consolas. 63 | tillagoto.gui.font=$(default.text.font) 64 | 65 | # Set to 1 to sort the entries in the GUI 66 | tillagoto.gui.sort.entries=1 67 | 68 | #------------------------------------------------------------------------------ 69 | # Hotkeys 70 | #------------------------------------------------------------------------------ 71 | 72 | # Specify the hotkey you want to use to call up the GUI 73 | tillagoto.hk.summon.gui=F12 74 | 75 | # Specify the keyboard hotkey for going to the previous view 76 | tillagoto.hk.go.back=!Left 77 | 78 | # Specify the keyboard hotkey for going to the next view 79 | tillagoto.hk.go.forward=!Right 80 | 81 | # Specify the hotkey you want to use to go to a function/label on whose name the 82 | # caret is located. Similar to the middleclicking feature. 83 | tillagoto.hk.goto.def=+Enter 84 | 85 | #------------------------------------------------------------------------------ 86 | # Behaviour 87 | #------------------------------------------------------------------------------ 88 | 89 | # Set to 1 to filter out the functions/labels/hotkeys found in comment blocks. 90 | # Note: this feature slightly affects performance if many comment blocks are 91 | # present. Therefore, if you start experiencing lag, you might want to turn it off 92 | # (at the expense of not filtering out functions/labels/hotkeys found in comments). 93 | # To exclude a comment block from filtering, start it with "/*!". This is an easy 94 | # way to speed up processing (but any functions/labels/hotkeys will be picked up). 95 | tillagoto.filter.comments=1 96 | 97 | # Set to 1 to make TillaGoto go straight to showing the GUI and exit on close. 98 | # In this mode, TillaGoto cannot keep track of line history or use hotkeys. 99 | tillagoto.quick.mode=0 100 | 101 | # Set to 1 to make TillaGoto terminate when the editor is also terminated. 102 | tillagoto.quit.with.editor=1 103 | 104 | # Set to 0 for matching to occur only at the beginning of the label/function 105 | # name. Set to 1 for matching to occur anywhere in the label/function name. As 106 | # well, multiple words can be specified. For example, typing "Dog Cat" will match 107 | # any label/function containing those words anywhere in their name. This is useful 108 | # to search for functions (or labels) only by typing "() FunctionName". 109 | tillagoto.match.everywhere=1 110 | 111 | #------------------------------------------------------------------------------ 112 | # Mouse configuration 113 | #------------------------------------------------------------------------------ 114 | 115 | # Set to 1 to enable the middle mouse button as a hotkey to call up the GUI. 116 | # More importantly, this also allows you to go to a function/label simply by 117 | # pressing the middle mouse button on the function/label name. 118 | tillagoto.use.mbutton=1 119 | 120 | # Specify in milliseconds the amount of time the middle mouse button should be 121 | # depressed while the GUI is showing for the GUI to close without selection. 122 | # If the middle mouse button is pressed for any amount shorter than that, the 123 | # selection is validated. 124 | tillagoto.cancel.timeout=300 125 | 126 | #------------------------------------------------------------------------------ 127 | # Include files scanning feature 128 | #------------------------------------------------------------------------------ 129 | 130 | # This setting affects the behaviour of TillaGoto when scanning for script 131 | # labels, functions and hotkeys in #Include files and library files. To turn 132 | # off the feature completely, specify 0. Otherwise, iIncludeMode can be any 133 | # combination of the following values: 134 | # 0x00000001 - Scan #Include files (working directory assumed as A_ScriptDir) 135 | # 0x00000010 - Scan library directories files 136 | # 0x00000100 - Retrieve functions upon scanning 137 | # 0x00001000 - Retrieve labels upon scanning 138 | # 0x00010000 - Retrieve hotkeys upon scanning 139 | # 0x00100000 - Filter comment blocks before scanning (like bFilterComments) 140 | # 0x01000000 - Recurse (ie. include #Include files of #Include files and so on) 141 | # 0x10000000 - Append the name of the file to the functions/labels/hotkeys name 142 | tillagoto.include.mode=0x10111101 143 | 144 | # Set to 1 to enable file caching so that scanning is only done once on 145 | # files that have already been scanned in the past. This does not affect the 146 | # current script (which is always re-scanned). Caching is highly recommended as 147 | # it greatly enhances performance of the include files scanning feature. 148 | tillagoto.cache.files=1 149 | 150 | #------------------------------------------------------------------------------ 151 | # TillaGoto directives 152 | #------------------------------------------------------------------------------ 153 | 154 | # Set to 1 to scan the script for TillaGoto directives. Directives allow you to change TillaGoto's behaviour 155 | # for the script you are working on. You put them in your script (anywhere) as a line comment. The syntax is 156 | # (without the quotes): ";TillaGoto. = ". These settings override the default settings you put here. 157 | tillagoto.directives=1 158 | 159 | # The supported settings are the following: 160 | # - bFilterComments: allows you to change tillagoto.filter.comments just for this file. 161 | # - iIncludeMode: allows you to change tillagoto.include.mode just for this file. For example, 162 | # to force TillaGoto to only scan for functions in #Include files (with no other options), use: 163 | # ";TillaGoto.iIncludeMode = 0x00000100". Or to simply turn it off, use: ";TillaGoto.iIncludeMode = 0" 164 | # - ScanFile: it allows you to force TillaGoto to always scan a file, as if it was an Include file, even though it isn't 165 | # used with the #Include directive. The directive is processed in exactly the same way as an #Include file would be. 166 | # For example, the directive ";TillaGoto.ScanFile = %A_ScriptDir%\script.ahk" will have the same effect as if 167 | # TillaGoto saw the directive "#Include %A_ScriptDir%\script.ahk". Directories to change the working directory 168 | # are also supported. The variable iIncludeMode must contain the 0x00000001 option in order to work. 169 | # If the file is in one of the library directories, simply put its name in brackets: ;TillaGoto.ScanFile= 170 | # This is useful when your script uses library functions, but you still want TillaGoto to be aware of them. 171 | # 172 | # Note that the ScanFile directives are queued up and processed right after the script's actual #Include files are 173 | # scanned. Therefore, it doesn't matter where they are placed relative to the actual #Include directives, but the 174 | # order in which they are written does (in order to be able to change the working directory of subsequent ones). 175 | # The working directory is set back to %A_ScriptDir% before processing them. 176 | # The ScanFile feature is useful when working inside a project with many satellite files. A simple ScanFile 177 | # directive to the main script in each satellite file will allow access to all the functions no matter on which 178 | # file you're working on. 179 | -------------------------------------------------------------------------------- /source/toolbar.properties: -------------------------------------------------------------------------------- 1 | ; SciTE4AutoHotkey global configuration file 2 | ; 3 | ; Do NOT edit this file, use UserToolbar.properties instead! 4 | ; 5 | 6 | =Window Spy|%LOCALAHK% tools\WindowSpy.ahk||%ICONRES%,9 7 | =SmartGUI Creator (Ctrl+1)|%LOCALAHK% tools\SmartGUI\SmartGUI.ahk|^1|%ICONRES%,13 8 | =MsgBox Creator (Ctrl+2)|%LOCALAHK% tools\MsgBoxC.ahk|^2|%ICONRES%,10 9 | - 10 | =TillaGoto|%LOCALAHK% tools\TillaGoto.ahk||%ICONRES%,16 11 | =GenDocs Documentation Generator|%LOCALAHK% tools\GenDocs\GenDocs.ahk||%ICONRES%,15 12 | =Scriptlet Utility (Ctrl+3)|%LOCALAHK% tools\SUtility.ahk|^3|%ICONRES%,11 13 | -- 14 | -------------------------------------------------------------------------------- /source/toolbar/ComInterface.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; 4 | ; COM interface for SciTE4AutoHotkey 5 | ; version 1.0 - fincs 6 | ; 7 | 8 | ;------------------------------------------------------------------------------ 9 | ; COM interface methods 10 | ;------------------------------------------------------------------------------ 11 | 12 | class InvalidUsage 13 | { 14 | __Get(m, p*) 15 | { 16 | throw Exception("Property does not exist", m) 17 | } 18 | 19 | __Set(m, p*) 20 | { 21 | throw Exception("Property does not exist", m) 22 | } 23 | 24 | __Call(m, p*) 25 | { 26 | throw Exception("Method does not exist", m) 27 | } 28 | } 29 | 30 | CoI_CallEvent(event, args*) 31 | { 32 | badEvts := {} 33 | for cookie, handler in CoI.EventHandlers 34 | { 35 | try 36 | handler[event](args*) 37 | catch 38 | badEvts[cookie] := 1 39 | } 40 | for cookie in badEvts 41 | CoI.EventHandlers.Delete(cookie) 42 | } 43 | 44 | class CoI extends InvalidUsage 45 | { 46 | static EventHandlers := {} 47 | 48 | ConnectEvent(handler) 49 | { 50 | if !IsObject(handler) 51 | throw Exception("Invalid event handler") 52 | this.EventHandlers[&handler] := handler 53 | return &handler 54 | } 55 | 56 | DisconnectEvent(cookie) 57 | { 58 | this.EventHandlers.Delete(cookie) 59 | } 60 | 61 | Message(msg, wParam := 0, lParam := 0) 62 | { 63 | global _msg, _wParam, _lParam, scitehwnd, hwndgui, ATM_OFFSET 64 | if (_msg := msg+0) = "" || (_wParam := wParam+0) = "" || (_lParam := lParam+0) = "" 65 | return 66 | if (msg >= ATM_OFFSET) 67 | { 68 | ; Send message in a different thread in order to not crap out whilst exiting 69 | Critical 70 | SetTimer, SelfMessage, -10 71 | }else 72 | SendMessage, _msg, _wParam, _lParam,, ahk_id %scitehwnd% 73 | return ErrorLevel 74 | 75 | SelfMessage: 76 | PostMessage, _msg, _wParam, _lParam,, ahk_id %hwndgui% 77 | return 78 | } 79 | 80 | ReloadProps() 81 | { 82 | global scitehwnd 83 | SendMessage, 1024+1, 0, 0,, ahk_id %scitehwnd% 84 | } 85 | 86 | SciTEDir[] 87 | { 88 | get 89 | { 90 | global SciTEDir 91 | return SciTEDir 92 | } 93 | } 94 | 95 | IsPortable[] 96 | { 97 | get 98 | { 99 | global IsPortable 100 | return IsPortable 101 | } 102 | } 103 | 104 | UserDir[] 105 | { 106 | get 107 | { 108 | global LocalSciTEPath 109 | return LocalSciTEPath 110 | } 111 | } 112 | 113 | Tabs[] 114 | { 115 | get 116 | { 117 | obj := Director_Send("ask_bufferlist:", true, true) 118 | tabs := ComObjArray(VT_BSTR := 8, obj.Length()) 119 | for each, msg in obj 120 | tabs[each - 1] := msg.value 121 | 122 | ; Return the Tabs object 123 | return new CoI.__Tabs(tabs) 124 | } 125 | } 126 | 127 | class __Tabs 128 | { 129 | __New(p) 130 | { 131 | this.p := p 132 | } 133 | 134 | Array[] 135 | { 136 | get 137 | { 138 | return this.p 139 | } 140 | } 141 | 142 | List[] 143 | { 144 | get 145 | { 146 | for item in this.p 147 | list .= item "`n" 148 | StringTrimRight, list, list, 1 149 | return list 150 | } 151 | } 152 | 153 | Count[] 154 | { 155 | get 156 | { 157 | return this.p.MaxIndex() + 1 158 | } 159 | } 160 | } 161 | 162 | SwitchToTab(idx) 163 | { 164 | global scitehwnd 165 | 166 | if IsObject(idx) || (idx+0) = "" 167 | return 168 | 169 | PostMessage, 0x111, 1200+idx, 0,, ahk_id %scitehwnd% 170 | } 171 | 172 | Document[] 173 | { 174 | get 175 | { 176 | return Director_Send("ask_fulldocument:", true).Value 177 | } 178 | set 179 | { 180 | throw Exception("Not implemented yet") 181 | } 182 | } 183 | 184 | InsertText(text, pos := -1) 185 | { 186 | if !IsObject(text) && text && !IsObject(pos) && (pos+0) >= -1 187 | { 188 | if (pos >= 0) 189 | Director_Send("goto_raw:" pos) 190 | Director_Send("insert:" CEscape(text)) 191 | } 192 | } 193 | 194 | Selection[] 195 | { 196 | get 197 | { 198 | return this.ResolveProp("CurrentSelection") 199 | } 200 | } 201 | 202 | Output(text) 203 | { 204 | Director_Send("output:" CEscape(text)) 205 | } 206 | 207 | SciTEHandle[] 208 | { 209 | get 210 | { 211 | global scitehwnd 212 | return scitehwnd 213 | } 214 | } 215 | 216 | ActivePlatform[] 217 | { 218 | get 219 | { 220 | global curplatform 221 | return curplatform 222 | } 223 | set 224 | { 225 | global curplatform 226 | if !g_Platforms[value] 227 | throw Exception("Invalid platform",, value) 228 | else 229 | { 230 | curplatform := value 231 | gosub platswitch2 232 | return value 233 | } 234 | } 235 | } 236 | 237 | ; Backwards compatibility 238 | SetPlatform(plat) 239 | { 240 | try 241 | { 242 | this.ActivePlatform := plat 243 | return 1 244 | } catch 245 | return 0 246 | } 247 | 248 | CurrentFile[] 249 | { 250 | get 251 | { 252 | return GetSciTEOpenedFile() 253 | } 254 | set 255 | { 256 | this.OpenFile(file) 257 | return file 258 | } 259 | } 260 | 261 | Version[] 262 | { 263 | get 264 | { 265 | global CurrentSciTEVersion 266 | return CurrentSciTEVersion 267 | } 268 | } 269 | 270 | OpenFile(file) 271 | { 272 | global scitehwnd 273 | 274 | WinActivate, ahk_id %scitehwnd% 275 | 276 | if this.CurrentFile = file 277 | return 278 | 279 | Director_Send("open:" CEscape(file)) 280 | } 281 | 282 | DebugFile(file) 283 | { 284 | this.OpenFile(file) 285 | Cmd_Debug() 286 | } 287 | 288 | SendDirectorMsg(msg) 289 | { 290 | return Director_Send(msg) 291 | } 292 | 293 | SendDirectorMsgRet(msg) 294 | { 295 | return Director_Send(msg, true) 296 | } 297 | 298 | SendDirectorMsgRetArray(msg) 299 | { 300 | obj := Director_Send(msg, true, true) 301 | array := ComObjArray(VT_VARIANT:=12, obj.Length()), ComObjFlags(array, -1) 302 | for each, msg in obj 303 | array[each - 1] := msg 304 | return array 305 | } 306 | 307 | ResolveProp(propname) 308 | { 309 | propVal := Director_Send("askproperty:" propname, true).value 310 | if SubStr(propVal, 1, 11) != "stringinfo:" 311 | return 312 | propVal := SubStr(propVal, 12) 313 | while RegExMatch(propVal, "O)\$\((.+?)\)", o) 314 | propVal := SubStr(propVal, 1, o.Pos-1) this.ResolveProp(o.1) SubStr(propVal, o.Pos+o.Len) 315 | return propVal 316 | } 317 | 318 | } 319 | 320 | ;------------------------------------------------------------------------------ 321 | ; Initialization code 322 | ;------------------------------------------------------------------------------ 323 | 324 | InitComInterface() 325 | { 326 | global CLSID_SciTE4AHK, APPID_SciTE4AHK, oSciTE, hSciTE_Remote, IsPortable 327 | 328 | if IsPortable 329 | ; Register our CLSID and APPID 330 | RegisterIDs(CLSID_SciTE4AHK, APPID_SciTE4AHK) 331 | 332 | ; Expose it 333 | if !(hSciTE_Remote := ComRemote(ComObject(9, &CoI), CLSID_SciTE4AHK)) 334 | { 335 | MsgBox, 16, SciTE4AutoHotkey, Can't create COM interface!`nSome program functions may not work. 336 | if IsPortable 337 | RevokeIDs(CLSID_SciTE4AHK, APPID_SciTE4AHK) 338 | } else if IsPortable 339 | ; Revoke our CLSID and APPID on exit 340 | OnExit(Func("RevokeIDs").Bind(CLSID_SciTE4AHK, APPID_SciTE4AHK)) 341 | } 342 | 343 | RegisterIDs(CLSID, APPID) 344 | { 345 | RegWrite, REG_SZ, HKCU, Software\Classes\%APPID%,, %APPID% 346 | RegWrite, REG_SZ, HKCU, Software\Classes\%APPID%\CLSID,, %CLSID% 347 | RegWrite, REG_SZ, HKCU, Software\Classes\CLSID\%CLSID%,, %APPID% 348 | } 349 | 350 | RevokeIDs(CLSID, APPID) 351 | { 352 | RegDelete, HKCU, Software\Classes\%APPID% 353 | RegDelete, HKCU, Software\Classes\CLSID\%CLSID% 354 | } 355 | 356 | Str2GUID(ByRef var, str) 357 | { 358 | VarSetCapacity(var, 16) 359 | DllCall("ole32\CLSIDFromString", "wstr", str, "ptr", &var) 360 | return &var 361 | } 362 | -------------------------------------------------------------------------------- /source/toolbar/Lib/CEscape.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; 4 | 5 | CEscape(ByRef stQ) 6 | { 7 | StringReplace, str, stQ, \, \\, All 8 | StringReplace, str, str, `a, \a, All 9 | StringReplace, str, str, `b, \b, All 10 | StringReplace, str, str, `f, \f, All 11 | StringReplace, str, str, `n, \n, All 12 | StringReplace, str, str, `r, \r, All 13 | StringReplace, str, str, %A_Tab%, \t, All 14 | StringReplace, str, str, `v, \v, All 15 | Loop, % Asc(" ")-1 16 | StringReplace, str, str, % Chr(A_Index), % "\" (A_Index>>6) (A_Index>>3) (A_Index & 7), All 17 | return str 18 | } 19 | -------------------------------------------------------------------------------- /source/toolbar/Lib/CUnescape.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; 4 | 5 | CUnescape(ByRef stQ) 6 | { 7 | ListLines, Off 8 | escp := false 9 | Loop, Parse, stQ 10 | { 11 | c := A_LoopField 12 | if escp 13 | { 14 | escp := false 15 | if c = \ 16 | c := "\" 17 | else if c = a 18 | c := "`a" 19 | else if c = b 20 | c := "`b" 21 | else if c = f 22 | c := "`f" 23 | else if c = n 24 | c := "`n" 25 | else if c = r 26 | c := "`r" 27 | else if c = t 28 | c := A_Tab 29 | else if c = v 30 | c := "`v" 31 | ; TODO: octal stuff 32 | }else if c = \ 33 | { 34 | escp := true 35 | continue 36 | } 37 | str .= c 38 | } 39 | ListLines, On 40 | return str 41 | } 42 | -------------------------------------------------------------------------------- /source/toolbar/Lib/ComRemote.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; Author: fincs 4 | ; 5 | ; ComRemote: expose a COM object in order to receive remote (RPC) calls 6 | ; 7 | 8 | ComRemote(disp, clsid) 9 | { 10 | static ACTIVEOBJECT_WEAK := 1 11 | static _base := { Close: Func("_CR_Disconnect"), __Delete: Func("_CR_Disconnect") } 12 | if DllCall("oleaut32\RegisterActiveObject" 13 | , "ptr", pdisp := ComObjValue(disp) 14 | , "ptr", Str2GUID(clsid_bin, clsid) 15 | , "uint", ACTIVEOBJECT_WEAK 16 | , "uint*", dwRegister) < 0 17 | return 18 | 19 | if DllCall("ole32\CoLockObjectExternal", "ptr", pdisp, "int", 1, "int", 1) < 0 20 | { 21 | DllCall("oleaut32\RevokeActiveObject", "uint", dwRegister, "ptr", 0) 22 | return 23 | } 24 | 25 | return { disp: disp, dwRegister: dwRegister, base: _base } 26 | } 27 | 28 | _CR_Disconnect(this) 29 | { 30 | if this.closed 31 | return 32 | DllCall("ole32\CoLockObjectExternal", "ptr", pdisp := ComObjValue(this.disp), "int", 0, "int", 1) 33 | DllCall("oleaut32\RevokeActiveObject", "uint", this.dwRegister, "ptr", 0) 34 | DllCall("ole32\CoDisconnectObject", "ptr", pdisp, "uint", 0) 35 | this.closed := true 36 | } 37 | -------------------------------------------------------------------------------- /source/toolbar/Lib/ExportExtension.ahk: -------------------------------------------------------------------------------- 1 |  2 | ; TODO: Error checking 3 | 4 | ExportExtension(extName, extFile) 5 | { 6 | tree := Util_DirTree(ExtensionDir "\" extName) 7 | Util_DumpTree(extFile, tree) 8 | Util_CompressExtension(extFile, extFile, extName) 9 | return true 10 | } 11 | 12 | Util_CompressExtension(fIn, fOut, extName) 13 | { 14 | global SciTEVersionInt 15 | 16 | FileGetSize, fSize, %fIn% 17 | FileRead, data, *c %fIn% 18 | 19 | ; COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_MAXIMUM 20 | DllCall("ntdll\RtlGetCompressionWorkSpaceSize", "ushort", 0x102, "uint*", bufWorkSpaceSize, "uint*", fragWorkSpaceSize) 21 | VarSetCapacity(bufWorkSpace, bufWorkSpaceSize) 22 | 23 | VarSetCapacity(bufTemp, fSize) 24 | if DllCall("ntdll\RtlCompressBuffer", "ushort", 0x102, "ptr", &data, "uint", fSize 25 | , "ptr", &bufTemp, "uint", fSize, "uint", fragWorkSpaceSize, "uint*", cSize, "ptr", &bufWorkSpace) != 0 26 | throw Exception("BAD") 27 | 28 | f := FileOpen(fOut, "w", "UTF-8-RAW") 29 | f.Write("S4AHKEXT") 30 | f.WriteUInt(SciTEVersionInt) 31 | Util_FileWriteStr(f, extName) 32 | f.WriteUInt(fSize) 33 | f.RawWrite(bufTemp, cSize) 34 | } 35 | 36 | Util_DumpTree(f, tree) 37 | { 38 | if !IsObject(f) 39 | f := FileOpen(f, "w", "UTF-8-RAW") 40 | 41 | tl := tree.MaxIndex(), tl := tl ? tl : 0 42 | f.WriteUInt(tl) 43 | for _,e in tree 44 | { 45 | Util_FileWriteStr(f, e.name) 46 | if e.isDir 47 | { 48 | f.WriteUInt(-1) 49 | Util_DumpTree(f, e.contents) 50 | } else 51 | { 52 | fullPath := e.fullPath 53 | FileGetSize, fSize, %fullPath% 54 | VarSetCapacity(fData, fSize) 55 | FileRead, fData, *c %fullPath% 56 | f.WriteUInt(fSize) 57 | f.RawWrite(fData, fSize) 58 | Util_FileAlign(f) 59 | VarSetCapacity(fData, 0) 60 | } 61 | } 62 | } 63 | 64 | Util_FileAlign(f) 65 | { 66 | while f.Pos & 3 67 | f.WriteUChar(0) 68 | } 69 | 70 | Util_FileWriteStr(f, ByRef str) 71 | { 72 | pos := f.Pos 73 | f.WriteUInt(0) 74 | f.Write(str) 75 | size := (tmp := f.Pos) - pos - 4 76 | f.Pos := pos 77 | f.WriteUInt(size) 78 | f.Pos := tmp 79 | Util_FileAlign(f) 80 | } 81 | 82 | Util_DirTree(dir) 83 | { 84 | data := [], ldir := StrLen(dir)+1 85 | Loop, %dir%\*.*, 1 86 | { 87 | StringTrimLeft, name, A_LoopFileFullPath, %ldir% 88 | e := { name: name, fullPath: A_LoopFileLongPath } 89 | if SubStr(name, 0) = "~" || SubStr(name, -3) = ".bak" || name = "package.json" 90 | continue 91 | IfInString, A_LoopFileAttrib, D 92 | { 93 | e.isDir := true 94 | e.contents := Util_DirTree(A_LoopFileFullPath) 95 | } 96 | data.Insert(e) 97 | } 98 | return data 99 | } 100 | -------------------------------------------------------------------------------- /source/toolbar/Lib/ExtractExtension.ahk: -------------------------------------------------------------------------------- 1 | 2 | ExtractExtension(dir, extFile, ByRef outExtId) 3 | { 4 | global SciTEVersionInt 5 | 6 | FileGetSize, dataSize, %extFile% 7 | FileRead, data, *c %extFile% 8 | pData := &data 9 | if StrGet(pData, 8, "UTF-8") != "S4AHKEXT" 10 | return "Invalid format" 11 | if NumGet(data, 8, "UInt") > SciTEVersionInt 12 | return "Extension requires a newer version of SciTE4AutoHotkey" 13 | 14 | outExtId := Util_ReadLenStr(pData+12, pData) 15 | uncompSize := NumGet(pData+0, "UInt"), pData += 4 16 | 17 | VarSetCapacity(uncompData, uncompSize) 18 | ; COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_MAXIMUM 19 | if DllCall("ntdll\RtlDecompressBuffer", "ushort", 0x102, "ptr", &uncompData, "uint", uncompSize 20 | , "ptr", pData, "uint", &data + dataSize - pData, "uint*", finalSize) != 0 21 | return "Decompression error" 22 | 23 | return Util_ExtractTree(&uncompData, dir) ? "OK" : "FAIL" 24 | } 25 | 26 | Util_ExtractTree(ptr, dir) 27 | { 28 | try FileCreateDir, %dir% 29 | nElems := NumGet(ptr+0, "UInt"), ptr += 4 30 | Loop, %nElems% 31 | { 32 | name := dir "\" Util_ReadLenStr(ptr, ptr) 33 | size := NumGet(ptr+0, "UInt"), ptr += 4 34 | if (size = 0xFFFFFFFF) 35 | { 36 | ; Directory 37 | if not ptr := Util_ExtractTree(ptr, name) 38 | break 39 | } else 40 | { 41 | f := FileOpen(name, "w", "UTF-8-RAW") 42 | f.RawWrite(ptr+0, size) 43 | f := "" 44 | ptr += (size+3) &~ 3 45 | } 46 | } 47 | return ptr 48 | } 49 | 50 | Util_ReadLenStr(ptr, ByRef endPtr) 51 | { 52 | len := NumGet(ptr+0, "UInt") 53 | endPtr := ptr + ((len+7)&~3) 54 | return StrGet(ptr+4, len, "UTF-8") 55 | } 56 | -------------------------------------------------------------------------------- /source/toolbar/Lib/Ini2Object.ahk: -------------------------------------------------------------------------------- 1 | 2 | Ini2Object(file) 3 | { 4 | obj := {}, curSect := "" 5 | IfNotExist, %file% 6 | return 7 | Loop, Read, %file% 8 | { 9 | x := Trim(A_LoopReadLine), fc := SubStr(x, 1, 1) 10 | if !x || fc = ";" 11 | continue 12 | if fc = [ 13 | { 14 | if SubStr(x, 0) != "]" 15 | return ; invalid 16 | 17 | curSect := SubStr(x, 2, -1) 18 | } else 19 | { 20 | if not p := InStr(x, "=") 21 | return ; invalid 22 | k := RTrim(SubStr(x, 1, p-1)) 23 | v := LTrim(SubStr(x, p+1)) 24 | obj[curSect, k] := v 25 | } 26 | } 27 | return obj 28 | } 29 | -------------------------------------------------------------------------------- /source/toolbar/Lib/StrPutVar.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; Author: Lexikos 4 | ; 5 | 6 | StrPutVar(string, ByRef var, encoding) 7 | { 8 | ; Ensure capacity. 9 | VarSetCapacity( var, StrPut(string, encoding) 10 | ; StrPut returns char count, but VarSetCapacity needs bytes. 11 | * ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) ) 12 | ; Copy or convert the string. 13 | return StrPut(string, &var, encoding) 14 | } 15 | -------------------------------------------------------------------------------- /source/toolbar/PlatformDetect.ahk: -------------------------------------------------------------------------------- 1 | 2 | Plat_DetectAll() { 3 | global AhkDir 4 | 5 | plats := {} 6 | 7 | Plat_OnBoardDefault(plats, AhkDir, "Automatic") 8 | Plat_OnBoardV1(plats, AhkDir, "Latest v1.1") 9 | 10 | if InStr(FileExist(AhkDir "\v2"), "D") { 11 | Plat_OnBoardV2(plats, AhkDir "\v2", "Latest v2") 12 | } 13 | 14 | Loop Files, %AhkDir%\*.*, D 15 | { 16 | if RegExMatch(A_LoopFileName, "^v([12])\.", o) { 17 | if (o1 == "1") 18 | Plat_OnBoardV1(plats, A_LoopFileLongPath, A_LoopFileName) 19 | else if (o1 == "2") 20 | Plat_OnBoardV2(plats, A_LoopFileLongPath, A_LoopFileName) 21 | } 22 | } 23 | 24 | return plats 25 | } 26 | 27 | Plat_ParsePlatformName(name) { 28 | if RegExMatch(name, "^(.+?)\s*\((.+?)\)$", o) { 29 | return [ o1, StrSplit(Trim(o2), ";", " `t") ] 30 | } else { 31 | return [ name, "" ] 32 | } 33 | } 34 | 35 | Plat_MapToDDL(map) { 36 | ddl := "" 37 | for key in map 38 | ddl .= "|" key 39 | return ddl ; Leave out initial | in order to overwrite previous list 40 | } 41 | 42 | Plat_GroupByVersion(plats) { 43 | versions := {} 44 | for plat in plats { 45 | plat := Plat_ParsePlatformName(plat) 46 | curver := plat[1] 47 | if IsObject(variant := plat[2]) { 48 | if not IsObject(vervar := versions[curver]) { 49 | vervar := versions[curver] := {} 50 | } 51 | vervar[variant[1]] := true 52 | } else { 53 | versions[curver] := "" 54 | } 55 | } 56 | return versions 57 | } 58 | 59 | Plat_OnBoardDefault(plats, path, name) { 60 | ahkver := 1 61 | 62 | if Util_FileExistProperly(exe := path "\UX\AutoHotkeyUX.exe") { 63 | ahkver := 2 64 | } 65 | 66 | platdata := "# THIS FILE IS SCRIPT-GENERATED - DON'T TOUCH`n" 67 | platdata .= "ahk.platform=" name "`n" 68 | platdata .= "ahk.version=" ahkver "`n" 69 | platdata .= "file.patterns.ahk" ahkver "=$(file.patterns.ahk)`n" 70 | 71 | if (ahkver == 2) { 72 | platdata .= "ahk.version.autodetect=1`n" 73 | platdata .= "ahk.launcher=""" exe """ """ path "\UX\launcher.ahk""`n" 74 | 75 | if Util_FileExistProperly(helpfile := path "\v2\AutoHotkey.chm") 76 | platdata .= "ahk.help.file=" helpfile "`n" 77 | } 78 | 79 | plats[name] := platdata 80 | } 81 | 82 | Plat_OnBoardV1(plats, path, name) { 83 | if A_Is64bitOS { 84 | Plat_TryAdd(plats, path "\AutoHotkeyU64.exe", name " (64-bit Unicode)", 1) 85 | Plat_TryAdd(plats, path "\AutoHotkeyU64_UIA.exe", name " (64-bit Unicode; UI access)", 1) 86 | } 87 | Plat_TryAdd(plats, path "\AutoHotkeyU32.exe", name " (32-bit Unicode)", 1) 88 | Plat_TryAdd(plats, path "\AutoHotkeyU32_UIA.exe", name " (32-bit Unicode; UI access)", 1) 89 | Plat_TryAdd(plats, path "\AutoHotkeyA32.exe", name " (32-bit ANSI)", 1) 90 | Plat_TryAdd(plats, path "\AutoHotkeyA32_UIA.exe", name " (32-bit ANSI; UI access)", 1) 91 | } 92 | 93 | Plat_OnBoardV2(plats, path, name) { 94 | if A_Is64bitOS { 95 | Plat_TryAdd(plats, path "\AutoHotkey64.exe", name " (64-bit)", 2) 96 | Plat_TryAdd(plats, path "\AutoHotkey64_UIA.exe", name " (64-bit; UI access)", 2) 97 | } 98 | Plat_TryAdd(plats, path "\AutoHotkey32.exe", name " (32-bit)", 2) 99 | Plat_TryAdd(plats, path "\AutoHotkey32_UIA.exe", name " (32-bit; UI access)", 2) 100 | } 101 | 102 | Util_FileExistProperly(path) { 103 | attrib := DllCall("GetFileAttributes", "str", path, "uint") 104 | return !(attrib == 0xffffffff) and !(attrib & 0x410) 105 | } 106 | 107 | Plat_TryAdd(plats, exe, name, ahkver) { 108 | if not Util_FileExistProperly(exe) 109 | return 110 | 111 | verSize := DllCall("version\GetFileVersionInfoSize", "str", exe, "uint*", 0, "uint") 112 | if not verSize 113 | return 114 | 115 | VarSetCapacity(verInfo, verSize) 116 | if not DllCall("version\GetFileVersionInfo", "str", exe, "uint", 0, "uint", verSize, "ptr", &verInfo) 117 | return 118 | 119 | platdata := "# THIS FILE IS SCRIPT-GENERATED - DON'T TOUCH`n" 120 | platdata .= "ahk.platform=" name "`n" 121 | platdata .= "ahk.version=" ahkver "`n" 122 | platdata .= "file.patterns.ahk" ahkver "=$(file.patterns.ahk)`n" 123 | platdata .= "AutoHotkey=" exe "`n" 124 | 125 | SplitPath path,, pathdir 126 | if Util_FileExistProperly(helpfile := pathdir "\AutoHotkey.chm") 127 | platdata .= "ahk.help.file=" helpfile "`n" 128 | 129 | plats[name] := platdata 130 | } 131 | -------------------------------------------------------------------------------- /source/toolbar/SciTEDirector.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; 4 | ; SciTE director wrapper 5 | ; version 1.0 - fincs 6 | ; 7 | 8 | Director_Init() 9 | { 10 | global WM_COPYDATA, DirectorRecv, DirectorRetByArray, DirectorMsg, ATM_Director, scitehwnd, hwndgui, directorhwnd, DirectorReady 11 | WM_COPYDATA := 0x4a, DirectorRecv := false, DirectorMsg := "" 12 | 13 | OnMessage(WM_COPYDATA, "_Director_Recv") 14 | Director_Send("identity:" (hwndgui+0)) 15 | DirectorReady := true 16 | } 17 | 18 | Director_Send(msg, returns := false, onArray := false) 19 | { 20 | global directorhwnd, WM_COPYDATA, DirectorMsg, DirectorRcv, DirectorRetByArray 21 | len := StrPutVar(msg, msg_utf8, "UTF-8") 22 | ; This code was taken from the AHK help 23 | VarSetCapacity(COPYDATASTRUCT, 3*A_PtrSize, 0) 24 | NumPut(len, COPYDATASTRUCT, A_PtrSize, "UInt") 25 | NumPut(&msg_utf8, COPYDATASTRUCT, 2*A_PtrSize) 26 | if returns 27 | { 28 | DirectorRcv := true 29 | DirectorRetByArray := onArray 30 | if onArray 31 | DirectorMsg := [] 32 | } 33 | SendMessage, WM_COPYDATA, 0, ©DATASTRUCT,, ahk_id %directorhwnd% 34 | if returns 35 | { 36 | DirectorRcv := false 37 | DirectorRetByArray := false 38 | return DirectorMsg 39 | } 40 | } 41 | 42 | _Director_Recv(wParam, lParam, msg, hwnd) 43 | { 44 | Critical 45 | global DirectorMsg, DirectorRcv, DirectorRetByArray, lastfunc 46 | message := _Director_ParseResponse(StrGet(NumGet(lParam + 2*A_PtrSize), NumGet(lParam + A_PtrSize, "UInt"), "UTF-8")) 47 | if DirectorRcv 48 | { 49 | if !DirectorRetByArray 50 | DirectorMsg := message 51 | else 52 | DirectorMsg.Insert(message) 53 | }else 54 | { 55 | func := "SciTE_On" message.verb 56 | if IsFunc(func) 57 | { 58 | Critical, Off 59 | %func%(message.value, message.verb) 60 | } 61 | } 62 | return true 63 | } 64 | 65 | _Director_ParseResponse(resp) 66 | { 67 | colon := InStr(resp, ":") 68 | return { Verb: SubStr(resp, 1, colon-1), Value: CUnescape(SubStr(resp, colon+1)) } 69 | } 70 | -------------------------------------------------------------------------------- /source/toolbar/SciTEMacros.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; 4 | ; SciTE macro support 5 | ; version 1.0 - fincs 6 | ; 7 | 8 | Macro_Init() 9 | { 10 | global SciTEMacro 11 | SciTEMacro := "" ;[] 12 | 13 | Director_Send("macroenable:1") 14 | } 15 | 16 | SciTE_OnMacro(val) 17 | { 18 | timer := Func("HandleMacroMsg").Bind(val) 19 | SetTimer, % timer, -10 20 | } 21 | 22 | HandleMacroMsg(rawmsg) 23 | { 24 | Critical 25 | colon := InStr(rawmsg, ":") 26 | verb := SubStr(rawmsg, 1, colon-1) 27 | arg := SubStr(rawmsg, colon+1) 28 | if func := Func("SciTE_OnMacro" verb) 29 | %func%(arg) 30 | } 31 | 32 | SciTE_OnMacroGetList() 33 | { 34 | static _created_menu := 0 35 | macros := ListMacros() 36 | if !macros.MaxIndex() 37 | { 38 | MsgBox, 48, Toolbar, There aren't any macros! 39 | return 40 | } 41 | if _created_menu 42 | Menu, MacroList, DeleteAll 43 | for each, macro in macros 44 | Menu, MacroList, Add, %macro%, _run_macro 45 | Menu, MacroList, Show 46 | _created_menu := 1 47 | } 48 | 49 | SciTE_OnMacroRecord(param) 50 | { 51 | global SciTEMacro 52 | ; Workaround: SciTE does not quite generate what it should 53 | param := RegExReplace(param, "^(\d+?);(\d+?);1", "$1;0IS;$2") 54 | param := RegExReplace(param, "^(\d+?);(\d+?);0;$", "$1;0II;$2;0") 55 | SciTEMacro .= CEscape(param) "`n" 56 | } 57 | 58 | SciTE_OnMacroStopRecord() 59 | { 60 | global SciTEMacro, LocalSciTEPath 61 | macro := SciTEMacro 62 | SciTEMacro := "" 63 | StringTrimRight, macro, macro, 1 64 | 65 | InputBox, macro_name, Macro recorder, Enter name for the macro 66 | if ErrorLevel 67 | return 68 | macrofile := LocalSciTEPath "\Macros\" macro_name ".macro" 69 | FileDelete, %macrofile% 70 | FileAppend, % macro, %macrofile%, UTF-8 71 | } 72 | 73 | _run_macro(itemName) 74 | { 75 | Director_Send("currentmacro:" itemName) 76 | SciTE_OnMacroRun(itemName) 77 | } 78 | 79 | SciTE_OnMacroRun(macro) 80 | { 81 | global LocalSciTEPath 82 | if !macro 83 | { 84 | MsgBox, 48, Toolbar, You must select a macro first! 85 | return 86 | } 87 | macrofile := LocalSciTEPath "\Macros\" macro ".macro" 88 | IfExist, %macrofile% 89 | Loop, Read, %macrofile% 90 | macrodata .= "macrocommand:" A_LoopReadLine "`n" 91 | StringTrimRight, macrodata, macrodata, 1 92 | Director_Send(macrodata) 93 | } 94 | 95 | ListMacros() 96 | { 97 | global LocalSciTEPath 98 | macros := [] 99 | Loop, %LocalSciTEPath%\Macros\*.macro 100 | { 101 | SplitPath, A_LoopFileFullPath,,,, namenoext 102 | macros.Insert(namenoext) 103 | } 104 | return macros 105 | } 106 | -------------------------------------------------------------------------------- /source/toolicon.icl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/source/toolicon.icl -------------------------------------------------------------------------------- /source/tools/$gendocs_scite: -------------------------------------------------------------------------------- 1 | DEBUG = 0 2 | Menu, Tray, Icon, %A_ScriptDir%\..\..\toolicon.icl, 15 3 | 4 | ; Quick and dirty look for SciTE to grab initial filename. 5 | _SciTE := GetSciTEInstance() 6 | if _SciTE 7 | _DefaultFName := _SciTE.CurrentFile, _SciTE := "" 8 | 9 | #include %A_ScriptDir%\..\Lib\GetSciTEInstance.ahk -------------------------------------------------------------------------------- /source/tools/Autorun.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; SciTE4AutoHotkey Autorun Script 3 | ; 4 | 5 | #NoEnv 6 | #NoTrayIcon 7 | SetWorkingDir, %A_ScriptDir% 8 | 9 | oSciTE := GetSciTEInstance() 10 | if !oSciTE 11 | { 12 | MsgBox, 16, SciTE4AutoHotkey, Cannot find SciTE! 13 | ExitApp 14 | } 15 | 16 | UserAutorun := oSciTE.UserDir "\Autorun.ahk" 17 | 18 | bUpdatesEnabled := oSciTE.ResolveProp("automatic.updates") + 0 19 | bTillaGotoEnabled := oSciTE.ResolveProp("tillagoto.enable") + 0 20 | 21 | if bUpdatesEnabled 22 | Run, "%A_AhkPath%" SciTEUpdate.ahk /silent 23 | 24 | if bTillaGotoEnabled 25 | Run, "%A_AhkPath%" TillaGoto.ahk 26 | 27 | IfExist, %UserAutorun% 28 | Run, "%A_AhkPath%" "%UserAutorun%" 29 | -------------------------------------------------------------------------------- /source/tools/Lib/Anchor.ahk: -------------------------------------------------------------------------------- 1 | /* 2 | Function: Anchor 3 | Defines how controls should be automatically positioned relative to the new dimensions of a window when resized. 4 | 5 | Parameters: 6 | cl - a control HWND, associated variable name or ClassNN to operate on 7 | a - (optional) one or more of the anchors: 'x', 'y', 'w' (width) and 'h' (height), 8 | optionally followed by a relative factor, e.g. "x h0.5" 9 | r - (optional) true to redraw controls, recommended for GroupBox and Button types 10 | 11 | Examples: 12 | > "xy" ; bounds a control to the bottom-left edge of the window 13 | > "w0.5" ; any change in the width of the window will resize the width of the control on a 2:1 ratio 14 | > "h" ; similar to above but directrly proportional to height 15 | 16 | Remarks: 17 | To assume the current window size for the new bounds of a control (i.e. resetting) simply omit the second and third parameters. 18 | However if the control had been created with DllCall() and has its own parent window, 19 | the container AutoHotkey created GUI must be made default with the +LastFound option prior to the call. 20 | For a complete example see anchor-example.ahk. 21 | 22 | License: 23 | - Version 4.60a 24 | - Dedicated to the public domain (CC0 1.0) 25 | */ 26 | Anchor(i, a = "", r = false) { 27 | static c, cs = 12, cx = 255, cl = 0, g, gs = 8, gl = 0, gpi, gw, gh, z = 0, k = 0xffff 28 | If z = 0 29 | VarSetCapacity(g, gs * 99, 0), VarSetCapacity(c, cs * cx, 0), z := true 30 | If (!WinExist("ahk_id" . i)) { 31 | GuiControlGet, t, Hwnd, %i% 32 | If ErrorLevel = 0 33 | i := t 34 | Else ControlGet, i, Hwnd, , %i% 35 | } 36 | VarSetCapacity(gi, 68, 0), DllCall("GetWindowInfo", "UInt", gp := DllCall("GetParent", "UInt", i), "UInt", &gi) 37 | , giw := NumGet(gi, 28, "Int") - NumGet(gi, 20, "Int"), gih := NumGet(gi, 32, "Int") - NumGet(gi, 24, "Int") 38 | If (gp != gpi) { 39 | gpi := gp 40 | Loop, %gl% 41 | If (NumGet(g, cb := gs * (A_Index - 1)) == gp) { 42 | gw := NumGet(g, cb + 4, "Short"), gh := NumGet(g, cb + 6, "Short"), gf := 1 43 | Break 44 | } 45 | If (!gf) 46 | NumPut(gp, g, gl), NumPut(gw := giw, g, gl + 4, "Short"), NumPut(gh := gih, g, gl + 6, "Short"), gl += gs 47 | } 48 | ControlGetPos, dx, dy, dw, dh, , ahk_id %i% 49 | Loop, %cl% 50 | If (NumGet(c, cb := cs * (A_Index - 1)) == i) { 51 | If a = 52 | { 53 | cf = 1 54 | Break 55 | } 56 | giw -= gw, gih -= gh, as := 1, dx := NumGet(c, cb + 4, "Short"), dy := NumGet(c, cb + 6, "Short") 57 | , cw := dw, dw := NumGet(c, cb + 8, "Short"), ch := dh, dh := NumGet(c, cb + 10, "Short") 58 | Loop, Parse, a, xywh 59 | If A_Index > 1 60 | av := SubStr(a, as, 1), as += 1 + StrLen(A_LoopField) 61 | , d%av% += (InStr("yh", av) ? gih : giw) * (A_LoopField + 0 ? A_LoopField : 1) 62 | DllCall("SetWindowPos", "UInt", i, "Int", 0, "Int", dx, "Int", dy 63 | , "Int", InStr(a, "w") ? dw : cw, "Int", InStr(a, "h") ? dh : ch, "Int", 4) 64 | If r != 0 65 | DllCall("RedrawWindow", "UInt", i, "UInt", 0, "UInt", 0, "UInt", 0x0101) ; RDW_UPDATENOW | RDW_INVALIDATE 66 | Return 67 | } 68 | If cf != 1 69 | cb := cl, cl += cs 70 | bx := NumGet(gi, 48), by := NumGet(gi, 16, "Int") - NumGet(gi, 8, "Int") - gih - NumGet(gi, 52) 71 | If cf = 1 72 | dw -= giw - gw, dh -= gih - gh 73 | NumPut(i, c, cb), NumPut(dx - bx, c, cb + 4, "Short"), NumPut(dy - by, c, cb + 6, "Short") 74 | , NumPut(dw, c, cb + 8, "Short"), NumPut(dh, c, cb + 10, "Short") 75 | Return, true 76 | } -------------------------------------------------------------------------------- /source/tools/Lib/DebugVarsGui.ahk: -------------------------------------------------------------------------------- 1 | #Include DebugVars\ 2 | #Include DebugVarsGui.ahk -------------------------------------------------------------------------------- /source/tools/Lib/GetSciTEInstance.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; Author: fincs 4 | ; 5 | ; Get the current SciTE instance 6 | ; 7 | 8 | GetSciTEInstance() 9 | { 10 | olderr := ComObjError() 11 | ComObjError(false) 12 | scite := ComObjActive("{D7334085-22FB-416E-B398-B5038A5A0784}") 13 | ComObjError(olderr) 14 | return IsObject(scite) ? scite : "" 15 | } 16 | -------------------------------------------------------------------------------- /source/tools/Lib/ProcessInfo.ahk: -------------------------------------------------------------------------------- 1 | class ProcessInfo 2 | { 3 | FromPID(pid) { 4 | ; (PROCESS_QUERY_LIMITED_INFORMATION := 0x1000) | (SYNCHRONIZE := 0x100000) 5 | if !hproc := DllCall("OpenProcess", "uint", 0x101000, "int", false, "uint", pid, "ptr") 6 | return 7 | return {handle: hproc, base: this} 8 | } 9 | 10 | __Delete() { 11 | DllCall("CloseHandle", "ptr", this.handle) 12 | } 13 | 14 | Exists { 15 | get { 16 | ; (WAIT_TIMEOUT := 258) 17 | return DllCall("WaitForSingleObject", "ptr", this.handle, "uint", 0) = 258 18 | } 19 | } 20 | 21 | ExitCode { 22 | get { 23 | return this.Exists ? "" : DllCall("GetExitCodeProcess", "ptr", this.handle, "int*", exitCode) ? exitCode : 0 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /source/tools/Lib/SUpd.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; File encoding: UTF-8 3 | ; 4 | ; Script description: 5 | ; SUpd - SciTE4AutoHotkey update routines 6 | ; 7 | 8 | #NoEnv 9 | #NoTrayIcon 10 | 11 | global SciTEDir, ParentPID 12 | 13 | SUpd_Main() 14 | { 15 | SendMode Input 16 | SetWorkingDir, %A_ScriptDir% 17 | SplitPath, A_AhkPath,, SciTEDir 18 | ParentPID := __GetParentPID() 19 | UpdateMain() 20 | ExitApp 21 | } 22 | 23 | SUpd_File(id, out) 24 | { 25 | fname := A_ScriptDir "\" id ".bin" 26 | IfNotExist, %fname% 27 | throw Exception("Unknown file ID", -1, id) 28 | FileCopy, %fname%, %out%, 1 29 | } 30 | 31 | ;------------------------------------------------------------------------------ 32 | ; Internal functions 33 | ;------------------------------------------------------------------------------ 34 | 35 | __GetParentPID() 36 | { 37 | hScriptProc := DllCall("GetCurrentProcess", "ptr") 38 | 39 | VarSetCapacity(pbi, sizeof_pbi := 6*A_PtrSize) 40 | if DllCall("ntdll\NtQueryInformationProcess", "ptr", hScriptProc, "uint", 0, "ptr", &pbi, "uint", sizeof_pbi, "ptr", 0, "uint") ; 0=ProcessBasicInformation 41 | throw Exception("NtQueryInformationProcess()", 0, rc " - " w " - " sizeof_pbi) ; Short msg since so rare. 42 | 43 | return NumGet(pbi, 5*A_PtrSize) 44 | } 45 | -------------------------------------------------------------------------------- /source/tools/Lib/dbgp.ahk: -------------------------------------------------------------------------------- 1 | #Include dbgp\ 2 | #Include dbgp.ahk -------------------------------------------------------------------------------- /source/tools/MsgBoxC.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; SciTE4AutoHotkey MsgBox Creator 3 | ; 4 | 5 | #SingleInstance Ignore 6 | #NoTrayIcon 7 | #NoEnv 8 | SetWorkingDir, %A_ScriptDir% 9 | 10 | oSciTE := GetSciTEInstance() 11 | if !oSciTE 12 | { 13 | MsgBox, 16, MsgBox Creator, Cannot find SciTE! 14 | ExitApp 15 | } 16 | 17 | scHwnd := oSciTE.SciTEHandle 18 | 19 | ; Main icon 20 | Menu, Tray, Icon, ..\toolicon.icl, 10 21 | 22 | ;GUI 23 | Gui, +Owner%scHwnd% 24 | Gui, Add, Text, x10 y10 section, Title 25 | Gui, Add, Edit, xs+0 ys+15 section w400 vTitle gCreate_Msgbox_Command, 26 | Gui, Add, Text, xs+0 ys+25 section, Text: 27 | Gui, Add, Edit, xs+0 ys+15 section r3 w400 vText gCreate_Msgbox_Command WantTab, 28 | 29 | Gui, Add, Groupbox, x10 y130 h215 w190 section, Buttons 30 | Gui, Add, Radio, xs+10 ys+20 section vButton_Selection1 Checked gCreate_Msgbox_Command, OK 31 | Gui, Add, Radio, xs+0 ys+25 section vButton_Selection2 gCreate_Msgbox_Command, OK/Cancel 32 | Gui, Add, Radio, xs+0 ys+25 section vButton_Selection3 gCreate_Msgbox_Command, Abort/Retry/Ignore 33 | Gui, Add, Radio, xs+0 ys+25 section vButton_Selection4 gCreate_Msgbox_Command, Yes/No/Cancel 34 | Gui, Add, Radio, xs+0 ys+25 section vButton_Selection5 gCreate_Msgbox_Command, Yes/No 35 | Gui, Add, Radio, xs+0 ys+25 section vButton_Selection6 gCreate_Msgbox_Command, Retry/Cancel 36 | Gui, Add, Radio, xs+0 ys+25 section vButton_Selection7 gCreate_Msgbox_Command, Cancel/Try Again/Continue 37 | Gui, Add, Checkbox, xs+0 ys+25 vButton_Selection_Help gCreate_Msgbox_Command, Help button 38 | 39 | Gui, Add, Groupbox, x220 y130 h215 w190 section, Icons 40 | Gui, Add, Radio, xs+10 ys+25 section vIcon1 Checked gCreate_Msgbox_Command, No Icon 41 | Gui, Add, Radio, xs+0 ys+40 vIcon2 gCreate_Msgbox_Command, Stop/Error 42 | Gui, Add, Radio, xs+0 ys+80 vIcon3 gCreate_Msgbox_Command, Question 43 | Gui, Add, Radio, xs+0 ys+120 vIcon4 gCreate_Msgbox_Command, Exclamation 44 | Gui, Add, Radio, xs+0 ys+160 vIcon5 gCreate_Msgbox_Command, Info 45 | ;Gui, Add, Picture, xs+90 ys-10 gSelect_NoIcon icon1, %A_WinDir%\system32\user32.dll 46 | Gui, Add, Picture, xs+90 ys-10 gSelect_NoIcon h30 w20 47 | Gui, Add, Picture, xs+90 ys+30 gSelect_ErrorIcon icon4 w32 h32, %A_WinDir%\system32\user32.dll 48 | Gui, Add, Picture, xs+90 ys+70 gSelect_Question icon3 w32 h32, %A_WinDir%\system32\user32.dll 49 | Gui, Add, Picture, xs+90 ys+110 gSelect_Exclamation icon2 w32 h32, %A_WinDir%\system32\user32.dll 50 | Gui, Add, Picture, xs+90 ys+150 gSelect_Info icon5 w32 h32, %A_WinDir%\system32\user32.dll 51 | 52 | Gui, Add, Groupbox, x430 y20 h140 w190 section, Modality 53 | Gui, Add, Radio, xs+10 ys+20 section Checked vModality1 gCreate_Msgbox_Command, Normal 54 | Gui, Add, Radio, xs+0 ys+25 section vModality2 gCreate_Msgbox_Command, Task Modal 55 | Gui, Add, Radio, xs+0 ys+25 section vModality3 gCreate_Msgbox_Command, System Modal (always on top) 56 | Gui, Add, Radio, xs+0 ys+25 section vModality4 gCreate_Msgbox_Command, Always on top 57 | Gui, Add, Radio, xs+0 ys+25 section vModality5 gCreate_Msgbox_Command, Default desktop 58 | 59 | Gui, Add, Groupbox, x430 y170 h45 w190 section, Default Button 60 | Gui, Add, Radio, xs+10 ys+20 section Checked vDefault1 gCreate_Msgbox_Command, 1st 61 | Gui, Add, Radio, xs+65 ys+0 section vDefault2 gCreate_Msgbox_Command, 2nd 62 | Gui, Add, Radio, xs+65 ys+0 section vDefault3 gCreate_Msgbox_Command, 3rd 63 | 64 | Gui, Add, Groupbox, x435 y220 h45 w190 section, Alignment 65 | Gui, Add, Checkbox, xs+10 ys+20 vAlignment1 section gCreate_Msgbox_Command, Right-justified 66 | Gui, Add, Checkbox, xs+100 ys+0 vAlignment2 gCreate_Msgbox_Command, Right-to-left 67 | 68 | Gui, Add, Groupbox, x430 y270 h45 w90 section, Timeout 69 | Gui, Add, Edit, xs+10 ys+17 w70 vTimeout gCreate_Msgbox_Command 70 | Gui, Add, UpDown, Range-1-2147483, -1 71 | 72 | Gui, Add, Button, x530 y280 h30 w90 vTest gTest, &Test 73 | Gui, Add, Button, x430 y320 h30 w90 Default gSciTEInsert, &Insert in SciTE 74 | Gui, Add, Button, x530 y320 h30 w90 gReset, &Reset 75 | 76 | Gui, Add, Groupbox, x10 y350 w610 h75 section, Result 77 | Gui, Add, Edit, xs+10 ys+20 w590 r3 vMsgbox_Command, 78 | 79 | Gui, Show, , MsgBox Creator for SciTE4AutoHotkey v3 80 | GoSub, Reset ;Initalize GUI 81 | return 82 | 83 | Select_NoIcon: 84 | GuiControl, , Icon1, 1 85 | GoSub, Create_Msgbox_Command 86 | return 87 | 88 | Select_ErrorIcon: 89 | GuiControl, , Icon2, 1 90 | GoSub, Create_Msgbox_Command 91 | return 92 | 93 | Select_Question: 94 | GuiControl, , Icon3, 1 95 | GoSub, Create_Msgbox_Command 96 | return 97 | 98 | Select_Exclamation: 99 | GuiControl, , Icon4, 1 100 | GoSub, Create_Msgbox_Command 101 | return 102 | 103 | Select_Info: 104 | GuiControl, , Icon5, 1 105 | GoSub, Create_Msgbox_Command 106 | return 107 | 108 | Create_Msgbox_Command: 109 | Gui, Submit, NoHide 110 | ;Get types of used buttons 111 | Loop, 7 112 | { 113 | if Button_Selection%A_Index% = 1 114 | { 115 | ButtonSelection := A_Index -1 116 | if Button_Selection_Help = 1 117 | ButtonSelection += 16384 118 | break 119 | } 120 | } 121 | 122 | ;Get used Icon 123 | Loop, 5 124 | { 125 | if Icon%A_Index% = 1 126 | { 127 | if A_Index = 1 128 | Icon = 0 129 | else if A_Index = 2 130 | Icon = 16 131 | else if A_Index = 3 132 | Icon = 32 133 | else if A_Index = 4 134 | Icon = 48 135 | else if A_Index = 5 136 | Icon = 64 137 | break 138 | } 139 | } 140 | 141 | ;Get Modality-State 142 | Loop, 5 143 | { 144 | if Modality%A_Index% = 1 145 | { 146 | if A_Index = 1 147 | Modality = 0 148 | else if A_Index = 2 149 | Modality = 8192 150 | else if A_Index = 3 151 | Modality = 4096 152 | else if A_Index = 4 153 | Modality = 262144 154 | else if A_Index = 5 155 | Modality = 131072 156 | break 157 | } 158 | } 159 | 160 | ;Get Default-Button 161 | Loop, 3 162 | { 163 | if Default%A_Index% = 1 164 | { 165 | if A_Index = 1 166 | Default = 0 167 | else if A_Index = 2 168 | Default = 256 169 | else if A_Index = 3 170 | Default = 512 171 | break 172 | } 173 | } 174 | 175 | ;Check Alignment 176 | Alignment = 0 177 | if Alignment1 = 1 178 | Alignment += 524288 179 | if Alignment2 = 1 180 | Alignment += 1048576 181 | 182 | Msgbox_Number := ButtonSelection + Icon + Modality + Default + Alignment ;Generate type of messagebox 183 | 184 | if TestMode 185 | return 186 | 187 | Escape_Characters(Title) 188 | Escape_Characters(Text) 189 | 190 | ;Timeout "-1" = no timeout 191 | if Timeout = -1 192 | Timeout = 193 | else 194 | { 195 | StringReplace, Timeout, Timeout, `,, . ;Allows "," as decimal-point 196 | Timeout = , %Timeout% 197 | } 198 | 199 | ;Create command and set it to Edit-Control 200 | Msgbox_Command = MsgBox, %Msgbox_Number%, %Title%, %Text%%Timeout% 201 | GuiControl, , Msgbox_Command, %Msgbox_Command% 202 | return 203 | 204 | Test: 205 | TestMode := true 206 | GoSub, Create_Msgbox_Command 207 | TestMode := false 208 | Gui, +OwnDialogs 209 | Title := Title ? Title : "%A_ScriptName%" 210 | if Timeout != -1 211 | MsgBox, % Msgbox_Number, % Title, % Text, % Timeout 212 | else 213 | MsgBox, % Msgbox_Number, % Title, % Text 214 | return 215 | 216 | ;Escapes Characters like "," 217 | Escape_Characters(byref Var) 218 | { 219 | StringReplace, Var, Var, `n, ``n, All ;Translate line breaks in entered text 220 | StringReplace, Var, Var, `,, ```,, All ;Escapes "," 221 | StringReplace, Var, Var, `;, ```;, All ;Escapes ";" 222 | } 223 | 224 | SciTEInsert: 225 | oSciTE.InsertText(Msgbox_Command) 226 | ExitApp 227 | 228 | GuiClose: 229 | ExitApp 230 | 231 | Open: 232 | Gui, Show 233 | return 234 | 235 | Reset: 236 | GuiControl,, Title 237 | GuiControl,, Text 238 | GuiControl,, Modality1, 1 239 | GuiControl,, Icon1, 1 240 | GuiControl,, Button_Selection1, 1 241 | GuiControl,, Button_Selection_Help, 0 242 | GuiControl,, Default1, 1 243 | GuiControl,, Timeout, -1 244 | GuiControl,, Alignment1, 0 245 | GuiControl,, Alignment2, 0 246 | return 247 | 248 | GuiSize: 249 | if A_EventInfo = 1 250 | Gui, Show, Hide 251 | return 252 | -------------------------------------------------------------------------------- /source/tools/PropEdit.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; SciTE4AutoHotkey Settings Editor 3 | ; 4 | 5 | #NoEnv 6 | #NoTrayIcon 7 | #SingleInstance Ignore 8 | SendMode Input 9 | SetWorkingDir %A_ScriptDir% 10 | SetBatchLines -1 11 | ListLines, Off 12 | FileEncoding, UTF-8-RAW 13 | 14 | Menu, Tray, Icon, ..\toolicon.icl, 17 15 | 16 | scite := GetSciTEInstance() 17 | if !scite 18 | { 19 | MsgBox, 16, SciTE properties editor, Can't find SciTE! 20 | ExitApp 21 | } 22 | 23 | scite_hwnd := scite.SciTEHandle 24 | 25 | LocalSciTEPath := scite.UserDir 26 | 27 | UserPropsFile = %LocalSciTEPath%\_config.properties 28 | 29 | IfExist, %UserPropsFile% 30 | FileRead, UserProps, %UserPropsFile% 31 | else 32 | UserProps := "" 33 | 34 | cplist_v := "0|65001|932|936|949|950|1361" 35 | cplist_n := "System default|UTF-8|Shift-JIS|Chinese GBK|Korean Wansung|Chinese Big5|Korean Johab" 36 | 37 | p_style := FindProp("import Styles\\(.*)\.style", "SciTE4AutoHotkey Light") 38 | p_locale := FindProp("locale\.properties=locales\\(.*)\.locale\.properties", "English") 39 | p_encoding := FindProp("code\.page=(" cplist_v ")", 65001) 40 | p_backup := FindProp("make\.backup=([01])", 1) 41 | p_savepos := FindProp("save\.position=([01])", 1) 42 | p_zoom := FindProp("magnification=(-?\d+)", 0) 43 | p_font := FindProp("default\.text\.font=(.+)", "Consolas") 44 | p_lineno := FindProp("line\.margin\.visible=([01])", 1) 45 | p_autoupd := FindProp("automatic\.updates=([01])", 1) 46 | 47 | if 1 = /regenerate 48 | { 49 | ; Upgrade old styles to comparable modern equivalents 50 | if p_style in Classic,PSPad,Light,VisualStudio 51 | p_style := "SciTE4AutoHotkey Light" 52 | else if p_style in HatOfGod,Noir,tidRich_Zenburn 53 | p_style := "SciTE4AutoHotkey Dark" 54 | 55 | regenMode := true 56 | gosub Update2 57 | ExitApp 58 | } 59 | 60 | org_locale := p_locale 61 | org_zoom := p_zoom 62 | org_lineno := p_lineno 63 | 64 | stylelist := CountStylesAndChoose(ch1) 65 | localelist := CountLocalesAndChoose(ch2) 66 | p_encoding := FindInList(cplist_v, p_encoding) 67 | 68 | Gui, New, +Owner%scite_hwnd% +ToolWindow, SciTE4AutoHotkey settings 69 | 70 | Gui, Add, Text, Section +Right w70, Language: 71 | Gui, Add, DDL, ys w150 R10 Choose%ch2% vp_locale, %localelist% 72 | 73 | Gui, Add, Text, xs Section +Right w70, Style: 74 | Gui, Add, DDL, ys w150 Choose%ch1% vp_style gDDL_Choose, %stylelist%|New... 75 | 76 | Gui, Add, Text, xs Section +Right w70, Encoding: 77 | Gui, Add, DDL, ys w150 +AltSubmit Choose%p_encoding% vp_encoding, %cplist_n% 78 | 79 | Gui, Add, Text, xs Section +Right w70, Code font: 80 | Gui, Add, DDL, ys w150 vp_font, % ListFonts() 81 | GuiControl ChooseString, p_font, %p_font% 82 | 83 | Gui, Add, Text, xs Section +Right w70, Text zoom: 84 | Gui, Add, Edit, ys w50 85 | Gui, Add, UpDown, vp_zoom Range-10-10, %p_zoom% 86 | Gui, Add, Text, ys, (requires restart) 87 | 88 | Gui, Add, CheckBox, xs+15 Checked%p_lineno% vp_lineno, Show line numbers (requires restart) 89 | Gui, Add, CheckBox, xs+15 Checked%p_backup% vp_backup, Auto-backups 90 | Gui, Add, CheckBox, xs+15 Checked%p_savepos% vp_savepos, Remember window position 91 | Gui, Add, CheckBox, xs+15 Checked%p_autoupd% vp_autoupd, Automatically check for updates 92 | 93 | Gui, Add, Button, xs+50 w60 Section gUpdate, Update 94 | Gui, Add, Button, ys xs+90 w60 gEditStyle, Edit style 95 | Gui, Show 96 | return 97 | 98 | DDL_Choose: 99 | Gui, +OwnDialogs 100 | GuiControlGet, n_style,, p_style 101 | if (n_style != "New...") 102 | { 103 | p_style := n_style 104 | return 105 | } 106 | GuiControl, ChooseString, p_style, %p_style% 107 | FileRead, qvar, %LocalSciTEPath%\Styles\%p_style%.style.properties 108 | if !RegExMatch(qvar, "`am)^s4ahk\.style=\d+$") 109 | p_style := "Blank" ; cannot fork an old-format style 110 | InputBox, newStyleName, SciTE properties editor, Enter the name of the new style...,,,,,,,, %p_style%_Edited 111 | if ErrorLevel 112 | return 113 | if not newStyleName := ValidateFilename(Trim(newStyleName)) 114 | return 115 | IfExist, %LocalSciTEPath%\Styles\%newStyleName%.style.properties 116 | { 117 | MsgBox, 48, SciTE properties editor, The style already exists. 118 | return 119 | } 120 | FileCopy, %LocalSciTEPath%\Styles\%p_style%.style.properties, %LocalSciTEPath%\Styles\%newStyleName%.style.properties 121 | if ErrorLevel 122 | { 123 | MsgBox, 16, SciTE properties editor, Error copying style. 124 | return 125 | } 126 | stylelist .= "|" newStyleName 127 | GuiControl,, p_style, |%stylelist%|New... 128 | GuiControl, ChooseString, p_style, %newStyleName% 129 | p_style := newStyleName 130 | goto EditStyle_ 131 | 132 | EditStyle: 133 | Gui, +OwnDialogs 134 | GuiControlGet, n_style,, p_style 135 | EditStyle_: 136 | Run, "%A_AhkPath%" "%A_ScriptDir%\StyleEdit.ahk" "%LocalSciTEPath%\Styles\%p_style%.style.properties" 137 | return 138 | 139 | GuiClose: 140 | ExitApp 141 | 142 | Update: 143 | Gui, Submit, NoHide 144 | 145 | if (p_locale != org_locale || p_zoom != org_zoom || p_lineno != org_lineno) 146 | { 147 | Gui, +OwnDialogs 148 | MsgBox, 52, SciTE properties editor, Changing the language or certain other settings requires restarting SciTE.`nReopen SciTE? 149 | IfMsgBox, No 150 | return 151 | restartSciTE := true 152 | } 153 | 154 | Update2: 155 | 156 | p_encoding := GetItem(cplist_v, p_encoding) 157 | 158 | FileRead, qvar, %LocalSciTEPath%\Styles\%p_style%.style.properties 159 | p_extra := "" 160 | /* 161 | if RegExMatch(qvar, "`am)^s4ahk\.style=1$") 162 | p_extra = 163 | (LTrim 164 | style.ahk1.0=$(s4ahk.style.default) 165 | style.ahk1.1=$(s4ahk.style.comment.line) 166 | style.ahk1.2=$(s4ahk.style.comment.block) 167 | style.ahk1.3=$(s4ahk.style.escape) 168 | style.ahk1.4=$(s4ahk.style.operator) 169 | style.ahk1.5=$(s4ahk.style.operator) 170 | style.ahk1.6=$(s4ahk.style.string) 171 | style.ahk1.7=$(s4ahk.style.number) 172 | style.ahk1.8=$(s4ahk.style.var) 173 | style.ahk1.9=$(s4ahk.style.var) 174 | style.ahk1.10=$(s4ahk.style.label) 175 | style.ahk1.11=$(s4ahk.style.flow) 176 | style.ahk1.12=$(s4ahk.style.bif) 177 | style.ahk1.13=$(s4ahk.style.func) 178 | style.ahk1.14=$(s4ahk.style.directive) 179 | style.ahk1.15=$(s4ahk.style.old.key) 180 | style.ahk1.16=$(s4ahk.style.biv) 181 | style.ahk1.17=$(s4ahk.style.wordop) 182 | style.ahk1.18=$(s4ahk.style.old.user) 183 | style.ahk1.19=$(s4ahk.style.biv) 184 | style.ahk1.20=$(s4ahk.style.error) 185 | if s4ahk.style.old.synop 186 | `tstyle.ahk1.4=$(s4ahk.style.old.synop) 187 | if s4ahk.style.old.deref 188 | `tstyle.ahk1.9=$(s4ahk.style.old.deref) 189 | if s4ahk.style.old.bivderef 190 | `tstyle.ahk1.19=$(s4ahk.style.old.bivderef) 191 | 192 | ) 193 | */ 194 | 195 | UserProps = 196 | ( 197 | # THIS FILE IS SCRIPT-GENERATED - DON'T TOUCH 198 | locale.properties=locales\%p_locale%.locale.properties 199 | make.backup=%p_backup% 200 | code.page=%p_encoding% 201 | output.code.page=%p_encoding% 202 | save.position=%p_savepos% 203 | magnification=%p_zoom% 204 | line.margin.visible=%p_lineno% 205 | default.text.font=%p_font% 206 | automatic.updates=%p_autoupd% 207 | import Styles\%p_style%.style 208 | %p_extra%import _extensions 209 | ) 210 | 211 | FileDelete, %UserPropsFile% 212 | FileAppend, %UserProps%, %UserPropsFile% 213 | 214 | ; Reload properties 215 | scite.ReloadProps() 216 | 217 | if restartSciTE 218 | { 219 | Gui, Destroy 220 | WinClose, ahk_id %scite_hwnd% 221 | WinWaitClose,,, 10 222 | if !ErrorLevel 223 | Run, "%A_ScriptDir%\..\SciTE.exe" 224 | ExitApp 225 | } 226 | 227 | return 228 | 229 | FindProp(regex, default := "") 230 | { 231 | global UserProps 232 | return RegExMatch(UserProps, "`am)^" regex "$", o) ? o1 : default 233 | } 234 | 235 | ReplaceProp(regex, repl) 236 | { 237 | global UserProps 238 | UserProps := RegExReplace(UserProps, "`am)^" regex "$", repl) 239 | } 240 | 241 | CountStylesAndChoose(ByRef choosenum) 242 | { 243 | global p_style, LocalSciTEPath 244 | i := 1 245 | 246 | Loop, %LocalSciTEPath%\Styles\*.properties 247 | { 248 | if !RegExMatch(A_LoopFileName, "\.style\.properties$") 249 | continue 250 | style := RegExReplace(A_LoopFileName, "\.style\.properties$") 251 | if(style = p_style) 252 | choosenum := i 253 | list .= "|" Style 254 | i ++ 255 | } 256 | StringTrimLeft, list, list, 1 257 | return list 258 | } 259 | 260 | CountLocalesAndChoose(ByRef choosenum) 261 | { 262 | global p_locale 263 | i := 1 264 | 265 | Loop, %A_ScriptDir%\..\locales\*.properties 266 | { 267 | if !RegExMatch(A_LoopFileName, "\.locale\.properties$") 268 | continue 269 | locale := RegExReplace(A_LoopFileName, "\.locale\.properties$") 270 | if (locale = p_locale) 271 | choosenum := i 272 | list .= "|" locale 273 | i ++ 274 | } 275 | StringTrimLeft, list, list, 1 276 | return list 277 | } 278 | 279 | ListFonts() 280 | { 281 | VarSetCapacity(logfont, 128, 0), NumPut(1, logfont, 23, "UChar") 282 | obj := [] 283 | DllCall("EnumFontFamiliesEx", "ptr", DllCall("GetDC", "ptr", 0), "ptr", &logfont, "ptr", RegisterCallback("EnumFontProc"), "ptr", &obj, "uint", 0) 284 | for font in obj 285 | list .= "|" font 286 | StringTrimLeft list, list, 1 287 | return list 288 | } 289 | 290 | EnumFontProc(lpFont, tm, fontType, lParam) 291 | { 292 | obj := Object(lParam) 293 | obj[StrGet(lpFont+28)] := 1 294 | return 1 295 | } 296 | 297 | FindInList(ByRef list, item, delim := "|") 298 | { 299 | Loop, Parse, list, %delim% 300 | if (A_LoopField = item) 301 | return A_Index 302 | } 303 | 304 | GetItem(ByRef list, id, delim := "|") 305 | { 306 | Loop, Parse, list, %delim% 307 | if (A_Index = id) 308 | return A_LoopField 309 | } 310 | 311 | ValidateFilename(fn) 312 | { 313 | StringReplace, fn, fn, \, _, All 314 | StringReplace, fn, fn, /, _, All 315 | StringReplace, fn, fn, :, _, All 316 | StringReplace, fn, fn, *, _, All 317 | StringReplace, fn, fn, ?, _, All 318 | StringReplace, fn, fn, ", _, All 319 | StringReplace, fn, fn, <, _, All 320 | StringReplace, fn, fn, >, _, All 321 | StringReplace, fn, fn, |, _, All 322 | return fn 323 | } 324 | -------------------------------------------------------------------------------- /source/tools/SUtility.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; Scriptlet Utility 3 | ; 4 | 5 | #NoEnv 6 | #NoTrayIcon 7 | #SingleInstance Ignore 8 | DetectHiddenWindows, On 9 | FileEncoding, UTF-8 10 | Menu, Tray, Icon, %A_ScriptDir%\..\toolicon.icl, 11 11 | progName = Scriptlet Utility 12 | 13 | scite := GetSciTEInstance() 14 | if !scite 15 | { 16 | MsgBox, 16, %progName%, SciTE COM object not found! 17 | ExitApp 18 | } 19 | 20 | textFont := scite.ResolveProp("default.text.font") 21 | LocalSciTEPath := scite.UserDir 22 | scitehwnd := scite.SciTEHandle 23 | 24 | sdir = %LocalSciTEPath%\Scriptlets 25 | IfNotExist, %sdir% 26 | { 27 | MsgBox, 16, %progName%, Scriptlet folder doesn't exist! 28 | ExitApp 29 | } 30 | 31 | ; Check command line 32 | if 1 = /insert 33 | { 34 | if 2 = 35 | { 36 | MsgBox, 64, %progName%, Usage: %A_ScriptName% /insert scriptletName 37 | ExitApp 38 | } 39 | IfNotExist, %sdir%\%2%.scriptlet 40 | { 41 | MsgBox, 52, %progName%, 42 | (LTrim 43 | Invalid scriptlet name: "%2%". 44 | Perhaps you have clicked on a toolbar icon whose scriptlet attached no longer exists? 45 | Press OK to edit the toolbar properties file. 46 | ) 47 | IfMsgBox, Yes 48 | scite.OpenFile(LocalSciTEPath "\UserToolbar.properties") 49 | ExitApp 50 | } 51 | FileRead, text2insert, %sdir%\%2%.scriptlet 52 | gosub InsertDirect 53 | ExitApp 54 | } 55 | 56 | if 1 = /addScriptlet 57 | { 58 | defaultScriptlet := scite.Selection 59 | if defaultScriptlet = 60 | { 61 | MsgBox, 16, %progName%, Nothing is selected! 62 | ExitApp 63 | } 64 | gosub AddBut ; that does it all 65 | if !_RC 66 | ExitApp ; Maybe the user has cancelled the action. 67 | MsgBox, 68, %progName%, Scriptlet added sucessfully. Do you want to open the scriptlet manager? 68 | IfMsgBox, Yes 69 | Reload ; no parameters are passed to script 70 | ExitApp 71 | } 72 | 73 | Gui, +MinSize Resize Owner%scitehwnd% 74 | Gui, Add, Button, Section gAddBut, New 75 | Gui, Add, Button, ys gRenBut, Rename 76 | Gui, Add, Button, ys gSubBut, Delete 77 | Gui, Add, ListBox, xs w160 h240 vMainListbox gSelectLB HScroll 78 | Gui, Add, Button, ys Section gToolbarBut, Add to toolbar 79 | Gui, Add, Button, ys gInsertBut, Insert into SciTE 80 | Gui, Add, Button, ys gSaveBut, Save 81 | Gui, Add, Button, ys gOpenInSciTE, Open in SciTE 82 | Gui, Font, S9, %textFont% 83 | Gui, Add, Edit, xs w320 h240 vScriptPane -Wrap WantTab HScroll 84 | Gui, Show,, %progName% 85 | 86 | selectQ = 87 | defaultScriptlet = 88 | gosub ListboxUpdate 89 | return 90 | 91 | GuiSize: 92 | Anchor("MainListbox", "h") 93 | Anchor("ScriptPane", "wh") 94 | return 95 | 96 | GuiGetPos(ctrl, guiId := "") 97 | { 98 | guiId := guiId ? (guiId ":") : "" 99 | GuiControlGet, ov, %guiId%Pos, %ctrl% 100 | return { x: ovx, y: ovy, w: ovw, h: ovh } 101 | } 102 | 103 | GuiClose: 104 | ExitApp 105 | 106 | SelectLB: 107 | GuiControlGet, fname2open,, MainListbox 108 | FileRead, scriptletText, %sdir%\%fname2open%.scriptlet 109 | GuiControl,, ScriptPane, % scriptletText 110 | Return 111 | 112 | AddBut: 113 | Gui +OwnDialogs 114 | InputBox, fname2create, %progName%, Enter the name of the scriptlet to create: 115 | if ErrorLevel 116 | return 117 | if !fname2create 118 | return 119 | fname2create := ValidateFilename(fname2create) 120 | IfExist, %sdir%\%fname2create%.scriptlet 121 | { 122 | gosub CompleteUpdate 123 | return 124 | } 125 | FileAppend, % defaultScriptlet, %sdir%\%fname2create%.scriptlet 126 | gosub CompleteUpdate 127 | _RC = 1 128 | Return 129 | 130 | CompleteUpdate: 131 | selectQ = %fname2create% 132 | gosub ListboxUpdate 133 | selectQ = 134 | if defaultScriptlet = 135 | gosub SelectLB 136 | return 137 | 138 | SubBut: 139 | Gui +OwnDialogs 140 | GuiControlGet, selected,, MainListbox 141 | if selected = 142 | return 143 | MsgBox, 52, %progName%, Are you sure you want to delete '%selected%'? 144 | IfMsgBox, No 145 | return 146 | FileDelete, %sdir%\%selected%.scriptlet 147 | fname2create = 148 | gosub CompleteUpdate 149 | return 150 | 151 | RenBut: 152 | Gui +OwnDialogs 153 | GuiControlGet, selected,, MainListbox 154 | if selected = 155 | return 156 | InputBox, fname2create, %progName%, Enter the new name of the scriptlet:,,,,,,,, %selected% 157 | if ErrorLevel 158 | return 159 | if !fname2create 160 | return 161 | if (fname2create = selected) 162 | return 163 | fname2create := ValidateFilename(fname2create) 164 | IfExist, %sdir%\%fname2create%.scriptlet 165 | { 166 | MsgBox, 48, %progName%, That name already exists!`nChoose another name please. 167 | return 168 | } 169 | FileMove, %sdir%\%selected%.scriptlet, %sdir%\%fname2create%.scriptlet 170 | gosub CompleteUpdate 171 | return 172 | 173 | ToolbarBut: 174 | GuiControlGet, selected,, MainListbox 175 | if selected = 176 | return 177 | 178 | FileAppend, `n=Scriptlet: %selected%|`%LOCALAHK`% tools\SUtility.ahk /insert "%selected%"||`%ICONRES`%`,12, %LocalSciTEPath%\UserToolbar.properties 179 | scite.Message(0x1000+2) 180 | return 181 | 182 | InsertBut: 183 | GuiControlGet, text2insert,, ScriptPane 184 | InsertDirect: 185 | if text2insert = 186 | return 187 | WinActivate, ahk_id %scitehwnd% 188 | scite.InsertText(text2insert) 189 | return 190 | 191 | SaveBut: 192 | GuiControlGet, fname2save,, MainListbox 193 | GuiControlGet, text2save,, ScriptPane 194 | FileDelete, %sdir%\%fname2save%.scriptlet 195 | FileAppend, % text2save, %sdir%\%fname2save%.scriptlet 196 | return 197 | 198 | OpenInSciTE: 199 | GuiControlGet, fname2open,, MainListbox 200 | if fname2open = 201 | return 202 | scite.OpenFile(sdir "\" fname2open ".scriptlet") 203 | return 204 | 205 | ListboxUpdate: 206 | te = 207 | Loop, %sdir%\*.scriptlet 208 | { 209 | SplitPath, A_LoopFileName,,,, sn 210 | if sn = 211 | continue 212 | te = %te%|%sn% 213 | if selectQ = %sn% 214 | te .= "|" 215 | } 216 | GuiControl,, MainListbox, % te 217 | return 218 | 219 | ValidateFilename(fn) 220 | { 221 | StringReplace, fn, fn, \, _, All 222 | StringReplace, fn, fn, /, _, All 223 | StringReplace, fn, fn, :, _, All 224 | StringReplace, fn, fn, *, _, All 225 | StringReplace, fn, fn, ?, _, All 226 | StringReplace, fn, fn, ", _, All 227 | StringReplace, fn, fn, <, _, All 228 | StringReplace, fn, fn, >, _, All 229 | StringReplace, fn, fn, |, _, All 230 | return fn 231 | } 232 | -------------------------------------------------------------------------------- /source/tools/SciTEDiag.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; SciTE4AutoHotkey Diagnostics Utility 3 | ; 4 | 5 | #NoEnv 6 | SetWorkingDir, %A_ScriptDir% 7 | 8 | oSciTE := GetSciTEInstance() 9 | if !oSciTE 10 | { 11 | MsgBox, 16, SciTE4AutoHotkey, Cannot find SciTE! 12 | ExitApp 13 | } 14 | 15 | SciTEDir := oSciTE.SciTEDir 16 | A_AhkBin := oSciTE.ResolveProp("AutoHotkey") 17 | A_AhkDir := oSciTE.ResolveProp("AutoHotkeyDir") 18 | textFont := oSciTE.ResolveProp("default.text.font") 19 | 20 | MsgBox, 36, SciTE Diagnostics Utility, 21 | ( 22 | This program will list all the contents of the following folder and its subdirectories, which might contain sensitive information: 23 | 24 | %A_AhkDir% 25 | 26 | Additionally it will list all the active properties. 27 | You will be able to edit the generated text file in order to remove such information. 28 | 29 | Continue? 30 | ) 31 | 32 | IfMsgBox, No 33 | ExitApp 34 | 35 | diagtext := "SciTE Diagnostic Info`n=====================`n`nSciTE dir: " SciTEDir 36 | . "`nAutoHotkey build: " GetAhkVer(A_AhkBin) "`nCurrent platform: " oSciTE.ActivePlatform "`n`n" 37 | 38 | RunWait, %comspec% /c tree /F /A "%A_AhkDir%" >> "%A_Temp%\Diag.txt",, Hide 39 | FileEncoding, % "CP" DllCall("GetOEMCP", "UInt") 40 | FileRead, ov, %A_Temp%\Diag.txt 41 | diagtext .= ov 42 | FileDelete, %A_Temp%\Diag.txt 43 | FileEncoding, UTF-8 44 | 45 | proptypes = dyn|local|directory|user|base|embed|abbrev 46 | 47 | Loop, Parse, proptypes, | 48 | { 49 | props := oSciTE.SendDirectorMsgRetArray("enumproperties:" A_LoopField) 50 | for prop in props 51 | AddProp(diagtext, prop.value) 52 | } 53 | 54 | Menu, MenuBar, Add, Save to file, FileSave 55 | Menu, MenuBar, Add, Copy to clipboard, ClipSave 56 | 57 | Gui, +Resize 58 | Gui, Menu, MenuBar 59 | Gui, Font, s10, %textFont% 60 | Gui, Add, Edit, x0 y0 w640 h480 vdiagtext, % diagtext 61 | Gui, Show, w640 h480, SciTE diagnostic info 62 | return 63 | 64 | GuiClose: 65 | ExitApp 66 | 67 | GuiSize: 68 | GuiControl, Move, diagtext, w%A_GuiWidth% h%A_GuiHeight% 69 | return 70 | 71 | FileSave: 72 | FileSelectFile, ov, S16,, Save file..., Text files (*.txt) 73 | if ErrorLevel 74 | return 75 | 76 | SplitPath, ov,, ovdir,, ovname 77 | ov := ovdir "\" ovname ".txt" 78 | 79 | Gui, Submit, NoHide 80 | FileDelete, %ov% 81 | FileAppend, % diagtext, %ov% 82 | MsgBox, 64, SciTE diagnostic tool, Diagnostic info successfully saved! 83 | return 84 | 85 | ClipSave: 86 | Gui, Submit, NoHide 87 | StringReplace, Clipboard, diagtext, `n, `r`n, All 88 | MsgBox, 64, SciTE diagnostic tool, Diagnostic info copied to clipboard! 89 | return 90 | 91 | GetAhkVer(ahk) 92 | { 93 | RunWait, "%ahk%" "%A_ScriptDir%\__AhkVer.ahk" 94 | FileRead, ov, %A_Temp%\__AhkVer.txt 95 | return ov 96 | } 97 | 98 | AddProp(ByRef ov, ByRef prop) 99 | { 100 | pos := InStr(prop, ":") 101 | type := SubStr(prop, 1, pos-1) 102 | prop := SubStr(prop, pos+1) 103 | pos := InStr(prop, "=") 104 | name := SubStr(prop, 1, pos-1) 105 | val := SubStr(prop, pos+1) 106 | ov .= "(" type ") " name "=" val "`n" 107 | } 108 | -------------------------------------------------------------------------------- /source/tools/SciTEReload.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; SciTE4AutoHotkey Reload Script 3 | ; 4 | 5 | #NoEnv 6 | SendMode, Input 7 | SetWorkingDir, %A_ScriptDir%\..\ 8 | 9 | if 0 = 0 10 | { 11 | MsgBox, 16, SciTE4AutoHotkey, You mustn't run this script directly! 12 | ExitApp 13 | } 14 | 15 | hWnd = %1% 16 | 17 | IfWinExist, ahk_id %1% 18 | WinWaitClose 19 | 20 | Sleep, 1000 21 | 22 | Run, "%A_WorkingDir%\SciTE.exe" 23 | -------------------------------------------------------------------------------- /source/tools/SciTEUpdate.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; SciTE4AutoHotkey Updater 3 | ; 4 | 5 | #SingleInstance Off 6 | #NoEnv 7 | #NoTrayIcon 8 | SendMode Input 9 | SetWorkingDir, %A_ScriptDir% 10 | 11 | baseurl := "https://www.autohotkey.com/scite4ahk" 12 | isPortable := InStr(FileExist("..\user"), "D") 13 | today := SubStr(A_Now, 1, 8) 14 | if !isPortable 15 | LocalSciTEPath = %A_MyDocuments%\AutoHotkey\SciTE 16 | else 17 | LocalSciTEPath = %A_ScriptDir%\..\user 18 | 19 | if 1 = /silent 20 | isSilent := true 21 | if 1 = /doUpdate 22 | { 23 | if !A_IsAdmin 24 | ExitApp 25 | curRev = %2% 26 | toFetch = %3% 27 | curRev += 0 28 | toFetch += 0 29 | goto _doUpdate 30 | } 31 | 32 | if isSilent 33 | { 34 | FileRead, lastUpdate, %LocalSciTEPath%\$LASTUPDATE 35 | if (lastUpdate = today) 36 | ExitApp 37 | } 38 | 39 | curVer := GetSciTEVersion() 40 | if !curVer 41 | ExitApp 42 | 43 | f = %A_Temp%\%A_TickCount%.txt 44 | if !isSilent 45 | ToolTip, Fetching update info... 46 | try 47 | { 48 | URLDownloadToFile, %baseurl%/upd/version.txt, %f% 49 | FileRead, latestVer, %f% 50 | URLDownloadToFile, %baseurl%/upd/revision.txt, %f% 51 | FileRead, latestRev, %f% 52 | if !isSilent 53 | ToolTip 54 | }catch 55 | { 56 | if !isSilent 57 | { 58 | ToolTip 59 | MsgBox, 16, SciTE4AutoHotkey Updater, Can't connect to the Internet! 60 | } 61 | ExitApp 62 | } 63 | 64 | ; Guard against allegedly 'user friendly' proxies that block HTTP access to unauthorized websites 65 | if RegExMatch(latestVer, "[^0-9\.\-]") || RegExMatch(latestRev, "\D") 66 | { 67 | ; Bad luck, try again tomorrow 68 | FileDelete, %LocalSciTEPath%\$LASTUPDATE 69 | FileAppend, %today%, %LocalSciTEPath%\$LASTUPDATE 70 | ExitApp 71 | } 72 | 73 | if (curVer < latestVer) 74 | { 75 | MsgBox, 36, SciTE4AutoHotkey Updater, 76 | (LTrim 77 | There is a new SciTE4AutoHotkey version. 78 | 79 | Current version:`t%curVer% 80 | Latest version:`t%latestVer% 81 | 82 | Do you wish to download and install it? (a website will be opened) 83 | Keep in mind that your current version is no longer supported and 84 | you aren't able anymore to receive hotfixes and definition updates 85 | until you upgrade to the latest version. 86 | ) 87 | IfMsgBox, Yes 88 | Run, %baseurl%/ 89 | ExitApp 90 | } 91 | 92 | FileRead, curRev, ..\$REVISION 93 | if curRev = 94 | curRev := 0 95 | 96 | if (curRev >= latestRev) 97 | { 98 | FileDelete, %LocalSciTEPath%\$LASTUPDATE 99 | FileAppend, %today%, %LocalSciTEPath%\$LASTUPDATE 100 | if !isSilent 101 | MsgBox, 64, SciTE4AutoHotkey Updater, SciTE4AutoHotkey is up to date. 102 | ExitApp 103 | } 104 | 105 | toFetch := latestRev - curRev 106 | 107 | MsgBox, 36, SciTE4AutoHotkey Updater, 108 | ( 109 | There are %toFetch% update(s) available for SciTE4AutoHotkey. 110 | 111 | Do you wish to download and install them? 112 | ) 113 | IfMsgBox, No 114 | ExitApp 115 | 116 | CloseSciTE() 117 | 118 | if !isPortable && !A_IsAdmin 119 | { 120 | Run, *RunAs "%A_AhkPath%" "%A_ScriptFullPath%" /doUpdate %curRev% %toFetch% 121 | ExitApp 122 | } 123 | 124 | _doUpdate: 125 | 126 | Gui, Add, Text, x12 y10 w390 h20 vMainLabel, Please wait whilst updates are being processed... 127 | Gui, Add, ListView, x12 y30 w390 h180 NoSortHdr NoSort -LV0x10 LV0x1, #|Status|Title|Description 128 | Gui, Show, w411 h226, SciTE4AutoHotkey Updater 129 | Gui, +OwnDialogs 130 | 131 | Loop, % toFetch 132 | { 133 | i := curRev + A_Index 134 | LV_Add("", i, "Queued", "<>", "<>") 135 | } 136 | LV_ModifyCol() 137 | 138 | Loop, % toFetch 139 | { 140 | i := curRev + A_Index 141 | LV_Modify(A_Index, "", i, "Downloading...", "<>", "<>") 142 | LV_ModifyCol() 143 | 144 | try 145 | { 146 | URLDownloadToFile, %baseurl%/upd/%i%.bin, %A_Temp%\S4AHKupd_%i%.bin 147 | 148 | upd := new Update(A_Temp "\S4AHKupd_" i ".bin", "{912B7AED-660B-4BC4-8DA3-34E394D9BBBA}") 149 | LV_Modify(A_Index, "", i, "Running...", upd.title, upd.descr) 150 | LV_ModifyCol() 151 | 152 | updfold = %A_Temp%\SciTEUpdate%A_Now% 153 | FileCreateDir, %updfold% 154 | upd.Run(updfold) 155 | FileRemoveDir, %updfold%, 1 156 | 157 | IfExist, ..\$REVISION 158 | FileDelete, ..\$REVISION 159 | FileAppend, %i%, ..\$REVISION 160 | 161 | LV_Modify(A_Index, "", i, "Done!", upd.title, upd.descr) 162 | LV_ModifyCol() 163 | 164 | upd := "" 165 | }catch e 166 | { 167 | GuiControl,, MainLabel, There were errors during the update. 168 | updDone := 1 169 | MsgBox, 16, SciTE4AutoHotkey Updater, % "There was an error during the update!`n" e.message "`nwhat: " e.what "`nextra: " e.extra 170 | return 171 | } 172 | } 173 | 174 | FileDelete, %LocalSciTEPath%\$LASTUPDATE 175 | FileAppend, %today%, %LocalSciTEPath%\$LASTUPDATE 176 | 177 | GuiControl,, MainLabel, You may now close this window and reopen SciTE. 178 | updDone := 1 179 | MsgBox, 64, SciTE4AutoHotkey Updater, SciTE4AutoHotkey was successfully updated! 180 | return 181 | 182 | GuiClose: 183 | if !updDone 184 | { 185 | MsgBox, 48, SciTE4AutoHotkey Updater, You cannot stop the updating process. 186 | return 187 | } 188 | ExitApp 189 | 190 | /* 191 | Format of a SciTE4AutoHotkey update file: 192 | 193 | typedef struct 194 | { 195 | char magic[4]; // fUPD 196 | byte_t guid[16]; // program GUID 197 | int revision; 198 | int fileCount; 199 | int scriptFile; 200 | int infoOff; 201 | } updateHeader_t; 202 | 203 | typedef struct 204 | { 205 | int dataLen; 206 | byte_t data[dataLen]; 207 | } updateFile_t; 208 | 209 | typedef struct 210 | { 211 | int nameLen, descrLen; 212 | char name[nameLen]; // UTF-8 213 | char descr[descrLen]; // UTF-8 214 | } updateInfo_t; 215 | */ 216 | 217 | class Update 218 | { 219 | __New(filename, reqGUID) 220 | { 221 | f := FileOpen(filename, "r", "UTF-8-RAW") 222 | if f.Read(4) != "fUPD" 223 | throw Exception("Invalid update file!", 0, filename) 224 | if ReadGUID(f) != reqGUID 225 | throw Exception("Invalid update file!", 0, filename) 226 | this.f := f 227 | this.revision := f.ReadUInt() 228 | this.fileCount := f.ReadUInt() 229 | this.scriptID := f.ReadUInt() 230 | infoPos := f.ReadUInt() 231 | this.filePos := f.Pos 232 | f.Pos := infoPos 233 | titleLen := f.ReadUInt(), descrLen := f.ReadUInt() 234 | VarSetCapacity(buf, infoSize := titleLen + descrLen) ; + 2) 235 | f.RawRead(buf, infoSize) 236 | this.title := StrGet(&buf, titleLen, "UTF-8") 237 | this.descr := StrGet(&buf + titleLen, descrLen, "UTF-8") 238 | } 239 | 240 | Run(target) 241 | { 242 | sID := this.scriptID 243 | f := this.f 244 | f.Pos := this.filePos 245 | Loop, % this.fileCount 246 | { 247 | id := A_Index-1 248 | size := f.ReadUInt() 249 | if !size 250 | continue 251 | f2 := FileOpen(target "\" (id != sID ? id ".bin" : "update.ahk"), "w") 252 | VarSetCapacity(buf, size) 253 | f.RawRead(buf, size) 254 | f2.RawWrite(buf, size) 255 | f2 := "" 256 | } 257 | VarSetCapacity(buf, 0) 258 | 259 | FileCreateDir, %target%\Lib 260 | FileCopy, %A_ScriptDir%\Lib\SUpd.ahk, %target%\Lib\SUpd.ahk 261 | 262 | RunWait, "%A_AhkPath%" "%target%\update.ahk" 263 | if ErrorLevel != 0 264 | throw Exception("Update failed.", 0, "Revision " this.revision) 265 | } 266 | 267 | __Delete() 268 | { 269 | this.f.Close() 270 | } 271 | } 272 | 273 | GetSciTEVersion() 274 | { 275 | o := GetSciTEInstance() 276 | return o ? o.Version : "" 277 | } 278 | 279 | CloseSciTE() 280 | { 281 | o := GetSciTEInstance() 282 | if !o 283 | return 284 | hWnd := o.SciTEHandle 285 | o := "" 286 | WinClose, ahk_id %hwnd% 287 | WinWaitClose, ahk_id %hwnd%,, 5 288 | if ErrorLevel = 1 289 | ExitApp 290 | } 291 | 292 | ReadGUID(f) 293 | { 294 | VarSetCapacity(bGUID, 16) 295 | f.RawRead(bGUID, 16) 296 | VarSetCapacity(guid, 100) 297 | DllCall("ole32\StringFromGUID2", "ptr", &bGUID, "ptr", &guid, "int", 50) 298 | return StrGet(&guid, "UTF-16") 299 | } 300 | -------------------------------------------------------------------------------- /source/tools/SmartGUI/grid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/source/tools/SmartGUI/grid.gif -------------------------------------------------------------------------------- /source/tools/SmartGUI/smartgui.icl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/source/tools/SmartGUI/smartgui.icl -------------------------------------------------------------------------------- /source/tools/SmartGUI/splash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/source/tools/SmartGUI/splash.gif -------------------------------------------------------------------------------- /source/tools/WindowSpy.ahk: -------------------------------------------------------------------------------- 1 | ; 2 | ; Window Spy 3 | ; 4 | 5 | #NoEnv 6 | #NoTrayIcon 7 | #SingleInstance Ignore 8 | SetWorkingDir, %A_ScriptDir% 9 | SetBatchLines, -1 10 | CoordMode, Pixel, Screen 11 | 12 | IfExist, ..\toolicon.icl ; Seems useful enough to support standalone operation. 13 | Menu, Tray, Icon, ..\toolicon.icl, 9 14 | 15 | txtNotFrozen := "(Hold Ctrl or Shift to suspend updates)" 16 | txtFrozen := "(Updates suspended)" 17 | txtMouseCtrl := "Control Under Mouse Position" 18 | txtFocusCtrl := "Focused Control" 19 | 20 | Gui, New, hwndhGui AlwaysOnTop Resize MinSize 21 | Gui, Add, Text,, Window Title, Class and Process: 22 | Gui, Add, Checkbox, yp xp+200 w120 Right vCtrl_FollowMouse, Follow Mouse 23 | Gui, Add, Edit, xm w320 r4 ReadOnly -Wrap vCtrl_Title 24 | Gui, Add, Text,, Mouse Position: 25 | Gui, Add, Edit, w320 r4 ReadOnly vCtrl_MousePos 26 | Gui, Add, Text, w320 vCtrl_CtrlLabel, % txtFocusCtrl ":" 27 | Gui, Add, Edit, w320 r4 ReadOnly vCtrl_Ctrl 28 | Gui, Add, Text,, Active Window Position: 29 | Gui, Add, Edit, w320 r2 ReadOnly vCtrl_Pos 30 | Gui, Add, Text,, Status Bar Text: 31 | Gui, Add, Edit, w320 r2 ReadOnly vCtrl_SBText 32 | Gui, Add, Checkbox, vCtrl_IsSlow, Slow TitleMatchMode 33 | Gui, Add, Text,, Visible Text: 34 | Gui, Add, Edit, w320 r2 ReadOnly vCtrl_VisText 35 | Gui, Add, Text,, All Text: 36 | Gui, Add, Edit, w320 r2 ReadOnly vCtrl_AllText 37 | Gui, Add, Text, w320 r1 vCtrl_Freeze, % txtNotFrozen 38 | Gui, Show, NoActivate, Window Spy 39 | GetClientSize(hGui, temp) 40 | horzMargin := temp*96//A_ScreenDPI - 320 41 | SetTimer, Update, 250 42 | return 43 | 44 | GuiSize: 45 | Gui %hGui%:Default 46 | if !horzMargin 47 | return 48 | SetTimer, Update, % A_EventInfo=1 ? "Off" : "On" ; Suspend on minimize 49 | ctrlW := A_GuiWidth - horzMargin 50 | list = Title,MousePos,Ctrl,Pos,SBText,VisText,AllText,Freeze 51 | Loop, Parse, list, `, 52 | GuiControl, Move, Ctrl_%A_LoopField%, w%ctrlW% 53 | return 54 | 55 | Update: 56 | Gui %hGui%:Default 57 | GuiControlGet, Ctrl_FollowMouse 58 | CoordMode, Mouse, Screen 59 | MouseGetPos, msX, msY, msWin, msCtrl 60 | actWin := WinExist("A") 61 | if Ctrl_FollowMouse 62 | { 63 | curWin := msWin 64 | curCtrl := msCtrl 65 | WinExist("ahk_id " curWin) 66 | } 67 | else 68 | { 69 | curWin := actWin 70 | ControlGetFocus, curCtrl 71 | } 72 | WinGetTitle, t1 73 | WinGetClass, t2 74 | if (curWin = hGui || t2 = "MultitaskingViewFrame") ; Our Gui || Alt-tab 75 | { 76 | UpdateText("Ctrl_Freeze", txtFrozen) 77 | return 78 | } 79 | UpdateText("Ctrl_Freeze", txtNotFrozen) 80 | WinGet, t3, ProcessName 81 | WinGet, t4, PID 82 | UpdateText("Ctrl_Title", t1 "`nahk_class " t2 "`nahk_exe " t3 "`nahk_pid " t4) 83 | CoordMode, Mouse, Relative 84 | MouseGetPos, mrX, mrY 85 | CoordMode, Mouse, Client 86 | MouseGetPos, mcX, mcY 87 | PixelGetColor, mClr, %msX%, %msY%, RGB 88 | mClr := SubStr(mClr, 3) 89 | UpdateText("Ctrl_MousePos", "Screen:`t" msX ", " msY " (less often used)`nWindow:`t" mrX ", " mrY " (default)`nClient:`t" mcX ", " mcY " (recommended)" 90 | . "`nColor:`t" mClr " (Red=" SubStr(mClr, 1, 2) " Green=" SubStr(mClr, 3, 2) " Blue=" SubStr(mClr, 5) ")") 91 | UpdateText("Ctrl_CtrlLabel", (Ctrl_FollowMouse ? txtMouseCtrl : txtFocusCtrl) ":") 92 | if (curCtrl) 93 | { 94 | ControlGetText, ctrlTxt, %curCtrl% 95 | cText := "ClassNN:`t" curCtrl "`nText:`t" textMangle(ctrlTxt) 96 | ControlGetPos cX, cY, cW, cH, %curCtrl% 97 | cText .= "`n`tx: " cX "`ty: " cY "`tw: " cW "`th: " cH 98 | WinToClient(curWin, cX, cY) 99 | ControlGet, curCtrlHwnd, Hwnd,, % curCtrl 100 | GetClientSize(curCtrlHwnd, cW, cH) 101 | cText .= "`nClient:`tx: " cX "`ty: " cY "`tw: " cW "`th: " cH 102 | } 103 | else 104 | cText := "" 105 | UpdateText("Ctrl_Ctrl", cText) 106 | WinGetPos, wX, wY, wW, wH 107 | GetClientSize(curWin, wcW, wcH) 108 | UpdateText("Ctrl_Pos", "`tx: " wX "`ty: " wY "`tw: " wW "`th: " wH "`nClient:`tx: 0`ty: 0`tw: " wcW "`th: " wcH) 109 | sbTxt := "" 110 | Loop 111 | { 112 | StatusBarGetText, ovi, %A_Index% 113 | if ovi = 114 | break 115 | sbTxt .= "(" A_Index "):`t" textMangle(ovi) "`n" 116 | } 117 | StringTrimRight, sbTxt, sbTxt, 1 118 | UpdateText("Ctrl_SBText", sbTxt) 119 | GuiControlGet, bSlow,, Ctrl_IsSlow 120 | if bSlow 121 | { 122 | DetectHiddenText, Off 123 | WinGetText, ovVisText 124 | DetectHiddenText, On 125 | WinGetText, ovAllText 126 | } 127 | else 128 | { 129 | ovVisText := WinGetTextFast(false) 130 | ovAllText := WinGetTextFast(true) 131 | } 132 | UpdateText("Ctrl_VisText", ovVisText) 133 | UpdateText("Ctrl_AllText", ovAllText) 134 | return 135 | 136 | GuiClose: 137 | ExitApp 138 | 139 | WinGetTextFast(detect_hidden) 140 | { 141 | ; WinGetText ALWAYS uses the "Slow" mode - TitleMatchMode only affects the 142 | ; WinText/ExcludeText parameters. In "Fast" mode, GetWindowText() is used 143 | ; to retrieve the text of each control. 144 | WinGet controls, ControlListHwnd 145 | static WINDOW_TEXT_SIZE := 32767 ; Defined in AutoHotkey source. 146 | VarSetCapacity(buf, WINDOW_TEXT_SIZE * (A_IsUnicode ? 2 : 1)) 147 | text := "" 148 | Loop Parse, controls, `n 149 | { 150 | if !detect_hidden && !DllCall("IsWindowVisible", "ptr", A_LoopField) 151 | continue 152 | if !DllCall("GetWindowText", "ptr", A_LoopField, "str", buf, "int", WINDOW_TEXT_SIZE) 153 | continue 154 | text .= buf "`r`n" 155 | } 156 | return text 157 | } 158 | 159 | UpdateText(ControlID, NewText) 160 | { 161 | ; Unlike using a pure GuiControl, this function causes the text of the 162 | ; controls to be updated only when the text has changed, preventing periodic 163 | ; flickering (especially on older systems). 164 | static OldText := {} 165 | global hGui 166 | if (OldText[ControlID] != NewText) 167 | { 168 | GuiControl, %hGui%:, % ControlID, % NewText 169 | OldText[ControlID] := NewText 170 | } 171 | } 172 | 173 | GetClientSize(hWnd, ByRef w := "", ByRef h := "") 174 | { 175 | VarSetCapacity(rect, 16) 176 | DllCall("GetClientRect", "ptr", hWnd, "ptr", &rect) 177 | w := NumGet(rect, 8, "int") 178 | h := NumGet(rect, 12, "int") 179 | } 180 | 181 | WinToClient(hWnd, ByRef x, ByRef y) 182 | { 183 | WinGetPos wX, wY,,, ahk_id %hWnd% 184 | x += wX, y += wY 185 | VarSetCapacity(pt, 8), NumPut(y, NumPut(x, pt, "int"), "int") 186 | if !DllCall("ScreenToClient", "ptr", hWnd, "ptr", &pt) 187 | return false 188 | x := NumGet(pt, 0, "int"), y := NumGet(pt, 4, "int") 189 | return true 190 | } 191 | 192 | textMangle(x) 193 | { 194 | if pos := InStr(x, "`n") 195 | x := SubStr(x, 1, pos-1), elli := true 196 | if StrLen(x) > 40 197 | { 198 | StringLeft, x, x, 40 199 | elli := true 200 | } 201 | if elli 202 | x .= " (...)" 203 | return x 204 | } 205 | 206 | ~*Ctrl:: 207 | ~*Shift:: 208 | SetTimer, Update, Off 209 | UpdateText("Ctrl_Freeze", txtFrozen) 210 | return 211 | 212 | ~*Ctrl up:: 213 | ~*Shift up:: 214 | SetTimer, Update, On 215 | return 216 | -------------------------------------------------------------------------------- /source/tools/__AhkVer.ahk: -------------------------------------------------------------------------------- 1 | #NoTrayIcon 2 | #NoEnv 3 | FileDelete, %A_Temp%\__AhkVer.txt 4 | FileAppend, % "AutoHotkey v" A_AhkVersion (A_PtrSize ? A_PtrSize = 8 ? " (64-bit)" : " (32-bit " (A_IsUnicode ? "Unicode)" : "ANSI)") : " (Legacy)"), %A_Temp%\__AhkVer.txt 5 | -------------------------------------------------------------------------------- /source/tools/s4ahk-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/source/tools/s4ahk-big.png -------------------------------------------------------------------------------- /source/tools/s4ahk-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fincs/SciTE4AutoHotkey/f194e5fbc7f0c04689fc39acb198d9ca9a46e7a9/source/tools/s4ahk-small.png -------------------------------------------------------------------------------- /syntaxgen/Common.ahk: -------------------------------------------------------------------------------- 1 | #Requires AutoHotkey v2-b+ 2 | 3 | FileRewrite(path, contents) { 4 | try FileDelete path 5 | FileAppend contents, path, "`n" 6 | } 7 | 8 | ControlFlowCasing(item) { 9 | if item == 'Loop' or item ~= "^If.+" 10 | return item 11 | else 12 | return StrLower(item) 13 | } 14 | 15 | CreateKeywordList(arr) { 16 | build := "", cline := "" 17 | for x in arr { 18 | x := StrLower(x) 19 | pline := cline " " x 20 | if StrLen(pline) > 78 { 21 | build .= cline " \`n" 22 | cline := x 23 | } else { 24 | cline .= " " x 25 | } 26 | } 27 | return SubStr(build cline, 2) "`n" 28 | } 29 | 30 | CreateApiList(arr, prefix := "", suffix := "") { 31 | build := "" 32 | for x in arr { 33 | build .= prefix x suffix "`n" 34 | } 35 | return build 36 | } 37 | 38 | class Set extends Map { 39 | __New(p*) { 40 | super.__New() 41 | super.CaseSense := "Off" 42 | for x in p { 43 | this.Add(x) 44 | } 45 | } 46 | 47 | Add(value) { 48 | super[value] := true 49 | } 50 | 51 | Filter(other) { 52 | for key in other { 53 | try this.Delete(key) 54 | } 55 | } 56 | 57 | static FilterAll(sets*) { 58 | for cur in sets { 59 | Loop A_Index-1 { 60 | cur.Filter(sets[A_Index]) 61 | } 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /syntaxgen/CreateAhk1.ahk: -------------------------------------------------------------------------------- 1 | #Requires AutoHotkey v2-b+ 2 | #Include "Common.ahk" 3 | 4 | FileEncoding "UTF-8-RAW" 5 | SetWorkingDir A_ScriptDir "\..\source" 6 | 7 | if A_PtrSize != 4 { 8 | MsgBox "This script only works with the 32-bit version of AutoHotkey." 9 | ExitApp 10 | } 11 | 12 | g_ahk2DocsPath := A_WorkingDir "\..\..\AutoHotkey_v1_Docs" 13 | 14 | sc := ComObject("ScriptControl"), sc.Language := "JScript" 15 | sc.AddCode(FileRead(g_ahk2DocsPath "\docs\static\source\data_index.js")) 16 | ji := sc.Eval("indexData") 17 | if !ji || !ji.length 18 | throw Error("Failed to read/parse data_index.js") 19 | 20 | g_directives := Set() 21 | g_controlFlow := Set() 22 | g_reserved := Set( 23 | "true", "false", "base", "extends", "__Get", "__Set", "__Call", "__Delete", "__New", 24 | "Parse", "Files", "Read", "Reg", 25 | "ahk_id", "ahk_class", "ahk_pid", "ahk_exe", "ahk_group", 26 | ) 27 | g_knownVars := Set("this") 28 | g_knownFuncs := Set() 29 | g_knownCmds := Set() 30 | 31 | ignoreKeywords := Set("default") 32 | 33 | Loop ji.length { 34 | item_name := ji.%A_Index-1%.0 35 | item_path := ji.%A_Index-1%.1 36 | try item_type := ji.%A_Index-1%.2 37 | catch Any 38 | item_type := -1 39 | 40 | if !RegExMatch(item_name, "^(#?[a-zA-Z_][0-9a-zA-Z_]*)", &o) or ignoreKeywords.Has(o[1]) 41 | continue 42 | 43 | /* 44 | 0 - directive 45 | 1 - built-in var 46 | 2 - built-in function 47 | 3 - control flow statement 48 | 4 - operator 49 | 5 - declaration 50 | 6 - command 51 | 99 - Ahk2Exe compiler 52 | */ 53 | 54 | item_name := o[1] 55 | switch item_type { 56 | ; Directives 57 | case 0: g_directives.Add SubStr(item_name, 2) ; remove initial # 58 | case 1: g_knownVars.Add item_name 59 | case 2: g_knownFuncs.Add item_name 60 | case 6: g_knownCmds.Add item_name 61 | case 4,5: g_reserved.Add item_name 62 | case 3: g_controlFlow.Add ControlFlowCasing(item_name) 63 | } 64 | } 65 | 66 | ; Make sure each keyword is only in the first keyword set it appears in 67 | ;Set.FilterAll(g_controlFlow, g_reserved, g_knownFuncs, g_knownCmds, g_knownVars) 68 | Set.FilterAll(g_controlFlow, g_reserved, g_knownFuncs, g_knownVars) 69 | Set.FilterAll(g_controlFlow, g_reserved, g_knownCmds, g_knownVars) 70 | 71 | props := "# This file is autogenerated by " A_ScriptName " - DO NOT UPDATE MANUALLY`n`n" 72 | props .= "ahk1.keywords.directives=\`n" 73 | props .= CreateKeywordList(g_directives) "`n" 74 | props .= "ahk1.keywords.flow=\`n" 75 | props .= CreateKeywordList(g_controlFlow) "`n" 76 | props .= "ahk1.keywords.reserved=\`n" 77 | props .= CreateKeywordList(g_reserved) "`n" 78 | props .= "ahk1.keywords.known.vars=\`n" 79 | props .= CreateKeywordList(g_knownVars) "`n" 80 | props .= "ahk1.keywords.known.funcs=\`n" 81 | props .= CreateKeywordList(g_knownFuncs) "`n" 82 | props .= "ahk1.keywords.known.cmds=\`n" 83 | props .= CreateKeywordList(g_knownCmds) 84 | 85 | FileRewrite "ahk1.keywords.properties", props 86 | 87 | api := CreateApiList(g_directives, "#") 88 | api .= CreateApiList(g_controlFlow) 89 | api .= CreateApiList(g_reserved) 90 | api .= CreateApiList(g_knownVars) 91 | api .= CreateApiList(g_knownFuncs) 92 | api .= CreateApiList(g_knownCmds) 93 | 94 | FileRewrite "ahk1.standard.api", api 95 | -------------------------------------------------------------------------------- /syntaxgen/CreateAhk2.ahk: -------------------------------------------------------------------------------- 1 | #Requires AutoHotkey v2-b+ 2 | #Include "Common.ahk" 3 | 4 | FileEncoding "UTF-8-RAW" 5 | SetWorkingDir A_ScriptDir "\..\source" 6 | 7 | if A_PtrSize != 4 { 8 | MsgBox "This script only works with the 32-bit version of AutoHotkey." 9 | ExitApp 10 | } 11 | 12 | g_ahk2DocsPath := A_WorkingDir "\..\..\AutoHotkey_v2_Docs" 13 | 14 | sc := ComObject("ScriptControl"), sc.Language := "JScript" 15 | sc.AddCode(FileRead(g_ahk2DocsPath "\docs\static\source\data_index.js")) 16 | ji := sc.Eval("indexData") 17 | if !ji || !ji.length 18 | throw Error("Failed to read/parse data_index.js") 19 | 20 | ; XX: Overrides for expression-directives. For some reason these are tagged as 21 | ; taking a string, even though they really take an integer (or a boolean). 22 | g_directivesExpr := Set("ClipboardTimeout","HotIfTimeout","InputLevel","MaxThreads", 23 | "MaxThreadsBuffer","MaxThreadsPerHotkey","SuspendExempt","UseHook","WinActivateForce") 24 | g_directivesStr := Set() 25 | 26 | ; XX: Some of these have missing entries - manually add them in. 27 | ; We also recategorize true/false as reserved words, as they aren't actually variables. 28 | g_controlFlow := Set("Loop") 29 | g_reserved := Set("as", "contains", "false", "in", "IsSet", "super", "true", "unset") 30 | g_knownVars := Set("this", "ThisHotkey") 31 | g_knownFuncs := Set() 32 | g_knownClasses := Set() 33 | 34 | g_knownProps := Set( 35 | ; Meta-properties and other conventions 36 | "__Item", "__Class", "Ptr", "Size", "Handle", "Hwnd", 37 | 38 | ; Any 39 | "base", 40 | 41 | ; Func 42 | "Name", "IsBuiltIn", "IsVariadic", "MinParams", "MaxParams", 43 | 44 | ; Class 45 | "Prototype", 46 | 47 | ; Array 48 | "Length", "Capacity", 49 | 50 | ; Map 51 | "Count", "Capacity", "CaseSense", "Default", 52 | 53 | ; Error 54 | "Message", "What", "Extra", "File", "Line", "Stack", 55 | 56 | ; File 57 | "Pos", "Length", "AtEOF", "Encoding", 58 | ) 59 | 60 | g_knownMethods := Set( 61 | ; Meta-methods and other conventions 62 | "__Init", "__New", "__Delete", "__Get", "__Set", "__Call", "__Enum", "Call", 63 | 64 | ; Any 65 | "GetMethod", "HasBase", "HasMethod", "HasProp", 66 | 67 | ; Object 68 | "Clone", "DefineProp", "DeleteProp", "GetOwnPropDesc", "HasOwnProp", "OwnProps", 69 | 70 | ; Func 71 | "Bind", "IsByRef", "IsOptional", 72 | 73 | ; Array 74 | "Clone", "Delete", "Has", "InsertAt", "Pop", "Push", "RemoveAt", 75 | 76 | ; Map 77 | "Clear", "Clone", "Delete", "Get", "Has", "Set", 78 | 79 | ; File 80 | "Read", "Write", "ReadLine", "WriteLine", "RawRead", "RawWrite", "Seek", "Close", 81 | 82 | ) 83 | 84 | ; File methods 85 | for typ in ["UInt","Int","Int64","Short","UShort","Char","UChar","Double","Float"] { 86 | g_knownMethods.Add "Read" typ 87 | g_knownMethods.Add "Write" typ 88 | } 89 | 90 | ignoreKeywords := Set("byref", "default") 91 | 92 | Loop ji.length { 93 | item_name := ji.%A_Index-1%.0 94 | item_path := ji.%A_Index-1%.1 95 | try item_type := ji.%A_Index-1%.2 96 | catch Any 97 | item_type := -1 98 | 99 | if !RegExMatch(item_name, "^(#?[a-zA-Z_][0-9a-zA-Z_]*)", &o) or ignoreKeywords.Has(o[1]) 100 | continue 101 | 102 | /* 103 | 0 - directive 104 | 1 - built-in var 105 | 2 - built-in function 106 | 3 - control flow statement 107 | 4 - operator 108 | 5 - declaration 109 | 6 - built-in class 110 | 99 - Ahk2Exe compiler 111 | */ 112 | 113 | item_name := o[1] 114 | switch item_type { 115 | ; Directives 116 | case 0: 117 | item_name := SubStr(item_name, 2) ; remove initial # 118 | if InStr(ji.%A_Index-1%.3, 'E') 119 | g_directivesExpr.Add item_name 120 | else 121 | g_directivesStr.Add item_name 122 | 123 | ; Other keyword types 124 | case 1: g_knownVars.Add item_name 125 | case 2: g_knownFuncs.Add item_name 126 | case 6: g_knownClasses.Add item_name 127 | case 4,5: g_reserved.Add item_name 128 | case 3: g_controlFlow.Add ControlFlowCasing(item_name) 129 | } 130 | } 131 | 132 | try g_reserved.Delete "class" 133 | 134 | ; Make sure each keyword is only in the first keyword set it appears in 135 | Set.FilterAll(g_directivesExpr, g_directivesStr) 136 | Set.FilterAll(g_controlFlow, g_reserved, g_knownClasses, g_knownFuncs, g_knownVars) 137 | Set.FilterAll(g_knownMethods, g_knownProps) 138 | 139 | props := "# This file is autogenerated by " A_ScriptName " - DO NOT UPDATE MANUALLY`n`n" 140 | props .= "ahk2.keywords.directives.expr=\`n" 141 | props .= CreateKeywordList(g_directivesExpr) "`n" 142 | props .= "ahk2.keywords.directives.str=\`n" 143 | props .= CreateKeywordList(g_directivesStr) "`n" 144 | props .= "ahk2.keywords.flow=\`n" 145 | props .= CreateKeywordList(g_controlFlow) "`n" 146 | props .= "ahk2.keywords.reserved=\`n" 147 | props .= CreateKeywordList(g_reserved) "`n" 148 | props .= "ahk2.keywords.known.vars=\`n" 149 | props .= CreateKeywordList(g_knownVars) "`n" 150 | props .= "ahk2.keywords.known.funcs=\`n" 151 | props .= CreateKeywordList(g_knownFuncs) "`n" 152 | props .= "ahk2.keywords.known.classes=\`n" 153 | props .= CreateKeywordList(g_knownClasses) "`n" 154 | props .= "ahk2.keywords.known.props=\`n" 155 | props .= CreateKeywordList(g_knownProps) "`n" 156 | props .= "ahk2.keywords.known.methods=\`n" 157 | props .= CreateKeywordList(g_knownMethods) 158 | 159 | FileRewrite "ahk2.keywords.properties", props 160 | 161 | api := CreateApiList(["default", "class", "extends", "get", "set", "Parse", "Read", "Files", "Reg"]) 162 | api .= CreateApiList(g_directivesExpr, "#") 163 | api .= CreateApiList(g_directivesStr, "#") 164 | api .= CreateApiList(g_controlFlow) 165 | api .= CreateApiList(g_reserved) 166 | api .= CreateApiList(g_knownVars) 167 | api .= CreateApiList(g_knownFuncs) 168 | api .= CreateApiList(g_knownClasses) 169 | api .= CreateApiList(g_knownProps, ".") 170 | api .= CreateApiList(g_knownMethods, ".") 171 | 172 | FileRewrite "ahk2.standard.api", api 173 | -------------------------------------------------------------------------------- /syntaxgen/CreateKeys.ahk: -------------------------------------------------------------------------------- 1 | #Requires AutoHotkey v2-b+ 2 | #Include "Common.ahk" 3 | 4 | FileEncoding "UTF-8-RAW" 5 | SetWorkingDir A_ScriptDir "\..\source" 6 | 7 | g_namedKeys := Set( 8 | ; --- Mouse --- 9 | 10 | ; General buttons 11 | 'LButton', 'RButton', 'MButton', 12 | ; Advanced buttons 13 | 'XButton1', 'XButton2', 14 | ; Wheel 15 | 'WheelDown', 'WheelUp', 'WheelLeft', 'WheelRight', 16 | 17 | ; --- Keyboard --- 18 | 19 | ; General keys 20 | 'CapsLock', 'Space', 'Tab', 'Enter', 'Escape', 'Esc', 'Backspace', 'BS', 21 | ; Cursor control keys 22 | 'ScrollLock', 'Delete', 'Del', 'Insert', 'Ins', 'Home', 'End', 'PgUp', 'PgDn', 23 | 'Up', 'Down', 'Left', 'Right', 24 | ; Named numpad keys 25 | 'NumpadIns', 'NumpadEnd', 'NumpadDown', 'NumpadPgDn', 'NumpadLeft', 'NumpadClear', 26 | 'NumpadRight', 'NumpadHome', 'NumpadUp', 'NumpadPgUp', 'NumpadDot', 'NumpadDel', 27 | 'NumLock', 'NumpadDiv', 'NumpadMult', 'NumpadAdd', 'NumpadSub', 'NumpadEnter', 28 | ; Modifier keys 29 | 'LWin', 'RWin', 'Control', 'Ctrl', 'Alt', 'Shift', 'LControl', 'LCtrl', 'RControl', 30 | 'RCtrl', 'LShift', 'RShift', 'LAlt', 'RAlt', 31 | ; Multimedia keys 32 | 'Browser_Back', 'Browser_Forward', 'Browser_Refresh', 'Browser_Stop', 'Browser_Search', 33 | 'Browser_Favorites', 'Browser_Home', 'Volume_Mute', 'Volume_Down', 'Volume_Up', 34 | 'Media_Next', 'Media_Prev', 'Media_Stop', 'Media_Play_Pause', 'Launch_Mail', 35 | 'Launch_Media', 'Launch_App1', 'Launch_App2', 36 | ; Other keys 37 | 'AppsKey', 'PrintScreen', 'CtrlBreak', 'Pause', 'Help', 'Sleep', 38 | 39 | ; --- Others --- 40 | 41 | ; Special AltTab actions (these aren't actually keys, but they are used as "remap" targets) 42 | 'AltTab', 'ShiftAltTab', 'AltTabMenu', 'AltTabAndMenu', 'AltTabMenuDismiss', 43 | ) 44 | 45 | ; Add numbered numpad keys 46 | Loop 10 47 | g_namedKeys.Add('Numpad' (A_Index-1)) 48 | 49 | ; Add function keys 50 | Loop 24 51 | g_namedKeys.Add('F' A_Index) 52 | 53 | props := "# This file is autogenerated by " A_ScriptName " - DO NOT UPDATE MANUALLY`n`n" 54 | props .= "ahk.keywords.named.keys=\`n" 55 | props .= CreateKeywordList(g_namedKeys) 56 | 57 | FileRewrite "ahk.keys.properties", props 58 | 59 | api := CreateApiList(g_namedKeys) 60 | 61 | FileRewrite "ahk.keys.api", api 62 | --------------------------------------------------------------------------------