mirror of
https://github.com/cmderdev/cmder.git
synced 2025-11-09 13:49:05 +08:00
Compare commits
237 Commits
update-ven
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
480b638e0e | ||
|
|
7f0cfac498 | ||
|
|
7bb7678521 | ||
|
|
dc3b142b32 | ||
|
|
105ff0158b | ||
|
|
9c3bbe9b24 | ||
|
|
5536ea2088 | ||
|
|
f67e5704ed | ||
|
|
be44bac956 | ||
|
|
4fb6bed907 | ||
|
|
d001d9113b | ||
|
|
f4e68b0388 | ||
|
|
9030e7a25e | ||
|
|
a824b721cb | ||
|
|
1b03e29fa3 | ||
|
|
153f7310a1 | ||
|
|
e2fcb1ceda | ||
|
|
3172771f15 | ||
|
|
842393aea0 | ||
|
|
ef46d6465d | ||
|
|
eabadf96dc | ||
|
|
7b248bc9a3 | ||
|
|
697c122faf | ||
|
|
2ce0146d6e | ||
|
|
5dfa14ccce | ||
|
|
4d259ba84c | ||
|
|
bbd7507b4e | ||
|
|
b9246177c0 | ||
|
|
a571eedab6 | ||
|
|
a8d897f633 | ||
|
|
d900f6a630 | ||
|
|
304b8c7a05 | ||
|
|
fc24040e5e | ||
|
|
a1def7195e | ||
|
|
456ddcc59e | ||
|
|
f6adae5fb2 | ||
|
|
c039d977c2 | ||
|
|
60045d8c4f | ||
|
|
9b64482f37 | ||
|
|
bc970e7f78 | ||
|
|
7df73096d6 | ||
|
|
96f0bc9c6e | ||
|
|
f91d0bd5ba | ||
|
|
081e818465 | ||
|
|
b0ab14d29f | ||
|
|
96842bf09e | ||
|
|
ca068f5696 | ||
|
|
bf7d5166b4 | ||
|
|
3ca3b9f033 | ||
|
|
36670ea0dd | ||
|
|
a0d085f93e | ||
|
|
538662ce56 | ||
|
|
09ab2f25d8 | ||
|
|
f9d402d447 | ||
|
|
88ca59f82e | ||
|
|
d7fd2244cf | ||
|
|
85c0824553 | ||
|
|
667820105e | ||
|
|
6b26f5b9b4 | ||
|
|
a0a5b2ceab | ||
|
|
d37d173702 | ||
|
|
71b648f065 | ||
|
|
1f70cfa508 | ||
|
|
f6bf29dff6 | ||
|
|
d4433f8917 | ||
|
|
74b3f18c53 | ||
|
|
b522c136ad | ||
|
|
76711b43b4 | ||
|
|
375f63ac7e | ||
|
|
278694285c | ||
|
|
f9a4b0d9fc | ||
|
|
2f148fb36a | ||
|
|
4886f612ea | ||
|
|
d45651f805 | ||
|
|
66747a1126 | ||
|
|
b1b9bd22b5 | ||
|
|
545331a336 | ||
|
|
08ce81609a | ||
|
|
218400a4b8 | ||
|
|
173b86fbc8 | ||
|
|
8ec4789e35 | ||
|
|
e2784bca6a | ||
|
|
e52906ac9b | ||
|
|
623bd52b7c | ||
|
|
cf97d7d4ec | ||
|
|
bb14aeace5 | ||
|
|
76c5b9e116 | ||
|
|
aa156a2901 | ||
|
|
df42ff2d8c | ||
|
|
2868f9ee92 | ||
|
|
8b004be391 | ||
|
|
e3fc1a122d | ||
|
|
a44b30c3eb | ||
|
|
6d82cf897b | ||
|
|
7ac805cda5 | ||
|
|
c1bbc462f3 | ||
|
|
15d56185b7 | ||
|
|
8683dad111 | ||
|
|
d349f57e78 | ||
|
|
b412036262 | ||
|
|
06349694f0 | ||
|
|
e0aa20a080 | ||
|
|
b00dce8ba8 | ||
|
|
0c2e5ce1f2 | ||
|
|
bd3f1326f2 | ||
|
|
6cf4a42469 | ||
|
|
980083fb8c | ||
|
|
a1a6a02b04 | ||
|
|
74d7dd211f | ||
|
|
05f616fd76 | ||
|
|
9b5be7bd53 | ||
|
|
36ea61930f | ||
|
|
8ea276d9bd | ||
|
|
ebce8479ef | ||
|
|
6c95424124 | ||
|
|
b140db4617 | ||
|
|
5d0699a0ae | ||
|
|
d15e7ac69f | ||
|
|
cc40343157 | ||
|
|
940cadc526 | ||
|
|
9b466e3963 | ||
|
|
4740b836f3 | ||
|
|
fbd4c0422c | ||
|
|
ffa37d4d5c | ||
|
|
f4f6255c1a | ||
|
|
82ab068f12 | ||
|
|
e84f2ff365 | ||
|
|
339e6b40fd | ||
|
|
2e945fb02b | ||
|
|
e457afa8d1 | ||
|
|
f38e0b3e03 | ||
|
|
167f57bc97 | ||
|
|
9120d92318 | ||
|
|
9463d4ebc4 | ||
|
|
c5946422e7 | ||
|
|
e850f8241d | ||
|
|
db3889d5e5 | ||
|
|
881938ed18 | ||
|
|
546d921e58 | ||
|
|
92c662de2f | ||
|
|
aac7cfc47a | ||
|
|
d68c5b4487 | ||
|
|
5814792bd6 | ||
|
|
1ed3a36812 | ||
|
|
c5579d2cab | ||
|
|
131949bc77 | ||
|
|
6e213115fe | ||
|
|
28e9018ce0 | ||
|
|
38a91ded02 | ||
|
|
47292038ef | ||
|
|
d8238b0230 | ||
|
|
0a691cb7ee | ||
|
|
7a385ebf75 | ||
|
|
0f6c91d03a | ||
|
|
2beb27d490 | ||
|
|
a7f19f56e8 | ||
|
|
3ff9737076 | ||
|
|
467d564a7b | ||
|
|
9ce6911b49 | ||
|
|
e2303b11c0 | ||
|
|
5c101a0306 | ||
|
|
3c2a25af9f | ||
|
|
99b4e66c47 | ||
|
|
67b62784c8 | ||
|
|
016846d5cf | ||
|
|
30718ab32b | ||
|
|
26e684fb38 | ||
|
|
08fd69bdef | ||
|
|
f8aa7feb1f | ||
|
|
f0c18f1fc6 | ||
|
|
e01a553ca5 | ||
|
|
8025b5baa2 | ||
|
|
9a4041941e | ||
|
|
86091b74e9 | ||
|
|
f69e6226e5 | ||
|
|
01c41a9268 | ||
|
|
2ab6bcd72c | ||
|
|
678b482269 | ||
|
|
9c834b60a3 | ||
|
|
90d86a7e5e | ||
|
|
43a5e7e0b1 | ||
|
|
ddad83c70f | ||
|
|
01da2fe638 | ||
|
|
58db4e3419 | ||
|
|
3cc22ca764 | ||
|
|
3671a6e13c | ||
|
|
ad21915919 | ||
|
|
ab10e83d95 | ||
|
|
cb543528af | ||
|
|
e24f653d24 | ||
|
|
8bb2c5d587 | ||
|
|
7d3e691a69 | ||
|
|
7fa041dd7f | ||
|
|
63bab369cf | ||
|
|
759d0edd81 | ||
|
|
7db6297347 | ||
|
|
19fe75cbbe | ||
|
|
2728f36302 | ||
|
|
74c183c2a7 | ||
|
|
d75ba7bce2 | ||
|
|
968beb8a27 | ||
|
|
7c04ee9f6a | ||
|
|
94ea2da567 | ||
|
|
e52fa81fbb | ||
|
|
6b330b81f2 | ||
|
|
bd857bae2d | ||
|
|
52e1a02224 | ||
|
|
9b446b31d5 | ||
|
|
b47cf43d4c | ||
|
|
4129084494 | ||
|
|
3ced7a2a1b | ||
|
|
5311b25d9f | ||
|
|
cd92c9fa74 | ||
|
|
3ca03795d3 | ||
|
|
294f85e33c | ||
|
|
4bf659833c | ||
|
|
ea0a9bb062 | ||
|
|
86b9fb25ab | ||
|
|
7b55dab79e | ||
|
|
dac3090881 | ||
|
|
b2135cd0a9 | ||
|
|
9a851da2cf | ||
|
|
b46f7262e6 | ||
|
|
42568b7316 | ||
|
|
f08ad62e39 | ||
|
|
c4d9365584 | ||
|
|
e0b694324c | ||
|
|
f1e2fb5697 | ||
|
|
615ba5f816 | ||
|
|
9cbc1845fb | ||
|
|
3a2e747d22 | ||
|
|
1e623ecab4 | ||
|
|
02154a8f88 | ||
|
|
727a99b479 | ||
|
|
7e50f50863 | ||
|
|
56f45a81ca | ||
|
|
274cce1f00 |
15
.git-blame-ignore-revs
Normal file
15
.git-blame-ignore-revs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# List of whitespace-only commits to ignore in the Git blame;
|
||||||
|
# to improve tracking changes and avoid noise
|
||||||
|
58db4e3419bf1e5cc1bb61fcd7ce2ebbca89243a
|
||||||
|
efb3338f5cf0eec21e8a75abc62ee14965cb4a7e
|
||||||
|
3859f6ffc088b2ae78748abc84986f4adcadcd41
|
||||||
|
d6569192fc91167f555c3eff58402ff01f1197ea
|
||||||
|
67de97a492c9389f95499db38f9474a1c20ec585
|
||||||
|
a0d085f93eaa69c22449d0217e8daf9eaea2b180
|
||||||
|
1cfba25beb46c74bb1debca2bcfe7ac470e96172
|
||||||
|
f6bc623284914489e891bbac923feb774c862b99
|
||||||
|
abbab3f8b477e917d0a175d0de23cce121096631
|
||||||
|
126347025f9cade241beff182738b2527da7535e
|
||||||
|
4740b836f300658b27e6ad4d79efac63c9c24c24
|
||||||
|
be44bac95670b1cbbc91bd657882d985989846f9
|
||||||
|
f67e5704eda60526d495be758572181f01a6cac8
|
||||||
47
.github/workflows/build.yml
vendored
47
.github/workflows/build.yml
vendored
@@ -45,12 +45,52 @@ jobs:
|
|||||||
- name: Build Cmder Launcher
|
- name: Build Cmder Launcher
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
working-directory: scripts
|
working-directory: scripts
|
||||||
run: .\build.ps1 -Compile -verbose
|
run: .\build.ps1 -Compile -verbose -terminal all
|
||||||
|
|
||||||
- name: Pack the built files
|
- name: Pack the built files
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
working-directory: scripts
|
working-directory: scripts
|
||||||
run: .\pack.ps1 -verbose
|
run: .\pack.ps1 -verbose -terminal all
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_win_mini.zip)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build/cmder_win_mini.zip
|
||||||
|
name: cmder_win_mini.zip
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_win.7z)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build/cmder_win.7z
|
||||||
|
name: cmder_win.7z
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_win.zip)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build/cmder_win.zip
|
||||||
|
name: cmder_win.zip
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_wt.zip)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build/cmder_wt.zip
|
||||||
|
name: cmder_wt.zip
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_wt.7z)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build/cmder_wt.7z
|
||||||
|
name: cmder_wt.7z
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_wt_mini.zip)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
path: build/cmder_wt_mini.zip
|
||||||
|
name: cmder_wt_mini.zip
|
||||||
|
|
||||||
- name: Upload artifact (cmder.zip)
|
- name: Upload artifact (cmder.zip)
|
||||||
uses: actions/upload-artifact@v5
|
uses: actions/upload-artifact@v5
|
||||||
@@ -82,8 +122,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
build/cmder.zip
|
build/cmder.zip
|
||||||
|
build/cmder_wt.zip
|
||||||
build/cmder.7z
|
build/cmder.7z
|
||||||
|
build/cmder_wt.7z
|
||||||
build/cmder_mini.zip
|
build/cmder_mini.zip
|
||||||
|
build/cmder_wt_mini.zip
|
||||||
build/hashes.txt
|
build/hashes.txt
|
||||||
draft: true
|
draft: true
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
|
|||||||
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
@@ -48,7 +48,7 @@ jobs:
|
|||||||
cmd /c vendor\init.bat /v /d /t
|
cmd /c vendor\init.bat /v /d /t
|
||||||
- name: Testing PowerShell
|
- name: Testing PowerShell
|
||||||
run: |
|
run: |
|
||||||
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Invoke-Expression '. ''vendor\profile.ps1'''"
|
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "$env:CMDER_DEBUG='1'; . 'vendor\profile.ps1'"
|
||||||
- name: Testing Bash
|
- name: Testing Bash
|
||||||
run: |
|
run: |
|
||||||
bash vendor/cmder.sh
|
bash vendor/cmder.sh
|
||||||
|
|||||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -31,3 +31,10 @@ launcher/src/version.rc2
|
|||||||
.vs/*
|
.vs/*
|
||||||
.vscode
|
.vscode
|
||||||
.idea
|
.idea
|
||||||
|
.vagrant/
|
||||||
|
scripts/packer/iso/*.iso
|
||||||
|
!scripts/packer/floppy/*.exe
|
||||||
|
scripts/packer/packer_cache
|
||||||
|
scripts/packer/output-*
|
||||||
|
*.box
|
||||||
|
|
||||||
|
|||||||
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,5 +1,17 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
|
||||||
|
- Fixes #2940
|
||||||
|
|
||||||
|
### Adds
|
||||||
|
|
||||||
|
- Cmder for Windows
|
||||||
|
- Uses Windows and Git for Windows Native Terminals.
|
||||||
|
- Does not contain a terminal emulator like ConEmu or Windows Terminal.
|
||||||
|
|
||||||
## [1.3.20](https://github.com/cmderdev/cmder/tree/v1.3.20) (2022-03-18)
|
## [1.3.20](https://github.com/cmderdev/cmder/tree/v1.3.20) (2022-03-18)
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|||||||
74
Cmder.bat
74
Cmder.bat
@@ -1,20 +1,66 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
SET CMDER_ROOT=%~dp0
|
SET CMDER_ROOT=%~dp0
|
||||||
|
|
||||||
|
set CMDER_TERMINAL=conemu
|
||||||
|
if exist "%CMDER_ROOT%\vendor\windows-terminal\windowsterminal.exe" (
|
||||||
|
SET CMDER_TERMINAL=windows-terminal
|
||||||
|
)
|
||||||
|
|
||||||
|
if NOT "%~1" == "" (
|
||||||
|
SET CMDER_TERMINAL=%~1
|
||||||
|
shift
|
||||||
|
)
|
||||||
|
|
||||||
:: Remove Trailing '\'
|
:: Remove Trailing '\'
|
||||||
@if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
||||||
|
|
||||||
|
if not exist "%CMDER_ROOT%\config" md "%CMDER_ROOT%\config" 2>nul
|
||||||
|
|
||||||
|
call :%CMDER_TERMINAL%
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:conemu
|
||||||
|
if not exist "%CMDER_ROOT%\config\user_ConEmu.xml" (
|
||||||
|
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml" 1>nul
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: CMDER Initialization has Failed
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%~1" (
|
||||||
|
start %cmder_root%\vendor\conemu-maximus5\ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%~1"
|
||||||
|
) else (
|
||||||
|
start %cmder_root%\vendor\conemu-maximus5\ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%CMDER_ROOT%\config\user_ConEmu.xml"
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:windows-terminal
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\windows-terminal\settings" md "%CMDER_ROOT%\vendor\windows-terminal\settings" 2>nul
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\windows-terminal\.portable" echo "This makes this installation of Windows Terminal portable" >"%CMDER_ROOT%\vendor\windows-terminal\.portable" 2>nul
|
||||||
|
|
||||||
|
if exist "%CMDER_ROOT%\config\user_windows_terminal_settings.json" (
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json" (
|
||||||
|
echo "Copying user Windows Terminal settings to '%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json'..."
|
||||||
|
copy "%CMDER_ROOT%\config\user_windows_terminal_settings.json" "%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json" 1>nul
|
||||||
|
)
|
||||||
|
) else if not exist "%CMDER_ROOT%\config\user_windows_terminal_settings.json" (
|
||||||
|
if not exist "%CMDER_ROOT%\config" mkdir "%CMDER_ROOT%\config" 2>nul
|
||||||
|
echo "Copying default Windows Terminal settings to '%CMDER_ROOT%\config'..."
|
||||||
|
copy "%CMDER_ROOT%\vendor\windows_terminal_default_settings.json" "%CMDER_ROOT%\config\user_windows_terminal_settings.json" 1>nul
|
||||||
|
echo "Copying default Windows Terminal settings to '%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json'..."
|
||||||
|
copy "%CMDER_ROOT%\vendor\windows_terminal_default_settings.json" "%CMDER_ROOT%\vendor\windows-terminal\settings\settings.json" 1>nul
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: CMDER Initialization has Failed
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
) else if exist "%cmder_root%\vendor\windows-terminal\settings\settings.json" (
|
||||||
|
copy "%cmder_root%\vendor\windows-terminal\settings\settings.json" "%CMDER_ROOT%\config\user_windows_terminal_settings.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
start %cmder_root%\vendor\windows-terminal\windowsterminal.exe
|
||||||
|
exit /b
|
||||||
|
|
||||||
if not exist "%CMDER_ROOT%\config\user_ConEmu.xml" (
|
|
||||||
if not exist "%CMDER_ROOT%\config" mkdir "%CMDER_ROOT%\config" 2>nul
|
|
||||||
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml" 1>nul
|
|
||||||
if %errorlevel% neq 0 (
|
|
||||||
echo ERROR: CMDER Initialization has Failed
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if exist "%~1" (
|
|
||||||
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%~1"
|
|
||||||
) else (
|
|
||||||
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%CMDER_ROOT%\config\user_ConEmu.xml"
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
|||||||
| `/SINGLE` | Start Cmder in single mode. |
|
| `/SINGLE` | Start Cmder in single mode. |
|
||||||
| `/START [start_path]` | Folder path to start in. |
|
| `/START [start_path]` | Folder path to start in. |
|
||||||
| `/TASK [task_name]` | Task to start after launch. |
|
| `/TASK [task_name]` | Task to start after launch. |
|
||||||
| `/X [ConEmu extras pars]` | Forwards parameters to ConEmu |
|
| `-- [ConEmu extras pars]` | Forwards ALL remaining parameters to ConEmu. |
|
||||||
|
|
||||||
## Context Menu Integration
|
## Context Menu Integration
|
||||||
|
|
||||||
@@ -352,6 +352,10 @@ Cmder by default comes with a vendored ConEmu installation as the underlying ter
|
|||||||
|
|
||||||
However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator.
|
However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator.
|
||||||
|
|
||||||
|
⚠ *Note:* Cmder includes built-in support for Windows Terminal directory tracking via OSC 9;9 sequences. This enables "Duplicate Tab" and "Split Pane" features to preserve the current working directory for both `cmd.exe` and PowerShell sessions.
|
||||||
|
|
||||||
|
⚠ *Note:* Cmder also includes built-in support for [Windows Terminal shell integration](https://learn.microsoft.com/en-us/windows/terminal/tutorials/shell-integration) via OSC 133 sequences (A, B, C, D) for PowerShell sessions. This enables features like command navigation (jump between commands), command selection, visual command separators, command exit code tracking, and improved command history management in Windows Terminal.
|
||||||
|
|
||||||
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|||||||
@@ -188,6 +188,9 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\CmderLauncher.cpp" />
|
<ClCompile Include="src\CmderLauncher.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="..\icons\cmder.ico" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|||||||
@@ -107,9 +107,9 @@ bool FileExists(const wchar_t * filePath)
|
|||||||
|
|
||||||
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring title = L"", std::wstring iconPath = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
|
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring title = L"", std::wstring iconPath = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
|
||||||
{
|
{
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
wchar_t appId[MAX_PATH] = { 0 };
|
wchar_t appId[MAX_PATH] = { 0 };
|
||||||
#endif
|
#endif
|
||||||
wchar_t exeDir[MAX_PATH] = { 0 };
|
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||||
wchar_t icoPath[MAX_PATH] = { 0 };
|
wchar_t icoPath[MAX_PATH] = { 0 };
|
||||||
wchar_t cfgPath[MAX_PATH] = { 0 };
|
wchar_t cfgPath[MAX_PATH] = { 0 };
|
||||||
@@ -117,7 +117,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
wchar_t cpuCfgPath[MAX_PATH] = { 0 };
|
wchar_t cpuCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userCfgPath[MAX_PATH] = { 0 };
|
wchar_t userCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t defaultCfgPath[MAX_PATH] = { 0 };
|
wchar_t defaultCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
wchar_t terminalPath[MAX_PATH] = { 0 };
|
||||||
wchar_t configDirPath[MAX_PATH] = { 0 };
|
wchar_t configDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
||||||
@@ -128,21 +128,34 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 };
|
wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 };
|
||||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||||
wchar_t userConEmuCfgPath[MAX_PATH] = { 0 };
|
wchar_t userConEmuCfgPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t conEmuDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t winDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t vendorDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t initCmd[MAX_PATH] = { 0 };
|
||||||
|
wchar_t initPowerShell[MAX_PATH] = { 0 };
|
||||||
|
wchar_t initBash[MAX_PATH] = { 0 };
|
||||||
|
wchar_t initMintty[MAX_PATH] = { 0 };
|
||||||
|
wchar_t vendoredGit[MAX_PATH] = { 0 };
|
||||||
|
wchar_t amdx64Git[MAX_PATH] = { 0 };
|
||||||
|
wchar_t x86Git[MAX_PATH] = { 0 };
|
||||||
|
wchar_t programFiles[MAX_PATH] = { 0 };
|
||||||
|
wchar_t programFilesX86[MAX_PATH] = { 0 };
|
||||||
|
wchar_t minTTYPath[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
std::wstring cmderStart = path;
|
std::wstring cmderStart = path;
|
||||||
std::wstring cmderTask = taskName;
|
std::wstring cmderTask = taskName;
|
||||||
std::wstring cmderTitle = title;
|
std::wstring cmderTitle = title;
|
||||||
std::wstring cmderConEmuArgs = conemu_args;
|
std::wstring cmderTerminalArgs = conemu_args;
|
||||||
|
|
||||||
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||||
userConfigDirPath[cfgRoot.length()] = 0;
|
userConfigDirPath[cfgRoot.length()] = 0;
|
||||||
|
|
||||||
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||||
|
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
wcscpy_s(appId, exeDir);
|
wcscpy_s(appId, exeDir);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PathRemoveFileSpec(exeDir);
|
PathRemoveFileSpec(exeDir);
|
||||||
|
|
||||||
@@ -166,8 +179,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userProfilePath, configDirPath, L"user_profile.cmd");
|
PathCombine(userProfilePath, configDirPath, L"user_profile.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserProfilePath, (size_t)MAX_PATH);
|
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||||
@@ -184,8 +197,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd");
|
PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserAliasesPath, (size_t)MAX_PATH);
|
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||||
@@ -222,8 +235,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd");
|
PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserProfilePath, (size_t)MAX_PATH);
|
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||||
@@ -240,8 +253,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd");
|
PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd");
|
||||||
|
|
||||||
char *lPr = (char *)malloc(MAX_PATH);
|
char* lPr = (char*)malloc(MAX_PATH);
|
||||||
char *pR = (char *)malloc(MAX_PATH);
|
char* pR = (char*)malloc(MAX_PATH);
|
||||||
size_t i;
|
size_t i;
|
||||||
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
legacyUserAliasesPath, (size_t)MAX_PATH);
|
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||||
@@ -251,71 +264,158 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set path to vendored ConEmu config file
|
PathCombine(vendorDir, exeDir, L"vendor");
|
||||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
PathCombine(windowsTerminalDir, vendorDir, L"windows-terminal");
|
||||||
|
PathCombine(conEmuDir, vendorDir, L"conemu-maximus5");
|
||||||
|
GetEnvironmentVariable(L"WINDIR", winDir, MAX_PATH);
|
||||||
|
|
||||||
// Set path to Cmder default ConEmu config file
|
if (PathFileExists(windowsTerminalDir))
|
||||||
PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default");
|
{
|
||||||
|
// Set path to vendored ConEmu config file
|
||||||
|
PathCombine(cfgPath, windowsTerminalDir, L"settings\\settings.json");
|
||||||
|
|
||||||
// Check for machine-specific then user config source file.
|
// Set path to Cmder default ConEmu config file
|
||||||
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
PathCombine(defaultCfgPath, exeDir, L"vendor\\windows_terminal_default_settings.json");
|
||||||
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
|
||||||
|
|
||||||
// Set path to Cmder user ConEmu config file
|
// Check for machine-specific then user config source file.
|
||||||
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(cpuCfgPath, userConfigDirPath, L"windows_terminal_%COMPUTERNAME%_settings.json");
|
||||||
|
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||||
|
|
||||||
if ( PathFileExists(cpuCfgPath) || use_user_cfg == false ) // config/ConEmu-%COMPUTERNAME%.xml file exists or /m was specified on command line, use machine specific config.
|
// Set path to Cmder user ConEmu config file
|
||||||
|
PathCombine(userCfgPath, userConfigDirPath, L"user_windows_terminal_settings.json");
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
// Set path to vendored ConEmu config file
|
||||||
|
PathCombine(cfgPath, conEmuDir, L"ConEmu.xml");
|
||||||
|
|
||||||
|
// Set path to Cmder default ConEmu config file
|
||||||
|
PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default");
|
||||||
|
|
||||||
|
// Check for machine-specific then user config source file.
|
||||||
|
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
||||||
|
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||||
|
|
||||||
|
// Set path to Cmder user ConEmu config file
|
||||||
|
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wcscmp(cpuCfgPath, L"") != 0 && (PathFileExists(cpuCfgPath) || use_user_cfg == false)) // config/[host specific terminal emulator config] file exists or /m was specified on command line, use machine specific config.
|
||||||
{
|
{
|
||||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
{
|
{
|
||||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml.
|
if (PathFileExists(cfgPath)) // [terminal emulator config] file exists, copy [terminal emulator config] to config/user_[terminal emulator config] file to backup any settings changes from previous sessions.
|
||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_%COMPUTERNAME%_settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_%COMPUTERNAME%_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file
|
else // [terminal emulator config] file does not exist, copy config/[host specific terminal emulator config] file to [terminal emulator config] file
|
||||||
{
|
{
|
||||||
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
MessageBox(NULL,
|
||||||
? L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
: L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
? L"Failed to copy config/windows_terminal_%COMPUTERNAME%_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||||
exit(1);
|
: L"Failed to copy config/windows_terminal_%COMPUTERNAME%_settings.json file to vendor/windows-terminal/settings/settings.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // '/c [path]' was specified, don't copy anything and use existing conemu-%COMPUTERNAME%.xml to start comemu.
|
|
||||||
{
|
|
||||||
if (use_user_cfg == false && PathFileExists(cfgPath) && !PathFileExists(cpuCfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml.
|
|
||||||
{
|
|
||||||
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
|
||||||
ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it.
|
else if (wcscmp(userCfgPath, L"") != 0 && PathFileExists(userCfgPath)) // config/user[terminal emulator config] file exists, use it.
|
||||||
{
|
{
|
||||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
{
|
{
|
||||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml.
|
if (PathFileExists(cfgPath)) // [terminal emulator config] file exists, copy [terminal emulator config] to config/user_[terminal emulator config] file to backup any settings changes from previous sessions.
|
||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
|
{
|
||||||
|
if (PathFileExists(windowsTerminalDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_settings.json! Access Denied."
|
||||||
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/windows_terminal_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // [terminal emulator config] file does not exist, copy config/user_[terminal emulator config] file to [terminal emulator config] file
|
||||||
|
{
|
||||||
|
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||||
|
{
|
||||||
|
if (PathFileExists(windowsTerminalDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy config/user_windows_terminal_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||||
|
: L"Failed to copy config/user_windows_terminal_settings.json file to vendor/windows-terminal/settings/settings.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!PathFileExists(windowsTerminalDir)) { // '/c [path]' was specified, don't copy anything and use existing user_[terminal emulator config] file.
|
||||||
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
|
{
|
||||||
|
if (PathFileExists(cfgPath)) // [terminal emulator config] file exists, copy [terminal emulator config] file to config/user_[terminal emulator config] file.
|
||||||
|
{
|
||||||
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
|
{
|
||||||
|
if (PathFileExists(windowsTerminalDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings.json! Access Denied."
|
||||||
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
@@ -324,28 +424,51 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml
|
else // vendor/[terminal emulator config].default config exists, copy Cmder vendor/[terminal emulator config].default file to [terminal emulator config] file.
|
||||||
{
|
{
|
||||||
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir))
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
{
|
||||||
? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
MessageBox(NULL,
|
||||||
: L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
exit(1);
|
? L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to vendor/windows-terminal/settings/settings.json! Access Denied."
|
||||||
|
: L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to vendor/windows-terminal/settings/settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // '/c [path]' was specified, don't copy anything and use existing user_conemu.xml to start comemu.
|
else if (!CopyFile(defaultCfgPath, cfgPath, FALSE) && PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
else if (wcscmp(cfgPath, L"") != 0 && PathFileExists(cfgPath)) // This is a first time Cmder.exe run and [terminal emulator config] file exists, copy [terminal emulator config] file to config/user_[terminal emulator config] file.
|
||||||
{
|
{
|
||||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (PathFileExists(windowsTerminalDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings_settings.json! Access Denied."
|
||||||
|
: L"Failed to copy vendor/windows-terminal/settings/settings.json file to config/user_windows_terminal_settings_settigns.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
@@ -353,99 +476,146 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
else // vendor/ConEmu.xml.default config exists, copy Cmder vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml.
|
|
||||||
{
|
|
||||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
|
||||||
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
|
||||||
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
|
||||||
{
|
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
|
||||||
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
}
|
}
|
||||||
else // '/c [path]' was specified and 'vendor/ConEmu.xml.default' config exists, copy Cmder 'vendor/ConEmu.xml.default' file to '[user specified path]/config/user_ConEmu.xml'.
|
else if (wcscmp(defaultCfgPath, L"") != 0) // '/c [path]' was specified and 'vendor/[terminal emulator config].default' config exists, copy Cmder 'vendor/[terminal emulator config].default' file to '[user specified path]/config/user_[terminal emulator config]'.
|
||||||
{
|
{
|
||||||
if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE))
|
if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
if (PathFileExists(windowsTerminalDir))
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
{
|
||||||
? L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml! Access Denied."
|
MessageBox(NULL,
|
||||||
: L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
exit(1);
|
? L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to [user specified path]/config/user_windows_terminal_settings.json! Access Denied."
|
||||||
|
: L"Failed to copy vendor/windows-terminal_default_settings_settings.json file to [user specified path]/config/user_windows_terminal_settings.json!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml! Access Denied."
|
||||||
|
: L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GetEnvironmentVariable(L"ProgramFiles", programFiles, MAX_PATH);
|
||||||
|
GetEnvironmentVariable(L"ProgramFiles(x86)", programFilesX86, MAX_PATH);
|
||||||
|
|
||||||
|
PathCombine(vendoredGit, vendorDir, L"git-for-windows");
|
||||||
|
PathCombine(amdx64Git, programFiles, L"Git");
|
||||||
|
PathCombine(x86Git, programFilesX86, L"Git");
|
||||||
|
|
||||||
SYSTEM_INFO sysInfo;
|
SYSTEM_INFO sysInfo;
|
||||||
GetNativeSystemInfo(&sysInfo);
|
GetNativeSystemInfo(&sysInfo);
|
||||||
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
|
if (PathFileExists(windowsTerminalDir))
|
||||||
{
|
{
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
PathCombine(terminalPath, exeDir, L"vendor\\windows-terminal\\WindowsTerminal.exe");
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
||||||
|
swprintf_s(args, L"%s /title \"%s\"", args, cmderTitle.c_str());
|
||||||
|
PathCombine(terminalPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
PathCombine(terminalPath, winDir, L"system32\\cmd.exe");
|
||||||
}
|
|
||||||
|
|
||||||
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
if (streqi(cmderTask.c_str(), L"powershell"))
|
||||||
|
{
|
||||||
|
PathCombine(terminalPath, winDir, L"System32\\WindowsPowerShell\\v1.0\\powershell.exe");
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
else if (streqi(cmderTask.c_str(), L"mintty"))
|
||||||
|
{
|
||||||
|
if (PathFileExists(vendoredGit))
|
||||||
|
{
|
||||||
|
PathCombine(terminalPath, vendoredGit, L"git-bash.exe");
|
||||||
|
}
|
||||||
|
else if (PathFileExists(amdx64Git))
|
||||||
|
{
|
||||||
|
PathCombine(terminalPath, amdx64Git, L"git-bash.exe");
|
||||||
|
}
|
||||||
|
else if (PathFileExists(x86Git))
|
||||||
|
{
|
||||||
|
PathCombine(terminalPath, x86Git, L"git-bash.exe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
if (!streqi(cmderStart.c_str(), L""))
|
if (!streqi(cmderStart.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /dir \"%s\"", args, cmderStart.c_str());
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -d \"%s\"", args, cmderStart.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /dir \"%s\"", args, cmderStart.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_single_mode)
|
if (is_single_mode)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /single", args);
|
if (!PathFileExists(windowsTerminalDir)) {
|
||||||
}
|
swprintf_s(args, L"%s /single", args);
|
||||||
|
}
|
||||||
if (!streqi(cmderTitle.c_str(), L""))
|
|
||||||
{
|
|
||||||
swprintf_s(args, L"%s /title \"%s\"", args, cmderTitle.c_str());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfgRoot.length() != 0)
|
if (cfgRoot.length() != 0)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
|
if (!PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!streqi(cmderConEmuArgs.c_str(), L""))
|
if (!streqi(cmderTerminalArgs.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s %s", args, cmderConEmuArgs.c_str());
|
swprintf_s(args, L"%s %s", args, cmderTerminalArgs.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// The `/run` arg and its value MUST be the last arg of ConEmu
|
// The `/run` arg and its value MUST be the last arg of ConEmu
|
||||||
// see : https://conemu.github.io/en/ConEmuArgs.html
|
// see : https://conemu.github.io/en/ConEmuArgs.html
|
||||||
// > This must be the last used switch (excepting -new_console and -cur_console)
|
// > This must be the last used switch (excepting -new_console and -cur_console)
|
||||||
|
PathCombine(initCmd, vendorDir, L"init.bat");
|
||||||
|
PathCombine(initPowerShell, vendorDir, L"profile.ps1");
|
||||||
|
PathCombine(initBash, vendorDir, L"start_git_bash.cmd");
|
||||||
|
PathCombine(initMintty, vendorDir, L"start_git_mintty.cmd");
|
||||||
|
|
||||||
if (!streqi(cmderTask.c_str(), L""))
|
if (!streqi(cmderTask.c_str(), L""))
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
if (PathFileExists(windowsTerminalDir)) {
|
||||||
|
swprintf_s(args, L"%s -p \"%s\"", args, cmderTask.c_str());
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (streqi(cmderTask.c_str(), L"powershell"))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%s'''\"", args, initPowerShell);
|
||||||
|
}
|
||||||
|
else if (streqi(cmderTask.c_str(), L"bash"))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /c \"%s\"", args, initBash);
|
||||||
|
}
|
||||||
|
else if (streqi(cmderTask.c_str(), L"mintty"))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /c \"%s\"", args, initMintty);
|
||||||
|
}
|
||||||
|
else if (streqi(cmderTask.c_str(), L"cmder"))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /k \"%s\"", args, initCmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||||
@@ -455,18 +625,52 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
SetEnvironmentVariable(L"CMDER_USER_BIN", userBinDirPath);
|
SetEnvironmentVariable(L"CMDER_USER_BIN", userBinDirPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Try to find m'intty.exe' so ConEmu can launch using %MINTTY_EXE% in external Git for Cmder Mini.
|
||||||
|
// See: https://github.com/Maximus5/ConEmu/issues/2559 for why this is commented.
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (PathFileExists(vendoredGit))
|
||||||
|
{
|
||||||
|
PathCombine(minTTYPath, vendoredGit, L"usr\\bin\\mintty.exe");
|
||||||
|
SetEnvironmentVariable(L"MINTTY_EXE", minTTYPath);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(amdx64Git))
|
||||||
|
{
|
||||||
|
PathCombine(minTTYPath, amdx64Git, L"usr\\bin\\mintty.exe");
|
||||||
|
SetEnvironmentVariable(L"MINTTY_EXE", minTTYPath);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(x86Git))
|
||||||
|
{
|
||||||
|
PathCombine(minTTYPath, x86Git, L"usr\\bin\\mintty.exe");
|
||||||
|
SetEnvironmentVariable(L"MINTTY_EXE", minTTYPath);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// Ensure EnvironmentVariables are propagated.
|
// Ensure EnvironmentVariables are propagated.
|
||||||
|
|
||||||
STARTUPINFO si = { 0 };
|
STARTUPINFO si = { 0 };
|
||||||
|
|
||||||
si.cb = sizeof(STARTUPINFO);
|
si.cb = sizeof(STARTUPINFO);
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
si.lpTitle = appId;
|
si.lpTitle = appId;
|
||||||
si.dwFlags = STARTF_TITLEISAPPID;
|
si.dwFlags = STARTF_TITLEISAPPID;
|
||||||
#endif
|
#endif
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
if (!CreateProcess(conEmuPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi)) {
|
|
||||||
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
|
if (!CreateProcess(terminalPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi))
|
||||||
|
{
|
||||||
|
if (PathFileExists(windowsTerminalDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL, _T("Unable to create the Windows Terminal process!"), _T("Error"), MB_OK);
|
||||||
|
}
|
||||||
|
else if (PathFileExists(conEmuDir))
|
||||||
|
{
|
||||||
|
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL, _T("Unable to create the Cmd process!"), _T("Error"), MB_OK);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -521,11 +725,11 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgR
|
|||||||
|
|
||||||
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
||||||
wchar_t baseCommandStr[MAX_PATH + 20] = { 0 };
|
wchar_t baseCommandStr[MAX_PATH + 20] = { 0 };
|
||||||
if (!single) {
|
if (single) {
|
||||||
swprintf_s(baseCommandStr, L"\"%s\"", exePath);
|
swprintf_s(baseCommandStr, L"\"%s\" /single", exePath);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
swprintf_s(baseCommandStr, L"\"%s\" /single", exePath);
|
swprintf_s(baseCommandStr, L"\"%s\"", exePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
@@ -583,7 +787,7 @@ struct cmderOptions
|
|||||||
std::wstring cmderTitle = L"Cmder";
|
std::wstring cmderTitle = L"Cmder";
|
||||||
std::wstring cmderIcon = L"";
|
std::wstring cmderIcon = L"";
|
||||||
std::wstring cmderRegScope = L"USER";
|
std::wstring cmderRegScope = L"USER";
|
||||||
std::wstring cmderConEmuArgs = L"";
|
std::wstring cmderTerminalArgs = L"";
|
||||||
bool cmderSingle = false;
|
bool cmderSingle = false;
|
||||||
bool cmderUserCfg = true;
|
bool cmderUserCfg = true;
|
||||||
bool registerApp = false;
|
bool registerApp = false;
|
||||||
@@ -597,11 +801,22 @@ cmderOptions GetOption()
|
|||||||
LPWSTR *szArgList;
|
LPWSTR *szArgList;
|
||||||
int argCount;
|
int argCount;
|
||||||
|
|
||||||
|
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t conEmuDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t vendorDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
|
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||||
|
PathRemoveFileSpec(exeDir);
|
||||||
|
|
||||||
|
PathCombine(vendorDir, exeDir, L"vendor");
|
||||||
|
PathCombine(windowsTerminalDir, vendorDir, L"windows-terminal");
|
||||||
|
PathCombine(conEmuDir, vendorDir, L"ConEmu-Maximus5");
|
||||||
|
|
||||||
szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
|
szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
|
||||||
|
|
||||||
for (int i = 1; i < argCount; i++)
|
for (int i = 1; i < argCount; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
||||||
if (cmderOptions.error == false) {
|
if (cmderOptions.error == false) {
|
||||||
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
||||||
@@ -638,26 +853,26 @@ cmderOptions GetOption()
|
|||||||
MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK);
|
MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/task", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/task", szArgList[i]) == 0 || PathFileExists(windowsTerminalDir) || PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
cmderOptions.cmderTask = szArgList[i + 1];
|
cmderOptions.cmderTask = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/title", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/title", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
cmderOptions.cmderTitle = szArgList[i + 1];
|
cmderOptions.cmderTitle = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/icon", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/icon", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
cmderOptions.cmderIcon = szArgList[i + 1];
|
cmderOptions.cmderIcon = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/single", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/single", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
cmderOptions.cmderSingle = true;
|
cmderOptions.cmderSingle = true;
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/m", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/m", szArgList[i]) == 0 && !PathFileExists(windowsTerminalDir) && PathFileExists(conEmuDir))
|
||||||
{
|
{
|
||||||
cmderOptions.cmderUserCfg = false;
|
cmderOptions.cmderUserCfg = false;
|
||||||
}
|
}
|
||||||
@@ -690,7 +905,7 @@ cmderOptions GetOption()
|
|||||||
/* Used for passing arguments to conemu prog */
|
/* Used for passing arguments to conemu prog */
|
||||||
else if (_wcsicmp(L"/x", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/x", szArgList[i]) == 0)
|
||||||
{
|
{
|
||||||
cmderOptions.cmderConEmuArgs = szArgList[i + 1];
|
cmderOptions.cmderTerminalArgs = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
/* Bare double dash, remaining commandline is for conemu */
|
/* Bare double dash, remaining commandline is for conemu */
|
||||||
@@ -700,7 +915,7 @@ cmderOptions GetOption()
|
|||||||
auto doubledash = cmdline.find(L" -- ");
|
auto doubledash = cmdline.find(L" -- ");
|
||||||
if (doubledash != std::string::npos)
|
if (doubledash != std::string::npos)
|
||||||
{
|
{
|
||||||
cmderOptions.cmderConEmuArgs = cmdline.substr(doubledash + 4);
|
cmderOptions.cmderTerminalArgs = cmdline.substr(doubledash + 4);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -727,7 +942,11 @@ cmderOptions GetOption()
|
|||||||
cmderOptions.error = true;
|
cmderOptions.error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!PathFileExists(windowsTerminalDir) && !PathFileExists(conEmuDir) && streqi(cmderOptions.cmderTask.c_str(), L""))
|
||||||
|
{
|
||||||
|
cmderOptions.cmderTask = L"cmder";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmderOptions.error == true)
|
if (cmderOptions.error == true)
|
||||||
@@ -756,12 +975,29 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
cmderOptions cmderOptions = GetOption();
|
cmderOptions cmderOptions = GetOption();
|
||||||
|
|
||||||
|
wchar_t windowsTerminalDir[MAX_PATH] = { 0 };
|
||||||
|
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
|
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||||
|
PathRemoveFileSpec(exeDir);
|
||||||
|
PathCombine(windowsTerminalDir, exeDir, L"vendor\\windows-terminal");
|
||||||
|
|
||||||
if (cmderOptions.registerApp == true)
|
if (cmderOptions.registerApp == true)
|
||||||
{
|
{
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
if (PathFileExists(windowsTerminalDir))
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
{
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||||
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||||
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, false);
|
||||||
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, false);
|
||||||
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, false);
|
||||||
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (cmderOptions.unRegisterApp == true)
|
else if (cmderOptions.unRegisterApp == true)
|
||||||
{
|
{
|
||||||
@@ -776,7 +1012,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderTitle, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
|
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderTitle, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderTerminalArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -35,19 +35,19 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|||||||
|
|
||||||
1 TEXTINCLUDE
|
1 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"resource.h\0"
|
"resource.h\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
2 TEXTINCLUDE
|
2 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"#include ""winres.h""\r\n"
|
"#include ""winres.h""\r\n"
|
||||||
"\0"
|
"\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
3 TEXTINCLUDE
|
3 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"\0"
|
"\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
@@ -60,7 +60,7 @@ END
|
|||||||
// Icon with lowest ID value placed first to ensure application icon
|
// Icon with lowest ID value placed first to ensure application icon
|
||||||
// remains consistent on all systems.
|
// remains consistent on all systems.
|
||||||
IDI_CMDER ICON "..\\..\\icons\\cmder.ico"
|
IDI_CMDER ICON "..\\..\\icons\\cmder.ico"
|
||||||
#endif // English (United States) resources
|
#endif // not APSTUDIO_INVOKED
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ STRINGTABLE
|
|||||||
{
|
{
|
||||||
IDS_TITLE "Cmder Launcher"
|
IDS_TITLE "Cmder Launcher"
|
||||||
|
|
||||||
IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [ConEmu Task Name]\n /icon [CMDER Icon Path]\n [/start [Start in Path] | [Start in Path]]\n /single\n /m\n /x [ConEmu extra arguments]\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"
|
IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [Windows Terminal Profile/ConEmu Task Name]\n /icon [CMDER Icon Path] - ConEmu ONLY!\n [/start [Start in Path] | [Start in Path]]\n /single - ConEmu ONLY!\n /m\n -- [ConEmu/Windows Terminal extra arguments]\n\nNote: '-- [...]' must be the last argument!\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -23,5 +23,6 @@ appveyor.yml
|
|||||||
vendor\cmder.sh
|
vendor\cmder.sh
|
||||||
vendor\git-prompt.sh
|
vendor\git-prompt.sh
|
||||||
config\user-*
|
config\user-*
|
||||||
|
config\user_*
|
||||||
clink_history*
|
clink_history*
|
||||||
*.log
|
*.log
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build.ps1 -SourcesPath '~/custom/vendors.json'
|
.\build.ps1 -SourcesPath '~/custom/vendors.json'
|
||||||
|
|
||||||
Build cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
|
Build Cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
|
||||||
.NOTES
|
.NOTES
|
||||||
AUTHORS
|
AUTHORS
|
||||||
Samuel Vasko, Jack Bennett
|
Samuel Vasko, Jack Bennett
|
||||||
@@ -56,6 +56,9 @@ Param(
|
|||||||
# Using this option will skip all downloads, if you only need to build launcher
|
# Using this option will skip all downloads, if you only need to build launcher
|
||||||
[switch]$noVendor,
|
[switch]$noVendor,
|
||||||
|
|
||||||
|
# Using this option will specify the emulator to use [none, all, conemu-maximus5, or windows-terminal]
|
||||||
|
[string]$terminal = 'all',
|
||||||
|
|
||||||
# Build launcher if you have MSBuild tools installed
|
# Build launcher if you have MSBuild tools installed
|
||||||
[switch]$Compile
|
[switch]$Compile
|
||||||
)
|
)
|
||||||
@@ -113,15 +116,36 @@ if (-not $noVendor) {
|
|||||||
}
|
}
|
||||||
else { $ConEmuXml = "" }
|
else { $ConEmuXml = "" }
|
||||||
|
|
||||||
|
# Preserve modified (by user) Windows Terminal setting file
|
||||||
|
if ($config -ne "") {
|
||||||
|
$WinTermSettingsJson = Join-Path $saveTo "windows-terminal\settings\settings.json"
|
||||||
|
if (Test-Path $WinTermSettingsJson -pathType leaf) {
|
||||||
|
$WinTermSettingsJsonSave = Join-Path $config "windows_terminal_settings.json"
|
||||||
|
Write-Verbose "Backup '$WinTermSettingsJson' to '$WinTermSettingsJsonSave'"
|
||||||
|
Copy-Item $WinTermSettingsJson $WinTermSettingsJsonSave
|
||||||
|
}
|
||||||
|
else { $WinTermSettingsJson = "" }
|
||||||
|
}
|
||||||
|
else { $WinTermSettingsJson = "" }
|
||||||
|
|
||||||
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
||||||
|
$cmder_folder = $cmder_root.toString()
|
||||||
foreach ($ssh_agent in $(Get-Process ssh-agent -ErrorAction SilentlyContinue)) {
|
foreach ($ssh_agent in $(Get-Process ssh-agent -ErrorAction SilentlyContinue)) {
|
||||||
if ([string]$($ssh_agent.path) -Match [string]$cmder_root.replace('\', '\\')) {
|
if ([string]$($ssh_agent.path) -Match $cmder_folder.Replace('\', '\\')) {
|
||||||
Write-Verbose $("Stopping " + $ssh_agent.path + "!")
|
Write-Verbose $("Stopping " + $ssh_agent.path + "!")
|
||||||
Stop-Process $ssh_agent.id
|
Stop-Process $ssh_agent.id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($s in $sources) {
|
foreach ($s in $sources) {
|
||||||
|
if ($terminal -eq "none") {
|
||||||
|
continue
|
||||||
|
} elseif ($s.name -eq "conemu-maximus5" -and $terminal -eq "windows-terminal") {
|
||||||
|
continue
|
||||||
|
} elseif ($s.name -eq "windows-terminal" -and $terminal -eq "conemu-maximus5") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
Write-Verbose "Getting vendored $($s.name) $($s.version)..."
|
Write-Verbose "Getting vendored $($s.name) $($s.version)..."
|
||||||
|
|
||||||
# We do not care about the extensions/type of archive
|
# We do not care about the extensions/type of archive
|
||||||
@@ -132,6 +156,16 @@ if (-not $noVendor) {
|
|||||||
Download-File -Url $s.url -File $vend\$tempArchive -ErrorAction Stop
|
Download-File -Url $s.url -File $vend\$tempArchive -ErrorAction Stop
|
||||||
Extract-Archive $tempArchive $s.name
|
Extract-Archive $tempArchive $s.name
|
||||||
|
|
||||||
|
# Make Embedded Windows Terminal Portable
|
||||||
|
if ($s.name -eq "windows-terminal") {
|
||||||
|
$windowTerminalFiles = resolve-path ($saveTo + "\" + $s.name + "\terminal*")
|
||||||
|
Move-Item -ErrorAction SilentlyContinue $windowTerminalFiles\* $s.name >$null
|
||||||
|
Remove-Item -ErrorAction SilentlyContinue $windowTerminalFiles >$null
|
||||||
|
Write-Verbose "Making Windows Terminal Portable..."
|
||||||
|
New-Item -Type Directory -Path (Join-Path $saveTo "/windows-terminal/settings") -ErrorAction SilentlyContinue >$null
|
||||||
|
New-Item -Type File -Path (Join-Path $saveTo "/windows-terminal/.portable") -ErrorAction SilentlyContinue >$null
|
||||||
|
}
|
||||||
|
|
||||||
if ((Get-ChildItem $s.name).Count -eq 1) {
|
if ((Get-ChildItem $s.name).Count -eq 1) {
|
||||||
Flatten-Directory($s.name)
|
Flatten-Directory($s.name)
|
||||||
}
|
}
|
||||||
@@ -146,6 +180,12 @@ if (-not $noVendor) {
|
|||||||
Copy-Item $ConEmuXmlSave $ConEmuXml
|
Copy-Item $ConEmuXmlSave $ConEmuXml
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Restore Windows Terminal user configuration
|
||||||
|
if ($WinTermSettingsJson -ne "") {
|
||||||
|
Write-Verbose "Restore '$WinTermSettingsJsonSave' to '$WinTermSettingsJson'"
|
||||||
|
Copy-Item $WinTermSettingsJsonSave $WinTermSettingsJson
|
||||||
|
}
|
||||||
|
|
||||||
# Put vendor\cmder.sh in /etc/profile.d so it runs when we start bash or mintty
|
# Put vendor\cmder.sh in /etc/profile.d so it runs when we start bash or mintty
|
||||||
if ( (Test-Path $($saveTo + "git-for-windows/etc/profile.d") ) ) {
|
if ( (Test-Path $($saveTo + "git-for-windows/etc/profile.d") ) ) {
|
||||||
Write-Verbose "Adding cmder.sh /etc/profile.d"
|
Write-Verbose "Adding cmder.sh /etc/profile.d"
|
||||||
|
|||||||
@@ -2,18 +2,18 @@
|
|||||||
.Synopsis
|
.Synopsis
|
||||||
Pack Cmder
|
Pack Cmder
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Use this script to pack cmder into release archives
|
Use this script to pack Cmder into release archives
|
||||||
|
|
||||||
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
|
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
|
||||||
Then unblock the script for execution with UnblockFile .\pack.ps1
|
Then unblock the script for execution with UnblockFile .\pack.ps1
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\pack.ps1
|
.\pack.ps1
|
||||||
|
|
||||||
Creates default archives for cmder
|
Creates default archives for Cmder
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\pack.ps1 -verbose
|
.\pack.ps1 -verbose
|
||||||
|
|
||||||
Creates default archives for cmder with plenty of information
|
Creates default archives for Cmder with plenty of information
|
||||||
.NOTES
|
.NOTES
|
||||||
AUTHORS
|
AUTHORS
|
||||||
Samuel Vasko, Jack Bennett, Martin Kemp
|
Samuel Vasko, Jack Bennett, Martin Kemp
|
||||||
@@ -31,6 +31,9 @@ Param(
|
|||||||
# Path to the vendor configuration source file
|
# Path to the vendor configuration source file
|
||||||
[string]$cmderRoot = "$PSScriptRoot\..",
|
[string]$cmderRoot = "$PSScriptRoot\..",
|
||||||
|
|
||||||
|
# Using this option will pack artifacts for a specific included terminal emulator [none, all, conemu-maximus5, or windows-terminal]
|
||||||
|
[string]$terminal = 'all',
|
||||||
|
|
||||||
# Vendor folder locaton
|
# Vendor folder locaton
|
||||||
[string]$saveTo = "$PSScriptRoot\..\build"
|
[string]$saveTo = "$PSScriptRoot\..\build"
|
||||||
)
|
)
|
||||||
@@ -41,10 +44,36 @@ $cmderRoot = Resolve-Path $cmderRoot
|
|||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
Ensure-Executable "7z"
|
Ensure-Executable "7z"
|
||||||
|
|
||||||
$targets = @{
|
if ($terminal -eq "none") {
|
||||||
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on";
|
$targets = @{
|
||||||
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3";
|
"cmder_win.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||||
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`"";
|
"cmder_win.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder_win.mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
}
|
||||||
|
} elseif ($terminal -eq "windows-terminal") {
|
||||||
|
$targets = @{
|
||||||
|
"cmder_wt.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`"";
|
||||||
|
"cmder_wt.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`"";
|
||||||
|
"cmder_wt_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`"";
|
||||||
|
}
|
||||||
|
} elseif ($terminal -eq "windows-terminal") {
|
||||||
|
$targets = @{
|
||||||
|
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$targets = @{
|
||||||
|
"cmder_win.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder_win.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder_win_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder_wt.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\conemu-maximus5`"";
|
||||||
|
"cmder_wt.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\conemu-maximus5`"";
|
||||||
|
"cmder_wt_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\conemu-maximus5`"";
|
||||||
|
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3 -xr!`"vendor\windows-terminal`"";
|
||||||
|
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`" -xr!`"vendor\windows-terminal`"";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Push-Location -Path $cmderRoot
|
Push-Location -Path $cmderRoot
|
||||||
|
|||||||
@@ -172,13 +172,13 @@ function Register-Cmder() {
|
|||||||
# Text for the context menu item.
|
# Text for the context menu item.
|
||||||
$MenuText = "Cmder Here"
|
$MenuText = "Cmder Here"
|
||||||
|
|
||||||
, # Defaults to the current cmder directory when run from cmder.
|
, # Defaults to the current Cmder directory when run from Cmder.
|
||||||
$PathToExe = (Join-Path $env:CMDER_ROOT "cmder.exe")
|
$PathToExe = (Join-Path $env:CMDER_ROOT "cmder.exe")
|
||||||
|
|
||||||
, # Commands the context menu will execute.
|
, # Commands the context menu will execute.
|
||||||
$Command = "%V"
|
$Command = "%V"
|
||||||
|
|
||||||
, # Defaults to the icons folder in the cmder package.
|
, # Defaults to the icons folder in the Cmder package.
|
||||||
$icon = (Split-Path $PathToExe | Join-Path -ChildPath 'icons/cmder.ico')
|
$icon = (Split-Path $PathToExe | Join-Path -ChildPath 'icons/cmder.ico')
|
||||||
)
|
)
|
||||||
Begin
|
Begin
|
||||||
|
|||||||
131
vendor/ConEmu.xml.default
vendored
131
vendor/ConEmu.xml.default
vendored
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<key name="Software">
|
<key name="Software">
|
||||||
<key name="ConEmu">
|
<key name="ConEmu">
|
||||||
<key name=".Vanilla" modified="2018-02-22 06:02:11" build="171109">
|
<key name=".Vanilla" modified="2023-06-05 13:14:44" build="221218">
|
||||||
<value name="ColorTable00" type="dword" data="00222827"/>
|
<value name="ColorTable00" type="dword" data="00222827"/>
|
||||||
<value name="ColorTable01" type="dword" data="009e5401"/>
|
<value name="ColorTable01" type="dword" data="009e5401"/>
|
||||||
<value name="ColorTable02" type="dword" data="0004aa74"/>
|
<value name="ColorTable02" type="dword" data="0004aa74"/>
|
||||||
@@ -42,8 +42,8 @@
|
|||||||
<value name="PopBackColorIdx" type="hex" data="10"/>
|
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||||
<value name="ExtendFonts" type="hex" data="00"/>
|
<value name="ExtendFonts" type="hex" data="00"/>
|
||||||
<value name="ExtendFontNormalIdx" type="hex" data="01"/>
|
<value name="ExtendFontNormalIdx" type="hex" data="01"/>
|
||||||
<value name="ExtendFontBoldIdx" type="hex" data="0c"/>
|
<value name="ExtendFontBoldIdx" type="hex" data="0C"/>
|
||||||
<value name="ExtendFontItalicIdx" type="hex" data="0d"/>
|
<value name="ExtendFontItalicIdx" type="hex" data="0D"/>
|
||||||
<value name="CursorTypeActive" type="dword" data="000232c1"/>
|
<value name="CursorTypeActive" type="dword" data="000232c1"/>
|
||||||
<value name="CursorTypeInactive" type="dword" data="00823282"/>
|
<value name="CursorTypeInactive" type="dword" data="00823282"/>
|
||||||
<value name="ClipboardDetectLineEnd" type="hex" data="01"/>
|
<value name="ClipboardDetectLineEnd" type="hex" data="01"/>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<value name="TrueColorerSupport" type="hex" data="01"/>
|
<value name="TrueColorerSupport" type="hex" data="01"/>
|
||||||
<value name="FadeInactive" type="hex" data="01"/>
|
<value name="FadeInactive" type="hex" data="01"/>
|
||||||
<value name="FadeInactiveLow" type="hex" data="00"/>
|
<value name="FadeInactiveLow" type="hex" data="00"/>
|
||||||
<value name="FadeInactiveHigh" type="hex" data="c8"/>
|
<value name="FadeInactiveHigh" type="hex" data="C8"/>
|
||||||
<value name="ComSpec.UncPaths" type="hex" data="01"/>
|
<value name="ComSpec.UncPaths" type="hex" data="01"/>
|
||||||
<value name="ConVisible" type="hex" data="00"/>
|
<value name="ConVisible" type="hex" data="00"/>
|
||||||
<value name="ConInMode" type="dword" data="ffffffff"/>
|
<value name="ConInMode" type="dword" data="ffffffff"/>
|
||||||
@@ -78,7 +78,6 @@
|
|||||||
<value name="StartFarEditors" type="hex" data="00"/>
|
<value name="StartFarEditors" type="hex" data="00"/>
|
||||||
<value name="StoreTaskbarkTasks" type="hex" data="00"/>
|
<value name="StoreTaskbarkTasks" type="hex" data="00"/>
|
||||||
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
||||||
<value name="CmdLineHistory" type="multi"></value>
|
|
||||||
<value name="SingleInstance" type="hex" data="00"/>
|
<value name="SingleInstance" type="hex" data="00"/>
|
||||||
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
||||||
<value name="Multi" type="hex" data="01"/>
|
<value name="Multi" type="hex" data="01"/>
|
||||||
@@ -113,13 +112,13 @@
|
|||||||
<value name="Monospace" type="hex" data="01"/>
|
<value name="Monospace" type="hex" data="01"/>
|
||||||
<value name="BackGround Image show" type="hex" data="00"/>
|
<value name="BackGround Image show" type="hex" data="00"/>
|
||||||
<value name="BackGround Image" type="string" data="c:\back.bmp"/>
|
<value name="BackGround Image" type="string" data="c:\back.bmp"/>
|
||||||
<value name="bgImageDarker" type="hex" data="ff"/>
|
<value name="bgImageDarker" type="hex" data="FF"/>
|
||||||
<value name="bgImageColors" type="dword" data="ffffffff"/>
|
<value name="bgImageColors" type="dword" data="ffffffff"/>
|
||||||
<value name="bgOperation" type="hex" data="00"/>
|
<value name="bgOperation" type="hex" data="00"/>
|
||||||
<value name="bgPluginAllowed" type="hex" data="01"/>
|
<value name="bgPluginAllowed" type="hex" data="01"/>
|
||||||
<value name="AlphaValue" type="hex" data="f8"/>
|
<value name="AlphaValue" type="hex" data="F8"/>
|
||||||
<value name="AlphaValueSeparate" type="hex" data="01"/>
|
<value name="AlphaValueSeparate" type="hex" data="01"/>
|
||||||
<value name="AlphaValueInactive" type="hex" data="ee"/>
|
<value name="AlphaValueInactive" type="hex" data="EE"/>
|
||||||
<value name="UserScreenTransparent" type="hex" data="00"/>
|
<value name="UserScreenTransparent" type="hex" data="00"/>
|
||||||
<value name="ColorKeyTransparent" type="hex" data="00"/>
|
<value name="ColorKeyTransparent" type="hex" data="00"/>
|
||||||
<value name="ColorKeyValue" type="dword" data="00010101"/>
|
<value name="ColorKeyValue" type="dword" data="00010101"/>
|
||||||
@@ -128,8 +127,8 @@
|
|||||||
<value name="ConWnd Width" type="dword" data="00000078"/>
|
<value name="ConWnd Width" type="dword" data="00000078"/>
|
||||||
<value name="ConWnd Height" type="dword" data="0000001e"/>
|
<value name="ConWnd Height" type="dword" data="0000001e"/>
|
||||||
<value name="Cascaded" type="hex" data="01"/>
|
<value name="Cascaded" type="hex" data="01"/>
|
||||||
<value name="ConWnd X" type="long" data="500"/>
|
<value name="ConWnd X" type="long" data="2194"/>
|
||||||
<value name="ConWnd Y" type="long" data="500"/>
|
<value name="ConWnd Y" type="long" data="95"/>
|
||||||
<value name="16bit Height" type="ulong" data="0"/>
|
<value name="16bit Height" type="ulong" data="0"/>
|
||||||
<value name="AutoSaveSizePos" type="hex" data="01"/>
|
<value name="AutoSaveSizePos" type="hex" data="01"/>
|
||||||
<value name="IntegralSize" type="hex" data="00"/>
|
<value name="IntegralSize" type="hex" data="00"/>
|
||||||
@@ -166,19 +165,19 @@
|
|||||||
<value name="CTS.ActMode" type="hex" data="02"/>
|
<value name="CTS.ActMode" type="hex" data="02"/>
|
||||||
<value name="CTS.RBtnAction" type="hex" data="03"/>
|
<value name="CTS.RBtnAction" type="hex" data="03"/>
|
||||||
<value name="CTS.MBtnAction" type="hex" data="00"/>
|
<value name="CTS.MBtnAction" type="hex" data="00"/>
|
||||||
<value name="CTS.ColorIndex" type="hex" data="e0"/>
|
<value name="CTS.ColorIndex" type="hex" data="E0"/>
|
||||||
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
|
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
|
||||||
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
|
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
|
||||||
<value name="FarGotoEditorOpt" type="hex" data="01"/>
|
<value name="FarGotoEditorOpt" type="hex" data="01"/>
|
||||||
<value name="FarGotoEditorPath" type="string" data="far.exe /e%1:%2 "%3""/>
|
<value name="FarGotoEditorPath" type="string" data='far.exe /e%1:%2 "%3"'/>
|
||||||
<value name="FixFarBorders" type="hex" data="01"/>
|
<value name="FixFarBorders" type="hex" data="01"/>
|
||||||
<value name="FixFarBordersRanges" type="string" data="2013-25C4;"/>
|
<value name="FixFarBordersRanges" type="string" data="2013-25C4;"/>
|
||||||
<value name="ExtendUCharMap" type="hex" data="01"/>
|
<value name="ExtendUCharMap" type="hex" data="01"/>
|
||||||
<value name="EnhanceGraphics" type="hex" data="01"/>
|
<value name="EnhanceGraphics" type="hex" data="01"/>
|
||||||
<value name="EnhanceButtons" type="hex" data="00"/>
|
<value name="EnhanceButtons" type="hex" data="00"/>
|
||||||
<value name="PartBrush75" type="hex" data="c8"/>
|
<value name="PartBrush75" type="hex" data="C8"/>
|
||||||
<value name="PartBrush50" type="hex" data="96"/>
|
<value name="PartBrush50" type="hex" data="96"/>
|
||||||
<value name="PartBrush25" type="hex" data="5a"/>
|
<value name="PartBrush25" type="hex" data="5A"/>
|
||||||
<value name="PartBrushBlack" type="hex" data="20"/>
|
<value name="PartBrushBlack" type="hex" data="20"/>
|
||||||
<value name="RightClick opens context menu" type="hex" data="02"/>
|
<value name="RightClick opens context menu" type="hex" data="02"/>
|
||||||
<value name="RightClickMacro2" type="string" data=""/>
|
<value name="RightClickMacro2" type="string" data=""/>
|
||||||
@@ -413,15 +412,15 @@
|
|||||||
<value name="Key.TileToLeft" type="dword" data="80808000"/>
|
<value name="Key.TileToLeft" type="dword" data="80808000"/>
|
||||||
<value name="Key.TileToRIght" type="dword" data="80808000"/>
|
<value name="Key.TileToRIght" type="dword" data="80808000"/>
|
||||||
<value name="KeyMacro01" type="dword" data="0012a031"/>
|
<value name="KeyMacro01" type="dword" data="0012a031"/>
|
||||||
<value name="KeyMacro01.Text" type="string" data="Task("cmd")"/>
|
<value name="KeyMacro01.Text" type="string" data='Task("cmd")'/>
|
||||||
<value name="KeyMacro02" type="dword" data="0012a032"/>
|
<value name="KeyMacro02" type="dword" data="0012a032"/>
|
||||||
<value name="KeyMacro02.Text" type="string" data="Task("PowerShell")"/>
|
<value name="KeyMacro02.Text" type="string" data='Task("PowerShell")'/>
|
||||||
<value name="KeyMacro03" type="dword" data="000011d0"/>
|
<value name="KeyMacro03" type="dword" data="000011d0"/>
|
||||||
<value name="KeyMacro03.Text" type="string" data="FontSetSize(1,2)"/>
|
<value name="KeyMacro03.Text" type="string" data="FontSetSize(1,2)"/>
|
||||||
<value name="KeyMacro04" type="dword" data="000011d1"/>
|
<value name="KeyMacro04" type="dword" data="000011d1"/>
|
||||||
<value name="KeyMacro04.Text" type="string" data="FontSetSize(1,-2)"/>
|
<value name="KeyMacro04.Text" type="string" data="FontSetSize(1,-2)"/>
|
||||||
<value name="KeyMacro05" type="dword" data="0012a033"/>
|
<value name="KeyMacro05" type="dword" data="0012a033"/>
|
||||||
<value name="KeyMacro05.Text" type="string" data="Task("PowerShell as Admin")"/>
|
<value name="KeyMacro05.Text" type="string" data='Task("PowerShell as Admin")'/>
|
||||||
<value name="KeyMacro06" type="dword" data="00000000"/>
|
<value name="KeyMacro06" type="dword" data="00000000"/>
|
||||||
<value name="KeyMacro06.Text" type="string" data=""/>
|
<value name="KeyMacro06.Text" type="string" data=""/>
|
||||||
<value name="KeyMacro07" type="dword" data="00000000"/>
|
<value name="KeyMacro07" type="dword" data="00000000"/>
|
||||||
@@ -484,12 +483,12 @@
|
|||||||
<value name="DndLKey" type="hex" data="00"/>
|
<value name="DndLKey" type="hex" data="00"/>
|
||||||
<value name="DndRKey" type="hex" data="a2"/>
|
<value name="DndRKey" type="hex" data="a2"/>
|
||||||
<value name="WndDragKey" type="dword" data="00121101"/>
|
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||||
<key name="Tasks" modified="2018-02-22 06:02:12" build="171109">
|
<key name="Tasks" modified="2023-06-05 13:14:44" build="221218">
|
||||||
<value name="Count" type="long" data="9"/>
|
<value name="Count" type="long" data="11"/>
|
||||||
<key name="Task1" modified="2018-02-22 06:02:12" build="171109">
|
<key name="Task1" modified="2018-02-22 06:02:12" build="171109">
|
||||||
<value name="Name" type="string" data="{cmd::Cmder as Admin}"/>
|
<value name="Name" type="string" data="{cmd::Cmder as Admin}"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||||
<value name="Cmd1" type="string" data="*cmd /k ""%ConEmuDir%\..\init.bat" ""/>
|
<value name="Cmd1" type="string" data='*cmd /k ""%ConEmuDir%\..\init.bat" "'/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
@@ -497,8 +496,8 @@
|
|||||||
</key>
|
</key>
|
||||||
<key name="Task2" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task2" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Name" type="string" data="{cmd::Cmder}"/>
|
<value name="Name" type="string" data="{cmd::Cmder}"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||||
<value name="Cmd1" type="string" data="cmd /k ""%ConEmuDir%\..\init.bat" ""/>
|
<value name="Cmd1" type="string" data='cmd /k ""%ConEmuDir%\..\init.bat" "'/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
@@ -507,8 +506,8 @@
|
|||||||
<key name="Task3" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task3" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Name" type="string" data="{PowerShell::PowerShell as Admin}"/>
|
<value name="Name" type="string" data="{PowerShell::PowerShell as Admin}"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||||
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''""/>
|
<value name="Cmd1" type="string" data='*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''"'/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
@@ -516,61 +515,78 @@
|
|||||||
<key name="Task4" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task4" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Name" type="string" data="{PowerShell::PowerShell}"/>
|
<value name="Name" type="string" data="{PowerShell::PowerShell}"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||||
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''""/>
|
<value name="Cmd1" type="string" data='PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''"'/>
|
||||||
<value name="Cmd2" type="string" data=""%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe""/>
|
<value name="Cmd2" type="string" data='"%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe"'/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task5" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task5" modified="2023-06-05 13:15:18" build="221218">
|
||||||
|
<value name="Name" type="string" data="{bash::mintty as Admin - External}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data='/icon "%ProgramFiles%\git\usr\share\git\git-for-windows.ico"'/>
|
||||||
|
<value name="Cmd1" type="string" data='*"%ProgramFiles%\git\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
</key>
|
||||||
|
<key name="Task6" modified="2023-06-05 13:15:38" build="221218">
|
||||||
|
<value name="Name" type="string" data="{bash::mintty - External}"/>
|
||||||
|
<value name="Flags" type="dword" data="00000004"/>
|
||||||
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
|
<value name="GuiArgs" type="string" data='/icon "%ProgramFiles%\git\usr\share\git\git-for-windows.ico"'/>
|
||||||
|
<value name="Cmd1" type="string" data='"%ProgramFiles%\git\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||||
|
<value name="Active" type="long" data="0"/>
|
||||||
|
<value name="Count" type="long" data="1"/>
|
||||||
|
<value name="Cmd2" type="string" data='"%CMDER_ROOT%vendor\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||||
|
</key>
|
||||||
|
<key name="Task7" modified="2023-06-05 13:15:38" build="221218">
|
||||||
<value name="Name" type="string" data="{bash::mintty as Admin}"/>
|
<value name="Name" type="string" data="{bash::mintty as Admin}"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data="/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico""/>
|
<value name="GuiArgs" type="string" data='/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico"'/>
|
||||||
<value name="Cmd1" type="string" data="*"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l"/>
|
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
|
<value name="Cmd1" type="string" data='*"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task6" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task8" modified="2023-06-05 13:15:18" build="221218">
|
||||||
<value name="Name" type="string" data="{bash::mintty}"/>
|
<value name="Name" type="string" data="{bash::mintty}"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data="/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico""/>
|
<value name="GuiArgs" type="string" data='/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico"'/>
|
||||||
<value name="Cmd1" type="string" data=""%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l"/>
|
<value name="Cmd1" type="string" data='"%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe" /bin/bash -l'/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Cmd2" type="string" data=""%CMDER_ROOT%vendor\git-for-windows\usr\bin\mintty.exe" /bin/bash -l"/>
|
|
||||||
</key>
|
</key>
|
||||||
<key name="Task7" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task9" modified="2023-06-05 13:14:44" build="221218">
|
||||||
<value name="Name" type="string" data="{bash::bash as Admin}"/>
|
<value name="Name" type="string" data="{bash::bash as Admin}"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||||
|
<value name="Cmd1" type="string" data='*cmd /c "%ConEmuDir%\..\start_git_bash.cmd"'/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Cmd1" type="string" data="*set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
|
||||||
</key>
|
</key>
|
||||||
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task10" modified="2023-06-05 13:14:44" build="221218">
|
||||||
<value name="Name" type="string" data="{bash::bash}"/>
|
<value name="Name" type="string" data="{bash::bash}"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=' /icon "%CMDER_ROOT%\icons\cmder.ico"'/>
|
||||||
<value name="Cmd1" type="string" data="set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
|
<value name="Cmd1" type="string" data='cmd /c "%ConEmuDir%\..\start_git_bash.cmd"'/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task9" modified="2018-03-23 23:26:53" build="180318">
|
<key name="Task11" modified="2023-06-05 13:14:44" build="221218">
|
||||||
<value name="Name" type="string" data="{WSL::bash}"/>
|
<value name="Name" type="string" data="{WSL::bash}"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data='-icon "%USERPROFILE%\AppData\Local\lxss\bash.ico"'/>
|
<value name="GuiArgs" type="string" data='-icon "%USERPROFILE%\AppData\Local\lxss\bash.ico"'/>
|
||||||
<value name="Cmd1" type="string" data='set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm:/mnt'/>
|
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
|
<value name="Cmd1" type="string" data='set "PATH=%ConEmuBaseDirShort%\wsl;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe --wsl -cur_console:pm:/mnt'/>
|
||||||
</key>
|
</key>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="Apps" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Apps" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Count" type="long" data="0"/>
|
<value name="Count" type="long" data="0"/>
|
||||||
</key>
|
</key>
|
||||||
@@ -676,7 +692,7 @@
|
|||||||
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
||||||
<value name="TabFlashChanged" type="long" data="8"/>
|
<value name="TabFlashChanged" type="long" data="8"/>
|
||||||
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
||||||
<key name="HotKeys" modified="2018-02-22 06:02:12" build="171109">
|
<key name="HotKeys" modified="2023-06-05 13:14:44" build="221218">
|
||||||
<value name="KeyMacroVersion" type="hex" data="02"/>
|
<value name="KeyMacroVersion" type="hex" data="02"/>
|
||||||
<value name="Multi.Modifier" type="dword" data="00000011"/>
|
<value name="Multi.Modifier" type="dword" data="00000011"/>
|
||||||
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
|
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
|
||||||
@@ -845,13 +861,13 @@
|
|||||||
<value name="KeyMacro31.Text" type="string" data=""/>
|
<value name="KeyMacro31.Text" type="string" data=""/>
|
||||||
<value name="KeyMacro32" type="dword" data="00000000"/>
|
<value name="KeyMacro32" type="dword" data="00000000"/>
|
||||||
<value name="KeyMacro32.Text" type="string" data=""/>
|
<value name="KeyMacro32.Text" type="string" data=""/>
|
||||||
<value name="CTS.VkBlock" type="hex" data="a4"/>
|
<value name="CTS.VkBlock" type="hex" data="A4"/>
|
||||||
<value name="CTS.VkText" type="hex" data="a0"/>
|
<value name="CTS.VkText" type="hex" data="A0"/>
|
||||||
<value name="CTS.VkAct" type="hex" data="00"/>
|
<value name="CTS.VkAct" type="hex" data="00"/>
|
||||||
<value name="CTS.VkPrompt" type="hex" data="00"/>
|
<value name="CTS.VkPrompt" type="hex" data="00"/>
|
||||||
<value name="FarGotoEditorVk" type="hex" data="a2"/>
|
<value name="FarGotoEditorVk" type="hex" data="A2"/>
|
||||||
<value name="DndLKey" type="hex" data="00"/>
|
<value name="DndLKey" type="hex" data="00"/>
|
||||||
<value name="DndRKey" type="hex" data="a2"/>
|
<value name="DndRKey" type="hex" data="A2"/>
|
||||||
<value name="WndDragKey" type="dword" data="00121101"/>
|
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||||
<value name="Multi.Unfasten" type="dword" data="00000000"/>
|
<value name="Multi.Unfasten" type="dword" data="00000000"/>
|
||||||
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
||||||
@@ -869,10 +885,16 @@
|
|||||||
<value name="Key.BufPrUp" type="dword" data="00121121"/>
|
<value name="Key.BufPrUp" type="dword" data="00121121"/>
|
||||||
<value name="Key.BufPrDn" type="dword" data="00121122"/>
|
<value name="Key.BufPrDn" type="dword" data="00121122"/>
|
||||||
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
||||||
|
<value name="SetFocusParent" type="dword" data="0000a01b"/>
|
||||||
|
<value name="CheckUpdates" type="dword" data="00105b55"/>
|
||||||
|
<value name="Multi.NewWndConfirm" type="dword" data="00000000"/>
|
||||||
|
<value name="CloseToRightKey" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.EditMenu" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.EditMenu2" type="dword" data="00000000"/>
|
||||||
</key>
|
</key>
|
||||||
<value name="StartCreateDelay" type="ulong" data="100"/>
|
<value name="StartCreateDelay" type="ulong" data="100"/>
|
||||||
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
|
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
|
||||||
<value name="LastMonitor" type="string" data="0,0,1440,1050"/>
|
<value name="LastMonitor" type="string" data="1680,0,3600,1050"/>
|
||||||
<value name="Restore2ActiveMon" type="hex" data="00"/>
|
<value name="Restore2ActiveMon" type="hex" data="00"/>
|
||||||
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
|
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
|
||||||
<value name="EnvironmentSet" type="multi">
|
<value name="EnvironmentSet" type="multi">
|
||||||
@@ -902,6 +924,15 @@
|
|||||||
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
||||||
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
||||||
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
||||||
|
<value name="Language" type="string" data="en"/>
|
||||||
|
<value name="AnsiLogCodes" type="hex" data="00"/>
|
||||||
|
<value name="ResetTerminalConfirm" type="hex" data="01"/>
|
||||||
|
<value name="RestoreInactive" type="hex" data="00"/>
|
||||||
|
<value name="AutoReloadEnvironment" type="hex" data="01"/>
|
||||||
|
<value name="AutoTrimSingleLine" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.InputGrouping" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.WMode" type="hex" data="01"/>
|
||||||
</key>
|
</key>
|
||||||
</key>
|
</key>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
|
|||||||
4
vendor/bin/cmder_diag.cmd
vendored
4
vendor/bin/cmder_diag.cmd
vendored
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
(echo.
|
(echo.
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
echo set
|
echo Get Cmder env variables...
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
set
|
set | findstr -i -r "^aliases= architecture_bits ccall= cexec= ^clink_ ^cmder ^debug_output= fast_init= ^GIT_INSTALL_ROOT= ^git_locale= ^HOME= ^max_depth= ^nix_tools= ^path_position= ^path= ^PLINK_PROTOCOL= ^print_ ^SVN_SSH= ^time_init= ^user_aliases= ^verbose_output="
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
|
|||||||
3
vendor/bin/create-cmdercfg.cmd
vendored
Normal file
3
vendor/bin/create-cmdercfg.cmd
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
powershell -executionpolicy bypass -f "%cmder_root%\vendor\bin\create-cmdercfg.ps1" -shell cmd -outfile "%CMDER_CONFIG_DIR%\user_init.cmd"
|
||||||
30
vendor/bin/create-cmdercfg.ps1
vendored
Normal file
30
vendor/bin/create-cmdercfg.ps1
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter()]
|
||||||
|
[string]$shell = 'cmd',
|
||||||
|
[string]$outfile = "$env:cmder_config_dir\user_init.cmd"
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($shell -match 'powershell') {
|
||||||
|
write-host "'$shell' is not supported at this time!"
|
||||||
|
exit 0
|
||||||
|
} elseif ($shell -match 'bash') {
|
||||||
|
write-host "'$shell' is not supported at this time!"
|
||||||
|
exit 0
|
||||||
|
} elseif ($shell -notMatch 'cmd') {
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$CmderModulePath = Join-path $env:cmder_root "vendor/psmodules/"
|
||||||
|
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
||||||
|
|
||||||
|
. $CmderFunctions
|
||||||
|
|
||||||
|
if ($shell -match 'cmd') {
|
||||||
|
write-host "Generating Cmder Config for '$shell' shell in '$outfile'..."
|
||||||
|
templateExpand "$env:cmder_root\vendor\user_init.cmd.template" "$outfile"
|
||||||
|
} elseif ($shell -match 'powershell') {
|
||||||
|
write-host "'$shell' is not supported at this time!"
|
||||||
|
} elseif ($shell -match 'bash') {
|
||||||
|
write-host "'$shell' is not supported at this time!"
|
||||||
|
}
|
||||||
24
vendor/bin/timer.cmd
vendored
24
vendor/bin/timer.cmd
vendored
@@ -11,6 +11,7 @@ set /a hours=%end_h%-%start_h%
|
|||||||
set /a mins=%end_m%-%start_m%
|
set /a mins=%end_m%-%start_m%
|
||||||
set /a secs=%end_s%-%start_s%
|
set /a secs=%end_s%-%start_s%
|
||||||
set /a ms=%end_ms%-%start_ms%
|
set /a ms=%end_ms%-%start_ms%
|
||||||
|
|
||||||
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
|
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
|
||||||
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
|
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
|
||||||
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
|
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
|
||||||
@@ -20,3 +21,26 @@ if 1%ms% lss 100 set ms=0%ms%
|
|||||||
:: Mission accomplished
|
:: Mission accomplished
|
||||||
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
|
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
|
||||||
echo Elapsed Time: %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)
|
echo Elapsed Time: %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)
|
||||||
|
|
||||||
|
:: cleanup
|
||||||
|
set start=
|
||||||
|
set end=
|
||||||
|
set options=
|
||||||
|
|
||||||
|
set start_h=
|
||||||
|
set start_m=
|
||||||
|
set start_s=
|
||||||
|
set start_ms=
|
||||||
|
|
||||||
|
set end_h=
|
||||||
|
set end_m=
|
||||||
|
set end_s=
|
||||||
|
set end_ms=
|
||||||
|
|
||||||
|
set hours=
|
||||||
|
set mins=
|
||||||
|
set secs=
|
||||||
|
set ms=
|
||||||
|
|
||||||
|
set totalsecs=
|
||||||
|
|
||||||
|
|||||||
158
vendor/clink.lua
vendored
158
vendor/clink.lua
vendored
@@ -7,7 +7,7 @@
|
|||||||
-- luacheck: globals uah_color cwd_color lamb_color clean_color dirty_color conflict_color unknown_color
|
-- 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_homeSymbol prompt_lambSymbol prompt_type prompt_useHomeSymbol prompt_useUserAtHost
|
||||||
-- luacheck: globals prompt_singleLine prompt_includeVersionControl
|
-- luacheck: globals prompt_singleLine prompt_includeVersionControl
|
||||||
-- luacheck: globals prompt_overrideGitStatusOptIn prompt_overrideSvnStatusOptIn
|
-- luacheck: globals prompt_overrideGitStatusOptIn
|
||||||
-- luacheck: globals clink io.popenyield os.isdir settings.get
|
-- 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
|
||||||
@@ -350,13 +350,8 @@ end
|
|||||||
-- @return {false|mercurial branch information}
|
-- @return {false|mercurial branch information}
|
||||||
---
|
---
|
||||||
local function get_hg_branch()
|
local function get_hg_branch()
|
||||||
-- Return the branch information. The default is to get just the
|
-- Return the branch information.
|
||||||
-- branch name, but you could e.g. use the "hg-prompt" extension to
|
local file = io.popen("hg branch 2>nul")
|
||||||
-- get more information, such as any applied mq patches. Here's an
|
|
||||||
-- example of that:
|
|
||||||
-- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
|
||||||
local cmd = "hg branch 2>nul"
|
|
||||||
local file = io.popen(cmd)
|
|
||||||
if not file then
|
if not file then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@@ -424,12 +419,33 @@ local function get_git_status()
|
|||||||
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()
|
||||||
|
-- The default is to just use the branch name, but you could e.g. use the
|
||||||
|
-- "hg-prompt" extension to get more information, such as any applied mq
|
||||||
|
-- patches. Here's an example of that:
|
||||||
|
-- "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
||||||
|
local pipe = io_popenyield("hg status -amrd 2>&1")
|
||||||
|
if not pipe then
|
||||||
|
return { error = true }
|
||||||
|
end
|
||||||
|
|
||||||
|
local output = pipe:read('*all')
|
||||||
|
pipe:close()
|
||||||
|
|
||||||
|
local dirty = (output ~= nil and output ~= "")
|
||||||
|
return { clean = not dirty }
|
||||||
|
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 2>nul")
|
||||||
if not file then
|
if not file then
|
||||||
return { error = true }
|
return { error = true }
|
||||||
end
|
end
|
||||||
@@ -520,14 +536,6 @@ local function git_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Colors for git status
|
|
||||||
local colors = {
|
|
||||||
clean = get_clean_color(),
|
|
||||||
dirty = get_dirty_color(),
|
|
||||||
conflict = get_conflict_color(),
|
|
||||||
nostatus = get_unknown_color()
|
|
||||||
}
|
|
||||||
|
|
||||||
local git_dir = get_git_dir()
|
local git_dir = get_git_dir()
|
||||||
local color
|
local color
|
||||||
if git_dir then
|
if git_dir then
|
||||||
@@ -547,18 +555,19 @@ local function git_prompt_filter()
|
|||||||
local gitConflict = gitInfo.conflict
|
local gitConflict = gitInfo.conflict
|
||||||
|
|
||||||
if gitStatus == nil then
|
if gitStatus == nil then
|
||||||
color = colors.nostatus
|
color = get_unknown_color()
|
||||||
elseif gitStatus then
|
elseif gitStatus then
|
||||||
color = colors.clean
|
color = get_clean_color()
|
||||||
else
|
else
|
||||||
color = colors.dirty
|
color = get_dirty_color()
|
||||||
end
|
end
|
||||||
|
|
||||||
if gitConflict then
|
if gitConflict then
|
||||||
color = colors.conflict
|
color = get_conflict_color()
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", " "..color.."("..branch..")")
|
local result = " "..color.."("..branch..")"
|
||||||
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", result)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -568,6 +577,18 @@ local function git_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_hg_info_table()
|
||||||
|
local info = clink_promptcoroutine(function ()
|
||||||
|
return get_hg_status() or {}
|
||||||
|
end)
|
||||||
|
if not info then
|
||||||
|
info = cached_info.hg_info or {}
|
||||||
|
else
|
||||||
|
cached_info.hg_info = info
|
||||||
|
end
|
||||||
|
return info
|
||||||
|
end
|
||||||
|
|
||||||
local function hg_prompt_filter()
|
local function hg_prompt_filter()
|
||||||
|
|
||||||
-- Don't do any hg processing if the prompt doesn't want to show hg info.
|
-- Don't do any hg processing if the prompt doesn't want to show hg info.
|
||||||
@@ -577,33 +598,30 @@ local function hg_prompt_filter()
|
|||||||
|
|
||||||
local hg_dir = get_hg_dir()
|
local hg_dir = get_hg_dir()
|
||||||
if hg_dir then
|
if hg_dir then
|
||||||
-- Colors for mercurial status
|
local branch = get_hg_branch()
|
||||||
local colors = {
|
if branch and
|
||||||
clean = get_clean_color(),
|
|
||||||
dirty = get_dirty_color(),
|
|
||||||
nostatus = get_unknown_color()
|
|
||||||
}
|
|
||||||
local output = get_hg_branch()
|
|
||||||
|
|
||||||
-- strip the trailing newline from the branch name
|
|
||||||
local n = #output
|
|
||||||
while n > 0 and output:find("^%s", n) do n = n - 1 end
|
|
||||||
local branch = output:sub(1, n)
|
|
||||||
|
|
||||||
if branch ~= nil and
|
|
||||||
string.sub(branch,1,7) ~= "abort: " and -- not an HG working copy
|
string.sub(branch,1,7) ~= "abort: " and -- not an HG working copy
|
||||||
(not string.find(branch, "is not recognized")) then -- 'hg' not in path
|
(not string.find(branch, "is not recognized")) then -- 'hg' not in path
|
||||||
local color = colors.clean
|
-- If in a different repo or branch than last time, discard cached info
|
||||||
|
if cached_info.hg_dir ~= hg_dir or cached_info.hg_branch ~= branch then
|
||||||
local pipe = io.popen("hg status -amrd 2>&1")
|
cached_info.hg_info = nil
|
||||||
if pipe then
|
cached_info.hg_dir = hg_dir
|
||||||
output = pipe:read('*all')
|
cached_info.hg_branch = branch
|
||||||
pipe:close()
|
|
||||||
if output ~= nil and output ~= "" then color = colors.dirty end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local result = color .. "(" .. branch .. ")"
|
local hgInfo = get_hg_info_table()
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", " "..result)
|
|
||||||
|
local color
|
||||||
|
if not hgInfo or hgInfo.error then
|
||||||
|
color = get_unknown_color()
|
||||||
|
elseif hgInfo.clean then
|
||||||
|
color = get_clean_color()
|
||||||
|
else
|
||||||
|
color = get_dirty_color()
|
||||||
|
end
|
||||||
|
|
||||||
|
local result = " "..color.."("..branch..")"
|
||||||
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", result)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -612,6 +630,18 @@ local function hg_prompt_filter()
|
|||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "")
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_svn_info_table()
|
||||||
|
local info = clink_promptcoroutine(function ()
|
||||||
|
return get_svn_status() or {}
|
||||||
|
end)
|
||||||
|
if not info then
|
||||||
|
info = cached_info.svn_info or {}
|
||||||
|
else
|
||||||
|
cached_info.svn_info = info
|
||||||
|
end
|
||||||
|
return info
|
||||||
|
end
|
||||||
|
|
||||||
local function svn_prompt_filter()
|
local function svn_prompt_filter()
|
||||||
|
|
||||||
-- Don't do any svn processing if the prompt doesn't want to show svn info.
|
-- Don't do any svn processing if the prompt doesn't want to show svn info.
|
||||||
@@ -619,13 +649,6 @@ local function svn_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Colors for svn status
|
|
||||||
local colors = {
|
|
||||||
clean = get_clean_color(),
|
|
||||||
dirty = get_dirty_color(),
|
|
||||||
nostatus = get_unknown_color()
|
|
||||||
}
|
|
||||||
|
|
||||||
local svn_dir = get_svn_dir()
|
local svn_dir = get_svn_dir()
|
||||||
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
|
||||||
@@ -637,29 +660,16 @@ local function svn_prompt_filter()
|
|||||||
cached_info.svn_dir = svn_dir
|
cached_info.svn_dir = svn_dir
|
||||||
cached_info.svn_branch = branch
|
cached_info.svn_branch = branch
|
||||||
end
|
end
|
||||||
-- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call
|
|
||||||
local svnStatus
|
local svnInfo = get_svn_info_table()
|
||||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then -- luacheck: no max line length
|
|
||||||
svnStatus = clink_promptcoroutine(function ()
|
|
||||||
return get_svn_status()
|
|
||||||
end)
|
|
||||||
-- If the status result is pending, use the cached version instead, otherwise store it to the cache
|
|
||||||
if svnStatus == nil then
|
|
||||||
svnStatus = cached_info.svn_info
|
|
||||||
else
|
|
||||||
cached_info.svn_info = svnStatus
|
|
||||||
end
|
|
||||||
else
|
|
||||||
svnStatus = get_svn_status()
|
|
||||||
end
|
|
||||||
|
|
||||||
local color
|
local color
|
||||||
if not svnStatus or svnStatus.error then
|
if not svnInfo or svnInfo.error then
|
||||||
color = colors.nostatus
|
color = get_unknown_color()
|
||||||
elseif svnStatus.clean then
|
elseif svnInfo.clean then
|
||||||
color = colors.clean
|
color = get_clean_color()
|
||||||
else
|
else
|
||||||
color = colors.dirty
|
color = get_dirty_color()
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", " "..color.."("..branch..")")
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", " "..color.."("..branch..")")
|
||||||
@@ -692,6 +702,10 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- If Cmder is launched with '/c [folderPath]', indicating Cmder is installed globally and
|
||||||
|
-- each user has a private '[folderPath]\config' folder, Clink won't know about the global
|
||||||
|
-- '%cmder_root%\config dir, so we need to load scripts from there before . Clink loads lua
|
||||||
|
-- scripts from the profile directory given to it when it was injected.
|
||||||
if clink.get_env('CMDER_USER_CONFIG') then
|
if clink.get_env('CMDER_USER_CONFIG') then
|
||||||
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
||||||
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
||||||
|
|||||||
6
vendor/cmder.sh
vendored
6
vendor/cmder.sh
vendored
@@ -22,7 +22,11 @@ function runProfiled {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
||||||
if [ "$CMDER_ROOT" == "" ] ; then
|
if [ -z "$CMDER_ROOT" ] && [ -n "$cmder_root" ] ; then
|
||||||
|
export CMDER_ROOT=$(cygpath -u $cmder_root)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$CMDER_ROOT" ] ; then
|
||||||
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
||||||
else
|
else
|
||||||
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
|
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
|
||||||
|
|||||||
19
vendor/cmder_exinit
vendored
19
vendor/cmder_exinit
vendored
@@ -26,15 +26,14 @@ function runProfiled {
|
|||||||
unset profile_d_scripts
|
unset profile_d_scripts
|
||||||
pushd "${1}" >/dev/null
|
pushd "${1}" >/dev/null
|
||||||
|
|
||||||
if [ ! "x${ZSH_VERSION}" = "x" ]; then
|
if [ -n "${ZSH_VERSION}" ]; then
|
||||||
profile_d_scripts=$(ls *.zsh 2>/dev/null)
|
profile_d_scripts=$(ls *.zsh 2>/dev/null)
|
||||||
elif [ ! "x${BASH_VERSION}" = "x" ]; then
|
elif [ -n "${BASH_VERSION}" ]; then
|
||||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
if [ -n "${profile_d_scripts}" ] ; then
|
||||||
for x in ${profile_d_scripts} ; do
|
for x in ${profile_d_scripts} ; do
|
||||||
echo Sourcing "${1}/${x}"...
|
|
||||||
. "${1}/${x}"
|
. "${1}/${x}"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@@ -44,23 +43,23 @@ function runProfiled {
|
|||||||
# Check that we haven't already been sourced.
|
# Check that we haven't already been sourced.
|
||||||
[[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return
|
[[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return
|
||||||
|
|
||||||
|
if [ -z "$CMDER_ROOT" ] && [ -n "$cmder_root" ] ; then
|
||||||
|
export CMDER_ROOT=$(cygpath -u $cmder_root)
|
||||||
|
fi
|
||||||
|
|
||||||
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
||||||
if [ "$CMDER_ROOT" = "" -a "$ConEmuDir" != "" ] ; then
|
if [ "$CMDER_ROOT" = "" -a "$ConEmuDir" != "" ] ; then
|
||||||
if [ -d "${ConEmuDir}../../vendor" ] ; then
|
if [ -d "${ConEmuDir}/../../vendor" ] ; then
|
||||||
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
||||||
else
|
|
||||||
echo "Running in ConEmu without Cmder, skipping Cmder integration."
|
|
||||||
fi
|
fi
|
||||||
elif [ "$CMDER_ROOT" != "" ] ; then
|
elif [ "$CMDER_ROOT" != "" ] ; then
|
||||||
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
|
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! "$CMDER_ROOT" = "" ] ; then
|
if [ -n "$CMDER_ROOT" ] ; then
|
||||||
# Remove any trailing '/'
|
# Remove any trailing '/'
|
||||||
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
||||||
|
|
||||||
echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"."
|
|
||||||
|
|
||||||
export CMDER_ROOT
|
export CMDER_ROOT
|
||||||
|
|
||||||
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
||||||
|
|||||||
5
vendor/cmder_prompt_config.lua.default
vendored
5
vendor/cmder_prompt_config.lua.default
vendored
@@ -38,11 +38,6 @@ prompt_includeVersionControl = true
|
|||||||
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
||||||
prompt_overrideGitStatusOptIn = false
|
prompt_overrideGitStatusOptIn = false
|
||||||
|
|
||||||
-- OPTIONAL. If true then always ignore the cmder.status and cmder.cmdstatus svn config settings and run the svn prompt commands in the background.
|
|
||||||
-- default is false
|
|
||||||
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
|
||||||
prompt_overrideSvnStatusOptIn = false
|
|
||||||
|
|
||||||
-- Prompt Attributes
|
-- Prompt Attributes
|
||||||
--
|
--
|
||||||
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
||||||
|
|||||||
49
vendor/git-prompt.sh
vendored
49
vendor/git-prompt.sh
vendored
@@ -5,9 +5,9 @@ function getGitStatusSetting() {
|
|||||||
# Get all git config entries for the current repository without pager
|
# 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
|
gitConfig=$(git --no-pager config -l 2>/dev/null) || return 0 # treat failure as enabled
|
||||||
|
|
||||||
# Check if git status for Cmder is disabled
|
# Check if git status display for Cmder is disabled via config
|
||||||
if [[ $gitConfig =~ (^|$'\n')cmder\.status=false($|$'\n') ]] || \
|
# Matches: cmder.status=false or cmder.shstatus=false (Bash-specific)
|
||||||
[[ $gitConfig =~ (^|$'\n')cmder\.shstatus=false($|$'\n') ]]
|
if [[ $gitConfig =~ (^|$'\n')cmder\.(sh)?status=false($|$'\n') ]]
|
||||||
then
|
then
|
||||||
return 1 # disabled
|
return 1 # disabled
|
||||||
fi
|
fi
|
||||||
@@ -47,9 +47,41 @@ then
|
|||||||
. ~/.config/git/git-prompt.sh
|
. ~/.config/git/git-prompt.sh
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Taken parts from https://github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh
|
|
||||||
|
# Setup OSC 133 shell integration for Windows Terminal
|
||||||
|
if [ -n "$WT_SESSION" ]; then
|
||||||
|
__cmder_prompt_command() {
|
||||||
|
local exit_code=$?
|
||||||
|
# Emit OSC 133;D to mark the end of command execution with exit code
|
||||||
|
printf '\e]133;D;%s\a' "$exit_code"
|
||||||
|
return $exit_code
|
||||||
|
}
|
||||||
|
|
||||||
|
__cmder_preexec() {
|
||||||
|
# Emit OSC 133;C to mark the start of command execution
|
||||||
|
printf '\e]133;C\a'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Append to PROMPT_COMMAND to emit sequences just before each prompt
|
||||||
|
if [ -z "$PROMPT_COMMAND" ]; then
|
||||||
|
PROMPT_COMMAND="__cmder_prompt_command"
|
||||||
|
else
|
||||||
|
PROMPT_COMMAND="__cmder_prompt_command;$PROMPT_COMMAND"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use DEBUG trap to emit OSC 133;C before command execution
|
||||||
|
trap '__cmder_preexec' DEBUG
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source: github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh
|
||||||
PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory
|
PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory
|
||||||
# PS1="$PS1"'\n' # new line (disabled)
|
# PS1="$PS1"'\n' # new line (disabled)
|
||||||
|
|
||||||
|
if [ -n "$WT_SESSION" ]; then
|
||||||
|
# Emit OSC 133;A to mark the start of prompt
|
||||||
|
PS1="$PS1"'\e]133;A\a'
|
||||||
|
fi
|
||||||
|
|
||||||
PS1="$PS1"'\[\033[32m\]' # change to green and bold
|
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${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set)
|
PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set)
|
||||||
@@ -70,7 +102,7 @@ else
|
|||||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||||
PS1="$PS1"'`__git_ps1`' # bash function
|
PS1="$PS1"'`__git_ps1`' # bash function
|
||||||
else
|
else
|
||||||
PS1="$PS1"'\[\033[37;1m\]' # change color to white
|
PS1="$PS1"'\[\033[37;1m\]' # change color to white
|
||||||
PS1="$PS1"'`getSimpleGitBranch`'
|
PS1="$PS1"'`getSimpleGitBranch`'
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -80,9 +112,14 @@ else
|
|||||||
PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold
|
PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold
|
||||||
PS1="$PS1"'λ ' # prompt: Cmder uses λ
|
PS1="$PS1"'λ ' # prompt: Cmder uses λ
|
||||||
PS1="$PS1"'\[\033[0m\]' # reset color
|
PS1="$PS1"'\[\033[0m\]' # reset color
|
||||||
|
|
||||||
|
if [ -n "$WT_SESSION" ]; then
|
||||||
|
# Emit OSC 133;B to mark the end of prompt
|
||||||
|
PS1="$PS1"'\[\e]133;B\a\]'
|
||||||
|
fi
|
||||||
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)
|
# Evaluate all user-specific Bash completion scripts (if any)
|
||||||
if test -z "$WINELOADERNOEXEC"
|
if test -z "$WINELOADERNOEXEC"
|
||||||
|
|||||||
119
vendor/init.bat
vendored
119
vendor/init.bat
vendored
@@ -166,9 +166,24 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
|||||||
set CMDER_CLINK=0
|
set CMDER_CLINK=0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
if exist "%CMDER_ROOT%\config\user_init.cmd" (
|
||||||
|
call "%CMDER_ROOT%\config\user_init.cmd"
|
||||||
|
exit /b
|
||||||
|
) else if exist "%CMDER_USER_CONFIG%\config\user_init.cmd" (
|
||||||
|
call "%CMDER_USER_CONFIG%\config\user_init.cmd"
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
) else if exist "%CMDER_ROOT%\config\user_init.cmd" (
|
||||||
|
call "%CMDER_ROOT%\config\user_init.cmd"
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
|
||||||
if "%CMDER_CLINK%" == "1" (
|
if "%CMDER_CLINK%" == "1" (
|
||||||
REM TODO: Detect if clink is already injected, if so goto :CLINK_FINISH
|
REM TODO: Detect if clink is already injected, if so goto :CLINK_FINISH
|
||||||
goto :INJECT_CLINK
|
goto :INJECT_CLINK
|
||||||
|
) else if "%CMDER_CLINK%" == "2" (
|
||||||
|
goto :CLINK_FINISH
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :SKIP_CLINK
|
goto :SKIP_CLINK
|
||||||
@@ -205,6 +220,7 @@ 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"
|
||||||
|
set CMDER_CLINK=2
|
||||||
|
|
||||||
:: Check if a fatal error occurred when trying to inject Clink
|
:: Check if a fatal error occurred when trying to inject Clink
|
||||||
if errorlevel 2 (
|
if errorlevel 2 (
|
||||||
@@ -223,6 +239,9 @@ goto :SKIP_CLINK
|
|||||||
:: Revert back to plain cmd.exe prompt without clink
|
:: Revert back to plain cmd.exe prompt without clink
|
||||||
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
||||||
|
|
||||||
|
:: Add Windows Terminal shell integration support (OSC 133 sequences)
|
||||||
|
if defined WT_SESSION (prompt $e]133;D$e\$e]133;A$e\$e]9;9;$P$e\%PROMPT%$e]133;B$e\)
|
||||||
|
|
||||||
chcp %cp%>nul
|
chcp %cp%>nul
|
||||||
|
|
||||||
:CLINK_FINISH
|
:CLINK_FINISH
|
||||||
@@ -299,7 +318,7 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
|||||||
)
|
)
|
||||||
|
|
||||||
:SPECIFIED_GIT
|
:SPECIFIED_GIT
|
||||||
%print_debug% init.bat "Using /GIT_INSTALL_ROOT..."
|
%print_debug% init.bat "Using specified GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%...."
|
||||||
goto :CONFIGURE_GIT
|
goto :CONFIGURE_GIT
|
||||||
|
|
||||||
:FOUND_GIT
|
:FOUND_GIT
|
||||||
@@ -308,8 +327,13 @@ goto :CONFIGURE_GIT
|
|||||||
|
|
||||||
:CONFIGURE_GIT
|
:CONFIGURE_GIT
|
||||||
%print_debug% init.bat "Using Git from '%GIT_INSTALL_ROOT%..."
|
%print_debug% init.bat "Using Git from '%GIT_INSTALL_ROOT%..."
|
||||||
|
|
||||||
:: Add git to the path
|
:: Add git to the path
|
||||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" ""
|
%print_debug% init.bat "START - git.exe(prepend): Env Var - PATH=%path%"
|
||||||
|
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\cmd;%path%"
|
||||||
|
)
|
||||||
|
%print_debug% init.bat "END - git.exe(prepend): Env Var - PATH=%path%"
|
||||||
|
|
||||||
:: Add the unix commands at the end to not shadow windows commands like `more` and `find`
|
:: Add the unix commands at the end to not shadow windows commands like `more` and `find`
|
||||||
if %nix_tools% equ 1 (
|
if %nix_tools% equ 1 (
|
||||||
@@ -320,16 +344,30 @@ if %nix_tools% equ 1 (
|
|||||||
set "path_position="
|
set "path_position="
|
||||||
)
|
)
|
||||||
|
|
||||||
|
%print_debug% init.bat "START - nix_tools(%path_position%): Env Var - PATH=%path%"
|
||||||
if %nix_tools% geq 1 (
|
if %nix_tools% geq 1 (
|
||||||
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
||||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw32\bin" %path_position%
|
if "%path_position%" == "append" (
|
||||||
|
set "path=%path%;%GIT_INSTALL_ROOT%\mingw32\bin"
|
||||||
|
) else (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\mingw32\bin;%path%"
|
||||||
|
)
|
||||||
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
||||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw64\bin" %path_position%
|
if "%path_position%" == "append" (
|
||||||
|
set "path=%path%;%GIT_INSTALL_ROOT%\mingw64\bin"
|
||||||
|
) else (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\mingw64\bin;%path%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if exist "%GIT_INSTALL_ROOT%\usr\bin" (
|
if exist "%GIT_INSTALL_ROOT%\usr\bin" (
|
||||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" %path_position%
|
if "%path_position%" == "append" (
|
||||||
|
set "path=%path%;%GIT_INSTALL_ROOT%\usr\bin"
|
||||||
|
) else (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\usr\bin;%path%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
%print_debug% init.bat "END - nix_tools(%path_position%): Env Var - PATH=%path%"
|
||||||
|
|
||||||
:SET_ENV
|
:SET_ENV
|
||||||
|
|
||||||
@@ -362,8 +400,7 @@ if defined git_locale (
|
|||||||
)
|
)
|
||||||
endlocal && set LANG=%LANG%
|
endlocal && set LANG=%LANG%
|
||||||
|
|
||||||
%print_debug% init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
%print_debug% init.bat "Found Git in: 'GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%'"
|
||||||
%print_debug% init.bat "Found Git in: '%GIT_INSTALL_ROOT%'"
|
|
||||||
goto :PATH_ENHANCE
|
goto :PATH_ENHANCE
|
||||||
|
|
||||||
:NO_GIT
|
:NO_GIT
|
||||||
@@ -371,14 +408,32 @@ goto :PATH_ENHANCE
|
|||||||
endlocal
|
endlocal
|
||||||
|
|
||||||
:PATH_ENHANCE
|
:PATH_ENHANCE
|
||||||
%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin"
|
%print_debug% init.bat "START - vendor/bin(prepend): Env Var - PATH=%path%"
|
||||||
|
set "path=%CMDER_ROOT%\vendor\bin;%path%"
|
||||||
|
%print_debug% init.bat "END - vendor/bin(prepend): Env Var - PATH=%path%"
|
||||||
|
|
||||||
:USER_CONFIG_START
|
:USER_CONFIG_START
|
||||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
%print_debug% init.bat "START - bin(prepend): Env Var - PATH=%path%"
|
||||||
if defined CMDER_USER_BIN (
|
if %max_depth% gtr 1 (
|
||||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||||
|
) else (
|
||||||
|
set "path=%CMDER_ROOT%\bin;%path%"
|
||||||
)
|
)
|
||||||
%lib_path% enhance_path "%CMDER_ROOT%" append
|
%print_debug% init.bat "END - bin(prepend): Env Var - PATH=%path%"
|
||||||
|
|
||||||
|
if defined CMDER_USER_BIN if defined CMDER_USER_ROOT (
|
||||||
|
%print_debug% init.bat "START - user_bin(prepend): Env Var - PATH=%path%"
|
||||||
|
if %max_depth% gtr 1 (
|
||||||
|
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||||
|
) else (
|
||||||
|
set "path=%CMDER_USER_ROOT%\bin;%path%"
|
||||||
|
)
|
||||||
|
%print_debug% init.bat "END - user_bin(prepend): Env Var - PATH=!path!"
|
||||||
|
)
|
||||||
|
|
||||||
|
%print_debug% init.bat "START - cmder_root(append): Env Var - PATH=%path%"
|
||||||
|
set "path=%path%;%CMDER_ROOT%"
|
||||||
|
%print_debug% init.bat "END - cmder_root(append): Env Var - PATH=%path%"
|
||||||
|
|
||||||
:: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d"
|
:: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d"
|
||||||
:: to run them at startup.
|
:: to run them at startup.
|
||||||
@@ -487,12 +542,40 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD
|
|||||||
|
|
||||||
set initialConfig=
|
set initialConfig=
|
||||||
|
|
||||||
:CMDER_CONFIGURED
|
if not exist "%CMDER_CONFIG_DIR%\user_init.cmd" (
|
||||||
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
powershell -executionpolicy bypass -f "%cmder_root%\vendor\bin\create-cmdercfg.ps1" -shell cmd -outfile "%CMDER_CONFIG_DIR%\user_init.cmd"
|
||||||
|
|
||||||
set CMDER_INIT_END=%time%
|
if not exist "%CMDER_ROOT%\config\user_init.cmd" (
|
||||||
|
%print_error% "Failed to generate Cmder config"
|
||||||
if %time_init% gtr 0 (
|
)
|
||||||
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
:CMDER_CONFIGURED
|
||||||
|
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
||||||
|
set CMDER_INIT_END=%time%
|
||||||
|
|
||||||
|
if "%time_init%" == "1" if "%CMDER_INIT_END%" neq "" if "%CMDER_INIT_START%" neq "" (
|
||||||
|
call "%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||||
|
)
|
||||||
|
|
||||||
|
:CLEANUP
|
||||||
|
set architecture_bits=
|
||||||
|
set CMDER_ALIASES=
|
||||||
|
set CMDER_INIT_END=
|
||||||
|
set CMDER_INIT_START=
|
||||||
|
set CMDER_USER_FLAGS=
|
||||||
|
set CMDER_CLINK=
|
||||||
|
set debug_output=
|
||||||
|
set fast_init=
|
||||||
|
set max_depth=
|
||||||
|
set nix_tools=
|
||||||
|
set path_position=
|
||||||
|
set print_debug=
|
||||||
|
set print_error=
|
||||||
|
set print_verbose=
|
||||||
|
set print_warning=
|
||||||
|
set time_init=
|
||||||
|
set verbose_output=
|
||||||
|
set user_aliases=
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|||||||
38
vendor/lib/lib_path.cmd
vendored
38
vendor/lib/lib_path.cmd
vendored
@@ -157,8 +157,12 @@ exit /b
|
|||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:enhance_path_recursive
|
:enhance_path_recursive
|
||||||
|
call :set_path_recursive "%~1" "%~2" "%~3"
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:set_path_recursive
|
||||||
:::===============================================================================
|
:::===============================================================================
|
||||||
:::enhance_path_recursive - Add a directory and subs to the path env variable if
|
:::set_path_recursive - Add a directory and subs to the path env variable if
|
||||||
::: required.
|
::: required.
|
||||||
:::.
|
:::.
|
||||||
:::include:
|
:::include:
|
||||||
@@ -167,7 +171,7 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::usage:
|
:::usage:
|
||||||
:::.
|
:::.
|
||||||
::: call "%~DP0lib_path" enhance_path_recursive "[dir_path]" [max_depth] [append]
|
::: call "%~DP0lib_path" set_path_recursive "[dir_path]" [max_depth] [append]
|
||||||
:::.
|
:::.
|
||||||
:::required:
|
:::required:
|
||||||
:::.
|
:::.
|
||||||
@@ -209,7 +213,11 @@ exit /b
|
|||||||
|
|
||||||
if "%fast_init%" == "1" (
|
if "%fast_init%" == "1" (
|
||||||
if "%add_to_path%" neq "" (
|
if "%add_to_path%" neq "" (
|
||||||
call :enhance_path "%add_to_path%" %position%
|
if "%position%" == "append" (
|
||||||
|
set "path=%path%;%add_to_path%"
|
||||||
|
) else (
|
||||||
|
set "path=%add_to_path%;%path%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -218,15 +226,19 @@ exit /b
|
|||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
%print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%"
|
%print_debug% :set_path_recursive "Env Var - add_path=%add_to_path%"
|
||||||
%print_debug% :enhance_path_recursive "Env Var - position=%position%"
|
%print_debug% :set_path_recursive "Env Var - position=%position%"
|
||||||
%print_debug% :enhance_path_recursive "Env Var - depth=%depth%"
|
%print_debug% :set_path_recursive "Env Var - depth=%depth%"
|
||||||
%print_debug% :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
%print_debug% :set_path_recursive "Env Var - max_depth=%max_depth%"
|
||||||
|
|
||||||
if %max_depth% gtr %depth% (
|
if %max_depth% gtr %depth% (
|
||||||
if "%add_to_path%" neq "" (
|
if "%add_to_path%" neq "" (
|
||||||
%print_debug% :enhance_path_recursive "Adding parent directory - '%add_to_path%'"
|
%print_debug% :set_path_recursive "Adding parent directory - '%add_to_path%'"
|
||||||
call :enhance_path "%add_to_path%" %position%
|
if "%position%" == "append" (
|
||||||
|
set "path=%path%;%add_to_path%"
|
||||||
|
) else (
|
||||||
|
set "path=%add_to_path%;%path%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
call :set_depth
|
call :set_depth
|
||||||
call :loop_depth
|
call :loop_depth
|
||||||
@@ -246,9 +258,9 @@ exit /b
|
|||||||
)
|
)
|
||||||
|
|
||||||
for /d %%i in ("%add_path%\*") do (
|
for /d %%i in ("%add_path%\*") do (
|
||||||
%print_debug% :enhance_path_recursive "Env Var BEFORE - depth=%depth%"
|
%print_debug% :set_path_recursive "Env Var BEFORE - depth=%depth%"
|
||||||
%print_debug% :enhance_path_recursive "Found Subdirectory - '%%~fi'"
|
%print_debug% :set_path_recursive "Found Subdirectory - '%%~fi'"
|
||||||
call :enhance_path_recursive "%%~fi" %depth% %max_depth% %position%
|
call :set_path_recursive "%%~fi" %depth% %max_depth% %position%
|
||||||
%print_debug% :enhance_path_recursive "Env Var AFTER- depth=%depth%"
|
%print_debug% :set_path_recursive "Env Var AFTER- depth=%depth%"
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|||||||
111
vendor/profile.ps1
vendored
111
vendor/profile.ps1
vendored
@@ -7,15 +7,11 @@
|
|||||||
|
|
||||||
$CMDER_INIT_START = Get-Date
|
$CMDER_INIT_START = Get-Date
|
||||||
|
|
||||||
# Compatibility with PS major versions <= 2
|
# Determine the script root if not already set
|
||||||
if (!$PSScriptRoot) {
|
if (!$PSScriptRoot) {
|
||||||
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ENV:CMDER_USER_CONFIG) {
|
|
||||||
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
|
||||||
}
|
|
||||||
|
|
||||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
||||||
if (!$ENV:CMDER_ROOT) {
|
if (!$ENV:CMDER_ROOT) {
|
||||||
if ($ENV:ConEmuDir) {
|
if ($ENV:ConEmuDir) {
|
||||||
@@ -28,40 +24,61 @@ if (!$ENV:CMDER_ROOT) {
|
|||||||
# Remove trailing '\'
|
# Remove trailing '\'
|
||||||
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
||||||
|
|
||||||
# -> 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)
|
||||||
|
|
||||||
|
# Enable Debug and Verbose output if CMDER_DEBUG environment variable is set to '1' or 'true'
|
||||||
|
if ($env:CMDER_DEBUG -and ($env:CMDER_DEBUG -match '^(1|true)$')) {
|
||||||
|
$DebugPreference = 'Continue'
|
||||||
|
$VerbosePreference = 'Continue'
|
||||||
|
}
|
||||||
|
|
||||||
# Add Cmder modules directory to the autoload path.
|
# Add Cmder modules directory to the autoload path.
|
||||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||||
|
|
||||||
|
# Import Cmder functions
|
||||||
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
||||||
. $CmderFunctions
|
. $CmderFunctions
|
||||||
|
|
||||||
if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderModulePath) ) {
|
# Configure PSModulePath to include Cmder modules if not already present
|
||||||
|
if (-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderModulePath) ) {
|
||||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||||
}
|
}
|
||||||
|
|
||||||
$gitVersionVendor = (readVersion -gitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd")
|
if ($env:CMDER_USER_CONFIG) {
|
||||||
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||||
|
}
|
||||||
|
|
||||||
# Get user installed Git Version[s] and Compare with vendored if found.
|
# Read vendored Git Version
|
||||||
|
$gitVendorPath = Join-Path $ENV:CMDER_ROOT 'vendor\git-for-windows\cmd'
|
||||||
|
$gitVersionVendor = Get-GitVersion -GitPath $gitVendorPath
|
||||||
|
if (-not [string]::IsNullOrEmpty($gitVersionVendor)) {
|
||||||
|
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||||
|
} else {
|
||||||
|
Write-Debug "GIT VENDOR is not present at '$gitVendorPath'"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get user installed Git version(s) if found, and compare them with vendored version.
|
||||||
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||||
Write-Debug "GIT PATH: {$git.Path}"
|
Write-Debug "GIT USER PATH: $($git.Path)"
|
||||||
$gitDir = Split-Path -Path $git.Path
|
$gitDir = Split-Path -Path $git.Path
|
||||||
$gitDir = isGitShim -gitPath $gitDir
|
$gitDir = Get-GitShimPath -GitPath $gitDir
|
||||||
$gitVersionUser = (readVersion -gitPath $gitDir)
|
$gitVersionUser = Get-GitVersion -GitPath $gitDir
|
||||||
Write-Debug "GIT USER: ${gitVersionUser}"
|
Write-Debug "GIT USER VERSION: ${gitVersionUser}"
|
||||||
|
|
||||||
$useGitVersion = compare_git_versions -userVersion $gitVersionUser -vendorVersion $gitVersionVendor
|
$useGitVersion = Compare-GitVersion -UserVersion $gitVersionUser -VendorVersion $gitVersionVendor
|
||||||
Write-Debug "Using Git Version: ${useGitVersion}"
|
Write-Debug "Using Git Version: ${useGitVersion}"
|
||||||
|
|
||||||
# Use user installed Git
|
# Use user installed Git
|
||||||
if ($null -eq $gitPathUser) {
|
if ($null -eq $gitPathUser) {
|
||||||
|
Write-Debug "Detected Git from mingw bin directory"
|
||||||
|
Write-Debug "Git Dir: ${gitDir}"
|
||||||
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
||||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 12))
|
$gitPathUser = $gitDir.subString(0, $gitDir.Length - 12)
|
||||||
} else {
|
} else {
|
||||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 4))
|
$gitPathUser = $gitDir.subString(0, $gitDir.Length - 4)
|
||||||
}
|
}
|
||||||
|
Write-Debug "Git Path User: ${gitDir}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($useGitVersion -eq $gitVersionUser) {
|
if ($useGitVersion -eq $gitVersionUser) {
|
||||||
@@ -72,7 +89,7 @@ foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# User vendored Git.
|
# Use vendored Git if no user Git found or user Git is older than vendored Git
|
||||||
if ($null -eq $ENV:GIT_INSTALL_ROOT -and $null -ne $gitVersionVendor) {
|
if ($null -eq $ENV:GIT_INSTALL_ROOT -and $null -ne $gitVersionVendor) {
|
||||||
$ENV:GIT_INSTALL_ROOT = "$ENV:CMDER_ROOT\vendor\git-for-windows"
|
$ENV:GIT_INSTALL_ROOT = "$ENV:CMDER_ROOT\vendor\git-for-windows"
|
||||||
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
||||||
@@ -82,23 +99,43 @@ Write-Debug "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
|||||||
Write-Debug "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
Write-Debug "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
||||||
|
|
||||||
if ($null -ne $ENV:GIT_INSTALL_ROOT) {
|
if ($null -ne $ENV:GIT_INSTALL_ROOT) {
|
||||||
$env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser
|
$env:Path = Set-GitPath -GitRoot "$ENV:GIT_INSTALL_ROOT" -GitType $ENV:GIT_INSTALL_TYPE -GitPathUser $gitPathUser
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Create 'vi' alias for 'vim' if vim is available
|
||||||
if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) {
|
if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) {
|
||||||
New-Alias -name "vi" -value vim
|
New-Alias -name "vi" -value vim -errorAction SilentlyContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# PSReadline configuration
|
||||||
if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||||
|
# Display an extra prompt line between the prompt and the command input
|
||||||
Set-PSReadlineOption -ExtraPromptLineCount 1
|
Set-PSReadlineOption -ExtraPromptLineCount 1
|
||||||
|
|
||||||
|
# Invoked when Enter is pressed to submit a command
|
||||||
|
if ($env:WT_SESSION) {
|
||||||
|
Set-PSReadLineKeyHandler -Key Enter -ScriptBlock {
|
||||||
|
# Get the current command line
|
||||||
|
$line = $null
|
||||||
|
$cursor = $null
|
||||||
|
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
|
||||||
|
|
||||||
|
# Accept the line first
|
||||||
|
[Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
|
||||||
|
|
||||||
|
# Emit OSC 133;C to mark start of command output
|
||||||
|
# This is written directly to the console after the command is accepted
|
||||||
|
[Console]::Write("$([char]0x1B)]133;C$([char]7)")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Pre-assign default prompt hooks so the first run of cmder gets a working prompt.
|
# Pre-assign default prompt hooks so the first run of Cmder gets a working prompt
|
||||||
$env:gitLoaded = $null
|
$env:gitLoaded = $null
|
||||||
[ScriptBlock]$PrePrompt = {}
|
[ScriptBlock]$PrePrompt = {}
|
||||||
[ScriptBlock]$PostPrompt = {}
|
[ScriptBlock]$PostPrompt = {}
|
||||||
[ScriptBlock]$CmderPrompt = {
|
[ScriptBlock]$CmderPrompt = {
|
||||||
# Check if we're currently running under Admin privileges.
|
# Check if we're currently running under Admin privileges
|
||||||
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||||
$principal = [Security.Principal.WindowsPrincipal] $identity
|
$principal = [Security.Principal.WindowsPrincipal] $identity
|
||||||
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
|
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
|
||||||
@@ -107,7 +144,7 @@ $env:gitLoaded = $null
|
|||||||
$Host.UI.RawUI.ForegroundColor = "White"
|
$Host.UI.RawUI.ForegroundColor = "White"
|
||||||
Microsoft.PowerShell.Utility\Write-Host "PS " -NoNewline -ForegroundColor $color
|
Microsoft.PowerShell.Utility\Write-Host "PS " -NoNewline -ForegroundColor $color
|
||||||
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||||
checkGit($pwd.ProviderPath)
|
Show-GitStatus -Path $pwd.ProviderPath
|
||||||
Microsoft.PowerShell.Utility\Write-Host "`nλ" -NoNewLine -ForegroundColor "DarkGray"
|
Microsoft.PowerShell.Utility\Write-Host "`nλ" -NoNewLine -ForegroundColor "DarkGray"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,6 +233,28 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
|||||||
[ScriptBlock]$Prompt = {
|
[ScriptBlock]$Prompt = {
|
||||||
$lastSUCCESS = $?
|
$lastSUCCESS = $?
|
||||||
$realLastExitCode = $LastExitCode
|
$realLastExitCode = $LastExitCode
|
||||||
|
|
||||||
|
# Terminal-specific escape sequences for Windows Terminal and ConEmu
|
||||||
|
if ($env:WT_SESSION -or $env:ConEmuPID) {
|
||||||
|
# Emit OSC 133;D to mark the end of command execution with exit code
|
||||||
|
if ($env:WT_SESSION) {
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;D;$realLastExitCode$([char]7)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Emit OSC 9;9 to enable directory tracking
|
||||||
|
# Enables "Duplicate Tab" and "Split Pane" to preserve the working directory
|
||||||
|
$loc = $executionContext.SessionState.Path.CurrentLocation
|
||||||
|
if ($loc.Provider.Name -eq "FileSystem") {
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]9;9;`"$($loc.ProviderPath)`"$([char]0x1B)\"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Emit OSC 133;A to mark the start of the prompt
|
||||||
|
# Enables features like command navigation, selection, and visual separators
|
||||||
|
if ($env:WT_SESSION) {
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;A$([char]7)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
||||||
if ($lastSUCCESS -or ($LastExitCode -ne 0)) {
|
if ($lastSUCCESS -or ($LastExitCode -ne 0)) {
|
||||||
@@ -204,6 +263,12 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
|||||||
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||||
CmderPrompt
|
CmderPrompt
|
||||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||||
|
|
||||||
|
# Emit OSC 133;B to mark the start of command input (after prompt, before user types)
|
||||||
|
if ($env:WT_SESSION) {
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;B$([char]7)"
|
||||||
|
}
|
||||||
|
|
||||||
$global:LastExitCode = $realLastExitCode
|
$global:LastExitCode = $realLastExitCode
|
||||||
return " "
|
return " "
|
||||||
}
|
}
|
||||||
|
|||||||
332
vendor/psmodules/Cmder.ps1
vendored
332
vendor/psmodules/Cmder.ps1
vendored
@@ -1,179 +1,277 @@
|
|||||||
function readVersion($gitPath) {
|
function Get-GitVersion {
|
||||||
$gitExecutable = "${gitPath}\git.exe"
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$GitPath
|
||||||
|
)
|
||||||
|
|
||||||
if (-not (Test-Path "$gitExecutable")) {
|
$gitExecutable = Join-Path $GitPath "git.exe"
|
||||||
|
|
||||||
|
if (-not (Test-Path $gitExecutable)) {
|
||||||
return $null
|
return $null
|
||||||
}
|
}
|
||||||
|
|
||||||
$gitVersion = (cmd /c "${gitExecutable}" --version)
|
# Execute 'git --version' and capture output
|
||||||
|
$gitVersion = & $gitExecutable --version 2>$null
|
||||||
|
|
||||||
if ($gitVersion -match 'git version') {
|
if ($gitVersion -match 'git version\s+(\S+)') {
|
||||||
($trash1, $trash2, $gitVersion) = $gitVersion.split(' ', 3)
|
return $Matches[1]
|
||||||
} else {
|
|
||||||
pause
|
|
||||||
return $null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $gitVersion.toString()
|
Write-Debug "Git executable path: $gitExecutable"
|
||||||
|
Write-Error "'git --version' returned an improper version string!"
|
||||||
|
Write-Error "Unable to determine Git version from output: $gitVersion"
|
||||||
|
|
||||||
|
return $null
|
||||||
}
|
}
|
||||||
|
|
||||||
function isGitShim($gitPath) {
|
function Get-GitShimPath {
|
||||||
# check if there is a shim file - if yes, read the actual executable path
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$GitPath
|
||||||
|
)
|
||||||
|
# Check if there is a shim file - if yes, read the actual executable path
|
||||||
# See: github.com/ScoopInstaller/Shim
|
# See: github.com/ScoopInstaller/Shim
|
||||||
|
|
||||||
if (Test-Path "${gitPath}\git.shim") {
|
$shimFile = Join-Path $GitPath "git.shim"
|
||||||
$shim = (get-content "${gitPath}\git.shim")
|
if (Test-Path $shimFile) {
|
||||||
($trash, $gitPath) = $shim.replace(' ', '').split('=')
|
$shimContent = Get-Content $shimFile -Raw
|
||||||
|
if ($shimContent -match '^\s*path\s*=\s*(.+)\s*$') {
|
||||||
$gitPath = $gitPath.replace('\git.exe', '')
|
$GitPath = $Matches[1].Trim().Replace('\git.exe', '')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $gitPath.toString()
|
return $GitPath
|
||||||
}
|
}
|
||||||
|
|
||||||
function compareVersions($userVersion, $vendorVersion) {
|
function Compare-Version {
|
||||||
if ($null -ne $userVersion) {
|
param(
|
||||||
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
|
[Parameter(Mandatory = $false)]
|
||||||
} else {
|
[AllowNull()]
|
||||||
return -1
|
[string]$UserVersion,
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[AllowNull()]
|
||||||
|
[string]$VendorVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
if ([string]::IsNullOrEmpty($UserVersion)) { return -1 }
|
||||||
|
if ([string]::IsNullOrEmpty($VendorVersion)) { return 1 }
|
||||||
|
|
||||||
|
# Split version strings by dots to compare segment by segment
|
||||||
|
# For "2.49.0.windows.1", we get: ["2", "49", "0", "windows", "1"]
|
||||||
|
$userParts = $UserVersion -split '\.'
|
||||||
|
$vendorParts = $VendorVersion -split '\.'
|
||||||
|
|
||||||
|
$maxLength = [Math]::Max($userParts.Count, $vendorParts.Count)
|
||||||
|
|
||||||
|
for ($i = 0; $i -lt $maxLength; $i++) {
|
||||||
|
$userPart = if ($i -lt $userParts.Count) { $userParts[$i] } else { '' }
|
||||||
|
$vendorPart = if ($i -lt $vendorParts.Count) { $vendorParts[$i] } else { '' }
|
||||||
|
|
||||||
|
# Check if both parts are purely numeric
|
||||||
|
$userIsNumeric = $userPart -match '^\d+$'
|
||||||
|
$vendorIsNumeric = $vendorPart -match '^\d+$'
|
||||||
|
|
||||||
|
if ($userIsNumeric -and $vendorIsNumeric) {
|
||||||
|
# Both numeric: compare as integers (so 49 > 5, not lexicographic)
|
||||||
|
$userNum = [int]$userPart
|
||||||
|
$vendorNum = [int]$vendorPart
|
||||||
|
|
||||||
|
if ($userNum -gt $vendorNum) { return 1 }
|
||||||
|
if ($userNum -lt $vendorNum) { return -1 }
|
||||||
|
}
|
||||||
|
elseif ($userIsNumeric -and -not $vendorIsNumeric) {
|
||||||
|
# Numeric segment comes before text segment (e.g., "2.0" < "2.0.rc1")
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
elseif (-not $userIsNumeric -and $vendorIsNumeric) {
|
||||||
|
# Text segment comes after numeric segment
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# Both are text: use case-insensitive lexicographic comparison
|
||||||
|
$cmp = [string]::Compare($userPart, $vendorPart, $true)
|
||||||
|
if ($cmp -ne 0) { return [Math]::Sign($cmp) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($null -ne $vendorVersion) {
|
|
||||||
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
|
|
||||||
} else {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($userMajor -gt $vendorMajor) { return 1 }
|
|
||||||
if ($userMajor -lt $vendorMajor) { return -1 }
|
|
||||||
|
|
||||||
if ($userMinor -gt $vendorMinor) { return 1 }
|
|
||||||
if ($userMinor -lt $vendorMinor) { return -1 }
|
|
||||||
|
|
||||||
if ($userPatch -gt $vendorPatch) { return 1 }
|
|
||||||
if ($userPatch -lt $vendorPatch) { return -1 }
|
|
||||||
|
|
||||||
if ($userBuild -gt $vendorBuild) { return 1 }
|
|
||||||
if ($userBuild -lt $vendorBuild) { return -1 }
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function compare_git_versions($userVersion, $vendorVersion) {
|
function Compare-GitVersion {
|
||||||
$result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion
|
param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[AllowNull()]
|
||||||
|
[string]$UserVersion,
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[AllowNull()]
|
||||||
|
[string]$VendorVersion
|
||||||
|
)
|
||||||
|
|
||||||
Write-Debug "Compare Versions Result: ${result}"
|
$result = Compare-Version -UserVersion $UserVersion -VendorVersion $VendorVersion
|
||||||
|
|
||||||
|
Write-Debug "Compare Versions Result: $result"
|
||||||
if ($result -ge 0) {
|
if ($result -ge 0) {
|
||||||
return $userVersion
|
return $UserVersion
|
||||||
}
|
|
||||||
else {
|
|
||||||
return $vendorVersion
|
|
||||||
}
|
}
|
||||||
|
return $VendorVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
function Configure-Git($gitRoot, $gitType, $gitPathUser) {
|
function Set-GitPath {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$GitRoot,
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$GitType,
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]$GitPathUser
|
||||||
|
)
|
||||||
|
|
||||||
# Proposed Behavior
|
# Proposed Behavior
|
||||||
|
|
||||||
# Modify the path if we are using VENDORED Git, do nothing if using USER Git.
|
# Modify the path if we are using VENDORED Git, do nothing if using USER Git.
|
||||||
# If User Git is installed but is older, match its path config adding paths
|
# If User Git is installed but is older, match its path config adding paths
|
||||||
# in the same path positions allowing a user to configure Cmder Git path
|
# in the same path positions allowing a user to configure Cmder Git path
|
||||||
# using locally installed Git Path Config.
|
# using locally installed Git Path Config.
|
||||||
if ($gitType -eq 'VENDOR') {
|
|
||||||
# If User Git is installed replace its path config with Newer Vendored Git Path
|
|
||||||
if (($null -ne $gitPathUser) -and ($gitPathUser -ne '')) {
|
|
||||||
Write-Verbose "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
|
|
||||||
|
|
||||||
$newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot)
|
if ($GitType -ne 'VENDOR') {
|
||||||
}
|
return $env:Path
|
||||||
else {
|
|
||||||
if (-not ($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
|
||||||
Write-Debug "Adding $gitRoot\cmd to the path"
|
|
||||||
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already
|
|
||||||
if ((Test-Path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
|
|
||||||
Write-Debug "Adding $gitRoot\mingw32\bin to the path"
|
|
||||||
$newPath = "$newPath;$gitRoot\mingw32\bin"
|
|
||||||
}
|
|
||||||
elseif ((Test-Path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
|
||||||
Write-Debug "Adding $gitRoot\mingw64\bin to the path"
|
|
||||||
$newPath = "$newPath;$gitRoot\mingw64\bin"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add "$gitRoot\usr\bin" to the path if exists and not done already
|
|
||||||
if ((Test-Path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
|
|
||||||
Write-Debug "Adding $gitRoot\usr\bin to the path"
|
|
||||||
$newPath = "$newPath;$gitRoot\usr\bin"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $newPath
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $env:path
|
$newPath = $env:Path
|
||||||
|
|
||||||
|
# Replace user Git path with vendored Git if user path exists
|
||||||
|
if ($GitPathUser) {
|
||||||
|
Write-Verbose "Cmder 'profile.ps1': Replacing older user Git path '$GitPathUser' with newer vendored Git path '$GitRoot' in the system path..."
|
||||||
|
$newPath = $newPath -ireplace [regex]::Escape($GitPathUser), $GitRoot
|
||||||
|
} else {
|
||||||
|
# Add Git cmd directory to the path
|
||||||
|
$gitCmd = Join-Path $GitRoot "cmd"
|
||||||
|
if (-not ($newPath -match [regex]::Escape($gitCmd))) {
|
||||||
|
Write-Debug "Adding $gitCmd to the path"
|
||||||
|
$newPath = "$gitCmd;$newPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add mingw[32|64]\bin directories to the path, if they exist and not already present
|
||||||
|
# Prefer mingw64 on 64-bit systems, mingw32 on 32-bit systems
|
||||||
|
$is64Bit = [Environment]::Is64BitOperatingSystem
|
||||||
|
$mingwDirs = if ($is64Bit) { @('mingw64', 'mingw32') } else { @('mingw32') }
|
||||||
|
|
||||||
|
foreach ($mingw in $mingwDirs) {
|
||||||
|
$mingwBin = Join-Path $GitRoot "$mingw\bin"
|
||||||
|
if ((Test-Path $mingwBin) -and -not ($newPath -match [regex]::Escape($mingwBin))) {
|
||||||
|
Write-Debug "Adding $mingwBin to the path"
|
||||||
|
$newPath = "$newPath;$mingwBin"
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add usr\bin directory to the path
|
||||||
|
$usrBin = Join-Path $GitRoot "usr\bin"
|
||||||
|
if ((Test-Path $usrBin) -and -not ($newPath -match [regex]::Escape($usrBin))) {
|
||||||
|
Write-Debug "Adding $usrBin to the path"
|
||||||
|
$newPath = "$newPath;$usrBin"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $newPath
|
||||||
}
|
}
|
||||||
|
|
||||||
function Import-Git() {
|
function Import-Git {
|
||||||
$GitModule = Get-Module -Name Posh-Git -ListAvailable
|
$gitModule = Get-Module -Name Posh-Git -ListAvailable
|
||||||
if ($GitModule | Select-Object version | Where-Object version -le ([version]"0.6.1.20160330")) {
|
|
||||||
Import-Module Posh-Git > $null
|
if (-not $gitModule) {
|
||||||
}
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "`r`n"
|
||||||
if ($GitModule | Select-Object version | Where-Object version -ge ([version]"1.0.0")) {
|
|
||||||
Import-Module Posh-Git > $null
|
|
||||||
$GitPromptSettings.AnsiConsole = $false
|
|
||||||
}
|
|
||||||
if (-not $GitModule) {
|
|
||||||
Write-Host -NoNewline "`r`n"
|
|
||||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder."
|
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder."
|
||||||
Write-Host -NoNewline "`r$([char]0x1B)[A"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "`r$([char]0x1B)[A"
|
||||||
return $false
|
return $false
|
||||||
}
|
}
|
||||||
# Make sure we only run once by always returning true
|
|
||||||
|
# Import posh-git module (works for all versions)
|
||||||
|
Import-Module Posh-Git -ErrorAction SilentlyContinue | Out-Null
|
||||||
|
|
||||||
|
# Apply version-specific settings for posh-git 1.0.0+
|
||||||
|
if (($gitModule.Version -ge [version]"1.0.0") -and (Get-Variable -Name GitPromptSettings -ErrorAction SilentlyContinue)) {
|
||||||
|
$GitPromptSettings.AnsiConsole = $false
|
||||||
|
}
|
||||||
|
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkGit($Path) {
|
function Show-GitStatus {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$Path
|
||||||
|
)
|
||||||
|
|
||||||
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (-not (Test-Path -Path (Join-Path $Path '.git'))) {
|
|
||||||
$SplitPath = Split-Path $path
|
$gitDir = Join-Path $Path '.git'
|
||||||
if ($SplitPath) { checkGit($SplitPath) }
|
if (-not (Test-Path $gitDir)) {
|
||||||
|
$parentPath = Split-Path $Path
|
||||||
|
if ($parentPath) {
|
||||||
|
Show-GitStatus -Path $parentPath
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (getGitStatusSetting -eq $true) {
|
|
||||||
|
if (Get-GitStatusSetting) {
|
||||||
if ($null -eq $env:gitLoaded) {
|
if ($null -eq $env:gitLoaded) {
|
||||||
$env:gitLoaded = Import-Git
|
$env:gitLoaded = Import-Git
|
||||||
}
|
}
|
||||||
if ($env:gitLoaded -eq $true) {
|
if ($env:gitLoaded -eq $true) {
|
||||||
Write-VcsStatus
|
Write-VcsStatus
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
$headFile = Join-Path $gitDir 'HEAD'
|
||||||
$headContent = Get-Content (Join-Path $Path '.git/HEAD')
|
if (Test-Path $headFile) {
|
||||||
if ($headContent -like "ref: refs/heads/*") {
|
$headContent = Get-Content $headFile -Raw
|
||||||
$branchName = $headContent.Substring(16)
|
if ($headContent -match 'ref: refs/heads/(.+)') {
|
||||||
|
$branchName = $Matches[1].Trim()
|
||||||
|
} else {
|
||||||
|
$shortHash = $headContent.Substring(0, [Math]::Min(7, $headContent.Length))
|
||||||
|
$branchName = "HEAD detached at $shortHash"
|
||||||
|
}
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
|
|
||||||
}
|
|
||||||
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getGitStatusSetting() {
|
function Get-GitStatusSetting {
|
||||||
$gitStatus = (git --no-pager config -l) | Out-String
|
$gitConfig = git --no-pager config -l 2>$null | Out-String
|
||||||
|
|
||||||
foreach ($line in $($gitStatus -split "`r`n")) {
|
# Check if git status display is disabled via config
|
||||||
if (($line -match 'cmder.status=false') -or ($line -match 'cmder.psstatus=false')) {
|
# Matches: cmder.status=false or cmder.psstatus=false (PowerShell-specific)
|
||||||
return $false
|
if ($gitConfig -match '(?m)^cmder\.(ps)?status=false$') {
|
||||||
}
|
return $false
|
||||||
}
|
}
|
||||||
|
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function yOrn( $question ) {
|
||||||
|
Do {
|
||||||
|
$Answer = Read-Host -Prompt "`n${question}? (y/n) "
|
||||||
|
}
|
||||||
|
Until ($Answer -eq 'y' -or $Answer -eq 'n' -or $Answer -eq 'yes' -or $Answer -eq 'no')
|
||||||
|
|
||||||
|
return $Answer
|
||||||
|
}
|
||||||
|
|
||||||
|
function templateExpand($template_filename, $outfile) {
|
||||||
|
$template = Get-Content "$template_filename" -Raw
|
||||||
|
|
||||||
|
$expanded = Invoke-Expression "@`"`r`n$template`r`n`"@"
|
||||||
|
|
||||||
|
$overwrite = 'y'
|
||||||
|
if ((test-path "$outfile")) {
|
||||||
|
$overwrite = yOrn "'$outfile' already exists do you want to overwrite it"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($overwrite -match 'y') {
|
||||||
|
$expanded | out-file -ErrorAction silentlycontinue -encoding ascii "$outfile"
|
||||||
|
} else {
|
||||||
|
write-host "Skipping Cmder '$shell' config generation at user request!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
51
vendor/start_git_bash.cmd
vendored
Normal file
51
vendor/start_git_bash.cmd
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
if not defined CMDER_ROOT (
|
||||||
|
if defined ConEmuDir (
|
||||||
|
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
||||||
|
set "CMDER_ROOT=%%~fi"
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
for /f "delims=" %%i in ("%~dp0\..") do (
|
||||||
|
set "CMDER_ROOT=%%~fi"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined ConEmuDir (
|
||||||
|
set "gitCommand=--command=%ConEmuBaseDirShort%\conemu-msys2-64.exe"
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||||
|
set "PATH=%CMDER_ROOT%\vendor\git-for-windows\usr\bin;%PATH%"
|
||||||
|
set "gitCmd=%CMDER_ROOT%\vendor\git-for-windows\git-cmd.exe"
|
||||||
|
set "bashCmd=%CMDER_ROOT%\vendor\git-for-windows\usr\bin\bash.exe"
|
||||||
|
) else if exist "%ProgramFiles%\git" (
|
||||||
|
set "PATH=%ProgramFiles%\git\usr\bin;%PATH%"
|
||||||
|
set "gitCmd=%ProgramFiles%\git\git-cmd.exe"
|
||||||
|
set "bashCmd=%ProgramFiles%\git\usr\bin\bash.exe"
|
||||||
|
if not exist "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" (
|
||||||
|
echo Run 'mklink "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||||
|
echo.
|
||||||
|
echo or
|
||||||
|
echo.
|
||||||
|
echo Run 'echo "" ^> "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||||
|
)
|
||||||
|
) else if exist "%ProgramFiles(x86)%\git" (
|
||||||
|
set "PATH=%ProgramFiles(x86)%\git\usr\bin;%PATH%"
|
||||||
|
set "gitCmd=%ProgramFiles(x86)%\git\git-cmd.exe"
|
||||||
|
set "bashCmd=%ProgramFiles(x86)%\git\usr\bin\bash.exe"
|
||||||
|
if not exist "%ProgramFiles(x86)%\git\etc\profile.d\cmder_exinit.sh" (
|
||||||
|
echo Run 'mklink "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||||
|
echo.
|
||||||
|
echo or
|
||||||
|
echo.
|
||||||
|
echo Run 'echo "" ^> "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined ConEmuDir (
|
||||||
|
"%gitCmd%" --no-cd %gitCommand% "%bashCmd%" --login -i
|
||||||
|
) else (
|
||||||
|
"%bashCmd%" --login -i
|
||||||
|
)
|
||||||
40
vendor/start_git_mintty.cmd
vendored
Normal file
40
vendor/start_git_mintty.cmd
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
if not defined CMDER_ROOT (
|
||||||
|
if defined ConEmuDir (
|
||||||
|
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
||||||
|
set "CMDER_ROOT=%%~fi"
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
for /f "delims=" %%i in ("%~dp0\..") do (
|
||||||
|
set "CMDER_ROOT=%%~fi"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||||
|
set "PATH=%CMDER_ROOT%\vendor\git-for-windows\usr\bin;%PATH%"
|
||||||
|
set "gitCmd=%CMDER_ROOT%\vendor\git-for-windows\usr\bin\mintty.exe"
|
||||||
|
) else if exist "%ProgramFiles%\git" (
|
||||||
|
set "PATH=%ProgramFiles%\git\usr\bin;%PATH%"
|
||||||
|
set "gitCmd=%ProgramFiles%\git\usr\bin\mintty.exe"
|
||||||
|
if not exist "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" (
|
||||||
|
echo Run 'mklink "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||||
|
echo.
|
||||||
|
echo or
|
||||||
|
echo.
|
||||||
|
echo Run 'echo "" ^> "%ProgramFiles%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||||
|
)
|
||||||
|
) else if exist "%ProgramFiles(x86)%\git" (
|
||||||
|
set "PATH=%ProgramFiles(x86)%\git\usr\bin;%PATH%"
|
||||||
|
set "gitCmd=%ProgramFiles(x86)%\git\usr\bin\mintty.exe"
|
||||||
|
if not exist "%ProgramFiles(x86)%\git\etc\profile.d\cmder_exinit.sh" (
|
||||||
|
echo Run 'mklink "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh" "%CMDER_ROOT%\vendor\cmder_exinit"' in 'cmd::Cmder as Admin' to use Cmder with external Git Bash
|
||||||
|
echo.
|
||||||
|
echo or
|
||||||
|
echo.
|
||||||
|
echo Run 'echo "" ^> "%ProgramFiles^(x86^)%\git\etc\profile.d\cmder_exinit.sh"' in 'cmd::Cmder as Admin' to disable this message.
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
"%gitCmd%" /bin/bash -l
|
||||||
174
vendor/user_init.cmd.template
vendored
Normal file
174
vendor/user_init.cmd.template
vendored
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
:: This file was autogenerated by Cmder init.bat
|
||||||
|
::
|
||||||
|
:: It is yours to edit and will not be touched again by Cmder.
|
||||||
|
::
|
||||||
|
:: If you wish to recreate this file simply rename it and Cmder will re-create it the next time it is run
|
||||||
|
:: or run the followin command from a Cmder shell:
|
||||||
|
::
|
||||||
|
:: powershell -f %cmder_root%\vendor\bin\create-cmdercfg.ps1 -shell cmd [-outfile "[filename]"]
|
||||||
|
::
|
||||||
|
|
||||||
|
if "%CMDER_CLINK%" == "1" (
|
||||||
|
goto :INJECT_CLINK
|
||||||
|
) else if "%CMDER_CLINK%" == "2" if defined WT_PROFILE_ID (
|
||||||
|
goto :INJECT_CLINK
|
||||||
|
) else if "%CMDER_CLINK%" == "2" (
|
||||||
|
goto :CLINK_FINISH
|
||||||
|
)
|
||||||
|
|
||||||
|
goto :SKIP_CLINK
|
||||||
|
|
||||||
|
:INJECT_CLINK
|
||||||
|
%print_verbose% "Injecting Clink!"
|
||||||
|
|
||||||
|
:: Check if Clink is not present
|
||||||
|
if not exist "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" (
|
||||||
|
goto :SKIP_CLINK
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Run Clink
|
||||||
|
if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||||
|
echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings"
|
||||||
|
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings"
|
||||||
|
echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup.
|
||||||
|
)
|
||||||
|
|
||||||
|
if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" (
|
||||||
|
echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||||
|
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||||
|
)
|
||||||
|
|
||||||
|
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
|
||||||
|
if errorlevel 1 (
|
||||||
|
%print_error% "Clink initialization has failed with error code: %errorlevel%"
|
||||||
|
goto :CLINK_FINISH
|
||||||
|
)
|
||||||
|
|
||||||
|
set CMDER_CLINK=2
|
||||||
|
goto :CLINK_FINISH
|
||||||
|
|
||||||
|
:SKIP_CLINK
|
||||||
|
%print_warning% "Skipping Clink Injection!"
|
||||||
|
|
||||||
|
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
|
||||||
|
chcp 65001>nul
|
||||||
|
|
||||||
|
:: Revert back to plain cmd.exe prompt without clink
|
||||||
|
prompt `$E[1;32;49m`$P`$S`$_`$E[1;30;49mλ`$S`$E[0m
|
||||||
|
|
||||||
|
chcp %cp%>nul
|
||||||
|
|
||||||
|
:CLINK_FINISH
|
||||||
|
if not defined GIT_INSTALL_ROOT set "GIT_INSTALL_ROOT=$env:GIT_INSTALL_ROOT"
|
||||||
|
if not defined SVN_SSH set "SVN_SSH=$env:SVN_SSH"
|
||||||
|
if not defined git_locale set git_locale=$env:git_locale
|
||||||
|
if not defined LANG set LANG=$env:lang
|
||||||
|
if not defined user_aliases set "user_aliases=$env:user_aliases"
|
||||||
|
if not defined aliases set "aliases=%user_aliases%"
|
||||||
|
if not defined HOME set "HOME=%USERPROFILE%"
|
||||||
|
|
||||||
|
set PLINK_PROTOCOL=$env:PLINK_PROTOCOL
|
||||||
|
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\cmd;%path%"
|
||||||
|
|
||||||
|
set path_position=append
|
||||||
|
if %nix_tools% equ 1 (
|
||||||
|
set "path_position=append"
|
||||||
|
) else (
|
||||||
|
set "path_position="
|
||||||
|
)
|
||||||
|
|
||||||
|
if %nix_tools% geq 1 (
|
||||||
|
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
||||||
|
if "%path_position%" == "append" (
|
||||||
|
set "path=%path%;%GIT_INSTALL_ROOT%\mingw32\bin"
|
||||||
|
) else (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\mingw32\bin;%path%"
|
||||||
|
)
|
||||||
|
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
||||||
|
if "%path_position%" == "append" (
|
||||||
|
set "path=%path%;%GIT_INSTALL_ROOT%\mingw64\bin"
|
||||||
|
) else (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\mingw64\bin;%path%"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if exist "%GIT_INSTALL_ROOT%\usr\bin" (
|
||||||
|
if "%path_position%" == "append" (
|
||||||
|
set "path=%path%;%GIT_INSTALL_ROOT%\usr\bin"
|
||||||
|
) else (
|
||||||
|
set "path=%GIT_INSTALL_ROOT%\usr\bin;%path%"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set "path=%CMDER_ROOT%\vendor\bin;%path%"
|
||||||
|
|
||||||
|
:USER_CONFIG_START
|
||||||
|
if %max_depth% gtr 1 (
|
||||||
|
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||||
|
) else (
|
||||||
|
set "path=%CMDER_ROOT%\bin;%path%"
|
||||||
|
)
|
||||||
|
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
if defined CMDER_USER_BIN (
|
||||||
|
if %max_depth% gtr 1 (
|
||||||
|
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||||
|
) else (
|
||||||
|
set "path=%CMDER_USER_ROOT%\bin;%path%"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
endlocal && set "path=%path%"
|
||||||
|
|
||||||
|
set "path=%path%;%CMDER_ROOT%"
|
||||||
|
|
||||||
|
call "%user_aliases%"
|
||||||
|
|
||||||
|
%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d"
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||||
|
)
|
||||||
|
|
||||||
|
call "%CMDER_ROOT%\config\user_profile.cmd"
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
||||||
|
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set "path=%path:;;=;%
|
||||||
|
|
||||||
|
:CMDER_CONFIGURED
|
||||||
|
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
||||||
|
|
||||||
|
set CMDER_INIT_END=%time%
|
||||||
|
|
||||||
|
if "%time_init%" == "1" if "%CMDER_INIT_END%" neq "" if "%CMDER_INIT_START%" neq "" (
|
||||||
|
call "%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||||
|
)
|
||||||
|
|
||||||
|
:CLEANUP
|
||||||
|
set architecture_bits=
|
||||||
|
set CMDER_ALIASES=
|
||||||
|
set CMDER_INIT_END=
|
||||||
|
set CMDER_INIT_START=
|
||||||
|
set CMDER_USER_FLAGS=
|
||||||
|
set debug_output=
|
||||||
|
set fast_init=
|
||||||
|
set max_depth=
|
||||||
|
set nix_tools=
|
||||||
|
set path_position=
|
||||||
|
set print_debug=
|
||||||
|
set print_error=
|
||||||
|
set print_verbose=
|
||||||
|
set print_warning=
|
||||||
|
set time_init=
|
||||||
|
set verbose_output=
|
||||||
|
set user_aliases=
|
||||||
|
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
|
||||||
390
vendor/windows_terminal_default_settings.json
vendored
Normal file
390
vendor/windows_terminal_default_settings.json
vendored
Normal file
@@ -0,0 +1,390 @@
|
|||||||
|
{
|
||||||
|
"$help": "https://aka.ms/terminal-documentation",
|
||||||
|
"$schema": "https://aka.ms/terminal-profiles-schema",
|
||||||
|
"actions": [
|
||||||
|
{
|
||||||
|
"command": {
|
||||||
|
"action": "copy",
|
||||||
|
"singleLine": false
|
||||||
|
},
|
||||||
|
"keys": "ctrl+shift+c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "unbound",
|
||||||
|
"keys": "ctrl+v"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "unbound",
|
||||||
|
"keys": "ctrl+c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "paste"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "find",
|
||||||
|
"keys": "ctrl+shift+f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": {
|
||||||
|
"action": "splitPane",
|
||||||
|
"split": "auto",
|
||||||
|
"splitMode": "duplicate"
|
||||||
|
},
|
||||||
|
"keys": "alt+shift+d"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"copyFormatting": "none",
|
||||||
|
"copyOnSelect": true,
|
||||||
|
"defaultProfile": "{48946353-ebe8-4571-a591-7d609f31327a}",
|
||||||
|
"newTabMenu": [
|
||||||
|
{
|
||||||
|
"type": "remainingProfiles"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"profiles": {
|
||||||
|
"defaults": {
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"font": {
|
||||||
|
"face": "Cascadia Code"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"commandline": "cmd /k \"%WT_SETTINGS_DIR%\\..\\..\\init.bat\"",
|
||||||
|
"guid": "{48946353-ebe8-4571-a591-7d609f31327a}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder.ico",
|
||||||
|
"name": "Cmder",
|
||||||
|
"startingDirectory": null,
|
||||||
|
"tabTitle": "Cmder",
|
||||||
|
"useAtlasEngine": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"commandline": "%SystemRoot%\\System32\\cmd.exe /k \"%WT_SETTINGS_DIR%\\..\\..\\init.bat\"",
|
||||||
|
"elevate": true,
|
||||||
|
"guid": "{bdd957d0-c15a-49e6-9816-14b02351a071}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_red.ico",
|
||||||
|
"name": "Cmder as Admin",
|
||||||
|
"startingDirectory": null,
|
||||||
|
"tabTitle": "Cmder as Admin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"commandline": "PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%WT_SETTINGS_DIR%\\..\\..\\profile.ps1'''\"",
|
||||||
|
"guid": "{eb1f6578-ce9d-47a9-a8c7-9b3fdd22302d}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_orange.ico",
|
||||||
|
"name": "Cmder - PowerShell",
|
||||||
|
"startingDirectory": null,
|
||||||
|
"tabTitle": "Cmder",
|
||||||
|
"useAtlasEngine": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"commandline": "PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command \"Invoke-Expression 'Import-Module ''%WT_SETTINGS_DIR%\\..\\..\\profile.ps1'''\"",
|
||||||
|
"elevate": true,
|
||||||
|
"guid": "{c5225c3e-8619-4145-8182-2800814eeb17}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_purple.ico",
|
||||||
|
"name": "Cmder - PowerShell as Admin",
|
||||||
|
"startingDirectory": null,
|
||||||
|
"tabTitle": "Cmder - PowerShell as Admin",
|
||||||
|
"useAtlasEngine": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"commandline": "%WT_SETTINGS_DIR%\\..\\..\\start_git_bash.cmd",
|
||||||
|
"guid": "{c5c298e9-010e-4b8c-bc55-e3df81846b4c}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_blue.ico",
|
||||||
|
"name": "Cmder - Bash",
|
||||||
|
"startingDirectory": null,
|
||||||
|
"tabTitle": "Cmder - Bash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"colorScheme": "One Half Dark",
|
||||||
|
"commandline": "%WT_SETTINGS_DIR%\\..\\..\\start_git_bash.cmd",
|
||||||
|
"elevate": true,
|
||||||
|
"guid": "{545eb9ed-4c1c-49b3-8cc6-7eb41bd280ff}",
|
||||||
|
"hidden": false,
|
||||||
|
"icon": "%WT_SETTINGS_DIR%\\..\\..\\..\\icons\\cmder_yellow.ico",
|
||||||
|
"name": "Cmder - Bash as Admin",
|
||||||
|
"startingDirectory": null,
|
||||||
|
"tabTitle": "Cmder - Bash as Admin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
|
||||||
|
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Windows PowerShell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandline": "%SystemRoot%\\System32\\cmd.exe",
|
||||||
|
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Command Prompt"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"schemes": [
|
||||||
|
{
|
||||||
|
"background": "#0C0C0C",
|
||||||
|
"black": "#0C0C0C",
|
||||||
|
"blue": "#0037DA",
|
||||||
|
"brightBlack": "#767676",
|
||||||
|
"brightBlue": "#3B78FF",
|
||||||
|
"brightCyan": "#61D6D6",
|
||||||
|
"brightGreen": "#16C60C",
|
||||||
|
"brightPurple": "#B4009E",
|
||||||
|
"brightRed": "#E74856",
|
||||||
|
"brightWhite": "#F2F2F2",
|
||||||
|
"brightYellow": "#F9F1A5",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#3A96DD",
|
||||||
|
"foreground": "#CCCCCC",
|
||||||
|
"green": "#13A10E",
|
||||||
|
"name": "Campbell",
|
||||||
|
"purple": "#881798",
|
||||||
|
"red": "#C50F1F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#CCCCCC",
|
||||||
|
"yellow": "#C19C00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#012456",
|
||||||
|
"black": "#0C0C0C",
|
||||||
|
"blue": "#0037DA",
|
||||||
|
"brightBlack": "#767676",
|
||||||
|
"brightBlue": "#3B78FF",
|
||||||
|
"brightCyan": "#61D6D6",
|
||||||
|
"brightGreen": "#16C60C",
|
||||||
|
"brightPurple": "#B4009E",
|
||||||
|
"brightRed": "#E74856",
|
||||||
|
"brightWhite": "#F2F2F2",
|
||||||
|
"brightYellow": "#F9F1A5",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#3A96DD",
|
||||||
|
"foreground": "#CCCCCC",
|
||||||
|
"green": "#13A10E",
|
||||||
|
"name": "Campbell Powershell",
|
||||||
|
"purple": "#881798",
|
||||||
|
"red": "#C50F1F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#CCCCCC",
|
||||||
|
"yellow": "#C19C00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282828",
|
||||||
|
"black": "#282828",
|
||||||
|
"blue": "#458588",
|
||||||
|
"brightBlack": "#928374",
|
||||||
|
"brightBlue": "#83A598",
|
||||||
|
"brightCyan": "#8EC07C",
|
||||||
|
"brightGreen": "#B8BB26",
|
||||||
|
"brightPurple": "#D3869B",
|
||||||
|
"brightRed": "#FB4934",
|
||||||
|
"brightWhite": "#EBDBB2",
|
||||||
|
"brightYellow": "#FABD2F",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#689D6A",
|
||||||
|
"foreground": "#EBDBB2",
|
||||||
|
"green": "#98971A",
|
||||||
|
"name": "Gruvbox Dark",
|
||||||
|
"purple": "#B16286",
|
||||||
|
"red": "#CC241D",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#A89984",
|
||||||
|
"yellow": "#D79921"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#272822",
|
||||||
|
"black": "#3E3D32",
|
||||||
|
"blue": "#03395C",
|
||||||
|
"brightBlack": "#272822",
|
||||||
|
"brightBlue": "#66D9EF",
|
||||||
|
"brightCyan": "#66D9EF",
|
||||||
|
"brightGreen": "#A6E22E",
|
||||||
|
"brightPurple": "#AE81FF",
|
||||||
|
"brightRed": "#F92672",
|
||||||
|
"brightWhite": "#F8F8F2",
|
||||||
|
"brightYellow": "#FD971F",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#66D9EF",
|
||||||
|
"foreground": "#F8F8F2",
|
||||||
|
"green": "#A6E22E",
|
||||||
|
"name": "Monokai",
|
||||||
|
"purple": "#AE81FF",
|
||||||
|
"red": "#F92672",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#F8F8F2",
|
||||||
|
"yellow": "#FFE792"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282C34",
|
||||||
|
"black": "#282C34",
|
||||||
|
"blue": "#61AFEF",
|
||||||
|
"brightBlack": "#5A6374",
|
||||||
|
"brightBlue": "#61AFEF",
|
||||||
|
"brightCyan": "#56B6C2",
|
||||||
|
"brightGreen": "#98C379",
|
||||||
|
"brightPurple": "#C678DD",
|
||||||
|
"brightRed": "#E06C75",
|
||||||
|
"brightWhite": "#DCDFE4",
|
||||||
|
"brightYellow": "#E5C07B",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#56B6C2",
|
||||||
|
"foreground": "#DCDFE4",
|
||||||
|
"green": "#98C379",
|
||||||
|
"name": "One Half Dark",
|
||||||
|
"purple": "#C678DD",
|
||||||
|
"red": "#E06C75",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#DCDFE4",
|
||||||
|
"yellow": "#E5C07B"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FAFAFA",
|
||||||
|
"black": "#383A42",
|
||||||
|
"blue": "#0184BC",
|
||||||
|
"brightBlack": "#4F525D",
|
||||||
|
"brightBlue": "#61AFEF",
|
||||||
|
"brightCyan": "#56B5C1",
|
||||||
|
"brightGreen": "#98C379",
|
||||||
|
"brightPurple": "#C577DD",
|
||||||
|
"brightRed": "#DF6C75",
|
||||||
|
"brightWhite": "#FFFFFF",
|
||||||
|
"brightYellow": "#E4C07A",
|
||||||
|
"cursorColor": "#4F525D",
|
||||||
|
"cyan": "#0997B3",
|
||||||
|
"foreground": "#383A42",
|
||||||
|
"green": "#50A14F",
|
||||||
|
"name": "One Half Light",
|
||||||
|
"purple": "#A626A4",
|
||||||
|
"red": "#E45649",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#FAFAFA",
|
||||||
|
"yellow": "#C18301"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#002B36",
|
||||||
|
"black": "#002B36",
|
||||||
|
"blue": "#268BD2",
|
||||||
|
"brightBlack": "#073642",
|
||||||
|
"brightBlue": "#839496",
|
||||||
|
"brightCyan": "#93A1A1",
|
||||||
|
"brightGreen": "#586E75",
|
||||||
|
"brightPurple": "#6C71C4",
|
||||||
|
"brightRed": "#CB4B16",
|
||||||
|
"brightWhite": "#FDF6E3",
|
||||||
|
"brightYellow": "#657B83",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#2AA198",
|
||||||
|
"foreground": "#839496",
|
||||||
|
"green": "#859900",
|
||||||
|
"name": "Solarized Dark",
|
||||||
|
"purple": "#D33682",
|
||||||
|
"red": "#DC322F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#EEE8D5",
|
||||||
|
"yellow": "#B58900"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FDF6E3",
|
||||||
|
"black": "#002B36",
|
||||||
|
"blue": "#268BD2",
|
||||||
|
"brightBlack": "#073642",
|
||||||
|
"brightBlue": "#839496",
|
||||||
|
"brightCyan": "#93A1A1",
|
||||||
|
"brightGreen": "#586E75",
|
||||||
|
"brightPurple": "#6C71C4",
|
||||||
|
"brightRed": "#CB4B16",
|
||||||
|
"brightWhite": "#FDF6E3",
|
||||||
|
"brightYellow": "#657B83",
|
||||||
|
"cursorColor": "#002B36",
|
||||||
|
"cyan": "#2AA198",
|
||||||
|
"foreground": "#657B83",
|
||||||
|
"green": "#859900",
|
||||||
|
"name": "Solarized Light",
|
||||||
|
"purple": "#D33682",
|
||||||
|
"red": "#DC322F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#EEE8D5",
|
||||||
|
"yellow": "#B58900"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#000000",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#3465A4",
|
||||||
|
"brightBlack": "#555753",
|
||||||
|
"brightBlue": "#729FCF",
|
||||||
|
"brightCyan": "#34E2E2",
|
||||||
|
"brightGreen": "#8AE234",
|
||||||
|
"brightPurple": "#AD7FA8",
|
||||||
|
"brightRed": "#EF2929",
|
||||||
|
"brightWhite": "#EEEEEC",
|
||||||
|
"brightYellow": "#FCE94F",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#06989A",
|
||||||
|
"foreground": "#D3D7CF",
|
||||||
|
"green": "#4E9A06",
|
||||||
|
"name": "Tango Dark",
|
||||||
|
"purple": "#75507B",
|
||||||
|
"red": "#CC0000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#D3D7CF",
|
||||||
|
"yellow": "#C4A000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FFFFFF",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#3465A4",
|
||||||
|
"brightBlack": "#555753",
|
||||||
|
"brightBlue": "#729FCF",
|
||||||
|
"brightCyan": "#34E2E2",
|
||||||
|
"brightGreen": "#8AE234",
|
||||||
|
"brightPurple": "#AD7FA8",
|
||||||
|
"brightRed": "#EF2929",
|
||||||
|
"brightWhite": "#EEEEEC",
|
||||||
|
"brightYellow": "#FCE94F",
|
||||||
|
"cursorColor": "#000000",
|
||||||
|
"cyan": "#06989A",
|
||||||
|
"foreground": "#555753",
|
||||||
|
"green": "#4E9A06",
|
||||||
|
"name": "Tango Light",
|
||||||
|
"purple": "#75507B",
|
||||||
|
"red": "#CC0000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#D3D7CF",
|
||||||
|
"yellow": "#C4A000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#000000",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#000080",
|
||||||
|
"brightBlack": "#808080",
|
||||||
|
"brightBlue": "#0000FF",
|
||||||
|
"brightCyan": "#00FFFF",
|
||||||
|
"brightGreen": "#00FF00",
|
||||||
|
"brightPurple": "#FF00FF",
|
||||||
|
"brightRed": "#FF0000",
|
||||||
|
"brightWhite": "#FFFFFF",
|
||||||
|
"brightYellow": "#FFFF00",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#008080",
|
||||||
|
"foreground": "#C0C0C0",
|
||||||
|
"green": "#008000",
|
||||||
|
"name": "Vintage",
|
||||||
|
"purple": "#800080",
|
||||||
|
"red": "#800000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#C0C0C0",
|
||||||
|
"yellow": "#808000"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"themes": [],
|
||||||
|
"useAcrylicInTabRow": true,
|
||||||
|
"wordDelimiters": " ()\"',;<>!@#$%^&*|+=[]{}~?\u2502"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user