- If your AHK v2 interpreter is not recognized and you try to debug an AHK v2 script, an "AutoHotkey execute bin not found: ..." output log will appear and take focus in the AHK++ (v1) output channel (open issue #570)
- The "Select AHK v2 interpreter" command does not work, instead please try to run (not debug) an AHK v2 script and use the quick pick from the "... does not exist" error message (open issue #571)
- Add troubleshooting guide
- Fix go to definition in AHK v1 files (#559)
- Remove unnecessary error message "Couldn't resolve AHK v2 interpreter" (#493)
- This has been moved to a output log visible in the AHK++ (v2) output channel
- A "... does not exist" error message will still appear when trying to run an AHK v2 script with an unrecognized interpreter path
- Fix quick pick for "... does not exist" error message on run AHK v2 script (PR #569)
Note: this fix copies your config into your workspace settings. If you don't like this, please manually enter the path via the settings, and don't use the quick pick. Learn more at PR #569.
- Hovering over a filename in an
#include
directive now provides a link to that document in your IDE- If the file doesn't exist, the underline doesn't appear
- Does not work for
#include <lib>
syntax yet.
- Update thqby's extension from 2.5.3 to 2.5.4, adding new bugfixes
- Improve "go to definition" in v2 files (thqby #610)
- Improve environment variables when debugging via IDE for parity with running outside of IDE (thqby #615)
- Add hover tip for
switch
keyword in v2 files (thqby #623)
- 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.