mirror of
				https://github.com/chylex/IntelliJ-IdeaVim.git
				synced 2025-11-03 16:40:12 +01:00 
			
		
		
		
	Compare commits
	
		
			9 Commits
		
	
	
		
			customized
			...
			customized
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						8e162bce95
	
				 | 
					
					
						|||
| 
						
						
							
						
						2cdd62371e
	
				 | 
					
					
						|||
| 
						
						
							
						
						d461f61438
	
				 | 
					
					
						|||
| 
						
						
							
						
						de7fe30a97
	
				 | 
					
					
						|||
| 
						
						
							
						
						6d80c21344
	
				 | 
					
					
						|||
| 
						
						
							
						
						a57a80442c
	
				 | 
					
					
						|||
| 
						
						
							
						
						866e6dc831
	
				 | 
					
					
						|||
| 
						
						
							
						
						f11bb12f19
	
				 | 
					
					
						|||
| 
						
						
							
						
						70ea1bd46f
	
				 | 
					
					
						
@@ -7,4 +7,3 @@ indent_style = space
 | 
			
		||||
[*.kt]
 | 
			
		||||
indent_size = 2
 | 
			
		||||
indent_style = space
 | 
			
		||||
ktlint_standard_no-wildcard-imports = disabled
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/checkNewPlugins.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/checkNewPlugins.yml
									
									
									
									
										vendored
									
									
								
							@@ -14,7 +14,6 @@ jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'JetBrains/ideavim'
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Fetch origin repo
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								.github/workflows/closeYoutrackOnCommit.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								.github/workflows/closeYoutrackOnCommit.yml
									
									
									
									
										vendored
									
									
								
							@@ -12,36 +12,28 @@ jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'JetBrains/ideavim'
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 300
 | 
			
		||||
      - name: Get tags
 | 
			
		||||
        run: git fetch --tags origin
 | 
			
		||||
      - name: Set up JDK 17
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
        # 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
 | 
			
		||||
      - uses: nrwl/last-successful-commit-action@v1
 | 
			
		||||
        id: last_successful_commit
 | 
			
		||||
        with:
 | 
			
		||||
          branch: 'master'
 | 
			
		||||
          workflow_id: 'closeYoutrackOnCommit.yml'
 | 
			
		||||
          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Update YouTrack
 | 
			
		||||
        run: ./gradlew --no-configuration-cache updateYoutrackOnCommit
 | 
			
		||||
        run: ./gradlew updateYoutrackOnCommit
 | 
			
		||||
        env:
 | 
			
		||||
          SUCCESS_COMMIT: ${{ env.LAST_COMMIT }}
 | 
			
		||||
          SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }}
 | 
			
		||||
          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.
 | 
			
		||||
    - name: Initialize CodeQL
 | 
			
		||||
      uses: github/codeql-action/init@v2
 | 
			
		||||
      uses: github/codeql-action/init@v1
 | 
			
		||||
      with:
 | 
			
		||||
        languages: ${{ matrix.language }}
 | 
			
		||||
        # 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).
 | 
			
		||||
    # If this step fails, then you should remove it and run the build manually (see below)
 | 
			
		||||
    - name: Autobuild
 | 
			
		||||
      uses: github/codeql-action/autobuild@v2
 | 
			
		||||
      uses: github/codeql-action/autobuild@v1
 | 
			
		||||
 | 
			
		||||
    # ℹ️ Command-line programs to run using the OS shell.
 | 
			
		||||
    # 📚 https://git.io/JvXDl
 | 
			
		||||
@@ -64,4 +64,4 @@ jobs:
 | 
			
		||||
    #   make release
 | 
			
		||||
 | 
			
		||||
    - name: Perform CodeQL Analysis
 | 
			
		||||
      uses: github/codeql-action/analyze@v2
 | 
			
		||||
      uses: github/codeql-action/analyze@v1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								.github/workflows/integrationsTest.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/integrationsTest.yml
									
									
									
									
										vendored
									
									
								
							@@ -12,22 +12,21 @@ 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
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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: Run tests
 | 
			
		||||
        run: ./gradlew --no-configuration-cache integrationsTest
 | 
			
		||||
        run: ./gradlew integrationsTest
 | 
			
		||||
        env:
 | 
			
		||||
          YOUTRACK_TOKEN: ${{ secrets.YOUTRACK_TOKEN }}
 | 
			
		||||
          GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
          GITHUB_OAUTH: ${{ secrets.MERGE_PR }}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								.github/workflows/kover.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/kover.yml
									
									
									
									
										vendored
									
									
								
							@@ -12,16 +12,15 @@ 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
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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}}
 | 
			
		||||
							
								
								
									
										29
									
								
								.github/workflows/mergePr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/mergePr.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,35 +11,46 @@ on:
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    if: false
 | 
			
		||||
    if: github.event.pull_request.merged == true
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 50
 | 
			
		||||
          # See end of file updateChangeslog.yml for explanation of this secret
 | 
			
		||||
          ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }}
 | 
			
		||||
      - name: Set up JDK 17
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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 --no-configuration-cache updateMergedPr -PprId=${{ github.event.number }}
 | 
			
		||||
        run: ./gradlew updateMergedPr -PprId=${{ github.event.number }}
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      # Reuse from update changelog
 | 
			
		||||
      - uses: nrwl/last-successful-commit-action@v1
 | 
			
		||||
        id: last_successful_commit
 | 
			
		||||
        with:
 | 
			
		||||
          branch: 'master'
 | 
			
		||||
          workflow_id: 'updateChangelog.yml'
 | 
			
		||||
          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Update changelog
 | 
			
		||||
        run: ./gradlew updateChangelog
 | 
			
		||||
        env:
 | 
			
		||||
          SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }}
 | 
			
		||||
 | 
			
		||||
      - name: Commit changes
 | 
			
		||||
        uses: stefanzweifel/git-auto-commit-action@v4
 | 
			
		||||
        with:
 | 
			
		||||
          branch: master
 | 
			
		||||
          commit_message: Update changelog after merging PR
 | 
			
		||||
          commit_user_name: IdeaVim Bot
 | 
			
		||||
          commit_user_email: maintainers@ideavim.dev
 | 
			
		||||
          commit_author: IdeaVim Bot <maintainers@ideavim.dev>
 | 
			
		||||
          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 * * *'
 | 
			
		||||
jobs:
 | 
			
		||||
  build-for-ui-test-mac-os:
 | 
			
		||||
    if: github.repository == 'JetBrains/ideavim'
 | 
			
		||||
    runs-on: macos-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
      - name: Setup Java
 | 
			
		||||
        uses: actions/setup-java@v4
 | 
			
		||||
        uses: actions/setup-java@v2.1.0
 | 
			
		||||
        with:
 | 
			
		||||
          distribution: zulu
 | 
			
		||||
          java-version: 17
 | 
			
		||||
          java-version: 11
 | 
			
		||||
      - name: Setup FFmpeg
 | 
			
		||||
        run: brew install ffmpeg
 | 
			
		||||
#      - name: Setup Gradle
 | 
			
		||||
#        uses: gradle/gradle-build-action@v2.4.2
 | 
			
		||||
        uses: FedericoCarboni/setup-ffmpeg@v1
 | 
			
		||||
        with:
 | 
			
		||||
          # Not strictly necessary, but it may prevent rate limit
 | 
			
		||||
          # errors especially on GitHub-hosted macos machines.
 | 
			
		||||
          token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
      - name: Build Plugin
 | 
			
		||||
        run: gradle :buildPlugin
 | 
			
		||||
      - name: Run Idea
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p build/reports
 | 
			
		||||
          gradle --no-configuration-cache runIdeForUiTests > build/reports/idea.log &
 | 
			
		||||
          gradle :runIdeForUiTests > build/reports/idea.log &
 | 
			
		||||
      - name: Wait for Idea started
 | 
			
		||||
        uses: jtalk/url-health-check-action@v3
 | 
			
		||||
        uses: jtalk/url-health-check-action@1.5
 | 
			
		||||
        with:
 | 
			
		||||
          url: http://127.0.0.1:8082
 | 
			
		||||
          max-attempts: 20
 | 
			
		||||
          retry-delay: 10s
 | 
			
		||||
      - name: Tests
 | 
			
		||||
        run: gradle :tests:ui-ij-tests:testUi
 | 
			
		||||
        run: gradle :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
 | 
			
		||||
        if: ${{ failure() }}
 | 
			
		||||
        run: mv video build/reports
 | 
			
		||||
      - name: Save fails report
 | 
			
		||||
        if: ${{ failure() }}
 | 
			
		||||
        uses: actions/upload-artifact@v2
 | 
			
		||||
        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:
 | 
			
		||||
