mirror of
https://github.com/cmderdev/cmder.git
synced 2024-11-10 09:49:12 +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.
|
||||||
|
107
README.md
107
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;
|
||||||
|
|
||||||
@ -57,16 +86,16 @@ In a file explorer window right click in or on a directory to see "Cmder Here" i
|
|||||||
### Access to multiple shells in one window using tabs
|
### Access to multiple shells in one window using tabs
|
||||||
You can open multiple tabs each containing one of the following shells:
|
You can open multiple tabs each containing one of the following shells:
|
||||||
|
|
||||||
|Task|Shell|Description|
|
| Task | Shell | Description |
|
||||||
|----|-----|-----------|
|
| ---- | ----- | ----------- |
|
||||||
|Cmder|cmd.exe|Windows 'cmd.exe' shell enhanced with Git, Git aware prompt, Clink(GNU Readline), and Aliases.|
|
| Cmder | cmd.exe | Windows 'cmd.exe' shell enhanced with Git, Git aware prompt, Clink(GNU Readline), and Aliases. |
|
||||||
|Cmder as Admin|cmd.exe|Administrative Windows 'cmd.exe' Cmder shell.|
|
| Cmder as Admin | cmd.exe | Administrative Windows 'cmd.exe' Cmder shell. |
|
||||||
|PowerShell|powershell.exe|Windows PowerShell enhanced with Git and Git aware prompt .|
|
| PowerShell | powershell.exe | Windows PowerShell enhanced with Git and Git aware prompt . |
|
||||||
|PowerShell as Admin|powershell.exe|Administrative Windows 'powershell.exe' Cmder shell.|
|
| PowerShell as Admin | powershell.exe | Administrative Windows 'powershell.exe' Cmder shell. |
|
||||||
|Bash|bash.exe|Unix/Linux like bash shell running on Windows.|
|
| Bash | bash.exe | Unix/Linux like bash shell running on Windows. |
|
||||||
|Bash as Admin|bash.exe|Administrative Unix/Linux like bash shell running on Windows.|
|
| Bash as Admin | bash.exe | Administrative Unix/Linux like bash shell running on Windows. |
|
||||||
|Mintty|bash.exe|Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences|
|
| Mintty | bash.exe | Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
||||||
|Mintty as Admin|bash.exe|Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences|
|
| Mintty as Admin | bash.exe | Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
||||||
|
|
||||||
Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog.
|
Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog.
|
||||||
|
|
||||||
@ -85,25 +114,51 @@ 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:
|
|
||||||
|
|
||||||
|Shell|Cmder Portable User Config|
|
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
||||||
| ------------- |:-------------:|
|
1. Click either:
|
||||||
|Cmder|%CMDER_ROOT%\config\user-profile.cmd|
|
* `1. {cmd::Cmder as Admin}`
|
||||||
|PowerShell|$ENV:CMDER_ROOT\config\user-profile.ps1|
|
* `2. {cmd::Cmder}`
|
||||||
|Bash/Mintty|$CMDER_ROOT/config/user-profile.sh|
|
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 |
|
||||||
|
| ------------- | ----------------------------------------- |
|
||||||
|
| Cmder | %CMDER_ROOT%\\config\\user-profile.cmd |
|
||||||
|
| PowerShell | $ENV:CMDER_ROOT\\config\\user-profile.ps1 |
|
||||||
|
| 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 |
|
||||||
|
|
||||||
|
|
||||||
### Aliases
|
### Aliases
|
||||||
|
@ -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;
|
||||||
@ -255,34 +310,33 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
|||||||
|
|
||||||
GetModuleFileName(NULL, exePath, sizeof(exePath));
|
GetModuleFileName(NULL, exePath, sizeof(exePath));
|
||||||
|
|
||||||
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
||||||
swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath);
|
swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath);
|
||||||
|
|
||||||
// Now that we have `commandStr`, it's OK to change `exePath`...
|
// Now that we have `commandStr`, it's OK to change `exePath`...
|
||||||
PathRemoveFileSpec(exePath);
|
PathRemoveFileSpec(exePath);
|
||||||
|
|
||||||
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;
|
||||||
|
FAIL_ON_ERROR(RegCreateKeyEx(root, keyBaseName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL));
|
||||||
|
|
||||||
HKEY cmderKey;
|
FAIL_ON_ERROR(RegSetValue(cmderKey, L"", REG_SZ, L"Cmder Here", NULL));
|
||||||
FAIL_ON_ERROR(RegCreateKeyEx(root, keyBaseName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL));
|
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"NoWorkingDirectory", 0, REG_SZ, (BYTE *)L"", 2));
|
||||||
|
|
||||||
FAIL_ON_ERROR(RegSetValue(cmderKey, L"", REG_SZ, L"Cmder Here", NULL));
|
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"Icon", 0, REG_SZ, (BYTE *)icoPath, wcslen(icoPath) * sizeof(wchar_t)));
|
||||||
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"NoWorkingDirectory", 0, REG_SZ, (BYTE *)L"", 2));
|
|
||||||
|
|
||||||
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"Icon", 0, REG_SZ, (BYTE *)icoPath, wcslen(icoPath) * sizeof(wchar_t)));
|
HKEY command;
|
||||||
|
FAIL_ON_ERROR(RegCreateKeyEx(cmderKey, L"command", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &command, NULL));
|
||||||
|
|
||||||
HKEY command;
|
FAIL_ON_ERROR(RegSetValue(command, L"", REG_SZ, commandStr, NULL));
|
||||||
FAIL_ON_ERROR(RegCreateKeyEx(cmderKey, L"command", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &command, NULL));
|
|
||||||
|
|
||||||
FAIL_ON_ERROR(RegSetValue(command, L"", REG_SZ, commandStr, NULL));
|
RegCloseKey(command);
|
||||||
|
RegCloseKey(cmderKey);
|
||||||
RegCloseKey(command);
|
RegCloseKey(root);
|
||||||
RegCloseKey(cmderKey);
|
|
||||||
RegCloseKey(root);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
||||||
@ -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
|
fi
|
||||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
|
||||||
|
|
||||||
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:
|
||||||
|
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:
|
||||||
|
407
vendor/init.bat
vendored
407
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
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
:: 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.
|
||||||
set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd"
|
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"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
:: 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,42 +261,56 @@ 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"
|
||||||
(
|
(
|
||||||
echo :: use this file to run your own startup commands
|
echo :: use this file to run your own startup commands
|
||||||
echo :: use in front of the command to prevent printing the command
|
echo :: use in front of the command to prevent printing the command
|
||||||
echo.
|
echo.
|
||||||
echo :: uncomment this to have the ssh agent load when cmder starts
|
echo :: uncomment this to have the ssh agent load when cmder starts
|
||||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd"
|
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd"
|
||||||
echo.
|
echo.
|
||||||
echo :: uncomment this next two lines to use pageant as the ssh authentication agent
|
echo :: uncomment this next two lines to use pageant as the ssh authentication agent
|
||||||
echo :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock
|
echo :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock
|
||||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-pageant.cmd"
|
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-pageant.cmd"
|
||||||
echo.
|
echo.
|
||||||
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
|
||||||
|
32
vendor/profile.ps1
vendored
32
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