mirror of
https://github.com/cmderdev/cmder.git
synced 2025-01-10 16:29:08 +08:00
New cmder.exe args and shared install capability (#1696)
@MartiUK: Squashing to avoid adding multiple "fixed" commits * add args to init.bat * adding args to cmder launcher * reworked command line parsing and added a /C [path] arg for individual user config location * removed unnecessary includes * make shell init scripts work with CMDER_USER_CONFIG * update tasks and readme.md * fix git version check * readme updates * add register/unregister back in * fixed git version again * removed error if user defines user-aliases store file was not present an init.bat launch * added enhance_path method to only update path if required * added enhance_path method to only update path if required * fixed a path prepend issue in enhance path * init.bat with args is executed outside cmder/conemu sets cmder_root properly. Thanks @DRSDavidSoft * fixed enhance path append issue * implements recursive `/bin` path enhancing. https://github.com/cmderdev/cmder/issues/1624 * added max depth * changes command line arg to max_depth * set max_depth default * readme.md updates * add back cmder /c [path] arg so it can be used with admin sessions since the env is not shared. * readme.md updates * fix /c setting of cmder_user_config * changelog and readme * remove bad arg * fixed command line parsing and updated command line help on error * Fixed ConEmu.xml file handling so it works again * Added default user config root location if '/c' is specified and next arg is not another arg
This commit is contained in:
parent
ff2e09849e
commit
997e799138
5
.gitattributes
vendored
5
.gitattributes
vendored
@ -1,2 +1,7 @@
|
|||||||
# Auto detect text files and perform LF normalization
|
# Auto detect text files and perform LF normalization
|
||||||
* text=auto
|
* text=auto
|
||||||
|
*.cmd text eol=crlf
|
||||||
|
*.bat text eol=crlf
|
||||||
|
*.ps1 text eol=crlf
|
||||||
|
*.md text eol=lf
|
||||||
|
*.sh text eol=lf
|
||||||
|
55
CHANGELOG.md
55
CHANGELOG.md
@ -1,5 +1,60 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## [1.3.6-pre1](https://github.com/cmderdev/cmder) (2018-03-01)
|
||||||
|
|
||||||
|
**Fixed bugs:**
|
||||||
|
|
||||||
|
* Fixed Git version check recently added to master.
|
||||||
|
|
||||||
|
**Updates:**
|
||||||
|
|
||||||
|
* Modified Cmder tasks in default Conemu.xml to allow easily adding command line args for init.bat by adding some quotes. This resulted in a ton of misc changes to this file. See Adds below.
|
||||||
|
* Reworked `cmder.exe` command line argument handling to make it more flexible and easily added to.
|
||||||
|
* Reworked README.md tables to make them more readable in editors
|
||||||
|
|
||||||
|
**Implemented enhancements:**
|
||||||
|
|
||||||
|
* Added `cmder.exe` command line args documenttion to `README.md`
|
||||||
|
* Added `:enhance_path` method to vendor\init.bat that modifies the path only if required.
|
||||||
|
* To prepend: `call :enhance_path "%cmder_root%"`
|
||||||
|
* to append: `call :enhance_path "%cmder_root%" append`
|
||||||
|
* Added `:enhance_path_recursive` method to vendor\init.bat that adds a path and all its sub directories to the path if required.
|
||||||
|
* Max recurse depth default is '1' configurable using `init.bat /max_depth [1-5]`. 6+ results in error.
|
||||||
|
* To prepend and go 3 levels deep: `call :enhance_path "%cmder_root%" 3`
|
||||||
|
* To append and go 2 levels deep: `call :enhance_path "%cmder_root%" 2 append`
|
||||||
|
* Added ability to init.bat to accept command line args and documented them in README.md. Allows users to change the behaviour of init.bat without editing the file.
|
||||||
|
|
||||||
|
| Argument | Description | Default |
|
||||||
|
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
|
||||||
|
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||||
|
| /d | Enables debug output. | not set |
|
||||||
|
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
||||||
|
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
||||||
|
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||||
|
| /svn_ssh [path to ssh.exe] | Define %SVN_SSH% so we can use git svn with ssh svn repositories. | '%GIT_INSTALL_ROOT%\bin\ssh.exe' |
|
||||||
|
| /user_aliases [file path] | File path pointing to user aliases. | '%CMDER_ROOT%\config\user-liases.cmd' |
|
||||||
|
| /v | Enables verbose output. | not set |
|
||||||
|
|
||||||
|
* Added new `cmder.exe /C \<path\>` argument
|
||||||
|
* To use run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
||||||
|
* To use run with `Cmder as Admin` sessions you must specify "/c" command line argument to `init.bat` in tasks. See [README.md](./Readme.md) for details.
|
||||||
|
* Enables shared Cmder install with Non-Portable Individual User Config
|
||||||
|
* Supported by all supported shells (cmder, powershell, git bash, and external bash)
|
||||||
|
* This will create the following directory structure if it is missing.
|
||||||
|
|
||||||
|
```
|
||||||
|
c:\users\[username]\cmder_config
|
||||||
|
├───bin
|
||||||
|
└───config
|
||||||
|
└───profile.d
|
||||||
|
```
|
||||||
|
|
||||||
|
* Shell init scripts run in the following order
|
||||||
|
1. %cmder_root%\config\profile.d\*.[cmd|ps1|sh]
|
||||||
|
1. %cmder_root%\config\user-profile.[cmd|ps1|sh]
|
||||||
|
1. %userprofile%\cmder_config\config\profile.d\*.[cmd|ps1|sh]
|
||||||
|
1. %userprofile%\cmder_config\config\user-profile.[cmd|ps1|sh]
|
||||||
|
|
||||||
## [1.3.5](https://github.com/cmderdev/cmder/releases/tag/v1.3.5) (2018-02-11)
|
## [1.3.5](https://github.com/cmderdev/cmder/releases/tag/v1.3.5) (2018-02-11)
|
||||||
|
|
||||||
This is the first Cmder release that comes with Git for Windows in the 64bit version. If you are still using a 32bit version, you have to fix this yourself.
|
This is the first Cmder release that comes with Git for Windows in the 64bit version. If you are still using a 32bit version, you have to fix this yourself.
|
||||||
|
79
README.md
79
README.md
@ -11,13 +11,42 @@ Cmder is a **software package** created out of pure frustration over absence of
|
|||||||
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere.
|
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
### Single User Portable Config
|
||||||
|
|
||||||
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||||
2. Extract the archive
|
2. Extract the archive. *Note: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files*
|
||||||
3. (optional) Place your own executable files into the `bin` folder to be injected into your PATH. (nb: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files)
|
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
||||||
4. Run Cmder.exe
|
4. Run Cmder.exe
|
||||||
|
|
||||||
## Integration
|
### Shared Cmder install with Non-Portable Individual User Config
|
||||||
|
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||||
|
2. Extract the archive to a shared location.
|
||||||
|
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
||||||
|
4. (optional) Create `%userprofile%\cmder_config\bin` folder to be injected into individual users PATH. Default is to auto create this on first run.
|
||||||
|
5. (optional) Place your own executable files into the `%userprofile%\cmder_config\bin` folder to be injected into your PATH.
|
||||||
|
6. Run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
||||||
|
* This will create the following directory structure if it is missing.
|
||||||
|
|
||||||
|
```
|
||||||
|
c:\users\[username]\cmder_config
|
||||||
|
├───bin
|
||||||
|
└───config
|
||||||
|
└───profile.d
|
||||||
|
```
|
||||||
|
|
||||||
|
* Both the shared install and the individual user config locations can contain a full set of init and profile.d scripts enabling shared config with user overrides. See below.
|
||||||
|
|
||||||
|
## Cmder.exe Command Line Arguments
|
||||||
|
|
||||||
|
|
||||||
|
| Argument | Description |
|
||||||
|
| ------------------- | ----------------------------------------------------------------------- |
|
||||||
|
| /C [user_root_path] | Individual user Cmder root folder. Example: %userprofile%\cmder_config |
|
||||||
|
| /SINGLE | Start Cmder is single mode. |
|
||||||
|
| /START [start_path] | Folder path to start in. |
|
||||||
|
| /TASK [task_name] | Task to start after launch. |
|
||||||
|
|
||||||
|
## Context Menu Integration
|
||||||
|
|
||||||
So you've experimented with Cmder a little and want to give it a shot in a more permanent home;
|
So you've experimented with Cmder a little and want to give it a shot in a more permanent home;
|
||||||
|
|
||||||
@ -85,24 +114,50 @@ cd mintty-colors-solarized/
|
|||||||
echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user-profile.sh
|
echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user-profile.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### Cmder Portable Shell User Config
|
### Changing Cmder Default 'cmd.exe' Shell Startup Behaviour Using Task Arguments
|
||||||
User specific configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
|
||||||
|
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
||||||
|
1. Click either:
|
||||||
|
* `1. {cmd::Cmder as Admin}`
|
||||||
|
* `2. {cmd::Cmder}`
|
||||||
|
1. Add command line argumentswhere specified below:
|
||||||
|
|
||||||
|
*Note: Pay attention to the quotes!*
|
||||||
|
|
||||||
|
```
|
||||||
|
cmd /s /k ""%ConEmuDir%\..\init.bat" [ADD ARGS HERE]"
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Command Line Arguments for `init.bat`
|
||||||
|
|
||||||
|
| Argument | Description | Default |
|
||||||
|
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
|
||||||
|
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||||
|
| /d | Enables debug output. | not set |
|
||||||
|
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
||||||
|
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
||||||
|
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||||
|
| /svn_ssh [path to ssh.exe] | Define %SVN_SSH% so we can use git svn with ssh svn repositories. | '%GIT_INSTALL_ROOT%\bin\ssh.exe' |
|
||||||
|
| /user_aliases [file path] | File path pointing to user aliases. | '%CMDER_ROOT%\config\user-liases.cmd' |
|
||||||
|
| /v | Enables verbose output. | not set |
|
||||||
|
|
||||||
|
### Cmder Shell User Config
|
||||||
|
Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
||||||
|
|
||||||
| Shell | Cmder Portable User Config |
|
| Shell | Cmder Portable User Config |
|
||||||
| ------------- |:-------------:|
|
| ------------- | ----------------------------------------- |
|
||||||
|Cmder|%CMDER_ROOT%\config\user-profile.cmd|
|
| Cmder | %CMDER_ROOT%\\config\\user-profile.cmd |
|
||||||
|PowerShell|$ENV:CMDER_ROOT\config\user-profile.ps1|
|
| PowerShell | $ENV:CMDER_ROOT\\config\\user-profile.ps1 |
|
||||||
| Bash/Mintty | $CMDER_ROOT/config/user-profile.sh |
|
| Bash/Mintty | $CMDER_ROOT/config/user-profile.sh |
|
||||||
|
|
||||||
Note: Bash and Mintty sessions will also source the '$HOME/.bashrc' file if it exists after it sources '$CMDER_ROOT/config/user-profile.sh'.
|
Note: Bash and Mintty sessions will also source the '$HOME/.bashrc' file if it exists after it sources '$CMDER_ROOT/config/user-profile.sh'.
|
||||||
|
|
||||||
### Linux like 'profile.d' support for all supported shell types.
|
|
||||||
You can write *.cmd|*.bat, *.ps1, and *.sh scripts and just drop them in the %CMDER_ROOT%\config\profile.d folder to add startup config to Cmder.
|
You can write *.cmd|*.bat, *.ps1, and *.sh scripts and just drop them in the %CMDER_ROOT%\config\profile.d folder to add startup config to Cmder.
|
||||||
|
|
||||||
| Shell | Cmder 'Profile.d' Scripts |
|
| Shell | Cmder 'Profile.d' Scripts |
|
||||||
| ------------- |:-------------:|
|
| ------------- | --------------------------------------------------|
|
||||||
|Cmder|%CMDER_ROOT%\config\profile.d\\*.bat and *.cmd|
|
| Cmder | %CMDER_ROOT%\\config\\profile.d\\\*.bat and *.cmd |
|
||||||
|PowerShell|$ENV:CMDER_ROOT\config\profile.d\\*.ps1|
|
| PowerShell | $ENV:CMDER_ROOT\\config\\profile.d\\\*.ps1 |
|
||||||
| Bash/Mintty | $CMDER_ROOT/config/profile.d/*.sh |
|
| Bash/Mintty | $CMDER_ROOT/config/profile.d/*.sh |
|
||||||
|
|
||||||
|
|
||||||
|
@ -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="2015-11-24 14:43:35" build="151119">
|
<key name=".Vanilla" modified="2018-02-22 06:02:11" build="171109">
|
||||||
<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"/>
|
||||||
@ -101,12 +101,12 @@
|
|||||||
<value name="FontName" type="string" data="Consolas"/>
|
<value name="FontName" type="string" data="Consolas"/>
|
||||||
<value name="FontName2" type="string" data="Lucida Console"/>
|
<value name="FontName2" type="string" data="Lucida Console"/>
|
||||||
<value name="FontAutoSize" type="hex" data="00"/>
|
<value name="FontAutoSize" type="hex" data="00"/>
|
||||||
<value name="FontSize" type="dword" data="00000010"/>
|
<value name="FontSize" type="ulong" data="16"/>
|
||||||
<value name="FontSizeX" type="dword" data="00000000"/>
|
<value name="FontSizeX" type="ulong" data="0"/>
|
||||||
<value name="FontSizeX2" type="dword" data="00000000"/>
|
<value name="FontSizeX2" type="ulong" data="0"/>
|
||||||
<value name="FontSizeX3" type="dword" data="00000000"/>
|
<value name="FontSizeX3" type="ulong" data="0"/>
|
||||||
<value name="FontCharSet" type="hex" data="00"/>
|
<value name="FontCharSet" type="hex" data="00"/>
|
||||||
<value name="Anti-aliasing" type="dword" data="00000006"/>
|
<value name="Anti-aliasing" type="ulong" data="6"/>
|
||||||
<value name="FontBold" type="hex" data="00"/>
|
<value name="FontBold" type="hex" data="00"/>
|
||||||
<value name="FontItalic" type="hex" data="00"/>
|
<value name="FontItalic" type="hex" data="00"/>
|
||||||
<value name="Monospace" type="hex" data="01"/>
|
<value name="Monospace" type="hex" data="01"/>
|
||||||
@ -123,29 +123,29 @@
|
|||||||
<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"/>
|
||||||
<value name="UseCurrentSizePos" type="hex" data="01"/>
|
<value name="UseCurrentSizePos" type="hex" data="01"/>
|
||||||
<value name="WindowMode" type="dword" data="0000051f"/>
|
<value name="WindowMode" type="dword" data="00000520"/>
|
||||||
<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="dword" data="000001f4"/>
|
<value name="ConWnd X" type="long" data="500"/>
|
||||||
<value name="ConWnd Y" type="dword" data="000001f4"/>
|
<value name="ConWnd Y" type="long" data="500"/>
|
||||||
<value name="16bit Height" type="dword" data="00000000"/>
|
<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"/>
|
||||||
<value name="QuakeStyle" type="hex" data="00"/>
|
<value name="QuakeStyle" type="hex" data="00"/>
|
||||||
<value name="QuakeAnimation" type="dword" data="0000012c"/>
|
<value name="QuakeAnimation" type="ulong" data="300"/>
|
||||||
<value name="HideCaption" type="hex" data="00"/>
|
<value name="HideCaption" type="hex" data="00"/>
|
||||||
<value name="HideChildCaption" type="hex" data="01"/>
|
<value name="HideChildCaption" type="hex" data="01"/>
|
||||||
<value name="FocusInChildWindows" type="hex" data="01"/>
|
<value name="FocusInChildWindows" type="hex" data="01"/>
|
||||||
<value name="HideCaptionAlways" type="hex" data="00"/>
|
<value name="HideCaptionAlways" type="hex" data="00"/>
|
||||||
<value name="HideCaptionAlwaysFrame" type="hex" data="00"/>
|
<value name="HideCaptionAlwaysFrame" type="hex" data="00"/>
|
||||||
<value name="HideCaptionAlwaysDelay" type="dword" data="000007d0"/>
|
<value name="HideCaptionAlwaysDelay" type="ulong" data="2000"/>
|
||||||
<value name="HideCaptionAlwaysDisappear" type="dword" data="000007d0"/>
|
<value name="HideCaptionAlwaysDisappear" type="ulong" data="2000"/>
|
||||||
<value name="DownShowHiddenMessage" type="hex" data="00"/>
|
<value name="DownShowHiddenMessage" type="hex" data="00"/>
|
||||||
<value name="ConsoleFontName" type="string" data="Lucida Console"/>
|
<value name="ConsoleFontName" type="string" data="Lucida Console"/>
|
||||||
<value name="ConsoleFontWidth" type="dword" data="00000003"/>
|
<value name="ConsoleFontWidth" type="long" data="3"/>
|
||||||
<value name="ConsoleFontHeight" type="dword" data="00000005"/>
|
<value name="ConsoleFontHeight" type="long" data="5"/>
|
||||||
<value name="DefaultBufferHeight" type="dword" data="000003e8"/>
|
<value name="DefaultBufferHeight" type="long" data="1000"/>
|
||||||
<value name="AutoBufferHeight" type="hex" data="01"/>
|
<value name="AutoBufferHeight" type="hex" data="01"/>
|
||||||
<value name="CmdOutputCP" type="dword" data="00000000"/>
|
<value name="CmdOutputCP" type="dword" data="00000000"/>
|
||||||
<value name="ComSpec.Type" type="hex" data="00"/>
|
<value name="ComSpec.Type" type="hex" data="00"/>
|
||||||
@ -167,7 +167,7 @@
|
|||||||
<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="dword" data="000000c8"/>
|
<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"/>
|
||||||
@ -198,7 +198,7 @@
|
|||||||
<value name="MouseSkipActivation" type="hex" data="01"/>
|
<value name="MouseSkipActivation" type="hex" data="01"/>
|
||||||
<value name="MouseSkipMoving" type="hex" data="01"/>
|
<value name="MouseSkipMoving" type="hex" data="01"/>
|
||||||
<value name="FarHourglass" type="hex" data="01"/>
|
<value name="FarHourglass" type="hex" data="01"/>
|
||||||
<value name="FarHourglassDelay" type="dword" data="000001f4"/>
|
<value name="FarHourglassDelay" type="ulong" data="500"/>
|
||||||
<value name="Dnd" type="hex" data="01"/>
|
<value name="Dnd" type="hex" data="01"/>
|
||||||
<value name="DndDrop" type="hex" data="01"/>
|
<value name="DndDrop" type="hex" data="01"/>
|
||||||
<value name="DefCopy" type="hex" data="01"/>
|
<value name="DefCopy" type="hex" data="01"/>
|
||||||
@ -212,8 +212,8 @@
|
|||||||
<value name="StatusBar.Show" type="hex" data="00"/>
|
<value name="StatusBar.Show" type="hex" data="00"/>
|
||||||
<value name="StatusBar.Flags" type="dword" data="00000002"/>
|
<value name="StatusBar.Flags" type="dword" data="00000002"/>
|
||||||
<value name="StatusFontFace" type="string" data="Tahoma"/>
|
<value name="StatusFontFace" type="string" data="Tahoma"/>
|
||||||
<value name="StatusFontCharSet" type="dword" data="00000000"/>
|
<value name="StatusFontCharSet" type="ulong" data="0"/>
|
||||||
<value name="StatusFontHeight" type="dword" data="0000000e"/>
|
<value name="StatusFontHeight" type="long" data="14"/>
|
||||||
<value name="StatusBar.Color.Back" type="dword" data="00404040"/>
|
<value name="StatusBar.Color.Back" type="dword" data="00404040"/>
|
||||||
<value name="StatusBar.Color.Light" type="dword" data="00ffffff"/>
|
<value name="StatusBar.Color.Light" type="dword" data="00ffffff"/>
|
||||||
<value name="StatusBar.Color.Dark" type="dword" data="00a0a0a0"/>
|
<value name="StatusBar.Color.Dark" type="dword" data="00a0a0a0"/>
|
||||||
@ -254,34 +254,34 @@
|
|||||||
<value name="TabSelf" type="hex" data="01"/>
|
<value name="TabSelf" type="hex" data="01"/>
|
||||||
<value name="TabLazy" type="hex" data="01"/>
|
<value name="TabLazy" type="hex" data="01"/>
|
||||||
<value name="TabRecent" type="hex" data="00"/>
|
<value name="TabRecent" type="hex" data="00"/>
|
||||||
<value name="TabDblClick" type="dword" data="00000001"/>
|
<value name="TabDblClick" type="ulong" data="1"/>
|
||||||
<value name="TabsOnTaskBar" type="hex" data="02"/>
|
<value name="TabsOnTaskBar" type="hex" data="02"/>
|
||||||
<value name="TaskBarOverlay" type="hex" data="01"/>
|
<value name="TaskBarOverlay" type="hex" data="01"/>
|
||||||
<value name="TabCloseMacro" type="string" data=""/>
|
<value name="TabCloseMacro" type="string" data=""/>
|
||||||
<value name="TabFontFace" type="string" data="Segoe UI"/>
|
<value name="TabFontFace" type="string" data="Segoe UI"/>
|
||||||
<value name="TabFontCharSet" type="dword" data="00000000"/>
|
<value name="TabFontCharSet" type="ulong" data="0"/>
|
||||||
<value name="TabFontHeight" type="dword" data="00000010"/>
|
<value name="TabFontHeight" type="long" data="16"/>
|
||||||
<value name="SaveAllEditors" type="string" data=""/>
|
<value name="SaveAllEditors" type="string" data=""/>
|
||||||
<value name="ToolbarAddSpace" type="dword" data="00000000"/>
|
<value name="ToolbarAddSpace" type="long" data="0"/>
|
||||||
<value name="TabConsole" type="string" data=" %n "/>
|
<value name="TabConsole" type="string" data=" %n "/>
|
||||||
<value name="TabSkipWords" type="string" data="Administrator:|Администратор:"/>
|
<value name="TabSkipWords" type="string" data="Administrator:|Администратор:"/>
|
||||||
<value name="TabPanels" type="string" data="<%c> %s"/>
|
<value name="TabPanels" type="string" data="<%c> %s"/>
|
||||||
<value name="TabEditor" type="string" data="<%c.%i>{%s}"/>
|
<value name="TabEditor" type="string" data="<%c.%i>{%s}"/>
|
||||||
<value name="TabEditorModified" type="string" data="<%c.%i>[%s] *"/>
|
<value name="TabEditorModified" type="string" data="<%c.%i>[%s] *"/>
|
||||||
<value name="TabViewer" type="string" data="<%c.%i>[%s]"/>
|
<value name="TabViewer" type="string" data="<%c.%i>[%s]"/>
|
||||||
<value name="TabLenMax" type="dword" data="00000014"/>
|
<value name="TabLenMax" type="ulong" data="20"/>
|
||||||
<value name="AdminTitleSuffix" type="string" data=" (Admin)"/>
|
<value name="AdminTitleSuffix" type="string" data=" (Admin)"/>
|
||||||
<value name="AdminShowShield" type="hex" data="01"/>
|
<value name="AdminShowShield" type="hex" data="01"/>
|
||||||
<value name="HideInactiveConsoleTabs" type="hex" data="00"/>
|
<value name="HideInactiveConsoleTabs" type="hex" data="00"/>
|
||||||
<value name="ShowFarWindows" type="hex" data="01"/>
|
<value name="ShowFarWindows" type="hex" data="01"/>
|
||||||
<value name="TryToCenter" type="hex" data="01"/>
|
<value name="TryToCenter" type="hex" data="01"/>
|
||||||
<value name="CenterConsolePad" type="dword" data="00000008"/>
|
<value name="CenterConsolePad" type="ulong" data="8"/>
|
||||||
<value name="ShowScrollbar" type="hex" data="02"/>
|
<value name="ShowScrollbar" type="hex" data="02"/>
|
||||||
<value name="ScrollBarAppearDelay" type="dword" data="00000064"/>
|
<value name="ScrollBarAppearDelay" type="ulong" data="100"/>
|
||||||
<value name="ScrollBarDisappearDelay" type="dword" data="000003e8"/>
|
<value name="ScrollBarDisappearDelay" type="ulong" data="1000"/>
|
||||||
<value name="IconID" type="dword" data="00000001"/>
|
<value name="IconID" type="ulong" data="1"/>
|
||||||
<value name="MainTimerElapse" type="dword" data="0000000a"/>
|
<value name="MainTimerElapse" type="ulong" data="10"/>
|
||||||
<value name="MainTimerInactiveElapse" type="dword" data="000003e8"/>
|
<value name="MainTimerInactiveElapse" type="ulong" data="1000"/>
|
||||||
<value name="AffinityMask" type="dword" data="00000000"/>
|
<value name="AffinityMask" type="dword" data="00000000"/>
|
||||||
<value name="SkipFocusEvents" type="hex" data="00"/>
|
<value name="SkipFocusEvents" type="hex" data="00"/>
|
||||||
<value name="MonitorConsoleLang" type="hex" data="03"/>
|
<value name="MonitorConsoleLang" type="hex" data="03"/>
|
||||||
@ -297,32 +297,32 @@
|
|||||||
<value name="FindMatchWholeWords" type="hex" data="00"/>
|
<value name="FindMatchWholeWords" type="hex" data="00"/>
|
||||||
<value name="FindTransparent" type="hex" data="01"/>
|
<value name="FindTransparent" type="hex" data="01"/>
|
||||||
<value name="PanView.BackColor" type="dword" data="30ffffff"/>
|
<value name="PanView.BackColor" type="dword" data="30ffffff"/>
|
||||||
<value name="PanView.PFrame" type="dword" data="00000001"/>
|
<value name="PanView.PFrame" type="long" data="1"/>
|
||||||
<value name="PanView.PFrameColor" type="dword" data="28808080"/>
|
<value name="PanView.PFrameColor" type="dword" data="28808080"/>
|
||||||
<value name="PanView.SFrame" type="dword" data="00000001"/>
|
<value name="PanView.SFrame" type="long" data="1"/>
|
||||||
<value name="PanView.SFrameColor" type="dword" data="07c0c0c0"/>
|
<value name="PanView.SFrameColor" type="dword" data="07c0c0c0"/>
|
||||||
<value name="PanView.Thumbs.ImgSize" type="dword" data="00000060"/>
|
<value name="PanView.Thumbs.ImgSize" type="long" data="96"/>
|
||||||
<value name="PanView.Thumbs.SpaceX1" type="dword" data="00000001"/>
|
<value name="PanView.Thumbs.SpaceX1" type="long" data="1"/>
|
||||||
<value name="PanView.Thumbs.SpaceY1" type="dword" data="00000001"/>
|
<value name="PanView.Thumbs.SpaceY1" type="long" data="1"/>
|
||||||
<value name="PanView.Thumbs.SpaceX2" type="dword" data="00000005"/>
|
<value name="PanView.Thumbs.SpaceX2" type="long" data="5"/>
|
||||||
<value name="PanView.Thumbs.SpaceY2" type="dword" data="00000014"/>
|
<value name="PanView.Thumbs.SpaceY2" type="long" data="20"/>
|
||||||
<value name="PanView.Thumbs.LabelSpacing" type="dword" data="00000002"/>
|
<value name="PanView.Thumbs.LabelSpacing" type="long" data="2"/>
|
||||||
<value name="PanView.Thumbs.LabelPadding" type="dword" data="00000000"/>
|
<value name="PanView.Thumbs.LabelPadding" type="long" data="0"/>
|
||||||
<value name="PanView.Thumbs.FontName" type="string" data="Tahoma"/>
|
<value name="PanView.Thumbs.FontName" type="string" data="Tahoma"/>
|
||||||
<value name="PanView.Thumbs.FontHeight" type="dword" data="0000000e"/>
|
<value name="PanView.Thumbs.FontHeight" type="long" data="14"/>
|
||||||
<value name="PanView.Tiles.ImgSize" type="dword" data="00000030"/>
|
<value name="PanView.Tiles.ImgSize" type="long" data="48"/>
|
||||||
<value name="PanView.Tiles.SpaceX1" type="dword" data="00000004"/>
|
<value name="PanView.Tiles.SpaceX1" type="long" data="4"/>
|
||||||
<value name="PanView.Tiles.SpaceY1" type="dword" data="00000004"/>
|
<value name="PanView.Tiles.SpaceY1" type="long" data="4"/>
|
||||||
<value name="PanView.Tiles.SpaceX2" type="dword" data="000000ac"/>
|
<value name="PanView.Tiles.SpaceX2" type="long" data="172"/>
|
||||||
<value name="PanView.Tiles.SpaceY2" type="dword" data="00000004"/>
|
<value name="PanView.Tiles.SpaceY2" type="long" data="4"/>
|
||||||
<value name="PanView.Tiles.LabelSpacing" type="dword" data="00000004"/>
|
<value name="PanView.Tiles.LabelSpacing" type="long" data="4"/>
|
||||||
<value name="PanView.Tiles.LabelPadding" type="dword" data="00000001"/>
|
<value name="PanView.Tiles.LabelPadding" type="long" data="1"/>
|
||||||
<value name="PanView.Tiles.FontName" type="string" data="Tahoma"/>
|
<value name="PanView.Tiles.FontName" type="string" data="Tahoma"/>
|
||||||
<value name="PanView.Tiles.FontHeight" type="dword" data="0000000e"/>
|
<value name="PanView.Tiles.FontHeight" type="long" data="14"/>
|
||||||
<value name="PanView.LoadPreviews" type="hex" data="03"/>
|
<value name="PanView.LoadPreviews" type="hex" data="03"/>
|
||||||
<value name="PanView.LoadFolders" type="hex" data="01"/>
|
<value name="PanView.LoadFolders" type="hex" data="01"/>
|
||||||
<value name="PanView.LoadTimeout" type="dword" data="0000000f"/>
|
<value name="PanView.LoadTimeout" type="ulong" data="15"/>
|
||||||
<value name="PanView.MaxZoom" type="dword" data="00000258"/>
|
<value name="PanView.MaxZoom" type="ulong" data="600"/>
|
||||||
<value name="PanView.UsePicView2" type="hex" data="01"/>
|
<value name="PanView.UsePicView2" type="hex" data="01"/>
|
||||||
<value name="PanView.RestoreOnStartup" type="hex" data="00"/>
|
<value name="PanView.RestoreOnStartup" type="hex" data="00"/>
|
||||||
<value name="Update.VerLocation" type="string" data=""/>
|
<value name="Update.VerLocation" type="string" data=""/>
|
||||||
@ -483,89 +483,89 @@
|
|||||||
<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="2015-11-24 14:43:35" build="151119">
|
<key name="Tasks" modified="2018-02-22 06:02:12" build="171109">
|
||||||
<value name="Count" type="dword" data="00000008"/>
|
<value name="Count" type="long" data="8"/>
|
||||||
<key name="Task1" modified="2015-11-24 14:49:10" build="151119">
|
<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="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task2" modified="2015-11-24 14:49:10" build="151119">
|
<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="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task3" modified="2015-11-24 14:49:10" build="151119">
|
<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 '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||||
<value name="Active" type="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<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="Task4" modified="2015-11-24 14:49:10" build="151119">
|
<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 '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%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="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<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="2015-11-24 14:49:10" build="151119">
|
<key name="Task5" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<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="Cmd1" type="string" data="*%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l"/>
|
||||||
<value name="Active" type="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task6" modified="2015-11-24 14:49:10" build="151119">
|
<key name="Task6" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<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="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<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"/>
|
<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="2015-11-24 14:49:10" build="151119">
|
<key name="Task7" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<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="Active" type="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Cmd1" type="string" data="*cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i""/>
|
<value name="Cmd1" type="string" data="*cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i""/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task8" modified="2015-11-24 14:49:10" build="151119">
|
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<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="cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i""/>
|
<value name="Cmd1" type="string" data="cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i""/>
|
||||||
<value name="Active" type="dword" data="00000000"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
</key>
|
</key>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
<key name="Apps" modified="2015-11-24 14:49:10" build="151119">
|
<key name="Apps" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Count" type="dword" data="00000000"/>
|
<value name="Count" type="long" data="0"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Colors" modified="2015-11-24 14:49:10" build="151119">
|
<key name="Colors" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<key name="Palette1" modified="2015-11-24 14:49:10" build="151119">
|
<key name="Palette1" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Name" type="string" data="Monokai"/>
|
<value name="Name" type="string" data="Monokai"/>
|
||||||
<value name="ExtendColors" type="hex" data="00"/>
|
<value name="ExtendColors" type="hex" data="00"/>
|
||||||
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
||||||
@ -606,11 +606,11 @@
|
|||||||
<value name="ColorTable30" type="dword" data="0000ffff"/>
|
<value name="ColorTable30" type="dword" data="0000ffff"/>
|
||||||
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||||
</key>
|
</key>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
</key>
|
</key>
|
||||||
<value name="OneTabPerGroup" type="hex" data="00"/>
|
<value name="OneTabPerGroup" type="hex" data="00"/>
|
||||||
<value name="ActivateSplitMouseOver" type="hex" data="01"/>
|
<value name="ActivateSplitMouseOver" type="hex" data="01"/>
|
||||||
<value name="TabBtnDblClick" type="dword" data="00000000"/>
|
<value name="TabBtnDblClick" type="ulong" data="0"/>
|
||||||
<value name="ConsoleExceptionHandler" type="hex" data="00"/>
|
<value name="ConsoleExceptionHandler" type="hex" data="00"/>
|
||||||
<value name="SaveCmdHistory" type="hex" data="00"/>
|
<value name="SaveCmdHistory" type="hex" data="00"/>
|
||||||
<value name="CTS.IBeam" type="hex" data="01"/>
|
<value name="CTS.IBeam" type="hex" data="01"/>
|
||||||
@ -664,9 +664,9 @@
|
|||||||
<value name="StatusBar.Hide.WVDC" type="hex" data="01"/>
|
<value name="StatusBar.Hide.WVDC" type="hex" data="01"/>
|
||||||
<value name="StatusBar.Hide.Zoom" type="hex" data="01"/>
|
<value name="StatusBar.Hide.Zoom" type="hex" data="01"/>
|
||||||
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
||||||
<value name="TabFlashChanged" type="dword" data="00000008"/>
|
<value name="TabFlashChanged" type="long" data="8"/>
|
||||||
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
||||||
<key name="HotKeys" modified="2015-11-24 14:43:35" build="151119">
|
<key name="HotKeys" modified="2018-02-22 06:02:12" build="171109">
|
||||||
<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"/>
|
||||||
@ -847,16 +847,51 @@
|
|||||||
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
||||||
<value name="Key.DumpProcess" type="dword" data="00000000"/>
|
<value name="Key.DumpProcess" type="dword" data="00000000"/>
|
||||||
<value name="Key.DumpTree" type="dword" data="00000000"/>
|
<value name="Key.DumpTree" type="dword" data="00000000"/>
|
||||||
|
<value name="Multi.SplitSwap" type="dword" data="00125d58"/>
|
||||||
|
<value name="Multi.SplitSwapU" type="dword" data="00125d26"/>
|
||||||
|
<value name="Multi.SplitSwapD" type="dword" data="00125d28"/>
|
||||||
|
<value name="Multi.SplitSwapL" type="dword" data="00125d25"/>
|
||||||
|
<value name="Multi.SplitSwapR" type="dword" data="00125d27"/>
|
||||||
|
<value name="Multi.GroupInputAll" type="dword" data="00105d47"/>
|
||||||
|
<value name="Multi.GroupInputKey" type="dword" data="00125d47"/>
|
||||||
|
<value name="Key.AltNumpad" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.JumpActiveMonitor" type="dword" data="00000000"/>
|
||||||
|
<value name="Key.BufPrUp" type="dword" data="00121121"/>
|
||||||
|
<value name="Key.BufPrDn" type="dword" data="00121122"/>
|
||||||
|
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
||||||
</key>
|
</key>
|
||||||
<value name="StartCreateDelay" type="dword" data="00000064"/>
|
<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,1920,1020"/>
|
<value name="LastMonitor" type="string" data="0,0,1440,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">
|
||||||
|
<line data="set PATH=%ConEmuBaseDir%\Scripts;%PATH%"/>
|
||||||
|
</value>
|
||||||
<value name="Update.InetTool" type="hex" data="00"/>
|
<value name="Update.InetTool" type="hex" data="00"/>
|
||||||
<value name="Update.InetToolCmd" type="string" data=""/>
|
<value name="Update.InetToolCmd" type="string" data=""/>
|
||||||
<value name="SuppressBells" type="hex" data="01"/>
|
<value name="SuppressBells" type="hex" data="01"/>
|
||||||
|
<value name="ClipboardAllLinesPosix" type="hex" data="00"/>
|
||||||
|
<value name="ClipboardFirstLinePosix" type="hex" data="00"/>
|
||||||
|
<value name="VividColors" type="hex" data="01"/>
|
||||||
|
<value name="AnsiExecution" type="hex" data="01"/>
|
||||||
|
<value name="AnsiAllowedCommands" type="multi">
|
||||||
|
<line data="cmd -cur_console:R /cGitShowBranch.cmd"/>
|
||||||
|
</value>
|
||||||
|
<value name="KillSshAgent" type="hex" data="01"/>
|
||||||
|
<value name="ProcessCtrlZ" type="hex" data="00"/>
|
||||||
|
<value name="JumpListAutoUpdate" type="hex" data="01"/>
|
||||||
|
<value name="CompressLongStrings" type="hex" data="01"/>
|
||||||
|
<value name="DynamicBufferHeight" type="hex" data="01"/>
|
||||||
|
<value name="CTS.ResetOnRelease" type="hex" data="00"/>
|
||||||
|
<value name="CTS.EraseBeforeReset" type="hex" data="01"/>
|
||||||
|
<value name="Anti-aliasing2" type="hex" data="00"/>
|
||||||
|
<value name="UseAltGrayPlus" type="hex" data="01"/>
|
||||||
|
<value name="MouseDragWindow" type="hex" data="01"/>
|
||||||
|
<value name="DebugLog" type="hex" data="00"/>
|
||||||
|
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
||||||
|
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
||||||
</key>
|
</key>
|
||||||
</key>
|
</key>
|
||||||
</key>
|
</key>
|
||||||
|
@ -60,6 +60,9 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
</Link>
|
</Link>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -3,6 +3,10 @@
|
|||||||
#include <Shlwapi.h>
|
#include <Shlwapi.h>
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <shlobj.h>
|
||||||
|
|
||||||
|
#include <regex>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#pragma comment(lib, "Shlwapi.lib")
|
#pragma comment(lib, "Shlwapi.lib")
|
||||||
|
|
||||||
@ -53,33 +57,6 @@ typedef struct _option
|
|||||||
|
|
||||||
typedef std::pair<std::wstring, std::wstring> optpair;
|
typedef std::pair<std::wstring, std::wstring> optpair;
|
||||||
|
|
||||||
optpair GetOption()
|
|
||||||
{
|
|
||||||
wchar_t * cmd = GetCommandLine();
|
|
||||||
int argc;
|
|
||||||
wchar_t ** argv = CommandLineToArgvW(cmd, &argc);
|
|
||||||
optpair pair;
|
|
||||||
|
|
||||||
if (argc == 1)
|
|
||||||
{
|
|
||||||
// no commandline argument...
|
|
||||||
pair = optpair(L"/START", L"");
|
|
||||||
}
|
|
||||||
else if (argc == 2 && argv[1][0] != L'/')
|
|
||||||
{
|
|
||||||
// only a single argument: this should be a path...
|
|
||||||
pair = optpair(L"/START", argv[1]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pair = optpair(argv[1], argc > 2 ? argv[2] : L"");
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalFree(argv);
|
|
||||||
|
|
||||||
return pair;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FileExists(const wchar_t * filePath)
|
bool FileExists(const wchar_t * filePath)
|
||||||
{
|
{
|
||||||
HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
|
HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
|
||||||
@ -93,7 +70,7 @@ bool FileExists(const wchar_t * filePath)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = L"")
|
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring cfgRoot = L"")
|
||||||
{
|
{
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
wchar_t appId[MAX_PATH] = { 0 };
|
wchar_t appId[MAX_PATH] = { 0 };
|
||||||
@ -104,10 +81,20 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName =
|
|||||||
wchar_t backupCfgPath[MAX_PATH] = { 0 };
|
wchar_t backupCfgPath[MAX_PATH] = { 0 };
|
||||||
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 oldCfgPath[MAX_PATH] = { 0 };
|
wchar_t defaultCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t configDirPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t userProfiledDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||||
|
|
||||||
|
std::wstring cmderStart = path;
|
||||||
|
std::wstring cmderTask = taskName;
|
||||||
|
|
||||||
|
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||||
|
userConfigDirPath[cfgRoot.length()] = 0;
|
||||||
|
|
||||||
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||||
|
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
@ -118,28 +105,103 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName =
|
|||||||
|
|
||||||
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
||||||
|
|
||||||
// Check for machine-specific then user config source file.
|
PathCombine(configDirPath, exeDir, L"config");
|
||||||
PathCombine(cpuCfgPath, exeDir, L"config\\ConEmu-%COMPUTERNAME%.xml");
|
if (wcscmp(userConfigDirPath, L"") == 0)
|
||||||
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
{
|
||||||
|
PathCombine(userConfigDirPath, exeDir, L"config");
|
||||||
PathCombine(userCfgPath, exeDir, L"config\\user-ConEmu.xml");
|
|
||||||
|
|
||||||
if (PathFileExists(cpuCfgPath)) {
|
|
||||||
wcsncpy_s(oldCfgPath, cpuCfgPath, sizeof(cpuCfgPath));
|
|
||||||
wcsncpy_s(backupCfgPath, cpuCfgPath, sizeof(cpuCfgPath));
|
|
||||||
}
|
}
|
||||||
else if (PathFileExists(userCfgPath)) {
|
else
|
||||||
wcsncpy_s(oldCfgPath, userCfgPath, sizeof(userCfgPath));
|
{
|
||||||
wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath));
|
PathCombine(userBinDirPath, userConfigDirPath, L"bin");
|
||||||
}
|
SHCreateDirectoryEx(0, userBinDirPath, 0);
|
||||||
else {
|
|
||||||
PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml");
|
PathCombine(userConfigDirPath, userConfigDirPath, L"config");
|
||||||
wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath));
|
SHCreateDirectoryEx(0, userConfigDirPath, 0);
|
||||||
|
|
||||||
|
PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d");
|
||||||
|
SHCreateDirectoryEx(0, userProfiledDirPath, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set path to vendored ConEmu config file
|
// Set path to vendored ConEmu config file
|
||||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
||||||
|
|
||||||
|
// Set path to Cmder default ConEmu config file
|
||||||
|
PathCombine(defaultCfgPath, exeDir, L"config\\ConEmu.xml");
|
||||||
|
|
||||||
|
// Check for machine-specific then user config source file.
|
||||||
|
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
||||||
|
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||||
|
|
||||||
|
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
|
|
||||||
|
if (PathFileExists(cpuCfgPath)) {
|
||||||
|
if (PathFileExists(cfgPath)) {
|
||||||
|
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location! Restart Cmder as administrator."
|
||||||
|
: L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy ConEmu-%COMPUTERNAME%.xml file to vendored ConEmu.xml location! Restart Cmder as administrator."
|
||||||
|
: L"Failed to copy ConEmu-%COMPUTERNAME%.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (PathFileExists(userCfgPath)) {
|
||||||
|
if (PathFileExists(cfgPath)) {
|
||||||
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy ConEmu.xml file to backup location! Restart Cmder as administrator."
|
||||||
|
: L"Failed to copy ConEmu.xml file to backup location!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location! Restart Cmder as administrator."
|
||||||
|
: L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (PathFileExists(cfgPath)) {
|
||||||
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy ConEmu.xml file to user-conemu.xml backup location! Restart Cmder as administrator."
|
||||||
|
: L"Failed to copy ConEmu.xml file to user-conemu.xml backup location!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||||
|
{
|
||||||
|
MessageBox(NULL,
|
||||||
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
|
? L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location! Restart Cmder as administrator."
|
||||||
|
: L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SYSTEM_INFO sysInfo;
|
SYSTEM_INFO sysInfo;
|
||||||
GetNativeSystemInfo(&sysInfo);
|
GetNativeSystemInfo(&sysInfo);
|
||||||
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
|
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
|
||||||
@ -149,51 +211,44 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName =
|
|||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FileExists(oldCfgPath) && !FileExists(cfgPath))
|
if (streqi(cmderStart.c_str(), L""))
|
||||||
{
|
|
||||||
if (!CopyFile(oldCfgPath, cfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to copy ConEmu.xml file to new location! Restart Cmder as administrator."
|
|
||||||
: L"Failed to copy ConEmu.xml file to new location!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!CopyFile(cfgPath, backupCfgPath, FALSE))
|
|
||||||
{
|
|
||||||
MessageBox(NULL,
|
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
|
||||||
? L"Failed to backup ConEmu.xml file to ./config folder!"
|
|
||||||
: L"Failed to backup ConEmu.xml file to ./config folder!", MB_TITLE, MB_ICONSTOP);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (streqi(path.c_str(), L""))
|
|
||||||
{
|
{
|
||||||
TCHAR buff[MAX_PATH];
|
TCHAR buff[MAX_PATH];
|
||||||
const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", buff, MAX_PATH);
|
const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", buff, MAX_PATH);
|
||||||
path = buff;
|
cmderStart = buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_single_mode)
|
if (is_single_mode)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder /dir \"%s\"", icoPath, path.c_str());
|
if (!streqi(cmderTask.c_str(), L"")) {
|
||||||
|
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", args, icoPath, cmderStart.c_str(), cmderTask.c_str());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"/Icon \"%s\" /Title Cmder /dir \"%s\"", icoPath, path.c_str());
|
if (!streqi(cmderTask.c_str(), L"")) {
|
||||||
|
swprintf_s(args, L"/Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", icoPath, cmderStart.c_str(), cmderTask.c_str());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!taskName.empty()) {
|
|
||||||
swprintf_s(args, L"%s /run {%s}", args, taskName.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||||
|
if (wcscmp(userConfigDirPath, configDirPath) != 0)
|
||||||
|
{
|
||||||
|
SetEnvironmentVariable(L"CMDER_USER_CONFIG", userConfigDirPath);
|
||||||
|
SetEnvironmentVariable(L"CMDER_USER_BIN", userBinDirPath);
|
||||||
|
}
|
||||||
|
|
||||||
// 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;
|
||||||
@ -264,7 +319,6 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
|||||||
PathCombine(icoPath, exePath, L"icons\\cmder.ico");
|
PathCombine(icoPath, exePath, L"icons\\cmder.ico");
|
||||||
|
|
||||||
// Now set the registry keys
|
// Now set the registry keys
|
||||||
|
|
||||||
HKEY root = GetRootKey(opt);
|
HKEY root = GetRootKey(opt);
|
||||||
|
|
||||||
HKEY cmderKey;
|
HKEY cmderKey;
|
||||||
@ -299,6 +353,106 @@ void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
|||||||
RegCloseKey(root);
|
RegCloseKey(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct cmderOptions
|
||||||
|
{
|
||||||
|
std::wstring cmderCfgRoot = L"";
|
||||||
|
std::wstring cmderStart = L"";
|
||||||
|
std::wstring cmderTask = L"";
|
||||||
|
std::wstring cmderRegScope = L"USER";
|
||||||
|
bool cmderSingle = false;
|
||||||
|
bool registerApp = false;
|
||||||
|
bool unRegisterApp = false;
|
||||||
|
bool error = false;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
cmderOptions GetOption()
|
||||||
|
{
|
||||||
|
cmderOptions cmderOptions;
|
||||||
|
LPWSTR *szArgList;
|
||||||
|
int argCount;
|
||||||
|
|
||||||
|
szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
|
||||||
|
|
||||||
|
for (int i = 1; i < argCount; i++)
|
||||||
|
{
|
||||||
|
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
||||||
|
|
||||||
|
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
TCHAR userProfile[MAX_PATH];
|
||||||
|
const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", userProfile, MAX_PATH);
|
||||||
|
|
||||||
|
wchar_t cmderCfgRoot[MAX_PATH] = { 0 };
|
||||||
|
PathCombine(cmderCfgRoot, userProfile, L"cmder_cfg");
|
||||||
|
|
||||||
|
cmderOptions.cmderCfgRoot = cmderCfgRoot;
|
||||||
|
|
||||||
|
if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') {
|
||||||
|
cmderOptions.cmderCfgRoot = szArgList[i + 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(L"/start", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
if (PathFileExists(szArgList[i + 1]))
|
||||||
|
{
|
||||||
|
cmderOptions.cmderStart = szArgList[i + 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
MessageBox(NULL, szArgList[i + 1], L"/START - Folder doses not exist!", MB_OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(L"/task", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.cmderTask = szArgList[i + 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(L"/single", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.cmderSingle = true;
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(L"/register", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.registerApp = true;
|
||||||
|
cmderOptions.unRegisterApp = false;
|
||||||
|
if (szArgList[i + 1] != NULL)
|
||||||
|
{
|
||||||
|
if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.cmderRegScope = szArgList[i + 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(L"/unregister", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.unRegisterApp = true;
|
||||||
|
cmderOptions.registerApp = false;
|
||||||
|
if (szArgList[i + 1] != NULL)
|
||||||
|
{
|
||||||
|
if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.cmderRegScope = szArgList[i + 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (cmderOptions.cmderStart == L"" && PathFileExists(szArgList[i]))
|
||||||
|
{
|
||||||
|
cmderOptions.cmderStart = szArgList[i];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n /c [CMDER User Root Path]\n\n /task [ConEmu Task Name]\n\n [/start [Start in Path] | [Start in Path]]\n\n /single\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
|
||||||
|
cmderOptions.error = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalFree(szArgList);
|
||||||
|
|
||||||
|
return cmderOptions;
|
||||||
|
}
|
||||||
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||||
_In_opt_ HINSTANCE hPrevInstance,
|
_In_opt_ HINSTANCE hPrevInstance,
|
||||||
_In_ LPTSTR lpCmdLine,
|
_In_ LPTSTR lpCmdLine,
|
||||||
@ -308,34 +462,24 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
UNREFERENCED_PARAMETER(lpCmdLine);
|
UNREFERENCED_PARAMETER(lpCmdLine);
|
||||||
UNREFERENCED_PARAMETER(nCmdShow);
|
UNREFERENCED_PARAMETER(nCmdShow);
|
||||||
|
|
||||||
optpair opt = GetOption();
|
cmderOptions cmderOptions = GetOption();
|
||||||
|
|
||||||
if (streqi(opt.first.c_str(), L"/START"))
|
if (cmderOptions.registerApp == true ) {
|
||||||
{
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||||
StartCmder(opt.second, false);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||||
}
|
}
|
||||||
else if (streqi(opt.first.c_str(), L"/SINGLE"))
|
else if (cmderOptions.unRegisterApp == true )
|
||||||
{
|
{
|
||||||
StartCmder(opt.second, true);
|
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||||
|
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||||
}
|
}
|
||||||
else if (streqi(opt.first.c_str(), L"/TASK"))
|
else if (cmderOptions.error == true)
|
||||||
{
|
{
|
||||||
StartCmder(L"", false, opt.second);
|
return 1;
|
||||||
}
|
|
||||||
else if (streqi(opt.first.c_str(), L"/REGISTER"))
|
|
||||||
{
|
|
||||||
RegisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
|
||||||
RegisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
|
||||||
}
|
|
||||||
else if (streqi(opt.first.c_str(), L"/UNREGISTER"))
|
|
||||||
{
|
|
||||||
UnregisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
|
||||||
UnregisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n /START <path>\n /SINGLE <path>\n /TASK <name>\n /REGISTER [USER/ALL]\n /UNREGISTER [USER/ALL]", MB_TITLE, MB_OK);
|
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
42
vendor/cmder.sh
vendored
42
vendor/cmder.sh
vendored
@ -7,6 +7,20 @@
|
|||||||
# Add system specific users customizations to $HOME/.bashrc, these
|
# Add system specific users customizations to $HOME/.bashrc, these
|
||||||
# customizations will not follow Cmder to another machine.
|
# customizations will not follow Cmder to another machine.
|
||||||
|
|
||||||
|
function runProfiled {
|
||||||
|
unset profile_d_scripts
|
||||||
|
pushd "${1}" >/dev/null
|
||||||
|
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
||||||
|
|
||||||
|
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||||
|
for x in ${profile_d_scripts} ; do
|
||||||
|
echo Sourcing "${1}/${x}"...
|
||||||
|
. "${1}/${x}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
popd >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
# 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 [ "$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
|
||||||
@ -42,24 +56,28 @@ if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||||
unset profile_d_scripts
|
runProfiled "${CMDER_ROOT}/config/profile.d"
|
||||||
pushd "${CMDER_ROOT}/config/profile.d" >/dev/null
|
|
||||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
|
||||||
|
|
||||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
|
||||||
for x in ${profile_d_scripts} ; do
|
|
||||||
# echo Sourcing "${CMDER_ROOT}/config/profile.d/${x}"...
|
|
||||||
. "${CMDER_ROOT}/config/profile.d/${x}"
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
popd >/dev/null
|
|
||||||
|
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
||||||
|
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
||||||
. "${CMDER_ROOT}/config/user-profile.sh"
|
. "${CMDER_ROOT}/config/user-profile.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then
|
||||||
|
. "${CMDER_USER_CONFIG}/user-profile.sh"
|
||||||
else
|
else
|
||||||
echo Creating user startup file: "${CMDER_ROOT}/config/user-profile.sh"
|
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||||
cat <<-eof >"${CMDER_ROOT}/config/user-profile.sh"
|
initialProfile="${CMDER_USER_CONFIG}/user-profile.sh"
|
||||||
|
else
|
||||||
|
initialProfile="${CMDER_ROOT}/config/user-profile.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Creating user startup file: "${initialProfile}"
|
||||||
|
cat <<-eof >"${initialProfile}"
|
||||||
# use this file to run your own startup commands for msys2 bash'
|
# use this file to run your own startup commands for msys2 bash'
|
||||||
|
|
||||||
# To add a new vendor to the path, do something like:
|
# To add a new vendor to the path, do something like:
|
||||||
|
50
vendor/cmder_exinit
vendored
50
vendor/cmder_exinit
vendored
@ -22,6 +22,25 @@
|
|||||||
# # from outside Cmder.
|
# # from outside Cmder.
|
||||||
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
||||||
|
|
||||||
|
function runProfiled {
|
||||||
|
unset profile_d_scripts
|
||||||
|
pushd "${1}" >/dev/null
|
||||||
|
|
||||||
|
if [ ! "x${ZSH_VERSION}" = "x" ]; then
|
||||||
|
profile_d_scripts=$(ls *.zsh 2>/dev/null)
|
||||||
|
elif [ ! "x${BASH_VERSION}" = "x" ]; then
|
||||||
|
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||||
|
for x in ${profile_d_scripts} ; do
|
||||||
|
echo Sourcing "${1}/${x}"...
|
||||||
|
. "${1}/${x}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
popd >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
@ -55,28 +74,29 @@ if [ ! "$CMDER_ROOT" = "" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||||
unset profile_d_scripts
|
runProfiled "${CMDER_ROOT}/config/profile.d"
|
||||||
pushd "${CMDER_ROOT}/config/profile.d" >/dev/null
|
|
||||||
if [ ! "x${ZSH_VERSION}" = "x" ]; then
|
|
||||||
profile_d_scripts=$(ls *.zsh 2>/dev/null)
|
|
||||||
elif [ ! "x${BASH_VERSION}" = "x" ]; then
|
|
||||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
||||||
for x in ${profile_d_scripts} ; do
|
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
||||||
# echo Sourcing "${CMDER_ROOT}/config/profile.d/${x}"...
|
|
||||||
. "${CMDER_ROOT}/config/profile.d/${x}"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
popd >/dev/null
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
||||||
. "${CMDER_ROOT}/config/user-profile.sh"
|
. "${CMDER_ROOT}/config/user-profile.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then
|
||||||
|
. "${CMDER_USER_CONFIG}/user-profile.sh"
|
||||||
else
|
else
|
||||||
echo Creating user startup file: "${CMDER_ROOT}/config/user-profile.sh"
|
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||||
cat <<-eof >"${CMDER_ROOT}/config/user-profile.sh"
|
initialProfile="${CMDER_USER_CONFIG}/user-profile.sh"
|
||||||
|
else
|
||||||
|
initialProfile="${CMDER_ROOT}/config/user-profile.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Creating user startup file: "${initialProfile}"
|
||||||
|
cat <<-eof >"${initialProfile}"
|
||||||
# use this file to run your own startup commands for msys2 bash'
|
# use this file to run your own startup commands for msys2 bash'
|
||||||
|
|
||||||
# To add a new vendor to the path, do something like:
|
# To add a new vendor to the path, do something like:
|
||||||
|
377
vendor/init.bat
vendored
377
vendor/init.bat
vendored
@ -6,36 +6,112 @@
|
|||||||
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
:: !!! Use "%CMDER_ROOT%\config\user-profile.cmd" to add your own startup commands
|
:: !!! Use "%CMDER_ROOT%\config\user-profile.cmd" to add your own startup commands
|
||||||
|
|
||||||
:: Set to > 0 for verbose output to aid in debugging.
|
:: Use /v command line arg or set to > 0 for verbose output to aid in debugging.
|
||||||
if not defined verbose-output ( set verbose-output=0 )
|
set verbose-output=0
|
||||||
|
set debug-output=0
|
||||||
|
set max_depth=1
|
||||||
|
|
||||||
:: Find root dir
|
:: Find root dir
|
||||||
if not defined CMDER_ROOT (
|
if not defined CMDER_ROOT (
|
||||||
if defined ConEmuDir (
|
if defined ConEmuDir (
|
||||||
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do set "CMDER_ROOT=%%~fi"
|
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
||||||
|
set "CMDER_ROOT=%%~fi"
|
||||||
|
)
|
||||||
) else (
|
) else (
|
||||||
for /f "delims=" %%i in ("%~dp0\..") do set "CMDER_ROOT=%%~fi"
|
for /f "delims=" %%i in ("%~dp0\..") do (
|
||||||
|
set "CMDER_ROOT=%%~fi"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Remove trailing '\'
|
:: Remove trailing '\' from %CMDER_ROOT%
|
||||||
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
||||||
|
|
||||||
|
:var_loop
|
||||||
|
if "%~1" == "" (
|
||||||
|
goto :start
|
||||||
|
) else if "%1"=="/v" (
|
||||||
|
set verbose-output=1
|
||||||
|
) else if "%1"=="/d" (
|
||||||
|
set debug-output=1
|
||||||
|
) else if "%1" == "/max_depth" (
|
||||||
|
if "%~2" geq "1" if "%~2" leq "5" (
|
||||||
|
set "max_depth=%~2"
|
||||||
|
shift
|
||||||
|
) else (
|
||||||
|
call :show_error '/max_depth' requires a number between 1 and 5!
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
) else if "%1" == "/c" (
|
||||||
|
if exist "%~2" (
|
||||||
|
if not exist "%~2\bin" mkdir "%~2\bin"
|
||||||
|
set "cmder_user_bin=%~2\bin"
|
||||||
|
if not exist "%~2\config\profile.d" mkdir "%~2\config\profile.d"
|
||||||
|
set "cmder_user_config=%~2\config"
|
||||||
|
shift
|
||||||
|
)
|
||||||
|
) else if "%1" == "/user_aliases" (
|
||||||
|
if exist "%~2" (
|
||||||
|
set "user-aliases=%~2"
|
||||||
|
shift
|
||||||
|
)
|
||||||
|
) else if "%1" == "/git_install_root" (
|
||||||
|
if exist "%~2" (
|
||||||
|
set "GIT_INSTALL_ROOT=%~2"
|
||||||
|
shift
|
||||||
|
) else (
|
||||||
|
call :show_error The Git install root folder "%2", you specified does not exist!
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
) else if "%1" == "/home" (
|
||||||
|
if exist "%~2" (
|
||||||
|
set "HOME=%~2"
|
||||||
|
shift
|
||||||
|
) else (
|
||||||
|
call :show_error The home folder "%2", you specified does not exist!
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
) else if "%1" == "/svn_ssh" (
|
||||||
|
set SVN_SSH=%2
|
||||||
|
shift
|
||||||
|
)
|
||||||
|
shift
|
||||||
|
goto var_loop
|
||||||
|
|
||||||
|
:start
|
||||||
|
|
||||||
|
call :debug-output init.bat - Env Var - CMDER_ROOT=%CMDER_ROOT%
|
||||||
|
call :debug-output init.bat - Env Var - debug-output=%debug-output%
|
||||||
|
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
call :debug-output init.bat - CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!
|
||||||
|
)
|
||||||
|
|
||||||
:: Pick right version of clink
|
:: Pick right version of clink
|
||||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||||
set architecture=86
|
set architecture=86
|
||||||
|
set architecture_bits=32
|
||||||
) else (
|
) else (
|
||||||
set architecture=64
|
set architecture=64
|
||||||
|
set architecture_bits=64
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Tell the user about the clink config files...
|
:: Tell the user about the clink config files...
|
||||||
if not exist "%CMDER_ROOT%\config\settings" (
|
if defined "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\settings" (
|
||||||
|
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings"
|
||||||
|
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\
|
||||||
|
|
||||||
|
} else if not exist "%CMDER_ROOT%\config\settings" (
|
||||||
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
|
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
|
||||||
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Run clink
|
:: Run clink
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
) else (
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
)
|
||||||
|
|
||||||
:: Prepare for git-for-windows
|
:: Prepare for git-for-windows
|
||||||
|
|
||||||
@ -57,39 +133,37 @@ setlocal enabledelayedexpansion
|
|||||||
call :read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd"
|
call :read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd"
|
||||||
|
|
||||||
:: check if git is in path...
|
:: check if git is in path...
|
||||||
setlocal enabledelayedexpansion
|
for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
||||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do @(
|
|
||||||
|
|
||||||
:: get the absolute path to the user provided git binary
|
:: get the absolute path to the user provided git binary
|
||||||
pushd %%~dpF
|
pushd %%~dpF
|
||||||
set "test_dir=!CD!"
|
set "test_dir=!CD!"
|
||||||
popd
|
popd
|
||||||
|
|
||||||
:: get the version information for the user provided git binary
|
:: get the version information for the user provided git binary
|
||||||
setlocal enabledelayedexpansion
|
call :read_version USER "!test_dir!"
|
||||||
call :read_version USER !test_dir!
|
|
||||||
|
|
||||||
if !errorlevel! geq 0 (
|
if !errorlevel! geq 0 (
|
||||||
|
|
||||||
:: compare the user git version against the vendored version
|
:: compare the user git version against the vendored version
|
||||||
setlocal enabledelayedexpansion
|
|
||||||
call :compare_versions USER VENDORED
|
call :compare_versions USER VENDORED
|
||||||
|
|
||||||
:: use the user provided git if its version is greater than, or equal to the vendored git
|
:: use the user provided git if its version is greater than, or equal to the vendored git
|
||||||
if !errorlevel! geq 0 (
|
if !errorlevel! geq 0 if exist "!test_dir:~0,-4!\cmd\git.exe" (
|
||||||
|
set "GIT_INSTALL_ROOT=!test_dir:~0,-4!"
|
||||||
|
set test_dir=
|
||||||
|
goto :FOUND_GIT
|
||||||
|
) else if !errorlevel! geq 0 (
|
||||||
set "GIT_INSTALL_ROOT=!test_dir!"
|
set "GIT_INSTALL_ROOT=!test_dir!"
|
||||||
set test_dir=
|
set test_dir=
|
||||||
goto :FOUND_GIT
|
goto :FOUND_GIT
|
||||||
) else (
|
) else (
|
||||||
echo Found old !GIT_VERSION_USER! in "!test_dir!", but not using...
|
call :verbose-output Found old !GIT_VERSION_USER! in "!test_dir!", but not using...
|
||||||
set test_dir=
|
set test_dir=
|
||||||
)
|
)
|
||||||
|
|
||||||
) else (
|
) else (
|
||||||
|
|
||||||
:: if the user provided git executable is not found
|
:: if the user provided git executable is not found
|
||||||
if !errorlevel! equ -255 (
|
if !errorlevel! equ -255 (
|
||||||
echo No git at "!git_executable!" found.
|
call :verbose-output No git at "!git_executable!" found.
|
||||||
set test_dir=
|
set test_dir=
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -101,8 +175,7 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do @(
|
|||||||
:VENDORED_GIT
|
:VENDORED_GIT
|
||||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
||||||
call :verbose-output Add the minimal git commands to the front of the path
|
call :enhance_path "!GIT_INSTALL_ROOT!\cmd"
|
||||||
set "PATH=!GIT_INSTALL_ROOT!\cmd;%PATH%"
|
|
||||||
) else (
|
) else (
|
||||||
goto :NO_GIT
|
goto :NO_GIT
|
||||||
)
|
)
|
||||||
@ -111,38 +184,48 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
|||||||
:: Add git to the path
|
:: Add git to the path
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
rem add the unix commands at the end to not shadow windows commands like more
|
rem add the unix commands at the end to not shadow windows commands like more
|
||||||
call :verbose-output Enhancing PATH with unix commands from git in "%GIT_INSTALL_ROOT%\usr\bin"
|
if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" call :enhance_path "!GIT_INSTALL_ROOT!\cmd" append
|
||||||
set "PATH=%PATH%;%GIT_INSTALL_ROOT%\usr\bin;%GIT_INSTALL_ROOT%\usr\share\vim\vim74"
|
if exist "!GIT_INSTALL_ROOT!\mingw32" (
|
||||||
|
call :enhance_path "!GIT_INSTALL_ROOT!\mingw32" append
|
||||||
|
) else if exist "!GIT_INSTALL_ROOT!\mingw64" (
|
||||||
|
call :enhance_path "!GIT_INSTALL_ROOT!\mingw64" append
|
||||||
|
)
|
||||||
|
if exist "!GIT_INSTALL_ROOT!\usr\bin" call :enhance_path "%GIT_INSTALL_ROOT%\usr\bin" append
|
||||||
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
||||||
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
||||||
)
|
)
|
||||||
|
|
||||||
:NO_GIT
|
:NO_GIT
|
||||||
endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
||||||
|
call :debug-output init.bat - Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%
|
||||||
|
|
||||||
:: Enhance Path
|
:: Enhance Path
|
||||||
set "PATH=%CMDER_ROOT%\bin;%PATH%;%CMDER_ROOT%\"
|
call :enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth%
|
||||||
|
if defined CMDER_USER_BIN (
|
||||||
|
call :enhance_path "%CMDER_USER_BIN%" %max_depth%
|
||||||
|
)
|
||||||
|
call :enhance_path "%CMDER_ROOT%" append
|
||||||
|
|
||||||
:: 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.
|
||||||
if not exist "%CMDER_ROOT%\config\profile.d" (
|
call :run_profile_d "%CMDER_ROOT%\config\profile.d"
|
||||||
mkdir "%CMDER_ROOT%\config\profile.d"
|
if defined CMDER_USER_CONFIG (
|
||||||
|
call :run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||||
)
|
)
|
||||||
|
|
||||||
pushd "%CMDER_ROOT%\config\profile.d"
|
|
||||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
|
||||||
call :verbose-output Calling "%CMDER_ROOT%\config\profile.d\%%x"...
|
|
||||||
call "%CMDER_ROOT%\config\profile.d\%%x"
|
|
||||||
)
|
|
||||||
popd
|
|
||||||
|
|
||||||
:: Allows user to override default aliases store using profile.d
|
:: Allows user to override default aliases store using profile.d
|
||||||
:: scripts run above by setting the 'aliases' env variable.
|
:: scripts run above by setting the 'aliases' env variable.
|
||||||
::
|
::
|
||||||
:: Note: If overriding default aliases store file the aliases
|
:: Note: If overriding default aliases store file the aliases
|
||||||
:: must also be self executing, see '.\user-aliases.cmd.example',
|
:: must also be self executing, see '.\user-aliases.cmd.example',
|
||||||
:: and be in profile.d folder.
|
:: and be in profile.d folder.
|
||||||
|
if not defined user-aliases (
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
set "user-aliases=%CMDER_USER_CONFIG%\user-aliases.cmd"
|
||||||
|
) else (
|
||||||
set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd"
|
set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
:: The aliases environment variable is used by alias.bat to id
|
:: The aliases environment variable is used by alias.bat to id
|
||||||
:: the default file to store new aliases in.
|
:: the default file to store new aliases in.
|
||||||
@ -159,8 +242,13 @@ if not exist "%user-aliases%" (
|
|||||||
type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul
|
type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul
|
||||||
if "!errorlevel!" == "1" (
|
if "!errorlevel!" == "1" (
|
||||||
echo Creating initial user-aliases store in "%user-aliases%"...
|
echo Creating initial user-aliases store in "%user-aliases%"...
|
||||||
copy "%CMDER_ROOT%\%user-aliases%" "%user-aliases%.old_format"
|
if defined CMDER_USER_CONFIG (
|
||||||
|
copy "%user-aliases%" "%user-aliases%.old_format"
|
||||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
||||||
|
) else (
|
||||||
|
copy "%user-aliases%" "%user-aliases%.old_format"
|
||||||
|
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -173,25 +261,32 @@ if exist "%CMDER_ROOT%\config\aliases" (
|
|||||||
type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format"
|
type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format"
|
||||||
)
|
)
|
||||||
endlocal
|
endlocal
|
||||||
|
|
||||||
:: Add aliases to the environment
|
:: Add aliases to the environment
|
||||||
call "%user-aliases%"
|
call "%user-aliases%"
|
||||||
|
|
||||||
:: See vendor\git-for-windows\README.portable for why we do this
|
:: See vendor\git-for-windows\README.portable for why we do this
|
||||||
:: Basically we need to execute this post-install.bat because we are
|
:: Basically we need to execute this post-install.bat because we are
|
||||||
:: manually extracting the archive rather than executing the 7z sfx
|
:: manually extracting the archive rather than executing the 7z sfx
|
||||||
if exist "%CMDER_ROOT%\vendor\git-for-windows\post-install.bat" (
|
if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
|
||||||
call :verbose-output Running Git for Windows one time Post Install....
|
call :verbose-output Running Git for Windows one time Post Install....
|
||||||
pushd "%CMDER_ROOT%\vendor\git-for-windows\"
|
pushd "%GIT_INSTALL_ROOT%\"
|
||||||
"%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
|
"%GIT_INSTALL_ROOT%\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
|
||||||
popd
|
popd
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Set home path
|
:: Set home path
|
||||||
if not defined HOME set "HOME=%USERPROFILE%"
|
if not defined HOME set "HOME=%USERPROFILE%"
|
||||||
|
call :debug-output init.bat - Env Var - HOME=%HOME%
|
||||||
|
|
||||||
if exist "%CMDER_ROOT%\config\user-profile.cmd" (
|
if exist "%CMDER_ROOT%\config\user-profile.cmd" (
|
||||||
REM Create this file and place your own command in there
|
REM Create this file and place your own command in there
|
||||||
call "%CMDER_ROOT%\config\user-profile.cmd"
|
call "%CMDER_ROOT%\config\user-profile.cmd"
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined CMDER_USER_CONFIG if exist "%CMDER_USER_CONFIG%\user-profile.cmd" (
|
||||||
|
REM Create this file and place your own command in there
|
||||||
|
call "%CMDER_USER_CONFIG%\user-profile.cmd"
|
||||||
) else (
|
) else (
|
||||||
echo Creating user startup file: "%CMDER_ROOT%\config\user-profile.cmd"
|
echo Creating user startup file: "%CMDER_ROOT%\config\user-profile.cmd"
|
||||||
(
|
(
|
||||||
@ -208,7 +303,14 @@ if exist "%CMDER_ROOT%\config\user-profile.cmd" (
|
|||||||
echo :: you can add your plugins to the cmder path like so
|
echo :: you can add your plugins to the cmder path like so
|
||||||
echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%"
|
echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%"
|
||||||
echo.
|
echo.
|
||||||
) > "%CMDER_ROOT%\config\user-profile.cmd"
|
echo @echo off
|
||||||
|
) >"%temp%\user-profile.tmp"
|
||||||
|
|
||||||
|
if defined CMDER_USER_CONFIG (
|
||||||
|
copy "%temp%\user-profile.tmp" "%CMDER_USER_CONFIG%\user-profile.cmd"
|
||||||
|
) else (
|
||||||
|
copy "%temp%\user-profile.tmp" "%CMDER_ROOT%\config\user-profile.cmd"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
@ -216,80 +318,95 @@ exit /b
|
|||||||
::
|
::
|
||||||
:: sub-routines below here
|
:: sub-routines below here
|
||||||
::
|
::
|
||||||
|
:debug-output
|
||||||
|
if %debug-output% gtr 0 echo %* & echo.
|
||||||
|
exit /b
|
||||||
|
|
||||||
:verbose-output
|
:verbose-output
|
||||||
if %verbose-output% gtr 0 echo %*
|
if %debug-output% gtr 0 (
|
||||||
|
call :debug-output :verbose-output - %*
|
||||||
|
) else if %verbose-output% gtr 0 (
|
||||||
|
echo %*
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:show_error
|
||||||
|
echo ERROR: %*
|
||||||
|
echo CMDER Shell Initialization has Failed!
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:run_profile_d
|
||||||
|
if not exist "%~1" (
|
||||||
|
mkdir "%~1"
|
||||||
|
)
|
||||||
|
|
||||||
|
pushd "%~1"
|
||||||
|
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||||
|
call :verbose-output Calling "%~1\%%x"...
|
||||||
|
call "%~1\%%x"
|
||||||
|
)
|
||||||
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
::
|
::
|
||||||
:: specific to git version comparing
|
:: specific to git version comparing
|
||||||
::
|
::
|
||||||
:read_version
|
:read_version
|
||||||
|
|
||||||
:: clear the variables
|
:: clear the variables
|
||||||
set GIT_VERSION_%~1=
|
set GIT_VERSION_%~1=
|
||||||
|
|
||||||
:: set the executable path
|
:: set the executable path
|
||||||
set "git_executable=%~2\git.exe"
|
set "git_executable=%~2\git.exe"
|
||||||
|
call :debug-output :read_version - Env Var - git_executable=%git_executable%
|
||||||
|
|
||||||
:: check if the executable actually exists
|
:: check if the executable actually exists
|
||||||
if not exist "%git_executable%" (
|
if not exist "%git_executable%" (
|
||||||
:: return a negative error code if the executable doesn't exist
|
call :verbose-output "%git_executable%" does not exist!
|
||||||
exit /b -255
|
exit /b -255
|
||||||
)
|
)
|
||||||
|
|
||||||
:: get the git version in the provided directory
|
:: get the git version in the provided directory
|
||||||
for /F "delims=" %%F in ('%git_executable% --version 2^>nul') do @(
|
for /F "tokens=1,2,3 usebackq" %%F in (`"%git_executable%" --version 2^>nul`) do (
|
||||||
set "GIT_VERSION_%~1=%%F"
|
if "%%F %%G" == "git version" (
|
||||||
|
set "GIT_VERSION_%~1=%%H"
|
||||||
|
call :debug-output :read_version - Env Var - GIT_VERSION_%~1=%%H
|
||||||
|
) else (
|
||||||
|
echo "git --version" returned an inproper version string!
|
||||||
|
pause
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: parse the returned string
|
:: parse the returned string
|
||||||
|
call :debug-output :read_version - Calling - :validate_version "%~1" !GIT_VERSION_%~1!
|
||||||
call :validate_version "%~1" !GIT_VERSION_%~1!
|
call :validate_version "%~1" !GIT_VERSION_%~1!
|
||||||
|
exit /b
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:parse_version
|
:parse_version
|
||||||
|
:: process a `x.x.x.xxxx.x` formatted string
|
||||||
:: process a `git version x.x.x.xxxx.x` formatted string
|
|
||||||
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
|
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
|
||||||
set "%~1_MAJOR=%%A"
|
set "%~1_MAJOR=%%A"
|
||||||
set "%~1_MINOR=%%B"
|
set "%~1_MINOR=%%B"
|
||||||
set "%~1_PATCH=%%C"
|
set "%~1_PATCH=%%C"
|
||||||
set "%~1_BUILD=%%D"
|
set "%~1_BUILD=%%D"
|
||||||
)
|
)
|
||||||
|
exit /b
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:validate_version
|
:validate_version
|
||||||
|
|
||||||
:: check if we have a valid version string
|
|
||||||
if /I "%~2 %~3"=="GIT VERSION" (
|
|
||||||
|
|
||||||
:: now parse the version information into the corresponding variables
|
:: now parse the version information into the corresponding variables
|
||||||
call :parse_version %~1 %~4
|
call :parse_version %~1 %~2
|
||||||
|
|
||||||
:: ... and maybe display it, for debugging purposes.
|
:: ... and maybe display it, for debugging purposes.
|
||||||
call :verbose-output Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
call :debug-output :validate_version - Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
||||||
|
exit /b
|
||||||
) else (
|
|
||||||
:: invalid format returned, use the vendored git instead
|
|
||||||
echo Invalid git version at "%git_executable%" detected!
|
|
||||||
call :verbose-output Returned version: %~2 %~3 %~4
|
|
||||||
|
|
||||||
rem or directly call the VENDORED_GIT
|
|
||||||
set test_dir=
|
|
||||||
exit /b -127
|
|
||||||
)
|
|
||||||
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:compare_versions
|
:compare_versions
|
||||||
|
|
||||||
:: checks all major, minor, patch and build variables for the given arguments.
|
:: checks all major, minor, patch and build variables for the given arguments.
|
||||||
:: whichever binary that has the most recent version will be used based on the return code.
|
:: whichever binary that has the most recent version will be used based on the return code.
|
||||||
|
|
||||||
:: call :verbose-output Comparing:
|
:: call :debug-output Comparing:
|
||||||
:: call :verbose-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
:: call :debug-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
||||||
:: call :verbose-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD!
|
:: call :debug-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD!
|
||||||
|
|
||||||
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1)
|
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1)
|
||||||
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1)
|
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1)
|
||||||
@ -306,4 +423,124 @@ goto :eof
|
|||||||
:: looks like we have the same versions.
|
:: looks like we have the same versions.
|
||||||
exit /b 0
|
exit /b 0
|
||||||
|
|
||||||
goto :eof
|
:enhance_path
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
if "%~1" neq "" (
|
||||||
|
if exist "%~1" (
|
||||||
|
set "add_path=%~1"
|
||||||
|
) else (
|
||||||
|
call :show_error :enhance_path - The path specified. "%~1", does not exist!
|
||||||
|
exit 1
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
call :show_error You must specify a directory to add to the path!
|
||||||
|
exit 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%~2" neq "" if /i "%~2" == "append" (
|
||||||
|
set "position=%~2"
|
||||||
|
) else (
|
||||||
|
set "position="
|
||||||
|
)
|
||||||
|
|
||||||
|
set "find_query=%add_path%"
|
||||||
|
set "find_query=%find_query:\=\\%"
|
||||||
|
set "find_query=%find_query: =\ %"
|
||||||
|
set found=0
|
||||||
|
|
||||||
|
call :debug-output :enhance_path "Env Var - find_query=%find_query%"
|
||||||
|
echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$"
|
||||||
|
if "!ERRORLEVEL!" == "0" set found=1
|
||||||
|
|
||||||
|
call :debug-output :enhance_path "Env Var 1 - found=!found!"
|
||||||
|
if "!found!" == "0" (
|
||||||
|
echo "%PATH%"|findstr >nul /i /r ";%find_query%;"
|
||||||
|
if "!ERRORLEVEL!" == "0" set found=1
|
||||||
|
call :debug-output :enhance_path "Env Var 2 - found=!found!"
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%found%" == "0" (
|
||||||
|
call :debug-output :enhance_path "BEFORE Env Var - PATH=!path!"
|
||||||
|
if /i "%position%" == "append" (
|
||||||
|
call :debug-output :enhance_path "Appending '%add_path%'"
|
||||||
|
set "PATH=%PATH%;%add_path%"
|
||||||
|
) else (
|
||||||
|
call :debug-output :enhance_path "Prepending '%add_path%'"
|
||||||
|
set "PATH=%add_path%;%PATH%"
|
||||||
|
)
|
||||||
|
|
||||||
|
call :debug-output :enhance_path "AFTER Env Var - PATH=!path!"
|
||||||
|
)
|
||||||
|
|
||||||
|
endlocal & set "PATH=%PATH%"
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:enhance_path_recursive
|
||||||
|
::: ==============================================================================
|
||||||
|
:::enhance_path_recursive - Add a directory and subs to the path env variable if
|
||||||
|
::: required.
|
||||||
|
:::
|
||||||
|
:::include:
|
||||||
|
:::
|
||||||
|
::: call "$0"
|
||||||
|
:::
|
||||||
|
:::usage:
|
||||||
|
:::
|
||||||
|
::: call "%~DP0lib_path" enhance_path_recursive "[dir_path]" [max_depth] [append]
|
||||||
|
:::
|
||||||
|
:::required:
|
||||||
|
:::
|
||||||
|
::: [dir_path] <in> Fully qualified directory path. Ex: "c:\bin"
|
||||||
|
:::
|
||||||
|
:::dptions:
|
||||||
|
:::
|
||||||
|
::: [max_depth] <in> Max recuse depth. Default: 1
|
||||||
|
:::
|
||||||
|
::: append <in> Append instead rather than pre-pend "[dir_path]"
|
||||||
|
:::
|
||||||
|
:::output:
|
||||||
|
:::
|
||||||
|
::: path <out> Sets the path env variable if required.
|
||||||
|
::: ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
if "%~1" neq "" (
|
||||||
|
set "add_path=%~1"
|
||||||
|
) else (
|
||||||
|
call :directory to add to the path!"
|
||||||
|
exit 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%~2" gtr "1" (
|
||||||
|
set "max_depth=%~2"
|
||||||
|
) else (
|
||||||
|
set "max_depth=1"
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%~3" neq "" if /i "%~3" == "append" (
|
||||||
|
set "position=%~3"
|
||||||
|
) else (
|
||||||
|
set "position="
|
||||||
|
)
|
||||||
|
|
||||||
|
if "%depth%" == "" set depth=0
|
||||||
|
|
||||||
|
call :debug-output :enhance_path_recursive "Env Var - add_path=%add_path%"
|
||||||
|
call :debug-output :enhance_path_recursive "Env Var - position=%position%"
|
||||||
|
call :debug-output :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
||||||
|
|
||||||
|
if %max_depth% gtr !depth! (
|
||||||
|
call :debug-output :enhance_path_recursive "Adding parent directory - '%add_path%'"
|
||||||
|
call :enhance_path "%add_path%" %position%
|
||||||
|
set /a "depth=!depth!+1"
|
||||||
|
|
||||||
|
for /d %%i in ("%add_path%\*") do (
|
||||||
|
call :debug-output :enhance_path_recursive "Env Var BEFORE - depth=!depth!"
|
||||||
|
call :debug-output :enhance_path_recursive "Found Subdirectory - '%%~fi'"
|
||||||
|
call :enhance_path_recursive "%%~fi" %max_depth% %position%
|
||||||
|
call :debug-output :enhance_path_recursive "Env Var AFTER- depth=!depth!"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
endlocal & set "PATH=%PATH%"
|
||||||
|
exit /b
|
||||||
|
30
vendor/profile.ps1
vendored
30
vendor/profile.ps1
vendored
@ -9,6 +9,10 @@ if(!$PSScriptRoot) {
|
|||||||
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($ENV:CMDER_USER_CONFIG) {
|
||||||
|
# write-host "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 beng set.
|
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not beng set.
|
||||||
if (! $ENV:CMDER_ROOT ) {
|
if (! $ENV:CMDER_ROOT ) {
|
||||||
if ( $ENV:ConEmuDir ) {
|
if ( $ENV:ConEmuDir ) {
|
||||||
@ -25,6 +29,10 @@ $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 | Out-Null)
|
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
||||||
|
|
||||||
|
# do not load bundled psget if a module installer is already available
|
||||||
|
# -> recent PowerShell versions include PowerShellGet out of the box
|
||||||
|
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
||||||
|
|
||||||
# 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/"
|
||||||
|
|
||||||
@ -130,10 +138,32 @@ foreach ($x in Get-ChildItem *.ps1) {
|
|||||||
}
|
}
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# Drop *.ps1 files into "$ENV:CMDER_USER_CONFIG\config\profile.d"
|
||||||
|
# to source them at startup. Requires using cmder.exe /C [cmder_user_root_path] argument
|
||||||
|
if ($ENV:CMDER_USER_CONFIG -ne "" -and -not (test-path "$ENV:CMDER_USER_CONFIG\profile.d")) {
|
||||||
|
pushd $ENV:CMDER_USER_CONFIG\profile.d
|
||||||
|
foreach ($x in Get-ChildItem *.ps1) {
|
||||||
|
# write-host write-host Sourcing $x
|
||||||
|
. $x
|
||||||
|
}
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1"
|
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1"
|
||||||
if (Test-Path $CmderUserProfilePath) {
|
if (Test-Path $CmderUserProfilePath) {
|
||||||
# Create this file and place your own command in there.
|
# Create this file and place your own command in there.
|
||||||
. "$CmderUserProfilePath"
|
. "$CmderUserProfilePath"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ENV:CMDER_USER_CONFIG) {
|
||||||
|
$CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user-profile.ps1"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path $CmderUserProfilePath) {
|
||||||
|
. "$CmderUserProfilePath"
|
||||||
} else {
|
} else {
|
||||||
# This multiline string cannot be indented, for this reason I've not indented the whole block
|
# This multiline string cannot be indented, for this reason I've not indented the whole block
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user