mirror of
				https://github.com/cmderdev/cmder.git
				synced 2025-10-30 08:51:57 +08:00 
			
		
		
		
	Compare commits
	
		
			110 Commits
		
	
	
		
			docs/impro
			...
			dependabot
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 1940e97ddc | ||
|  | 43ab19a74d | ||
|  | c7116bd533 | ||
|  | 05552dc51c | ||
|  | c6bfd6f276 | ||
|  | 1d51c4f402 | ||
|  | aff4ad259f | ||
|  | cb76868411 | ||
|  | abcb1a1aa1 | ||
|  | 93785426a6 | ||
|  | 00763846a2 | ||
|  | 1737bcdeb7 | ||
|  | 126347025f | ||
|  | 7ceacb63dd | ||
|  | 510178852d | ||
|  | 4d15730d05 | ||
|  | 25ccfeed77 | ||
|  | 42315d8cec | ||
|  | c6dbb89129 | ||
|  | 1cfba25beb | ||
|  | 2007baef6e | ||
|  | e220d114b2 | ||
|  | 4204faa063 | ||
|  | 540532f126 | ||
|  | 41195ad8dd | ||
|  | 28f6098d48 | ||
|  | b56a6d43cb | ||
|  | d2f7136ef8 | ||
|  | 4daff054eb | ||
|  | 45fd0c2666 | ||
|  | 5145a15139 | ||
|  | 92419a48fc | ||
|  | c9b77f618a | ||
|  | a2e4884ea1 | ||
|  | 62a46140eb | ||
|  | ae518cded8 | ||
|  | 4ad76d8274 | ||
|  | 8a199bf47b | ||
|  | 457d99da0b | ||
|  | 52762636dc | ||
|  | ed6c9b2bc9 | ||
|  | 7753622897 | ||
|  | 18950135ef | ||
|  | b59647b570 | ||
|  | 2135fce19f | ||
|  | 219c879582 | ||
|  | 289bcf03a5 | ||
|  | 50bc05fee7 | ||
|  | 8d916a4446 | ||
|  | 5e22496aca | ||
|  | 8b6add75cf | ||
|  | 8498447878 | ||
|  | 0874f4be44 | ||
|  | ffb93b1804 | ||
|  | 092dc4d323 | ||
|  | 39afad1743 | ||
|  | d0cb6b5c23 | ||
|  | 9ee2bef7cd | ||
|  | a409a1cce8 | ||
|  | 3b8e87de84 | ||
|  | faf66542b4 | ||
|  | d3497f5eb0 | ||
|  | 98a1e9621e | ||
|  | 4f32d23c30 | ||
|  | ad5c80bcd2 | ||
|  | 9a135947af | ||
|  | 1b9a1e5b6f | ||
|  | 1adaab963b | ||
|  | 29650960aa | ||
|  | 41f0454b05 | ||
|  | 3ea9728ffd | ||
|  | a01fb4c444 | ||
|  | 4b0344172a | ||
|  | 4104a5612f | ||
|  | 5e219fe34e | ||
|  | ff7621c1da | ||
|  | 9be28807cb | ||
|  | 5d4c45d099 | ||
|  | e2168a361c | ||
|  | f517494dc4 | ||
|  | 7542376213 | ||
|  | 84ee96c64f | ||
|  | ad804eda44 | ||
|  | 15addb87ee | ||
|  | e9750ab73d | ||
|  | 47258fbd2b | ||
|  | 37c41e80df | ||
|  | 59e14a1783 | ||
|  | 34f2aabb8e | ||
|  | 5a90558714 | ||
|  | 845720e25a | ||
|  | c1f8dfdb27 | ||
|  | 55676399d5 | ||
|  | 48e4dff882 | ||
|  | a605ec520d | ||
|  | 5fab87f4d6 | ||
|  | c9153c96bf | ||
|  | 74381ecd19 | ||
|  | 50c3ea4ab3 | ||
|  | 8d39f79a90 | ||
|  | 7b880efda4 | ||
|  | 3f53d1b927 | ||
|  | 4aefd0bb71 | ||
|  | 7daeb465e8 | ||
|  | 6180aa53b3 | ||
|  | 23488fcbb2 | ||
|  | d838f861af | ||
|  | d80202c791 | ||
|  | 5e3b70338d | ||
|  | a4ea326a62 | 
							
								
								
									
										33
									
								
								.github/workflows/branches.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/branches.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | name: Update branches | ||||||
|  |  | ||||||
|  | # Controls when the action will run. | ||||||
|  | on: | ||||||
|  |   # Triggers the workflow on push events for the development branch | ||||||
|  |   push: | ||||||
|  |     branches: [ master ] | ||||||
|  |  | ||||||
|  |   # Allows you to run this workflow manually from the Actions tab | ||||||
|  |   workflow_dispatch: | ||||||
|  |  | ||||||
|  | # A workflow run is made up of one or more jobs that can run sequentially or in parallel | ||||||
|  | jobs: | ||||||
|  |   # This job updates the development branch with the master branch | ||||||
|  |   update-development: | ||||||
|  |     # The type of runner that the job will run on | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|  |     # Steps represent a sequence of tasks that will be executed as part of the job | ||||||
|  |     steps: | ||||||
|  |       # Checks-out the repository under $GITHUB_WORKSPACE, so the job can access it | ||||||
|  |       - uses: actions/checkout@v5 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 # fetch all history for all branches and tags | ||||||
|  |  | ||||||
|  |       # Runs a single command using the runners shell | ||||||
|  |       - name: Merge master into development | ||||||
|  |         run: | | ||||||
|  |           git config user.name "${{ github.actor }}" | ||||||
|  |           git config user.email "${{ github.actor }}@users.noreply.github.com" | ||||||
|  |           git checkout development | ||||||
|  |           git merge --no-ff master | ||||||
|  |           git push origin development | ||||||
							
								
								
									
										20
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -11,7 +11,7 @@ on: | |||||||
|     tags: |     tags: | ||||||
|       - "v*" |       - "v*" | ||||||
|   pull_request: |   pull_request: | ||||||
|     branches: [ "master" ] |     branches: [ "master", "development" ] | ||||||
|  |  | ||||||
| #---------------------------------# | #---------------------------------# | ||||||
| #    environment configuration    # | #    environment configuration    # | ||||||
| @@ -30,15 +30,17 @@ jobs: | |||||||
|   build: |   build: | ||||||
|     name: Build Project |     name: Build Project | ||||||
|     runs-on: windows-latest |     runs-on: windows-latest | ||||||
|  |     permissions: | ||||||
|  |       contents: write | ||||||
|  |       discussions: write | ||||||
|     steps: |     steps: | ||||||
|     - name: Check out repository code (Action from GitHub) |     - name: Check out repository code (Action from GitHub) | ||||||
|       uses: actions/checkout@v3 |       uses: actions/checkout@v5 | ||||||
|       with: |       with: | ||||||
|         fetch-depth: 0 |         fetch-depth: 0 | ||||||
|  |  | ||||||
|     - name: Add MSBuild to PATH |     - name: Add MSBuild to PATH | ||||||
|       uses: microsoft/setup-msbuild@v1 |       uses: microsoft/setup-msbuild@v2 | ||||||
|  |  | ||||||
|     - name: Build Cmder Launcher |     - name: Build Cmder Launcher | ||||||
|       shell: pwsh |       shell: pwsh | ||||||
| @@ -51,32 +53,32 @@ jobs: | |||||||
|       run: .\pack.ps1 -verbose |       run: .\pack.ps1 -verbose | ||||||
|  |  | ||||||
|     - name: Upload artifact (cmder.zip) |     - name: Upload artifact (cmder.zip) | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v5 | ||||||
|       with: |       with: | ||||||
|         path: build/cmder.zip |         path: build/cmder.zip | ||||||
|         name: cmder.zip |         name: cmder.zip | ||||||
|         if-no-files-found: error |         if-no-files-found: error | ||||||
|  |  | ||||||
|     - name: Upload artifact (cmder.7z) |     - name: Upload artifact (cmder.7z) | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v5 | ||||||
|       with: |       with: | ||||||
|         path: build/cmder.7z |         path: build/cmder.7z | ||||||
|         name: cmder.7z |         name: cmder.7z | ||||||
|  |  | ||||||
|     - name: Upload artifact (cmder_mini.zip) |     - name: Upload artifact (cmder_mini.zip) | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v5 | ||||||
|       with: |       with: | ||||||
|         path: build/cmder_mini.zip |         path: build/cmder_mini.zip | ||||||
|         name: cmder_mini.zip |         name: cmder_mini.zip | ||||||
|  |  | ||||||
|     - name: Upload artifact (hashes.txt) |     - name: Upload artifact (hashes.txt) | ||||||
|       uses: actions/upload-artifact@v3 |       uses: actions/upload-artifact@v5 | ||||||
|       with: |       with: | ||||||
|         path: build/hashes.txt |         path: build/hashes.txt | ||||||
|         name: hashes.txt |         name: hashes.txt | ||||||
|  |  | ||||||
|     - name: Create Release |     - name: Create Release | ||||||
|       uses: softprops/action-gh-release@v1 |       uses: softprops/action-gh-release@v2 | ||||||
|       with: |       with: | ||||||
|         files: | |         files: | | ||||||
|           build/cmder.zip |           build/cmder.zip | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -3,20 +3,25 @@ | |||||||
| # | # | ||||||
| # You may wish to alter this file to override the set of languages analyzed, | # You may wish to alter this file to override the set of languages analyzed, | ||||||
| # or to provide custom queries or build logic. | # or to provide custom queries or build logic. | ||||||
| # |  | ||||||
| # ******** NOTE ******** |  | ||||||
| # We have attempted to detect the languages in your repository. Please check |  | ||||||
| # the `language` matrix defined below to confirm you have the correct set of |  | ||||||
| # supported CodeQL languages. |  | ||||||
| # |  | ||||||
| name: "CodeQL" | name: "CodeQL" | ||||||
|  |  | ||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
|     branches: [ "master" ] |     branches: [ "master", "development" ] | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**/*.md' | ||||||
|  |       - '**/*.txt' | ||||||
|  |       - '.github/**' | ||||||
|  |       - '**/.gitignore' | ||||||
|   pull_request: |   pull_request: | ||||||
|     # The branches below must be a subset of the branches above |     # The branches below must be a subset of the branches above | ||||||
|     branches: [ "master" ] |     branches: [ "master", "development" ] | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**/*.md' | ||||||
|  |       - '**/*.txt' | ||||||
|  |       - '.github/**' | ||||||
|  |       - '**/.gitignore' | ||||||
|   schedule: |   schedule: | ||||||
|     - cron: '30 19 * * 0' |     - cron: '30 19 * * 0' | ||||||
|  |  | ||||||
| @@ -40,11 +45,11 @@ jobs: | |||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|     - name: Checkout repository |     - name: Checkout repository | ||||||
|       uses: actions/checkout@v3 |       uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|     # Initializes the CodeQL tools for scanning. |     # Initializes the CodeQL tools for scanning. | ||||||
|     - name: Initialize CodeQL |     - name: Initialize CodeQL | ||||||
|       uses: github/codeql-action/init@v2 |       uses: github/codeql-action/init@v3 | ||||||
|       with: |       with: | ||||||
|         languages: ${{ matrix.language }} |         languages: ${{ matrix.language }} | ||||||
|         # If you wish to specify custom queries, you can do so here or in a config file. |         # If you wish to specify custom queries, you can do so here or in a config file. | ||||||
| @@ -55,7 +60,7 @@ jobs: | |||||||
|         # queries: security-extended,security-and-quality |         # queries: security-extended,security-and-quality | ||||||
|  |  | ||||||
|     - name: Add MSBuild to PATH |     - name: Add MSBuild to PATH | ||||||
|       uses: microsoft/setup-msbuild@v1 |       uses: microsoft/setup-msbuild@v2 | ||||||
|  |  | ||||||
|     - name: Build Cmder Launcher |     - name: Build Cmder Launcher | ||||||
|       shell: pwsh |       shell: pwsh | ||||||
| @@ -63,6 +68,6 @@ jobs: | |||||||
|       run: .\build.ps1 -Compile -verbose |       run: .\build.ps1 -Compile -verbose | ||||||
|  |  | ||||||
|     - name: Perform CodeQL Analysis |     - name: Perform CodeQL Analysis | ||||||
|       uses: github/codeql-action/analyze@v2 |       uses: github/codeql-action/analyze@v3 | ||||||
|       with: |       with: | ||||||
|         category: "/language:${{matrix.language}}" |         category: "/language:${{matrix.language}}" | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								.github/workflows/tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/tests.yml
									
									
									
									
										vendored
									
									
								
							| @@ -4,9 +4,21 @@ on: | |||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - master | ||||||
