Changelog of BashSupport Pro 5.0

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

General

  • Added Support 2025.2.
  • Removed Drop support for 2022.1 to 2024.1.
  • Updated On Linux, kernel version 3.2 or later is required now. On macOS, macOS 11 Big Sur or later is required to run the bundled shfmt binary.
  • Improved Performance improvements of the shell script lexer, of reference resolving and of indexing.
  • Fixed Less eager initialization at startup to avoid potential slow-downs of the IDE.

Editor

  • Added Quick documentation is now integrated with tldr pages. By default, tldr pages are shown if there’s no local man or info page. There’s a new setting to prefer tldr over man and info pages. Pages for English and Chinese are bundled with the plugin, remote tldr pages are never fetched.
  • Added Automatically decrease the indentation after typing a keyword to close a block, e.g. done, esac, fi or ]].
  • Added Insert a line continuation if Enter is pressed when the caret is on a command name or inside the list of command arguments.
  • Added Insert a line continuation if Enter is pressed before &&, ||, | and similar tokens in a command list or pipeline.
  • Added Insert a new line without indentation if Enter is pressed inside a quoted string.
  • Added “Expand Selection” inside a command list now selects command lists separated by && and ||.
  • Added “Expand Selection” now also selects the following command list elements.
  • Added Delegate to BashSupport Pro’s formatter inside injected shell script snippets.
  • Fixed Show both -R and -r and not -r twice in the completions of conditional test operators.
  • Fixed Don’t suggest =~ as conditional operator in POSIX files. It’s only supported in Bash, Zsh and bats-core files.
  • Fixed Incorrect text caret position after joining lines separated by a line continuation.
  • Fixed “Join lines” with a line continuation inside a word, e.g. echo hello_\\\n_world.

Formatter

  • Added A new, native formatter engine is available now. shfmt is still the default formatter engine to avoid regressions and unwanted side effects. Inside the editor the improved handling of indentation, of Enter in the middle of a line, etc. are available even if shfmt is used as formatter. The code style settings panel now allows choosing the formatter to use. Code style settings not supported by shfmt are hidden or grayed out.
  • Added With the new native formatter, many new code style settings are available now. Features like “Add space prefix to comments” are finally available.

Syntax Support

  • Added Support the new alternate syntax of Bash 5.3 command substitution, e.g. ${ command; }.
  • Updated Synced POSIX utility commands with POSIX 2024.1.
  • Fixed Parsing of the case command.
  • Fixed Rename and “go to declaration” on start/end markers of heredocs with tabbed content (e.g. of <<- EOF).
  • Fixed Parsing of line feeds inside parentheses of conditional commands, e.g. [[ ( \n a == b \n ) ]].
  • Fixed Parsing of binary conditional command operators.
  • Fixed False positive in parsing of unary conditional operator -v, e.g. [[ -v name$more ]] or [[ -v name[0]$more ]].
  • Fixed False positive in parsing of unary conditional operator -R, e.g. [[ -R name$more ]].
  • Fixed Parsing of escaped parentheses in conditional expressions, e.g. [ \( $n -lt 10 \) ] or test \( $n -lt 10 \).
  • Fixed Invalid variable names were accepted if declared by readonly or typeset
  • Fixed Parsing of [[ -v ${varName}[${keyName}] ]].
  • Fixed Parsing of brackets in test [a=[a, which are literal brackets.
  • Fixed Parsing of incomplete or incorrect let commands, e.g. let a = 1 instead of let a=1.
  • Fixed Parsing of let a*100, this wasn’t parsed as an expression but a literal.

Run Configurations

  • Feature: It’s now possible to execute run configurations as super user. On Linux, kdesu, pkexec and sudo are supported for locally executed commands. kdesu is only used if the user is using a KDE desktop. On Windows and macOS, the system’s ability to run as superuser is used. For remotely executed commands, sudo is always used.
  • Feature: For run targets, support to skip uploading the working directory to the remote host. This is useful to quickly execute a single, self-contained script on a remote system.
  • Feature: For run targets, the locations of the uploaded working directory and the uploaded script file are configurable now. If the script file is contained inside the working directory, then all files are uploaded to the configured project root path.
  • Fixed For run targets, executing a script not contained in the configured working directory is working now.
  • Fixed move detection of shell interpreters at startup into the background. Previously, modal progress was shown.
  • Fixed “Mapping native path to wsl” when running with WSL on Windows is only slow for the first time.
  • Fixed “Run in terminal” with the new “Reworked 2025” terminal engine of 2025.1.
  • Fixed “Run in terminal” did not run in terminal if invoked from the popup menu of a line marker next to an injected shell snippet.

Intentions

  • Added New intention to convert old-style test commands [ ... ] into the equivalent Bash [[ .. ]] command. Logical operators -a (and) and -o (or) are supported. Redirections embedded inside [ ... ] are supported, too. Because Bash treats an unquoted right operator of string comparisons as a glob pattern, but [ ... ] does not, such values are converted into double-quoted strings.
  • Added New intention to join a pipeline of two conditional commands into one, e.g. [[ -e path ]] && [[ -d path ]] is joined into [[ -e path && -d path ]].
  • Added New intention to join a pipeline of two arithmetic commands into one, e.g. (( a == 2 )) && (( b == 3 )) is joined into (( a == 2 && b == 3 )).

ShellCheck

  • Updated Bundle ShellCheck 0.11.0.
  • Added Support ranges of ShellCheck codes for suppression of warnings, e.g. # shellcheck disable=SC2000-SC3000.
  • Fixed In the settings, the titles of several ShellCheck checks were shown incomplete.
  • Updated The checkboxes in the settings of the ShellCheck inspection now follow the updated UI requirements of the IDE.
  • Fixed Inspection “Global unused variable” was not using suppression codes correctly.
  • Fixed ClassCastException: class com.intellij.jinja.template.psi.impl.DjangoTemplateFileImpl cannot be cast to class pro.bashsupport.ap.

shfmt

  • Updated Update the bundled version of shfmt to the current development version to support the new alternate command substitution of Bash 5.3.

bats-core

  • Feature: Bundle bats-core 1.12.0, adding support for bats::on_failure.
  • Feature: Mark bats-core file setup_suite.bash as test source, similar to *.bats files.
  • Fixed Navigating to tests from the test runner UI was broken on Windows.

Zsh

  • Added Zsh files are always formatted with the new native engine. shfmt does not support Zsh syntax.
  • Fixed Parsing of function x() echo inner; echo outer to separate echo outer from the function definition.
  • Fixed Parsing of foreach x (value value) ... command with empty value list or line feeds inside it.
  • Fixed Parsing of if { condition; } { echo true; } and similar alternate commands.
  • Fixed Parsing of foreach command with multiple names, e.g. foreach k v (a b c d) { echo $k=$v }.
  • Fixed Parsing of code following an empty array assignment a=().
© 2020–2025 Joachim Ansorg
Правовая информация
Политика конфиденциальности
Юридическая информация