- Rewrite AutoHotkey v2 definition files using GroggyOtter's syntaxes (#521)
- Add exclude setting (#488)
- Excluded files are not included in IntelliSense completion suggestions, even when they're added via
#include
- Changed
v2.exclude
setting toexclude
- One setting works for both v1 and v2
- Changes to this setting take effect immediately, no need to restart your IDE (different than thqby's extension)
- v2 will exclude excluded files from suggestions even if they're opened in the IDE (different than thqby's extension)
- v1 no longer automatically ignores files with
out
,target
, ornode_modules
in their name
- Excluded files are not included in IntelliSense completion suggestions, even when they're added via
- Fix v1 formatter removing extra spaces in strings (#411)
- Fix v2 formatter moving closing brackets/braces when
arrayStyle
orobjectStyle
were set to "none" (the default) (#499) - Fixup output channel names: "AHK++ (v1)" and "AHK++ (v2)" instead of "AHK" and "AHK++" respectively
- Fix duplicate output channels (the "AHK" channel used to be created twice)
- Rename extension to
AHK++ (AutoHotkey Plus Plus)
to provide a clear short name while retaining previous brand- In 6.2.0, only the settings were renamed. This release renames the extension display name on registries as well.
- Restore readme to marketplaces once again (#537)
- Link to external licenses for better context
- Update workflows to have consistent filenames and workflow names
- Update actions in workflows to latest stable versions
- Reduce extension size on marketplaces by ~100x (yes, really) (#533)
- Restore readme to marketplaces (lost due to auto-publish error)
- Update some dependencies to reduce risk of publishing errors in the future
- Update thqby's extension from 2.4.9 to 2.5.3, adding new features and bugfixes
- Watch files for changes, improving
#Includes
support (thqby #564) - "Update File Version Info" now updates all
;@ahk2exe
directives as well (thqby #565) - Context menu items organized into AHK++ submenu (thqby #570)
- Support
;@format
formatter directives in v2 files- Directive names are
array_style
andbrace_style
for compatibility with thqby's extension
- Directive names are
- Fix TraySetIcon definition (thqby #591)
- Fix ternary operator parsing (thqby #594)
- Improve completion provider for DllCall.Bind (thqby #595)
- Add Help and Sleep as key names (thqby #596)
- Fix debug when
launch.json
is present (thqby #584) - Fix debug not using selected launch config (thqby #533)
- Fix "Update File Version Info" when more than one space is present (thqby #562)
- Fix "Update File Version Info" when placed after directive (thqby #563)
- Fix hover provider for
this
in classes (thqby #571) - Fix formatting inside conditional function definition (thqby #574)
- Fix other unreported bugs in AHK v2 support. These changes weren't fully documented, see the diff or open a discussion for details.
- Add true unit tests that don't require opening VS Code to run (
npm run test-unit
) - Move to new branch of ahk2-lsp with 100% thqby-compatible changes. All changes are submitted as PRs against thqby's repo. This makes improvements much easier in the future.
This changelog incorrectly included this entry:
- Rename to
AHK++ (AutoHotkey Plus Plus)
to provide a clear short name while retaining previous brand
Although the settings name changed, the extension name did not change until 6.3.0
- No changes, just working around technical limitations with VS Marketplace as 6.1.0 failed to deploy without detailed errors.
- Add
General > showOutput
setting to toggle automatically showing the output view when running a script (#492) - Fix quick help when selecting quoted strings (#376)
- Fix description for
V2 > General > actionWhenV1Detected
setting key - Fix
V2 > Syntaxes
setting
AHK++ 6 incorporates AutoHotkey v2 Language Support 2.4.9 by thqby to deliver full v2 support, including formatting, enhanced IntelliSense and debug support, and more!
All changes are compared to AHK++ 5.0.7.
- v2 formatting support
- v2 IntelliSense support
- Start and stop scripts via VS Code keybindings
More changes are listed below the breaking changes...
Settings are now organized into flat objects for a better user experience. Unfortunately, this means settings will have to be replaced when upgrading to AHK++ 6. This is a one-time fixup. Below are sample settings matching the new schema and default values of AHK++. You can learn more about the settings via VS Code's settings UI (Ctrl + ,
)
Default AHK++ settings
// settings.json
{
// ...other settings...
"AHK++.compiler": {
"compileIcon": "",
"compilerPath": "C:/Program Files/AutoHotkey/Compiler/Ahk2Exe.exe",
"useMpress": false
},
"AHK++.menu": {
"showDebugButton": true
},
"AHK++.v1.file": {
"compileBaseFile": "",
"helpPath": "C:/Program Files/AutoHotkey/AutoHotkey.chm",
"interpreterPath": "C:/Program Files/AutoHotkey/AutoHotkeyU64.exe",
"templateSnippetName": "AhkTemplateV1"
},
"AHK++.v1.formatter": {
"allowedNumberOfEmptyLines": 1,
"indentCodeAfterIfDirective": true,
"indentCodeAfterLabel": true,
"preserveIndent": false,
"trimExtraSpaces": true
},
"AHK++.v1.intellisense": {
"maximumParseLength": 10000
},
"AHK++.v2.completionCommitCharacters": {
"Class": ".(",
"Function": "("
},
"AHK++.v2.debugConfiguration": {
"port": "9002-9100",
"useAnnounce": "detail",
"useAutoJumpToError": true,
"useDebugDirective": true,
"usePerfTips": true
},
"AHK++.v2.diagnostics": {
"classNonDynamicMemberCheck": true,
"paramsCheck": true
},
// ⚠️ Not yet supported, ref [issue #488](https://github.com/mark-wiemer-org/ahkpp/issues/488)
"AHK++.v2.exclude": [],
"AHK++.v2.file": {
"compileBaseFile": "",
"helpPath": "C:/Program Files/AutoHotkey/v2/AutoHotkey.chm",
"interpreterPath": "C:\\Program Files\\AutoHotkey\\v2\\AutoHotkey64.exe",
"maxScanDepth": 2,
"templateSnippetName": "AhkTemplateV2"
},
"AHK++.v2.formatter": {
"arrayStyle": "none",
"braceStyle": "One True Brace",
"breakChainedMethods": false,
"ignoreComment": false,
"indentString": " ",
"indentBetweenHotIfDirectives": false,
"keywordStartWithUppercase": false,
"maxPreserveNewlines": 2,
"objectStyle": "none",
"preserveNewlines": true,
"spaceBeforeConditional": true,
"spaceAfterDoubleColon": true,
"spaceInEmptyParen": false,
"spaceInOther": true,
"spaceInParen": false,
"switchCaseAlignment": false,
"symbolWithSameCase": false,
"whitespaceBeforeInlineComment": "",
"wrapLineLength": 120
},
"AHK++.v2.general": {
"actionWhenV1Detected": "SwitchToV1",
"commentTagRegex": "^;;\\s*(?<tag>.+)",
"completeFunctionCalls": false,
"librarySuggestions": "Disabled",
"symbolFoldingFromOpenBrace": false,
"syntaxes": ""
},
"AHK++.v2.warn": {
"callWithoutParentheses": "Off",
"localSameAsGlobal": false,
"varUnset": true
},
"AHK++.v2.workingDirectories": []
}
- Debug AHK and Attach: Debug and attach to the debug session for advanced use-cases. Requires zero-plusplus.vscode-autohotkey-debug.
- Debug AHK with Params (
Ctrl + F5
): Debug and add user-provided command-line arguments to the debugger for advanced use-cases. Requires zero-plusplus.vscode-autohotkey-debug. - Run AHK++ Diagnostic: Effectively restart the AHK v2 features of the app.
- Export AHK Symbols: Export application functions and classes to a new file. Only for AHK v2.
- Stop AHK Script (
Ctrl + F6
): Stop an AHK script of user choice ran viaRun AHK Script
or any of theDebug AHK ...
commands. If only one script is running, stop that without asking for confirmation. - Add Doc Comment: Add a function header comment for the current function. Only for AHK v2.
- Update File Version Info: Add or update a file header comment
- Switch AHK Version: Change between AHK v1 and v2 for the current file
- Select AHK Syntaxes: Select custom AHK v2 syntax files for advanced use-cases. PRs are welcomed if the default syntaxes aren't sufficient!
- Set A_ScriptDir Here: Set
A_ScriptDir
to the path of the current file. Only for AHK v2. - Set AHK v2 Interpreter: Open a quick pick to change the AHK v2 interpreter for all scripts.
- Context menu commands are now organized near the top of the menu
- Use ESLint 9 and typescript-eslint 8 for better code hygiene checks
- Upgrade from Node 16 to Node 20
- Remove husky and lint-staged for simplicity
- Modernize unit tests with @vscode/test-cli
- Add recommended VS Code extensions for working in this codebase
- Simplify launch configurations
- Improve manual tests and add manual tests for new AHK v2 capabilities
- Add full v2 integration docs
- Clarify license: even more open-source than before!
Special thanks to thqby, as this would not have been possible without thqby's open-source AutoHotkey v2 Language Support!
5.1.3
🧪 means this is a pre-release!
Fixup new command names and IDs:
- Debug AHK and Attach (
ahk++.debugAttach
): Debug and attach to the debug session for advanced use-cases. Requires zero-plusplus.vscode-autohotkey-debug. - Debug AHK with Params (
ahk++.debugParams
): Debug and add user-provided command-line arguments to the debugger for advanced use-cases. Requires zero-plusplus.vscode-autohotkey-debug. - Run AHK++ Diagnostic (
ahk++.diagnostic.full
): Effectively restart the AHK v2 features of the app. - Export AHK Symbols (
ahk++.exportSymbols
): Export application functions and classes to a new file. - Stop AHK Script (
ahk++.stop
): Stop an AHK script of user choice ran viaRun AHK Script
or any of theDebug AHK ...
commands. If only one script is running, stop that without asking for confirmation. - Add Doc Comment (
ahk++.addDocComment
): Add a function header comment for the current function - Update File Version Info (
ahk++.updateVersionInfo
): Add or update a file header comment - Switch AHK Version (
ahk++.switchAhkVersion
): Change between v1 and v2 for the current file - Select AHK Syntaxes (
ahk++.selectSyntaxes
): Select custom syntax files for advanced use-cases. PRs are welcomed if the default syntaxes aren't sufficient! - Set A_ScriptDir Here (
ahk++.setAScriptDir
): SetA_ScriptDir
to the path of the current file. Only for AHK v2. - Set AHK v2 Interpreter (
ahk++.setV2Interpreter
): Open a quick pick to change the AHK v2 interpreter for all scripts.
5.1.2
🧪 means this is a pre-release!
- Remove duplicate commands
- ahk2.debug (use ahk++.debug)
- ahk++.run (use ahk2.run)
- ahk++.runSelection (use ahk2.selection.run)
- ahk2.compile (use ahk++.compile)
- Commands may be renamed in the future for consistency
- Reduce extension size from 1.34 MB to 533 KB, compared to 534 KB for AHK++ 5.0.7
5.1.0
🧪 means this is a pre-release!
This is a very early pre-release, expect significant issues. Commands may not work as expected and features may be missing.
For technical reasons, this is tagged with 5.1.0
, but it may be a breaking release and the full release will be tagged 6.0.0
- I haven't found any yet! Please 🐛 report any issues you find 🤓
- Add full v2 support via thqby's AutoHotkey v2 Language Support
- No need to install that extension, all features are bundled into this extension
- Future work will de-dupe commands like "debug", "run selection", and "open help"
- Known issues and all new features are documented at full v2 integration
- Fix readme: v2 debugger works via commands, just not via "run and debug" viewlet
Changes to the marketplace page require a new version. This version has no user-facing changes, just documentation updates:
- Update package description to clarify v2 support is in preview
- Update readme to clarify v2 support is in preview
Full v2 support (IntelliSense, debugging, formatting) is coming later this month! (Issue #453)
- Fix formatter in single line hotkey fall-through scenario (#440, #442)
- Fix outline showing invalid labels (#438)
- Add "PixelSearch" to V1 snippets (PR #427)
- Fix two minor formatting issues (Issue #432, #429)
- Update internal dependencies for security (PR #435)
- Fix extension crash when switching to a nullish editor (Issue #398)
- Fix language mode resetting when VS Code restarts (Issue #392)
ahk++.file.interpreterPathV2
now defaults toC:/Program Files/AutoHotkey/v2/AutoHotkey64.exe
(Issue #387)- Add breakpoint support for AHK v2 files (Issue #384)
AutoHotkey v2 support now in preview! Please test it out and report any issues, you'll help the community of 120,000+ users of this extension!
Be sure to go to the settings and update the new V2
settings in case the defaults aren't correct 😊
- Rename some settings. Users will have to manually adjust these new settings from the defaults to match their old settings:
ahk++.compiler.compileBaseFile
is nowahk++.compiler.compileBaseFileV1
ahk++.file.compilePath
is nowahk++.file.compilerPath
ahk++.file.executePath
is nowahk++.file.interpreterPathV1
ahk++.file.helpPath
is nowahk++.file.helpPathV1
ahk++.file.templateSnippetName
is nowahk++.file.templateSnippetNameV1
with default valueAhkTemplateV1
- Allow
.ahk1
and.ah1
extensions for v1 scripts,.ahk2
and.ah2
for v2 scripts..ahk
and.ext
can be used for either version, but default to AHK v2 (Issue #396)- The original changelog entry mentioned that the shared file extensions defaulted to AHK v1--this was incorrect
- You can add a
#Requires AutoHotkey v1
directive to the top of an of.ahk
file to have it automatically load in AHK v1 independent of VS Code settings (Issue #392) - The same can be done with
#Requires AutoHotkey v2
- Alternatively, you can follow the below steps to associate all
.ahk
files with AHK v1:- Open a
.ahk
file F1
-> "Change language mode"- "Configure file association for
.ahk
files" - "AutoHotkey v1"
- Open a
- Automatically change AHK version to match the
#Requires
directive near the top of any script the first time that script is opened - Allow running and debugging v1 or v2 scripts without changing settings
- "Open help" (Ctrl + F1) now opens version-specific help
- Add full syntax highlighting for v2 scripts thanks to AutoHotkey v2 Language Support by thqby
- Update icons (found next to a script's name in the explorer)
- v2 scripts will have official green icons, while v1 scripts now have modified blue icons
- Icons are a bit smaller to align with existing VS Code icons
Some features are not added to this initial preview release, but will be coming soon!
- Missing features for AHK v2:
- Formatting (Issue #381)
- Snippets (Issue #382)
This update relies heavily on open-source code from thqby and Steve Gray (Lexikos). Thank you for your awesome work!
- Add quick help, adapted from thqby's AutoHotkey v2 Language Support
- Selected text (or word at cursor) is now searched within the help documentation
- Known limitation: if selected text would cause a syntax error when injected into a script, help is activated but no search is made. Issue #376
- Update file icon to match official AHK repository
- Rename some settings. Users will have to manually adjust these new settings from the defaults to match their old settings:
ahk++.formatter.indentCodeAfterSharpDirective
is nowahk++.formatter.indentCodeAfterIfDirective
ahk++.language.enableIntellisense
is nowahk++.intellisense.enableIntellisense
ahk++.file.maximumParseLength
is nowahk++.intellisense.maximumParseLength
- IntelliSense no longer suggests words when a user presses space (Issue #110)
- IntelliSense now suggests
foo(p1, p2)
instead offoo (p1,p2)
- Improved descriptions of settings
- Restore changes from 3.3.1. This release is the same as 3.3.1, except the debugger works.
- Revert changes in 3.3.1. This release is the same as 3.3.0. Ref Issue #369
This release has been yanked, meaning it's not supported. Use 3.3.3 instead.
- Various syntax highlighting improvements (PR #354, PR #358)
- Running
Open help
whiletutorial
text is selected now opens the Tutorial page (PR #348) - Unexpected change: Break debugger.
- Add
ahk++.file.maximumParseLength
setting to support unlimited file size (Issue #117)
Fixes:
- Fix several syntax highlighting issues (#85, #318)
- Fix minor debugger issues introduced in 3.1.0 (#279)
- Fix debugging a file with a space in its name (#134)
- Fix formatting for some bad labels (two colons) (PR #325)
- Debug keyboard shortcut is now
Ctrl + Alt + F9
(wasF9
) to avoid conflicts with VS Code default shortcuts. - New setting: Snippet template name. Create your own template for new AHK files, including no template at all.
- Moving lines of code via commands now (almost) correctly indents (PR #306, issue #319)
- Snippets and keywords updated to AutoHotkey v1.1.36.0 (PR #288, PR #298)
Fixes:
-
Fix syntax highlighting for:
-
Fix formatting for:
-
Fix hover message for doc comments to always be trimmed (PR #308)
Compiler:
- New compiler options in settings: Choose base file, file icon, and "use MPRESS"
- Add "Compiler GUI" command in context menu to use the AHK GUI when compiling
Snippets: Update snippets for AHK 1.1.35.00 and fix broken InStr()
snippet (#263)
Grammar: Fix #Requires
not being recognized (#268)
Editor: New AHK file icon (green square with white H)
Debugger: Minor debugger improvements
Formatter: Close the following bugs:
- Formatter incorrectly indents object literals (#184, #222)
- Nested one command code flow control (#255)
Miscellaneous: Extension should start up faster
This is "The Kyklish Release" because Kyklish wrote most of this code. Thank you!
- Update file template: Add
#NoEnv
andSetBatchLines, -1
(PR #202)
Formatter bugfixes may be considered breaking if you wanted the old behaviors. If you want the old behavior, please open an issue.
- Add formatter directive for "Format Block Comment" (PR #164)
- Add "allowed number of empty lines" setting to preserve any number of lines. Defaults to
1
,-1
means "preserve all empty lines" (PR #194) - Add "preserve indent" setting to preserve spaces before a comment. Defaults to
false
. (PR #192) - Add "trim extra spaces" to trim spaces between words. Defaults to
true
. (PR #191) - Trim end of line when formatting (PR #190)
- Fix some snippets (PR #138, PR #201, PR #210)
- Fix formatting bugs with semi-colon as part of a string (PR #159)
- Fix some formatting bugs with
if
,else
, etc. without braces (PR #181) - Fix formatter issue with non-label colon at end of line (PR #162)
- Even more formatter fixes (PR #164)
- Use default debug icon (was yanked in 2.8.3, now it returns!) (PR #149)
- Revert to 2.8.2 due to issues with 2.8.3
This release has been yanked, meaning it's not supported. Use 2.8.4 instead.
-
Change to use default debug icon (#100)
-
⛓️💥 Unexpected breaking change: Break "step into" function of debugger.
- No user-facing changes
- Security fixes in dependencies
- Update internal dependencies: Node v16, npm v8
- Close #126
- Fix indentation with
(::
(#72)
- Add setting to toggle debug button in editor title menu (#10)
- Fix indentation with parentheses again (sorry!) (#58)
- Fix indentation with parentheses (#25)
- Respect user choice to indent with either tabs or spaces (#49)
- Fix IntelliSense (#48)
- Move
Run Selection
command to same category as all other commands (Thanks @fade2gray!)
- Fix formatting after ternary operator (#18)
- Fix formatting after multiple close braces on one line (#26)
- Fix hover provider (#16)
- Add
Open Help
command - Add
Run Selection
command - Add foldable region comments
- Improve formatting for using
ExitApp
to end subroutines - Fix function coloring for functions whose names were also keywords (#11)
- Fix function coloring for calls with a space before the parentheses (e.g.
foo ()
) - Fix detection of labels indented with a tab
- Remove confusing deprecation warning from
StrSplit
function - Remove variables from outline
- Improve settings readability
- Fix bogus snippets
- Improve Marketplace presence
- Update icon
- Change marketplace banner color
- Add development documentation
- Change ownership (from
cweijan
tomark-wiemer
) - Change configuration title to 'AutoHotkey Plus Plus'
- Update readme
- Increase icon resolution
Older releases from AutoHotkey Plus
These releases are not versions of AHK++, but carried over from AutoHotkey Plus by cweijan
- Fix syntax error.
- Fix variable detect error.
- Fix rename bug.
- Bind key to context menu command.
- Enable IntelliSense as default.
- Fix switch format error.
- fix variable detect fail.
- Fix rename fail when un-save.
- Simple support variable detect.
- Simple implement intellisense.
- Adaptation zero-plus debugger extension.
- Support rename method name.
- Just fix bugs.
- Support find method references.
- Fix syntax bug.
- Add command|method hover feature.
- Add labels to outline.
- More syntax support.
- Support restart current program.
- Support go to label.
- Fix bugs.
- Support config compiler path.
- Show variable detail in debug evaluate
- Support get and modify variable in debug evaluate
- Support pause and continue run script.
- Support OutputDebug command.
- Support run unsaved ahk script.
- Support change variable value when debug, contribute by @zero-plusplus.
- Support view variable when change call stack.
- Variable view support complex variable value, contribute by @zero-plusplus.
- Enhance method detecter.
- Fix path with space error.
- Support change default ahk execute path.
- Support simple debug.
- Find definition in whole workspace.
- Try go to include script in workspace.
- Update snippets.
- Support Run Script.
- Fix detecter if and while block as methods.
- Support go to method definition in same file.
- Enhance method symbol detection.