Releases: mark-wiemer-org/ahkpp
6.4.0 - 2024-11-02 🗳️
New features
- 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.
Bugfixes
- 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)
6.3.0 - 2024-10-19 🕳️
New features
- 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
Fixes
- 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)
Other
- 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.
6.2.3 - 2024-10-08 📖
- Restore readme to marketplaces once again (#537)
- Link to external licenses for better context
Developer changes
- Update workflows to have consistent filenames and workflow names
- Update actions in workflows to latest stable versions
6.2.2 - 2024-10-07 🤏
- Reduce extension size on marketplaces by ~100x (yes, really) (#533)
6.2.1 - 2024-10-07 📚
- Restore readme to marketplaces (lost due to auto-publish error)
Developer changes
- Update some dependencies to reduce risk of publishing errors in the future
6.2.0 - 2024-10-07 🫡
- Update thqby's extension from 2.4.9 to 2.5.3, adding new features and bugfixes
New features
- 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
Fixes
- 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.
Developer changes
- 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.
Other notes
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
6.1.1 - 2024-09-22 😤
- No changes, just working around technical limitations with VS Marketplace as 6.1.0 failed without detailed errors.
6.1.0 - 2024-09-22 🫙
6.0.0 - 2024-09-01 🥂
Full AHK v2 support is here!
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...
⛓️💥 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": []
}
New commands
- 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 intepreter for all scripts.
Other changes
- Context menu commands are now organized near the top of the menu
Developer changes
- 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!
💚 Thank you!
Special thanks to thqby, as this would not have been possible without thqby's open-source AutoHotkey v2 Language Support!
5.1.3 - 2024-08-30 🧪
🧪 means this is a pre-release!
⛓️💥 Breaking changes
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 intepreter for all scripts.