|  |       - development | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**/*.md' | ||||||
|  |       - '**/*.txt' | ||||||
|  |       - '.github/**' | ||||||
|  |       - '**/.gitignore' | ||||||
|   pull_request: |   pull_request: | ||||||
|     branches: |     branches: | ||||||
|       - master |       - master | ||||||
|  |       - development | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**/*.md' | ||||||
|  |       - '**/*.txt' | ||||||
|  |       - '.github/**' | ||||||
|  |       - '**/.gitignore' | ||||||
|  |  | ||||||
| defaults: | defaults: | ||||||
|   run: |   run: | ||||||
| @@ -26,7 +38,7 @@ jobs: | |||||||
|     continue-on-error: false |     continue-on-error: false | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v3 |     - uses: actions/checkout@v5 | ||||||
|     - name: Initialize vendors |     - name: Initialize vendors | ||||||
|       shell: pwsh |       shell: pwsh | ||||||
|       working-directory: scripts |       working-directory: scripts | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/vendor.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/vendor.yml
									
									
									
									
										vendored
									
									
								
							| @@ -24,7 +24,7 @@ jobs: | |||||||
|       pull-requests: write |       pull-requests: write | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v3 |     - uses: actions/checkout@v5 | ||||||
|       with: |       with: | ||||||
|         fetch-depth: 0 |         fetch-depth: 0 | ||||||
|  |  | ||||||
| @@ -51,7 +51,7 @@ jobs: | |||||||
|           Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ') |           Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ') | ||||||
|           echo "UPDATE_MESSAGE<<<EOF`n$updateMessage`n<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 |           echo "UPDATE_MESSAGE<<<EOF`n$updateMessage`n<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | ||||||
|  |  | ||||||
|     - uses: peter-evans/create-pull-request@v5 |     - uses: peter-evans/create-pull-request@v7 | ||||||
|       if: env.COUNT_UPDATED > 0 |       if: env.COUNT_UPDATED > 0 | ||||||
|       with: |       with: | ||||||
|         title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies' |         title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies' | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								SECURITY.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								SECURITY.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | # Security Policy | ||||||
|  |  | ||||||
|  | ## Supported Versions | ||||||
|  |  | ||||||
|  | | Version | Supported          | | ||||||
|  | | ------- | ------------------ | | ||||||
|  | | 1.3.x   | :white_check_mark: | | ||||||
|  | | < 1.3   | ❎ | | ||||||
|  |  | ||||||
|  | ## Reporting a Vulnerability | ||||||
|  |  | ||||||
|  | If you discover a security issue in our project, please report it to [MartiUK](https://github.com/MartiUK). We will acknowledge your email within 24 hours and provide a more detailed response within 48 hours. We will try to fix the issue as soon as possible and inform you when a new version is released. | ||||||
|  |  | ||||||
|  | Please include as much of the information listed below as you can to help us better understand and resolve the issue: | ||||||
|  |  | ||||||
|  | - The nature of the issue | ||||||
|  | - The affected source file(s) with full paths | ||||||
|  | - The location of the vulnerable code (tag/branch/commit or direct URL) | ||||||
|  | - Any special configuration needed to reproduce the issue | ||||||
|  | - Detailed steps to reproduce the issue | ||||||
|  | - Proof-of-concept or exploit code (if possible) | ||||||
|  | - The impact of the issue, including how an attacker could exploit it | ||||||
|  |  | ||||||
|  | Please do not disclose the vulnerability publicly until we have resolved it. | ||||||
							
								
								
									
										60
									
								
								appveyor.yml
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								appveyor.yml
									
									
									
									
									
								
							| @@ -1,60 +0,0 @@ | |||||||
| #---------------------------------# |  | ||||||
| #      general configuration      # |  | ||||||
| #---------------------------------# |  | ||||||
|  |  | ||||||
| version: 1.0.{build}-{branch} |  | ||||||
|  |  | ||||||
| # branches to build |  | ||||||
| branches: |  | ||||||
|   # blacklist |  | ||||||
|   except: |  | ||||||
|     - gh-pages |  | ||||||
|  |  | ||||||
| #---------------------------------# |  | ||||||
| #    environment configuration    # |  | ||||||
| #---------------------------------# |  | ||||||
|  |  | ||||||
| # Operating system (build VM template) |  | ||||||
| os: Visual Studio 2022 |  | ||||||
|  |  | ||||||
| #---------------------------------# |  | ||||||
| #       build configuration       # |  | ||||||
| #---------------------------------# |  | ||||||
|  |  | ||||||
| build_script: |  | ||||||
|   - ps: cd scripts; .\build.ps1 -Compile -verbose |  | ||||||
|  |  | ||||||
| after_build: |  | ||||||
|   - ps: .\pack.ps1 -verbose |  | ||||||
|  |  | ||||||
| # Disable test search, since we don't have any. |  | ||||||
| test: off |  | ||||||
|  |  | ||||||
| #---------------------------------# |  | ||||||
| #           artifacts             # |  | ||||||
| #---------------------------------# |  | ||||||
|  |  | ||||||
| artifacts: |  | ||||||
|   - path: build\cmder.zip |  | ||||||
|     name: cmderzip |  | ||||||
|  |  | ||||||
|   - path: build\cmder.7z |  | ||||||
|     name: cmder7z |  | ||||||
|  |  | ||||||
|   - path: build\cmder_mini.zip |  | ||||||
|     name: cmdermini |  | ||||||
|  |  | ||||||
|   - path: build\hashes.txt |  | ||||||
|     name: hashes |  | ||||||
|  |  | ||||||
| #---------------------------------# |  | ||||||
| #         notifications           # |  | ||||||
| #---------------------------------# |  | ||||||
|  |  | ||||||
| notifications: |  | ||||||
|   # Webhook |  | ||||||
|   - provider: Webhook |  | ||||||
|     url: https://webhooks.gitter.im/e/d673abb1b2e659dcd625 |  | ||||||
|     on_build_success: true |  | ||||||
|     on_build_failure: true |  | ||||||
|     on_build_status_changed: true |  | ||||||
| @@ -469,9 +469,6 @@ void StartCmder(std::wstring  path = L"", bool is_single_mode = false, std::wstr | |||||||
| 		MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK); | 		MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	LRESULT lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL); |  | ||||||
| 	lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL); // For Windows >= 8 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| bool IsUserOnly(std::wstring opt) | bool IsUserOnly(std::wstring opt) | ||||||
|   | |||||||
| @@ -1,9 +1,8 @@ | |||||||
|  |  | ||||||
| /** | /** | ||||||
|  * WARNING: do NOT modify this file! the content of this file should be |  * WARNING: This file should NOT be manually modified! | ||||||
|  *          automatically genereted before AppVeyor builds using the |  *          The contents will be automatically generated using the `.ps1` PowerShell scripts, | ||||||
|  *          respective .ps1 Powershell scripts. |  *          during builds by the CI. | ||||||
|  * |  | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| ///////////////////////////////////////////////////////////////////////////// | ///////////////////////////////////////////////////////////////////////////// | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ if ($Compile) { | |||||||
|  |  | ||||||
|     Write-Verbose "Building the launcher..." |     Write-Verbose "Building the launcher..." | ||||||
|  |  | ||||||
|     # Referene: https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference |     # Reference: https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference | ||||||
|     msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release /m |     msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release /m | ||||||
|  |  | ||||||
|     if ($LastExitCode -ne 0) { |     if ($LastExitCode -ne 0) { | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/bin/cmder_shell.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/bin/cmder_shell.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -9,5 +9,5 @@ if "%cmder_init%" == "1" ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| pushd "%CMDER_ROOT%" | pushd "%CMDER_ROOT%" | ||||||
| call "%CMDER_ROOT%\vendor\init.bat" /f | call "%CMDER_ROOT%\vendor\init.bat" /f %* | ||||||
| popd | popd | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								vendor/bin/excd.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/bin/excd.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,8 @@ | |||||||
| @if "%~1"=="/?" (@cd %*) | @echo off | ||||||
| @set excd=%* | set excd=%* | ||||||
| @set excd=%excd:"=% | set excd=%excd:"=% | ||||||
| @if "%excd:~0,1%"=="~" (@set excd=%userprofile%\%excd:~1%) | set excd_param=/d | ||||||
| @if not "%~1"=="/d" (@set excd_param="/d") else (@set excd_param=) | if /i "%excd:~0,2%"=="/d" set "excd=%excd:~2%" | ||||||
| @cd %excd_param% "%excd%" | if "%excd:~0,1%"=="~" (set excd=%userprofile%\%excd:~1%) | ||||||
|  | if "%excd:~0,1%"=="/" (set excd_param=) | ||||||
|  | cd %excd_param% %excd% | ||||||
|   | |||||||
							
								
								
									
										153
									
								
								vendor/clink.lua
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										153
									
								
								vendor/clink.lua
									
									
									
									
										vendored
									
									
								
							| @@ -3,7 +3,12 @@ | |||||||
| -- !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED | -- !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED | ||||||
| -- !!! Use "%CMDER_ROOT%\config\<whatever>.lua" to add your lua startup scripts | -- !!! Use "%CMDER_ROOT%\config\<whatever>.lua" to add your lua startup scripts | ||||||
|  |  | ||||||
| -- luacheck: globals clink | -- luacheck: globals CMDER_SESSION | ||||||
|  | -- luacheck: globals uah_color cwd_color lamb_color clean_color dirty_color conflict_color unknown_color | ||||||
|  | -- luacheck: globals prompt_homeSymbol prompt_lambSymbol prompt_type prompt_useHomeSymbol prompt_useUserAtHost | ||||||
|  | -- luacheck: globals prompt_singleLine prompt_includeVersionControl | ||||||
|  | -- luacheck: globals prompt_overrideGitStatusOptIn prompt_overrideSvnStatusOptIn | ||||||
|  | -- luacheck: globals clink io.popenyield os.isdir settings.get | ||||||
|  |  | ||||||
| -- At first, load the original clink.lua file | -- At first, load the original clink.lua file | ||||||
| -- this is needed as we set the script path to this dir and therefore the original | -- this is needed as we set the script path to this dir and therefore the original | ||||||
| @@ -46,11 +51,37 @@ local function get_unknown_color() | |||||||
| end | end | ||||||
|  |  | ||||||
| --- | --- | ||||||
| -- Makes a string safe to use as the replacement in string.gsub | -- Escapes special characters in a string.gsub `find` parameter, so that it | ||||||
|  | -- can be matched as a literal plain text string, i.e. disable Lua pattern | ||||||
|  | -- matching.  See "Patterns" (https://www.lua.org/manual/5.2/manual.html#6.4.1). | ||||||
|  | -- @param {string} text Text to escape | ||||||
|  | -- @returns {string} Escaped text | ||||||
| --- | --- | ||||||
| local function verbatim(s) | local function escape_gsub_find_arg(text) | ||||||
|     s = string.gsub(s, "%%", "%%%%") |     return text and text:gsub("([-+*?.%%()%[%]$^])", "%%%1") or "" | ||||||
|     return s | end | ||||||
|  |  | ||||||
|  | --- | ||||||
|  | -- Escapes special characters in a string.gsub `replace` parameter, so that it | ||||||
|  | -- can be replaced as a literal plain text string, i.e. disable Lua pattern | ||||||
|  | -- matching.  See "Patterns" (https://www.lua.org/manual/5.2/manual.html#6.4.1). | ||||||
|  | -- @param {string} text Text to escape | ||||||
|  | -- @returns {string} Escaped text | ||||||
|  | --- | ||||||
|  | local function escape_gsub_replace_arg(text) | ||||||
|  |     return text and text:gsub("%%", "%%%%") or "" | ||||||
|  | end | ||||||
|  |  | ||||||
|  | --- | ||||||
|  | -- Perform string.sub, but disable Lua pattern matching and just treat both | ||||||
|  | -- the `find` and `replace` parameters as a literal plain text replacement. | ||||||
|  | -- @param {string} str Text in which to perform find and replace | ||||||
|  | -- @param {string} find Text to find (plain text; not a Lua pattern) | ||||||
|  | -- @param {string} replace Replacement text (plain text; not a Lua pattern) | ||||||
|  | -- @returns {string} Copy of the input `str` with `find` replaced by `replace` | ||||||
|  | --- | ||||||
|  | local function gsub_plain(str, find, replace) | ||||||
|  |     return string.gsub(str, escape_gsub_find_arg(find), escape_gsub_replace_arg(replace)) | ||||||
| end | end | ||||||
|  |  | ||||||
| -- Extracts only the folder name from the input Path | -- Extracts only the folder name from the input Path | ||||||
| @@ -148,15 +179,15 @@ local function set_prompt_filter() | |||||||
|     end |     end | ||||||
|  |  | ||||||
|     if prompt_useHomeSymbol and string.find(cwd, clink.get_env("HOME")) then |     if prompt_useHomeSymbol and string.find(cwd, clink.get_env("HOME")) then | ||||||
|         cwd = string.gsub(cwd, clink.get_env("HOME"), prompt_homeSymbol) |         cwd = gsub_plain(cwd, clink.get_env("HOME"), prompt_homeSymbol) | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     uah = '' |     local uah = '' | ||||||
|     if prompt_useUserAtHost then |     if prompt_useUserAtHost then | ||||||
|         uah = clink.get_env("USERNAME") .. "@" .. clink.get_env("COMPUTERNAME") .. ' ' |         uah = clink.get_env("USERNAME") .. "@" .. clink.get_env("COMPUTERNAME") .. ' ' | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     cr = "\n" |     local cr = "\n" | ||||||
|     if prompt_singleLine then |     if prompt_singleLine then | ||||||
|         cr = ' ' |         cr = ' ' | ||||||
|     end |     end | ||||||
| @@ -170,15 +201,15 @@ local function set_prompt_filter() | |||||||
|  |  | ||||||
|     local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or "" |     local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or "" | ||||||
|  |  | ||||||
|     prompt = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m " |     local prompt = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m " | ||||||
|     prompt = string.gsub(prompt, "{uah}", uah) |     prompt = gsub_plain(prompt, "{uah}", uah) | ||||||
|     prompt = string.gsub(prompt, "{cwd}", cwd) |     prompt = gsub_plain(prompt, "{cwd}", cwd) | ||||||
|     prompt = string.gsub(prompt, "{env}", env) |     prompt = gsub_plain(prompt, "{env}", env) | ||||||
|     clink.prompt.value = string.gsub(prompt, "{lamb}", prompt_lambSymbol) |     clink.prompt.value = gsub_plain(prompt, "{lamb}", prompt_lambSymbol) | ||||||
| end | end | ||||||
|  |  | ||||||
| local function percent_prompt_filter() | local function percent_prompt_filter() | ||||||
|     clink.prompt.value = string.gsub(clink.prompt.value, "{percent}", "%%") |     clink.prompt.value = gsub_plain(clink.prompt.value, "{percent}", "%") | ||||||
| end | end | ||||||
|  |  | ||||||
| --- | --- | ||||||
| @@ -191,7 +222,7 @@ end | |||||||
| local function get_dir_contains(path, dirname) | local function get_dir_contains(path, dirname) | ||||||
|  |  | ||||||
|     -- return parent path for specified entry (either file or directory) |     -- return parent path for specified entry (either file or directory) | ||||||
|     local function pathname(path) |     local function pathname(path) -- luacheck: ignore 432 | ||||||
|         local prefix = "" |         local prefix = "" | ||||||
|         local i = path:find("[\\/:][^\\/:]*$") |         local i = path:find("[\\/:][^\\/:]*$") | ||||||
|         if i then |         if i then | ||||||
| @@ -201,14 +232,14 @@ local function get_dir_contains(path, dirname) | |||||||
|     end |     end | ||||||
|  |  | ||||||
|     -- Navigates up one level |     -- Navigates up one level | ||||||
|     local function up_one_level(path) |     local function up_one_level(path) -- luacheck: ignore 432 | ||||||
|         if path == nil then path = '.' end |         if path == nil then path = '.' end | ||||||
|         if path == '.' then path = clink.get_cwd() end |         if path == '.' then path = clink.get_cwd() end | ||||||
|         return pathname(path) |         return pathname(path) | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     -- Checks if provided directory contains git directory |     -- Checks if provided directory contains git directory | ||||||
|     local function has_specified_dir(path, specified_dir) |     local function has_specified_dir(path, specified_dir) -- luacheck: ignore 432 | ||||||
|         if path == nil then path = '.' end |         if path == nil then path = '.' end | ||||||
|         local found_dirs = clink.find_dirs(path..'/'..specified_dir) |         local found_dirs = clink.find_dirs(path..'/'..specified_dir) | ||||||
|         if #found_dirs > 0 then return true end |         if #found_dirs > 0 then return true end | ||||||
| @@ -236,7 +267,7 @@ end | |||||||
| local function get_git_dir(path) | local function get_git_dir(path) | ||||||
|  |  | ||||||
|     -- return parent path for specified entry (either file or directory) |     -- return parent path for specified entry (either file or directory) | ||||||
|     local function pathname(path) |     local function pathname(path) -- luacheck: ignore 432 | ||||||
|         local prefix = "" |         local prefix = "" | ||||||
|         local i = path:find("[\\/:][^\\/:]*$") |         local i = path:find("[\\/:][^\\/:]*$") | ||||||
|         if i then |         if i then | ||||||
| @@ -255,7 +286,8 @@ local function get_git_dir(path) | |||||||
|         local gitfile = io.open(dir..'/.git') |         local gitfile = io.open(dir..'/.git') | ||||||
|         if not gitfile then return false end |         if not gitfile then return false end | ||||||
|  |  | ||||||
|         local git_dir = gitfile:read():match('gitdir: (.*)') |         local line = gitfile:read() or '' | ||||||
|  |         local git_dir = line:match('gitdir: (.*)') | ||||||
|         gitfile:close() |         gitfile:close() | ||||||
|  |  | ||||||
|         if os.isdir then -- only available in Clink v1.0.0 and higher |         if os.isdir then -- only available in Clink v1.0.0 and higher | ||||||
| @@ -303,6 +335,9 @@ local function get_git_branch(git_dir) | |||||||
|     local HEAD = head_file:read() |     local HEAD = head_file:read() | ||||||
|     head_file:close() |     head_file:close() | ||||||
|  |  | ||||||
|  |     -- If HEAD is missing, something is wrong. | ||||||
|  |     if not HEAD then return end | ||||||
|  |  | ||||||
|     -- if HEAD matches branch expression, then we're on named branch |     -- if HEAD matches branch expression, then we're on named branch | ||||||
|     -- otherwise it is a detached commit |     -- otherwise it is a detached commit | ||||||
|     local branch_name = HEAD:match('ref: refs/heads/(.+)') |     local branch_name = HEAD:match('ref: refs/heads/(.+)') | ||||||
| @@ -322,6 +357,9 @@ local function get_hg_branch() | |||||||
|     -- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\"" |     -- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\"" | ||||||
|     local cmd = "hg branch 2>nul" |     local cmd = "hg branch 2>nul" | ||||||
|     local file = io.popen(cmd) |     local file = io.popen(cmd) | ||||||
|  |     if not file then | ||||||
|  |         return false | ||||||
|  |     end | ||||||
|  |  | ||||||
|     for line in file:lines() do |     for line in file:lines() do | ||||||
|         local m = line:match("(.+)$") |         local m = line:match("(.+)$") | ||||||
| @@ -339,8 +377,12 @@ end | |||||||
| -- Find out current branch | -- Find out current branch | ||||||
| -- @return {false|svn branch name} | -- @return {false|svn branch name} | ||||||
| --- | --- | ||||||
| local function get_svn_branch(svn_dir) | local function get_svn_branch() | ||||||
|     local file = io_popenyield("svn info 2>nul") |     local file = io_popenyield("svn info 2>nul") | ||||||
|  |     if not file then | ||||||
|  |         return false | ||||||
|  |     end | ||||||
|  |  | ||||||
|     for line in file:lines() do |     for line in file:lines() do | ||||||
|         local m = line:match("^Relative URL:") |         local m = line:match("^Relative URL:") | ||||||
|         if m then |         if m then | ||||||
| @@ -359,12 +401,16 @@ end | |||||||
| --- | --- | ||||||
| local function get_git_status() | local function get_git_status() | ||||||
|     local file = io_popenyield("git --no-optional-locks status --porcelain 2>nul") |     local file = io_popenyield("git --no-optional-locks status --porcelain 2>nul") | ||||||
|  |     if not file then | ||||||
|  |         return {} | ||||||
|  |     end | ||||||
|  |  | ||||||
|     local conflict_found = false |     local conflict_found = false | ||||||
|     local is_status = true |     local is_status = true | ||||||
|     for line in file:lines() do |     for line in file:lines() do | ||||||
|         local code = line:sub(1, 2) |         local code = line:sub(1, 2) | ||||||
|         -- print (string.format("code: %s, line: %s", code, line)) |         -- print (string.format("code: %s, line: %s", code, line)) | ||||||
|         if code == "DD" or code == "AU" or code == "UD" or code == "UA" or code == "DU" or code == "AA" or code == "UU" then |         if code == "DD" or code == "AU" or code == "UD" or code == "UA" or code == "DU" or code == "AA" or code == "UU" then -- luacheck: no max line length | ||||||
|             is_status = false |             is_status = false | ||||||
|             conflict_found = true |             conflict_found = true | ||||||
|             break |             break | ||||||
| @@ -374,38 +420,27 @@ local function get_git_status() | |||||||
|         end |         end | ||||||
|     end |     end | ||||||
|     file:close() |     file:close() | ||||||
|  |  | ||||||
|     return { status = is_status, conflict = conflict_found } |     return { status = is_status, conflict = conflict_found } | ||||||
| end | end | ||||||
|  |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| -- Get the status of working dir |  | ||||||
| -- @return {bool} |  | ||||||
| --- |  | ||||||
| local function get_hg_status() |  | ||||||
|     local file = io.popen("hg status -0") |  | ||||||
|     for line in file:lines() do |  | ||||||
|         file:close() |  | ||||||
|         return false |  | ||||||
|     end |  | ||||||
|     file:close() |  | ||||||
|  |  | ||||||
|     return true |  | ||||||
| end |  | ||||||
|  |  | ||||||
| --- | --- | ||||||
| -- Get the status of working dir | -- Get the status of working dir | ||||||
| -- @return {bool} | -- @return {bool} | ||||||
| --- | --- | ||||||
| local function get_svn_status() | local function get_svn_status() | ||||||
|     local file = io_popenyield("svn status -q") |     local file = io_popenyield("svn status -q") | ||||||
|     for line in file:lines() do |     if not file then | ||||||
|  |         return { error = true } | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     for line in file:lines() do -- luacheck: ignore 512, no unused | ||||||
|         file:close() |         file:close() | ||||||
|         return false |         return { clean = false } | ||||||
|     end |     end | ||||||
|     file:close() |     file:close() | ||||||
|  |  | ||||||
|     return true |     return { clean = true } | ||||||
| end | end | ||||||
|  |  | ||||||
| --- | --- | ||||||
| @@ -433,6 +468,7 @@ local function get_git_status_setting() | |||||||
|     end |     end | ||||||
|  |  | ||||||
|     local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul") |     local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul") | ||||||
|  |     if gitStatusConfig then | ||||||
|         for line in gitStatusConfig:lines() do |         for line in gitStatusConfig:lines() do | ||||||
|             if string.match(line, 'false') then |             if string.match(line, 'false') then | ||||||
|                 gitStatusConfig:close() |                 gitStatusConfig:close() | ||||||
| @@ -441,8 +477,10 @@ local function get_git_status_setting() | |||||||
|             end |             end | ||||||
|         end |         end | ||||||
|         gitStatusConfig:close() |         gitStatusConfig:close() | ||||||
|  |     end | ||||||
|  |  | ||||||
|     local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul") |     local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul") | ||||||
|  |     if gitCmdStatusConfig then | ||||||
|         for line in gitCmdStatusConfig:lines() do |         for line in gitCmdStatusConfig:lines() do | ||||||
|             if string.match(line, 'false') then |             if string.match(line, 'false') then | ||||||
|                 gitCmdStatusConfig:close() |                 gitCmdStatusConfig:close() | ||||||
| @@ -451,6 +489,7 @@ local function get_git_status_setting() | |||||||
|             end |             end | ||||||
|         end |         end | ||||||
|         gitCmdStatusConfig:close() |         gitCmdStatusConfig:close() | ||||||
|  |     end | ||||||
|  |  | ||||||
|     last_git_status_setting = true |     last_git_status_setting = true | ||||||
|     return true |     return true | ||||||
| @@ -519,13 +558,13 @@ local function git_prompt_filter() | |||||||
|                 color = colors.conflict |                 color = colors.conflict | ||||||
|             end |             end | ||||||
|  |  | ||||||
|             clink.prompt.value = string.gsub(clink.prompt.value, "{git}", " "..color.."("..verbatim(branch)..")") |             clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", " "..color.."("..branch..")") | ||||||
|             return false |             return false | ||||||
|         end |         end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     -- No git present or not in git file |     -- No git present or not in git file | ||||||
|     clink.prompt.value = string.gsub(clink.prompt.value, "{git}", "") |     clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", "") | ||||||
|     return false |     return false | ||||||
| end | end | ||||||
|  |  | ||||||
| @@ -536,8 +575,6 @@ local function hg_prompt_filter() | |||||||
|         return false |         return false | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     local result = "" |  | ||||||
|  |  | ||||||
|     local hg_dir = get_hg_dir() |     local hg_dir = get_hg_dir() | ||||||
|     if hg_dir then |     if hg_dir then | ||||||
|         -- Colors for mercurial status |         -- Colors for mercurial status | ||||||
| @@ -559,16 +596,20 @@ local function hg_prompt_filter() | |||||||
|             local color = colors.clean |             local color = colors.clean | ||||||
|  |  | ||||||
|             local pipe = io.popen("hg status -amrd 2>&1") |             local pipe = io.popen("hg status -amrd 2>&1") | ||||||
|             local output = pipe:read('*all') |             if pipe then | ||||||
|             local rc = { pipe:close() } |                 output = pipe:read('*all') | ||||||
|  |                 pipe:close() | ||||||
|                 if output ~= nil and output ~= "" then color = colors.dirty end |                 if output ~= nil and output ~= "" then color = colors.dirty end | ||||||
|             result = color .. "(" .. branch .. ")" |             end | ||||||
|  |  | ||||||
|  |             local result = color .. "(" .. branch .. ")" | ||||||
|  |             clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", " "..result) | ||||||
|  |             return false | ||||||
|         end |         end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", " "..verbatim(result)) |     -- No hg present or not in hg repo | ||||||
|     return false |     clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "") | ||||||
| end | end | ||||||
|  |  | ||||||
| local function svn_prompt_filter() | local function svn_prompt_filter() | ||||||
| @@ -589,7 +630,6 @@ local function svn_prompt_filter() | |||||||
|     if svn_dir then |     if svn_dir then | ||||||
|         -- if we're inside of svn repo then try to detect current branch |         -- if we're inside of svn repo then try to detect current branch | ||||||
|         local branch = get_svn_branch() |         local branch = get_svn_branch() | ||||||
|         local color |  | ||||||
|         if branch then |         if branch then | ||||||
|             -- If in a different repo or branch than last time, discard cached info |             -- If in a different repo or branch than last time, discard cached info | ||||||
|             if cached_info.svn_dir ~= svn_dir or cached_info.svn_branch ~= branch then |             if cached_info.svn_dir ~= svn_dir or cached_info.svn_branch ~= branch then | ||||||
| @@ -599,7 +639,7 @@ local function svn_prompt_filter() | |||||||
|             end |             end | ||||||
|             -- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call |             -- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call | ||||||
|             local svnStatus |             local svnStatus | ||||||
|             if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then |             if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then -- luacheck: no max line length | ||||||
|                 svnStatus = clink_promptcoroutine(function () |                 svnStatus = clink_promptcoroutine(function () | ||||||
|                     return get_svn_status() |                     return get_svn_status() | ||||||
|                 end) |                 end) | ||||||
| @@ -613,21 +653,22 @@ local function svn_prompt_filter() | |||||||
|                 svnStatus = get_svn_status() |                 svnStatus = get_svn_status() | ||||||
|             end |             end | ||||||
|  |  | ||||||
|             if svnStatus == nil then |             local color | ||||||
|  |             if not svnStatus or svnStatus.error then | ||||||
|                 color = colors.nostatus |                 color = colors.nostatus | ||||||
|             elseif svnStatus then |             elseif svnStatus.clean then | ||||||
|                 color = colors.clean |                 color = colors.clean | ||||||
|             else |             else | ||||||
|                 color = colors.dirty |                 color = colors.dirty | ||||||
|             end |             end | ||||||
|  |  | ||||||
|             clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", " "..color.."("..verbatim(branch)..")") |             clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", " "..color.."("..branch..")") | ||||||
|             return false |             return false | ||||||
|         end |         end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     -- No svn present or not in svn file |     -- No svn present or not in svn file | ||||||
|     clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", "") |     clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", "") | ||||||
|     return false |     return false | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/clink_settings.default
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/clink_settings.default
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,10 @@ | |||||||
| # For explanation of these and other settings see: | # For explanation of these and other settings see: | ||||||
| # https://chrisant996.github.io/clink/clink.html | # https://chrisant996.github.io/clink/clink.html | ||||||
|  |  | ||||||
|  | # name: Expand envvars when completing | ||||||
|  | # type: boolean | ||||||
|  | match.expand_envvars = True | ||||||
|  |  | ||||||
| # name: Sets how command history expansion is applied | # name: Sets how command history expansion is applied | ||||||
| # type: enum | # type: enum | ||||||
| # options: off,on,not_squoted,not_dquoted,not_quoted | # options: off,on,not_squoted,not_dquoted,not_quoted | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								vendor/cmder_prompt_config.lua.default
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/cmder_prompt_config.lua.default
									
									
									
									
										vendored
									
									
								
							| @@ -48,15 +48,15 @@ prompt_overrideSvnStatusOptIn = false | |||||||
| -- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors | -- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors | ||||||
| -- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects | -- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects | ||||||
| -- | -- | ||||||
| -- Green:      "\x1b[1;33;49m" | -- Green:      "\x1b[1;32;49m" | ||||||
| -- Yellow:     "\x1b[1;32;49m" | -- Yellow:     "\x1b[1;33;49m" | ||||||
| -- Light Grey: "\x1b[1;30;49m" | -- Light Grey: "\x1b[1;30;49m" | ||||||
|  |  | ||||||
| -- Prompt Element Colors | -- Prompt Element Colors | ||||||
| uah_color = "\x1b[1;33;49m" -- Green = uah = [user]@[hostname] | uah_color = "\x1b[1;33;49m" -- Yellow uah = [user]@[hostname] | ||||||
| cwd_color = "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory | cwd_color = "\x1b[1;32;49m" -- Green cwd = Current Working Directory | ||||||
| lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color | lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color | ||||||
| clean_color = "\x1b[37;1m" | clean_color = "\x1b[37;1m" | ||||||
| dirty_color = "\x1b[33;3m" -- Yellow, Italic | dirty_color = "\x1b[33;3m" -- Yellow, Italic | ||||||
| conflict_color = "\x1b[31;1m" -- Red, Bold | conflict_color = "\x1b[31;1m" -- Red, Bold | ||||||
| unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color | unknown_color = "\x1b[37;1m" -- White, Bold = No VCS Status Branch Color | ||||||
|   | |||||||
							
								
								
									
										66
									
								
								vendor/git-prompt.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										66
									
								
								vendor/git-prompt.sh
									
									
									
									
										vendored
									
									
								
							| @@ -1,24 +1,33 @@ | |||||||
|  | # Returns 1 if git status for Cmder is disabled, otherwise returns 0 | ||||||
| function getGitStatusSetting() { | function getGitStatusSetting() { | ||||||
|   gitStatusSetting=$(git --no-pager config -l 2>/dev/null) |   local gitConfig | ||||||
|  |  | ||||||
|   if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]] |   # Get all git config entries for the current repository without pager | ||||||
|  |   gitConfig=$(git --no-pager config -l 2>/dev/null) || return 0  # treat failure as enabled | ||||||
|  |  | ||||||
|  |   # Check if git status for Cmder is disabled | ||||||
|  |   if [[ $gitConfig =~ (^|$'\n')cmder\.status=false($|$'\n') ]] || \ | ||||||
|  |      [[ $gitConfig =~ (^|$'\n')cmder\.shstatus=false($|$'\n') ]] | ||||||
|   then |   then | ||||||
|     echo false |     return 1  # disabled | ||||||
|   else |  | ||||||
|     echo true |  | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|  |   return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # Prints current branch or detached HEAD short commit hash | ||||||
| function getSimpleGitBranch() { | function getSimpleGitBranch() { | ||||||
|   gitDir=$(git rev-parse --git-dir 2>/dev/null) |   local gitDir | ||||||
|   if [ -z "$gitDir" ]; then |   gitDir=$(git rev-parse --git-dir 2>/dev/null) || return 0 | ||||||
|     return 0 |  | ||||||
|   fi |  | ||||||
|  |  | ||||||
|   headContent=$(< "$gitDir/HEAD") |   local headFile="$gitDir/HEAD" | ||||||
|   if [[ "$headContent" == "ref: refs/heads/"* ]] |   [ -f "$headFile" ] || return 0 | ||||||
|  |  | ||||||
|  |   local headContent | ||||||
|  |   headContent=$(< "$headFile") | ||||||
|  |   if [[ "$headContent" =~ ^ref:\ refs/heads/(.+)$ ]] | ||||||
|   then |   then | ||||||
|     echo " (${headContent:16})" |     echo " (${BASH_REMATCH[1]})" | ||||||
|   else |   else | ||||||
|     echo " (HEAD detached at ${headContent:0:7})" |     echo " (HEAD detached at ${headContent:0:7})" | ||||||
|   fi |   fi | ||||||
| @@ -33,18 +42,18 @@ fi | |||||||
|  |  | ||||||
| if test -f ~/.config/git/git-prompt.sh | if test -f ~/.config/git/git-prompt.sh | ||||||
| then | then | ||||||
|   if [[ $(getGitStatusSetting) == true ]] |   if getGitStatusSetting | ||||||
|   then |   then | ||||||
|     . ~/.config/git/git-prompt.sh |     . ~/.config/git/git-prompt.sh | ||||||
|   fi |   fi | ||||||
| else | else | ||||||
|   PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title |   # Taken parts from https://github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh | ||||||
|   # PS1="$PS1"'\n'                 # new line |   PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory | ||||||
|   PS1="$PS1"'\[\033[32m\]'       # change to green |   # PS1="$PS1"'\n'               # new line (disabled) | ||||||
|  |   PS1="$PS1"'\[\033[32m\]'       # change to green and bold | ||||||
|   PS1="$PS1"'\u@\h '             # user@host<space> |   PS1="$PS1"'\u@\h '             # user@host<space> | ||||||
|   # PS1="$PS1"'\[\033[35m\]'       # change to purple |   PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set) | ||||||
|   # PS1="$PS1"'$MSYSTEM '          # show MSYSTEM |   PS1="$PS1"'\[\033[1;33m\]'     # change to dark yellow in bold | ||||||
|   PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow |  | ||||||
|   PS1="$PS1"'\w'                 # current working directory |   PS1="$PS1"'\w'                 # current working directory | ||||||
|   if test -z "$WINELOADERNOEXEC" |   if test -z "$WINELOADERNOEXEC" | ||||||
|   then |   then | ||||||
| @@ -55,7 +64,7 @@ else | |||||||
|     if test -f "$COMPLETION_PATH/git-prompt.sh" |     if test -f "$COMPLETION_PATH/git-prompt.sh" | ||||||
|     then |     then | ||||||
|       . "$COMPLETION_PATH/git-completion.bash" |       . "$COMPLETION_PATH/git-completion.bash" | ||||||
|       if [[ $(getGitStatusSetting) == true ]] |       if getGitStatusSetting | ||||||
|       then |       then | ||||||
|         . "$COMPLETION_PATH/git-prompt.sh" |         . "$COMPLETION_PATH/git-prompt.sh" | ||||||
|         PS1="$PS1"'\[\033[36m\]'  # change color to cyan |         PS1="$PS1"'\[\033[36m\]'  # change color to cyan | ||||||
| @@ -66,9 +75,22 @@ else | |||||||
|       fi |       fi | ||||||
|     fi |     fi | ||||||
|   fi |   fi | ||||||
|   PS1="$PS1"'\[\033[0m\]'        # change color |   PS1="$PS1"'\[\033[0m\]'        # reset color | ||||||
|   PS1="$PS1"'\n'                 # new line |   PS1="$PS1"'\n'                 # new line | ||||||
|   PS1="$PS1"'λ '                 # prompt: always λ |   PS1="$PS1"'\[\033[30;1m\]'     # change color to grey in bold | ||||||
|  |   PS1="$PS1"'λ '                 # prompt: Cmder uses λ | ||||||
|  |   PS1="$PS1"'\[\033[0m\]'        # reset color | ||||||
| fi | fi | ||||||
|  |  | ||||||
| MSYS2_PS1="$PS1"               # for detection by MSYS2 SDK's bash.basrc | MSYS2_PS1="$PS1"               # for detection by MSYS2 SDK's bash.basrc | ||||||
|  |  | ||||||
|  | # Evaluate all user-specific Bash completion scripts (if any) | ||||||
|  | if test -z "$WINELOADERNOEXEC" | ||||||
|  | then | ||||||
|  |   for c in "$HOME"/bash_completion.d/*.bash | ||||||
|  |   do | ||||||
|  |     # Handle absence of any scripts (or the folder) gracefully | ||||||
|  |     test ! -f "$c" || | ||||||
|  |     . "$c" | ||||||
|  |   done | ||||||
|  | fi | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								vendor/init.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/init.bat
									
									
									
									
										vendored
									
									
								
							| @@ -153,7 +153,8 @@ if not "%CMDER_SHELL%" == "cmd" ( | |||||||
|     set CMDER_ALIASES=0 |     set CMDER_ALIASES=0 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| :: Pick right version of Clink | :: Pick the right version of Clink | ||||||
|  | :: TODO: Support for ARM | ||||||
| if "%PROCESSOR_ARCHITECTURE%"=="x86" ( | if "%PROCESSOR_ARCHITECTURE%"=="x86" ( | ||||||
|     set clink_architecture=x86 |     set clink_architecture=x86 | ||||||
|     set architecture_bits=32 |     set architecture_bits=32 | ||||||
| @@ -166,7 +167,7 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| if "%CMDER_CLINK%" == "1" ( | if "%CMDER_CLINK%" == "1" ( | ||||||
|     REM TODO: If clink is already injected, goto :CLINK_FINISH |     REM TODO: Detect if clink is already injected, if so goto :CLINK_FINISH | ||||||
|     goto :INJECT_CLINK |     goto :INJECT_CLINK | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -205,8 +206,10 @@ goto :SKIP_CLINK | |||||||
|  |  | ||||||
|     "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor" |     "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor" | ||||||
|  |  | ||||||
|     if errorlevel 1 ( |     :: Check if a fatal error occurred when trying to inject Clink | ||||||
|         %print_error% "Clink initialization has failed with error code: %errorlevel%" |     if errorlevel 2 ( | ||||||
|  |         REM %print_error% "Clink injection has failed with error code: %errorlevel%" | ||||||
|  |         goto :SKIP_CLINK | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     goto :CLINK_FINISH |     goto :CLINK_FINISH | ||||||
| @@ -237,8 +240,8 @@ if "%CMDER_CONFIGURED%" GTR "1" ( | |||||||
| :: Prepare for git-for-windows | :: Prepare for git-for-windows | ||||||
|  |  | ||||||
| :: Detect which git.exe version to use | :: Detect which git.exe version to use | ||||||
| :: * if the users points as to a specific git, use that | :: * if the user points to a specific git, use that | ||||||
| :: * test if a git is in path and if yes, use that | :: * test if git is in path and if yes, use that | ||||||
| :: * last, use our vendored git | :: * last, use our vendored git | ||||||
| :: also check that we have a recent enough version of git by examining the version string | :: also check that we have a recent enough version of git by examining the version string | ||||||
| if defined GIT_INSTALL_ROOT ( | if defined GIT_INSTALL_ROOT ( | ||||||
| @@ -423,7 +426,7 @@ if "%CMDER_ALIASES%" == "1" ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| :: Add aliases to the environment | :: Add aliases to the environment | ||||||
| type "%user_aliases%" | findstr /b /l /i "history=cat " >nul | type "%user_aliases%" | %WINDIR%\System32\findstr /b /l /i "history=cat " >nul | ||||||
| if "%ERRORLEVEL%" == "0" ( | if "%ERRORLEVEL%" == "0" ( | ||||||
|     echo Migrating alias 'history' to new Clink 1.x.x... |     echo Migrating alias 'history' to new Clink 1.x.x... | ||||||
|     call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history |     call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history | ||||||
|   | |||||||
							
								
								
									
										64
									
								
								vendor/lib/lib_base.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								vendor/lib/lib_base.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -10,9 +10,8 @@ if "%~1" == "/h" ( | |||||||
|  |  | ||||||
| exit /b | exit /b | ||||||
|  |  | ||||||
| :help |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::show_subs - shows all sub routines in a .bat/.cmd file with documentation | :::help - shows all sub routines in a .bat/.cmd file with documentation | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -20,16 +19,15 @@ exit /b | |||||||
| :::. | :::. | ||||||
| :::usage: | :::usage: | ||||||
| :::. | :::. | ||||||
| :::       %lib_base% show_subs "file" | :::       %lib_base% help "file" | ||||||
| :::. | :::. | ||||||
| :::options: | :::options: | ||||||
| :::. | :::. | ||||||
| :::       file <in> full path to file containing lib_routines to display | :::       file <in> full path to file containing lib_routines to display | ||||||
| :::. |  | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|     for /f "tokens=* delims=:" %%a in ('type "%~1" ^| %WINDIR%\System32\findstr /i /r "^:::"') do ( |  | ||||||
|         rem echo a="%%a" |  | ||||||
|  |  | ||||||
|  | :help | ||||||
|  |     for /f "tokens=* delims=:" %%a in ('%WINDIR%\System32\findstr /i /r "^:::" "%~1"') do ( | ||||||
|         if "%%a"=="." ( |         if "%%a"=="." ( | ||||||
|             echo. |             echo. | ||||||
|         ) else if /i "%%a" == "usage" ( |         ) else if /i "%%a" == "usage" ( | ||||||
| @@ -44,9 +42,13 @@ exit /b | |||||||
|     pause |     pause | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
| :cmder_shell |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::show_subs - shows all sub routines in a .bat/.cmd file with documentation | :::cmder_shell - Initializes the Cmder shell environment variables | ||||||
|  | :::. | ||||||
|  | :::description: | ||||||
|  | :::. | ||||||
|  | :::       This routine sets up the Cmder shell environment by detecting the | ||||||
|  | :::       command shell and initializing related variables. | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -55,15 +57,30 @@ exit /b | |||||||
| :::usage: | :::usage: | ||||||
| :::. | :::. | ||||||
| :::       %lib_base% cmder_shell | :::       %lib_base% cmder_shell | ||||||
| :::. |  | ||||||
| :::options: |  | ||||||
| :::. |  | ||||||
| :::       file <in> full path to file containing lib_routines to display |  | ||||||
| :::. |  | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | :cmder_shell | ||||||
|     call :detect_comspec %ComSpec% |     call :detect_comspec %ComSpec% | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
|  | :::=============================================================================== | ||||||
|  | :::detect_comspec - Detects the command shell being used::: | ||||||
|  | :::. | ||||||
|  | :::description: | ||||||
|  | :::. | ||||||
|  | :::       This function sets the CMDER_SHELL variable to the name of the | ||||||
|  | :::       detected command shell. It also initializes the CMDER_CLINK and | ||||||
|  | :::       CMDER_ALIASES variables if they are not already defined. | ||||||
|  | :::. | ||||||
|  | :::include: | ||||||
|  | :::. | ||||||
|  | :::       call "lib_base.cmd" | ||||||
|  | :::. | ||||||
|  | :::usage: | ||||||
|  | :::. | ||||||
|  | :::       %lib_base% detect_comspec %ComSpec% | ||||||
|  | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
| :detect_comspec | :detect_comspec | ||||||
|     set CMDER_SHELL=%~n1 |     set CMDER_SHELL=%~n1 | ||||||
|     if not defined CMDER_CLINK ( |     if not defined CMDER_CLINK ( | ||||||
| @@ -74,6 +91,27 @@ exit /b | |||||||
|     ) |     ) | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
|  | :::=============================================================================== | ||||||
|  | :::update_legacy_aliases - Updates the legacy alias definitions in the user_aliases file | ||||||
|  | :::. | ||||||
|  | :::description: | ||||||
|  | :::. | ||||||
|  | :::       This function checks if the user_aliases file contains the marker | ||||||
|  | :::       ";= Add aliases below here". If the marker is not found, it creates | ||||||
|  | :::       an initial user_aliases store by copying the default user_aliases file | ||||||
|  | :::       from the CMDER_ROOT directory. If the CMDER_USER_CONFIG environment | ||||||
|  | :::       variable is defined, it creates a backup of the existing user_aliases | ||||||
|  | :::       file before copying the default file. | ||||||
|  | :::. | ||||||
|  | :::include: | ||||||
|  | :::. | ||||||
|  | :::       call "lib_base.cmd" | ||||||
|  | :::. | ||||||
|  | :::usage: | ||||||
|  | :::. | ||||||
|  | :::       %lib_base% update_legacy_aliases | ||||||
|  | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
| :update_legacy_aliases | :update_legacy_aliases | ||||||
|     type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul |     type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul | ||||||
|     if "%errorlevel%" == "1" ( |     if "%errorlevel%" == "1" ( | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								vendor/lib/lib_git.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/lib/lib_git.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -12,7 +12,6 @@ if "%~1" == "/h" ( | |||||||
|  |  | ||||||
| exit /b | exit /b | ||||||
|  |  | ||||||
| :read_version |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::read_version - Get the git.exe version | :::read_version - Get the git.exe version | ||||||
| :::. | :::. | ||||||
| @@ -34,6 +33,7 @@ exit /b | |||||||
| :::  GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string | :::  GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | :read_version | ||||||
|     :: clear the variables |     :: clear the variables | ||||||
|     set GIT_VERSION_%~1= |     set GIT_VERSION_%~1= | ||||||
|  |  | ||||||
| @@ -55,6 +55,7 @@ exit /b | |||||||
|             set "GIT_VERSION=%%C" |             set "GIT_VERSION=%%C" | ||||||
|         ) else ( |         ) else ( | ||||||
|             echo "'git --version' returned an improper version string!" |             echo "'git --version' returned an improper version string!" | ||||||
|  |             %print_debug% :read_version "returned string: '%%A %%B %%C' by executable path: %git_executable%" | ||||||
|             pause |             pause | ||||||
|             exit /b |             exit /b | ||||||
|         ) |         ) | ||||||
| @@ -63,7 +64,6 @@ exit /b | |||||||
|  |  | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
| :parse_version |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::parse_version - Parse semantic version string 'x.x.x.x' and return the pieces | :::parse_version - Parse semantic version string 'x.x.x.x' and return the pieces | ||||||
| :::. | :::. | ||||||
| @@ -88,6 +88,7 @@ exit /b | |||||||
| :::  [SCOPE]_BUILD <out> Scoped Build version. | :::  [SCOPE]_BUILD <out> Scoped Build version. | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | :parse_version | ||||||
|     :: process a `x.x.x.xxxx.x` formatted string |     :: process a `x.x.x.xxxx.x` formatted string | ||||||
|     %print_debug% :parse_version "ARGV[1]=%~1, ARGV[2]=%~2" |     %print_debug% :parse_version "ARGV[1]=%~1, ARGV[2]=%~2" | ||||||
|  |  | ||||||
| @@ -110,9 +111,8 @@ exit /b | |||||||
|  |  | ||||||
| :endlocal_set_git_version | :endlocal_set_git_version | ||||||
|  |  | ||||||
| :validate_version |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::validate_version - Validate semantic version string 'x.x.x.x'. | :::validate_version - Validate semantic version string 'x.x.x.x' | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -128,6 +128,7 @@ exit /b | |||||||
| :::  [VERSION]   <in> Semantic version String. Ex: 1.2.3.4 | :::  [VERSION]   <in> Semantic version String. Ex: 1.2.3.4 | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | :validate_version | ||||||
|     :: now parse the version information into the corresponding variables |     :: now parse the version information into the corresponding variables | ||||||
|     %print_debug% :validate_version "ARGV[1]=%~1, ARGV[2]=%~2" |     %print_debug% :validate_version "ARGV[1]=%~1, ARGV[2]=%~2" | ||||||
|  |  | ||||||
| @@ -142,9 +143,8 @@ exit /b | |||||||
|     ) |     ) | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
| :compare_versions |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::compare_version - Compare semantic versions return latest version. | :::compare_version - Compare semantic versions and return latest version | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -160,6 +160,7 @@ exit /b | |||||||
| :::  [SCOPE2]    <in> Example: VENDOR | :::  [SCOPE2]    <in> Example: VENDOR | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | :compare_versions | ||||||
|     :: checks all major, minor, patch and build variables for the given arguments. |     :: checks all major, minor, patch and build variables for the given arguments. | ||||||
|     :: whichever binary that has the most recent version will be used based on the return code. |     :: whichever binary that has the most recent version will be used based on the return code. | ||||||
|  |  | ||||||
| @@ -184,7 +185,12 @@ exit /b | |||||||
|     endlocal & exit /b 0 |     endlocal & exit /b 0 | ||||||
|  |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::is_git_shim | :::is_git_shim - Check if the directory has a git.shim file | ||||||
|  | :::. | ||||||
|  | :::description: | ||||||
|  | :::. | ||||||
|  | :::  Shim is a small helper program for Scoop that calls the executable configured in git.shim file | ||||||
|  | :::  See: github.com/ScoopInstaller/Shim and github.com/cmderdev/cmder/pull/1905 | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -201,7 +207,7 @@ exit /b | |||||||
|  |  | ||||||
| :is_git_shim | :is_git_shim | ||||||
|     pushd "%~1" |     pushd "%~1" | ||||||
|     :: check if there's shim - and if yes follow the path |     :: check if there is a shim file - if yes, read the actual executable path | ||||||
|     setlocal enabledelayedexpansion |     setlocal enabledelayedexpansion | ||||||
|     if exist git.shim ( |     if exist git.shim ( | ||||||
|         for /F "tokens=2 delims== " %%I in (git.shim) do ( |         for /F "tokens=2 delims== " %%I in (git.shim) do ( | ||||||
| @@ -218,7 +224,7 @@ exit /b | |||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::compare_git_versions | :::compare_git_versions - Compare the user git version against the vendored version | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -252,7 +258,7 @@ exit /b | |||||||
|         :: if the user provided git executable is not found |         :: if the user provided git executable is not found | ||||||
|         IF ERRORLEVEL -255 IF NOT ERRORLEVEL -254 ( |         IF ERRORLEVEL -255 IF NOT ERRORLEVEL -254 ( | ||||||
|         :: if not exist "%git_executable%" ( |         :: if not exist "%git_executable%" ( | ||||||
|             %print_debug% ":compare_git_versions" "No git at "%git_executable%" found." |             %print_debug% ":compare_git_versions" "No git at '%git_executable%' found." | ||||||
|             set test_dir= |             set test_dir= | ||||||
|         ) |         ) | ||||||
|     ) |     ) | ||||||
| @@ -261,7 +267,7 @@ exit /b | |||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::get_user_git_version - get the version information for the user provided git binary | :::get_user_git_version - Get the version information for the user provided git binary | ||||||
| :::. | :::. | ||||||
| :::include: | :::include: | ||||||
| :::. | :::. | ||||||
| @@ -278,4 +284,3 @@ exit /b | |||||||
|     %print_debug% ":get_user_git_version" "get_user_git_version GIT_VERSION_USER: %GIT_VERSION_USER%" |     %print_debug% ":get_user_git_version" "get_user_git_version GIT_VERSION_USER: %GIT_VERSION_USER%" | ||||||
|     %lib_git% validate_version USER %GIT_VERSION_USER% |     %lib_git% validate_version USER %GIT_VERSION_USER% | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								vendor/lib/lib_path.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/lib/lib_path.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,5 @@ | |||||||
| @echo off | @echo off | ||||||
|  |  | ||||||
|  |  | ||||||
| call "%~dp0lib_base.cmd" | call "%~dp0lib_base.cmd" | ||||||
| call "%%~dp0lib_console" | call "%%~dp0lib_console" | ||||||
| set lib_path=call "%~dp0lib_path.cmd" | set lib_path=call "%~dp0lib_path.cmd" | ||||||
| @@ -11,6 +10,13 @@ if "%~1" == "/h" ( | |||||||
|     call :%* |     call :%* | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | setlocal enabledelayedexpansion | ||||||
|  | if not defined find_pathext ( | ||||||
|  |     set "find_pathext=!PATHEXT:;= !" | ||||||
|  |     set "find_pathext=!find_pathext:.=\.!" | ||||||
|  | ) | ||||||
|  | endlocal & set "find_pathext=%find_pathext%" | ||||||
|  |  | ||||||
| exit /b | exit /b | ||||||
|  |  | ||||||
| :enhance_path | :enhance_path | ||||||
| @@ -32,13 +38,12 @@ exit /b | |||||||
| :::options: | :::options: | ||||||
| ::: | ::: | ||||||
| :::  append     <in> Append to the path env variable rather than pre-pend. | :::  append     <in> Append to the path env variable rather than pre-pend. | ||||||
| ::B | ::: | ||||||
| ::: | ::: | ||||||
| :::output: | :::output: | ||||||
| ::: | ::: | ||||||
| :::  path       <out> Sets the path env variable if required. | :::  path       <out> Sets the path env variable if required. | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|     if "%~1" neq "" ( |     if "%~1" neq "" ( | ||||||
|         set "add_path=%~1" |         set "add_path=%~1" | ||||||
|     ) else ( |     ) else ( | ||||||
| @@ -52,7 +57,8 @@ exit /b | |||||||
|         set "position=" |         set "position=" | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     dir "%add_path%" | findstr -i "\.COM \.EXE \.BAT \.CMD \.PS1 \.VBS" >NUL |     dir "%add_path%" 2>NUL | findstr -i -e "%find_pathext%" >NUL | ||||||
|  |  | ||||||
|     if "%ERRORLEVEL%" == "0" ( |     if "%ERRORLEVEL%" == "0" ( | ||||||
|         set "add_to_path=%add_path%" |         set "add_to_path=%add_path%" | ||||||
|     ) else ( |     ) else ( | ||||||
| @@ -135,7 +141,6 @@ exit /b | |||||||
|  |  | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
|  |  | ||||||
| :set_found | :set_found | ||||||
|     if "%ERRORLEVEL%" == "0" ( |     if "%ERRORLEVEL%" == "0" ( | ||||||
|         set found=1 |         set found=1 | ||||||
| @@ -186,7 +191,7 @@ exit /b | |||||||
|         set "position=" |         set "position=" | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     dir "%add_path%" 2>NUL | findstr -i "\.COM \.EXE \.BAT \.CMD \.PS1 \.VBS" >NUL |     dir "%add_path%" 2>NUL | findstr -i -e "%find_pathext%" >NUL | ||||||
|  |  | ||||||
|     if "%ERRORLEVEL%" == "0" ( |     if "%ERRORLEVEL%" == "0" ( | ||||||
|         set "add_to_path=%add_path%" |         set "add_to_path=%add_path%" | ||||||
| @@ -239,4 +244,3 @@ exit /b | |||||||
|         %print_debug% :enhance_path_recursive "Env Var AFTER- depth=%depth%" |         %print_debug% :enhance_path_recursive "Env Var AFTER- depth=%depth%" | ||||||
|     ) |     ) | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								vendor/lib/lib_profile.cmd
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/lib/lib_profile.cmd
									
									
									
									
										vendored
									
									
								
							| @@ -12,26 +12,26 @@ if "%~1" == "/h" ( | |||||||
|  |  | ||||||
| exit /b | exit /b | ||||||
|  |  | ||||||
| :run_profile_d |  | ||||||
| :::=============================================================================== | :::=============================================================================== | ||||||
| :::run_profile_d - Run all scripts in the passed dir path | :::run_profile_d - Run all scripts in the passed directory path | ||||||
| ::: | :::. | ||||||
| :::include: | :::include: | ||||||
| ::: | :::. | ||||||
| :::  call "lib_profile.cmd" | :::  call "lib_profile.cmd" | ||||||
| ::: | :::. | ||||||
| :::usage: | :::usage: | ||||||
| ::: | :::. | ||||||
| :::  %lib_profile% "[dir_path]" | :::  %lib_profile% "[dir_path]" | ||||||
| ::: | :::. | ||||||
| :::required: | :::required: | ||||||
| ::: | :::. | ||||||
| :::  [dir_path] <in> Fully qualified directory path containing init *.cmd|*.bat. | :::  [dir_path] <in> Fully qualified directory path containing init *.cmd|*.bat. | ||||||
| :::                  Example: "c:\bin" | :::                  Example: "c:\bin" | ||||||
| ::: | :::. | ||||||
| :::  path       <out> Sets the path env variable if required. | :::  path       <out> Sets the path env variable if required. | ||||||
| :::------------------------------------------------------------------------------- | :::------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | :run_profile_d | ||||||
|     if not exist "%~1" ( |     if not exist "%~1" ( | ||||||
|         mkdir "%~1" |         mkdir "%~1" | ||||||
|     ) |     ) | ||||||
| @@ -43,4 +43,3 @@ exit /b | |||||||
|     ) |     ) | ||||||
|     popd |     popd | ||||||
|     exit /b |     exit /b | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/profile.ps1
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/profile.ps1
									
									
									
									
										vendored
									
									
								
							| @@ -28,7 +28,6 @@ if (!$ENV:CMDER_ROOT) { | |||||||
| # Remove trailing '\' | # Remove trailing '\' | ||||||
| $ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\") | $ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\") | ||||||
|  |  | ||||||
| # Do not load bundled PsGet if a module installer is already available |  | ||||||
| # -> recent PowerShell versions include PowerShellGet out of the box | # -> recent PowerShell versions include PowerShellGet out of the box | ||||||
| $moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue) | $moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue) | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								vendor/psmodules/Cmder.ps1
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/psmodules/Cmder.ps1
									
									
									
									
										vendored
									
									
								
							| @@ -18,7 +18,8 @@ function readVersion($gitPath) { | |||||||
| } | } | ||||||
|  |  | ||||||
| function isGitShim($gitPath) { | function isGitShim($gitPath) { | ||||||
|     # check if there's shim - and if yes follow the path |     # check if there is a shim file - if yes, read the actual executable path | ||||||
|  |     # See: github.com/ScoopInstaller/Shim | ||||||
|  |  | ||||||
|     if (Test-Path "${gitPath}\git.shim") { |     if (Test-Path "${gitPath}\git.shim") { | ||||||
|         $shim = (get-content "${gitPath}\git.shim") |         $shim = (get-content "${gitPath}\git.shim") | ||||||
|   | |||||||
							
								
								
									
										2155
									
								
								vendor/psmodules/PsGet/PsGet.psm1
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2155
									
								
								vendor/psmodules/PsGet/PsGet.psm1
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										16
									
								
								vendor/sources.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/sources.json
									
									
									
									
										vendored
									
									
								
							| @@ -1,22 +1,22 @@ | |||||||
| [ | [ | ||||||
|   { |   { | ||||||
|     "name": "git-for-windows", |     "name": "git-for-windows", | ||||||
|     "version": "2.40.0.windows.1", |     "version": "2.49.0.windows.1", | ||||||
|     "url": "https://github.com/git-for-windows/git/releases/download/v2.40.0.windows.1/PortableGit-2.40.0-64-bit.7z.exe" |     "url": "https://github.com/git-for-windows/git/releases/download/v2.49.0.windows.1/PortableGit-2.49.0-64-bit.7z.exe" | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     "name": "clink", |     "name": "clink", | ||||||
|     "version": "1.4.23", |     "version": "1.7.14", | ||||||
|     "url": "https://github.com/chrisant996/clink/releases/download/v1.4.23/clink.1.4.23.5fc3fc.zip" |     "url": "https://github.com/chrisant996/clink/releases/download/v1.7.14/clink.1.7.14.843933.zip" | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     "name": "conemu-maximus5", |     "name": "conemu-maximus5", | ||||||
|     "version": "22.12.18", |     "version": "23.07.24", | ||||||
|     "url": "https://github.com/Maximus5/ConEmu/releases/download/v22.12.18/ConEmuPack.221218.7z" |     "url": "https://github.com/Maximus5/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z" | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     "name": "clink-completions", |     "name": "clink-completions", | ||||||
|     "version": "0.4.7", |     "version": "0.6.2", | ||||||
|     "url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.7.zip" |     "url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.2.zip" | ||||||
|   } |   } | ||||||
| ] | ] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user