Changelog of BashSupport Pro 3.0

An annotated list of all changes is available in the release announcement.



  • Added Support for 2022.3.
  • Added Compatibility with Windows on ARM64.
  • Added Support for the “call hierarchy” panel.
  • Added Show icon for variable declarations, e.g. in the “Find Usages” dialog.
  • Added The plugin is now signed before it’s uploaded to the Marketplace.
  • Improved Minor performance optimizations of lexer and parser.
  • Improved Minor performance improvements to the indexing of shell script files.
  • Updated Dropped support for Markdown Navigator. This plugin isn’t available anymore on the JetBrains Marketplace.
  • Updated Dropped support for IDEs 2020.1, 2020.2, and 2020.3.
  • Updated The bundled shfmt now requires macOS 10.13 or later (dropped support for macOS 10.11 and 10.12).
  • Updated Dropped intention “Explain shell”. Only a few users seem to use it, and it sends code to a remote site without obvious warning.
  • Updated Don’t automatically send anonymous telemetry for EAP builds.
  • Fixed Definitions contained in nested include files were not always found.
  • Fixed Variables declared by coproc are now marked as indexed array variables.
  • Fixed Incorrect paths to shell interpreters in the settings UI are highlighted as error.
  • Fixed Possible deadlock at startup while attempting to initialize BashSupport Pro’s application settings.
  • Fixed The “Apply” button of BashSupport Pro’s project settings was always enabled if project variables were set.
  • Fixed Restored integration with the EnvFile plugin, because a compatible release is now available. Please note that this is experimental support.
  • Fixed With the Simplified Chinese language pack: Notification about available ShellCheck translations wasn’t shown.
  • Fixed Intentions are now also available when the IDE is indexing.
  • Fixed “No license found” was shown even when a user had a valid license.
  • Fixed Editing shell script libraries sometimes removed source and target settings.
  • Fixed Binary incompatibility with 2022.1 reported by JetBrains plugin verifier.
  • Fixed Exception AstLoadingException caused by inspection “Variable only used locally”.


  • Added Refactoring “Inline variable” for variable declarations and variable references.
  • Added Support for “Join Lines” to automatically insert semicolons between commands.
  • Added “Move element left and right” for command arguments, e.g. to quickly change myFunc a b into myFunc b a.
  • Added “Move element left and right” for command pipelines, e.g. to quickly change a arg1 && b arg1 into b arg1 && a arg1.
  • Added Highlighting all of a function’s exit points when you place the caret on one of the return or exit commands.
  • Added New live template contexts “Literal”, “Bash: Literal”, “POSIX: Literal”.
  • Added New live contexts to cover POSIX files, commands in POSIX files, Bash files, commands in Bash files
  • Added New live template macro testCommandStart() to insert [ or [[ , depending on the current shell type.
  • Added New live template macro testCommandEnd() to insert ] or ]], depending on the current shell type.
  • Added New live template macro shellVariable() to return the closest variable assignment in scope.
  • Added New live template macro shellArrayVariable() to return the closest array variable assignment in scope.
  • Added Support for “Code: Move Statement Up” and “Code: Move Statement Down” for pipeline commands and function declarations.
  • Added [#86]: Smart enter handler to automatically add a block statement to an incomplete function definition
  • Added “Go to declaration” and rename for heredoc markers.
  • Improved read/write presentation for variable references and assignments.
  • Improved read/write highlighting of variable references.
  • Improved “Inline Variable” refactoring in conditional commands.
  • Improved Spellchecking of command argument values.
  • Updated Live templates, which reference an array variable, now automatically select the closest array variable name.
  • Updated Live templates, which contain a block of code, now insert : as a fallback command to avoid inserting invalid syntax.
  • Updated Inspection suppression code BP5001 was used for to different inspections. Inspection “Google main() function style” is now using BP5009 instead.
  • Removed: Live templates git_branch_create, git_commit, git_push, mkdir, rm, system_info_linux, system_info_mac, system_kernel_info, xarg.
  • Fixed Some BashSupport Pro inspection codes, e.g. BP5008, were not showing a tooltip on mouse hover.
  • Fixed Changed default code style highlighting of BP... codes to match ShellCheck SC... codes.
  • Fixed $REPLY was not shown in variable name completions.
  • Fixed The var assignment in var=value; ${var:=fallback} was incorrectly marked as unused variable declaration.
  • Fixed Exception Exception (1464,1464), text: , language = Language: BashPro Shell Script folding a then clause.
  • Fixed Exception Assertion failed: Write access is allowed inside write-action only when opening preview for quickfix “Prefer BashSupport Pro over ShellCheck”.
  • Fixed [#109]: The partial formatting after a refactoring was breaking source code. For now, the reformatting is turned off for refactorings.
  • Fixed Live templates array_all, array_at_index, and array_length were shown in parameter expansions.
  • Fixed Live templates array_all, array_at_index, and array_length were shown in POSIX files.
  • Fixed Show #!/bin/sh and #!/bin/bash in code completion for the shebang.
  • Fixed Folding of a Google-style function comment was showing only # characters because that was the first line.
  • Fixed The do keyword is now shown in code completion for while and until commands.
  • Fixed The done keyword is now shown in code completion at the potential end of a do ... done block.
  • Fixed Inline rename was unavailable for heredoc markers.
  • Fixed Quick documentation of conditional operators was displaying markdown as description.
  • Fixed Intention “Add function keyword” was shown in bats-core files, but ShellCheck doesn’t like @test function name declarations (yet).
  • Fixed Updating unclear names of intentions.
  • Fixed Compatibility with 2022.3 EAP4 (builds 223.7126 and later).
  • Fixed “Join lines” of a line with a line continuation now removes the indentation of the following lie.

Structure View

  • Added Option and filter button to display variable declarations in the view. This also enabled navigation via ALT+UP and ALT+DOWN to navigate to the previous/next variable declaration (or function).


  • Added Color setting “Conditional operators: Operators” to cover all unary and binary operators other than the logical operators || and &&.
  • Added Color setting “Arithmetic: Operators”.
  • Added Color setting “Arithmetic: Logical Operators”.
  • Improved Parsing of arithmetic expressions follows the Bash specification more closely, e.g. (( a=b=c=42 )) is now parsed correctly.
  • Added Color setting “Arithmetic: Comma”.
  • Changed Color setting “Conditional operators” renamed to “Logical Operators” and moved it into group “Conditional Operators”. It now inherits from “Operation sign” instead of “Keyword”.
  • Changed Moved color setting “Number” into group “Arithmetic”.
  • Fixed #97: “Go to definition” wasn’t properly working for variables declared in a pipeline. Attributes like “integer” are now properly inherited by variable definitions in subshells or pipelines (which create an implicit scope).
  • Fixed Syntax highlighting of redirection characters >, >>, and <.
  • Fixed Syntax parsing of old conditional commands with escaped redirects. [ a < b ] contains a redirect, but [ a \< b ] is a comparison.
  • Fixed Name validation for function definitions. For example ns::name is now accepted as a valid function name.
  • Fixed Name validation for variables.
  • Fixed Variable declared as declare myVar=() was not marked as an array variable.
  • Fixed Support quoted variable names in assignments passed to a command, e.g. a in export "a"=b. Only static left-hand-side values are supported.
  • Fixed An incomplete for loop is now highlighted as an error, e.g. for x in a b;

Run Configurations

  • Added Support for remote execution and remote debugging with 2021.3 and later. This is leveraging the run targets feature of the IDE and has been tested with WSL, SSH and Docker run targets. SSH and Docker are only available in the paid IDEs.
  • Added Support for the new Markdown runner feature of 2022.1 and later.
  • Fixed Updated fork of pty4j in build for 2021.3 to make BashSupport Pro debugging work on a JetBrains Gateway host.
  • Fixed Updated fork of pty4j to support Linux ARM devices like a Raspberry Pi.
  • Fixed BashSupport Pro couldn’t set up and locate the bundled ShellCheck binary when executed with JetBrains Gateway.
  • Fixed Don’t show run line markers for plain text files without a shebang line.
  • Fixed Don’t show action “Run File” in the line marker actions for BashSupport Pro files.
  • Fixed The working directory wasn’t always set correctly for remote debugging.
  • Fixed ClassCastException when debugging a shell script on 2021.1 or 2021.2.
  • Fixed The introspection for the shell on the remote inserted invalid path values into the path text input.
  • Fixed Interpreter arguments defined in the application settings were not applied when created from the additional context menu items (via “Shown in menus”).
  • Fixed Execution and debugging on projects, which are located on a WSL network share.


  • Fixed Show inlay values for predefined variables like $HOME.
  • Fixed Debugging a file on a WSL network share wasn’t working properly.


  • Updated Bundle shfmt 3.5.1.
  • Added Bundle binary of shfmt for Windows ARM64.


  • Added Support for Navigate > Test for shell script files. Newly created test files are named like the source file, but with extension .bats. Please let us know if you need a more advanced implementation of “Create Test”, for example to create test method for each function defined in the source file.
  • Added Bundle and support bats-core 1.8.2.
  • Added Bundling bats-core libraries “bats-assert”, “bats-file” and “bats-support”. The environment variable BATS_LIB_PATH is automatically setup when bats-core tests are executed.
  • Added Code completion of built-in function bats_load_library.
  • Added Completion of bundled library names passed to bats_load_library.
  • Added Support code completion and go-to-declaration for functions included in one of the bundled bats-core libraries if the .bats file loaded the library with bats_load_library.
  • Added Support and documentation for variables BATS_TEST_RETRIES, BATS_TEST_TIMEOUT, BATS_VERSION, and BATS_TEST_NAME_PREFIX.
  • Added Support the new tags filter parameter --filter-tags <tag list>.
  • Added Support for the bats-core comments #@test to mark functions as bats-core tests.
  • Added Intention to switch between the @test marker and #@test comments.
  • Added Quick documentation for built-in functions of bats-core, e.g. for load and bats_load_library.
  • Added Code completion of function and commands for the first argument of the bats-core run command, e.g. for run -1 myFunction.
  • Added Support and quick documentation for variables $stderr and $stderr_lines.
  • Added Support bats-core function bats_require_minimum_version.
  • Added Code completion shows global variables declared in setup and setup_file at first invocation. By default, globals declared in functions are shown at the 2nd completion attempt (e.g. after pressing Ctrl+Space twice).
  • Added New live template context “bats-core file level”.
  • Added New live template context “bats-core @test function”.
  • Added New live template setup_file.
  • Added New live template teardown_file.
  • Added New inspection to highlight duplicate test names in a .bats file.
  • Improved Code completion of bats-core variables, which are only available in a test method, now displays this information in the completion popup.
  • Improved Highlighting of file path + line in bats-core error messages.
  • Improved Mark newly created bats-core files as executable.
  • Improved Show the cause passed of skipped tests in the test runner console, e.g. defined by skip "cause".
  • Fixed The bats-core live templates now insert valid code by adding : into bodies of inserted functions.
  • Fixed Don’t suggest names of @test functions in code completion
  • Fixed Errors, which occurred at top-level of a .bats file were not printed on the test runner output console.
  • Fixed Completions to functions of a loaded bats-core library in dumb mode.
  • Fixed bats-core code completion was unavailable in bats-core files.

Quick Documentation

  • Added Documentation of commands is also fetched from man now. The equivalent of man --html commandName is executed. If there’s no man page, then info is called as before.
  • Improved Tell when a function is a built-in, e.g. run of bats-core.
  • Fixed Whitespace in example wasn’t preserved in the rendered documentation

Google Shell Code Style

  • Improved Better rendering of quick documentation of functions, which are documented as defined by the style guide.


  • Fixed ${NAME:-value}-style references to Docker ENV or ARG declarations were incorrectly overridden by BashSupport Pro.
  • Fixed The shell script language was injected into RUN commands, which followed a non-bash SHELL command. For example, Powershell commands are no longer highlighted as Bash.


  • Added Added events “structure_view”, “caller_hierarchy”, “refactoring_move_left_right”, “refactoring_move_up_down” to telemetry. As before, telemetry is opt-in and no code or PII is sent.
© 2020–2024 Joachim Ansorg
Privacy Policy