mirror of
				https://github.com/chylex/IntelliJ-IdeaVim.git
				synced 2025-10-31 20:17:13 +01:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			customized
			...
			9f469d0eb2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9f469d0eb2 | |||
| f59d2f769c | |||
| dc00b59733 | |||
| bc20e6af9c | |||
| c40f07714a | |||
| fa68842c2d | |||
| eca9258607 | |||
| 46fb030977 | 
| @@ -7,4 +7,3 @@ indent_style = space | |||||||
| [*.kt] | [*.kt] | ||||||
| indent_size = 2 | indent_size = 2 | ||||||
| indent_style = space | indent_style = space | ||||||
| ktlint_standard_no-wildcard-imports = disabled |  | ||||||
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | |||||||
| * text=auto eol=lf |  | ||||||
							
								
								
									
										32
									
								
								.github/workflows/checkNewPlugins.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								.github/workflows/checkNewPlugins.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,32 +0,0 @@ | |||||||
| # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created |  | ||||||
| # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle |  | ||||||
|  |  | ||||||
| # This workflow syncs changes from the docs folder of IdeaVim to the IdeaVim.wiki repository |  | ||||||
|  |  | ||||||
| name: Check new plugin dependencies |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   schedule: |  | ||||||
|     - cron: '0 5 * * *' |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Fetch origin repo |  | ||||||
|         uses: actions/checkout@v3 |  | ||||||
|  |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |  | ||||||
|         with: |  | ||||||
|           java-version: '17' |  | ||||||
|           distribution: 'adopt' |  | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |  | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |  | ||||||
|  |  | ||||||
|       - name: Check new plugins |  | ||||||
|         run: ./gradlew scripts:checkNewPluginDependencies |  | ||||||
							
								
								
									
										47
									
								
								.github/workflows/closeYoutrackOnCommit.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										47
									
								
								.github/workflows/closeYoutrackOnCommit.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,47 +0,0 @@ | |||||||
| # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created |  | ||||||
| # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle |  | ||||||
|  |  | ||||||
| name: Close YouTrack on commit |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   push: |  | ||||||
|     branches: [ master ] |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v3 |  | ||||||
|         with: |  | ||||||
|           fetch-depth: 300 |  | ||||||
|       - name: Get tags |  | ||||||
|         run: git fetch --tags origin |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |  | ||||||
|         with: |  | ||||||
|           java-version: '17' |  | ||||||
|           distribution: 'adopt' |  | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |  | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |  | ||||||
|  |  | ||||||
|         # The last successful job was marked with a tag |  | ||||||
|       - name: Get commit with last workflow |  | ||||||
|         run: | |  | ||||||
|           echo "LAST_COMMIT=$(git rev-list -n 1 tags/workflow-close-youtrack)" >> $GITHUB_ENV |  | ||||||
|  |  | ||||||
|       - name: Update YouTrack |  | ||||||
|         run: ./gradlew --no-configuration-cache updateYoutrackOnCommit |  | ||||||
|         env: |  | ||||||
|           SUCCESS_COMMIT: ${{ env.LAST_COMMIT }} |  | ||||||
|           YOUTRACK_TOKEN: ${{ secrets.YOUTRACK_TOKEN }} |  | ||||||
|  |  | ||||||
|       - name: Update tags |  | ||||||
|         run: | |  | ||||||
|           git tag --delete workflow-close-youtrack || true |  | ||||||
|           git push origin :refs/tags/workflow-close-youtrack || true |  | ||||||
|           git tag workflow-close-youtrack |  | ||||||
|           git push origin workflow-close-youtrack |  | ||||||
							
								
								
									
										6
									
								
								.github/workflows/codeql-analysis.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/codeql-analysis.yml
									
									
									
									
										vendored
									
									
								
							| @@ -39,7 +39,7 @@ jobs: | |||||||
|  |  | ||||||
|     # Initializes the CodeQL tools for scanning. |     # Initializes the CodeQL tools for scanning. | ||||||
|     - name: Initialize CodeQL |     - name: Initialize CodeQL | ||||||
|       uses: github/codeql-action/init@v2 |       uses: github/codeql-action/init@v1 | ||||||
|       with: |       with: | ||||||
|         languages: ${{ matrix.language }} |         languages: ${{ matrix.language }} | ||||||
|         # If you wish to specify custom queries, you can do so here or in a config file. |         # If you wish to specify custom queries, you can do so here or in a config file. | ||||||
| @@ -50,7 +50,7 @@ jobs: | |||||||
|     # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java). |     # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java). | ||||||
|     # If this step fails, then you should remove it and run the build manually (see below) |     # If this step fails, then you should remove it and run the build manually (see below) | ||||||
|     - name: Autobuild |     - name: Autobuild | ||||||
|       uses: github/codeql-action/autobuild@v2 |       uses: github/codeql-action/autobuild@v1 | ||||||
|  |  | ||||||
|     # ℹ️ Command-line programs to run using the OS shell. |     # ℹ️ Command-line programs to run using the OS shell. | ||||||
|     # 📚 https://git.io/JvXDl |     # 📚 https://git.io/JvXDl | ||||||
| @@ -64,4 +64,4 @@ jobs: | |||||||
|     #   make release |     #   make release | ||||||
|  |  | ||||||
|     - name: Perform CodeQL Analysis |     - name: Perform CodeQL Analysis | ||||||
|       uses: github/codeql-action/analyze@v2 |       uses: github/codeql-action/analyze@v1 | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								.github/workflows/integrationsTest.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/integrationsTest.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,33 +0,0 @@ | |||||||
| # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created |  | ||||||
| # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle |  | ||||||
|  |  | ||||||
| name: Testing CI integrations |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   schedule: |  | ||||||
|     - cron: '0 5 * * *' |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|         with: |  | ||||||
|           fetch-depth: 300 |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |  | ||||||
|         with: |  | ||||||
|           java-version: '17' |  | ||||||
|           distribution: 'adopt' |  | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |  | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |  | ||||||
|  |  | ||||||
|       - name: Run tests |  | ||||||
|         run: ./gradlew --no-configuration-cache integrationsTest |  | ||||||
|         env: |  | ||||||
|           YOUTRACK_TOKEN: ${{ secrets.YOUTRACK_TOKEN }} |  | ||||||
|           GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} |  | ||||||
							
								
								
									
										36
									
								
								.github/workflows/kover.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								.github/workflows/kover.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,36 +0,0 @@ | |||||||
| # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created |  | ||||||
| # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle |  | ||||||
|  |  | ||||||
| name: Kover |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   push: |  | ||||||
|     branches: [ master ] |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|         with: |  | ||||||
|           fetch-depth: 300 |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |  | ||||||
|         with: |  | ||||||
|           java-version: '17' |  | ||||||
|           distribution: 'adopt' |  | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |  | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |  | ||||||
|  |  | ||||||
|       - name: Run tests |  | ||||||
|         run: ./gradlew koverXmlReport |  | ||||||
|  |  | ||||||
|  |  | ||||||
|       # Upload Kover report to CodeCov |  | ||||||
|       - uses: codecov/codecov-action@v3 |  | ||||||
|         with: |  | ||||||
|           files: ${{ github.workspace }}/build/reports/kover/xml/report.xml |  | ||||||
							
								
								
									
										17
									
								
								.github/workflows/mergeDependabotPR.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/mergeDependabotPR.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,17 +0,0 @@ | |||||||
| name: Dependabot auto-merge |  | ||||||
| on: pull_request |  | ||||||
|  |  | ||||||
| permissions: |  | ||||||
|   contents: write |  | ||||||
|   pull-requests: write |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   dependabot: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: ${{ github.actor == 'dependabot[bot]' && github.repository == 'JetBrains/ideavim' }} |  | ||||||
|     steps: |  | ||||||
|       - name: Auto-merge Dependabot PR |  | ||||||
|         run: gh pr merge --auto --rebase "$PR_URL" |  | ||||||
|         env: |  | ||||||
|           PR_URL: ${{github.event.pull_request.html_url}} |  | ||||||
|           GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} |  | ||||||
							
								
								
									
										22
									
								
								.github/workflows/mergePr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/mergePr.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,41 +5,39 @@ name: Update Changelog On PR | |||||||
|  |  | ||||||
| on: | on: | ||||||
|   workflow_dispatch: |   workflow_dispatch: | ||||||
|   pull_request_target: |   pull_request: | ||||||
|     types: [ closed ] |     types: [ closed ] | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|  |  | ||||||
|     if: false |     if: github.event.pull_request.merged == true | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 50 |           fetch-depth: 50 | ||||||
|           # See end of file updateChangeslog.yml for explanation of this secret |       - name: Set up JDK 11 | ||||||
|           ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }} |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |         uses: actions/setup-java@v2 | ||||||
|         with: |         with: | ||||||
|           java-version: '17' |           java-version: '11' | ||||||
|           distribution: 'adopt' |           distribution: 'adopt' | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||||
|  |  | ||||||
|       - name: Update authors |       - name: Update authors | ||||||
|         id: update_authors |         id: update_authors | ||||||
|         run: ./gradlew --no-configuration-cache updateMergedPr -PprId=${{ github.event.number }} |         run: ./gradlew updateMergedPr -PprId=${{ github.event.number }} | ||||||
|         env: |         env: | ||||||
|           GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} |           GITHUB_OAUTH: ${{ secrets.MERGE_PR }} | ||||||
|  |  | ||||||
|       - name: Commit changes |       - name: Commit changes | ||||||
|         uses: stefanzweifel/git-auto-commit-action@v4 |         uses: stefanzweifel/git-auto-commit-action@v4 | ||||||
|         with: |         with: | ||||||
|           branch: master |           branch: master | ||||||
|           commit_message: Update changelog after merging PR |           commit_message: Update changelog  after merging PR | ||||||
|           commit_user_name: IdeaVim Bot |           commit_user_name: Alex Plate | ||||||
|           commit_user_email: maintainers@ideavim.dev |           commit_user_email: aleksei.plate@jetbrains.com | ||||||
|           commit_author: IdeaVim Bot <maintainers@ideavim.dev> |           commit_author: Alex Plate <aleksei.plate@jetbrains.com> | ||||||
|           file_pattern: CHANGES.md |           file_pattern: CHANGES.md | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								.github/workflows/mergePrTest.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								.github/workflows/mergePrTest.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created | ||||||
|  | # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle | ||||||
|  |  | ||||||
|  | name: Update Changelog On PR (Test) | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   workflow_dispatch: | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   build: | ||||||
|  |  | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 50 | ||||||
|  |       - name: Set up JDK 11 | ||||||
|  |         uses: actions/setup-java@v2 | ||||||
|  |         with: | ||||||
|  |           java-version: '11' | ||||||
|  |           distribution: 'adopt' | ||||||
|  |           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||||
|  |           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||||
|  |  | ||||||
|  |       - name: Update authors | ||||||
|  |         id: update_authors | ||||||
|  |         run: ./gradlew updateMergedPr -PprId=525 | ||||||
|  |         env: | ||||||
|  |           GITHUB_OAUTH: ${{ secrets.MERGE_PR }} | ||||||
|  |  | ||||||
|  | #      - name: Commit changes | ||||||
|  | #        uses: stefanzweifel/git-auto-commit-action@v4 | ||||||
|  | #        with: | ||||||
|  | #          branch: master | ||||||
|  | #          commit_message: Update changelog  after merging PR | ||||||
|  | #          commit_user_name: Alex Plate | ||||||
|  | #          commit_user_email: aleksei.plate@jetbrains.com | ||||||
|  | #          commit_author: Alex Plate <aleksei.plate@jetbrains.com> | ||||||
|  | #          file_pattern: CHANGES.md | ||||||
							
								
								
									
										81
									
								
								.github/workflows/runUiOctopusTests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								.github/workflows/runUiOctopusTests.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,81 +0,0 @@ | |||||||
| name: Run Non Octopus UI Tests |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   schedule: |  | ||||||
|       - cron: '0 12 * * *' |  | ||||||
| jobs: |  | ||||||
|   build-for-ui-test-mac-os: |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|     runs-on: macos-latest |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v4 |  | ||||||
|       - name: Setup Java |  | ||||||
|         uses: actions/setup-java@v4 |  | ||||||
|         with: |  | ||||||
|           distribution: zulu |  | ||||||
|           java-version: 17 |  | ||||||
|       - name: Setup FFmpeg |  | ||||||
|         run: brew install ffmpeg |  | ||||||
| #      - name: Setup Gradle |  | ||||||
| #        uses: gradle/gradle-build-action@v2.4.2 |  | ||||||
|       - name: Build Plugin |  | ||||||
|         run: gradle :buildPlugin |  | ||||||
|       - name: Run Idea |  | ||||||
|         run: | |  | ||||||
|           mkdir -p build/reports |  | ||||||
|           gradle --no-configuration-cache runIdeForUiTests -Doctopus.handler=false > build/reports/idea.log & |  | ||||||
|       - name: Wait for Idea started |  | ||||||
|         uses: jtalk/url-health-check-action@v3 |  | ||||||
|         with: |  | ||||||
|           url: http://127.0.0.1:8082 |  | ||||||
|           max-attempts: 20 |  | ||||||
|           retry-delay: 10s |  | ||||||
|       - name: Tests |  | ||||||
|         run: gradle :tests:ui-ij-tests:testUi |  | ||||||
|       - name: Move video |  | ||||||
|         if: always() |  | ||||||
|         run: mv tests/ui-ij-tests/video build/reports |  | ||||||
|       - name: Move sandbox logs |  | ||||||
|         if: always() |  | ||||||
|         run: mv build/idea-sandbox/IC-2024.1.2/log_runIdeForUiTests idea-sandbox-log |  | ||||||
|       - name: Save report |  | ||||||
|         if: always() |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           name: ui-test-fails-report-mac |  | ||||||
|           path: | |  | ||||||
|             build/reports |  | ||||||
|             tests/ui-ij-tests/build/reports |  | ||||||
|             idea-sandbox-log |  | ||||||
| #  build-for-ui-test-linux: |  | ||||||
| #    runs-on: ubuntu-latest |  | ||||||
| #    steps: |  | ||||||
| #      - uses: actions/checkout@v2 |  | ||||||
| #      - name: Setup Java |  | ||||||
| #        uses: actions/setup-java@v2.1.0 |  | ||||||
| #        with: |  | ||||||
| #          distribution: zulu |  | ||||||
| #          java-version: 11 |  | ||||||
| #      - name: Build Plugin |  | ||||||
| #        run: gradle :buildPlugin |  | ||||||
| #      - name: Run Idea |  | ||||||
| #        run: | |  | ||||||
| #          export DISPLAY=:99.0 |  | ||||||
| #          Xvfb -ac :99 -screen 0 1920x1080x16 & |  | ||||||
| #          mkdir -p build/reports |  | ||||||
| #          gradle :runIdeForUiTests #> build/reports/idea.log |  | ||||||
| #      - name: Wait for Idea started |  | ||||||
| #        uses: jtalk/url-health-check-action@1.5 |  | ||||||
| #        with: |  | ||||||
| #          url: http://127.0.0.1:8082 |  | ||||||
| #          max-attempts: 15 |  | ||||||
| #          retry-delay: 30s |  | ||||||
| #      - name: Tests |  | ||||||
| #        run: gradle :testUi |  | ||||||
| #      - name: Save fails report |  | ||||||
| #        if: ${{ failure() }} |  | ||||||
| #        uses: actions/upload-artifact@v2 |  | ||||||
| #        with: |  | ||||||
| #          name: ui-test-fails-report-linux |  | ||||||
| #          path: | |  | ||||||
| #            ui-test-example/build/reports |  | ||||||
							
								
								
									
										52
									
								
								.github/workflows/runUiPyTests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.github/workflows/runUiPyTests.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,52 +0,0 @@ | |||||||
| name: Run UI PyCharm Tests |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   schedule: |  | ||||||
|       - cron: '0 12 * * *' |  | ||||||
| jobs: |  | ||||||
|   build-for-ui-test-mac-os: |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|     runs-on: macos-latest |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v4 |  | ||||||
|       - name: Setup Java |  | ||||||
|         uses: actions/setup-java@v4 |  | ||||||
|         with: |  | ||||||
|           distribution: zulu |  | ||||||
|           java-version: 17 |  | ||||||
|       - uses: actions/setup-python@v5 |  | ||||||
|         with: |  | ||||||
|           python-version: '3.10' |  | ||||||
|       - name: Setup FFmpeg |  | ||||||
|         run: brew install ffmpeg |  | ||||||
| #      - name: Setup Gradle |  | ||||||
| #        uses: gradle/gradle-build-action@v2.4.2 |  | ||||||
|       - name: Build Plugin |  | ||||||
|         run: gradle :buildPlugin |  | ||||||
|       - name: Run Idea |  | ||||||
|         run: | |  | ||||||
|           mkdir -p build/reports |  | ||||||
|           gradle --no-configuration-cache :runIdeForUiTests -PideaType=PC > build/reports/idea.log & |  | ||||||
|       - name: Wait for Idea started |  | ||||||
|         uses: jtalk/url-health-check-action@v3 |  | ||||||
|         with: |  | ||||||
|           url: http://127.0.0.1:8082 |  | ||||||
|           max-attempts: 20 |  | ||||||
|           retry-delay: 10s |  | ||||||
|       - name: Tests |  | ||||||
|         run: gradle :tests:ui-py-tests:testUi |  | ||||||
|       - name: Move video |  | ||||||
|         if: always() |  | ||||||
|         run: mv tests/ui-py-tests/video build/reports |  | ||||||
|       - name: Move sandbox logs |  | ||||||
|         if: always() |  | ||||||
|         run: mv build/idea-sandbox/PC-2024.1.2/log_runIdeForUiTests idea-sandbox-log |  | ||||||
|       - name: Save report |  | ||||||
|         if: always() |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |  | ||||||
|           name: ui-test-fails-report-mac |  | ||||||
|           path: | |  | ||||||
|             build/reports |  | ||||||
|             tests/ui-py-tests/build/reports |  | ||||||
|             idea-sandbox-log |  | ||||||
							
								
								
									
										38
									
								
								.github/workflows/runUiTests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/workflows/runUiTests.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,48 +5,44 @@ on: | |||||||
|       - cron: '0 12 * * *' |       - cron: '0 12 * * *' | ||||||
| jobs: | jobs: | ||||||
|   build-for-ui-test-mac-os: |   build-for-ui-test-mac-os: | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|     runs-on: macos-latest |     runs-on: macos-latest | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v2 | ||||||
|       - name: Setup Java |       - name: Setup Java | ||||||
|         uses: actions/setup-java@v4 |         uses: actions/setup-java@v2.1.0 | ||||||
|         with: |         with: | ||||||
|           distribution: zulu |           distribution: zulu | ||||||
|           java-version: 17 |           java-version: 11 | ||||||
|       - name: Setup FFmpeg |       - name: Setup FFmpeg | ||||||
|         run: brew install ffmpeg |         uses: FedericoCarboni/setup-ffmpeg@v1 | ||||||
| #      - name: Setup Gradle |         with: | ||||||
| #        uses: gradle/gradle-build-action@v2.4.2 |           # Not strictly necessary, but it may prevent rate limit | ||||||
|  |           # errors especially on GitHub-hosted macos machines. | ||||||
|  |           token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|       - name: Build Plugin |       - name: Build Plugin | ||||||
|         run: gradle :buildPlugin |         run: gradle :buildPlugin | ||||||
|       - name: Run Idea |       - name: Run Idea | ||||||
|         run: | |         run: | | ||||||
|           mkdir -p build/reports |           mkdir -p build/reports | ||||||
|           gradle --no-configuration-cache runIdeForUiTests > build/reports/idea.log & |           gradle :runIdeForUiTests > build/reports/idea.log & | ||||||
|       - name: Wait for Idea started |       - name: Wait for Idea started | ||||||
|         uses: jtalk/url-health-check-action@v3 |         uses: jtalk/url-health-check-action@1.5 | ||||||
|         with: |         with: | ||||||
|           url: http://127.0.0.1:8082 |           url: http://127.0.0.1:8082 | ||||||
|           max-attempts: 20 |           max-attempts: 20 | ||||||
|           retry-delay: 10s |           retry-delay: 10s | ||||||
|       - name: Tests |       - name: Tests | ||||||
|         run: gradle :tests:ui-ij-tests:testUi |         run: gradle :testUi | ||||||
|       - name: Move video |       - name: Move video | ||||||
|         if: always() |         if: ${{ failure() }} | ||||||
|         run: mv tests/ui-ij-tests/video build/reports |         run: mv video build/reports | ||||||
|       - name: Move sandbox logs |       - name: Save fails report | ||||||
|         if: always() |         if: ${{ failure() }} | ||||||
|         run: mv build/idea-sandbox/IC-2024.1.2/log_runIdeForUiTests idea-sandbox-log |         uses: actions/upload-artifact@v2 | ||||||
|       - name: Save report |  | ||||||
|         if: always() |  | ||||||
|         uses: actions/upload-artifact@v4 |  | ||||||
|         with: |         with: | ||||||
|           name: ui-test-fails-report-mac |           name: ui-test-fails-report-mac | ||||||
|           path: | |           path: | | ||||||
|             build/reports |             build/reports | ||||||
|             tests/ui-ij-tests/build/reports |  | ||||||
|             idea-sandbox-log |  | ||||||
| #  build-for-ui-test-linux: | #  build-for-ui-test-linux: | ||||||
| #    runs-on: ubuntu-latest | #    runs-on: ubuntu-latest | ||||||
| #    steps: | #    steps: | ||||||
| @@ -78,4 +74,4 @@ jobs: | |||||||
| #        with: | #        with: | ||||||
| #          name: ui-test-fails-report-linux | #          name: ui-test-fails-report-linux | ||||||
| #          path: | | #          path: | | ||||||
| #            ui-test-example/build/reports | #            ui-test-example/build/reports | ||||||
							
								
								
									
										45
									
								
								.github/workflows/syncDoc.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/syncDoc.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,45 +0,0 @@ | |||||||
| # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created |  | ||||||
| # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle |  | ||||||
|  |  | ||||||
| # This workflow syncs changes from the docs folder of IdeaVim to the IdeaVim.wiki repository |  | ||||||
|  |  | ||||||
| name: Sync docs |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   workflow_dispatch: |  | ||||||
|   push: |  | ||||||
|     branches: [ master ] |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Fetch origin repo |  | ||||||
|         uses: actions/checkout@v3 |  | ||||||
|         with: |  | ||||||
|           path: origin |  | ||||||
|           # See end of file updateChangeslog.yml for explanation of this secret |  | ||||||
|           ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }} |  | ||||||
|  |  | ||||||
|       - name: Fetch docs repo |  | ||||||
|         uses: actions/checkout@v3 |  | ||||||
|         with: |  | ||||||
|           repository: JetBrains/ideavim.wiki |  | ||||||
|           path: docs |  | ||||||
|  |  | ||||||
|       - name: Sync docs |  | ||||||
|         id: update_authors |  | ||||||
|         run: cp -a origin/doc/. docs |  | ||||||
|  |  | ||||||
|       - name: Commit changes |  | ||||||
|         uses: stefanzweifel/git-auto-commit-action@v4 |  | ||||||
|         with: |  | ||||||
|           branch: master |  | ||||||
|           repository: docs |  | ||||||
|           commit_message: Update docs |  | ||||||
|           commit_user_name: IdeaVim Bot |  | ||||||
|           commit_user_email: maintainers@ideavim.dev |  | ||||||
|           commit_author: IdeaVim Bot <maintainers@ideavim.dev> |  | ||||||
							
								
								
									
										45
									
								
								.github/workflows/updateAuthors.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/updateAuthors.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,58 +5,45 @@ name: Update Authors | |||||||
|  |  | ||||||
| on: | on: | ||||||
|   workflow_dispatch: |   workflow_dispatch: | ||||||
|   schedule: |   push: | ||||||
|     - cron: '0 9 * * *' |     branches: [ master ] | ||||||
| # Workflow run on push is disabled to avoid conflicts when merging PR |  | ||||||
| #  push: |  | ||||||
| #    branches: [ master ] |  | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v2 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 300 |           fetch-depth: 300 | ||||||
|           # See end of file updateChangeslog.yml for explanation of this secret |       - name: Set up JDK 11 | ||||||
|           ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }} |  | ||||||
|       - name: Get tags |  | ||||||
|         run: git fetch --tags origin |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |         uses: actions/setup-java@v2 | ||||||
|         with: |         with: | ||||||
|           java-version: '17' |           java-version: '11' | ||||||
|           distribution: 'adopt' |           distribution: 'adopt' | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||||
|  |  | ||||||
|         # The last successful job was marked with a tag |       - uses: nrwl/last-successful-commit-action@v1 | ||||||
|       - name: Get commit with last workflow |         id: last_successful_commit | ||||||
|         run: | |         with: | ||||||
|           echo "LAST_COMMIT=$(git rev-list -n 1 tags/workflow-authors)" >> $GITHUB_ENV |           branch: 'master' | ||||||
|  |           workflow_id: 'updateAuthors.yml' | ||||||
|  |           github_token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       - name: Update authors |       - name: Update authors | ||||||
|         id: update_authors |         id: update_authors | ||||||
|         run: ./gradlew --no-configuration-cache updateAuthors --stacktrace |         run: ./gradlew updateAuthors --stacktrace | ||||||
|         env: |         env: | ||||||
|           SUCCESS_COMMIT: ${{ env.LAST_COMMIT }} |           SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }} | ||||||
|           GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} |           GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       - name: Commit changes |       - name: Commit changes | ||||||
|         uses: stefanzweifel/git-auto-commit-action@v4 |         uses: stefanzweifel/git-auto-commit-action@v4 | ||||||
|         with: |         with: | ||||||
|           commit_message: Add ${{ steps.update_authors.outputs.authors }} to contributors list |           commit_message: Add ${{ steps.update_authors.outputs.authors }} to contributors list | ||||||
|           commit_user_name: IdeaVim Bot |           commit_user_name: Alex Plate | ||||||
|           commit_user_email: maintainers@ideavim.dev |           commit_user_email: aleksei.plate@jetbrains.com | ||||||
|           commit_author: IdeaVim Bot <maintainers@ideavim.dev> |           commit_author: Alex Plate <aleksei.plate@jetbrains.com> | ||||||
|           file_pattern: AUTHORS.md |           file_pattern: AUTHORS.md | ||||||
|  |  | ||||||
|       - name: Update tags |  | ||||||
|         run: | |  | ||||||
|           git tag --delete workflow-authors || true |  | ||||||
|           git push origin :refs/tags/workflow-authors || true |  | ||||||
|           git tag workflow-authors |  | ||||||
|           git push origin workflow-authors |  | ||||||
|   | |||||||
							
								
								
									
										52
									
								
								.github/workflows/updateChangelog.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.github/workflows/updateChangelog.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,59 +5,43 @@ name: Update Changelog | |||||||
|  |  | ||||||
| on: | on: | ||||||
|   workflow_dispatch: |   workflow_dispatch: | ||||||
|   schedule: |   push: | ||||||
|     - cron: '0 10 * * *' |     branches: [ master ] | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     if: false |  | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v2 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 300 |           fetch-depth: 300 | ||||||
|           # See end of file updateChangeslog.yml for explanation of this secret |       - name: Set up JDK 11 | ||||||
|           ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }} |  | ||||||
|       - name: Get tags |  | ||||||
|         run: git fetch --tags origin |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |         uses: actions/setup-java@v2 | ||||||
|         with: |         with: | ||||||
|           java-version: '17' |           java-version: '11' | ||||||
|           distribution: 'adopt' |           distribution: 'adopt' | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||||
|  |  | ||||||
|         # The last successful job was marked with a tag |       - uses: nrwl/last-successful-commit-action@v1 | ||||||
|       - name: Get commit with last workflow |         id: last_successful_commit | ||||||
|         run: | |         with: | ||||||
|           echo "LAST_COMMIT=$(git rev-list -n 1 tags/workflow-changelog)" >> $GITHUB_ENV |           branch: 'master' | ||||||
|  |           workflow_id: 'updateChangelog.yml' | ||||||
|  |           github_token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |  | ||||||
|       - name: Update changelog |       - name: Update changelog | ||||||
|         run: ./gradlew --no-configuration-cache updateChangelog |         run: ./gradlew updateChangelog | ||||||
|         env: |         env: | ||||||
|           SUCCESS_COMMIT: ${{ env.LAST_COMMIT }} |           SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }} | ||||||
|  |  | ||||||
|       - name: Commit changes |       - name: Commit changes | ||||||
|         uses: stefanzweifel/git-auto-commit-action@v4 |         uses: stefanzweifel/git-auto-commit-action@v4 | ||||||
|         with: |         with: | ||||||
|           commit_message: Update changelog. Action id - ${{ github.run_id }} |           commit_message: Update changelog | ||||||
|           commit_user_name: IdeaVim Bot |           commit_user_name: Alex Plate | ||||||
|           commit_user_email: maintainers@ideavim.dev |           commit_user_email: aleksei.plate@jetbrains.com | ||||||
|           commit_author: IdeaVim Bot <maintainers@ideavim.dev> |           commit_author: Alex Plate <aleksei.plate@jetbrains.com> | ||||||
|           file_pattern: CHANGES.md |           file_pattern: CHANGES.md | ||||||
|  |  | ||||||
|       - name: Update tags |  | ||||||
|         run: | |  | ||||||
|           git tag --delete workflow-changelog || true |  | ||||||
|           git push origin :refs/tags/workflow-changelog || true |  | ||||||
|           git tag workflow-changelog |  | ||||||
|           git push origin workflow-changelog |  | ||||||
|  |  | ||||||
| # Regarding secrets.PUSH_TO_PROTECTED_BRANCH_SECRET - we use branch protection rules to automate merges of the |  | ||||||
| #   dependabot updates. See mergeDependatobPR.yml file. |  | ||||||
| # However, it turned out that GitHub accepts pushes from the actions as a PR and requires checks, that are always |  | ||||||
| #   false for pushing from actions. |  | ||||||
| # This secret is created to implement the workaround described in https://stackoverflow.com/a/76135647/3124227 |  | ||||||
							
								
								
									
										19
									
								
								.github/workflows/updateFormatting.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/updateFormatting.yml
									
									
									
									
										vendored
									
									
								
							| @@ -12,31 +12,26 @@ jobs: | |||||||