@@ -78,4 +74,4 @@ jobs:
 | 
			
		||||
#        with:
 | 
			
		||||
#          name: ui-test-fails-report-linux
 | 
			
		||||
#          path: |
 | 
			
		||||
#            ui-test-example/build/reports
 | 
			
		||||
#            ui-test-example/build/reports
 | 
			
		||||
							
								
								
									
										9
									
								
								.github/workflows/syncDoc.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/syncDoc.yml
									
									
									
									
										vendored
									
									
								
							@@ -14,15 +14,12 @@ 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
 | 
			
		||||
@@ -40,6 +37,6 @@ jobs:
 | 
			
		||||
          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>
 | 
			
		||||
          commit_user_name: Alex Plate
 | 
			
		||||
          commit_user_email: aleksei.plate@jetbrains.com
 | 
			
		||||
          commit_author: Alex Plate <aleksei.plate@jetbrains.com>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								.github/workflows/updateAuthors.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/updateAuthors.yml
									
									
									
									
										vendored
									
									
								
							@@ -5,58 +5,45 @@ name: Update Authors
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: '0 9 * * *'
 | 
			
		||||
# Workflow run on push is disabled to avoid conflicts when merging PR
 | 
			
		||||
#  push:
 | 
			
		||||
#    branches: [ master ]
 | 
			
		||||
  push:
 | 
			
		||||
    branches: [ master ]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'JetBrains/ideavim'
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 300
 | 
			
		||||
          # See end of file updateChangeslog.yml for explanation of this secret
 | 
			
		||||
          ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }}
 | 
			
		||||
      - name: Get tags
 | 
			
		||||
        run: git fetch --tags origin
 | 
			
		||||
      - name: Set up JDK 17
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
        # 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-authors)" >> $GITHUB_ENV
 | 
			
		||||
      - uses: nrwl/last-successful-commit-action@v1
 | 
			
		||||
        id: last_successful_commit
 | 
			
		||||
        with:
 | 
			
		||||
          branch: 'master'
 | 
			
		||||
          workflow_id: 'updateAuthors.yml'
 | 
			
		||||
          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Update authors
 | 
			
		||||
        id: update_authors
 | 
			
		||||
        run: ./gradlew --no-configuration-cache updateAuthors --stacktrace
 | 
			
		||||
        run: ./gradlew updateAuthors --stacktrace
 | 
			
		||||
        env:
 | 
			
		||||
          SUCCESS_COMMIT: ${{ env.LAST_COMMIT }}
 | 
			
		||||
          SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }}
 | 
			
		||||
          GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Commit changes
 | 
			
		||||
        uses: stefanzweifel/git-auto-commit-action@v4
 | 
			
		||||
        with:
 | 
			
		||||
          commit_message: Add ${{ steps.update_authors.outputs.authors }} to contributors list
 | 
			
		||||
          commit_user_name: IdeaVim Bot
 | 
			
		||||
          commit_user_email: maintainers@ideavim.dev
 | 
			
		||||
          commit_author: IdeaVim Bot <maintainers@ideavim.dev>
 | 
			
		||||
          commit_user_name: Alex Plate
 | 
			
		||||
          commit_user_email: aleksei.plate@jetbrains.com
 | 
			
		||||
          commit_author: Alex Plate <aleksei.plate@jetbrains.com>
 | 
			
		||||
          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,45 @@ name: Update Changelog
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: '0 10 * * *'
 | 
			
		||||
  push:
 | 
			
		||||
    branches: [ master ]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    if: github.event.pull_request.merged != true
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: false
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 300
 | 
			
		||||
          # See end of file updateChangeslog.yml for explanation of this secret
 | 
			
		||||
          ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }}
 | 
			
		||||
      - name: Get tags
 | 
			
		||||
        run: git fetch --tags origin
 | 
			
		||||
      - name: Set up JDK 17
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
        # 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-changelog)" >> $GITHUB_ENV
 | 
			
		||||
      - uses: nrwl/last-successful-commit-action@v1
 | 
			
		||||
        id: last_successful_commit
 | 
			
		||||
        with:
 | 
			
		||||
          branch: 'master'
 | 
			
		||||
          workflow_id: 'updateChangelog.yml'
 | 
			
		||||
          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Update changelog
 | 
			
		||||
        run: ./gradlew --no-configuration-cache updateChangelog
 | 
			
		||||
        run: ./gradlew updateChangelog
 | 
			
		||||
        env:
 | 
			
		||||
          SUCCESS_COMMIT: ${{ env.LAST_COMMIT }}
 | 
			
		||||
          SUCCESS_COMMIT: ${{ steps.last_successful_commit.outputs.commit_hash }}
 | 
			
		||||
 | 
			
		||||
      - name: Commit changes
 | 
			
		||||
        uses: stefanzweifel/git-auto-commit-action@v4
 | 
			
		||||
        with:
 | 
			
		||||
          commit_message: Update changelog. Action id - ${{ github.run_id }}
 | 
			
		||||
          commit_user_name: IdeaVim Bot
 | 
			
		||||
          commit_user_email: maintainers@ideavim.dev
 | 
			
		||||
          commit_author: IdeaVim Bot <maintainers@ideavim.dev>
 | 
			
		||||
          commit_message: Update changelog
 | 
			
		||||
          commit_user_name: Alex Plate
 | 
			
		||||
          commit_user_email: aleksei.plate@jetbrains.com
 | 
			
		||||
          commit_author: Alex Plate <aleksei.plate@jetbrains.com>
 | 
			
		||||
          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
 | 
			
		||||
          skip_fetch: false
 | 
			
		||||
							
								
								
									
										19
									
								
								.github/workflows/updateFormatting.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/updateFormatting.yml
									
									
									
									
										vendored
									
									
								
							@@ -12,31 +12,26 @@ jobs:
 | 
			
		||||
  build:
 | 
			
		||||
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    if: github.repository == 'JetBrains/ideavim'
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 50
 | 
			
		||||
          # See end of file updateChangeslog.yml for explanation of this secret
 | 
			
		||||
          ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }}
 | 
			
		||||
      - name: Set up JDK 17
 | 
			
		||||
      - name: Set up JDK 11
 | 
			
		||||
        uses: actions/setup-java@v2
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: '17'
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
      - uses: findologic/intellij-format-action@1.0.1
 | 
			
		||||
        with:
 | 
			
		||||
          include-glob: '*.kt,*.java'
 | 
			
		||||
          path: .
 | 
			
		||||
      - name: Format files
 | 
			
		||||
        run: ./gradlew ktlintFormat
 | 
			
		||||
 | 
			
		||||
      - name: Commit changes
 | 
			
		||||
        uses: stefanzweifel/git-auto-commit-action@v4
 | 
			
		||||
        with:
 | 
			
		||||
          commit_message: Update formatting
 | 
			
		||||
          commit_user_name: IdeaVim Bot
 | 
			
		||||
          commit_user_email: maintainers@ideavim.dev
 | 
			
		||||
          commit_author: IdeaVim Bot <maintainers@ideavim.dev>
 | 
			
		||||
          commit_user_name: Alex Plate
 | 
			
		||||
          commit_user_email: aleksei.plate@jetbrains.com
 | 
			
		||||
          commit_author: Alex Plate <aleksei.plate@jetbrains.com>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,5 @@
 | 
			
		||||
*.swp
 | 
			
		||||
/.gradle/
 | 
			
		||||
/.intellijPlatform/
 | 
			
		||||
 | 
			
		||||
/.idea/
 | 
			
		||||
!/.idea/scopes
 | 
			
		||||
@@ -11,8 +10,6 @@
 | 
			
		||||
!/.idea/runConfigurations
 | 
			
		||||
!/.idea/codeStyles
 | 
			
		||||
!/.idea/vcs.xml
 | 
			
		||||
!/.idea/misc.xml
 | 
			
		||||
!/.idea/.name
 | 
			
		||||
 | 
			
		||||
**/build/
 | 
			
		||||
**/out/
 | 
			
		||||
@@ -25,13 +22,7 @@
 | 
			
		||||
