diff --git a/CHANGELOG.md b/CHANGELOG.md index 6329436..91bea95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 1.17.0 +### Added +- Support for Rider 2023.2-EAP6-SNAPSHOT + ## 1.16.0 ### Added - Support for Rider 2023.1 diff --git a/build.gradle b/build.gradle index 02906ae..31b45de 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,9 @@ import org.apache.tools.ant.taskdefs.condition.Os plugins { id 'java' - id 'org.jetbrains.kotlin.jvm' version '1.7.22' - id 'org.jetbrains.intellij' version '1.13.0' // https://github.com/JetBrains/gradle-intellij-plugin/releases - id 'com.jetbrains.rdgen' version '2023.1.2' // https://github.com/JetBrains/rd/releases + id 'org.jetbrains.kotlin.jvm' version '1.8.22' + id 'org.jetbrains.intellij' version '1.13.3' // https://github.com/JetBrains/gradle-intellij-plugin/releases + id 'com.jetbrains.rdgen' version '2023.2.2' // https://github.com/JetBrains/rd/releases } ext { diff --git a/gradle.properties b/gradle.properties index 14e6f0f..1a6e8ab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ DotnetPluginId=ReSharperPlugin.SpecflowRiderPlugin DotnetSolution=SpecflowRiderPlugin.sln RiderPluginId=specflowriderplugin -PluginVersion=1.16.1 +PluginVersion=1.17.0 BuildConfiguration=Release @@ -12,7 +12,7 @@ BuildConfiguration=Release # 2019.2-SNAPSHOT # 2019.2-EAP2-SNAPSHOT # 2019.2 -ProductVersion=2023.1 +ProductVersion=2023.2-EAP6-SNAPSHOT # Kotlin 1.4 will bundle the stdlib dependency by default, causing problems with the version bundled with the IDE # https://blog.jetbrains.com/kotlin/2020/07/kotlin-1-4-rc-released/#stdlib-default diff --git a/gradlew.bat b/gradlew.bat index d3dd20f..9750c8a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,168 +1,168 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem GRADLE JVM WRAPPER START MARKER - -setlocal -set BUILD_DIR=%LOCALAPPDATA%\gradle-jvm -set JVM_TARGET_DIR=%BUILD_DIR%\jdk-17.0.3.1_windows-x64_bin-d6ede5\ - -set JVM_URL=https://download.oracle.com/java/17/archive/jdk-17.0.3.1_windows-x64_bin.zip - -set IS_TAR_GZ=0 -set JVM_TEMP_FILE=gradle-jvm.zip - -if /I "%JVM_URL:~-7%"==".tar.gz" ( - set IS_TAR_GZ=1 - set JVM_TEMP_FILE=gradle-jvm.tar.gz -) - -set POWERSHELL=%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe - -if not exist "%JVM_TARGET_DIR%" MD "%JVM_TARGET_DIR%" - -if not exist "%JVM_TARGET_DIR%.flag" goto downloadAndExtractJvm - -set /p CURRENT_FLAG=<"%JVM_TARGET_DIR%.flag" -if "%CURRENT_FLAG%" == "%JVM_URL%" goto continueWithJvm - -:downloadAndExtractJvm - -PUSHD "%BUILD_DIR%" -if errorlevel 1 goto fail - -echo Downloading %JVM_URL% to %BUILD_DIR%\%JVM_TEMP_FILE% -if exist "%JVM_TEMP_FILE%" DEL /F "%JVM_TEMP_FILE%" -"%POWERSHELL%" -nologo -noprofile -Command "Set-StrictMode -Version 3.0; $ErrorActionPreference = \"Stop\"; (New-Object Net.WebClient).DownloadFile('%JVM_URL%', '%JVM_TEMP_FILE%')" -if errorlevel 1 goto fail - -POPD - -RMDIR /S /Q "%JVM_TARGET_DIR%" -if errorlevel 1 goto fail - -MKDIR "%JVM_TARGET_DIR%" -if errorlevel 1 goto fail - -PUSHD "%JVM_TARGET_DIR%" -if errorlevel 1 goto fail - -echo Extracting %BUILD_DIR%\%JVM_TEMP_FILE% to %JVM_TARGET_DIR% - -if "%IS_TAR_GZ%"=="1" ( - tar xf "..\\%JVM_TEMP_FILE%" -) else ( - "%POWERSHELL%" -nologo -noprofile -command "Set-StrictMode -Version 3.0; $ErrorActionPreference = \"Stop\"; Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('..\\%JVM_TEMP_FILE%', '.');" -) -if errorlevel 1 goto fail - -DEL /F "..\%JVM_TEMP_FILE%" -if errorlevel 1 goto fail - -POPD - -echo %JVM_URL%>"%JVM_TARGET_DIR%.flag" -if errorlevel 1 goto fail - -:continueWithJvm - -set JAVA_HOME= -for /d %%d in ("%JVM_TARGET_DIR%"*) do if exist "%%d\bin\java.exe" set JAVA_HOME=%%d -if not exist "%JAVA_HOME%\bin\java.exe" ( - echo Unable to find java.exe under %JVM_TARGET_DIR% - goto fail -) - -endlocal & set JAVA_HOME=%JAVA_HOME% - -@rem GRADLE JVM WRAPPER END MARKER - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem GRADLE JVM WRAPPER START MARKER + +setlocal +set BUILD_DIR=%LOCALAPPDATA%\gradle-jvm +set JVM_TARGET_DIR=%BUILD_DIR%\jdk-17.0.3.1_windows-x64_bin-d6ede5\ + +set JVM_URL=https://download.oracle.com/java/17/archive/jdk-17.0.3.1_windows-x64_bin.zip + +set IS_TAR_GZ=0 +set JVM_TEMP_FILE=gradle-jvm.zip + +if /I "%JVM_URL:~-7%"==".tar.gz" ( + set IS_TAR_GZ=1 + set JVM_TEMP_FILE=gradle-jvm.tar.gz +) + +set POWERSHELL=%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe + +if not exist "%JVM_TARGET_DIR%" MD "%JVM_TARGET_DIR%" + +if not exist "%JVM_TARGET_DIR%.flag" goto downloadAndExtractJvm + +set /p CURRENT_FLAG=<"%JVM_TARGET_DIR%.flag" +if "%CURRENT_FLAG%" == "%JVM_URL%" goto continueWithJvm + +:downloadAndExtractJvm + +PUSHD "%BUILD_DIR%" +if errorlevel 1 goto fail + +echo Downloading %JVM_URL% to %BUILD_DIR%\%JVM_TEMP_FILE% +if exist "%JVM_TEMP_FILE%" DEL /F "%JVM_TEMP_FILE%" +"%POWERSHELL%" -nologo -noprofile -Command "Set-StrictMode -Version 3.0; $ErrorActionPreference = \"Stop\"; (New-Object Net.WebClient).DownloadFile('%JVM_URL%', '%JVM_TEMP_FILE%')" +if errorlevel 1 goto fail + +POPD + +RMDIR /S /Q "%JVM_TARGET_DIR%" +if errorlevel 1 goto fail + +MKDIR "%JVM_TARGET_DIR%" +if errorlevel 1 goto fail + +PUSHD "%JVM_TARGET_DIR%" +if errorlevel 1 goto fail + +echo Extracting %BUILD_DIR%\%JVM_TEMP_FILE% to %JVM_TARGET_DIR% + +if "%IS_TAR_GZ%"=="1" ( + tar xf "..\\%JVM_TEMP_FILE%" +) else ( + "%POWERSHELL%" -nologo -noprofile -command "Set-StrictMode -Version 3.0; $ErrorActionPreference = \"Stop\"; Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('..\\%JVM_TEMP_FILE%', '.');" +) +if errorlevel 1 goto fail + +DEL /F "..\%JVM_TEMP_FILE%" +if errorlevel 1 goto fail + +POPD + +echo %JVM_URL%>"%JVM_TARGET_DIR%.flag" +if errorlevel 1 goto fail + +:continueWithJvm + +set JAVA_HOME= +for /d %%d in ("%JVM_TARGET_DIR%"*) do if exist "%%d\bin\java.exe" set JAVA_HOME=%%d +if not exist "%JAVA_HOME%\bin\java.exe" ( + echo Unable to find java.exe under %JVM_TARGET_DIR% + goto fail +) + +endlocal & set JAVA_HOME=%JAVA_HOME% + +@rem GRADLE JVM WRAPPER END MARKER + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + :omega \ No newline at end of file diff --git a/src/dotnet/Plugin.props b/src/dotnet/Plugin.props index 69264d4..669d19c 100644 --- a/src/dotnet/Plugin.props +++ b/src/dotnet/Plugin.props @@ -1,6 +1,6 @@ - 2023.1.0 + 2023.2.0-eap06 SpecFlow for Rider diff --git a/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinCodeFormatter.cs b/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinCodeFormatter.cs index 08d1bc7..845cda3 100644 --- a/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinCodeFormatter.cs +++ b/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinCodeFormatter.cs @@ -1,6 +1,7 @@ using JetBrains.ReSharper.Psi; using JetBrains.ReSharper.Psi.CodeStyle; using JetBrains.ReSharper.Psi.ExtensionsAPI.Tree; +using JetBrains.ReSharper.Psi.Format; using JetBrains.ReSharper.Psi.Impl.CodeStyle; using JetBrains.ReSharper.Psi.Parsing; using JetBrains.ReSharper.Psi.Tree; @@ -21,9 +22,14 @@ public GherkinCodeFormatter(PsiLanguageType languageType, CodeFormatterRequireme _formatterInfoProvider = formatterInfoProvider; } - protected override CodeFormattingContext CreateFormatterContext(CodeFormatProfile profile, ITreeNode firstNode, ITreeNode lastNode, AdditionalFormatterParameters parameters, ICustomFormatterInfoProvider provider) + protected override CodeFormattingContext CreateFormatterContext( + AdditionalFormatterParameters parameters, + ICustomFormatterInfoProvider provider, + int tabWidth, + SingleLangChangeAccu changeAccu, + FormatTask[] formatTasks) { - return new CodeFormattingContext(this, firstNode, lastNode, FormatterLoggerProvider.FormatterLogger, parameters); + return new CodeFormattingContext(this, FormatterLoggerProvider.FormatterLogger, parameters, tabWidth, changeAccu, formatTasks); } public override MinimalSeparatorType GetMinimalSeparatorByNodeTypes(TokenNodeType leftToken, TokenNodeType rightToken) @@ -40,7 +46,7 @@ public override MinimalSeparatorType GetMinimalSeparatorByNodeTypes(TokenNodeTyp return MinimalSeparatorType.NotRequired; } - public override ITreeNode CreateSpace(string indent, ITreeNode replacedSpace) + public override ITreeNode CreateSpace(string indent, NodeType replacedOrLeftSiblingType) { return GherkinTokenTypes.WHITE_SPACE.CreateLeafElement(indent); } @@ -69,7 +75,7 @@ public override ITreeRange Format(ITreeNode firstElement, ITreeNode lastElement, return new TreeRange(firstElement, lastElement); } - public override void FormatInsertedNodes(ITreeNode nodeFirst, ITreeNode nodeLast, bool formatSurround) + public override void FormatInsertedNodes(ITreeNode nodeFirst, ITreeNode nodeLast, bool formatSurround, bool indentSurround = false) { } diff --git a/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinFormatterInfoProvider.cs b/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinFormatterInfoProvider.cs index 30719dd..609312f 100644 --- a/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinFormatterInfoProvider.cs +++ b/src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Formatting/GherkinFormatterInfoProvider.cs @@ -59,7 +59,7 @@ private void Indenting() Describe() .Name("AndIndent") .Where( - Left().HasType(GherkinNodeTypes.STEP).Satisfies2((node, _) => node is GherkinStep {StepKind: GherkinStepKind.And}) + Left().HasType(GherkinNodeTypes.STEP).Satisfies2((node, _) => node.Node is GherkinStep {StepKind: GherkinStepKind.And}) ) .Switch(s => s.AndStepIndentSize, ContinuousIndentOptions(this, IndentType.External)) .Build(); @@ -86,7 +86,7 @@ private void Indenting() Parent().HasType(GherkinNodeTypes.EXAMPLES_BLOCK).Or().HasType(GherkinNodeTypes.STEP), Node().HasType(GherkinNodeTypes.TABLE)) .Switch(s => s.SmallTableIndent, - When(true).Calculate((_, _) => new IndentOptionValue(IndentType.External, 0, " ")), + When(true).Calculate((_, _) => new IndentOptionValue(IndentType.External, 0, new Whitespace(0, 2))), When(false).Switch(s => s.TableIndentSize, ContinuousIndentOptions(this, IndentType.External))) .Build(); }