|   build: |   build: | ||||||
|  |  | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     if: github.repository == 'JetBrains/ideavim' |  | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|         with: |         with: | ||||||
|           fetch-depth: 50 |           fetch-depth: 50 | ||||||
|           # See end of file updateChangeslog.yml for explanation of this secret |       - name: Set up JDK 11 | ||||||
|           ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }} |  | ||||||
|       - name: Set up JDK 17 |  | ||||||
|         uses: actions/setup-java@v2 |         uses: actions/setup-java@v2 | ||||||
|         with: |         with: | ||||||
|           java-version: '17' |           java-version: '11' | ||||||
|           distribution: 'adopt' |           distribution: 'adopt' | ||||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml |           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file |           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||||
|  |  | ||||||
|       - uses: findologic/intellij-format-action@1.0.1 |       - name: Format files | ||||||
|         with: |         run: ./gradlew ktlintFormat | ||||||
|           include-glob: '*.kt,*.java' |  | ||||||
|           path: . |  | ||||||
|  |  | ||||||
|       - name: Commit changes |       - name: Commit changes | ||||||
|         uses: stefanzweifel/git-auto-commit-action@v4 |         uses: stefanzweifel/git-auto-commit-action@v4 | ||||||
|         with: |         with: | ||||||
|           commit_message: Update formatting |           commit_message: Update formatting | ||||||
|           commit_user_name: IdeaVim Bot |           commit_user_name: Alex Plate | ||||||
|           commit_user_email: maintainers@ideavim.dev |           commit_user_email: aleksei.plate@jetbrains.com | ||||||
|           commit_author: IdeaVim Bot <maintainers@ideavim.dev> |           commit_author: Alex Plate <aleksei.plate@jetbrains.com> | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,5 @@ | |||||||
| *.swp | *.swp | ||||||
| /.gradle/ | /.gradle/ | ||||||
| /.intellijPlatform/ |  | ||||||
|  |  | ||||||
| /.idea/ | /.idea/ | ||||||
| !/.idea/scopes | !/.idea/scopes | ||||||
| @@ -10,9 +9,6 @@ | |||||||
| !/.idea/fileTemplates | !/.idea/fileTemplates | ||||||
| !/.idea/runConfigurations | !/.idea/runConfigurations | ||||||
| !/.idea/codeStyles | !/.idea/codeStyles | ||||||
| !/.idea/vcs.xml |  | ||||||
| !/.idea/misc.xml |  | ||||||
| !/.idea/.name |  | ||||||
|  |  | ||||||
| **/build/ | **/build/ | ||||||
| **/out/ | **/out/ | ||||||
| @@ -25,13 +21,7 @@ | |||||||
| .teamcity/*.iml | .teamcity/*.iml | ||||||
|  |  | ||||||
| # Generated by gradle task "generateGrammarSource" | # Generated by gradle task "generateGrammarSource" | ||||||
| vim-engine/src/main/java/com/maddyhome/idea/vim/parser/generated | src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated | ||||||
| vim-engine/src/main/java/com/maddyhome/idea/vim/regexp/parser/generated |  | ||||||
| # Generated JSONs for lazy classloading |  | ||||||
| /vim-engine/src/main/resources/ksp-generated |  | ||||||
| /src/main/resources/ksp-generated |  | ||||||
|  |  | ||||||
| # Created by github automation | # Created by github automation | ||||||
| settings.xml | settings.xml | ||||||
|  |  | ||||||
| .kotlin |  | ||||||
							
								
								
									
										1
									
								
								.idea/.name
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								.idea/.name
									
									
									
										generated
									
									
									
								
							| @@ -1 +0,0 @@ | |||||||
| IdeaVim |  | ||||||
							
								
								
									
										5
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
								
							| @@ -6,7 +6,6 @@ | |||||||
|         <option name="CONTINUATION_INDENT_SIZE" value="4" /> |         <option name="CONTINUATION_INDENT_SIZE" value="4" /> | ||||||
|       </value> |       </value> | ||||||
|     </option> |     </option> | ||||||
|     <option name="LINE_SEPARATOR" value="
" /> |  | ||||||
|     <JavaCodeStyleSettings> |     <JavaCodeStyleSettings> | ||||||
|       <option name="FIELD_NAME_PREFIX" value="my" /> |       <option name="FIELD_NAME_PREFIX" value="my" /> | ||||||
|       <option name="STATIC_FIELD_NAME_PREFIX" value="our" /> |       <option name="STATIC_FIELD_NAME_PREFIX" value="our" /> | ||||||
| @@ -192,10 +191,6 @@ | |||||||
|     </codeStyleSettings> |     </codeStyleSettings> | ||||||
|     <codeStyleSettings language="kotlin"> |     <codeStyleSettings language="kotlin"> | ||||||
|       <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> |       <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> | ||||||
|       <indentOptions> |  | ||||||
|         <option name="INDENT_SIZE" value="2" /> |  | ||||||
|         <option name="TAB_SIZE" value="2" /> |  | ||||||
|       </indentOptions> |  | ||||||
|     </codeStyleSettings> |     </codeStyleSettings> | ||||||
|   </code_scheme> |   </code_scheme> | ||||||
| </component> | </component> | ||||||
							
								
								
									
										2
									
								
								.idea/copyright/IdeaVim.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/copyright/IdeaVim.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| <component name="CopyrightManager"> | <component name="CopyrightManager"> | ||||||
|   <copyright> |   <copyright> | ||||||
|     <option name="notice" value="Copyright 2003-&#36;today.year The IdeaVim authors

Use of this source code is governed by an MIT-style
license that can be found in the LICENSE.txt file or at
https://opensource.org/licenses/MIT." /> |     <option name="notice" value="IdeaVim - Vim emulator for IDEs based on the IntelliJ platform
Copyright (C) 2003-&#36;today.year The IdeaVim authors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>." /> | ||||||
|     <option name="myName" value="IdeaVim" /> |     <option name="myName" value="IdeaVim" /> | ||||||
|   </copyright> |   </copyright> | ||||||
| </component> | </component> | ||||||
							
								
								
									
										14
									
								
								.idea/inspectionProfiles/Qodana.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								.idea/inspectionProfiles/Qodana.xml
									
									
									
										generated
									
									
									
								
							| @@ -33,11 +33,9 @@ | |||||||
|       <option name="ignoreToString" value="false" /> |       <option name="ignoreToString" value="false" /> | ||||||
|       <option name="nonNlsCommentPattern" value="NON-NLS" /> |       <option name="nonNlsCommentPattern" value="NON-NLS" /> | ||||||
|     </inspection_tool> |     </inspection_tool> | ||||||
|     <inspection_tool class="MagicConstant" enabled="false" level="WARNING" enabled_by_default="false" /> |  | ||||||
|     <inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true"> |     <inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true"> | ||||||
|       <option name="m_requireAnnotationsFirst" value="true" /> |       <option name="m_requireAnnotationsFirst" value="true" /> | ||||||
|     </inspection_tool> |     </inspection_tool> | ||||||
|     <inspection_tool class="SameParameterValue" enabled="false" level="WARNING" enabled_by_default="false" /> |  | ||||||
|     <inspection_tool class="SameReturnValue" enabled="false" level="WARNING" enabled_by_default="false" /> |     <inspection_tool class="SameReturnValue" enabled="false" level="WARNING" enabled_by_default="false" /> | ||||||
|     <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false"> |     <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false"> | ||||||
|       <option name="processCode" value="true" /> |       <option name="processCode" value="true" /> | ||||||
| @@ -46,17 +44,5 @@ | |||||||
|     </inspection_tool> |     </inspection_tool> | ||||||
|     <inspection_tool class="SuperTearDownInFinally" enabled="true" level="WARNING" enabled_by_default="true" /> |     <inspection_tool class="SuperTearDownInFinally" enabled="true" level="WARNING" enabled_by_default="true" /> | ||||||
|     <inspection_tool class="UnstableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" /> |     <inspection_tool class="UnstableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" /> | ||||||
|     <inspection_tool class="unused" enabled="false" level="WARNING" enabled_by_default="false" checkParameterExcludingHierarchy="false"> |  | ||||||
|       <option name="LOCAL_VARIABLE" value="true" /> |  | ||||||
|       <option name="FIELD" value="true" /> |  | ||||||
|       <option name="METHOD" value="true" /> |  | ||||||
|       <option name="CLASS" value="true" /> |  | ||||||
|       <option name="PARAMETER" value="true" /> |  | ||||||
|       <option name="REPORT_PARAMETER_FOR_PUBLIC_METHODS" value="true" /> |  | ||||||
|       <option name="ADD_MAINS_TO_ENTRIES" value="true" /> |  | ||||||
|       <option name="ADD_APPLET_TO_ENTRIES" value="true" /> |  | ||||||
|       <option name="ADD_SERVLET_TO_ENTRIES" value="true" /> |  | ||||||
|       <option name="ADD_NONJAVA_TO_ENTRIES" value="true" /> |  | ||||||
|     </inspection_tool> |  | ||||||
|   </profile> |   </profile> | ||||||
| </component> | </component> | ||||||
							
								
								
									
										22
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,22 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="EntryPointsManager"> |  | ||||||
|     <list size="3"> |  | ||||||
|       <item index="0" class="java.lang.String" itemvalue="com.intellij.vim.annotations.CommandOrMotion" /> |  | ||||||
|       <item index="1" class="java.lang.String" itemvalue="com.intellij.vim.annotations.ExCommand" /> |  | ||||||
|       <item index="2" class="java.lang.String" itemvalue="com.intellij.vim.annotations.VimscriptFunction" /> |  | ||||||
|     </list> |  | ||||||
|   </component> |  | ||||||
|   <component name="ExternalStorageConfigurationManager" enabled="true" /> |  | ||||||
|   <component name="FrameworkDetectionExcludesConfiguration"> |  | ||||||
|     <file type="web" url="file://$PROJECT_DIR$" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="MavenProjectsManager"> |  | ||||||
|     <option name="originalFiles"> |  | ||||||
|       <list> |  | ||||||
|         <option value="$PROJECT_DIR$/.teamcity/pom.xml" /> |  | ||||||
|       </list> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="corretto-17" project-jdk-type="JavaSDK" /> |  | ||||||
| </project> |  | ||||||
| @@ -12,7 +12,7 @@ | |||||||
|       <option name="taskNames"> |       <option name="taskNames"> | ||||||
|         <list> |         <list> | ||||||
|           <option value="check" /> |           <option value="check" /> | ||||||
|           <option value="verifyPlugin" /> |           <option value="runPluginVerifier" /> | ||||||
|         </list> |         </list> | ||||||
|       </option> |       </option> | ||||||
|       <option name="vmOptions" value="" /> |       <option name="vmOptions" value="" /> | ||||||
| @@ -20,7 +20,6 @@ | |||||||
|     <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess> |     <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess> | ||||||
|     <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess> |     <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess> | ||||||
|     <DebugAllEnabled>false</DebugAllEnabled> |     <DebugAllEnabled>false</DebugAllEnabled> | ||||||
|     <RunAsTest>false</RunAsTest> |  | ||||||
|     <method v="2" /> |     <method v="2" /> | ||||||
|   </configuration> |   </configuration> | ||||||
| </component> | </component> | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| <component name="ProjectRunConfigurationManager"> |  | ||||||
|   <configuration default="false" name="Start IJ with IdeaVim (Split Mode)" type="GradleRunConfiguration" factoryName="Gradle"> |  | ||||||
|     <log_file alias="idea.log" path="$PROJECT_DIR$/build/idea-sandbox/system/log/idea.log" /> |  | ||||||
|     <ExternalSystemSettings> |  | ||||||
|       <option name="executionName" /> |  | ||||||
|       <option name="externalProjectPath" value="$PROJECT_DIR$" /> |  | ||||||
|       <option name="externalSystemIdString" value="GRADLE" /> |  | ||||||
|       <option name="scriptParameters" value="" /> |  | ||||||
|       <option name="taskDescriptions"> |  | ||||||
|         <list /> |  | ||||||
|       </option> |  | ||||||
|       <option name="taskNames"> |  | ||||||
|         <list> |  | ||||||
|           <option value="runIdeSplitMode" /> |  | ||||||
|         </list> |  | ||||||
|       </option> |  | ||||||
|       <option name="vmOptions" value="" /> |  | ||||||
|     </ExternalSystemSettings> |  | ||||||
|     <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess> |  | ||||||
|     <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess> |  | ||||||
|     <DebugAllEnabled>false</DebugAllEnabled> |  | ||||||
|     <RunAsTest>false</RunAsTest> |  | ||||||
|     <method v="2" /> |  | ||||||
|   </configuration> |  | ||||||
| </component> |  | ||||||
							
								
								
									
										2
									
								
								.idea/scopes/Copyright.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/scopes/Copyright.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,3 +1,3 @@ | |||||||
| <component name="DependencyValidationManager"> | <component name="DependencyValidationManager"> | ||||||
|   <scope name="Copyright" pattern="file:*/&&!file:.github//*&&!file:.idea//*&&!file:.teamcity//*&&!file:assets//*&&!file:config//*&&!file:doc//*&&!file:gradle//*&&!file:gradlew&&!file:gradlew.bat&&!file:src/main/resources//*&&!file:antlr//*&&!file:java/com/maddyhome/idea/vim/regexp/RegExp.kt&&!file:java/com/maddyhome/idea/vim/ui/Tutor.kt&&!file:java/com/maddyhome/idea/vim/helper/ScrollViewHelper.kt" /> |   <scope name="Copyright" pattern="(file[IdeaVIM.main]:*/||file[IdeaVIM.test]:*/)&&!file[IdeaVIM.main]:resources//*" /> | ||||||
| </component> | </component> | ||||||
							
								
								
									
										16
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,16 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="IssueNavigationConfiguration"> |  | ||||||
|     <option name="links"> |  | ||||||
|       <list> |  | ||||||
|         <IssueNavigationLink> |  | ||||||
|           <option name="issueRegexp" value="[A-Z]+\-\d+" /> |  | ||||||
|           <option name="linkRegexp" value="https://youtrack.jetbrains.com/issue/$0" /> |  | ||||||
|         </IssueNavigationLink> |  | ||||||
|       </list> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
|   <component name="VcsDirectoryMappings"> |  | ||||||
|     <mapping directory="" vcs="Git" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										19
									
								
								.teamcity/_Self/Constants.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.teamcity/_Self/Constants.kt
									
									
									
									
										vendored
									
									
								
							| @@ -5,13 +5,16 @@ object Constants { | |||||||
|   const val EAP_CHANNEL = "eap" |   const val EAP_CHANNEL = "eap" | ||||||
|   const val DEV_CHANNEL = "Dev" |   const val DEV_CHANNEL = "Dev" | ||||||
|  |  | ||||||
|   const val GITHUB_TESTS = "2024.1.1" |   const val VERSION = "1.11.1" | ||||||
|   const val NVIM_TESTS = "2024.1.1" |   const val DEV_VERSION = "1.12.0" | ||||||
|   const val PROPERTY_TESTS = "2024.1.1" |  | ||||||
|   const val LONG_RUNNING_TESTS = "2024.1.1" |  | ||||||
|   const val QODANA_TESTS = "2024.1.1" |  | ||||||
|   const val RELEASE = "2024.1.1" |  | ||||||
|  |  | ||||||
|   const val RELEASE_DEV = "2024.1.1" |   const val GITHUB_TESTS = "LATEST-EAP-SNAPSHOT" | ||||||
|   const val RELEASE_EAP = "2024.1.1" |   const val NVIM_TESTS = "LATEST-EAP-SNAPSHOT" | ||||||
|  |   const val PROPERTY_TESTS = "LATEST-EAP-SNAPSHOT" | ||||||
|  |   const val LONG_RUNNING_TESTS = "LATEST-EAP-SNAPSHOT" | ||||||
|  |   const val QODANA_TESTS = "LATEST-EAP-SNAPSHOT" | ||||||
|  |   const val RELEASE = "LATEST-EAP-SNAPSHOT" | ||||||
|  |  | ||||||
|  |   const val RELEASE_DEV = "LATEST-EAP-SNAPSHOT" | ||||||
|  |   const val RELEASE_EAP = "LATEST-EAP-SNAPSHOT" | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										102
									
								
								.teamcity/_Self/Project.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										102
									
								
								.teamcity/_Self/Project.kt
									
									
									
									
										vendored
									
									
								
							| @@ -6,28 +6,41 @@ import _Self.buildTypes.Nvim | |||||||
| import _Self.buildTypes.PluginVerifier | import _Self.buildTypes.PluginVerifier | ||||||
| import _Self.buildTypes.PropertyBased | import _Self.buildTypes.PropertyBased | ||||||
| import _Self.buildTypes.Qodana | import _Self.buildTypes.Qodana | ||||||
| import _Self.buildTypes.TestingBuildType | import _Self.buildTypes.TestsForIntelliJ20222 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJEAP | ||||||
| import _Self.subprojects.GitHub | import _Self.subprojects.GitHub | ||||||
| import _Self.subprojects.OldTests | import _Self.subprojects.OldTests | ||||||
| import _Self.subprojects.Releases | import _Self.subprojects.Releases | ||||||
|  | import _Self.vcsRoots.Branch_181 | ||||||
|  | import _Self.vcsRoots.Branch_183 | ||||||
|  | import _Self.vcsRoots.Branch_191_193 | ||||||
|  | import _Self.vcsRoots.Branch_201 | ||||||
|  | import _Self.vcsRoots.Branch_202 | ||||||
|  | import _Self.vcsRoots.Branch_203_212 | ||||||
|  | import _Self.vcsRoots.Branch_213_221 | ||||||
|  | import _Self.vcsRoots.Branch_Release | ||||||
| import _Self.vcsRoots.GitHubPullRequest | import _Self.vcsRoots.GitHubPullRequest | ||||||
| import _Self.vcsRoots.ReleasesVcsRoot |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.Project | import jetbrains.buildServer.configs.kotlin.v2019_2.Project | ||||||
|  |  | ||||||
| object Project : Project({ | object Project : Project({ | ||||||
|   description = "Vim engine for JetBrains IDEs" |   description = "Vim emulation plugin for the IntelliJ platform products" | ||||||
|  |  | ||||||
|   subProjects(Releases, OldTests, GitHub) |   subProjects(Releases, OldTests, GitHub) | ||||||
|  |  | ||||||
|   // VCS roots |   // VCS roots | ||||||
|  |   vcsRoot(Branch_183) | ||||||
|  |   vcsRoot(Branch_181) | ||||||
|  |   vcsRoot(Branch_191_193) | ||||||
|  |   vcsRoot(Branch_201) | ||||||
|  |   vcsRoot(Branch_202) | ||||||
|  |   vcsRoot(Branch_203_212) | ||||||
|  |   vcsRoot(Branch_213_221) | ||||||
|  |   vcsRoot(Branch_Release) | ||||||
|   vcsRoot(GitHubPullRequest) |   vcsRoot(GitHubPullRequest) | ||||||
|   vcsRoot(ReleasesVcsRoot) |  | ||||||
|  |  | ||||||
|   // Active tests |   // Builds | ||||||
|   buildType(TestingBuildType("Latest EAP", "<default>", version = "LATEST-EAP-SNAPSHOT")) |   buildType(TestsForIntelliJEAP) | ||||||
|   buildType(TestingBuildType("2024.1.1", "<default>")) |   buildType(TestsForIntelliJ20222) | ||||||
|   buildType(TestingBuildType("Latest EAP With Xorg", "<default>", version = "LATEST-EAP-SNAPSHOT")) |  | ||||||
|  |  | ||||||
|   buildType(PropertyBased) |   buildType(PropertyBased) | ||||||
|   buildType(LongRunning) |   buildType(LongRunning) | ||||||
| @@ -37,27 +50,52 @@ object Project : Project({ | |||||||
|   buildType(Compatibility) |   buildType(Compatibility) | ||||||
|  |  | ||||||
|   buildType(Qodana) |   buildType(Qodana) | ||||||
|  |  | ||||||
|  |   // Unknown staff generated by TeamCity | ||||||
|  |   features { | ||||||
|  |     feature { | ||||||
|  |       type = "CloudImage" | ||||||
|  |       id = "PROJECT_EXT_768" | ||||||
|  |       param("agent_pool_id", "41") | ||||||
|  |       param("amazon-id", "ami-0fa17ce8238eb8868") | ||||||
|  |       param("ebs-optimized", "false") | ||||||
|  |       param("image-instances-limit", "") | ||||||
|  |       param("image-name-prefix", "BuildAgentsIdeaVim") | ||||||
|  |       param("instance-type", "c5d.xlarge") | ||||||
|  |       param("key-pair-name", "teamcity-prod-pub") | ||||||
|  |       param("profileId", "amazon-48") | ||||||
|  |       param("security-group-ids", "sg-eda08696,sg-7332cf0f,") | ||||||
|  |       param("source-id", "BuildAgentsIdeaVim") | ||||||
|  |       param("spot-instance-price", "0.12") | ||||||
|  |       param("subnet-id", "subnet-58839511") | ||||||
|  |       param("use-spot-instances", "true") | ||||||
|  |       param("user-tags", "project=idea-vim") | ||||||
|  |       param("key-pair-name", "") | ||||||
|  |       param("spot-instance-price", "") | ||||||
|  |     } | ||||||
|  |     feature { | ||||||
|  |       type = "CloudProfile" | ||||||
|  |       id = "amazon-48" | ||||||
|  |       param("agentPushPreset", "") | ||||||
|  |       param("cloud-code", "amazon") | ||||||
|  |       param("description", "") | ||||||
|  |       param("enabled", "true") | ||||||
|  |       param("max-running-instances", "10") | ||||||
|  |       param("name", "Cloud Agents") | ||||||
|  |       param("next-hour", "") | ||||||
|  |       param("not-checked", "") | ||||||
|  |       param("profileId", "amazon-48") | ||||||
|  |       param("profileServerUrl", "") | ||||||
|  |       param("region", "eu-west-1") | ||||||
|  |       param("secure:access-id", "credentialsJSON:dbcdb2a2-de5f-4bc9-9421-292b19e83947") | ||||||
|  |       param("secure:secret-key", "credentialsJSON:65a87fe7-0977-4af9-96f1-344f2b82d269") | ||||||
|  |       param("system.cloud.profile_id", "amazon-48") | ||||||
|  |       param("terminate-idle-time", "15") | ||||||
|  |       param("total-work-time", "") | ||||||
|  |       param("user-script", "") | ||||||
|  |       param("spot-fleet-config", "") | ||||||
|  |       param("terminate-after-build", "true") | ||||||
|  |       param("name", "Cloud Agents - Single Build") | ||||||
|  |     } | ||||||
|  |   } | ||||||
| }) | }) | ||||||
|  |  | ||||||
| // Common build type for all configurations |  | ||||||
| abstract class IdeaVimBuildType(init: BuildType.() -> Unit) : BuildType({ |  | ||||||
|   artifactRules = """ |  | ||||||
|         +:build/reports => build/reports |  | ||||||
|         +:/mnt/agent/temp/buildTmp/ => /mnt/agent/temp/buildTmp/ |  | ||||||
|     """.trimIndent() |  | ||||||
|  |  | ||||||
|   init() |  | ||||||
|  |  | ||||||
|   requirements { |  | ||||||
|     // These requirements define Linux-Medium configuration. |  | ||||||
|     // Unfortunately, requirement by name (teamcity.agent.name) doesn't work |  | ||||||
|     //   IDK the reason for it, but on our agents this property is empty |  | ||||||
|     equals("teamcity.agent.hardware.cpuCount", "4") |  | ||||||
|     equals("teamcity.agent.os.family", "Linux") |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   failureConditions { |  | ||||||
|     // Disable detection of the java OOM |  | ||||||
|     javaCrash = false |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
| @@ -1,8 +1,6 @@ | |||||||
| @file:Suppress("ClassName") |  | ||||||
| 
 |  | ||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
| 
 | 
 | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| @@ -10,47 +8,39 @@ import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailu | |||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
| 
 | 
 | ||||||
| open class TestingBuildType( | sealed class ActiveTests(buildName: String, ijVersion: String) : BuildType({ | ||||||
|   private val testName: String, |   name = buildName | ||||||
|   private val branch: String, |  | ||||||
|   private val version: String = testName, |  | ||||||
|   private val javaVersion: String? = null, |  | ||||||
|   private val javaPlugin: Boolean = true, |  | ||||||
| ) : IdeaVimBuildType({ |  | ||||||
|   id("IdeaVimTests_${testName.vanish()}") |  | ||||||
|   name = "Tests for IntelliJ $testName" |  | ||||||
| 
 |  | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|     param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", javaPlugin.not().toString()) |     param("env.ORG_GRADLE_PROJECT_ideaVersion", ijVersion) | ||||||
|     param("env.ORG_GRADLE_PROJECT_ideaVersion", version) |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|     if (javaVersion != null) { |  | ||||||
|       param("env.ORG_GRADLE_PROJECT_javaVersion", javaVersion) |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:$branch" |  | ||||||
| 
 | 
 | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   steps { |   steps { | ||||||
|     gradle { |     gradle { | ||||||
|       tasks = "clean test" |       tasks = "clean check -x ktlintMainSourceSetCheck -x ktlintTestSourceSetCheck" | ||||||
|       buildFile = "" |       buildFile = "" | ||||||
|       enableStacktrace = true |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   triggers { |   triggers { | ||||||
|     vcs { |     vcs { | ||||||
|       branchFilter = "+:$branch" |       branchFilter = "" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   failureConditions { |   failureConditions { | ||||||
|     failOnMetricChange { |     failOnMetricChange { | ||||||
|       metric = BuildFailureOnMetric.MetricType.TEST_COUNT |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
| @@ -64,9 +54,5 @@ open class TestingBuildType( | |||||||
|   } |   } | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| private fun String.vanish(): String { | object TestsForIntelliJEAP : ActiveTests("Tests for IntelliJ Latest EAP", "LATEST-EAP-SNAPSHOT") | ||||||
|   return this | object TestsForIntelliJ20222 : ActiveTests("Tests for IntelliJ 2022.2", "2022.2.1") | ||||||
|     .replace(' ', '_') |  | ||||||
|     .replace('.', '_') |  | ||||||
|     .replace('-', '_') |  | ||||||
| } |  | ||||||
							
								
								
									
										34
									
								
								.teamcity/_Self/buildTypes/Compatibility.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								.teamcity/_Self/buildTypes/Compatibility.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,45 +1,31 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.golang | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.golang | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule | ||||||
|  |  | ||||||
| object Compatibility : IdeaVimBuildType({ | object Compatibility : BuildType({ | ||||||
|   id("IdeaVimCompatibility") |   id("IdeaVimCompatibility") | ||||||
|   name = "IdeaVim compatibility with external plugins" |   name = "IdeaVim compatibility with external plugins" | ||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     script { |  | ||||||
|       name = "Load Verifier" |  | ||||||
|       scriptContent = """ |  | ||||||
|         mkdir verifier1 |  | ||||||
|         curl -f -L -o verifier1/verifier-cli-dev-all-1.jar "https://packages.jetbrains.team/files/p/ideavim/plugin-verifier/verifier-cli-dev-all-1.jar" |  | ||||||
|       """.trimIndent() |  | ||||||
|     } |  | ||||||
|     script { |     script { | ||||||
|       name = "Check" |       name = "Check" | ||||||
|       scriptContent = """ |       scriptContent = """ | ||||||
|               # We use a custom build of verifier that downloads IdeaVim from dev channel |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [latest-IU] -team-city | ||||||
|               # To create a custom build: Download plugin verifier repo, add an if that switches to dev channel for IdeaVim repo |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}io.github.mishkun.ideavimsneak' [latest-IU] -team-city | ||||||
|               # At the moment it's com.jetbrains.pluginverifier.repository.repositories.marketplace.MarketplaceRepository#getLastCompatibleVersionOfPlugin |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}eu.theblob42.idea.whichkey' [latest-IU] -team-city | ||||||
|               # Build using gradlew :intellij-plugin-verifier:verifier-cli:shadowJar |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}IdeaVimExtension' [latest-IU] -team-city | ||||||
|               # Upload verifier-cli-dev-all.jar artifact to the repo in IdeaVim space repo |                 # Outdated java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}github.zgqq.intellij-enhance' [latest-IU] -team-city | ||||||
|                |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.copilot' [latest-IU] -team-city | ||||||
|               java --version |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.dankinsoid.multicursor' [latest-IU] -team-city | ||||||
|               java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [latest-IU] -team-city |                 java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.joshestein.ideavim-quickscope' [latest-IU] -team-city | ||||||
|               java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}eu.theblob42.idea.whichkey' [latest-IU] -team-city |  | ||||||
|               java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}IdeaVimExtension' [latest-IU] -team-city |  | ||||||
|               # Outdated java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}github.zgqq.intellij-enhance' [latest-IU] -team-city |  | ||||||
|               # java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}com.github.copilot' [latest-IU] -team-city |  | ||||||
|               java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}com.github.dankinsoid.multicursor' [latest-IU] -team-city |  | ||||||
|               java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}com.joshestein.ideavim-quickscope' [latest-IU] -team-city |  | ||||||
|             """.trimIndent() |             """.trimIndent() | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -1,72 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2024 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package _Self.buildTypes |  | ||||||
|  |  | ||||||
| import _Self.IdeaVimBuildType |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script |  | ||||||
|  |  | ||||||
| object CreateNewReleaseBranchFromMaster : IdeaVimBuildType({ |  | ||||||
|   name = "EXP: Create new release branch from master" |  | ||||||
|  |  | ||||||
|   vcs { |  | ||||||
|     root(DslContext.settingsRoot) |  | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   steps { |  | ||||||
|     script { |  | ||||||
|       name = "Calculate next potential release version" |  | ||||||
|       scriptContent = """ |  | ||||||
|         #!/bin/bash |  | ||||||
|  |  | ||||||
|         # Fetch all remote branches |  | ||||||
|         git fetch --all |  | ||||||
|  |  | ||||||
|         # Get a list of all branches matching the pattern releases/x.y.z |  | ||||||
|         branches=${'$'}(git branch -r | grep -oE 'releases/[0-9]+\.[0-9]+\.x') |  | ||||||
|  |  | ||||||
|         # If no matching branches are found, print a message and exit |  | ||||||
|         if [[ -z "${'$'}branches" ]]; then |  | ||||||
|             echo "No release branches found" |  | ||||||
|             exit 1 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         # Find the largest release version |  | ||||||
|         largest_release=${'$'}(echo "${'$'}branches" | sort -V | tail -n 1) |  | ||||||
|  |  | ||||||
|         # Print the largest release |  | ||||||
|         echo "Largest release branch: ${'$'}largest_release" |  | ||||||
|         echo "##teamcity[setParameter name='env.POTENTIAL_VERSION' value='${'$'}largest_release']" |  | ||||||
|       """.trimIndent() |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     script { |  | ||||||
|       name = "Show potential release version" |  | ||||||
|       scriptContent = """ |  | ||||||
|                 #!/bin/bash |  | ||||||
|                 echo "Calculated or user-provided parameter value is: %env.POTENTIAL_VERSION%" |  | ||||||
|             """.trimIndent() |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   params { |  | ||||||
|     param("env.POTENTIAL_VERSION", "") |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   features { |  | ||||||
|     sshAgent { |  | ||||||
|       teamcitySshKey = "IdeaVim ssh keys" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
							
								
								
									
										77
									
								
								.teamcity/_Self/buildTypes/GithubTests.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								.teamcity/_Self/buildTypes/GithubTests.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import _Self.Constants.GITHUB_TESTS | ||||||
|  | import _Self.vcsRoots.GitHubPullRequest | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.PullRequests | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.pullRequests | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.VcsTrigger | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | object GithubTests : Github("clean test", "Tests") | ||||||
|  |  | ||||||
|  | sealed class Github(command: String, desc: String) : BuildType({ | ||||||
|  |   name = "GitHub Pull Requests $desc" | ||||||
|  |   description = "Test GitHub pull requests $desc" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", GITHUB_TESTS) | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(GitHubPullRequest) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |     branchFilter = """ | ||||||
|  |             +:* | ||||||
|  |             -:<default> | ||||||
|  |         """.trimIndent() | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = command | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       quietPeriodMode = VcsTrigger.QuietPeriodMode.USE_DEFAULT | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   features { | ||||||
|  |     pullRequests { | ||||||
|  |       provider = github { | ||||||
|  |         authType = token { | ||||||
|  |           token = "credentialsJSON:43afd6e5-6ad5-4d12-a218-cf1547717a7f" | ||||||
|  |         } | ||||||
|  |         filterTargetBranch = "refs/heads/master" | ||||||
|  |         filterAuthorRole = PullRequests.GitHubRoleFilter.EVERYBODY | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     commitStatusPublisher { | ||||||
|  |       vcsRootExtId = "${GitHubPullRequest.id}" | ||||||
|  |       publisher = github { | ||||||
|  |         githubUrl = "https://api.github.com" | ||||||
|  |         authType = personalToken { | ||||||
|  |           token = "credentialsJSON:43afd6e5-6ad5-4d12-a218-cf1547717a7f" | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       param("github_oauth_user", "AlexPl292") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  | }) | ||||||
							
								
								
									
										22
									
								
								.teamcity/_Self/buildTypes/LongRunning.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.teamcity/_Self/buildTypes/LongRunning.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,14 +1,13 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.Constants.LONG_RUNNING_TESTS | import _Self.Constants.LONG_RUNNING_TESTS | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
| object LongRunning : IdeaVimBuildType({ | object LongRunning : BuildType({ | ||||||
|   name = "Long running tests" |   name = "Long running tests" | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
| @@ -18,29 +17,26 @@ object LongRunning : IdeaVimBuildType({ | |||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     gradle { |     gradle { | ||||||
|       tasks = "clean :tests:long-running-tests:testLongRunning" |       tasks = "clean testLongRunning" | ||||||
|       buildFile = "" |       buildFile = "" | ||||||
|       enableStacktrace = true |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   triggers { |   triggers { | ||||||
|     vcs { |     vcs { | ||||||
|       enabled = false |       branchFilter = "" | ||||||
|       branchFilter = "+:<default>" |  | ||||||
|     } |  | ||||||
|     schedule { |  | ||||||
|       enabled = true |  | ||||||
|       schedulingPolicy = daily { |  | ||||||
|         hour = 5 |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
| }) | }) | ||||||
							
								
								
									
										14
									
								
								.teamcity/_Self/buildTypes/Nvim.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.teamcity/_Self/buildTypes/Nvim.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,7 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.Constants.NVIM_TESTS | import _Self.Constants.NVIM_TESTS | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| @@ -10,7 +10,7 @@ import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailu | |||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
| object Nvim : IdeaVimBuildType({ | object Nvim : BuildType({ | ||||||
|   name = "Tests with nvim" |   name = "Tests with nvim" | ||||||
|   description = "Running tests with nvim integration" |   description = "Running tests with nvim integration" | ||||||
|  |  | ||||||
| @@ -23,7 +23,6 @@ object Nvim : IdeaVimBuildType({ | |||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
| @@ -39,18 +38,23 @@ object Nvim : IdeaVimBuildType({ | |||||||
|               """.trimIndent() |               """.trimIndent() | ||||||
|     } |     } | ||||||
|     gradle { |     gradle { | ||||||
|       tasks = "clean test -Dnvim" |       tasks = "clean testWithNeovim" | ||||||
|       buildFile = "" |       buildFile = "" | ||||||
|       enableStacktrace = true |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   triggers { |   triggers { | ||||||
|     vcs { |     vcs { | ||||||
|       branchFilter = "+:<default>" |       branchFilter = "" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|   failureConditions { |   failureConditions { | ||||||
|     failOnMetricChange { |     failOnMetricChange { | ||||||
|       metric = BuildFailureOnMetric.MetricType.TEST_COUNT |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								.teamcity/_Self/buildTypes/PluginVerifier.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.teamcity/_Self/buildTypes/PluginVerifier.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,12 +1,12 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
| object PluginVerifier : IdeaVimBuildType({ | object PluginVerifier : BuildType({ | ||||||
|   name = "Plugin verification" |   name = "Plugin verification" | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
| @@ -15,22 +15,26 @@ object PluginVerifier : IdeaVimBuildType({ | |||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     gradle { |     gradle { | ||||||
|       tasks = "clean verifyPlugin" |       tasks = "clean runPluginVerifier" | ||||||
|       buildFile = "" |       buildFile = "" | ||||||
|       enableStacktrace = true |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   triggers { |   triggers { | ||||||
|     vcs { |     vcs { | ||||||
|       branchFilter = "+:<default>" |       branchFilter = "" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								.teamcity/_Self/buildTypes/PrintReleaseBranch.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								.teamcity/_Self/buildTypes/PrintReleaseBranch.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,42 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2024 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package _Self.buildTypes |  | ||||||
|  |  | ||||||
| import _Self.IdeaVimBuildType |  | ||||||
| import _Self.vcsRoots.ReleasesVcsRoot |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script |  | ||||||
|  |  | ||||||
| object PrintReleaseBranch : IdeaVimBuildType({ |  | ||||||
|   name = "EXP: Print release branch" |  | ||||||
|  |  | ||||||
|   vcs { |  | ||||||
|     root(ReleasesVcsRoot) |  | ||||||
|     branchFilter = "+:heads/releases/*" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   steps { |  | ||||||
|  |  | ||||||
|     script { |  | ||||||
|       name = "Print current branch" |  | ||||||
|       scriptContent = """ |  | ||||||
|                 echo "Current branch is: %teamcity.build.branch%" |  | ||||||
|             """.trimIndent() |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   features { |  | ||||||
|     sshAgent { |  | ||||||
|       teamcitySshKey = "IdeaVim ssh keys" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
							
								
								
									
										14
									
								
								.teamcity/_Self/buildTypes/PropertyBased.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.teamcity/_Self/buildTypes/PropertyBased.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,13 +1,13 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.Constants.PROPERTY_TESTS | import _Self.Constants.PROPERTY_TESTS | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
| object PropertyBased : IdeaVimBuildType({ | object PropertyBased : BuildType({ | ||||||
|   name = "Property based tests" |   name = "Property based tests" | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
| @@ -17,22 +17,26 @@ object PropertyBased : IdeaVimBuildType({ | |||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     gradle { |     gradle { | ||||||
|       tasks = "clean :tests:property-tests:testPropertyBased" |       tasks = "clean testPropertyBased" | ||||||
|       buildFile = "" |       buildFile = "" | ||||||
|       enableStacktrace = true |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   triggers { |   triggers { | ||||||
|     vcs { |     vcs { | ||||||
|       branchFilter = "+:<default>" |       branchFilter = "" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								.teamcity/_Self/buildTypes/PublishVimEngine.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										63
									
								
								.teamcity/_Self/buildTypes/PublishVimEngine.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,63 +0,0 @@ | |||||||
| package _Self.buildTypes |  | ||||||
|  |  | ||||||
| import _Self.IdeaVimBuildType |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ParameterDisplay |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.ScheduleTrigger |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule |  | ||||||
|  |  | ||||||
| object PublishVimEngine : IdeaVimBuildType({ |  | ||||||
|   name = "Publish vim-engine" |  | ||||||
|   description = "Build and publish vim-engine library" |  | ||||||
|  |  | ||||||
|   artifactRules = "build/distributions/*" |  | ||||||
|   buildNumberPattern = "0.0.%build.counter%" |  | ||||||
|  |  | ||||||
|   params { |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_engineVersion", "%build.number%") |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_uploadUrl", "https://packages.jetbrains.team/maven/p/ij/intellij-dependencies") |  | ||||||
|     password("env.ORG_GRADLE_PROJECT_spacePassword", "credentialsJSON:5ea56f8c-efe7-4e1e-83de-0c02bcc39d0b", display = ParameterDisplay.HIDDEN) |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_spaceUsername", "a121c67e-39ac-40e6-bf82-649855ec27b6") |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   vcs { |  | ||||||
|     root(DslContext.settingsRoot) |  | ||||||
|     branchFilter = "+:fleet" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   steps { |  | ||||||
|     gradle { |  | ||||||
|       tasks = ":vim-engine:publish" |  | ||||||
|       buildFile = "" |  | ||||||
|       enableStacktrace = true |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   triggers { |  | ||||||
|     schedule { |  | ||||||
|       enabled = true |  | ||||||
|       schedulingPolicy = weekly { |  | ||||||
|         dayOfWeek = ScheduleTrigger.DAY.Sunday |  | ||||||
|       } |  | ||||||
|       branchFilter = "" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   failureConditions { |  | ||||||
|     failOnMetricChange { |  | ||||||
|       metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE |  | ||||||
|       threshold = 5 |  | ||||||
|       units = BuildFailureOnMetric.MetricUnit.PERCENTS |  | ||||||
|       comparison = BuildFailureOnMetric.MetricComparison.DIFF |  | ||||||
|       compareTo = build { |  | ||||||
|         buildRule = lastSuccessful() |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
							
								
								
									
										60
									
								
								.teamcity/_Self/buildTypes/Qodana.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								.teamcity/_Self/buildTypes/Qodana.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,18 +1,18 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.Constants.QODANA_TESTS | import _Self.Constants.QODANA_TESTS | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.Qodana | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.Qodana | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.qodana | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.qodana | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.ScheduleTrigger | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
| object Qodana : IdeaVimBuildType({ | object Qodana : BuildType({ | ||||||
|   name = "Qodana checks" |   name = "Qodana checks" | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
| @@ -22,47 +22,48 @@ object Qodana : IdeaVimBuildType({ | |||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     gradle { |  | ||||||
|       name = "Generate grammar" |  | ||||||
|       tasks = "generateGrammarSource" |  | ||||||
|     } |  | ||||||
|     qodana { |     qodana { | ||||||
|       name = "Qodana" |       name = "Qodana" | ||||||
|       param("clonefinder-languages", "") | /* | ||||||
|       param("collect-anonymous-statistics", "") |       reportAsTestsEnable = "" | ||||||
|       param("licenseaudit-enable", "") |       failBuildOnErrors = "" | ||||||
|       param("clonefinder-languages-container", "") |       codeInspectionXmlConfig = "Custom" | ||||||
|       param("linterVersion", "") |       codeInspectionCustomXmlConfigPath = ".idea/inspectionProfiles/Qodana.xml" | ||||||
|       param("clonefinder-queried-project", "") |       reportAsTestsEnable = "true" | ||||||
|       param("clonefinder-enable", "") | */ | ||||||
|       param("clonefinder-reference-projects", "") |       clearConditions() | ||||||
|  |       param("licenseaudit-enable", "true") | ||||||
|  |       param("clonefinder-languages", "Java") | ||||||
|  |       param("clonefinder-mode", "") | ||||||
|  |       param("report-version", "") | ||||||
|  |       param("clonefinder-languages-container", "Java Kotlin") | ||||||
|  |       param("namesAndTagsCustom", "repo.labs.intellij.net/static-analyser/qodana") | ||||||
|  |       param("clonefinder-queried-project", "src") | ||||||
|  |       param("clonefinder-enable", "true") | ||||||
|  |       param("clonefinder-reference-projects", "src") | ||||||
|  |       param("yaml-configuration", "") | ||||||
|       linter = jvm { |       linter = jvm { | ||||||
|         version = Qodana.JVMVersion.LATEST |         version = Qodana.JVMVersion.LATEST | ||||||
|       } |       } | ||||||
|       reportAsTests = true |  | ||||||
|       additionalQodanaArguments = "--baseline qodana.sarif.json" |  | ||||||
|       cloudToken = "credentialsJSON:6b79412e-9198-4862-9223-c5019488f903" |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   triggers { |   triggers { | ||||||
|     vcs { |     vcs { | ||||||
|       enabled = false |       enabled = true | ||||||
|       branchFilter = "+:<default>" |       branchFilter = "" | ||||||
|     } |     } | ||||||
|     schedule { |     schedule { | ||||||
|       schedulingPolicy = daily { |       schedulingPolicy = weekly { | ||||||
|         hour = 12 |         dayOfWeek = ScheduleTrigger.DAY.Tuesday | ||||||
|         minute = 0 |  | ||||||
|         timezone = "SERVER" |  | ||||||
|       } |       } | ||||||
|       param("dayOfWeek", "Sunday") |       branchFilter = "" | ||||||
|  |       triggerBuild = always() | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -73,8 +74,11 @@ object Qodana : IdeaVimBuildType({ | |||||||
|       comparison = BuildFailureOnMetric.MetricComparison.MORE |       comparison = BuildFailureOnMetric.MetricComparison.MORE | ||||||
|       compareTo = value() |       compareTo = value() | ||||||
|       metric = BuildFailureOnMetric.MetricType.TEST_FAILED_COUNT |       metric = BuildFailureOnMetric.MetricType.TEST_FAILED_COUNT | ||||||
|       param("metricKey", "QodanaProblemsNew") |       param("metricKey", "QodanaProblemsTotal") | ||||||
|       enabled = false |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										76
									
								
								.teamcity/_Self/buildTypes/Release.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								.teamcity/_Self/buildTypes/Release.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | |||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import _Self.Constants.DEFAULT_CHANNEL | ||||||
|  | import _Self.Constants.DEV_CHANNEL | ||||||
|  | import _Self.Constants.EAP_CHANNEL | ||||||
|  | import _Self.Constants.RELEASE | ||||||
|  | import _Self.Constants.VERSION | ||||||
|  | import _Self.vcsRoots.Branch_Release | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.vcsLabeling | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  |  | ||||||
|  | object Release : BuildType({ | ||||||
|  |   name = "Publish Release" | ||||||
|  |   description = "Build and publish IdeaVim plugin" | ||||||
|  |  | ||||||
|  |   artifactRules = "build/distributions/*" | ||||||
|  |   buildNumberPattern = VERSION | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE) | ||||||
|  |     password( | ||||||
|  |       "env.ORG_GRADLE_PROJECT_publishToken", | ||||||
|  |       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", | ||||||
|  |       label = "Password" | ||||||
|  |     ) | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_version", "%build.number%") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_publishChannels", "$DEFAULT_CHANNEL,$EAP_CHANNEL,$DEV_CHANNEL") | ||||||
|  |     password( | ||||||
|  |       "env.ORG_GRADLE_PROJECT_slackUrl", | ||||||
|  |       "credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5", | ||||||
|  |       label = "Slack Token" | ||||||
|  |     ) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(Branch_Release) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean publishPlugin slackNotification" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   features { | ||||||
|  |     vcsLabeling { | ||||||
|  |       vcsRootId = "${DslContext.settingsRoot.id}" | ||||||
|  |       labelingPattern = "%system.build.number%" | ||||||
|  |       successfulOnly = true | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE | ||||||
|  |       threshold = 5 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.DIFF | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
							
								
								
									
										38
									
								
								.teamcity/_Self/buildTypes/ReleaseDev.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.teamcity/_Self/buildTypes/ReleaseDev.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,22 +1,22 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
| import _Self.Constants.DEV_CHANNEL | import _Self.Constants.DEV_CHANNEL | ||||||
|  | import _Self.Constants.DEV_VERSION | ||||||
| import _Self.Constants.RELEASE_DEV | import _Self.Constants.RELEASE_DEV | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule | ||||||
|  |  | ||||||
| object ReleaseDev : IdeaVimBuildType({ | object ReleaseDev : BuildType({ | ||||||
|   name = "Publish Dev Build" |   name = "Publish Dev Build" | ||||||
|   description = "Build and publish Dev of IdeaVim plugin" |   description = "Build and publish Dev of IdeaVim plugin" | ||||||
|  |  | ||||||
|   artifactRules = "build/distributions/*" |   artifactRules = "build/distributions/*" | ||||||
|  |   buildNumberPattern = "$DEV_VERSION-dev.%build.counter%" | ||||||
|  |  | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_DEV) |     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_DEV) | ||||||
| @@ -25,35 +25,23 @@ object ReleaseDev : IdeaVimBuildType({ | |||||||
|       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", |       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", | ||||||
|       label = "Password" |       label = "Password" | ||||||
|     ) |     ) | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_version", "%build.number%") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|     param("env.ORG_GRADLE_PROJECT_publishChannels", DEV_CHANNEL) |     param("env.ORG_GRADLE_PROJECT_publishChannels", DEV_CHANNEL) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     script { |  | ||||||
|       name = "Pull git tags" |  | ||||||
|       scriptContent = "git fetch --tags origin" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Pull git history" |  | ||||||
|       scriptContent = "git fetch --unshallow" |  | ||||||
|     } |  | ||||||
|     gradle { |     gradle { | ||||||
|       name = "Calculate new dev version" |       tasks = "clean publishPlugin" | ||||||
|       tasks = "scripts:calculateNewDevVersion" |       buildFile = "" | ||||||
|     } |       enableStacktrace = true | ||||||
|     gradle { |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|       name = "Set TeamCity build number" |  | ||||||
|       tasks = "scripts:setTeamCityBuildNumber" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       tasks = "publishPlugin" |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -67,12 +55,6 @@ object ReleaseDev : IdeaVimBuildType({ | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   features { |  | ||||||
|     sshAgent { |  | ||||||
|       teamcitySshKey = "IdeaVim ssh keys" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   failureConditions { |   failureConditions { | ||||||
|     failOnMetricChange { |     failOnMetricChange { | ||||||
|       metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE |       metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE | ||||||
|   | |||||||
							
								
								
									
										76
									
								
								.teamcity/_Self/buildTypes/ReleaseEap.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								.teamcity/_Self/buildTypes/ReleaseEap.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,22 +1,22 @@ | |||||||
| package _Self.buildTypes | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import _Self.Constants.DEV_VERSION | ||||||
| import _Self.Constants.EAP_CHANNEL | import _Self.Constants.EAP_CHANNEL | ||||||
| import _Self.Constants.RELEASE_EAP | import _Self.Constants.RELEASE_EAP | ||||||
| import _Self.IdeaVimBuildType | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ParameterDisplay | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.vcsLabeling | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  |  | ||||||
| object ReleaseEap : IdeaVimBuildType({ | object ReleaseEap : BuildType({ | ||||||
|   name = "Publish EAP Build" |   name = "Publish EAP Build" | ||||||
|   description = "Build and publish EAP of IdeaVim plugin" |   description = "Build and publish EAP of IdeaVim plugin" | ||||||
|  |  | ||||||
|   artifactRules = "build/distributions/*" |   artifactRules = "build/distributions/*" | ||||||
|  |   buildNumberPattern = "$DEV_VERSION-eap.%build.counter%" | ||||||
|  |  | ||||||
|   params { |   params { | ||||||
|     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_EAP) |     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_EAP) | ||||||
| @@ -25,73 +25,37 @@ object ReleaseEap : IdeaVimBuildType({ | |||||||
|       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", |       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", | ||||||
|       label = "Password" |       label = "Password" | ||||||
|     ) |     ) | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_version", "%build.number%") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|     param("env.ORG_GRADLE_PROJECT_publishChannels", EAP_CHANNEL) |     param("env.ORG_GRADLE_PROJECT_publishChannels", EAP_CHANNEL) | ||||||
|     password( |     password( | ||||||
|       "env.ORG_GRADLE_PROJECT_slackUrl", |       "env.ORG_GRADLE_PROJECT_slackUrl", | ||||||
|       "credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5", |       "credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5", | ||||||
|       label = "Slack Token" |       label = "Slack Token" | ||||||
|     ) |     ) | ||||||
|     password( |  | ||||||
|       "env.YOUTRACK_TOKEN", |  | ||||||
|       "credentialsJSON:2479995b-7b60-4fbb-b095-f0bafae7f622", |  | ||||||
|       display = ParameterDisplay.HIDDEN |  | ||||||
|     ) |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   vcs { |   vcs { | ||||||
|     root(DslContext.settingsRoot) |     root(DslContext.settingsRoot) | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |     checkoutMode = CheckoutMode.AUTO | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   steps { |   steps { | ||||||
|     script { |  | ||||||
|       name = "Pull git tags" |  | ||||||
|       scriptContent = "git fetch --tags origin" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Pull git history" |  | ||||||
|       scriptContent = "git fetch --unshallow" |  | ||||||
|     } |  | ||||||
|     gradle { |     gradle { | ||||||
|       name = "Calculate new eap version" |       tasks = "clean publishPlugin" | ||||||
|       tasks = "scripts:calculateNewEapVersion" |       buildFile = "" | ||||||
|     } |       enableStacktrace = true | ||||||
|     gradle { |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|       name = "Set TeamCity build number" |  | ||||||
|       tasks = "scripts:setTeamCityBuildNumber" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Add release tag" |  | ||||||
|       tasks = "scripts:addReleaseTag" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Publish plugin" |  | ||||||
|       tasks = "publishPlugin" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Push changes to the repo" |  | ||||||
|       scriptContent = """ |  | ||||||
|       branch=$(git branch --show-current) |  | ||||||
|       echo current branch is ${'$'}branch |  | ||||||
|       if [ "master" != "${'$'}branch" ]; |  | ||||||
|       then |  | ||||||
|         exit 1 |  | ||||||
|       fi |  | ||||||
|  |  | ||||||
|       git push origin %build.number% |  | ||||||
|       """.trimIndent() |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "YouTrack post release actions" |  | ||||||
|       tasks = "scripts:eapReleaseActions" |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   features { |   features { | ||||||
|     sshAgent { |     vcsLabeling { | ||||||
|       teamcitySshKey = "IdeaVim ssh keys" |       vcsRootId = "${DslContext.settingsRoot.id}" | ||||||
|  |       labelingPattern = "%system.build.number%" | ||||||
|  |       successfulOnly = true | ||||||
|  |       branchFilter = "" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -106,12 +70,4 @@ object ReleaseEap : IdeaVimBuildType({ | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   requirements { |  | ||||||
|     // These requirements define Linux-XLarge configuration. |  | ||||||
|     // Unfortunately, requirement by name (teamcity.agent.name) doesn't work |  | ||||||
|     //   IDK the reason for it, but on our agents this property is empty |  | ||||||
| //    equals("teamcity.agent.hardware.cpuCount", "16") |  | ||||||
| //    equals("teamcity.agent.os.family", "Linux") |  | ||||||
|   } |  | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										106
									
								
								.teamcity/_Self/buildTypes/ReleaseEapFromBranch.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										106
									
								
								.teamcity/_Self/buildTypes/ReleaseEapFromBranch.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,106 +0,0 @@ | |||||||
| package _Self.buildTypes |  | ||||||
|  |  | ||||||
| import _Self.Constants.EAP_CHANNEL |  | ||||||
| import _Self.Constants.RELEASE_EAP |  | ||||||
| import _Self.IdeaVimBuildType |  | ||||||
| import _Self.vcsRoots.ReleasesVcsRoot |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ParameterDisplay |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange |  | ||||||
|  |  | ||||||
| object ReleaseEapFromBranch : IdeaVimBuildType({ |  | ||||||
|   name = "EXP: Publish EAP Build from branch" |  | ||||||
|   description = "Build and publish EAP of IdeaVim plugin" |  | ||||||
|  |  | ||||||
|   artifactRules = "build/distributions/*" |  | ||||||
|  |  | ||||||
|   params { |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_EAP) |  | ||||||
|     password( |  | ||||||
|       "env.ORG_GRADLE_PROJECT_publishToken", |  | ||||||
|       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", |  | ||||||
|       label = "Password" |  | ||||||
|     ) |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_publishChannels", EAP_CHANNEL) |  | ||||||
|     password( |  | ||||||
|       "env.ORG_GRADLE_PROJECT_slackUrl", |  | ||||||
|       "credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5", |  | ||||||
|       label = "Slack Token" |  | ||||||
|     ) |  | ||||||
|     password( |  | ||||||
|       "env.YOUTRACK_TOKEN", |  | ||||||
|       "credentialsJSON:2479995b-7b60-4fbb-b095-f0bafae7f622", |  | ||||||
|       display = ParameterDisplay.HIDDEN |  | ||||||
|     ) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   vcs { |  | ||||||
|     root(ReleasesVcsRoot) |  | ||||||
|     branchFilter = """ |  | ||||||
|       +:heads/(releases/*) |  | ||||||
|       """.trimIndent() |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   steps { |  | ||||||
|     script { |  | ||||||
|       name = "Pull git tags" |  | ||||||
|       scriptContent = "git fetch --tags origin" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Pull git history" |  | ||||||
|       scriptContent = "git fetch --unshallow" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Calculate new eap version from branch" |  | ||||||
|       tasks = "scripts:calculateNewEapVersionFromBranch" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Set TeamCity build number" |  | ||||||
|       tasks = "scripts:setTeamCityBuildNumber" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Add release tag" |  | ||||||
|       tasks = "scripts:addReleaseTag" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Publish plugin" |  | ||||||
|       tasks = "publishPlugin" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Push changes to the repo" |  | ||||||
|       scriptContent = """ |  | ||||||
|       branch=$(git branch --show-current) |  | ||||||
|       echo current branch is ${'$'}branch |  | ||||||
|       git push origin %build.number% |  | ||||||
|       """.trimIndent() |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "YouTrack post release actions" |  | ||||||
|       tasks = "scripts:eapReleaseActions" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   features { |  | ||||||
|     sshAgent { |  | ||||||
|       teamcitySshKey = "IdeaVim ssh keys" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   failureConditions { |  | ||||||
|     failOnMetricChange { |  | ||||||
|       metric = BuildFailureOnMetric.MetricType.ARTIFACT_SIZE |  | ||||||
|       threshold = 5 |  | ||||||
|       units = BuildFailureOnMetric.MetricUnit.PERCENTS |  | ||||||
|       comparison = BuildFailureOnMetric.MetricComparison.DIFF |  | ||||||
|       compareTo = build { |  | ||||||
|         buildRule = lastSuccessful() |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
							
								
								
									
										160
									
								
								.teamcity/_Self/buildTypes/ReleasePlugin.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										160
									
								
								.teamcity/_Self/buildTypes/ReleasePlugin.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,160 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package _Self.buildTypes |  | ||||||
|  |  | ||||||
| import _Self.Constants.DEFAULT_CHANNEL |  | ||||||
| import _Self.Constants.DEV_CHANNEL |  | ||||||
| import _Self.Constants.EAP_CHANNEL |  | ||||||
| import _Self.Constants.RELEASE |  | ||||||
| import _Self.IdeaVimBuildType |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.DslContext |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ParameterDisplay |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.sshAgent |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script |  | ||||||
|  |  | ||||||
| object ReleaseMajor : ReleasePlugin("major") |  | ||||||
| object ReleaseMinor : ReleasePlugin("minor") |  | ||||||
| object ReleasePatch : ReleasePlugin("patch") |  | ||||||
|  |  | ||||||
| sealed class ReleasePlugin(private val releaseType: String) : IdeaVimBuildType({ |  | ||||||
|   name = "Publish $releaseType release" |  | ||||||
|   description = "Build and publish IdeaVim plugin" |  | ||||||
|  |  | ||||||
|   artifactRules = "build/distributions/*" |  | ||||||
|  |  | ||||||
|   params { |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE) |  | ||||||
|     password( |  | ||||||
|       "env.ORG_GRADLE_PROJECT_publishToken", |  | ||||||
|       "credentialsJSON:61a36031-4da1-4226-a876-b8148bf32bde", |  | ||||||
|       label = "Password" |  | ||||||
|     ) |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_publishChannels", "$DEFAULT_CHANNEL,$EAP_CHANNEL,$DEV_CHANNEL") |  | ||||||
|     password( |  | ||||||
|       "env.ORG_GRADLE_PROJECT_slackUrl", |  | ||||||
|       "credentialsJSON:a8ab8150-e6f8-4eaf-987c-bcd65eac50b5", |  | ||||||
|       label = "Slack Token" |  | ||||||
|     ) |  | ||||||
|     password( |  | ||||||
|       "env.ORG_GRADLE_PROJECT_youtrackToken", |  | ||||||
|       "credentialsJSON:7bc0eb3a-b86a-4ebd-b622-d4ef12d7e1d3", |  | ||||||
|       display = ParameterDisplay.HIDDEN |  | ||||||
|     ) |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_releaseType", releaseType) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   vcs { |  | ||||||
|     root(DslContext.settingsRoot) |  | ||||||
|     branchFilter = "+:<default>" |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   steps { |  | ||||||
|     script { |  | ||||||
|       name = "Pull git tags" |  | ||||||
|       scriptContent = "git fetch --tags origin" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Pull git history" |  | ||||||
|       scriptContent = "git fetch --unshallow" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Reset release branch" |  | ||||||
|       scriptContent = """ |  | ||||||
|         if [ "major" = "$releaseType" ] || [ "minor" = "$releaseType" ] |  | ||||||
|         then |  | ||||||
|           echo Resetting the release branch because the release type is $releaseType |  | ||||||
|           git checkout master |  | ||||||
|           latest_eap=${'$'}(git describe --tags --match="[0-9].[0-9]*.[0-9]-eap.[0-9]*" --abbrev=0 HEAD) |  | ||||||
|           echo Latest EAP: ${'$'}latest_eap |  | ||||||
|           commit_of_latest_eap=${'$'}(git rev-list -n 1 ${'$'}latest_eap) |  | ||||||
|           echo Commit of latest EAP: ${'$'}commit_of_latest_eap |  | ||||||
|           git checkout release |  | ||||||
|           git reset --hard ${'$'}commit_of_latest_eap |  | ||||||
|         else |  | ||||||
|           git checkout release |  | ||||||
|           echo Do not reset the release branch because the release type is $releaseType |  | ||||||
|         fi |  | ||||||
|         echo Checked out release branch |  | ||||||
|       """.trimIndent() |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Calculate new version" |  | ||||||
|       tasks = "scripts:calculateNewVersion" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Set TeamCity build number" |  | ||||||
|       tasks = "scripts:setTeamCityBuildNumber" |  | ||||||
|     } |  | ||||||
| //    gradle { |  | ||||||
| //      name = "Update change log" |  | ||||||
| //      tasks = "scripts:changelogUpdateUnreleased" |  | ||||||
| //    } |  | ||||||
| //    gradle { |  | ||||||
| //      name = "Commit preparation changes" |  | ||||||
| //      tasks = "scripts:commitChanges" |  | ||||||
| //    } |  | ||||||
|     gradle { |  | ||||||
|       name = "Add release tag" |  | ||||||
|       tasks = "scripts:addReleaseTag" |  | ||||||
|     } |  | ||||||
|     script { |  | ||||||
|       name = "Run tests" |  | ||||||
|       scriptContent = "./gradlew test" |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Publish release" |  | ||||||
|       tasks = "publishPlugin" |  | ||||||
|     } |  | ||||||
| //    script { |  | ||||||
| //      name = "Checkout master branch" |  | ||||||
| //      scriptContent = """ |  | ||||||
| //        echo Checkout master |  | ||||||
| //        git checkout master |  | ||||||
| //      """.trimIndent() |  | ||||||
| //    } |  | ||||||
| //    gradle { |  | ||||||
| //      name = "Update change log in master" |  | ||||||
| //      tasks = "scripts:changelogUpdateUnreleased" |  | ||||||
| //    } |  | ||||||
| //    gradle { |  | ||||||
| //      name = "Commit preparation changes in master" |  | ||||||
| //      tasks = "scripts:commitChanges" |  | ||||||
| //    } |  | ||||||
|     script { |  | ||||||
|       name = "Push changes to the repo" |  | ||||||
|       scriptContent = """ |  | ||||||
|       git checkout release |  | ||||||
|       echo checkout release branch |  | ||||||
|       git branch --set-upstream-to=origin/release release |  | ||||||
|       git push origin --force |  | ||||||
|       # Push tag |  | ||||||
|       git push origin %build.number% |  | ||||||
|       """.trimIndent() |  | ||||||
|     } |  | ||||||
|     gradle { |  | ||||||
|       name = "Run Integrations" |  | ||||||
|       tasks = "releaseActions" |  | ||||||
|       gradleParams = "--no-configuration-cache" |  | ||||||
|     } |  | ||||||
| //    gradle { |  | ||||||
| //      name = "Slack Notification" |  | ||||||
| //      tasks = "slackNotification" |  | ||||||
| //    } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   features { |  | ||||||
|     sshAgent { |  | ||||||
|       teamcitySshKey = "IdeaVim ssh keys" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
							
								
								
									
										58
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ20183.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ20183.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20183 : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ 2018.3" | ||||||
|  |   description = "branch 183" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-2018.3") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_183) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
							
								
								
									
										61
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_181-182.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_181-182.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | sealed class TestsForIntelliJ_181_branch(private val version: String) : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ $version" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_181) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20181 : TestsForIntelliJ_181_branch("2018.1") | ||||||
|  | object TestsForIntelliJ20182 : TestsForIntelliJ_181_branch("2018.2") | ||||||
							
								
								
									
										63
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_191-193.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_191-193.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | sealed class TestsForIntelliJ_191_193_branch(private val version: String) : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ $version" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_191_193) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20191 : TestsForIntelliJ_191_193_branch("2019.1") | ||||||
|  | object TestsForIntelliJ20192 : TestsForIntelliJ_191_193_branch("2019.2") | ||||||
|  | object TestsForIntelliJ20193 : TestsForIntelliJ_191_193_branch("2019.3") | ||||||
							
								
								
									
										60
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_201.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_201.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | sealed class TestsForIntelliJ_201_branch(private val version: String) : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ $version" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_201) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20201 : TestsForIntelliJ_201_branch("2020.1") | ||||||
							
								
								
									
										60
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_202.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_202.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | sealed class TestsForIntelliJ_202_branch(private val version: String) : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ $version" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_202) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20202 : TestsForIntelliJ_202_branch("2020.2") | ||||||
							
								
								
									
										64
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_203-212.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_203-212.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | sealed class TestsForIntelliJ_203_212_branch(private val version: String) : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ $version" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_203_212) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20212 : TestsForIntelliJ_203_212_branch("2021.2.2") | ||||||
|  | object TestsForIntelliJ20211 : TestsForIntelliJ_203_212_branch("2021.1") | ||||||
|  | object TestsForIntelliJ20203 : TestsForIntelliJ_203_212_branch("2020.3") | ||||||
							
								
								
									
										62
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_213-221.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_213-221.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.BuildFailureOnMetric | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.failureConditions.failOnMetricChange | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs | ||||||
|  |  | ||||||
|  | sealed class TestsForIntelliJ_213_221_branch(private val version: String) : BuildType({ | ||||||
|  |   name = "Tests for IntelliJ $version" | ||||||
|  |  | ||||||
|  |   params { | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", "true") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_ideaVersion", "IC-$version") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") | ||||||
|  |     param("env.ORG_GRADLE_PROJECT_javaVersion", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   vcs { | ||||||
|  |     root(_Self.vcsRoots.Branch_213_221) | ||||||
|  |  | ||||||
|  |     checkoutMode = CheckoutMode.AUTO | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   steps { | ||||||
|  |     gradle { | ||||||
|  |       tasks = "clean test" | ||||||
|  |       buildFile = "" | ||||||
|  |       enableStacktrace = true | ||||||
|  |       param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   triggers { | ||||||
|  |     vcs { | ||||||
|  |       branchFilter = "" | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   requirements { | ||||||
|  |     noLessThanVer("teamcity.agent.jvm.version", "1.8") | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   failureConditions { | ||||||
|  |     failOnMetricChange { | ||||||
|  |       metric = BuildFailureOnMetric.MetricType.TEST_COUNT | ||||||
|  |       threshold = 20 | ||||||
|  |       units = BuildFailureOnMetric.MetricUnit.PERCENTS | ||||||
|  |       comparison = BuildFailureOnMetric.MetricComparison.LESS | ||||||
|  |       compareTo = build { | ||||||
|  |         buildRule = lastSuccessful() | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | object TestsForIntelliJ20213 : TestsForIntelliJ_213_221_branch("2021.3.2") | ||||||
							
								
								
									
										71
									
								
								.teamcity/_Self/subprojects/GitHub.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.teamcity/_Self/subprojects/GitHub.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,78 +1,11 @@ | |||||||
| package _Self.subprojects | package _Self.subprojects | ||||||
|  |  | ||||||
| import _Self.Constants | import _Self.buildTypes.GithubTests | ||||||
| import _Self.IdeaVimBuildType |  | ||||||
| import _Self.vcsRoots.GitHubPullRequest |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.Project | import jetbrains.buildServer.configs.kotlin.v2019_2.Project | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.PullRequests |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.pullRequests |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.VcsTrigger |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs |  | ||||||
|  |  | ||||||
| object GitHub : Project({ | object GitHub : Project({ | ||||||
|   name = "Pull Requests checks" |   name = "Pull Requests checks" | ||||||
|   description = "Automatic checking of GitHub Pull Requests" |   description = "Automatic checking of GitHub Pull Requests" | ||||||
|  |  | ||||||
|   buildType(GithubBuildType("clean test", "Tests")) |   buildType(GithubTests) | ||||||
| }) |  | ||||||
|  |  | ||||||
| class GithubBuildType(command: String, desc: String) : IdeaVimBuildType({ |  | ||||||
|   name = "GitHub Pull Requests $desc" |  | ||||||
|   description = "Test GitHub pull requests $desc" |  | ||||||
|  |  | ||||||
|   params { |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false") |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_ideaVersion", Constants.GITHUB_TESTS) |  | ||||||
|     param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false") |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   vcs { |  | ||||||
|     root(GitHubPullRequest) |  | ||||||
|  |  | ||||||
|     checkoutMode = CheckoutMode.AUTO |  | ||||||
|     branchFilter = """ |  | ||||||
|             +:* |  | ||||||
|             -:<default> |  | ||||||
|         """.trimIndent() |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   steps { |  | ||||||
|     gradle { |  | ||||||
|       tasks = command |  | ||||||
|       buildFile = "" |  | ||||||
|       enableStacktrace = true |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   triggers { |  | ||||||
|     vcs { |  | ||||||
|       quietPeriodMode = VcsTrigger.QuietPeriodMode.USE_DEFAULT |  | ||||||
|       branchFilter = "" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   features { |  | ||||||
|     pullRequests { |  | ||||||
|       provider = github { |  | ||||||
|         authType = token { |  | ||||||
|           token = "credentialsJSON:90f3b439-6e91-40f7-a086-d4dd8e0ea9b8" |  | ||||||
|         } |  | ||||||
|         filterTargetBranch = "refs/heads/master" |  | ||||||
|         filterAuthorRole = PullRequests.GitHubRoleFilter.EVERYBODY |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     commitStatusPublisher { |  | ||||||
|       vcsRootExtId = "${GitHubPullRequest.id}" |  | ||||||
|       publisher = github { |  | ||||||
|         githubUrl = "https://api.github.com" |  | ||||||
|         authType = personalToken { |  | ||||||
|           token = "credentialsJSON:90f3b439-6e91-40f7-a086-d4dd8e0ea9b8" |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       param("github_oauth_user", "AlexPl292") |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								.teamcity/_Self/subprojects/OldTests.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.teamcity/_Self/subprojects/OldTests.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,25 +1,33 @@ | |||||||
| package _Self.subprojects | package _Self.subprojects | ||||||
|  |  | ||||||
| import _Self.buildTypes.TestingBuildType | import _Self.buildTypes.TestsForIntelliJ20181 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20182 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20183 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20191 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20192 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20193 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20201 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20202 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20203 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20211 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20212 | ||||||
|  | import _Self.buildTypes.TestsForIntelliJ20213 | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.Project | import jetbrains.buildServer.configs.kotlin.v2019_2.Project | ||||||
|  |  | ||||||
| object OldTests : Project({ | object OldTests : Project({ | ||||||
|   name = "Old IdeaVim tests" |   name = "Old IdeaVim tests" | ||||||
|   description = "Tests for older versions of IJ" |   description = "Tests for older versions of IJ" | ||||||
|  |  | ||||||
|   buildType(TestingBuildType("IC-2018.1", "181-182", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20181) | ||||||
|   buildType(TestingBuildType("IC-2018.2", "181-182", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20182) | ||||||
|   buildType(TestingBuildType("IC-2018.3", "183", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20183) | ||||||
|   buildType(TestingBuildType("IC-2019.1", "191-193", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20191) | ||||||
|   buildType(TestingBuildType("IC-2019.2", "191-193", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20192) | ||||||
|   buildType(TestingBuildType("IC-2019.3", "191-193", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20193) | ||||||
|   buildType(TestingBuildType("IC-2020.1", "201", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20201) | ||||||
|   buildType(TestingBuildType("IC-2020.2", "202", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20202) | ||||||
|   buildType(TestingBuildType("IC-2020.3", "203-212", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20203) | ||||||
|   buildType(TestingBuildType("IC-2021.1", "203-212", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20211) | ||||||
|   buildType(TestingBuildType("IC-2021.2.2", "203-212", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20212) | ||||||
|   buildType(TestingBuildType("IC-2021.3.2", "213-221", javaVersion = "1.8", javaPlugin = false)) |   buildType(TestsForIntelliJ20213) | ||||||
|   buildType(TestingBuildType("IC-2022.2.3", branch = "222", javaPlugin = false)) |  | ||||||
|   buildType(TestingBuildType("IC-2023.1", "231-232", javaPlugin = false)) |  | ||||||
|   buildType(TestingBuildType("IC-2023.2", "231-232", javaPlugin = false)) |  | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								.teamcity/_Self/subprojects/Releases.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.teamcity/_Self/subprojects/Releases.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,48 +1,15 @@ | |||||||
| package _Self.subprojects | package _Self.subprojects | ||||||
|  |  | ||||||
| import _Self.buildTypes.CreateNewReleaseBranchFromMaster | import _Self.buildTypes.Release | ||||||
| import _Self.buildTypes.PrintReleaseBranch |  | ||||||
| import _Self.buildTypes.PublishVimEngine |  | ||||||
| import _Self.buildTypes.ReleaseDev | import _Self.buildTypes.ReleaseDev | ||||||
| import _Self.buildTypes.ReleaseEap | import _Self.buildTypes.ReleaseEap | ||||||
| import _Self.buildTypes.ReleaseEapFromBranch |  | ||||||
| import _Self.buildTypes.ReleaseMajor |  | ||||||
| import _Self.buildTypes.ReleaseMinor |  | ||||||
| import _Self.buildTypes.ReleasePatch |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ParameterDisplay |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.Project | import jetbrains.buildServer.configs.kotlin.v2019_2.Project | ||||||
|  |  | ||||||
| object Releases : Project({ | object Releases : Project({ | ||||||
|   name = "IdeaVim releases" |   name = "IdeaVim releases" | ||||||
|   description = "Stable and EAP releases for IdeaVim" |   description = "Stable and EAP releases for IdeaVim" | ||||||
|  |  | ||||||
|   params { |   buildType(Release) | ||||||
|     password( |  | ||||||
|       "env.CERTIFICATE_CHAIN", |  | ||||||
|       "credentialsJSON:1bab4a88-10e7-4bf9-856c-e6253499dc95", |  | ||||||
|       display = ParameterDisplay.HIDDEN |  | ||||||
|     ) |  | ||||||
|     password( |  | ||||||
|       "env.PRIVATE_KEY_PASSWORD", |  | ||||||
|       "credentialsJSON:7c12c867-fe09-4a2f-884d-6fd0ec0a1e79", |  | ||||||
|       display = ParameterDisplay.HIDDEN |  | ||||||
|     ) |  | ||||||
|     password( |  | ||||||
|       "env.PRIVATE_KEY", |  | ||||||
|       "credentialsJSON:5d8b553d-fd7e-4347-abd2-51d8d0f2b3f7", |  | ||||||
|       display = ParameterDisplay.HIDDEN |  | ||||||
|     ) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| //  buildType(Release) |  | ||||||
|   buildType(ReleaseMajor) |  | ||||||
|   buildType(ReleaseMinor) |  | ||||||
|   buildType(ReleasePatch) |  | ||||||
|   buildType(ReleaseEap) |   buildType(ReleaseEap) | ||||||
|   buildType(ReleaseDev) |   buildType(ReleaseDev) | ||||||
|   buildType(PublishVimEngine) |  | ||||||
|  |  | ||||||
|   buildType(CreateNewReleaseBranchFromMaster) |  | ||||||
|   buildType(PrintReleaseBranch) |  | ||||||
|   buildType(ReleaseEapFromBranch) |  | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_181.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_181.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_181 : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 181)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "181" | ||||||
|  |   useMirrors = false | ||||||
|  | }) | ||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_183.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_183.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_183 : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 183)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "183" | ||||||
|  |   useMirrors = false | ||||||
|  | }) | ||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_191_193.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_191_193.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_191_193 : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 191-193)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "191-193" | ||||||
|  |   useMirrors = false | ||||||
|  | }) | ||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_201.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_201.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_201 : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 201)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "201" | ||||||
|  |   useMirrors = false | ||||||
|  | }) | ||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_202.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_202.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_202 : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 202)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "202" | ||||||
|  |   useMirrors = false | ||||||
|  | }) | ||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_203_212.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_203_212.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_203_212 : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 203-212)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "203-212" | ||||||
|  |   useMirrors = false | ||||||
|  | }) | ||||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_213_221.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_213_221.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_213_221 : GitVcsRoot({ | ||||||
|  |   id("HttpsGithubComJetBrainsIdeavimBranch213221") | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch 213-221)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "213-221" | ||||||
|  | }) | ||||||
							
								
								
									
										11
									
								
								.teamcity/_Self/vcsRoots/Branch_Release.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.teamcity/_Self/vcsRoots/Branch_Release.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | @file:Suppress("ClassName") | ||||||
|  |  | ||||||
|  | package _Self.vcsRoots | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot | ||||||
|  |  | ||||||
|  | object Branch_Release : GitVcsRoot({ | ||||||
|  |   name = "https://github.com/JetBrains/ideavim (branch release)" | ||||||
|  |   url = "https://github.com/JetBrains/ideavim.git" | ||||||
|  |   branch = "release" | ||||||
|  | }) | ||||||
| @@ -7,6 +7,6 @@ object GitHubPullRequest : GitVcsRoot({ | |||||||
|   url = "git@github.com:JetBrains/ideavim.git" |   url = "git@github.com:JetBrains/ideavim.git" | ||||||
|   branchSpec = "+:refs/(pull/*)/head" |   branchSpec = "+:refs/(pull/*)/head" | ||||||
|   authMethod = uploadedKey { |   authMethod = uploadedKey { | ||||||
|     uploadedKey = "IdeaVim ssh keys" |     uploadedKey = "Alex Plate TeamCity key" | ||||||
|   } |   } | ||||||
| }) | }) | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								.teamcity/_Self/vcsRoots/Releases.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.teamcity/_Self/vcsRoots/Releases.kt
									
									
									
									
										vendored
									
									
								
							| @@ -1,13 +0,0 @@ | |||||||
| package _Self.vcsRoots |  | ||||||
|  |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.vcs.GitVcsRoot |  | ||||||
|  |  | ||||||
| object ReleasesVcsRoot : GitVcsRoot({ |  | ||||||
|   name = "IdeaVim Releases" |  | ||||||
|   url = "git@github.com:JetBrains/ideavim.git" |  | ||||||
|   branch = "refs/heads/master" |  | ||||||
|   branchSpec = "+:refs/(*)" |  | ||||||
|   authMethod = uploadedKey { |  | ||||||
|     uploadedKey = "IdeaVim ssh keys" |  | ||||||
|   } |  | ||||||
| }) |  | ||||||
| @@ -1,39 +0,0 @@ | |||||||
| package patches.buildTypes |  | ||||||
|  |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.* |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.GradleBuildStep |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ui.* |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| This patch script was generated by TeamCity on settings change in UI. |  | ||||||
| To apply the patch, change the buildType with id = 'IdeaVimTests_Latest_EAP' |  | ||||||
| accordingly, and delete the patch script. |  | ||||||
| */ |  | ||||||
| changeBuildType(RelativeId("IdeaVimTests_Latest_EAP")) { |  | ||||||
|     check(artifactRules == """ |  | ||||||
|         +:build/reports => build/reports |  | ||||||
|         +:/mnt/agent/temp/buildTmp/ => /mnt/agent/temp/buildTmp/ |  | ||||||
|     """.trimIndent()) { |  | ||||||
|         "Unexpected option value: artifactRules = $artifactRules" |  | ||||||
|     } |  | ||||||
|     artifactRules = """ |  | ||||||
|         +:build/reports => build/reports |  | ||||||
|         +:/mnt/agent/temp/buildTmp/ => /mnt/agent/temp/buildTmp/ |  | ||||||
|         +:tests/java-tests/build/reports => tests/java-tests/build/reports |  | ||||||
|     """.trimIndent() |  | ||||||
|  |  | ||||||
|     expectSteps { |  | ||||||
|         gradle { |  | ||||||
|             tasks = "clean test" |  | ||||||
|             buildFile = "" |  | ||||||
|             enableStacktrace = true |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|     steps { |  | ||||||
|         update<GradleBuildStep>(0) { |  | ||||||
|             clearConditions() |  | ||||||
|             jdkHome = "/usr/lib/jvm/java-17-amazon-corretto" |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| package patches.buildTypes |  | ||||||
|  |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.* |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ui.* |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| This patch script was generated by TeamCity on settings change in UI. |  | ||||||
| To apply the patch, change the buildType with id = 'IdeaVimTests_Latest_EAP_With_Xorg' |  | ||||||
| accordingly, and delete the patch script. |  | ||||||
| */ |  | ||||||
| changeBuildType(RelativeId("IdeaVimTests_Latest_EAP_With_Xorg")) { |  | ||||||
|     requirements { |  | ||||||
|         add { |  | ||||||
|             matches("teamcity.agent.jvm.os.family", "Linux") |  | ||||||
|         } |  | ||||||
|         add { |  | ||||||
|             exists("env.DISPLAY") |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
							
								
								
									
										55
									
								
								.teamcity/patches/buildTypes/Qodana.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								.teamcity/patches/buildTypes/Qodana.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | package patches.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.* | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.Qodana | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.qodana | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.ui.* | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | This patch script was generated by TeamCity on settings change in UI. | ||||||
|  | To apply the patch, change the buildType with id = 'Qodana' | ||||||
|  | accordingly, and delete the patch script. | ||||||
|  | */ | ||||||
|  | changeBuildType(RelativeId("Qodana")) { | ||||||
|  |     expectSteps { | ||||||
|  |         qodana { | ||||||
|  |             name = "Qodana" | ||||||
|  |             linter = jvm { | ||||||
|  |                 version = Qodana.JVMVersion.LATEST | ||||||
|  |             } | ||||||
|  |             param("clonefinder-enable", "true") | ||||||
|  |             param("clonefinder-languages", "Java") | ||||||
|  |             param("clonefinder-languages-container", "Java Kotlin") | ||||||
|  |             param("clonefinder-mode", "") | ||||||
|  |             param("clonefinder-queried-project", "src") | ||||||
|  |             param("clonefinder-reference-projects", "src") | ||||||
|  |             param("licenseaudit-enable", "true") | ||||||
|  |             param("namesAndTagsCustom", "repo.labs.intellij.net/static-analyser/qodana") | ||||||
|  |             param("report-version", "") | ||||||
|  |             param("yaml-configuration", "") | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     steps { | ||||||
|  |         insert(0) { | ||||||
|  |             gradle { | ||||||
|  |                 name = "Generate grammar" | ||||||
|  |                 tasks = "generateGrammarSource" | ||||||
|  |                 param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL") | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         update<Qodana>(1) { | ||||||
|  |             clearConditions() | ||||||
|  |             reportAsTests = true | ||||||
|  |             argumentsCommandDocker = "-e QODANA_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmdhbml6YXRpb24iOiIzUFZrQSIsInByb2plY3QiOiIzN1FlQSIsInRva2VuIjoiM0t2bXoifQ.uohp81tM7iAfvvB6k8faarfpV-OjusAaEbWQ8iNrOgs" | ||||||
|  |             argumentsEntryPointDocker = "--baseline qodana.sarif.json" | ||||||
|  |             param("clonefinder-languages", "") | ||||||
|  |             param("collect-anonymous-statistics", "") | ||||||
|  |             param("licenseaudit-enable", "") | ||||||
|  |             param("clonefinder-languages-container", "") | ||||||
|  |             param("clonefinder-queried-project", "") | ||||||
|  |             param("clonefinder-enable", "") | ||||||
|  |             param("clonefinder-reference-projects", "") | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										27
									
								
								.teamcity/patches/buildTypes/ReleaseEap.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.teamcity/patches/buildTypes/ReleaseEap.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | package patches.buildTypes | ||||||
|  |  | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.* | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.VcsLabeling | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.vcsLabeling | ||||||
|  | import jetbrains.buildServer.configs.kotlin.v2019_2.ui.* | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | This patch script was generated by TeamCity on settings change in UI. | ||||||
|  | To apply the patch, change the buildType with id = 'ReleaseEap' | ||||||
|  | accordingly, and delete the patch script. | ||||||
|  | */ | ||||||
|  | changeBuildType(RelativeId("ReleaseEap")) { | ||||||
|  |     features { | ||||||
|  |         val feature1 = find<VcsLabeling> { | ||||||
|  |             vcsLabeling { | ||||||
|  |                 vcsRootId = "${DslContext.settingsRoot.id}" | ||||||
|  |                 labelingPattern = "%system.build.number%" | ||||||
|  |                 successfulOnly = true | ||||||
|  |                 branchFilter = "" | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         feature1.apply { | ||||||
|  |             successfulOnly = false | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| package patches.buildTypes |  | ||||||
|  |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.* |  | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.ui.* |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| This patch script was generated by TeamCity on settings change in UI. |  | ||||||
| To apply the patch, change the buildType with id = 'ReleaseEapFromBranch' |  | ||||||
| accordingly, and delete the patch script. |  | ||||||
| */ |  | ||||||
| changeBuildType(RelativeId("ReleaseEapFromBranch")) { |  | ||||||
|     vcs { |  | ||||||
|  |  | ||||||
|         check(branchFilter == "+:heads/(releases/*)") { |  | ||||||
|             "Unexpected option value: branchFilter = $branchFilter" |  | ||||||
|         } |  | ||||||
|         branchFilter = "heads/releases/*" |  | ||||||
|     } |  | ||||||
| } |  | ||||||
							
								
								
									
										2
									
								
								.teamcity/pom.xml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.teamcity/pom.xml
									
									
									
									
										vendored
									
									
								
							| @@ -22,7 +22,7 @@ | |||||||
|     </repository> |     </repository> | ||||||
|     <repository> |     <repository> | ||||||
|       <id>teamcity-server</id> |       <id>teamcity-server</id> | ||||||
|       <url>https://ideavim.teamcity.com/app/dsl-plugins-repository</url> |       <url>https://teamcity.jetbrains.com/app/dsl-plugins-repository</url> | ||||||
|       <snapshots> |       <snapshots> | ||||||
|         <enabled>true</enabled> |         <enabled>true</enabled> | ||||||
|       </snapshots> |       </snapshots> | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								.teamcity/settings.kts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.teamcity/settings.kts
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,4 @@ | |||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.project | import jetbrains.buildServer.configs.kotlin.v2019_2.* | ||||||
| import jetbrains.buildServer.configs.kotlin.v2019_2.version |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
| The settings script is an entry point for defining a single | The settings script is an entry point for defining a single | ||||||
| @@ -30,5 +29,5 @@ node (Plugins -> teamcity-configs -> teamcity-configs:generate), | |||||||
| the 'Debug' option is available in the context menu for the task. | the 'Debug' option is available in the context menu for the task. | ||||||
| */ | */ | ||||||
|  |  | ||||||
| version = "2024.03" | version = "2020.2" | ||||||
| project(_Self.Project) | project(_Self.Project) | ||||||
							
								
								
									
										102
									
								
								AUTHORS.md
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								AUTHORS.md
									
									
									
									
									
								
							| @@ -165,7 +165,7 @@ Contributors: | |||||||
|     |     | ||||||
|   Pavel Fatin |   Pavel Fatin | ||||||
| * [![icon][mail]](mailto:tietyt@gmail.com) | * [![icon][mail]](mailto:tietyt@gmail.com) | ||||||
|   [![icon][github-off]](https://github.com/DanKaplanSES) |   [![icon][github-off]](#) | ||||||
|     |     | ||||||
|   tieTYT |   tieTYT | ||||||
| * [![icon][mail]](mailto:nickgieschen@gmail.com) | * [![icon][mail]](mailto:nickgieschen@gmail.com) | ||||||
| @@ -185,7 +185,7 @@ Contributors: | |||||||
|     |     | ||||||
|   Vladimir Parfinenko |   Vladimir Parfinenko | ||||||
| * [![icon][mail]](mailto:hassmann@hwdev.de) | * [![icon][mail]](mailto:hassmann@hwdev.de) | ||||||
|   [![icon][github-off]](https://github.com/lumie1337) |   [![icon][github-off]](#) | ||||||
|     |     | ||||||
|   Florian Hassmann |   Florian Hassmann | ||||||
| * [![icon][mail]](mailto:jpalus@fastmail.com) | * [![icon][mail]](mailto:jpalus@fastmail.com) | ||||||
| @@ -193,7 +193,7 @@ Contributors: | |||||||
|     |     | ||||||
|   Jan Palus |   Jan Palus | ||||||
| * [![icon][mail]](mailto:kpetrov@ripe.net) | * [![icon][mail]](mailto:kpetrov@ripe.net) | ||||||
|   [![icon][github-off]](https://github.com/constpetrov) |   [![icon][github-off]](#) | ||||||
|     |     | ||||||
|   Konstantin Petrov |   Konstantin Petrov | ||||||
| * [![icon][mail]](mailto:ya-ikmik2012@yandex.ru) | * [![icon][mail]](mailto:ya-ikmik2012@yandex.ru) | ||||||
| @@ -220,6 +220,10 @@ Contributors: | |||||||
|   [![icon][github]](https://github.com/johngrib) |   [![icon][github]](https://github.com/johngrib) | ||||||
|     |     | ||||||
|   John Grib |   John Grib | ||||||
|  | * [![icon][mail]](mailto:hild@b4mad.net) | ||||||
|  |   [![icon][github-off]](#) | ||||||
|  |     | ||||||
|  |   Marcel Hild | ||||||
| * [![icon][mail]](mailto:vedranb@gmail.com) | * [![icon][mail]](mailto:vedranb@gmail.com) | ||||||
|   [![icon][github]](https://github.com/vedran) |   [![icon][github]](https://github.com/vedran) | ||||||
|     |     | ||||||
| @@ -315,6 +319,10 @@ Contributors: | |||||||
|   [![icon][github]](https://github.com/angelbot) |   [![icon][github]](https://github.com/angelbot) | ||||||
|     |     | ||||||
|   John Weigel |   John Weigel | ||||||
|  | * [![icon][mail]](mailto:kevinz@weghst.com) | ||||||
|  |   [![icon][github]](https://github.com/kevin70) | ||||||
|  |     | ||||||
|  |   kk | ||||||
| * [![icon][mail]](mailto:runforprogram@163.com) | * [![icon][mail]](mailto:runforprogram@163.com) | ||||||
|   [![icon][github]](https://github.com/runforprogram) |   [![icon][github]](https://github.com/runforprogram) | ||||||
|     |     | ||||||
| @@ -447,94 +455,6 @@ Contributors: | |||||||
|   [![icon][github]](https://github.com/lippfi) |   [![icon][github]](https://github.com/lippfi) | ||||||
|     |     | ||||||
|   lippfi |   lippfi | ||||||
| * [![icon][mail]](mailto:3237686+Runinho@users.noreply.github.com) |  | ||||||
|   [![icon][github]](https://github.com/Runinho) |  | ||||||
|     |  | ||||||
|   Runinho |  | ||||||
| * [![icon][mail]](mailto:me@yuhaowen.com) |  | ||||||
|   [![icon][github]](https://github.com/adaext) |  | ||||||
|     |  | ||||||
|   Ada |  | ||||||
| * [![icon][mail]](mailto:dominic.palmer@outlook.com) |  | ||||||
|   [![icon][github]](https://github.com/dominicpalmer) |  | ||||||
|     |  | ||||||
|   Dominic Palmer |  | ||||||
| * [![icon][mail]](mailto:kawagh.dev@gmail.com) |  | ||||||
|   [![icon][github]](https://github.com/kawagh) |  | ||||||
|     |  | ||||||
|   kawagh |  | ||||||
| * [![icon][mail]](mailto:78074243+danisevas@users.noreply.github.com) |  | ||||||
|   [![icon][github]](https://github.com/danisevas) |  | ||||||
|     |  | ||||||
|   Dani Sevastianov |  | ||||||
| * [![icon][mail]](mailto:oskar.persson@polken.se) |  | ||||||
|   [![icon][github]](https://github.com/oskarpersson/) |  | ||||||
|     |  | ||||||
|   Oskar Persson  |  | ||||||
| * [![icon][mail]](mailto:silence.m@hotmail.com) |  | ||||||
|   [![icon][github]](https://github.com/Stzx) |  | ||||||
|     |  | ||||||
|   Silence Tai |  | ||||||
| * [![icon][mail]](mailto:tszsumng90@gmail.com) |  | ||||||
|   [![icon][github]](https://github.com/samabcde) |  | ||||||
|     |  | ||||||
|   Sam Ng |  | ||||||
| * [![icon][mail]](mailto:ludwig.valda.vasquez@jetbrains.com) |  | ||||||
|   [![icon][github]](https://github.com/ludwig-jb) |  | ||||||
|     |  | ||||||
|   ludwig-jb |  | ||||||
| * [![icon][mail]](mailto:pvydmuch@gmail.com) |  | ||||||
|   [![icon][github]](https://github.com/pWydmuch) |  | ||||||
|     |  | ||||||
|   pWydmuch |  | ||||||
| * [![icon][mail]](mailto:leonid989@gmail.com) |  | ||||||
|   [![icon][github]](https://github.com/Infonautica) |  | ||||||
|     |  | ||||||
|   Leonid Danilov |  | ||||||
| * [![icon][mail]](mailto:emanuel-367@hotmail.com) |  | ||||||
|   [![icon][github]](https://github.com/emanuelgestosa) |  | ||||||
|     |  | ||||||
|   Emanuel Gestosa |  | ||||||
| * [![icon][mail]](mailto:81118900+lippfi@users.noreply.github.com) |  | ||||||
|   [![icon][github]](https://github.com/lippfi) |  | ||||||
|     |  | ||||||
|   lippfi,  |  | ||||||
| * [![icon][mail]](mailto:fillipser143@gmail.com) |  | ||||||
|   [![icon][github]](https://github.com/Parker7123) |  | ||||||
|     |  | ||||||
|   FilipParker |  | ||||||
| * [![icon][mail]](mailto:7138209+duhaesbaert@users.noreply.github.com) |  | ||||||
|   [![icon][github]](https://github.com/duhaesbaert) |  | ||||||
|     |  | ||||||
|   Eduardo Haesbaert |  | ||||||
| * [![icon][mail]](mailto:nikolaevsky.egor@gmail.com) |  | ||||||
|   [![icon][github]](https://github.com/Aisper) |  | ||||||
|     |  | ||||||
|   Egor Nikolaevsky |  | ||||||
| * [![icon][mail]](mailto:77796630+throwaway69420-69420@users.noreply.github.com) |  | ||||||
|   [![icon][github]](https://github.com/kun-codes) |  | ||||||
|     |  | ||||||
|   Bishwa Saha,  |  | ||||||
| * [![icon][mail]](mailto:alexfu@fastmail.com) |  | ||||||
|   [![icon][github]](https://github.com/alexfu) |  | ||||||
|     |  | ||||||
|   Alex Fu |  | ||||||
| * [![icon][mail]](mailto:jakepeters199@hotmail.com) |  | ||||||
|   [![icon][github]](https://github.com/LazyScaper) |  | ||||||
|     |  | ||||||
|   Jake |  | ||||||
|  |  | ||||||
| Previous contributors: |  | ||||||
|  |  | ||||||
| * [![icon][mail]](mailto:hild@b4mad.net) |  | ||||||
|   [![icon][github-off]](#) |  | ||||||
|     |  | ||||||
|   Marcel Hild |  | ||||||
| * [![icon][mail]](mailto:kevinz@weghst.com) |  | ||||||
|   [![icon][github]](https://github.com/kevin70) |  | ||||||
|     |  | ||||||
|   kk |  | ||||||
|  |  | ||||||
|                          |                          | ||||||
| If you are a contributor and your name is not listed here, feel free to | If you are a contributor and your name is not listed here, feel free to | ||||||
| contact the maintainers. | contact the maintainers. | ||||||
|   | |||||||
							
								
								
									
										218
									
								
								CHANGES.md
									
									
									
									
									
								
							
							
						
						
									
										218
									
								
								CHANGES.md
									
									
									
									
									
								
							| @@ -23,219 +23,7 @@ It is important to distinguish EAP from traditional pre-release software. | |||||||
| Please note that the quality of EAP versions may at times be way below even | Please note that the quality of EAP versions may at times be way below even | ||||||
| usual beta standards. | usual beta standards. | ||||||
|  |  | ||||||
| ## End of changelog file maintenance | ## To Be Released | ||||||
|  |  | ||||||
| Since version 2.9.0, the changelog can be found on YouTrack |  | ||||||
|  |  | ||||||
| To Be Released: https://youtrack.jetbrains.com/issues/VIM?q=%23%7BReady%20To%20Release%7D%20 |  | ||||||
| Latest Fixes: https://youtrack.jetbrains.com/issues/VIM?q=State:%20Fixed%20sort%20by:%20updated%20 |  | ||||||
|  |  | ||||||
| ## 2.9.0, 2024-02-20 |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-3055](https://youtrack.jetbrains.com/issue/VIM-3055) Fix the issue with double deleting after dot |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [805](https://github.com/JetBrains/ideavim/pull/805) by [chylex](https://github.com/chylex): VIM-3238 Fix recording a macro that replays another macro |  | ||||||
|  |  | ||||||
| ## 2.8.0, 2024-01-30 |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-3130](https://youtrack.jetbrains.com/issue/VIM-3130) Change the build version to 2023.1.2 |  | ||||||
| * [VIM-3168](https://youtrack.jetbrains.com/issue/VIM-3168) Do not switch to block caret after enter if the IdeaVim is disabled |  | ||||||
| * [VIM-3165](https://youtrack.jetbrains.com/issue/VIM-3165) Do not process enter key as IdeaVim shortcut if it's not an actual keypress |  | ||||||
| * [VIM-3159](https://youtrack.jetbrains.com/issue/VIM-3159) Shift-enter now works in normal mode again |  | ||||||
| * [VIM-3157](https://youtrack.jetbrains.com/issue/VIM-3157) Do not invoke enter in invokeLater for python console |  | ||||||
| * [VIM-3195](https://youtrack.jetbrains.com/issue/VIM-3195) Fix escape in injected editor |  | ||||||
| * [VIM-3190](https://youtrack.jetbrains.com/issue/VIM-3190) Do not use octopus handler if the enter key is used with modifiers like shift or control |  | ||||||
| * [VIM-3203](https://youtrack.jetbrains.com/issue/VIM-3203) Split action not works in normal mode |  | ||||||
| * [VIM-3184](https://youtrack.jetbrains.com/issue/VIM-3184) Revert "VIM-3184: Temporally disable new handlers for the thin client" |  | ||||||
| * [VIM-3186](https://youtrack.jetbrains.com/issue/VIM-3186) Do not multiply the enter action by the amount of carets |  | ||||||
| * [VIM-3177](https://youtrack.jetbrains.com/issue/VIM-3177) Formatting of commit message works again |  | ||||||
| * [VIM-1611](https://youtrack.jetbrains.com/issue/VIM-1611) actions related to resolving conflicts doesn't seem to work |  | ||||||
| * [VIM-3204](https://youtrack.jetbrains.com/issue/VIM-3204) Add checker that verifies the configuratin of the keymap |  | ||||||
| * [VIM-3084](https://youtrack.jetbrains.com/issue/VIM-3084) Double update for the status bar icon |  | ||||||
| * [VIM-3176](https://youtrack.jetbrains.com/issue/VIM-3176) Reselecting visual selection after pasting above it select wrong lines |  | ||||||
| * [VIM-3206](https://youtrack.jetbrains.com/issue/VIM-3206) Disable both copilot suggestion and insert mode on a single escape |  | ||||||
| * [VIM-3090](https://youtrack.jetbrains.com/issue/VIM-3090) Cmd line mode saves the visual mode |  | ||||||
| * [VIM-3085](https://youtrack.jetbrains.com/issue/VIM-3085) Open access to VimTypedActionHandler and VimShortcutKeyAction |  | ||||||
| * [VIM-3260](https://youtrack.jetbrains.com/issue/VIM-3260) Processing the offsets at the file end |  | ||||||
| * [VIM-3183](https://youtrack.jetbrains.com/issue/VIM-3183) Execute .ideavimrc on pooled thread |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [763](https://github.com/JetBrains/ideavim/pull/763) by [Sam Ng](https://github.com/samabcde): Fix(VIM-3176) add test for restore selection after pasting in/below s… |  | ||||||
| * [772](https://github.com/JetBrains/ideavim/pull/772) by [chylex](https://github.com/chylex): Prevent code completion popup from appearing after running a macro |  | ||||||
| * [787](https://github.com/JetBrains/ideavim/pull/787) by [Leonid Danilov](https://github.com/Infonautica): Added "Which-Key" to Plugins |  | ||||||
| * [778](https://github.com/JetBrains/ideavim/pull/778) by [lippfi](https://github.com/lippfi): Showmode |  | ||||||
| * [788](https://github.com/JetBrains/ideavim/pull/788) by [Matt Ellis](https://github.com/citizenmatt): Refactor VimOptionGroupBase |  | ||||||
|  |  | ||||||
| ## 2.7.0, 2023-11-07 |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-2933](https://youtrack.jetbrains.com/issue/VIM-2933) Reloading/sourcing .ideavimrc does not initialize new plugins |  | ||||||
| * [VIM-3138](https://youtrack.jetbrains.com/issue/VIM-3138) Do not try to register disposer if the caret is already disposed |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [734](https://github.com/JetBrains/ideavim/pull/734) by [Matt Ellis](https://github.com/citizenmatt): Support `~/` on Windows |  | ||||||
| * [736](https://github.com/JetBrains/ideavim/pull/736) by [chylex](https://github.com/chylex): Fix(VIM-2933): Reloading/sourcing .ideavimrc does not initialize new plugins |  | ||||||
|  |  | ||||||
| ## 2.6.3, 2023-10-30 |  | ||||||
|  |  | ||||||
| ### Changes: |  | ||||||
| - 2.6.0 and 2.6.1 releases are broken. Version 2.6.3 reverts IdeaVim plugin to the working state as for 2.5.1. |  | ||||||
|  |  | ||||||
| ## 2.6.0, 2023-10-27 |  | ||||||
|  |  | ||||||
| This version of IdeaVim contains a lot of issues. Version 2.6.3 reverts these changes. |  | ||||||
|  |  | ||||||
| ### Features: |  | ||||||
|  |  | ||||||
| * `ShowHoverInfo` action can be used in mappings to open a tooltip that is shown by |  | ||||||
|   mouse hovering | [VIM-2106](https://youtrack.jetbrains.com/issue/VIM-2106) |  | ||||||
| * `has` Vim Script function supports the most common OS checks: win32, win64, linux, mac, macunix, osx, osxdarwin, bsd, sun, unix |  | ||||||
|   * See https://github.com/JetBrains/ideavim#vim-script for details about Vim Script |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-3060](https://youtrack.jetbrains.com/issue/VIM-3060) Clipboard interaction stopped working |  | ||||||
| * [VIM-3095](https://youtrack.jetbrains.com/issue/VIM-3095) Fix missing ellipsis digraph |  | ||||||
| * [VIM-2562](https://youtrack.jetbrains.com/issue/VIM-2562) Fix hang with multi-width chars in command line |  | ||||||
| * [VIM-696](https://youtrack.jetbrains.com/issue/VIM-696) Vim selection issue after undo |  | ||||||
| * [VIM-1639](https://youtrack.jetbrains.com/issue/VIM-1639) Ctrl-o and Ctrl-i jumping in files of different projects |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [697](https://github.com/JetBrains/ideavim/pull/697) by [Matt Ellis](https://github.com/citizenmatt): Support per-window "global" values for local-to-window options |  | ||||||
| * [717](https://github.com/JetBrains/ideavim/pull/717) by [Matt Ellis](https://github.com/citizenmatt): Fix(VIM-2562): Fix hang with multi-width chars in command line |  | ||||||
| * [732](https://github.com/JetBrains/ideavim/pull/732) by [pWydmuch](https://github.com/pWydmuch): Fix md links in doc |  | ||||||
| * [733](https://github.com/JetBrains/ideavim/pull/733) by [Matt Ellis](https://github.com/citizenmatt): Add support for ShowHoverInfo action to 2023.1 and 2023.2 |  | ||||||
| * [729](https://github.com/JetBrains/ideavim/pull/729) by [chylex](https://github.com/chylex): Add operating system type to `has()` function |  | ||||||
| * [726](https://github.com/JetBrains/ideavim/pull/726) by [Matt Ellis](https://github.com/citizenmatt): Fix range for fall back comment mode |  | ||||||
|  |  | ||||||
| ## 2.5.0, 2023-09-01 |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-802](https://youtrack.jetbrains.com/issue/VIM-802) IdeaVim vs. Vim: discrepancies in using registers |  | ||||||
| * [VIM-2246](https://youtrack.jetbrains.com/issue/VIM-2246) X11/Xorg Primary selection register "* not supported |  | ||||||
| * [VIM-2313](https://youtrack.jetbrains.com/issue/VIM-2313) |  | ||||||
|   [VIM-2318](https://youtrack.jetbrains.com/issue/VIM-2318) |  | ||||||
|   [VIM-2666](https://youtrack.jetbrains.com/issue/VIM-2666) |  | ||||||
|   [VIM-2951](https://youtrack.jetbrains.com/issue/VIM-2951) |  | ||||||
|   IdeaVim works correctly in read-only editors like log or tests output. |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [666](https://github.com/JetBrains/ideavim/pull/666) by [Matt Ellis](https://github.com/citizenmatt): Improve formatting of `:set` command output |  | ||||||
| * [667](https://github.com/JetBrains/ideavim/pull/667) by [Matt Ellis](https://github.com/citizenmatt): Eagerly initialise local options and introduce option scope |  | ||||||
| * [672](https://github.com/JetBrains/ideavim/pull/672) by [Matt Ellis](https://github.com/citizenmatt): Fix issue adding back hidden status bar widget |  | ||||||
| * [668](https://github.com/JetBrains/ideavim/pull/668) by [ludwig-jb](https://github.com/ludwig-jb): Handle unicode grapheme clusters |  | ||||||
|  |  | ||||||
| ## 2.4.0, 2023-07-18 |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-2975](https://youtrack.jetbrains.com/issue/VIM-2975) Fix the offset after the rendered docs |  | ||||||
| * [VIM-2685](https://youtrack.jetbrains.com/issue/VIM-2685) Register command outputs different values for same registers |  | ||||||
| * [VIM-1294](https://youtrack.jetbrains.com/issue/VIM-1294) unvoluntary unfolding when using ideavim |  | ||||||
| * [VIM-2818](https://youtrack.jetbrains.com/issue/VIM-2818) Wrong caret position after multicaret paste |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [662](https://github.com/JetBrains/ideavim/pull/662) by [ludwig-jb](https://github.com/ludwig-jb): Update VimMessages#updateStatusBar to accept VimEditor |  | ||||||
| * [659](https://github.com/JetBrains/ideavim/pull/659) by [Sam Ng](https://github.com/samabcde): VIM-2920 fix select block expansion when enclose boundary is line break |  | ||||||
|  |  | ||||||
| ## 2.3.0, 2023-06-14 |  | ||||||
|  |  | ||||||
| ### Features: |  | ||||||
| * Matchit now supports PHP files | [VIM-2678](https://youtrack.jetbrains.com/issue/VIM-2678) |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-2909](https://youtrack.jetbrains.com/issue/VIM-2909) Fix incorrect file detection while closing diff window |  | ||||||
| * [VIM-2912](https://youtrack.jetbrains.com/issue/VIM-2912) Fix focus after :q |  | ||||||
| * [VIM-2930](https://youtrack.jetbrains.com/issue/VIM-2930) vim-multiple-cursors + ReplaceWithRegister issue |  | ||||||
| * [VIM-2945](https://youtrack.jetbrains.com/issue/VIM-2945) %-movement mismatches braces |  | ||||||
| * [VIM-2953](https://youtrack.jetbrains.com/issue/VIM-2953) The previous fix for :q command caused weird behavior of tab closing |  | ||||||
| * [VIM-2964](https://youtrack.jetbrains.com/issue/VIM-2964) Fix an issue with leaking caret instance |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [616](https://github.com/JetBrains/ideavim/pull/616) by [Matt Ellis](https://github.com/citizenmatt): Refactor/option delegated properties |  | ||||||
| * [626](https://github.com/JetBrains/ideavim/pull/626) by [Martin Yzeiri](https://github.com/myzeiri): Matchit bug fixes |  | ||||||
| * [619](https://github.com/JetBrains/ideavim/pull/619) by [Matt Ellis](https://github.com/citizenmatt): Fix some local options being used as global options |  | ||||||
| * [638](https://github.com/JetBrains/ideavim/pull/638) by [Sam Ng](https://github.com/samabcde): VIM-2615 add support to sort u command |  | ||||||
| * [646](https://github.com/JetBrains/ideavim/pull/646) by [Sam Ng](https://github.com/samabcde): VIM-1990 fix repeat delete find or till wrong MotionType |  | ||||||
| * [649](https://github.com/JetBrains/ideavim/pull/649) by [Martin Yzeiri](https://github.com/myzeiri): Add Matchit support for PHP  |  | ||||||
|  |  | ||||||
| ## 2.2.0, 2023-04-20 |  | ||||||
|  |  | ||||||
| ### Features: |  | ||||||
| * Now every secondary caret has its own marks. You can use marks and `gv` in multiple-caret mode now. |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-1829](https://youtrack.jetbrains.com/issue/VIM-1829/key-combinations-are-not-working-in-visual-mode-IdeaVim) Fix marks when moving lines up/down |  | ||||||
| * [VIM-2130](https://youtrack.jetbrains.com/issue/VIM-2130/Vim-visual-mode-mapping-isnt-behaving-correctly-in-ideavim-it-leaves-visual-mode-after-its-executed) Fix marks when moving lines up/down |  | ||||||
| * [VIM-2428](https://youtrack.jetbrains.com/issue/VIM-2428/The-gv-command-doesnt-work) Fix marks when moving lines up/down |  | ||||||
| * [VIM-2686](https://youtrack.jetbrains.com/issue/VIM-2686/Multiple-caret-marks) Add individual mark storage for each secondary caret |  | ||||||
| * [VIM-2840](https://youtrack.jetbrains.com/issue/VIM-2840) Replace with register does not work with count |  | ||||||
| * [VIM-658](https://youtrack.jetbrains.com/issue/VIM-658) Stop macro on error |  | ||||||
| * [VIM-2787](https://youtrack.jetbrains.com/issue/VIM-2787) Save ideavimrc loading |  | ||||||
| * [VIM-2850](https://youtrack.jetbrains.com/issue/VIM-2850) Marks exception during IDE startup  |  | ||||||
| * [VIM-2804](https://youtrack.jetbrains.com/issue/VIM-2804) IdeaVim multiple-cursors copy and paste issue when "set clipboard+=unnamed" |  | ||||||
| * [VIM-1768](https://youtrack.jetbrains.com/issue/VIM-1768) Delete surrounding character while in multiple cursors mode |  | ||||||
| * [VIM-282](https://youtrack.jetbrains.com/issue/VIM-282) Cursor line wrapping support (whichwrap) |  | ||||||
| * [VIM-2315](https://youtrack.jetbrains.com/issue/VIM-2315) Fix overlapping mappings execution |  | ||||||
| * [VIM-44](https://youtrack.jetbrains.com/issue/VIM-44) Unify navigation history between ideavim and idea |  | ||||||
| * [VIM-1735](https://youtrack.jetbrains.com/issue/VIM-1735) Fix enabling mulple carets after line selection |  | ||||||
| * [VIM-2881](https://youtrack.jetbrains.com/issue/VIM-2881) ReplaceRegister does no longer worker with MultiCursor |  | ||||||
| * [VIM-2244](https://youtrack.jetbrains.com/issue/VIM-2244) nnoremap mapping doesn't work correctly |  | ||||||
| * [VIM-2885](https://youtrack.jetbrains.com/issue/VIM-2885) "v:searchforward" does't work for IdeaVim |  | ||||||
| * [VIM-2733](https://youtrack.jetbrains.com/issue/VIM-2733) vim-surround emulation interacts incorrectly with unmatched quotes on previous lines |  | ||||||
| * [VIM-2884](https://youtrack.jetbrains.com/issue/VIM-2884) Moving multiple lines in visual mode is not working |  | ||||||
| * [VIM-2868](https://youtrack.jetbrains.com/issue/VIM-2868) Pasting in visual mode with P should not replace yank register like when pasting with p |  | ||||||
| * [VIM-2819](https://youtrack.jetbrains.com/issue/VIM-2819) Move command works incorrectly |  | ||||||
| * [VIM-795](https://youtrack.jetbrains.com/issue/VIM-795) Ctrl-w + h doesn't alway work (window navigation to the left window) |  | ||||||
| * [VIM-1551](https://youtrack.jetbrains.com/issue/VIM-1551) Surround: line surround not working |  | ||||||
| * [VIM-1746](https://youtrack.jetbrains.com/issue/VIM-1746) IdeaVim Surround removes unwanted characters |  | ||||||
| * [VIM-1750](https://youtrack.jetbrains.com/issue/VIM-1750) Surround with tag wrong position |  | ||||||
| * [VIM-2286](https://youtrack.jetbrains.com/issue/VIM-2286) Set surround not working for me as expected |  | ||||||
| * [VIM-2433](https://youtrack.jetbrains.com/issue/VIM-2433) Do not clear clipboard after inserting with ideaput |  | ||||||
| * [VIM-2896](https://youtrack.jetbrains.com/issue/VIM-2896) Correct ordering of handlers |  | ||||||
| * [VIM-2912](https://youtrack.jetbrains.com/issue/VIM-2912) Fix focus after :q |  | ||||||
| * [VIM-2909](https://youtrack.jetbrains.com/issue/VIM-2909) Fix incorrect file detection while closing diff window |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [589](https://github.com/JetBrains/ideavim/pull/589) by [Matt Ellis](https://github.com/citizenmatt): Refactor option usage and introduce accessor API |  | ||||||
| * [604](https://github.com/JetBrains/ideavim/pull/604) by [Dominic Palmer](https://github.com/dominicpalmer): VIM-2773: Include empty lines in the selection when dragging backwards from EOL |  | ||||||
| * [603](https://github.com/JetBrains/ideavim/pull/603) by [Dominic Palmer](https://github.com/dominicpalmer): VIM-2773: Prevent viewport displacement on undo |  | ||||||
| * [602](https://github.com/JetBrains/ideavim/pull/602) by [Matt Ellis](https://github.com/citizenmatt): Refactor options service |  | ||||||
| * [612](https://github.com/JetBrains/ideavim/pull/612) by [Dani Sevastianov](https://github.com/danisevas): Fix quick-scope setup documentation |  | ||||||
| * [617](https://github.com/JetBrains/ideavim/pull/617) by [Silence Tai](https://github.com/Stzx): Fix dispose operation |  | ||||||
|  |  | ||||||
| ## 2.1.0, 2023-01-10 |  | ||||||
|  |  | ||||||
| ### Features: |  | ||||||
| * Add IdeaVim tutor. You can access it via the status bar icon. |  | ||||||
|  |  | ||||||
| ### Fixes: |  | ||||||
| * [VIM-2797](https://youtrack.jetbrains.com/issue/VIM-2797) Introduce variable to mute default argtextobj mappings |  | ||||||
| * [VIM-758](https://youtrack.jetbrains.com/issue/VIM-758) Support d mappings |  | ||||||
| * [VIM-2577](https://youtrack.jetbrains.com/issue/VIM-2577) Fix paste at the end of notebook cell |  | ||||||
| * [VIM-2813](https://youtrack.jetbrains.com/issue/VIM-2813) Migrate update checker to VimStandalonePluginUpdateChecker |  | ||||||
| * [VIM-2833](https://youtrack.jetbrains.com/issue/VIM-2833) Fix rare deadlock during put in insert mode from clipboard |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [558](https://github.com/JetBrains/ideavim/pull/558) by [Matt Ellis](https://github.com/citizenmatt): Fix incorrect normalising for trailing inlay |  | ||||||
| * [554](https://github.com/JetBrains/ideavim/pull/554) by [Matt Ellis](https://github.com/citizenmatt): Refactor "last column" calculations |  | ||||||
| * [553](https://github.com/JetBrains/ideavim/pull/553) by [Matt Ellis](https://github.com/citizenmatt): Rearrange and rename some code in engine |  | ||||||
| * [560](https://github.com/JetBrains/ideavim/pull/560) by [Runinho](https://github.com/Runinho): Fix(VIM-2577) paste not working at end of notebook cell |  | ||||||
| * [571](https://github.com/JetBrains/ideavim/pull/571) by [Ada](https://github.com/adaext): Remove the redundant quotation mark at the end of "packadd matchit" command |  | ||||||
| * [561](https://github.com/JetBrains/ideavim/pull/561) by [Matt Ellis](https://github.com/citizenmatt): Fix incremental search not scrolling to current match |  | ||||||
| * [559](https://github.com/JetBrains/ideavim/pull/559) by [Runinho](https://github.com/Runinho): Fix(VIM-2760) notebookCommandMode detection |  | ||||||
| * [579](https://github.com/JetBrains/ideavim/pull/579) by [Martin Yzeiri](https://github.com/myzeiri): VIM-2799: Add Matchit support for cshtml files |  | ||||||
| * [580](https://github.com/JetBrains/ideavim/pull/580) by [Martin Yzeiri](https://github.com/myzeiri): Matchit: Add more Rider file types |  | ||||||
| * [583](https://github.com/JetBrains/ideavim/pull/583) by [Matt Ellis](https://github.com/citizenmatt): Introduce ScrollGroup |  | ||||||
| * [586](https://github.com/JetBrains/ideavim/pull/586) by [Patrick Elmquist](https://github.com/patrick-elmquist): Fixed number references in Tutor |  | ||||||
|  |  | ||||||
| ## 2.0.0, 2022-11-01 |  | ||||||
|  |  | ||||||
| ### Changes: |  | ||||||
| * IdeaVim changes license from GPL-2.0 or later to MIT. [VIM-2782](https://youtrack.jetbrains.com/issue/VIM-2782) |  | ||||||
|  |  | ||||||
| ## 1.12.0, 2022-11-01 |  | ||||||
|  |  | ||||||
| ### Fixes: | ### Fixes: | ||||||
| * [VIM-1758](https://youtrack.jetbrains.com/issue/VIM-1758) Commentary plugin in rider | * [VIM-1758](https://youtrack.jetbrains.com/issue/VIM-1758) Commentary plugin in rider | ||||||
| @@ -245,10 +33,6 @@ This version of IdeaVim contains a lot of issues. Version 2.6.3 reverts these ch | |||||||
| * [VIM-2718](https://youtrack.jetbrains.com/issue/VIM-2718) Fixed case where the primary caret was changed | * [VIM-2718](https://youtrack.jetbrains.com/issue/VIM-2718) Fixed case where the primary caret was changed | ||||||
| * [VIM-2766](https://youtrack.jetbrains.com/issue/VIM-2766) Move NERDTree update to background thread | * [VIM-2766](https://youtrack.jetbrains.com/issue/VIM-2766) Move NERDTree update to background thread | ||||||
| * [VIM-2768](https://youtrack.jetbrains.com/issue/VIM-2768) Refactor listeners | * [VIM-2768](https://youtrack.jetbrains.com/issue/VIM-2768) Refactor listeners | ||||||
| * [VIM-2776](https://youtrack.jetbrains.com/issue/VIM-2776) Use filename index for file search |  | ||||||
|  |  | ||||||
| ### Merged PRs: |  | ||||||
| * [550](https://github.com/JetBrains/ideavim/pull/550) by [Matt Ellis](https://github.com/citizenmatt): Fix(VIM-2778) Remove override of editor scroll setting |  | ||||||
|  |  | ||||||
| ## 1.11.0, 2022-08-09 | ## 1.11.0, 2022-08-09 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,10 +32,6 @@ OK, ready to do some coding? | |||||||
| Yoo hoo! You’re all set to begin contributing. | Yoo hoo! You’re all set to begin contributing. | ||||||
| We've prepared some useful configurations for you: | We've prepared some useful configurations for you: | ||||||
|  |  | ||||||
| - `Start IJ with IdeaVim` |  | ||||||
| - `IdeaVim tests` |  | ||||||
| - `IdeaVim full verification` |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| And here are useful gradle commands: | And here are useful gradle commands: | ||||||
| @@ -91,16 +87,9 @@ Here are some guides for testing: | |||||||
|  |  | ||||||
| 1. Read the javadoc for the `@VimBehaviorDiffers` annotation in the source code. | 1. Read the javadoc for the `@VimBehaviorDiffers` annotation in the source code. | ||||||
|  |  | ||||||
| 2. Please avoid senseless text like "dhjkwaldjwa", "asdasdasd", "123 123 123 123", etc. Use a few lines of code or | 2. Please avoid senseless text like "dhjkwaldjwa", "asdasdasd", "123 123 123 123", etc. Try to choose an example | ||||||
| the following template: | text that is easy to read and understand what is wrong if the test fails. For example, take a few lines from your | ||||||
| ```text | favorite poem, or use Vladimir Nabokov’s “A Discovery" if you don't have one. | ||||||
| Lorem Ipsum |  | ||||||
|  |  | ||||||
| Lorem ipsum dolor sit amet, |  | ||||||
| consectetur adipiscing elit |  | ||||||
| Sed in orci mauris. |  | ||||||
| Cras id tellus in ex imperdiet egestas. |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| 3. Don't forget to test your functionality with line start, line end, file start, file end, empty line, multiple | 3. Don't forget to test your functionality with line start, line end, file start, file end, empty line, multiple | ||||||
| carets, dollar motion, etc. | carets, dollar motion, etc. | ||||||
| @@ -160,7 +149,7 @@ This is just terrible. [You know what to do](https://github.com/JetBrains/ideavi | |||||||
|  |  | ||||||
| ### Resources: | ### Resources: | ||||||
|  |  | ||||||
| * [Continuous integration builds](https://ideavim.teamcity.com/) | * [Continuous integration builds](https://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1) | ||||||
| * [Bug tracker](https://youtrack.jetbrains.com/issues/VIM) | * [Bug tracker](https://youtrack.jetbrains.com/issues/VIM) | ||||||
| * [Chat on gitter](https://gitter.im/JetBrains/ideavim) | * [Chat on gitter](https://gitter.im/JetBrains/ideavim) | ||||||
| * [IdeaVim Channel](https://jb.gg/bi6zp7) on [JetBrains Server](https://discord.gg/jetbrains) | * [IdeaVim Channel](https://jb.gg/bi6zp7) on [JetBrains Server](https://discord.gg/jetbrains) | ||||||
| @@ -168,5 +157,5 @@ This is just terrible. [You know what to do](https://github.com/JetBrains/ideavi | |||||||
| * [Changelog](CHANGES.md) | * [Changelog](CHANGES.md) | ||||||
| * [Contributors listing](AUTHORS.md) | * [Contributors listing](AUTHORS.md) | ||||||
|  |  | ||||||
| [teamcity-build-status]: https://ideavim.teamcity.com/viewType.html?buildTypeId=Ideavim_IdeaVimTests_Latest_EAP&guest=1 | [teamcity-build-status]: https://teamcity.jetbrains.com/viewType.html?buildTypeId=IdeaVim_TestsForIntelliJEAP&guest=1 | ||||||
| [teamcity-build-status-svg]: https://ideavim.teamcity.com/app/rest/builds/buildType:(id:Ideavim_IdeaVimTests_Latest_EAP)/statusIcon.svg?guest=1 | [teamcity-build-status-svg]: https://teamcity.jetbrains.com/app/rest/builds/buildType:(id:IdeaVim_TestsForIntelliJEAP)/statusIcon.svg?guest=1 | ||||||
|   | |||||||
							
								
								
									
										352
									
								
								LICENSE.txt
									
									
									
									
									
								
							
							
						
						
									
										352
									
								
								LICENSE.txt
									
									
									
									
									
								
							| @@ -1,21 +1,339 @@ | |||||||
| MIT License |                     GNU GENERAL PUBLIC LICENSE | ||||||
|  |                        Version 2, June 1991 | ||||||
|  |  | ||||||
| Copyright (c) 2003-present The IdeaVim authors |  Copyright (C) 1989, 1991 Free Software Foundation, Inc., | ||||||
|  |  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||||
|  |  Everyone is permitted to copy and distribute verbatim copies | ||||||
|  |  of this license document, but changing it is not allowed. | ||||||
|  |  | ||||||
| Permission is hereby granted, free of charge, to any person obtaining a copy |                             Preamble | ||||||
| of this software and associated documentation files (the "Software"), to deal |  | ||||||
| in the Software without restriction, including without limitation the rights |  | ||||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  | ||||||
| copies of the Software, and to permit persons to whom the Software is |  | ||||||
| furnished to do so, subject to the following conditions: |  | ||||||
|  |  | ||||||
| The above copyright notice and this permission notice shall be included in all |   The licenses for most software are designed to take away your | ||||||
| copies or substantial portions of the Software. | freedom to share and change it.  By contrast, the GNU General Public | ||||||
|  | License is intended to guarantee your freedom to share and change free | ||||||
|  | software--to make sure the software is free for all its users.  This | ||||||
|  | General Public License applies to most of the Free Software | ||||||
|  | Foundation's software and to any other program whose authors commit to | ||||||
|  | using it.  (Some other Free Software Foundation software is covered by | ||||||
|  | the GNU Lesser General Public License instead.)  You can apply it to | ||||||
|  | your programs, too. | ||||||
|  |  | ||||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |   When we speak of free software, we are referring to freedom, not | ||||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | price.  Our General Public Licenses are designed to make sure that you | ||||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | have the freedom to distribute copies of free software (and charge for | ||||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | this service if you wish), that you receive source code or can get it | ||||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | if you want it, that you can change the software or use pieces of it | ||||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | in new free programs; and that you know you can do these things. | ||||||
| SOFTWARE. |  | ||||||
|  |   To protect your rights, we need to make restrictions that forbid | ||||||
|  | anyone to deny you these rights or to ask you to surrender the rights. | ||||||
|  | These restrictions translate to certain responsibilities for you if you | ||||||
|  | distribute copies of the software, or if you modify it. | ||||||
|  |  | ||||||
|  |   For example, if you distribute copies of such a program, whether | ||||||
|  | gratis or for a fee, you must give the recipients all the rights that | ||||||
|  | you have.  You must make sure that they, too, receive or can get the | ||||||
|  | source code.  And you must show them these terms so they know their | ||||||
|  | rights. | ||||||
|  |  | ||||||
|  |   We protect your rights with two steps: (1) copyright the software, and | ||||||
|  | (2) offer you this license which gives you legal permission to copy, | ||||||
|  | distribute and/or modify the software. | ||||||
|  |  | ||||||
|  |   Also, for each author's protection and ours, we want to make certain | ||||||
|  | that everyone understands that there is no warranty for this free | ||||||
|  | software.  If the software is modified by someone else and passed on, we | ||||||
|  | want its recipients to know that what they have is not the original, so | ||||||
|  | that any problems introduced by others will not reflect on the original | ||||||
|  | authors' reputations. | ||||||
|  |  | ||||||
|  |   Finally, any free program is threatened constantly by software | ||||||
|  | patents.  We wish to avoid the danger that redistributors of a free | ||||||
|  | program will individually obtain patent licenses, in effect making the | ||||||
|  | program proprietary.  To prevent this, we have made it clear that any | ||||||
|  | patent must be licensed for everyone's free use or not licensed at all. | ||||||
|  |  | ||||||
|  |   The precise terms and conditions for copying, distribution and | ||||||
|  | modification follow. | ||||||
|  |  | ||||||
|  |                     GNU GENERAL PUBLIC LICENSE | ||||||
|  |    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||||
|  |  | ||||||
|  |   0. This License applies to any program or other work which contains | ||||||
|  | a notice placed by the copyright holder saying it may be distributed | ||||||
|  | under the terms of this General Public License.  The "Program", below, | ||||||
|  | refers to any such program or work, and a "work based on the Program" | ||||||
|  | means either the Program or any derivative work under copyright law: | ||||||
|  | that is to say, a work containing the Program or a portion of it, | ||||||
|  | either verbatim or with modifications and/or translated into another | ||||||
|  | language.  (Hereinafter, translation is included without limitation in | ||||||
|  | the term "modification".)  Each licensee is addressed as "you". | ||||||
|  |  | ||||||
|  | Activities other than copying, distribution and modification are not | ||||||
|  | covered by this License; they are outside its scope.  The act of | ||||||
|  | running the Program is not restricted, and the output from the Program | ||||||
|  | is covered only if its contents constitute a work based on the | ||||||
|  | Program (independent of having been made by running the Program). | ||||||
|  | Whether that is true depends on what the Program does. | ||||||
|  |  | ||||||
|  |   1. You may copy and distribute verbatim copies of the Program's | ||||||
|  | source code as you receive it, in any medium, provided that you | ||||||
|  | conspicuously and appropriately publish on each copy an appropriate | ||||||
|  | copyright notice and disclaimer of warranty; keep intact all the | ||||||
|  | notices that refer to this License and to the absence of any warranty; | ||||||
|  | and give any other recipients of the Program a copy of this License | ||||||
|  | along with the Program. | ||||||
|  |  | ||||||
|  | You may charge a fee for the physical act of transferring a copy, and | ||||||
|  | you may at your option offer warranty protection in exchange for a fee. | ||||||
|  |  | ||||||
|  |   2. You may modify your copy or copies of the Program or any portion | ||||||
|  | of it, thus forming a work based on the Program, and copy and | ||||||
|  | distribute such modifications or work under the terms of Section 1 | ||||||
|  | above, provided that you also meet all of these conditions: | ||||||
|  |  | ||||||
|  |     a) You must cause the modified files to carry prominent notices | ||||||
|  |     stating that you changed the files and the date of any change. | ||||||
|  |  | ||||||
|  |     b) You must cause any work that you distribute or publish, that in | ||||||
|  |     whole or in part contains or is derived from the Program or any | ||||||
|  |     part thereof, to be licensed as a whole at no charge to all third | ||||||
|  |     parties under the terms of this License. | ||||||
|  |  | ||||||
|  |     c) If the modified program normally reads commands interactively | ||||||
|  |     when run, you must cause it, when started running for such | ||||||
|  |     interactive use in the most ordinary way, to print or display an | ||||||
|  |     announcement including an appropriate copyright notice and a | ||||||
|  |     notice that there is no warranty (or else, saying that you provide | ||||||
|  |     a warranty) and that users may redistribute the program under | ||||||
|  |     these conditions, and telling the user how to view a copy of this | ||||||
|  |     License.  (Exception: if the Program itself is interactive but | ||||||
|  |     does not normally print such an announcement, your work based on | ||||||
|  |     the Program is not required to print an announcement.) | ||||||
|  |  | ||||||
|  | These requirements apply to the modified work as a whole.  If | ||||||
|  | identifiable sections of that work are not derived from the Program, | ||||||
|  | and can be reasonably considered independent and separate works in | ||||||
|  | themselves, then this License, and its terms, do not apply to those | ||||||
|  | sections when you distribute them as separate works.  But when you | ||||||
|  | distribute the same sections as part of a whole which is a work based | ||||||
|  | on the Program, the distribution of the whole must be on the terms of | ||||||
|  | this License, whose permissions for other licensees extend to the | ||||||
|  | entire whole, and thus to each and every part regardless of who wrote it. | ||||||
|  |  | ||||||
|  | Thus, it is not the intent of this section to claim rights or contest | ||||||
|  | your rights to work written entirely by you; rather, the intent is to | ||||||
|  | exercise the right to control the distribution of derivative or | ||||||
|  | collective works based on the Program. | ||||||
|  |  | ||||||
|  | In addition, mere aggregation of another work not based on the Program | ||||||
|  | with the Program (or with a work based on the Program) on a volume of | ||||||
|  | a storage or distribution medium does not bring the other work under | ||||||
|  | the scope of this License. | ||||||
|  |  | ||||||
|  |   3. You may copy and distribute the Program (or a work based on it, | ||||||
|  | under Section 2) in object code or executable form under the terms of | ||||||
|  | Sections 1 and 2 above provided that you also do one of the following: | ||||||
|  |  | ||||||
|  |     a) Accompany it with the complete corresponding machine-readable | ||||||
|  |     source code, which must be distributed under the terms of Sections | ||||||
|  |     1 and 2 above on a medium customarily used for software interchange; or, | ||||||
|  |  | ||||||
|  |     b) Accompany it with a written offer, valid for at least three | ||||||
|  |     years, to give any third party, for a charge no more than your | ||||||
|  |     cost of physically performing source distribution, a complete | ||||||
|  |     machine-readable copy of the corresponding source code, to be | ||||||
|  |     distributed under the terms of Sections 1 and 2 above on a medium | ||||||
|  |     customarily used for software interchange; or, | ||||||
|  |  | ||||||
|  |     c) Accompany it with the information you received as to the offer | ||||||
|  |     to distribute corresponding source code.  (This alternative is | ||||||
|  |     allowed only for noncommercial distribution and only if you | ||||||
|  |     received the program in object code or executable form with such | ||||||
|  |     an offer, in accord with Subsection b above.) | ||||||
|  |  | ||||||
|  | The source code for a work means the preferred form of the work for | ||||||
|  | making modifications to it.  For an executable work, complete source | ||||||
|  | code means all the source code for all modules it contains, plus any | ||||||
|  | associated interface definition files, plus the scripts used to | ||||||
|  | control compilation and installation of the executable.  However, as a | ||||||
|  | special exception, the source code distributed need not include | ||||||
|  | anything that is normally distributed (in either source or binary | ||||||
|  | form) with the major components (compiler, kernel, and so on) of the | ||||||
|  | operating system on which the executable runs, unless that component | ||||||
|  | itself accompanies the executable. | ||||||
|  |  | ||||||
|  | If distribution of executable or object code is made by offering | ||||||
|  | access to copy from a designated place, then offering equivalent | ||||||
|  | access to copy the source code from the same place counts as | ||||||
|  | distribution of the source code, even though third parties are not | ||||||
|  | compelled to copy the source along with the object code. | ||||||
|  |  | ||||||
|  |   4. You may not copy, modify, sublicense, or distribute the Program | ||||||
|  | except as expressly provided under this License.  Any attempt | ||||||
|  | otherwise to copy, modify, sublicense or distribute the Program is | ||||||
|  | void, and will automatically terminate your rights under this License. | ||||||
|  | However, parties who have received copies, or rights, from you under | ||||||
|  | this License will not have their licenses terminated so long as such | ||||||
|  | parties remain in full compliance. | ||||||
|  |  | ||||||
|  |   5. You are not required to accept this License, since you have not | ||||||
|  | signed it.  However, nothing else grants you permission to modify or | ||||||
|  | distribute the Program or its derivative works.  These actions are | ||||||
|  | prohibited by law if you do not accept this License.  Therefore, by | ||||||
|  | modifying or distributing the Program (or any work based on the | ||||||
|  | Program), you indicate your acceptance of this License to do so, and | ||||||
|  | all its terms and conditions for copying, distributing or modifying | ||||||
|  | the Program or works based on it. | ||||||
|  |  | ||||||
|  |   6. Each time you redistribute the Program (or any work based on the | ||||||
|  | Program), the recipient automatically receives a license from the | ||||||
|  | original licensor to copy, distribute or modify the Program subject to | ||||||
|  | these terms and conditions.  You may not impose any further | ||||||
|  | restrictions on the recipients' exercise of the rights granted herein. | ||||||
|  | You are not responsible for enforcing compliance by third parties to | ||||||
|  | this License. | ||||||
|  |  | ||||||
|  |   7. If, as a consequence of a court judgment or allegation of patent | ||||||
|  | infringement or for any other reason (not limited to patent issues), | ||||||
|  | conditions are imposed on you (whether by court order, agreement or | ||||||
|  | otherwise) that contradict the conditions of this License, they do not | ||||||
|  | excuse you from the conditions of this License.  If you cannot | ||||||
|  | distribute so as to satisfy simultaneously your obligations under this | ||||||
|  | License and any other pertinent obligations, then as a consequence you | ||||||
|  | may not distribute the Program at all.  For example, if a patent | ||||||
|  | license would not permit royalty-free redistribution of the Program by | ||||||
|  | all those who receive copies directly or indirectly through you, then | ||||||
|  | the only way you could satisfy both it and this License would be to | ||||||
|  | refrain entirely from distribution of the Program. | ||||||
|  |  | ||||||
|  | If any portion of this section is held invalid or unenforceable under | ||||||
|  | any particular circumstance, the balance of the section is intended to | ||||||
|  | apply and the section as a whole is intended to apply in other | ||||||
|  | circumstances. | ||||||
|  |  | ||||||
|  | It is not the purpose of this section to induce you to infringe any | ||||||
|  | patents or other property right claims or to contest validity of any | ||||||
|  | such claims; this section has the sole purpose of protecting the | ||||||
|  | integrity of the free software distribution system, which is | ||||||
|  | implemented by public license practices.  Many people have made | ||||||
|  | generous contributions to the wide range of software distributed | ||||||
|  | through that system in reliance on consistent application of that | ||||||
|  | system; it is up to the author/donor to decide if he or she is willing | ||||||
|  | to distribute software through any other system and a licensee cannot | ||||||
|  | impose that choice. | ||||||
|  |  | ||||||
|  | This section is intended to make thoroughly clear what is believed to | ||||||
|  | be a consequence of the rest of this License. | ||||||
|  |  | ||||||
|  |   8. If the distribution and/or use of the Program is restricted in | ||||||
|  | certain countries either by patents or by copyrighted interfaces, the | ||||||
|  | original copyright holder who places the Program under this License | ||||||
|  | may add an explicit geographical distribution limitation excluding | ||||||
|  | those countries, so that distribution is permitted only in or among | ||||||
|  | countries not thus excluded.  In such case, this License incorporates | ||||||
|  | the limitation as if written in the body of this License. | ||||||
|  |  | ||||||
|  |   9. The Free Software Foundation may publish revised and/or new versions | ||||||
|  | of the General Public License from time to time.  Such new versions will | ||||||
|  | be similar in spirit to the present version, but may differ in detail to | ||||||
|  | address new problems or concerns. | ||||||
|  |  | ||||||
|  | Each version is given a distinguishing version number.  If the Program | ||||||
|  | specifies a version number of this License which applies to it and "any | ||||||
|  | later version", you have the option of following the terms and conditions | ||||||
|  | either of that version or of any later version published by the Free | ||||||
|  | Software Foundation.  If the Program does not specify a version number of | ||||||
|  | this License, you may choose any version ever published by the Free Software | ||||||
|  | Foundation. | ||||||
|  |  | ||||||
|  |   10. If you wish to incorporate parts of the Program into other free | ||||||
|  | programs whose distribution conditions are different, write to the author | ||||||
|  | to ask for permission.  For software which is copyrighted by the Free | ||||||
|  | Software Foundation, write to the Free Software Foundation; we sometimes | ||||||
|  | make exceptions for this.  Our decision will be guided by the two goals | ||||||
|  | of preserving the free status of all derivatives of our free software and | ||||||
|  | of promoting the sharing and reuse of software generally. | ||||||
|  |  | ||||||
|  |                             NO WARRANTY | ||||||
|  |  | ||||||
|  |   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||||||
|  | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN | ||||||
|  | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||||||
|  | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||||||
|  | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||||||
|  | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS | ||||||
|  | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE | ||||||
|  | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||||||
|  | REPAIR OR CORRECTION. | ||||||
|  |  | ||||||
|  |   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||||
|  | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||||||
|  | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||||||
|  | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||||||
|  | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||||||
|  | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||||||
|  | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||||||
|  | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||||||
|  | POSSIBILITY OF SUCH DAMAGES. | ||||||
|  |  | ||||||
|  |                      END OF TERMS AND CONDITIONS | ||||||
|  |  | ||||||
|  |             How to Apply These Terms to Your New Programs | ||||||
|  |  | ||||||
|  |   If you develop a new program, and you want it to be of the greatest | ||||||
|  | possible use to the public, the best way to achieve this is to make it | ||||||
|  | free software which everyone can redistribute and change under these terms. | ||||||
|  |  | ||||||
|  |   To do so, attach the following notices to the program.  It is safest | ||||||
|  | to attach them to the start of each source file to most effectively | ||||||
|  | convey the exclusion of warranty; and each file should have at least | ||||||
|  | the "copyright" line and a pointer to where the full notice is found. | ||||||
|  |  | ||||||
|  |     <one line to give the program's name and a brief idea of what it does.> | ||||||
|  |     Copyright (C) <year>  <name of author> | ||||||
|  |  | ||||||
|  |     This program is free software; you can redistribute it and/or modify | ||||||
|  |     it under the terms of the GNU General Public License as published by | ||||||
|  |     the Free Software Foundation; either version 2 of the License, or | ||||||
|  |     (at your option) any later version. | ||||||
|  |  | ||||||
|  |     This program is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |     GNU General Public License for more details. | ||||||
|  |  | ||||||
|  |     You should have received a copy of the GNU General Public License along | ||||||
|  |     with this program; if not, write to the Free Software Foundation, Inc., | ||||||
|  |     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||||
|  |  | ||||||
|  | Also add information on how to contact you by electronic and paper mail. | ||||||
|  |  | ||||||
|  | If the program is interactive, make it output a short notice like this | ||||||
|  | when it starts in an interactive mode: | ||||||
|  |  | ||||||
|  |     Gnomovision version 69, Copyright (C) year name of author | ||||||
|  |     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. | ||||||
|  |     This is free software, and you are welcome to redistribute it | ||||||
|  |     under certain conditions; type `show c' for details. | ||||||
|  |  | ||||||
|  | The hypothetical commands `show w' and `show c' should show the appropriate | ||||||
|  | parts of the General Public License.  Of course, the commands you use may | ||||||
|  | be called something other than `show w' and `show c'; they could even be | ||||||
|  | mouse-clicks or menu items--whatever suits your program. | ||||||
|  |  | ||||||
|  | You should also get your employer (if you work as a programmer) or your | ||||||
|  | school, if any, to sign a "copyright disclaimer" for the program, if | ||||||
|  | necessary.  Here is a sample; alter the names: | ||||||
|  |  | ||||||
|  |   Yoyodyne, Inc., hereby disclaims all copyright interest in the program | ||||||
|  |   `Gnomovision' (which makes passes at compilers) written by James Hacker. | ||||||
|  |  | ||||||
|  |   <signature of Ty Coon>, 1 April 1989 | ||||||
|  |   Ty Coon, President of Vice | ||||||
|  |  | ||||||
|  | This General Public License does not permit incorporating your program into | ||||||
|  | proprietary programs.  If your program is a subroutine library, you may | ||||||
|  | consider it more useful to permit linking proprietary applications with the | ||||||
|  | library.  If this is what you want to do, use the GNU Lesser General | ||||||
|  | Public License instead of this License. | ||||||
							
								
								
									
										51
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								README.md
									
									
									
									
									
								
							| @@ -9,7 +9,6 @@ IdeaVim | |||||||
| [![Rating][plugin-rating-svg]][plugin-repo] | [![Rating][plugin-rating-svg]][plugin-repo] | ||||||
| [![Version][plugin-version-svg]][plugin-repo] | [![Version][plugin-version-svg]][plugin-repo] | ||||||
| [![Gitter][gitter-svg]][gitter] | [![Gitter][gitter-svg]][gitter] | ||||||
| [](https://codecov.io/gh/JetBrains/ideavim) |  | ||||||
| [![Twitter][twitter-svg]][twitter] | [![Twitter][twitter-svg]][twitter] | ||||||
|  |  | ||||||
| IdeaVim is a Vim engine for JetBrains IDEs. | IdeaVim is a Vim engine for JetBrains IDEs. | ||||||
| @@ -22,10 +21,9 @@ IdeaVim is a Vim engine for JetBrains IDEs. | |||||||
|  |  | ||||||
| ##### Resources: | ##### Resources: | ||||||
|  |  | ||||||
| * [Plugin homepage](https://lp.jetbrains.com/ideavim/) | * [Plugin homepage](https://plugins.jetbrains.com/plugin/164-ideavim) | ||||||
| * [Plugin on Marketplace](https://plugins.jetbrains.com/plugin/164-ideavim) |  | ||||||
| * [Changelog](CHANGES.md) | * [Changelog](CHANGES.md) | ||||||
| * [Continuous integration builds](https://ideavim.teamcity.com/) | * [Continuous integration builds](https://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1) | ||||||
|  |  | ||||||
| #### Compatibility | #### Compatibility | ||||||
|  |  | ||||||
| @@ -54,7 +52,7 @@ Would you like to try new features and fixes? Join the Early Access Program and | |||||||
| receive EAP builds as updates!   | receive EAP builds as updates!   | ||||||
|  |  | ||||||
| 1. Click the  IdeaVim icon <img src="src/main/resources/META-INF/pluginIcon_noBorders.svg" width="16" height="16" alt="icon"/> | 1. Click the  IdeaVim icon <img src="src/main/resources/META-INF/pluginIcon_noBorders.svg" width="16" height="16" alt="icon"/> | ||||||
| in the status bar  | `Early Access Program` | `Subscribe to EAP` | in the status bar  | `Early Access Program` | `Subscibe to EAP` | ||||||
|  |  | ||||||
|  |  | ||||||
| Or subscribe to EAP updates manually: | Or subscribe to EAP updates manually: | ||||||
| @@ -90,7 +88,7 @@ Here are some examples of supported vim features and commands: | |||||||
| * Vim web help | * Vim web help | ||||||
| * `~/.ideavimrc` configuration file | * `~/.ideavimrc` configuration file | ||||||
|  |  | ||||||
| [IdeaVim plugins](https://github.com/JetBrains/ideavim/wiki/IdeaVim-Plugins): | [IdeaVim plugins](https://github.com/JetBrains/ideavim/wiki/Emulated-plugins): | ||||||
|  |  | ||||||
| * vim-easymotion | * vim-easymotion | ||||||
| * NERDTree | * NERDTree | ||||||
| @@ -104,8 +102,7 @@ Here are some examples of supported vim features and commands: | |||||||
| * vim-highlightedyank | * vim-highlightedyank | ||||||
| * vim-paragraph-motion | * vim-paragraph-motion | ||||||
| * vim-indent-object | * vim-indent-object | ||||||
| * match.it   | * match.it | ||||||
| etc |  | ||||||
|  |  | ||||||
| See also: | See also: | ||||||
|  |  | ||||||
| @@ -204,7 +201,7 @@ Put your settings to `$XDG_CONFIG_HOME/ideavim/ideavimrc` file. | |||||||
| IdeaVim Plugins | IdeaVim Plugins | ||||||
| -------------------- | -------------------- | ||||||
|  |  | ||||||
| See [doc/IdeaVim Plugins.md](https://github.com/JetBrains/ideavim/wiki/IdeaVim-Plugins) | See [doc/emulated-plugins.md](https://github.com/JetBrains/ideavim/wiki/Emulated-plugins) | ||||||
|  |  | ||||||
| Executing IDE Actions | Executing IDE Actions | ||||||
| --------------------- | --------------------- | ||||||
| @@ -213,22 +210,22 @@ IdeaVim adds various commands for listing and executing arbitrary IDE actions as | |||||||
| Ex commands or via `:map` command mappings: | Ex commands or via `:map` command mappings: | ||||||
|  |  | ||||||
| ### Executing actions: | ### Executing actions: | ||||||
|  | * `:action {action_id}` | ||||||
|  |     * Execute an action by `{action_id}`. Works from Ex command line. | ||||||
|  |     * Please don't use `:action` in mappings. Use `<Action>` instead. | ||||||
| * `<Action>({action_id})` | * `<Action>({action_id})` | ||||||
|     * For the mappings you can use a special `<Action>` keyword. Don't forget the parentheses. |     * For the mappings you can use a special `<Action>` keyword. Don't forget the parentheses. | ||||||
|     * E.g. `map gh <Action>(ShowErrorDescription)`  <- execute hover on `gh`. |     * E.g. `map gh <Action>(ShowErrorDescription)`  <- execute hover on `gh`. | ||||||
|     * :warning: Mappings to `<Action>` don't work with `noremap`.  |     * :warning: Mappings to `<Action>` don't work with `noremap`.  | ||||||
|       If you know the case when it's needed, please [let us know](https://github.com/JetBrains/ideavim#contact-maintainers). |       If you know the case when it's needed, please [let us know](https://github.com/JetBrains/ideavim#contact-maintainers). | ||||||
| * `:action {action_id}` |  | ||||||
|     * Execute an action by `{action_id}`. Works from Ex command line. |  | ||||||
|     * Please don't use `:action` in mappings. Use `<Action>` instead. |  | ||||||
|  |  | ||||||
| ### Finding action IDs: | ### Finding action ids: | ||||||
|  |  | ||||||
| * IJ provides `IdeaVim: track action IDs` command to show the id of the executed actions. | * IJ provides `IdeaVim: track action Ids` command to show the id of the executed actions. | ||||||
|   This command can be found in "Search everywhere" (double `shift`). |   This command can be found in "Search everywhere" (double `shift`). | ||||||
|  |  | ||||||
|     <details> |     <details> | ||||||
|         <summary><strong>"Track action IDs" Details</strong> (click to see)</summary> |         <summary><strong>"Track action Ids" Details</strong> (click to see)</summary> | ||||||
|         <picture> |         <picture> | ||||||
|             <source media="(prefers-color-scheme: dark)" srcset="assets/readme/track_action_dark.gif"> |             <source media="(prefers-color-scheme: dark)" srcset="assets/readme/track_action_dark.gif"> | ||||||
|             <img src="assets/readme/track_action_light.gif" alt="track action ids"/> |             <img src="assets/readme/track_action_light.gif" alt="track action ids"/> | ||||||
| @@ -255,7 +252,8 @@ Ex commands or via `:map` command mappings: | |||||||
| ##### Some popular actions: | ##### Some popular actions: | ||||||
|  |  | ||||||
| ``` | ``` | ||||||
| ShowHoverInfo - Quick Documentation and Error Description | QuickJavaDoc - Quick Documentation (not only for java, all languages) | ||||||
|  | ShowErrorDescription - Show description of the error under the caret (cursor hovering) | ||||||
| QuickImplementations - Quick Definition | QuickImplementations - Quick Definition | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| @@ -324,7 +322,7 @@ IdeaVim tips and tricks | |||||||
| - Use the power of IJ and Vim: | - Use the power of IJ and Vim: | ||||||
|     - `set ideajoin` to enable join via the IDE. See the [examples](https://jb.gg/f9zji9). |     - `set ideajoin` to enable join via the IDE. See the [examples](https://jb.gg/f9zji9). | ||||||
|     - Make sure `ideaput` is enabled for `clipboard` to enable native IJ insertion in Vim. |     - Make sure `ideaput` is enabled for `clipboard` to enable native IJ insertion in Vim. | ||||||
|     - Sync IJ bookmarks and IdeaVim global marks: `set ideamarks` (works for marks with capital letters only) |     - Sync IJ bookmarks and Vim marks: `set ideamarks` | ||||||
|     - Check out more [ex commands](https://github.com/JetBrains/ideavim/wiki/%22set%22-commands). |     - Check out more [ex commands](https://github.com/JetBrains/ideavim/wiki/%22set%22-commands). | ||||||
|  |  | ||||||
| - Use your vim settings with IdeaVim. Put `source ~/.vimrc` in `~/.ideavimrc`. | - Use your vim settings with IdeaVim. Put `source ~/.vimrc` in `~/.ideavimrc`. | ||||||
| @@ -352,12 +350,9 @@ is the source of this knowledge. | |||||||
| [Here](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/normal.c#L5365) | [Here](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/normal.c#L5365) | ||||||
| is the full list of synonyms. | is the full list of synonyms. | ||||||
|  |  | ||||||
| - You can read a [post](https://github.com/JetBrains/ideavim/wiki/how-many-modes-does-vim-have) about how modes work in Vim and IdeaVim. |  | ||||||
|  |  | ||||||
| - Have you ever used `U` after `dd`? [Don't even try](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ops.c#L874). | - Have you ever used `U` after `dd`? [Don't even try](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ops.c#L874). | ||||||
|  |  | ||||||
| - A lot of variables that refer to visual mode start with two uppercase letters, e.g. `VIsual_active`. [Some examples](https://github.com/vim/vim/blob/master/src/normal.c#L17). | - A lot of variables that refers to visual mode start with two uppercase letters, e.g. `VIsual_active`. [Some examples](https://github.com/vim/vim/blob/master/src/normal.c#L17). | ||||||
|   As mentioned [here](https://vi.stackexchange.com/a/42885/12441), this was done this way to avoid the clash with X11. |  | ||||||
|  |  | ||||||
| - Other [strange things](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ex_docmd.c#L1845) from vi: | - Other [strange things](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ex_docmd.c#L1845) from vi: | ||||||
|     * ":3"       jumps to line 3 |     * ":3"       jumps to line 3 | ||||||
| @@ -366,21 +361,11 @@ is the full list of synonyms. | |||||||
|  |  | ||||||
| - Vim script doesn't skip white space before comma. `F(a ,b)` => E475. | - Vim script doesn't skip white space before comma. `F(a ,b)` => E475. | ||||||
|  |  | ||||||
| - Fancy constants for [undolevels](https://vimhelp.org/options.txt.html#%27undolevels%27): |  | ||||||
|   > The local value is set to -123456 when the global value is to be used. |  | ||||||
|  |  | ||||||
| - Vi (not Vim) is a POSIX standard, and [has a spec](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html)! Vim is mostly POSIX compliant when Vi compatibility is selected with the `'compatible'` option, but there are still some differences that can be changed with `'copoptions'`. The spec is interesting because it documents the behaviour of different commands in a stricter style than the user documentation, describing the current line and column after the command, for example. [More details can be found by reading `:help posix`](https://vimhelp.org/vi_diff.txt.html#posix). |  | ||||||
|  |  | ||||||
| License | License | ||||||
| ------- | ------- | ||||||
|  |  | ||||||
| IdeaVim is licensed under the MIT license. | IdeaVim is licensed under the terms of the GNU Public License version 2 | ||||||
|  | or any later version. | ||||||
| Third-party components and licenses are listed in [ThirdPartyLicenses.md](ThirdPartyLicenses.md). |  | ||||||
|  |  | ||||||
| All releases before 2.0.0 were licensed under terms of GPL-2.0 or later. |  | ||||||
| The last commit before switch to MIT is 05852b07c6090ad40fde7d3cafe0b074604f7ac5. |  | ||||||
| You can read more about the license change here: https://github.com/JetBrains/ideavim/discussions/543 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <!-- Badges --> | <!-- Badges --> | ||||||
|   | |||||||
| @@ -1,90 +0,0 @@ | |||||||
| IdeaVim project is licensed under MIT license except the following parts of it: |  | ||||||
|  |  | ||||||
| * File [ScrollViewHelper.kt](com/maddyhome/idea/vim/helper/ScrollViewHelper.kt) is licensed under Vim License. |  | ||||||
| * File [Tutor.kt](src/main/java/com/maddyhome/idea/vim/ui/Tutor.kt) is licensed under Vim License. |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| VIM LICENSE |  | ||||||
|  |  | ||||||
| I)  There are no restrictions on distributing unmodified copies of Vim except |  | ||||||
|     that they must include this license text.  You can also distribute |  | ||||||
|     unmodified parts of Vim, likewise unrestricted except that they must |  | ||||||
|     include this license text.  You are also allowed to include executables |  | ||||||
|     that you made from the unmodified Vim sources, plus your own usage |  | ||||||
|     examples and Vim scripts. |  | ||||||
|  |  | ||||||
| II) It is allowed to distribute a modified (or extended) version of Vim, |  | ||||||
|     including executables and/or source code, when the following four |  | ||||||
|     conditions are met: |  | ||||||
|     1) This license text must be included unmodified. |  | ||||||
|     2) The modified Vim must be distributed in one of the following five ways: |  | ||||||
|        a) If you make changes to Vim yourself, you must clearly describe in |  | ||||||
|           the distribution how to contact you.  When the maintainer asks you |  | ||||||
|           (in any way) for a copy of the modified Vim you distributed, you |  | ||||||
|           must make your changes, including source code, available to the |  | ||||||
|           maintainer without fee.  The maintainer reserves the right to |  | ||||||
|           include your changes in the official version of Vim.  What the |  | ||||||
|           maintainer will do with your changes and under what license they |  | ||||||
|           will be distributed is negotiable.  If there has been no negotiation |  | ||||||
|           then this license, or a later version, also applies to your changes. |  | ||||||
|           The current maintainers are listed here: https://github.com/orgs/vim/people. |  | ||||||
|           If this changes it will be announced in appropriate places (most likely |  | ||||||
|           vim.sf.net, www.vim.org and/or comp.editors). When it is completely |  | ||||||
|           impossible to contact the maintainer, the obligation to send him |  | ||||||
|           your changes ceases.  Once the maintainer has confirmed that he has |  | ||||||
|           received your changes they will not have to be sent again. |  | ||||||
|        b) If you have received a modified Vim that was distributed as |  | ||||||
|           mentioned under a) you are allowed to further distribute it |  | ||||||
|           unmodified, as mentioned at I).  If you make additional changes the |  | ||||||
|           text under a) applies to those changes. |  | ||||||
|        c) Provide all the changes, including source code, with every copy of |  | ||||||
|           the modified Vim you distribute.  This may be done in the form of a |  | ||||||
|           context diff.  You can choose what license to use for new code you |  | ||||||
|           add.  The changes and their license must not restrict others from |  | ||||||
|           making their own changes to the official version of Vim. |  | ||||||
|        d) When you have a modified Vim which includes changes as mentioned |  | ||||||
|           under c), you can distribute it without the source code for the |  | ||||||
|           changes if the following three conditions are met: |  | ||||||
|           - The license that applies to the changes permits you to distribute |  | ||||||
|             the changes to the Vim maintainer without fee or restriction, and |  | ||||||
|             permits the Vim maintainer to include the changes in the official |  | ||||||
|             version of Vim without fee or restriction. |  | ||||||
|           - You keep the changes for at least three years after last |  | ||||||
|             distributing the corresponding modified Vim.  When the maintainer |  | ||||||
|             or someone who you distributed the modified Vim to asks you (in |  | ||||||
|             any way) for the changes within this period, you must make them |  | ||||||
|             available to him. |  | ||||||
|           - You clearly describe in the distribution how to contact you.  This |  | ||||||
|             contact information must remain valid for at least three years |  | ||||||
|             after last distributing the corresponding modified Vim, or as long |  | ||||||
|             as possible. |  | ||||||
|        e) When the GNU General Public License (GPL) applies to the changes, |  | ||||||
|           you can distribute the modified Vim under the GNU GPL version 2 or |  | ||||||
|           any later version. |  | ||||||
|     3) A message must be added, at least in the output of the ":version" |  | ||||||
|        command and in the intro screen, such that the user of the modified Vim |  | ||||||
|        is able to see that it was modified.  When distributing as mentioned |  | ||||||
|        under 2)e) adding the message is only required for as far as this does |  | ||||||
|        not conflict with the license used for the changes. |  | ||||||
|     4) The contact information as required under 2)a) and 2)d) must not be |  | ||||||
|        removed or changed, except that the person himself can make |  | ||||||
|        corrections. |  | ||||||
|  |  | ||||||
| III) If you distribute a modified version of Vim, you are encouraged to use |  | ||||||
|      the Vim license for your changes and make them available to the |  | ||||||
|      maintainer, including the source code.  The preferred way to do this is |  | ||||||
|      by e-mail or by uploading the files to a server and e-mailing the URL. |  | ||||||
|      If the number of changes is small (e.g., a modified Makefile) e-mailing a |  | ||||||
|      context diff will do.  The e-mail address to be used is |  | ||||||
|      <maintainer@vim.org> |  | ||||||
|  |  | ||||||
| IV)  It is not allowed to remove this license from the distribution of the Vim |  | ||||||
|      sources, parts of it or from a modified version.  You may use this |  | ||||||
|      license for previous Vim releases instead of the license that they came |  | ||||||
|      with, at your option. |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| File [sneakIcon.png](doc/images/sneakIcon.svg), which is originally an icon of the ideavim-sneak plugin, |  | ||||||
| is merged icons of IdeaVim plugin and a random sneaker by FreePic from flaticon.com. |  | ||||||
							
								
								
									
										42
									
								
								annotation-processors/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								annotation-processors/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,42 +0,0 @@ | |||||||
| .gradle |  | ||||||
| build/ |  | ||||||
| !gradle/wrapper/gradle-wrapper.jar |  | ||||||
| !**/src/main/**/build/ |  | ||||||
| !**/src/test/**/build/ |  | ||||||
|  |  | ||||||
| ### IntelliJ IDEA ### |  | ||||||
| .idea/modules.xml |  | ||||||
| .idea/jarRepositories.xml |  | ||||||
| .idea/compiler.xml |  | ||||||
| .idea/libraries/ |  | ||||||
| *.iws |  | ||||||
| *.iml |  | ||||||
| *.ipr |  | ||||||
| out/ |  | ||||||
| !**/src/main/**/out/ |  | ||||||
| !**/src/test/**/out/ |  | ||||||
|  |  | ||||||
| ### Eclipse ### |  | ||||||
| .apt_generated |  | ||||||
| .classpath |  | ||||||
| .factorypath |  | ||||||
| .project |  | ||||||
| .settings |  | ||||||
| .springBeans |  | ||||||
| .sts4-cache |  | ||||||
| bin/ |  | ||||||
| !**/src/main/**/bin/ |  | ||||||
| !**/src/test/**/bin/ |  | ||||||
|  |  | ||||||
| ### NetBeans ### |  | ||||||
| /nbproject/private/ |  | ||||||
| /nbbuild/ |  | ||||||
| /dist/ |  | ||||||
| /nbdist/ |  | ||||||
| /.nb-gradle/ |  | ||||||
|  |  | ||||||
| ### VS Code ### |  | ||||||
| .vscode/ |  | ||||||
|  |  | ||||||
| ### Mac OS ### |  | ||||||
| .DS_Store |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| plugins { |  | ||||||
|   kotlin("jvm") |  | ||||||
|   kotlin("plugin.serialization") version "2.0.0" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| val kotlinxSerializationVersion: String by project |  | ||||||
|  |  | ||||||
| group = "com.intellij" |  | ||||||
| version = "SNAPSHOT" |  | ||||||
|  |  | ||||||
| repositories { |  | ||||||
|   mavenCentral() |  | ||||||
| } |  | ||||||
|  |  | ||||||
| dependencies { |  | ||||||
|   compileOnly("com.google.devtools.ksp:symbol-processing-api:2.0.0-1.0.24") |  | ||||||
|   implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:$kotlinxSerializationVersion") { |  | ||||||
|     // kotlin stdlib is provided by IJ, so there is no need to include it into the distribution |  | ||||||
|     exclude("org.jetbrains.kotlin", "kotlin-stdlib") |  | ||||||
|     exclude("org.jetbrains.kotlin", "kotlin-stdlib-common") |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,55 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.annotations |  | ||||||
|  |  | ||||||
| // TODO support numpad keys parsing, see :keycodes |  | ||||||
| /** |  | ||||||
|  * It's not necessary a Vim command |  | ||||||
|  * This annotation may be used for: |  | ||||||
|  * - commands |  | ||||||
|  * - motions |  | ||||||
|  */ |  | ||||||
| @Target(AnnotationTarget.CLASS) |  | ||||||
| @Retention(AnnotationRetention.SOURCE) |  | ||||||
| annotation class CommandOrMotion(val keys: Array<String>, vararg val modes: Mode) |  | ||||||
|  |  | ||||||
| annotation class TextObject(val keys: String) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| enum class Mode(val abbrev: Char) { |  | ||||||
|   /** |  | ||||||
|    * Indicates this key mapping applies to Normal mode |  | ||||||
|    */ |  | ||||||
|   NORMAL('N'), |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Indicates this key mapping applies to Visual mode |  | ||||||
|    */ |  | ||||||
|   VISUAL('X'), |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Indicates this key mapping applies to Select mode |  | ||||||
|    */ |  | ||||||
|   SELECT('S'), |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Indicates this key mapping applies to Operator Pending mode |  | ||||||
|    */ |  | ||||||
|   OP_PENDING('O'), |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Indicates this key mapping applies to Insert or Replace modes |  | ||||||
|    */ |  | ||||||
|   INSERT('I'), |  | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Indicates this key mapping applies to Command Line mode |  | ||||||
|    */ |  | ||||||
|   CMD_LINE('C'), |  | ||||||
| } |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.annotations |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * [command] is formatted the same way it is formatted in Vim (with optional part in square brackets). |  | ||||||
|  */ |  | ||||||
| @Target(AnnotationTarget.CLASS) |  | ||||||
| @Retention(AnnotationRetention.SOURCE) |  | ||||||
| annotation class ExCommand(val command: String) |  | ||||||
| @@ -1,13 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.annotations |  | ||||||
|  |  | ||||||
| @Target(AnnotationTarget.CLASS) |  | ||||||
| @Retention(AnnotationRetention.SOURCE) |  | ||||||
| annotation class VimscriptFunction(val name: String) |  | ||||||
| @@ -1,14 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.processors |  | ||||||
|  |  | ||||||
| import kotlinx.serialization.Serializable |  | ||||||
|  |  | ||||||
| @Serializable |  | ||||||
| data class CommandBean(val keys: String, val `class`: String, val modes: String) |  | ||||||
| @@ -1,62 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.processors |  | ||||||
|  |  | ||||||
| import com.google.devtools.ksp.KspExperimental |  | ||||||
| import com.google.devtools.ksp.getAnnotationsByType |  | ||||||
| import com.google.devtools.ksp.processing.Resolver |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessor |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorEnvironment |  | ||||||
| import com.google.devtools.ksp.symbol.KSAnnotated |  | ||||||
| import com.google.devtools.ksp.symbol.KSClassDeclaration |  | ||||||
| import com.google.devtools.ksp.symbol.KSFile |  | ||||||
| import com.google.devtools.ksp.symbol.KSVisitorVoid |  | ||||||
| import com.intellij.vim.annotations.CommandOrMotion |  | ||||||
| import kotlinx.serialization.encodeToString |  | ||||||
| import kotlinx.serialization.json.Json |  | ||||||
| import java.nio.file.Files |  | ||||||
| import kotlin.io.path.Path |  | ||||||
| import kotlin.io.path.writeText |  | ||||||
|  |  | ||||||
| class CommandOrMotionProcessor(private val environment: SymbolProcessorEnvironment): SymbolProcessor { |  | ||||||
|   private val visitor = CommandOrMotionVisitor() |  | ||||||
|   private val commands = mutableListOf<CommandBean>() |  | ||||||
|  |  | ||||||
|   private val json = Json { prettyPrint = true } |  | ||||||
|  |  | ||||||
|   override fun process(resolver: Resolver): List<KSAnnotated> { |  | ||||||
|     resolver.getAllFiles().forEach { it.accept(visitor, Unit) } |  | ||||||
|  |  | ||||||
|     val generatedDirPath = Path(environment.options["generated_directory"]!!) |  | ||||||
|     Files.createDirectories(generatedDirPath) |  | ||||||
|  |  | ||||||
|     val filePath = generatedDirPath.resolve(environment.options["commands_file"]!!) |  | ||||||
|     val fileContent = json.encodeToString(commands) |  | ||||||
|     filePath.writeText(fileContent) |  | ||||||
|  |  | ||||||
|     return emptyList() |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   private inner class CommandOrMotionVisitor : KSVisitorVoid() { |  | ||||||
|     @OptIn(KspExperimental::class) |  | ||||||
|     override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) { |  | ||||||
|       val commandAnnotation = classDeclaration.getAnnotationsByType(CommandOrMotion::class).firstOrNull() ?: return |  | ||||||
|       for (key in commandAnnotation.keys) { |  | ||||||
|         commands.add( |  | ||||||
|           CommandBean(key, classDeclaration.qualifiedName!!.asString(), commandAnnotation.modes.map { it.abbrev }.joinToString(separator = "")) |  | ||||||
|         ) |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     override fun visitFile(file: KSFile, data: Unit) { |  | ||||||
|       file.declarations.forEach { it.accept(this, Unit) } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,60 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.processors |  | ||||||
|  |  | ||||||
| import com.google.devtools.ksp.KspExperimental |  | ||||||
| import com.google.devtools.ksp.getAnnotationsByType |  | ||||||
| import com.google.devtools.ksp.processing.Resolver |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessor |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorEnvironment |  | ||||||
| import com.google.devtools.ksp.symbol.KSAnnotated |  | ||||||
| import com.google.devtools.ksp.symbol.KSClassDeclaration |  | ||||||
| import com.google.devtools.ksp.symbol.KSFile |  | ||||||
| import com.google.devtools.ksp.symbol.KSVisitorVoid |  | ||||||
| import com.intellij.vim.annotations.ExCommand |  | ||||||
| import kotlinx.serialization.encodeToString |  | ||||||
| import kotlinx.serialization.json.Json |  | ||||||
| import java.nio.file.Files |  | ||||||
| import kotlin.io.path.Path |  | ||||||
| import kotlin.io.path.writeText |  | ||||||
|  |  | ||||||
| class ExCommandProcessor(private val environment: SymbolProcessorEnvironment): SymbolProcessor { |  | ||||||
|   private val visitor = EXCommandVisitor() |  | ||||||
|   private val commandToClass = mutableMapOf<String, String>() |  | ||||||
|  |  | ||||||
|   private val json = Json { prettyPrint = true } |  | ||||||
|  |  | ||||||
|   override fun process(resolver: Resolver): List<KSAnnotated> { |  | ||||||
|     resolver.getAllFiles().forEach { it.accept(visitor, Unit) } |  | ||||||
|  |  | ||||||
|     val generatedDirPath = Path(environment.options["generated_directory"]!!) |  | ||||||
|     Files.createDirectories(generatedDirPath) |  | ||||||
|  |  | ||||||
|     val filePath = generatedDirPath.resolve(environment.options["ex_commands_file"]!!) |  | ||||||
|     val fileContent = json.encodeToString(commandToClass) |  | ||||||
|     filePath.writeText(fileContent) |  | ||||||
|  |  | ||||||
|     return emptyList() |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   private inner class EXCommandVisitor : KSVisitorVoid() { |  | ||||||
|     @OptIn(KspExperimental::class) |  | ||||||
|     override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) { |  | ||||||
|       val exCommandAnnotation = classDeclaration.getAnnotationsByType(ExCommand::class).firstOrNull() ?: return |  | ||||||
|       val commands = exCommandAnnotation.command.split(",") |  | ||||||
|       for (command in commands) { |  | ||||||
|         commandToClass[command] = classDeclaration.qualifiedName!!.asString() |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     override fun visitFile(file: KSFile, data: Unit) { |  | ||||||
|       file.declarations.forEach { it.accept(this, Unit) } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,60 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.processors |  | ||||||
|  |  | ||||||
| import com.google.devtools.ksp.KspExperimental |  | ||||||
| import com.google.devtools.ksp.getAnnotationsByType |  | ||||||
| import com.google.devtools.ksp.processing.Resolver |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessor |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorEnvironment |  | ||||||
| import com.google.devtools.ksp.symbol.KSAnnotated |  | ||||||
| import com.google.devtools.ksp.symbol.KSClassDeclaration |  | ||||||
| import com.google.devtools.ksp.symbol.KSFile |  | ||||||
| import com.google.devtools.ksp.symbol.KSVisitorVoid |  | ||||||
| import com.intellij.vim.annotations.VimscriptFunction |  | ||||||
| import kotlinx.serialization.encodeToString |  | ||||||
| import kotlinx.serialization.json.Json |  | ||||||
| import java.nio.file.Files |  | ||||||
| import kotlin.io.path.Path |  | ||||||
| import kotlin.io.path.writeText |  | ||||||
|  |  | ||||||
| class VimscriptFunctionProcessor(private val environment: SymbolProcessorEnvironment) : SymbolProcessor { |  | ||||||
|   private val visitor = VimscriptFunctionVisitor() |  | ||||||
|   private val nameToClass = mutableMapOf<String, String>() |  | ||||||
|  |  | ||||||
|   private val json = Json { prettyPrint = true } |  | ||||||
|  |  | ||||||
|   override fun process(resolver: Resolver): List<KSAnnotated> { |  | ||||||
|     resolver.getAllFiles().forEach { it.accept(visitor, Unit) } |  | ||||||
|  |  | ||||||
|     val generatedDirPath = Path(environment.options["generated_directory"]!!) |  | ||||||
|     Files.createDirectories(generatedDirPath) |  | ||||||
|  |  | ||||||
|     val filePath = generatedDirPath.resolve(environment.options["vimscript_functions_file"]!!) |  | ||||||
|     val fileContent = json.encodeToString(nameToClass) |  | ||||||
|     filePath.writeText(fileContent) |  | ||||||
|  |  | ||||||
|     return emptyList() |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // todo inspection that annotation is properly used on proper classes |  | ||||||
|   private inner class VimscriptFunctionVisitor : KSVisitorVoid() { |  | ||||||
|     @OptIn(KspExperimental::class) |  | ||||||
|     override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) { |  | ||||||
|       val vimscriptFunctionAnnotation = classDeclaration.getAnnotationsByType(VimscriptFunction::class).firstOrNull() ?: return |  | ||||||
|       val functionName = vimscriptFunctionAnnotation.name |  | ||||||
|       nameToClass[functionName] = classDeclaration.qualifiedName!!.asString() |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     override fun visitFile(file: KSFile, data: Unit) { |  | ||||||
|       file.declarations.forEach { it.accept(this, Unit) } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.providers |  | ||||||
|  |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessor |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorEnvironment |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorProvider |  | ||||||
| import com.intellij.vim.processors.CommandOrMotionProcessor |  | ||||||
|  |  | ||||||
| class CommandOrMotionProcessorProvider : SymbolProcessorProvider { |  | ||||||
|   override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { |  | ||||||
|     return CommandOrMotionProcessor(environment) |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.providers |  | ||||||
|  |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessor |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorEnvironment |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorProvider |  | ||||||
| import com.intellij.vim.processors.ExCommandProcessor |  | ||||||
|  |  | ||||||
| class ExCommandProcessorProvider : SymbolProcessorProvider { |  | ||||||
|   override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { |  | ||||||
|     return ExCommandProcessor(environment) |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright 2003-2023 The IdeaVim authors |  | ||||||
|  * |  | ||||||
|  * Use of this source code is governed by an MIT-style |  | ||||||
|  * license that can be found in the LICENSE.txt file or at |  | ||||||
|  * https://opensource.org/licenses/MIT. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package com.intellij.vim.providers |  | ||||||
|  |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessor |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorEnvironment |  | ||||||
| import com.google.devtools.ksp.processing.SymbolProcessorProvider |  | ||||||
| import com.intellij.vim.processors.VimscriptFunctionProcessor |  | ||||||
|  |  | ||||||
| class VimscriptFunctionProcessorProvider : SymbolProcessorProvider { |  | ||||||
|   override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { |  | ||||||
|     return VimscriptFunctionProcessor(environment) |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| com.intellij.vim.providers.CommandOrMotionProcessorProvider |  | ||||||
| com.intellij.vim.providers.ExCommandProcessorProvider |  | ||||||
| com.intellij.vim.providers.VimscriptFunctionProcessorProvider |  | ||||||
							
								
								
									
										1246
									
								
								build.gradle.kts
									
									
									
									
									
								
							
							
						
						
									
										1246
									
								
								build.gradle.kts
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								config/ktlint/baseline.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								config/ktlint/baseline.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <baseline version="1.0"> | ||||||
|  | 	<file name="src/main/java/com/maddyhome/idea/vim/listener/RiderSpecifics.kt"> | ||||||
|  | 		<error line="1" column="1" source="filename" /> | ||||||
|  | 	</file> | ||||||
|  | </baseline> | ||||||
							
								
								
									
										248
									
								
								doc/Emulated-plugins.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										248
									
								
								doc/Emulated-plugins.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,248 @@ | |||||||
|  | Emulated Vim Plugins | ||||||
|  | -------------------- | ||||||
|  |  | ||||||
|  | IdeaVim extensions emulate plugins of the original Vim. In order to use | ||||||
|  | IdeaVim extensions, you have to enable them via this command in your `~/.ideavimrc`: | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | Plug '<extension-github-reference>' | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | If you reuse your existing `.vimrc` file using `source ~/.vimrc`, IdeaVim can parse and enable plugins that are defined | ||||||
|  | using [vim-plug](https://github.com/junegunn/vim-plug) or [vundle](https://github.com/VundleVim/Vundle.vim). | ||||||
|  | No additional set commands in `~/.ideavimrc` are required.   | ||||||
|  | If you'd like to disable some plugin that's enabled in `.vimrc`, you can use `set no<extension-name>` | ||||||
|  | in `~/.ideavimrc`. E.g. `set nosurround`. | ||||||
|  |  | ||||||
|  | Available extensions: | ||||||
|  |  | ||||||
|  | ## easymotion | ||||||
|  |  | ||||||
|  | * Setup: | ||||||
|  |     * Install [IdeaVim-EasyMotion](https://plugins.jetbrains.com/plugin/13360-ideavim-easymotion/) | ||||||
|  |       and [AceJump](https://plugins.jetbrains.com/plugin/7086-acejump/) plugins. | ||||||
|  |     * `Plug 'easymotion/vim-easymotion'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/easymotion/vim-easymotion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-easymotion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set easymotion</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-easymotion](https://github.com/easymotion/vim-easymotion) | ||||||
|  | * Commands: All commands with the mappings are supported. See the [full list of supported commands](https://github.com/AlexPl292/IdeaVim-EasyMotion#supported-commands). | ||||||
|  |  | ||||||
|  | ## NERDTree | ||||||
|  | * Setup: `Plug 'preservim/nerdtree'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/preservim/nerdtree'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'nerdtree'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set NERDTree</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [NERDTree](https://github.com/preservim/nerdtree) | ||||||
|  | * Commands: [[see here|NERDTree-support]] | ||||||
|  |  | ||||||
|  | ## surround | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'tpope/vim-surround'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/tpope/vim-surround'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-surround'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=1697'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set surround</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-surround](https://github.com/tpope/vim-surround) | ||||||
|  | * Commands: `ys`, `cs`, `ds`, `S` | ||||||
|  |  | ||||||
|  | ## multiple-cursors | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'terryma/vim-multiple-cursors'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/terryma/vim-multiple-cursors'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-multiple-cursors'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set multiple-cursors</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors) | ||||||
|  | * Commands: `<A-n>`, `<A-x>`, `<A-p>`, `g<A-n>` | ||||||
|  |  | ||||||
|  | ## commentary | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'tpope/vim-commentary'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/tpope/vim-commentary'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-commentary'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=3695'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'tomtom/tcomment_vim'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'tcomment_vim'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=1173'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set commentary</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [commentary.vim](https://github.com/tpope/vim-commentary) | ||||||
|  | * Commands: `gcc`, `gc + motion`, `v_gc` | ||||||
|  | * By [Daniel Leong](https://github.com/dhleong) | ||||||
|  |  | ||||||
|  | ## ReplaceWithRegister | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'vim-scripts/ReplaceWithRegister'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/vim-scripts/ReplaceWithRegister'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'ReplaceWithRegister'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://github.com/inkarkat/vim-ReplaceWithRegister'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'inkarkat/vim-ReplaceWithRegister'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-ReplaceWithRegister'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=2703'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set ReplaceWithRegister</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [ReplaceWithRegister](https://github.com/vim-scripts/ReplaceWithRegister) | ||||||
|  | * Commands: `gr`, `grr` | ||||||
|  | * By [igrekster](https://github.com/igrekster) | ||||||
|  |  | ||||||
|  | ## argtextobj | ||||||
|  |  | ||||||
|  | * Setup: | ||||||
|  |     * `Plug 'vim-scripts/argtextobj.vim'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/vim-scripts/argtextobj.vim'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'argtextobj.vim'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=2699'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set argtextobj</code> | ||||||
|  |       </details> | ||||||
|  |     * By default, only the arguments inside parenthesis are considered. To extend the functionality | ||||||
|  |       to other types of brackets, set `g:argtextobj_pairs` variable to a comma-separated | ||||||
|  |       list of colon-separated pairs (same as VIM's `matchpairs` option), like | ||||||
|  |       `let g:argtextobj_pairs="(:),{:},<:>"`. The order of pairs matters when | ||||||
|  |       handling symbols that can also be operators: `func(x << 5, 20) >> 17`. To handle | ||||||
|  |       this syntax parenthesis, must come before angle brackets in the list. | ||||||
|  | * Emulates [argtextobj.vim](https://www.vim.org/scripts/script.php?script_id=2699) | ||||||
|  | * Additional text objects: `aa`, `ia` | ||||||
|  |  | ||||||
|  | ## exchange | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'tommcdo/vim-exchange'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/tommcdo/vim-exchange'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-exchange'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set exchange</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-exchange](https://github.com/tommcdo/vim-exchange) | ||||||
|  | * Commands: `cx`, `cxx`, `X`, `cxc` | ||||||
|  | * By [fan-tom](https://github.com/fan-tom) | ||||||
|  |  | ||||||
|  | ## textobj-entire | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'kana/vim-textobj-entire'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/kana/vim-textobj-entire'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-textobj-entire'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=2610'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set textobj-entire</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-textobj-entire](https://github.com/kana/vim-textobj-entire) | ||||||
|  | * Additional text objects: `ae`, `ie` | ||||||
|  | * By [Alexandre Grison](https://github.com/agrison) | ||||||
|  |  | ||||||
|  | ## highlightedyank | ||||||
|  |  | ||||||
|  | * Setup: | ||||||
|  |     * `Plug 'machakann/vim-highlightedyank'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/machakann/vim-highlightedyank'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-highlightedyank'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set highlightedyank</code> | ||||||
|  |       </details> | ||||||
|  |     * if you want to optimize highlight duration, assign a time in milliseconds:   | ||||||
|  |       `let g:highlightedyank_highlight_duration = "1000"`   | ||||||
|  |       A negative number makes the highlight persistent.   | ||||||
|  |       `let g:highlightedyank_highlight_duration = "-1"` | ||||||
|  |     * if you want to change background color of highlight you can provide the rgba of the color you want e.g.   | ||||||
|  |       `let g:highlightedyank_highlight_color = "rgba(160, 160, 160, 155)"` | ||||||
|  | * Emulates [vim-highlightedyank](https://github.com/machakann/vim-highlightedyank) | ||||||
|  | * By [KostkaBrukowa](https://github.com/KostkaBrukowa) | ||||||
|  |  | ||||||
|  | ## vim-paragraph-motion | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'dbakker/vim-paragraph-motion'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/dbakker/vim-paragraph-motion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-paragraph-motion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'https://github.com/vim-scripts/Improved-paragraph-motion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-scripts/Improved-paragraph-motion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'Improved-paragraph-motion'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set vim-paragraph-motion</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-paragraph-motion](https://github.com/dbakker/vim-paragraph-motion) | ||||||
|  |  | ||||||
|  | ## vim-indent-object | ||||||
|  |  | ||||||
|  | * Setup: `Plug 'michaeljsmith/vim-indent-object'` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'https://github.com/michaeljsmith/vim-indent-object'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'vim-indent-object'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set textobj-indent</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object) | ||||||
|  | * Additional text objects: `ai`, `ii`, `aI` | ||||||
|  | * By [Shrikant Sharat Kandula](https://github.com/sharat87) | ||||||
|  |  | ||||||
|  | ## matchit.vim | ||||||
|  |  | ||||||
|  | * Setup: `packadd matchit` | ||||||
|  |     * <details> | ||||||
|  |       <summary>Alternative vim-plug / vundle syntax</summary> | ||||||
|  |       <code>Plug 'vim-matchit'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>Plug 'chrisbra/matchit'</code> | ||||||
|  |       <br/> | ||||||
|  |       <code>set matchit</code> | ||||||
|  |       </details> | ||||||
|  | * Emulates [matchit.vim](https://github.com/chrisbra/matchit) | ||||||
|  | * Currently works for HTML/XML and ruby | ||||||
|  | * By [Martin Yzeiri](https://github.com/myzeiri) | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| Welcome to the IdeaVim wiki! | Welcome to the IdeaVim wiki! | ||||||
|  |  | ||||||
| - List of IdeaVim plugins: [plugins](IdeaVim%20Plugins.md) | - List of emulated plugins: [[plugins|Emulated-plugins]] | ||||||
| - Examples of `ideajoin` option (also known as "smart join"): ["ideajoin" examples](ideajoin-examples.md) | - Examples of `ideajoin` option (also known as "smart join"): [["ideajoin" examples|"ideajoin"-examples]] | ||||||
| - List of "set" commands: ["set" commands](set-commands.md) | - List of "set" commands: [["set" commands|"set"-commands]] | ||||||
| - Docs about "select" mode in vim: [select mode](Select-mode.md) | - Docs about "select" mode in vim: [[select mode|Select-mode]] | ||||||
|   | |||||||
| @@ -1,437 +0,0 @@ | |||||||
| IdeaVim Plugins |  | ||||||
| -------------------- |  | ||||||
|  |  | ||||||
| IdeaVim plugins work like the original Vim plugins. If you want to turn any of them on, you have to enable it via this command in your `~/.ideavimrc`: |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| Plug '<plugin-github-reference>' |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| If you reuse your existing `.vimrc` file using `source ~/.vimrc`, IdeaVim can parse and enable plugins that are defined |  | ||||||
| using [vim-plug](https://github.com/junegunn/vim-plug) or [vundle](https://github.com/VundleVim/Vundle.vim). |  | ||||||
| No additional set commands in `~/.ideavimrc` are required.   |  | ||||||
| If you'd like to disable some plugin that's enabled in `.vimrc`, you can use `set no<extension-name>` |  | ||||||
| in `~/.ideavimrc`. E.g. `set nosurround`. |  | ||||||
|  |  | ||||||
| Available plugins: |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>easymotion</h2></summary> |  | ||||||
|     |  | ||||||
| Original plugin: [vim-easymotion](https://github.com/easymotion/vim-easymotion). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Install [IdeaVim-EasyMotion](https://plugins.jetbrains.com/plugin/13360-ideavim-easymotion/) |  | ||||||
|       and [AceJump](https://plugins.jetbrains.com/plugin/7086-acejump/) plugins. |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'easymotion/vim-easymotion'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'easymotion/vim-easymotion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/easymotion/vim-easymotion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-easymotion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set easymotion</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| All commands with the mappings are supported. See the [full list of supported commands](https://github.com/AlexPl292/IdeaVim-EasyMotion#supported-commands). |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>sneak</h2></summary> |  | ||||||
|  |  | ||||||
| <img src="images/sneakIcon.svg" width="80" height="80" alt="icon"/>   |  | ||||||
|  |  | ||||||
| By [Mikhail Levchenko](https://github.com/Mishkun)   |  | ||||||
| Original repository with the plugin: https://github.com/Mishkun/ideavim-sneak   |  | ||||||
| Original plugin: [vim-sneak](https://github.com/justinmk/vim-sneak). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'justinmk/vim-sneak'` |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|  |  | ||||||
| * Type `s` and two chars to start sneaking in forward direction |  | ||||||
| * Type `S` and two chars to start sneaking in backward direction |  | ||||||
| * Type `;` or `,` to proceed with sneaking just as if you were using `f` or `t` commands |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>NERDTree</h2></summary> |  | ||||||
|     |  | ||||||
| Original plugin: [NERDTree](https://github.com/preservim/nerdtree). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'preservim/nerdtree'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'preservim/nerdtree'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/preservim/nerdtree'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'nerdtree'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set NERDTree</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| [See here](NERDTree-support.md). |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>surround</h2></summary> |  | ||||||
|     |  | ||||||
| Original plugin: [vim-surround](https://github.com/tpope/vim-surround). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'tpope/vim-surround'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'tpope/vim-surround'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=1697'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-surround'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set surround</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/tpope/vim-surround/blob/master/doc/surround.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>multiple-cursors</h2></summary> |  | ||||||
|     |  | ||||||
| Original plugin: [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'terryma/vim-multiple-cursors'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'terryma/vim-multiple-cursors'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/terryma/vim-multiple-cursors'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-multiple-cursors'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set multiple-cursors</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|  |  | ||||||
| At the moment, the default key binds for this plugin do not get mapped correctly in IdeaVim (see [VIM-2178](https://youtrack.jetbrains.com/issue/VIM-2178)). To enable the default key binds, add the following to your `.ideavimrc` file... |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| " Remap multiple-cursors shortcuts to match terryma/vim-multiple-cursors |  | ||||||
| nmap <C-n> <Plug>NextWholeOccurrence |  | ||||||
| xmap <C-n> <Plug>NextWholeOccurrence |  | ||||||
| nmap g<C-n> <Plug>NextOccurrence |  | ||||||
| xmap g<C-n> <Plug>NextOccurrence |  | ||||||
| xmap <C-x> <Plug>SkipOccurrence |  | ||||||
| xmap <C-p> <Plug>RemoveOccurrence |  | ||||||
|  |  | ||||||
| " Note that the default <A-n> and g<A-n> shortcuts don't work on Mac due to dead keys. |  | ||||||
| " <A-n> is used to enter accented text e.g. ñ |  | ||||||
| " Feel free to pick your own mappings that are not affected. I like to use <leader> |  | ||||||
| nmap <leader><C-n> <Plug>AllWholeOccurrences |  | ||||||
| xmap <leader><C-n> <Plug>AllWholeOccurrences |  | ||||||
| nmap <leader>g<C-n> <Plug>AllOccurrences |  | ||||||
| xmap <leader>g<C-n> <Plug>AllOccurrences |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>commentary</h2></summary> |  | ||||||
|  |  | ||||||
| By [Daniel Leong](https://github.com/dhleong)   |  | ||||||
| Original plugin: [commentary.vim](https://github.com/tpope/vim-commentary). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'tpope/vim-commentary'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'tpope/vim-commentary'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/tpope/vim-commentary'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-commentary'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'tcomment_vim'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set commentary</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/tpope/vim-commentary/blob/master/doc/commentary.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>ReplaceWithRegister</h2></summary> |  | ||||||
|     |  | ||||||
| By [igrekster](https://github.com/igrekster)   |  | ||||||
| Original plugin: [ReplaceWithRegister](https://github.com/vim-scripts/ReplaceWithRegister). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'vim-scripts/ReplaceWithRegister'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'vim-scripts/ReplaceWithRegister'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'ReplaceWithRegister'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/inkarkat/vim-ReplaceWithRegister'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'inkarkat/vim-ReplaceWithRegister'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-ReplaceWithRegister'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=2703'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set ReplaceWithRegister</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/vim-scripts/ReplaceWithRegister/blob/master/doc/ReplaceWithRegister.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>argtextobj</h2></summary> |  | ||||||
|  |  | ||||||
| Original plugin: [argtextobj.vim](https://www.vim.org/scripts/script.php?script_id=2699). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'vim-scripts/argtextobj.vim'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'vim-scripts/argtextobj.vim'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/vim-scripts/argtextobj.vim'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'argtextobj.vim'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=2699'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set argtextobj</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| By default, only the arguments inside parenthesis are considered. To extend the functionality |  | ||||||
|       to other types of brackets, set `g:argtextobj_pairs` variable to a comma-separated |  | ||||||
|       list of colon-separated pairs (same as VIM's `matchpairs` option), like |  | ||||||
|       `let g:argtextobj_pairs="(:),{:},<:>"`. The order of pairs matters when |  | ||||||
|       handling symbols that can also be operators: `func(x << 5, 20) >> 17`. To handle |  | ||||||
|       this syntax parenthesis, must come before angle brackets in the list. |  | ||||||
|     |  | ||||||
| https://www.vim.org/scripts/script.php?script_id=2699 |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|     |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>exchange</h2></summary> |  | ||||||
|  |  | ||||||
| By [fan-tom](https://github.com/fan-tom)   |  | ||||||
| Original plugin: [vim-exchange](https://github.com/tommcdo/vim-exchange). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'tommcdo/vim-exchange'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'tommcdo/vim-exchange'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/tommcdo/vim-exchange'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-exchange'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set exchange</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/tommcdo/vim-exchange/blob/master/doc/exchange.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|     |  | ||||||
| <details> |  | ||||||
| <summary><h2>textobj-entire</h2></summary> |  | ||||||
|  |  | ||||||
| By [Alexandre Grison](https://github.com/agrison)   |  | ||||||
| Original plugin: [vim-textobj-entire](https://github.com/kana/vim-textobj-entire). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'kana/vim-textobj-entire'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'kana/vim-textobj-entire'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-textobj-entire'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://www.vim.org/scripts/script.php?script_id=2610'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set textobj-entire</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/kana/vim-textobj-entire/blob/master/doc/textobj-entire.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|     |  | ||||||
| <details> |  | ||||||
| <summary><h2>highlightedyank</h2></summary> |  | ||||||
|  |  | ||||||
| By [KostkaBrukowa](https://github.com/KostkaBrukowa)   |  | ||||||
| Original plugin: [vim-highlightedyank](https://github.com/machakann/vim-highlightedyank). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'machakann/vim-highlightedyank'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'machakann/vim-highlightedyank'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/machakann/vim-highlightedyank'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-highlightedyank'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set highlightedyank</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| If you want to optimize highlight duration, assign a time in milliseconds:   |  | ||||||
|       `let g:highlightedyank_highlight_duration = "1000"`   |  | ||||||
|       A negative number makes the highlight persistent.   |  | ||||||
|     |  | ||||||
| If you want to change background color of highlight you can provide the rgba of the color you want e.g.   |  | ||||||
|       `let g:highlightedyank_highlight_color = "rgba(160, 160, 160, 155)"` |  | ||||||
|     |  | ||||||
| https://github.com/machakann/vim-highlightedyank/blob/master/doc/highlightedyank.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>vim-paragraph-motion</h2></summary> |  | ||||||
|  |  | ||||||
| Original plugin: [vim-paragraph-motion](https://github.com/dbakker/vim-paragraph-motion). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'dbakker/vim-paragraph-motion'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'dbakker/vim-paragraph-motion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/dbakker/vim-paragraph-motion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-paragraph-motion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/vim-scripts/Improved-paragraph-motion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-scripts/Improved-paragraph-motion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'Improved-paragraph-motion'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set vim-paragraph-motion</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/dbakker/vim-paragraph-motion#vim-paragraph-motion |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|     |  | ||||||
| <details> |  | ||||||
| <summary><h2>vim-indent-object</h2></summary> |  | ||||||
|  |  | ||||||
| By [Shrikant Sharat Kandula](https://github.com/sharat87)   |  | ||||||
| Original plugin: [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `Plug 'michaeljsmith/vim-indent-object'` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plugin 'michaeljsmith/vim-indent-object'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'https://github.com/michaeljsmith/vim-indent-object'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'vim-indent-object'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set textobj-indent</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/michaeljsmith/vim-indent-object/blob/master/doc/indent-object.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|     |  | ||||||
|     |  | ||||||
| <details> |  | ||||||
| <summary><h2>matchit.vim</h2></summary> |  | ||||||
|  |  | ||||||
| By [Martin Yzeiri](https://github.com/myzeiri) |  | ||||||
| Original plugin: [matchit.vim](https://github.com/chrisbra/matchit). |  | ||||||
|     |  | ||||||
| ### Setup: |  | ||||||
| - Add the following command to `~/.ideavimrc`: `packadd matchit` |  | ||||||
|     <details> |  | ||||||
|       <summary>Alternative syntax</summary> |  | ||||||
|       <code>Plug 'vim-matchit'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>Plug 'chrisbra/matchit'</code> |  | ||||||
|       <br/> |  | ||||||
|       <code>set matchit</code> |  | ||||||
|       </details> |  | ||||||
|     |  | ||||||
| ### Instructions |  | ||||||
|     |  | ||||||
| https://github.com/adelarsq/vim-matchit/blob/master/doc/matchit.txt |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>IdeaVim-Quickscope</h2></summary> |  | ||||||
|  |  | ||||||
| Original plugin: [quick-scope](https://github.com/unblevable/quick-scope). |  | ||||||
|  |  | ||||||
| ### Setup: |  | ||||||
| - Install [IdeaVim-Quickscope](https://plugins.jetbrains.com/plugin/19417-ideavim-quickscope) plugin. |  | ||||||
| - Add the following command to `~/.ideavimrc`: `set quickscope` |  | ||||||
|  |  | ||||||
| ### Instructions |  | ||||||
|  |  | ||||||
| https://plugins.jetbrains.com/plugin/19417-ideavim-quickscope |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
|  |  | ||||||
|  |  | ||||||
| <details> |  | ||||||
| <summary><h2>Which-Key</h2></summary> |  | ||||||
|  |  | ||||||
| Original plugin: [vim-which-key](https://github.com/liuchengxu/vim-which-key). |  | ||||||
|  |  | ||||||
| ### Setup: |  | ||||||
| - Install [Which-Key](https://plugins.jetbrains.com/plugin/15976-which-key) plugin. |  | ||||||
| - Add the following command to `~/.ideavimrc`: `set which-key` |  | ||||||
|  |  | ||||||
| ### Instructions |  | ||||||
|  |  | ||||||
| https://github.com/TheBlob42/idea-which-key?tab=readme-ov-file#installation |  | ||||||
|  |  | ||||||
| </details> |  | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| # NERDTree | # NERDTree | ||||||
|  |  | ||||||
| IdeaVim supports the NERDTree plugin. Update your `~/.ideavimrc` to turn it on: | IdeaVim supports emulation of the NERDTree plugin. Update your `~/.ideavimrc` to turn it on: | ||||||
| ```vim | ```vim | ||||||
| Plug 'preservim/nerdtree' | Plug 'preservim/nerdtree` | ||||||
| ``` | ``` | ||||||
| or | or | ||||||
| ```vim | ```vim | ||||||
| @@ -15,7 +15,7 @@ Use `set noNERDTree` to disable this extension. | |||||||
|  |  | ||||||
| ```vim | ```vim | ||||||
| set NERDTree | set NERDTree | ||||||
| Plug 'preservim/nerdtree' | Plug 'preservim/nerdtree` | ||||||
| Plug 'https://github.com/preservim/nerdtree' | Plug 'https://github.com/preservim/nerdtree' | ||||||
| Plug 'https://github.com/scrooloose/nerdtree' | Plug 'https://github.com/scrooloose/nerdtree' | ||||||
| Plug 'scrooloose/nerdtree' | Plug 'scrooloose/nerdtree' | ||||||
| @@ -27,7 +27,7 @@ Plug 'nerdtree' | |||||||
| ### Preview | ### Preview | ||||||
|  |  | ||||||
| <details> | <details> | ||||||
| <summary>Click for the preview</summary> | <summary>Click to the the preview</summary> | ||||||
| <img src="images/nerdtree.gif" alt="NERDTree example"/> | <img src="images/nerdtree.gif" alt="NERDTree example"/> | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -40,33 +40,30 @@ Plug 'nerdtree' | |||||||
| - `:NERDTreeFind` | - `:NERDTreeFind` | ||||||
| - `:NERDTreeRefreshRoot` | - `:NERDTreeRefreshRoot` | ||||||
|  |  | ||||||
| | Key     | Description                                            | Map Setting                    | | | Key     |  Description                                            |  Map Setting                   | | ||||||
| |---------|--------------------------------------------------------|--------------------------------| | |---------|---------------------------------------------------------|--------------------------------| | ||||||
| | `o`     | Open files, directories and bookmarks                  | `g:NERDTreeMapActivateNode`    | | | `o`     |  Open files, directories and bookmarks                  | `g:NERDTreeMapActivateNode`    | | ||||||
| | `go`    | Open selected file, but leave cursor in the NERDTree   | `g:NERDTreeMapPreview`         | | | `go`    |  Open selected file, but leave cursor in the NERDTree   | `g:NERDTreeMapPreview`         | | ||||||
| | `t`     | Open selected node/bookmark in a new tab               | `g:NERDTreeMapOpenInTab`       | | | `t`     |  Open selected node/bookmark in a new tab               | `g:NERDTreeMapOpenInTab`       | | ||||||
| | `T`     | Same as 't' but keep the focus on the current tab      | `g:NERDTreeMapOpenInTabSilent` | | | `T`     |  Same as 't' but keep the focus on the current tab      | `g:NERDTreeMapOpenInTabSilent` | | ||||||
| | `i`     | Open selected file in a split window                   | `g:NERDTreeMapOpenSplit`       | | | `i`     |  Open selected file in a split window                   | `g:NERDTreeMapOpenSplit`       | | ||||||
| | `gi`    | Same as i, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewSplit`    | | | `gi`    |  Same as i, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewSplit`    | | ||||||
| | `s`     | Open selected file in a new vsplit                     | `g:NERDTreeMapOpenVSplit`      | | | `s`     |  Open selected file in a new vsplit                     | `g:NERDTreeMapOpenVSplit`      | | ||||||
| | `gs`    | Same as s, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewVSplit`   | | | `gs`    |  Same as s, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewVSplit`   | | ||||||
| | `O`     | Recursively open the selected directory                | `g:NERDTreeMapOpenRecursively` | | | `O`     |  Recursively open the selected directory                | `g:NERDTreeMapOpenRecursively` | | ||||||
| | `x`     | Close the current nodes parent                         | `g:NERDTreeMapCloseDir`        | | | `x`     |  Close the current nodes parent                         | `g:NERDTreeMapCloseDir`        | | ||||||
| | `X`     | Recursively close all children of the current node     | `g:NERDTreeMapCloseChildren`   | | | `X`     |  Recursively close all children of the current node     | `g:NERDTreeMapCloseChildren`   | | ||||||
| | `P`     | Jump to the root node                                  | `g:NERDTreeMapJumpRoot`        | | | `P`     |  Jump to the root node                                  | `g:NERDTreeMapJumpRoot`        | | ||||||
| | `p`     | Jump to current nodes parent                           | `g:NERDTreeMapJumpParent`      |  | | `p`     |  Jump to current nodes parent                           | `g:NERDTreeMapJumpParent`      |  | ||||||
| | `K`     | Jump up inside directories at the current tree depth   | `g:NERDTreeMapJumpFirstChild`  | | | `K`     |  Jump up inside directories at the current tree depth   | `g:NERDTreeMapJumpFirstChild`  | | ||||||
| | `J`     | Jump down inside directories at the current tree depth | `g:NERDTreeMapJumpLastChild`   | | | `J`     |  Jump down inside directories at the current tree depth | `g:NERDTreeMapJumpLastChild`   | | ||||||
| | `<C-J>` | Jump down to next sibling of the current directory     | `g:NERDTreeMapJumpNextSibling` | | | `<C-J>` |  Jump down to next sibling of the current directory     | `g:NERDTreeMapJumpNextSibling` | | ||||||
| | `<C-K>` | Jump up to previous sibling of the current directory   | `g:NERDTreeMapJumpPrevSibling` | | | `<C-K>` |  Jump up to previous sibling of the current directory   | `g:NERDTreeMapJumpPrevSibling` | | ||||||
| | `r`     | Recursively refresh the current directory              | `g:NERDTreeMapRefresh`         | | | `r`     |  Recursively refresh the current directory              | `g:NERDTreeMapRefresh`         | | ||||||
| | `R`     | Recursively refresh the current root                   | `g:NERDTreeMapRefreshRoot`     | | | `R`     |  Recursively refresh the current root                   | `g:NERDTreeMapRefreshRoot`     | | ||||||
| | `m`     | Display the NERDTree menu                              | `g:NERDTreeMapMenu`            | | | `m`     |  Display the NERDTree menu                              | `g:NERDTreeMapMenu`            | | ||||||
| | `q`     | Close the NERDTree window                              | `g:NERDTreeMapQuit`            | | | `q`     |  Close the NERDTree window                              | `g:NERDTreeMapQuit`            | | ||||||
| | `A`     | Zoom (maximize/minimize) the NERDTree window           | `g:NERDTreeMapToggleZoom`      | | | `A`     |  Zoom (maximize/minimize) the NERDTree window           | `g:NERDTreeMapToggleZoom`      | | ||||||
| | `d`     | Delete file or directory                               | `g:NERDTreeMapDelete`          | |  | ||||||
| | `n`     | Create File                                            | `g:NERDTreeMapNewFile`         | |  | ||||||
| | `N`     | Create Directory                                       | `g:NERDTreeMapNewDir`          | |  | ||||||
|  |  | ||||||
| ### Troubleshooting | ### Troubleshooting | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,11 +3,6 @@ Put `set ideajoin` to your `~/.ideavimrc` to enable this functionality. | |||||||
|  |  | ||||||
| Now, you can press `J` (`shift+j`) on a line or a selected block of text to join the lines together. | Now, you can press `J` (`shift+j`) on a line or a selected block of text to join the lines together. | ||||||
|  |  | ||||||
| :warning: This feature is language-specific. This means that the IDE should implement this feature for a particular |  | ||||||
| language in order for the IDE to work as described below. If any of the examples provided below don't match your case,  |  | ||||||
| please file an issue in the project related to your IDE: https://youtrack.jetbrains.com/.   |  | ||||||
| Here is a list of known requests: https://youtrack.jetbrains.com/issues?q=links:VIM-3214. |  | ||||||
|  |  | ||||||
| * Automatic join concatenated lines: | * Automatic join concatenated lines: | ||||||
|  |  | ||||||
| ``` | ``` | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 46 KiB | 
| @@ -1,28 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||||
| <svg viewBox="386.498 234 32 32" xmlns="http://www.w3.org/2000/svg"> |  | ||||||
|   <defs> |  | ||||||
|     <linearGradient id="ideavim_plugin-a" x1="-6.748%" x2="47.286%" y1="33.61%" y2="85.907%"> |  | ||||||
|       <stop offset="0" stop-color="#3BEA62"/> |  | ||||||
|       <stop offset="1" stop-color="#087CFA"/> |  | ||||||
|     </linearGradient> |  | ||||||
|   </defs> |  | ||||||
|   <g transform="matrix(1.238978, 0.90017, -0.90017, 1.238978, 131.776901, -422.953003)" style=""> |  | ||||||
|     <path d="M 399.962 247.648 C 399.207 246.894 399.147 246.318 399.692 245.453 C 400.237 244.588 401.955 245.886 401.955 245.886 L 401.955 250.737" style="fill: rgb(248, 245, 231);"/> |  | ||||||
|     <path d="M 413.846 253.602 C 413.846 255.077 411.827 256.134 409.392 256.134 L 396.381 256.134 C 395.211 256.134 394.232 256.003 393.433 255.817 C 391.496 255.367 390.613 254.596 390.613 254.596 L 391.478 252.513 L 393.607 252.617 Z M 413.846 253.602" fill="#cce6f6" style=""/> |  | ||||||
|     <path d="M 413.846 253.602 C 413.846 253.602 411.475 254.468 408.27 254.468 C 405.94 254.468 398.116 253.433 394.023 252.869 C 392.488 252.658 391.478 252.512 391.478 252.512 C 390.864 251.662 392.078 248.741 392.758 247.263 C 393.118 246.484 393.85 245.929 394.703 245.83 C 394.782 245.82 394.861 245.815 394.939 245.815 C 395.369 245.815 395.645 246.532 396.059 247.225 C 396.446 247.877 396.955 248.507 397.823 248.507 C 399.617 248.507 401.955 245.886 401.955 245.886 C 406.544 249.03 410.097 250.43 410.097 250.43 C 410.097 250.43 413.061 250.446 413.782 251.167 C 414.503 251.888 414.422 253.218 413.846 253.602 Z M 413.846 253.602" style="fill: rgb(8, 124, 250);"/> |  | ||||||
|     <path d="M 394.023 252.869 L 393.433 255.817 C 391.496 255.367 390.613 254.596 390.613 254.596 L 391.478 252.513 L 393.607 252.617 Z M 394.023 252.869" fill="#9dcae0" style=""/> |  | ||||||
|     <path d="M 396.059 247.225 C 395.073 245.986 393.193 250.255 394.023 252.869 C 392.488 252.658 391.478 252.513 391.478 252.513 C 390.864 251.662 392.078 248.741 392.758 247.263 C 393.118 246.484 393.85 245.929 394.703 245.83 C 394.782 245.82 394.861 245.815 394.939 245.815 C 395.369 245.815 395.645 246.532 396.059 247.225 Z M 396.059 247.225" style="fill: rgb(14, 112, 142);"/> |  | ||||||
|     <path d="M 403.527 246.924 L 399.174 251.768 C 397.7 250.892 395.578 250.174 394.016 249.717 C 392.843 249.372 391.985 249.174 391.959 249.168 C 392.108 248.769 392.268 248.379 392.421 248.022 L 394.341 248.65 L 394.884 248.827 C 395.509 249.031 396.192 248.95 396.753 248.608 L 397.153 248.363 C 397.35 248.454 397.572 248.507 397.823 248.507 C 399.617 248.507 401.955 245.886 401.955 245.886 C 402.494 246.256 403.02 246.601 403.527 246.924 Z M 403.527 246.924" style="fill: rgb(59, 234, 98);"/> |  | ||||||
|     <path d="M 413.847 253.602 C 413.847 253.602 411.475 254.468 408.27 254.468 C 407.586 254.468 406.426 254.378 405.025 254.238 L 405.025 254.237 C 405.025 253.495 406.924 251.743 408.366 251.616 C 408.623 252.865 410.097 252.512 411.219 252.128 C 412.341 251.743 413.783 251.167 413.783 251.167 C 414.503 251.888 414.422 253.218 413.847 253.602 Z M 413.847 253.602" style="fill: rgb(8, 124, 250);"/> |  | ||||||
|     <path d="M 394.341 248.65 C 394.214 248.978 394.103 249.339 394.016 249.717 C 392.843 249.372 391.985 249.174 391.959 249.168 C 392.108 248.769 392.268 248.379 392.421 248.022 Z M 394.341 248.65" style="fill: rgb(37, 187, 163);"/> |  | ||||||
|     <path d="M 408.366 251.616 C 406.924 251.743 405.025 253.495 405.025 254.237 L 405.025 254.238 C 403.784 254.113 402.355 253.948 400.899 253.77 C 400.899 253.051 400.191 252.372 399.174 251.768 L 399.174 251.768 L 403.528 246.924 C 407.331 249.34 410.097 250.43 410.097 250.43 C 410.77 251.102 409.809 251.487 408.366 251.616 Z M 408.366 251.616" style="fill: rgb(248, 245, 231);"/> |  | ||||||
|     <polygon fill="url(#ideavim_plugin-a)" fill-rule="evenodd" points="406.356 248.463 403.261 252.616 402.183 248.212 400.984 249.899 401.999 254.236 403.927 254.176 407.639 249.062" style="" transform="matrix(0.994522, 0.104529, -0.104529, 0.994522, 28.475005, -40.88594)"/> |  | ||||||
|     <g fill="#fb6572" transform="matrix(0.046265, 0, 0, 0.046265, 390.612823, 245.155533)" style=""> |  | ||||||
|       <path d="m288.839844 72.65625c-2.007813 0-4.011719-.761719-5.542969-2.292969-3.058594-3.0625-3.058594-8.023437 0-11.082031l20.089844-20.089844c3.0625-3.058594 8.023437-3.058594 11.082031 0 3.058594 3.0625 3.0625 8.023438 0 11.082032l-20.089844 20.089843c-1.527344 1.53125-3.535156 2.292969-5.539062 2.292969zm0 0" style="fill: rgb(56, 228, 105);"/> |  | ||||||
|       <path d="m314.589844 87.082031c-2.007813 0-4.011719-.765625-5.542969-2.296875-3.0625-3.058594-3.0625-8.019531 0-11.082031l20.089844-20.085937c3.0625-3.058594 8.023437-3.058594 11.082031 0 3.058594 3.0625 3.058594 8.023437 0 11.082031l-20.089844 20.085937c-1.527344 1.53125-3.535156 2.296875-5.539062 2.296875zm0 0" style="fill: rgb(59, 233, 100);"/> |  | ||||||
|       <path d="m340.339844 101.507812c-2.007813 0-4.011719-.765624-5.542969-2.296874-3.058594-3.058594-3.058594-8.023438 0-11.082032l20.089844-20.085937c3.0625-3.0625 8.023437-3.0625 11.082031 0 3.058594 3.058593 3.0625 8.023437 0 11.082031l-20.089844 20.085938c-1.527344 1.53125-3.535156 2.296874-5.539062 2.296874zm0 0" style="fill: rgb(59, 233, 100);"/> |  | ||||||
|       <path d="m366.089844 115.929688c-2.003906 0-4.011719-.761719-5.539063-2.292969-3.0625-3.0625-3.0625-8.023438 0-11.082031l20.085938-20.089844c3.0625-3.058594 8.023437-3.058594 11.082031 0 3.0625 3.0625 3.0625 8.023437 0 11.082031l-20.085938 20.089844c-1.53125 1.53125-3.535156 2.292969-5.542968 2.292969zm0 0" style="fill: rgb(59, 233, 100);"/> |  | ||||||
|     </g> |  | ||||||
|     <path d="M 401.925 247.748 C 401.761 247.748 401.611 247.629 401.573 247.469 C 401.536 247.312 401.611 247.144 401.753 247.067 C 402 246.933 402.318 247.147 402.286 247.426 C 402.265 247.606 402.107 247.748 401.925 247.748 Z M 401.925 247.748" fill="#1e2628" style=""/> |  | ||||||
|   </g> |  | ||||||
| </svg> |  | ||||||
| Before Width: | Height: | Size: 5.6 KiB | 
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user