.teamcity/*.iml
 | 
			
		||||
 | 
			
		||||
# Generated by gradle task "generateGrammarSource"
 | 
			
		||||
vim-engine/src/main/java/com/maddyhome/idea/vim/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
 | 
			
		||||
src/main/java/com/maddyhome/idea/vim/vimscript/parser/generated
 | 
			
		||||
 | 
			
		||||
# Created by github automation
 | 
			
		||||
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" />
 | 
			
		||||
      </value>
 | 
			
		||||
    </option>
 | 
			
		||||
    <option name="LINE_SEPARATOR" value="
" />
 | 
			
		||||
    <JavaCodeStyleSettings>
 | 
			
		||||
      <option name="FIELD_NAME_PREFIX" value="my" />
 | 
			
		||||
      <option name="STATIC_FIELD_NAME_PREFIX" value="our" />
 | 
			
		||||
@@ -192,10 +191,6 @@
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="kotlin">
 | 
			
		||||
      <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
 | 
			
		||||
      <indentOptions>
 | 
			
		||||
        <option name="INDENT_SIZE" value="2" />
 | 
			
		||||
        <option name="TAB_SIZE" value="2" />
 | 
			
		||||
      </indentOptions>
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
  </code_scheme>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										2
									
								
								.idea/copyright/IdeaVim.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/copyright/IdeaVim.xml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
<component name="CopyrightManager">
 | 
			
		||||
  <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="Copyright 2003-2022 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="myName" value="IdeaVim" />
 | 
			
		||||
  </copyright>
 | 
			
		||||
</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">
 | 
			
		||||
        <list>
 | 
			
		||||
          <option value="check" />
 | 
			
		||||
          <option value="verifyPlugin" />
 | 
			
		||||
          <option value="runPluginVerifier" />
 | 
			
		||||
        </list>
 | 
			
		||||
      </option>
 | 
			
		||||
      <option name="vmOptions" value="" />
 | 
			
		||||
@@ -20,7 +20,6 @@
 | 
			
		||||
    <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
 | 
			
		||||
    <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
 | 
			
		||||
    <DebugAllEnabled>false</DebugAllEnabled>
 | 
			
		||||
    <RunAsTest>false</RunAsTest>
 | 
			
		||||
    <method v="2" />
 | 
			
		||||
  </configuration>
 | 
			
		||||
</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">
 | 
			
		||||
  <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:*/&&!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" />
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										2
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							@@ -11,6 +11,6 @@
 | 
			
		||||
    </option>
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="VcsDirectoryMappings">
 | 
			
		||||
    <mapping directory="" vcs="Git" />
 | 
			
		||||
    <mapping directory="$PROJECT_DIR$" 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 DEV_CHANNEL = "Dev"
 | 
			
		||||
 | 
			
		||||
  const val GITHUB_TESTS = "2024.1.1"
 | 
			
		||||
  const val NVIM_TESTS = "2024.1.1"
 | 
			
		||||
  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 VERSION = "2.0.0"
 | 
			
		||||
  const val DEV_VERSION = "2.1.0"
 | 
			
		||||
 | 
			
		||||
  const val RELEASE_DEV = "2024.1.1"
 | 
			
		||||
  const val RELEASE_EAP = "2024.1.1"
 | 
			
		||||
  const val GITHUB_TESTS = "LATEST-EAP-SNAPSHOT"
 | 
			
		||||
  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"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										96
									
								
								.teamcity/_Self/Project.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								.teamcity/_Self/Project.kt
									
									
									
									
										vendored
									
									
								
							@@ -6,28 +6,33 @@ import _Self.buildTypes.Nvim
 | 
			
		||||
import _Self.buildTypes.PluginVerifier
 | 
			
		||||
import _Self.buildTypes.PropertyBased
 | 
			
		||||
import _Self.buildTypes.Qodana
 | 
			
		||||
import _Self.buildTypes.TestingBuildType
 | 
			
		||||
import _Self.buildTypes.TestsForIntelliJ20222
 | 
			
		||||
import _Self.buildTypes.TestsForIntelliJEAP
 | 
			
		||||
import _Self.subprojects.GitHub
 | 
			
		||||
import _Self.subprojects.OldTests
 | 
			
		||||
import _Self.subprojects.Releases
 | 
			
		||||
import _Self.vcsRoots.GitHubPullRequest
 | 
			
		||||
import _Self.vcsRoots.ReleasesVcsRoot
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.BuildType
 | 
			
		||||
import _Self.vcsRoots.*
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
 | 
			
		||||
 | 
			
		||||
