Skip to content

Releases: mark-wiemer-org/ahkpp

6.4.0 - 2024-11-02 🗳️

02 Nov 15:58
3028a64
Compare
Choose a tag to compare

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 🕳️

19 Oct 16:00
2317a5b
Compare
Choose a tag to compare

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 to exclude
    • 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, or node_modules in their name

Fixes

  • Fix v1 formatter removing extra spaces in strings (#411)
  • Fix v2 formatter moving closing brackets/braces when arrayStyle or objectStyle 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 📖

08 Oct 13:18
af912df
Compare
Choose a tag to compare
  • 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 🤏

08 Oct 03:47
de194a7
Compare
Choose a tag to compare
  • Reduce extension size on marketplaces by ~100x (yes, really) (#533)

6.2.1 - 2024-10-07 📚

08 Oct 02:25
a69fcdc
Compare
Choose a tag to compare

Developer changes

  • Update some dependencies to reduce risk of publishing errors in the future

6.2.0 - 2024-10-07 🫡

07 Oct 23:49
539f4d1
Compare
Choose a tag to compare
  • 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 and brace_style for compatibility with thqby's extension

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 😤

22 Sep 22:47
69cafc2
Compare
Choose a tag to compare
  • No changes, just working around technical limitations with VS Marketplace as 6.1.0 failed without detailed errors.

6.1.0 - 2024-09-22 🫙

22 Sep 18:03
e1813b5
Compare
Choose a tag to compare
  • 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

6.0.0 - 2024-09-01 🥂

01 Sep 23:56
c384830
Compare
Choose a tag to compare

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 via Run AHK Script or any of the Debug 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 🧪

31 Aug 03:43
5819abc
Compare
Choose a tag to compare
Pre-release

🧪 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 via Run AHK Script or any of the Debug 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): Set A_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.