object Project : Project({
 | 
			
		||||
  description = "Vim engine for JetBrains IDEs"
 | 
			
		||||
  description = "Vim emulation plugin for the IntelliJ platform products"
 | 
			
		||||
 | 
			
		||||
  subProjects(Releases, OldTests, GitHub)
 | 
			
		||||
 | 
			
		||||
  // 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_222)
 | 
			
		||||
  vcsRoot(Branch_Release)
 | 
			
		||||
  vcsRoot(GitHubPullRequest)
 | 
			
		||||
  vcsRoot(ReleasesVcsRoot)
 | 
			
		||||
 | 
			
		||||
  // Active tests
 | 
			
		||||
  buildType(TestingBuildType("Latest EAP", "<default>", version = "LATEST-EAP-SNAPSHOT"))
 | 
			
		||||
  buildType(TestingBuildType("2024.1.1", "<default>"))
 | 
			
		||||
  buildType(TestingBuildType("Latest EAP With Xorg", "<default>", version = "LATEST-EAP-SNAPSHOT"))
 | 
			
		||||
  // Builds
 | 
			
		||||
  buildType(TestsForIntelliJEAP)
 | 
			
		||||
 | 
			
		||||
  buildType(PropertyBased)
 | 
			
		||||
  buildType(LongRunning)
 | 
			
		||||
@@ -37,27 +42,52 @@ object Project : Project({
 | 
			
		||||
  buildType(Compatibility)
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
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.DslContext
 | 
			
		||||
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.triggers.vcs
 | 
			
		||||
 | 
			
		||||
open class TestingBuildType(
 | 
			
		||||
  private val testName: String,
 | 
			
		||||
  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"
 | 
			
		||||
 | 
			
		||||
sealed class ActiveTests(buildName: String, ijVersion: String) : BuildType({
 | 
			
		||||
  name = buildName
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_legacyNoJavaPlugin", javaPlugin.not().toString())
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_ideaVersion", version)
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_ideaVersion", ijVersion)
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_instrumentPluginCode", "false")
 | 
			
		||||
    if (javaVersion != null) {
 | 
			
		||||
      param("env.ORG_GRADLE_PROJECT_javaVersion", javaVersion)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:$branch"
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  steps {
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "clean test"
 | 
			
		||||
      tasks = "clean check -x ktlintMainSourceSetCheck -x ktlintTestSourceSetCheck"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    vcs {
 | 
			
		||||
      branchFilter = "+:$branch"
 | 
			
		||||
      branchFilter = ""
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  requirements {
 | 
			
		||||
    noLessThanVer("teamcity.agent.jvm.version", "1.8")
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  failureConditions {
 | 
			
		||||
    failOnMetricChange {
 | 
			
		||||
      metric = BuildFailureOnMetric.MetricType.TEST_COUNT
 | 
			
		||||
@@ -64,9 +54,4 @@ open class TestingBuildType(
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
private fun String.vanish(): String {
 | 
			
		||||
  return this
 | 
			
		||||
    .replace(' ', '_')
 | 
			
		||||
    .replace('.', '_')
 | 
			
		||||
    .replace('-', '_')
 | 
			
		||||
}
 | 
			
		||||
object TestsForIntelliJEAP : ActiveTests("Tests for IntelliJ Latest EAP", "LATEST-EAP-SNAPSHOT")
 | 
			
		||||
							
								
								
									
										34
									
								
								.teamcity/_Self/buildTypes/Compatibility.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								.teamcity/_Self/buildTypes/Compatibility.kt
									
									
									
									
										vendored
									
									
								
							@@ -1,45 +1,31 @@
 | 
			
		||||
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.buildFeatures.golang
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.schedule
 | 
			
		||||
 | 
			
		||||
object Compatibility : IdeaVimBuildType({
 | 
			
		||||
object Compatibility : BuildType({
 | 
			
		||||
  id("IdeaVimCompatibility")
 | 
			
		||||
  name = "IdeaVim compatibility with external plugins"
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:<default>"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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 {
 | 
			
		||||
      name = "Check"
 | 
			
		||||
      scriptContent = """
 | 
			
		||||
              # We use a custom build of verifier that downloads IdeaVim from dev channel
 | 
			
		||||
              # To create a custom build: Download plugin verifier repo, add an if that switches to dev channel for IdeaVim repo
 | 
			
		||||
              # At the moment it's com.jetbrains.pluginverifier.repository.repositories.marketplace.MarketplaceRepository#getLastCompatibleVersionOfPlugin
 | 
			
		||||
              # Build using gradlew :intellij-plugin-verifier:verifier-cli:shadowJar
 | 
			
		||||
              # Upload verifier-cli-dev-all.jar artifact to the repo in IdeaVim space repo
 | 
			
		||||
              
 | 
			
		||||
              java --version
 | 
			
		||||
              java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [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
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}io.github.mishkun.ideavimsneak' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}eu.theblob42.idea.whichkey' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.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 verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.copilot' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.dankinsoid.multicursor' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.joshestein.ideavim-quickscope' [latest-IU] -team-city
 | 
			
		||||
            """.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
 | 
			
		||||
 | 
			
		||||
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.DslContext
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
object LongRunning : IdeaVimBuildType({
 | 
			
		||||
object LongRunning : BuildType({
 | 
			
		||||
  name = "Long running tests"
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
 | 
			
		||||
@@ -18,29 +17,26 @@ object LongRunning : IdeaVimBuildType({
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:<default>"
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  steps {
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "clean :tests:long-running-tests:testLongRunning"
 | 
			
		||||
      tasks = "clean testLongRunning"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    vcs {
 | 
			
		||||
      enabled = false
 | 
			
		||||
      branchFilter = "+:<default>"
 | 
			
		||||
    }
 | 
			
		||||
    schedule {
 | 
			
		||||
      enabled = true
 | 
			
		||||
      schedulingPolicy = daily {
 | 
			
		||||
        hour = 5
 | 
			
		||||
      }
 | 
			
		||||
      branchFilter = ""
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
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.DslContext
 | 
			
		||||
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.triggers.vcs
 | 
			
		||||
 | 
			
		||||
object Nvim : IdeaVimBuildType({
 | 
			
		||||
object Nvim : BuildType({
 | 
			
		||||
  name = "Tests with nvim"
 | 
			
		||||
  description = "Running tests with nvim integration"
 | 
			
		||||
 | 
			
		||||
@@ -23,7 +23,6 @@ object Nvim : IdeaVimBuildType({
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:<default>"
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
@@ -39,18 +38,23 @@ object Nvim : IdeaVimBuildType({
 | 
			
		||||
              """.trimIndent()
 | 
			
		||||
    }
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "clean test -Dnvim"
 | 
			
		||||
      tasks = "clean testWithNeovim"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    vcs {
 | 
			
		||||
      branchFilter = "+:<default>"
 | 
			
		||||
      branchFilter = ""
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  requirements {
 | 
			
		||||
    noLessThanVer("teamcity.agent.jvm.version", "1.8")
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  failureConditions {
 | 
			
		||||
    failOnMetricChange {
 | 
			
		||||
      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
 | 
			
		||||
 | 
			
		||||
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.DslContext
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
 | 
			
		||||
 | 
			
		||||
object PluginVerifier : IdeaVimBuildType({
 | 
			
		||||
object PluginVerifier : BuildType({
 | 
			
		||||
  name = "Plugin verification"
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
 | 
			
		||||
@@ -15,22 +15,26 @@ object PluginVerifier : IdeaVimBuildType({
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:<default>"
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  steps {
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "clean verifyPlugin"
 | 
			
		||||
      tasks = "clean runPluginVerifier"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
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.DslContext
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
 | 
			
		||||
 | 
			
		||||
object PropertyBased : IdeaVimBuildType({
 | 
			
		||||
object PropertyBased : BuildType({
 | 
			
		||||
  name = "Property based tests"
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
 | 
			
		||||
@@ -17,22 +17,26 @@ object PropertyBased : IdeaVimBuildType({
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:<default>"
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  steps {
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "clean :tests:property-tests:testPropertyBased"
 | 
			
		||||
      tasks = "clean testPropertyBased"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
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.DslContext
 | 
			
		||||
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.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
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.triggers.vcs
 | 
			
		||||
 | 
			
		||||
object Qodana : IdeaVimBuildType({
 | 
			
		||||
object Qodana : BuildType({
 | 
			
		||||
  name = "Qodana checks"
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_downloadIdeaSources", "false")
 | 
			
		||||
@@ -22,47 +22,48 @@ object Qodana : IdeaVimBuildType({
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(DslContext.settingsRoot)
 | 
			
		||||
    branchFilter = "+:<default>"
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  steps {
 | 
			
		||||
    gradle {
 | 
			
		||||
      name = "Generate grammar"
 | 
			
		||||
      tasks = "generateGrammarSource"
 | 
			
		||||
    }
 | 
			
		||||
    qodana {
 | 
			
		||||
      name = "Qodana"
 | 
			
		||||
      param("clonefinder-languages", "")
 | 
			
		||||
      param("collect-anonymous-statistics", "")
 | 
			
		||||
      param("licenseaudit-enable", "")
 | 
			
		||||
      param("clonefinder-languages-container", "")
 | 
			
		||||
      param("linterVersion", "")
 | 
			
		||||
      param("clonefinder-queried-project", "")
 | 
			
		||||
      param("clonefinder-enable", "")
 | 
			
		||||
      param("clonefinder-reference-projects", "")
 | 
			
		||||
/*
 | 
			
		||||
      reportAsTestsEnable = ""
 | 
			
		||||
      failBuildOnErrors = ""
 | 
			
		||||
      codeInspectionXmlConfig = "Custom"
 | 
			
		||||
      codeInspectionCustomXmlConfigPath = ".idea/inspectionProfiles/Qodana.xml"
 | 
			
		||||
      reportAsTestsEnable = "true"
 | 
			
		||||
*/
 | 
			
		||||
      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 {
 | 
			
		||||
        version = Qodana.JVMVersion.LATEST
 | 
			
		||||
      }
 | 
			
		||||
      reportAsTests = true
 | 
			
		||||
      additionalQodanaArguments = "--baseline qodana.sarif.json"
 | 
			
		||||
      cloudToken = "credentialsJSON:6b79412e-9198-4862-9223-c5019488f903"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    vcs {
 | 
			
		||||
      enabled = false
 | 
			
		||||
      branchFilter = "+:<default>"
 | 
			
		||||
      enabled = true
 | 
			
		||||
      branchFilter = ""
 | 
			
		||||
    }
 | 
			
		||||
    schedule {
 | 
			
		||||
      schedulingPolicy = daily {
 | 
			
		||||
        hour = 12
 | 
			
		||||
        minute = 0
 | 
			
		||||
        timezone = "SERVER"
 | 
			
		||||
      schedulingPolicy = weekly {
 | 
			
		||||
        dayOfWeek = ScheduleTrigger.DAY.Tuesday
 | 
			
		||||
      }
 | 
			
		||||
      param("dayOfWeek", "Sunday")
 | 
			
		||||
      branchFilter = ""
 | 
			
		||||
      triggerBuild = always()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -73,8 +74,11 @@ object Qodana : IdeaVimBuildType({
 | 
			
		||||
      comparison = BuildFailureOnMetric.MetricComparison.MORE
 | 
			
		||||
      compareTo = value()
 | 
			
		||||
      metric = BuildFailureOnMetric.MetricType.TEST_FAILED_COUNT
 | 
			
		||||
      param("metricKey", "QodanaProblemsNew")
 | 
			
		||||
      enabled = false
 | 
			
		||||
      param("metricKey", "QodanaProblemsTotal")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
import _Self.Constants.DEV_CHANNEL
 | 
			
		||||
import _Self.Constants.DEV_VERSION
 | 
			
		||||
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.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.script
 | 
			
		||||
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.schedule
 | 
			
		||||
 | 
			
		||||
object ReleaseDev : IdeaVimBuildType({
 | 
			
		||||
object ReleaseDev : BuildType({
 | 
			
		||||
  name = "Publish Dev Build"
 | 
			
		||||
  description = "Build and publish Dev of IdeaVim plugin"
 | 
			
		||||
 | 
			
		||||
  artifactRules = "build/distributions/*"
 | 
			
		||||
  buildNumberPattern = "$DEV_VERSION-dev.%build.counter%"
 | 
			
		||||
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_DEV)
 | 
			
		||||
@@ -25,35 +25,23 @@ object ReleaseDev : IdeaVimBuildType({
 | 
			
		||||
      "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", DEV_CHANNEL)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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"
 | 
			
		||||
    }
 | 
			
		||||
    gradle {
 | 
			
		||||
      name = "Calculate new dev version"
 | 
			
		||||
      tasks = "scripts:calculateNewDevVersion"
 | 
			
		||||
    }
 | 
			
		||||
    gradle {
 | 
			
		||||
      name = "Set TeamCity build number"
 | 
			
		||||
      tasks = "scripts:setTeamCityBuildNumber"
 | 
			
		||||
    }
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "publishPlugin"
 | 
			
		||||
      tasks = "clean publishPlugin"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -67,12 +55,6 @@ object ReleaseDev : IdeaVimBuildType({
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  features {
 | 
			
		||||
    sshAgent {
 | 
			
		||||
      teamcitySshKey = "IdeaVim ssh keys"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  failureConditions {
 | 
			
		||||
    failOnMetricChange {
 | 
			
		||||
      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
 | 
			
		||||
 | 
			
		||||
import _Self.Constants.DEV_VERSION
 | 
			
		||||
import _Self.Constants.EAP_CHANNEL
 | 
			
		||||
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.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.buildFeatures.vcsLabeling
 | 
			
		||||
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 ReleaseEap : IdeaVimBuildType({
 | 
			
		||||
object ReleaseEap : BuildType({
 | 
			
		||||
  name = "Publish EAP Build"
 | 
			
		||||
  description = "Build and publish EAP of IdeaVim plugin"
 | 
			
		||||
 | 
			
		||||
  artifactRules = "build/distributions/*"
 | 
			
		||||
  buildNumberPattern = "$DEV_VERSION-eap.%build.counter%"
 | 
			
		||||
 | 
			
		||||
  params {
 | 
			
		||||
    param("env.ORG_GRADLE_PROJECT_ideaVersion", RELEASE_EAP)
 | 
			
		||||
@@ -25,73 +25,37 @@ object ReleaseEap : IdeaVimBuildType({
 | 
			
		||||
      "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", 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(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"
 | 
			
		||||
    }
 | 
			
		||||
    gradle {
 | 
			
		||||
      name = "Calculate new eap version"
 | 
			
		||||
      tasks = "scripts:calculateNewEapVersion"
 | 
			
		||||
    }
 | 
			
		||||
    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
 | 
			
		||||
      if [ "master" != "${'$'}branch" ];
 | 
			
		||||
      then
 | 
			
		||||
        exit 1
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      git push origin %build.number%
 | 
			
		||||
      """.trimIndent()
 | 
			
		||||
    }
 | 
			
		||||
    gradle {
 | 
			
		||||
      name = "YouTrack post release actions"
 | 
			
		||||
      tasks = "scripts:eapReleaseActions"
 | 
			
		||||
      tasks = "clean publishPlugin"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  features {
 | 
			
		||||
    sshAgent {
 | 
			
		||||
      teamcitySshKey = "IdeaVim ssh keys"
 | 
			
		||||
    vcsLabeling {
 | 
			
		||||
      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")
 | 
			
		||||
							
								
								
									
										57
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_222.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								.teamcity/_Self/buildTypes/TestsForIntelliJ_222.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
@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_222_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")
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  vcs {
 | 
			
		||||
    root(_Self.vcsRoots.Branch_222)
 | 
			
		||||
 | 
			
		||||
    checkoutMode = CheckoutMode.AUTO
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  steps {
 | 
			
		||||
    gradle {
 | 
			
		||||
      tasks = "clean test"
 | 
			
		||||
      buildFile = ""
 | 
			
		||||
      enableStacktrace = true
 | 
			
		||||
      param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  triggers {
 | 
			
		||||
    vcs {
 | 
			
		||||
      branchFilter = ""
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  failureConditions {
 | 
			
		||||
    failOnMetricChange {
 | 
			
		||||
      metric = BuildFailureOnMetric.MetricType.TEST_COUNT
 | 
			
		||||
      threshold = 20
 | 
			
		||||
      units = BuildFailureOnMetric.MetricUnit.PERCENTS
 | 
			
		||||
      comparison = BuildFailureOnMetric.MetricComparison.LESS
 | 
			
		||||
      compareTo = build {
 | 
			
		||||
        buildRule = lastSuccessful()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
object TestsForIntelliJ20222 : TestsForIntelliJ_222_branch("2022.2.3")
 | 
			
		||||
							
								
								
									
										71
									
								
								.teamcity/_Self/subprojects/GitHub.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.teamcity/_Self/subprojects/GitHub.kt
									
									
									
									
										vendored
									
									
								
							@@ -1,78 +1,11 @@
 | 
			
		||||
package _Self.subprojects
 | 
			
		||||
 | 
			
		||||
import _Self.Constants
 | 
			
		||||
import _Self.IdeaVimBuildType
 | 
			
		||||
import _Self.vcsRoots.GitHubPullRequest
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.CheckoutMode
 | 
			
		||||
import _Self.buildTypes.GithubTests
 | 
			
		||||
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({
 | 
			
		||||
  name = "Pull Requests checks"
 | 
			
		||||
  description = "Automatic checking of GitHub Pull Requests"
 | 
			
		||||
 | 
			
		||||
  buildType(GithubBuildType("clean test", "Tests"))
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
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")
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  buildType(GithubTests)
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								.teamcity/_Self/subprojects/OldTests.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								.teamcity/_Self/subprojects/OldTests.kt
									
									
									
									
										vendored
									
									
								
							@@ -1,25 +1,35 @@
 | 
			
		||||
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 _Self.buildTypes.TestsForIntelliJ20222
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
 | 
			
		||||
 | 
			
		||||
object OldTests : Project({
 | 
			
		||||
  name = "Old IdeaVim tests"
 | 
			
		||||
  description = "Tests for older versions of IJ"
 | 
			
		||||
 | 
			
		||||
  buildType(TestingBuildType("IC-2018.1", "181-182", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2018.2", "181-182", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2018.3", "183", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2019.1", "191-193", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2019.2", "191-193", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2019.3", "191-193", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2020.1", "201", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2020.2", "202", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2020.3", "203-212", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2021.1", "203-212", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2021.2.2", "203-212", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  buildType(TestingBuildType("IC-2021.3.2", "213-221", javaVersion = "1.8", javaPlugin = false))
 | 
			
		||||
  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))
 | 
			
		||||
  buildType(TestsForIntelliJ20181)
 | 
			
		||||
  buildType(TestsForIntelliJ20182)
 | 
			
		||||
  buildType(TestsForIntelliJ20183)
 | 
			
		||||
  buildType(TestsForIntelliJ20191)
 | 
			
		||||
  buildType(TestsForIntelliJ20192)
 | 
			
		||||
  buildType(TestsForIntelliJ20193)
 | 
			
		||||
  buildType(TestsForIntelliJ20201)
 | 
			
		||||
  buildType(TestsForIntelliJ20202)
 | 
			
		||||
  buildType(TestsForIntelliJ20203)
 | 
			
		||||
  buildType(TestsForIntelliJ20211)
 | 
			
		||||
  buildType(TestsForIntelliJ20212)
 | 
			
		||||
  buildType(TestsForIntelliJ20213)
 | 
			
		||||
  buildType(TestsForIntelliJ20222)
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								.teamcity/_Self/subprojects/Releases.kt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.teamcity/_Self/subprojects/Releases.kt
									
									
									
									
										vendored
									
									
								
							@@ -1,48 +1,15 @@
 | 
			
		||||
package _Self.subprojects
 | 
			
		||||
 | 
			
		||||
import _Self.buildTypes.CreateNewReleaseBranchFromMaster
 | 
			
		||||
import _Self.buildTypes.PrintReleaseBranch
 | 
			
		||||
import _Self.buildTypes.PublishVimEngine
 | 
			
		||||
import _Self.buildTypes.Release
 | 
			
		||||
import _Self.buildTypes.ReleaseDev
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
object Releases : Project({
 | 
			
		||||
  name = "IdeaVim releases"
 | 
			
		||||
  description = "Stable and EAP releases for IdeaVim"
 | 
			
		||||
 | 
			
		||||
  params {
 | 
			
		||||
    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(Release)
 | 
			
		||||
  buildType(ReleaseEap)
 | 
			
		||||
  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"
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_222.kt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.teamcity/_Self/vcsRoots/Branch_222.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_222 : GitVcsRoot({
 | 
			
		||||
  id("HttpsGithubComJetBrainsIdeavimBranch222")
 | 
			
		||||
  name = "https://github.com/JetBrains/ideavim (branch 222)"
 | 
			
		||||
  url = "https://github.com/JetBrains/ideavim.git"
 | 
			
		||||
  branch = "222"
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										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"
 | 
			
		||||
  branchSpec = "+:refs/(pull/*)/head"
 | 
			
		||||
  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"
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										65
									
								
								.teamcity/patches/buildTypes/IdeaVimCompatibility.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								.teamcity/patches/buildTypes/IdeaVimCompatibility.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
package patches.buildTypes
 | 
			
		||||
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.*
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.ScriptBuildStep
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script
 | 
			
		||||
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 = 'IdeaVimCompatibility'
 | 
			
		||||
accordingly, and delete the patch script.
 | 
			
		||||
*/
 | 
			
		||||
changeBuildType(RelativeId("IdeaVimCompatibility")) {
 | 
			
		||||
    vcs {
 | 
			
		||||
        remove(DslContext.settingsRoot.id!!)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    expectSteps {
 | 
			
		||||
        script {
 | 
			
		||||
            name = "Check"
 | 
			
		||||
            scriptContent = """
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}io.github.mishkun.ideavimsneak' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}eu.theblob42.idea.whichkey' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.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 verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.copilot' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.github.dankinsoid.multicursor' [latest-IU] -team-city
 | 
			
		||||
                java -jar verifier/verifier-cli-dev-all.jar check-plugin '${'$'}com.joshestein.ideavim-quickscope' [latest-IU] -team-city
 | 
			
		||||
            """.trimIndent()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    steps {
 | 
			
		||||
        update<ScriptBuildStep>(0) {
 | 
			
		||||
            name = "Load Verifier"
 | 
			
		||||
            clearConditions()
 | 
			
		||||
            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()
 | 
			
		||||
        }
 | 
			
		||||
        insert(1) {
 | 
			
		||||
            script {
 | 
			
		||||
                name = "Check"
 | 
			
		||||
                scriptContent = """
 | 
			
		||||
                    # We use a custom build of verifier that downloads IdeaVim from dev channel
 | 
			
		||||
                    # To create a custom build: Download plugin verifier repo, add an if that switches to dev channel for IdeaVim repo
 | 
			
		||||
                    # At the moment it's com.jetbrains.pluginverifier.repository.repositories.marketplace.MarketplaceRepository#getLastCompatibleVersionOfPlugin
 | 
			
		||||
                    # Build using gradlew :intellij-plugin-verifier:verifier-cli:shadowJar
 | 
			
		||||
                    # Upload verifier-cli-dev-all.jar artifact to the repo in IdeaVim space repo
 | 
			
		||||
                    
 | 
			
		||||
                    java --version
 | 
			
		||||
                    java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}org.jetbrains.IdeaVim-EasyMotion' [latest-IU] -team-city
 | 
			
		||||
                    java -jar verifier1/verifier-cli-dev-all-1.jar check-plugin '${'$'}io.github.mishkun.ideavimsneak' [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()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										101
									
								
								.teamcity/patches/buildTypes/Qodana.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								.teamcity/patches/buildTypes/Qodana.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
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.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.VcsTrigger
 | 
			
		||||
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.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
 | 
			
		||||
            additionalDockerArguments = "-e QODANA_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmdhbml6YXRpb24iOiIzUFZrQSIsInByb2plY3QiOiIzN1FlQSIsInRva2VuIjoiM0t2bXoifQ.uohp81tM7iAfvvB6k8faarfpV-OjusAaEbWQ8iNrOgs"
 | 
			
		||||
            additionalQodanaArguments = "--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", "")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    triggers {
 | 
			
		||||
        val trigger1 = find<VcsTrigger> {
 | 
			
		||||
            vcs {
 | 
			
		||||
                branchFilter = ""
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        trigger1.apply {
 | 
			
		||||
            enabled = false
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        val trigger2 = find<ScheduleTrigger> {
 | 
			
		||||
            schedule {
 | 
			
		||||
                schedulingPolicy = weekly {
 | 
			
		||||
                    dayOfWeek = ScheduleTrigger.DAY.Tuesday
 | 
			
		||||
                }
 | 
			
		||||
                branchFilter = ""
 | 
			
		||||
                triggerBuild = always()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        trigger2.apply {
 | 
			
		||||
            enabled = false
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    failureConditions {
 | 
			
		||||
        val feature1 = find<BuildFailureOnMetric> {
 | 
			
		||||
            failOnMetricChange {
 | 
			
		||||
                metric = BuildFailureOnMetric.MetricType.QODANA_TOTAL_PROBLEMS_COUNT
 | 
			
		||||
                threshold = 0
 | 
			
		||||
                units = BuildFailureOnMetric.MetricUnit.DEFAULT_UNIT
 | 
			
		||||
                comparison = BuildFailureOnMetric.MetricComparison.MORE
 | 
			
		||||
                compareTo = value()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        feature1.apply {
 | 
			
		||||
            param("metricKey", "QodanaProblemsNew")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								.teamcity/patches/buildTypes/Release.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								.teamcity/patches/buildTypes/Release.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
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 = 'Release'
 | 
			
		||||
accordingly, and delete the patch script.
 | 
			
		||||
*/
 | 
			
		||||
changeBuildType(RelativeId("Release")) {
 | 
			
		||||
    params {
 | 
			
		||||
        add {
 | 
			
		||||
            password("env.ORG_GRADLE_PROJECT_youtrackToken", "credentialsJSON:3cd3e867-282c-451f-b958-bc95d56a8450", display = ParameterDisplay.HIDDEN)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    expectSteps {
 | 
			
		||||
        gradle {
 | 
			
		||||
            tasks = "clean publishPlugin slackNotification"
 | 
			
		||||
            buildFile = ""
 | 
			
		||||
            enableStacktrace = true
 | 
			
		||||
            param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    steps {
 | 
			
		||||
        update<GradleBuildStep>(0) {
 | 
			
		||||
            clearConditions()
 | 
			
		||||
            tasks = "clean publishPlugin"
 | 
			
		||||
        }
 | 
			
		||||
        insert(1) {
 | 
			
		||||
            gradle {
 | 
			
		||||
                name = "Run Integrations"
 | 
			
		||||
                tasks = "releaseActions"
 | 
			
		||||
                param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        insert(2) {
 | 
			
		||||
            gradle {
 | 
			
		||||
                name = "Slack Notification"
 | 
			
		||||
                tasks = "slackNotification"
 | 
			
		||||
                param("org.jfrog.artifactory.selectedDeployableServer.defaultModuleVersionConfiguration", "GLOBAL")
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										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/*"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										50
									
								
								.teamcity/patches/projects/_Self.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								.teamcity/patches/projects/_Self.kts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
package patches.projects
 | 
			
		||||
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.*
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.AmazonEC2CloudImage
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.Project
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.amazonEC2CloudImage
 | 
			
		||||
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 root project
 | 
			
		||||
accordingly, and delete the patch script.
 | 
			
		||||
*/
 | 
			
		||||
changeProject(DslContext.projectId) {
 | 
			
		||||
    features {
 | 
			
		||||
        val feature1 = find<AmazonEC2CloudImage> {
 | 
			
		||||
            amazonEC2CloudImage {
 | 
			
		||||
                id = "PROJECT_EXT_768"
 | 
			
		||||
                profileId = "amazon-48"
 | 
			
		||||
                agentPoolId = "41"
 | 
			
		||||
                name = "BuildAgentsIdeaVim"
 | 
			
		||||
                vpcSubnetId = "subnet-58839511"
 | 
			
		||||
                keyPairName = ""
 | 
			
		||||
                instanceType = "c5d.xlarge"
 | 
			
		||||
                securityGroups = listOf("sg-eda08696", "sg-7332cf0f")
 | 
			
		||||
                useSpotInstances = true
 | 
			
		||||
                instanceTags = mapOf(
 | 
			
		||||
                    "project" to "idea-vim"
 | 
			
		||||
                )
 | 
			
		||||
                source = Source("ami-0fa17ce8238eb8868")
 | 
			
		||||
                param("image-instances-limit", "")
 | 
			
		||||
                param("spot-instance-price", "")
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        feature1.apply {
 | 
			
		||||
            profileId = "amazon-48"
 | 
			
		||||
            agentPoolId = "41"
 | 
			
		||||
            name = "BuildAgentsIdeaVim"
 | 
			
		||||
            vpcSubnetId = "subnet-58839511"
 | 
			
		||||
            keyPairName = ""
 | 
			
		||||
            instanceType = "c5d.xlarge"
 | 
			
		||||
            securityGroups = listOf("sg-eda08696", "sg-7332cf0f")
 | 
			
		||||
            useSpotInstances = true
 | 
			
		||||
            instanceTags = mapOf(
 | 
			
		||||
                "project" to "idea-vim"
 | 
			
		||||
            )
 | 
			
		||||
            source = Source("ami-07c529efaddafcf86")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								.teamcity/pom.xml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.teamcity/pom.xml
									
									
									
									
										vendored
									
									
								
							@@ -22,7 +22,7 @@
 | 
			
		||||
    </repository>
 | 
			
		||||
    <repository>
 | 
			
		||||
      <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>
 | 
			
		||||
        <enabled>true</enabled>
 | 
			
		||||
      </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.version
 | 
			
		||||
import jetbrains.buildServer.configs.kotlin.v2019_2.*
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
version = "2024.03"
 | 
			
		||||
project(_Self.Project)
 | 
			
		||||
version = "2020.2"
 | 
			
		||||
project(_Self.Project)
 | 
			
		||||
							
								
								
									
										68
									
								
								AUTHORS.md
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								AUTHORS.md
									
									
									
									
									
								
							@@ -455,74 +455,6 @@ Contributors:
 | 
			
		||||
  [![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:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										188
									
								
								CHANGES.md
									
									
									
									
									
								
							
							
						
						
									
										188
									
								
								CHANGES.md
									
									
									
									
									
								
							@@ -23,189 +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
 | 
			
		||||
usual beta standards.
 | 
			
		||||
 | 
			
		||||
## End of changelog file maintenance
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
## To Be Released
 | 
			
		||||
 | 
			
		||||
### Features:
 | 
			
		||||
* Add IdeaVim tutor. You can access it via the status bar icon.
 | 
			
		||||
@@ -215,7 +33,6 @@ This version of IdeaVim contains a lot of issues. Version 2.6.3 reverts these ch
 | 
			
		||||
* [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
 | 
			
		||||
@@ -226,9 +43,6 @@ This version of IdeaVim contains a lot of issues. Version 2.6.3 reverts these ch
 | 
			
		||||
* [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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,10 +32,6 @@ OK, ready to do some coding?
 | 
			
		||||
Yoo hoo! You’re all set to begin contributing.
 | 
			
		||||
We've prepared some useful configurations for you:
 | 
			
		||||
 | 
			
		||||
- `Start IJ with IdeaVim`
 | 
			
		||||
- `IdeaVim tests`
 | 
			
		||||
- `IdeaVim full verification`
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
2. Please avoid senseless text like "dhjkwaldjwa", "asdasdasd", "123 123 123 123", etc. Use a few lines of code or
 | 
			
		||||
the following template:
 | 
			
		||||
```text
 | 
			
		||||
Lorem Ipsum
 | 
			
		||||
 | 
			
		||||
Lorem ipsum dolor sit amet,
 | 
			
		||||
consectetur adipiscing elit
 | 
			
		||||
Sed in orci mauris.
 | 
			
		||||
Cras id tellus in ex imperdiet egestas.
 | 
			
		||||
```
 | 
			
		||||
2. Please avoid senseless text like "dhjkwaldjwa", "asdasdasd", "123 123 123 123", etc. Try to choose an example
 | 
			
		||||
text that is easy to read and understand what is wrong if the test fails. For example, take a few lines from your
 | 
			
		||||
favorite poem, or use Vladimir Nabokov’s “A Discovery" if you don't have one.
 | 
			
		||||
 | 
			
		||||
3. Don't forget to test your functionality with line start, line end, file start, file end, empty line, multiple
 | 
			
		||||
carets, dollar motion, etc.
 | 
			
		||||
@@ -160,7 +149,7 @@ This is just terrible. [You know what to do](https://github.com/JetBrains/ideavi
 | 
			
		||||
 | 
			
		||||
### 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)
 | 
			
		||||
* [Chat on gitter](https://gitter.im/JetBrains/ideavim)
 | 
			
		||||
* [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)
 | 
			
		||||
* [Contributors listing](AUTHORS.md)
 | 
			
		||||
 | 
			
		||||
[teamcity-build-status]: https://ideavim.teamcity.com/viewType.html?buildTypeId=Ideavim_IdeaVimTests_Latest_EAP&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]: https://teamcity.jetbrains.com/viewType.html?buildTypeId=IdeaVim_TestsForIntelliJEAP&guest=1
 | 
			
		||||
[teamcity-build-status-svg]: https://teamcity.jetbrains.com/app/rest/builds/buildType:(id:IdeaVim_TestsForIntelliJEAP)/statusIcon.svg?guest=1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										36
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								README.md
									
									
									
									
									
								
							@@ -22,10 +22,9 @@ IdeaVim is a Vim engine for JetBrains IDEs.
 | 
			
		||||
 | 
			
		||||
##### Resources:
 | 
			
		||||
 | 
			
		||||
* [Plugin homepage](https://lp.jetbrains.com/ideavim/)
 | 
			
		||||
* [Plugin on Marketplace](https://plugins.jetbrains.com/plugin/164-ideavim)
 | 
			
		||||
* [Plugin homepage](https://plugins.jetbrains.com/plugin/164-ideavim)
 | 
			
		||||
* [Changelog](CHANGES.md)
 | 
			
		||||
* [Continuous integration builds](https://ideavim.teamcity.com/)
 | 
			
		||||
* [Continuous integration builds](https://teamcity.jetbrains.com/project.html?projectId=IdeaVim&guest=1)
 | 
			
		||||
 | 
			
		||||
#### Compatibility
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +53,7 @@ Would you like to try new features and fixes? Join the Early Access Program and
 | 
			
		||||
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"/>
 | 
			
		||||
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:
 | 
			
		||||
@@ -204,7 +203,7 @@ Put your settings to `$XDG_CONFIG_HOME/ideavim/ideavimrc` file.
 | 
			
		||||
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/IdeaVim-Plugins)
 | 
			
		||||
 | 
			
		||||
Executing IDE Actions
 | 
			
		||||
---------------------
 | 
			
		||||
@@ -213,22 +212,22 @@ IdeaVim adds various commands for listing and executing arbitrary IDE actions as
 | 
			
		||||
Ex commands or via `:map` command mappings:
 | 
			
		||||
 | 
			
		||||
### 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})`
 | 
			
		||||
    * 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`.
 | 
			
		||||
    * :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).
 | 
			
		||||
* `: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`).
 | 
			
		||||
 | 
			
		||||
    <details>
 | 
			
		||||
        <summary><strong>"Track action IDs" Details</strong> (click to see)</summary>
 | 
			
		||||
        <summary><strong>"Track action Ids" Details</strong> (click to see)</summary>
 | 
			
		||||
        <picture>
 | 
			
		||||
            <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"/>
 | 
			
		||||
@@ -255,7 +254,8 @@ Ex commands or via `:map` command mappings:
 | 
			
		||||
##### 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
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
@@ -324,7 +324,7 @@ IdeaVim tips and tricks
 | 
			
		||||
- Use the power of IJ and Vim:
 | 
			
		||||
    - `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.
 | 
			
		||||
    - 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).
 | 
			
		||||
 | 
			
		||||
- Use your vim settings with IdeaVim. Put `source ~/.vimrc` in `~/.ideavimrc`.
 | 
			
		||||
@@ -352,12 +352,9 @@ is the source of this knowledge.
 | 
			
		||||
[Here](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/normal.c#L5365)
 | 
			
		||||
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).
 | 
			
		||||
 | 
			
		||||
- 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).
 | 
			
		||||
  As mentioned [here](https://vi.stackexchange.com/a/42885/12441), this was done this way to avoid the clash with X11.
 | 
			
		||||
- 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).
 | 
			
		||||
 | 
			
		||||
- Other [strange things](https://github.com/vim/vim/blob/759d81549c1340185f0d92524c563bb37697ea88/src/ex_docmd.c#L1845) from vi:
 | 
			
		||||
    * ":3"       jumps to line 3
 | 
			
		||||
@@ -366,11 +363,6 @@ is the full list of synonyms.
 | 
			
		||||
 | 
			
		||||
- 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
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
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.
 | 
			
		||||
File [RegExp.kt](src/main/java/com/maddyhome/idea/vim/regexp/RegExp.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
 | 
			
		||||
@@ -27,8 +27,8 @@ II) It is allowed to distribute a modified (or extended) version of Vim,
 | 
			
		||||
          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
 | 
			
		||||
          The current maintainer is Bram Moolenaar <Bram@vim.org>.  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
 | 
			
		||||
@@ -83,8 +83,3 @@ IV)  It is not allowed to remove this license from the distribution of the Vim
 | 
			
		||||
     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
 | 
			
		||||
							
								
								
									
										1429
									
								
								build.gradle.kts
									
									
									
									
									
								
							
							
						
						
									
										1429
									
								
								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>
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
Welcome to the IdeaVim wiki!
 | 
			
		||||
 | 
			
		||||
- List of IdeaVim plugins: [plugins](IdeaVim%20Plugins.md)
 | 
			
		||||
- Examples of `ideajoin` option (also known as "smart join"): ["ideajoin" examples](ideajoin-examples.md)
 | 
			
		||||
- List of "set" commands: ["set" commands](set-commands.md)
 | 
			
		||||
- Docs about "select" mode in vim: [select mode](Select-mode.md)
 | 
			
		||||
- List of IdeaVim plugins: [[plugins|IdeaVim Plugins]]
 | 
			
		||||
- Examples of `ideajoin` option (also known as "smart join"): [["ideajoin" examples|ideajoin-examples]]
 | 
			
		||||
- List of "set" commands: [["set" commands|set-commands]]
 | 
			
		||||
- Docs about "select" mode in vim: [[select mode|Select-mode]]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
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`:
 | 
			
		||||
IdeaVim plugins work like the original Vim plugins. If you want to turn of any of them, you have to enable it via this command in your `~/.ideavimrc`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Plug '<plugin-github-reference>'
 | 
			
		||||
@@ -44,21 +44,16 @@ All commands with the mappings are supported. See the [full list of supported co
 | 
			
		||||
 | 
			
		||||
<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'`
 | 
			
		||||
- Install [IdeaVim-sneak](https://plugins.jetbrains.com/plugin/15348-ideavim-sneak) plugin.
 | 
			
		||||
- Add the following command to `~/.ideavimrc`: `set 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
 | 
			
		||||
   
 | 
			
		||||
See the [docs](https://github.com/Mishkun/ideavim-sneak#usage)
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
@@ -82,7 +77,7 @@ Original plugin: [NERDTree](https://github.com/preservim/nerdtree).
 | 
			
		||||
   
 | 
			
		||||
### Instructions
 | 
			
		||||
   
 | 
			
		||||
[See here](NERDTree-support.md).
 | 
			
		||||
[[See here|NERDTree-support]].
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
@@ -129,26 +124,8 @@ Original plugin: [vim-multiple-cursors](https://github.com/terryma/vim-multiple-
 | 
			
		||||
      </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
 | 
			
		||||
```
 | 
			
		||||
   
 | 
			
		||||
https://github.com/terryma/vim-multiple-cursors/blob/master/doc/multiple_cursors.txt
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
@@ -411,7 +388,7 @@ https://github.com/adelarsq/vim-matchit/blob/master/doc/matchit.txt
 | 
			
		||||
Original plugin: [quick-scope](https://github.com/unblevable/quick-scope).
 | 
			
		||||
 | 
			
		||||
### Setup:
 | 
			
		||||
- Install [IdeaVim-Quickscope](https://plugins.jetbrains.com/plugin/19417-ideavim-quickscope) plugin.
 | 
			
		||||
- Install [IdeaVim-sneak](https://plugins.jetbrains.com/plugin/15348-ideavim-sneak) plugin.
 | 
			
		||||
- Add the following command to `~/.ideavimrc`: `set quickscope`
 | 
			
		||||
 | 
			
		||||
### Instructions
 | 
			
		||||
@@ -419,19 +396,3 @@ Original plugin: [quick-scope](https://github.com/unblevable/quick-scope).
 | 
			
		||||
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>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
IdeaVim supports the NERDTree plugin. Update your `~/.ideavimrc` to turn it on:
 | 
			
		||||
```vim
 | 
			
		||||
Plug 'preservim/nerdtree'
 | 
			
		||||
Plug 'preservim/nerdtree`
 | 
			
		||||
```
 | 
			
		||||
or
 | 
			
		||||
```vim
 | 
			
		||||
@@ -15,7 +15,7 @@ Use `set noNERDTree` to disable this extension.
 | 
			
		||||
 | 
			
		||||
```vim
 | 
			
		||||
set NERDTree
 | 
			
		||||
Plug 'preservim/nerdtree'
 | 
			
		||||
Plug 'preservim/nerdtree`
 | 
			
		||||
Plug 'https://github.com/preservim/nerdtree'
 | 
			
		||||
Plug 'https://github.com/scrooloose/nerdtree'
 | 
			
		||||
Plug 'scrooloose/nerdtree'
 | 
			
		||||
@@ -27,7 +27,7 @@ Plug 'nerdtree'
 | 
			
		||||
### Preview
 | 
			
		||||
 | 
			
		||||
<details>
 | 
			
		||||
<summary>Click for the preview</summary>
 | 
			
		||||
<summary>Click to the the preview</summary>
 | 
			
		||||
<img src="images/nerdtree.gif" alt="NERDTree example"/>
 | 
			
		||||
</details>
 | 
			
		||||
 | 
			
		||||
@@ -40,33 +40,30 @@ Plug 'nerdtree'
 | 
			
		||||
- `:NERDTreeFind`
 | 
			
		||||
- `:NERDTreeRefreshRoot`
 | 
			
		||||
 | 
			
		||||
| Key     | Description                                            | Map Setting                    |
 | 
			
		||||
|---------|--------------------------------------------------------|--------------------------------|
 | 
			
		||||
| `o`     | Open files, directories and bookmarks                  | `g:NERDTreeMapActivateNode`    |
 | 
			
		||||
| `go`    | Open selected file, but leave cursor in the NERDTree   | `g:NERDTreeMapPreview`         |
 | 
			
		||||
| `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` |
 | 
			
		||||
| `i`     | Open selected file in a split window                   | `g:NERDTreeMapOpenSplit`       |
 | 
			
		||||
| `gi`    | Same as i, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewSplit`    |
 | 
			
		||||
| `s`     | Open selected file in a new vsplit                     | `g:NERDTreeMapOpenVSplit`      |
 | 
			
		||||
| `gs`    | Same as s, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewVSplit`   |
 | 
			
		||||
| `O`     | Recursively open the selected directory                | `g:NERDTreeMapOpenRecursively` |
 | 
			
		||||
| `x`     | Close the current nodes parent                         | `g:NERDTreeMapCloseDir`        |
 | 
			
		||||
| `X`     | Recursively close all children of the current node     | `g:NERDTreeMapCloseChildren`   |
 | 
			
		||||
| `P`     | Jump to the root node                                  | `g:NERDTreeMapJumpRoot`        |
 | 
			
		||||
| `p`     | Jump to current nodes parent                           | `g:NERDTreeMapJumpParent`      | 
 | 
			
		||||
| `K`     | Jump up inside directories at the current tree depth   | `g:NERDTreeMapJumpFirstChild`  |
 | 
			
		||||
| `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-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 root                   | `g:NERDTreeMapRefreshRoot`     |
 | 
			
		||||
| `m`     | Display the NERDTree menu                              | `g:NERDTreeMapMenu`            |
 | 
			
		||||
| `q`     | Close the NERDTree window                              | `g:NERDTreeMapQuit`            |
 | 
			
		||||
| `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`          |
 | 
			
		||||
| Key     |  Description                                            |  Map Setting                   |
 | 
			
		||||
|---------|---------------------------------------------------------|--------------------------------|
 | 
			
		||||
| `o`     |  Open files, directories and bookmarks                  | `g:NERDTreeMapActivateNode`    |
 | 
			
		||||
| `go`    |  Open selected file, but leave cursor in the NERDTree   | `g:NERDTreeMapPreview`         |
 | 
			
		||||
| `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` |
 | 
			
		||||
| `i`     |  Open selected file in a split window                   | `g:NERDTreeMapOpenSplit`       |
 | 
			
		||||
| `gi`    |  Same as i, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewSplit`    |
 | 
			
		||||
| `s`     |  Open selected file in a new vsplit                     | `g:NERDTreeMapOpenVSplit`      |
 | 
			
		||||
| `gs`    |  Same as s, but leave the cursor on the NERDTree        | `g:NERDTreeMapPreviewVSplit`   |
 | 
			
		||||
| `O`     |  Recursively open the selected directory                | `g:NERDTreeMapOpenRecursively` |
 | 
			
		||||
| `x`     |  Close the current nodes parent                         | `g:NERDTreeMapCloseDir`        |
 | 
			
		||||
| `X`     |  Recursively close all children of the current node     | `g:NERDTreeMapCloseChildren`   |
 | 
			
		||||
| `P`     |  Jump to the root node                                  | `g:NERDTreeMapJumpRoot`        |
 | 
			
		||||
| `p`     |  Jump to current nodes parent                           | `g:NERDTreeMapJumpParent`      | 
 | 
			
		||||
| `K`     |  Jump up inside directories at the current tree depth   | `g:NERDTreeMapJumpFirstChild`  |
 | 
			
		||||
| `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-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 root                   | `g:NERDTreeMapRefreshRoot`     |
 | 
			
		||||
| `m`     |  Display the NERDTree menu                              | `g:NERDTreeMapMenu`            |
 | 
			
		||||
| `q`     |  Close the NERDTree window                              | `g:NERDTreeMapQuit`            |
 | 
			
		||||
| `A`     |  Zoom (maximize/minimize) the NERDTree window           | `g:NERDTreeMapToggleZoom`      |
 | 
			
		||||
 | 
			
		||||
### 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.
 | 
			
		||||
 | 
			
		||||
: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:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
										
											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