mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-17 13:09:19 +08:00
Compare commits
56 Commits
Author | SHA1 | Date | |
---|---|---|---|
d6b54eec24 | |||
052ab118e2 | |||
c46eb6a525 | |||
48259b87ac | |||
2a26026749 | |||
d68816bd11 | |||
419c785db5 | |||
c15e3f4ebd | |||
1f75f85b7c | |||
4203a8a4ea | |||
cf8a992e37 | |||
cec7fa3398 | |||
83c685cdc7 | |||
24fd027cda | |||
df259195ab | |||
20b8b09419 | |||
7bc71010c2 | |||
6608e16c3b | |||
d979140bb5 | |||
568e2cfcdd | |||
36291ab789 | |||
73c8c0c233 | |||
32cd7dcb58 | |||
b40b0067c0 | |||
4edec1675a | |||
4ed35fe110 | |||
583109b695 | |||
f783cd8add | |||
6952d602d2 | |||
eec3fd5578 | |||
7c907a5174 | |||
30f7847852 | |||
801a4ac901 | |||
143e659187 | |||
7fd43b939b | |||
5ce077a74a | |||
fc85915b2c | |||
373a58e1e6 | |||
3e06fcbf07 | |||
ecbf7a01d1 | |||
dc9263a11c | |||
8659b9c6ed | |||
316a42b8f9 | |||
676297c0d4 | |||
70b0615b34 | |||
2a1a736ceb | |||
40fd96b135 | |||
271b3ea876 | |||
c4873c6e58 | |||
29d1378d7a | |||
c15e29ecb3 | |||
c38f6b3a89 | |||
99ea376713 | |||
2051078cc6 | |||
6c5034164c | |||
0311e129ca |
2
.gitignore
vendored
2
.gitignore
vendored
@ -8,5 +8,7 @@ vendor/*/*
|
|||||||
config/.history
|
config/.history
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
*.exe
|
*.exe
|
||||||
|
*.dll
|
||||||
build/
|
build/
|
||||||
Version v*
|
Version v*
|
||||||
|
*.bak
|
||||||
|
49
README.md
49
README.md
@ -1,29 +1,25 @@
|
|||||||
# Cmder
|
# Cmder
|
||||||
|
|
||||||
[](https://gitter.im/bliker/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
Latest release is **[v1.1.4.1](https://github.com/bliker/cmder/releases/tag/v1.1.4.1)**
|
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, adds a Monokai color scheme, integrates amazing [clink](https://github.com/mridgers/clink) and a custom prompt layout.
|
||||||
|
|
||||||
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://code.google.com/p/conemu-maximus5/) with *major* config overhaul. Monokai color scheme, amazing [clink](https://github.com/mridgers/clink) and custom prompt layout.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Why use it
|
## Why use it
|
||||||
|
|
||||||
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, that is makes it great for **USB Sticks** or **Dropbox**. 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, that is 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
|
||||||
|
|
||||||
1. Download the latest release
|
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||||
1. Extract
|
2. Extract
|
||||||
1. (optional) Place your own executable files into the `bin` folder to be injected into your PATH.
|
3. (optional) Place your own executable files into the `bin` folder to be injected into your PATH.
|
||||||
1. Run cmder
|
4. Run Cmder
|
||||||
|
|
||||||
*(There will be a version with installer)*
|
|
||||||
|
|
||||||
## Integration
|
## 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;
|
||||||
|
|
||||||
### Shortcut to open Cmder in a chosen folder
|
### Shortcut to open Cmder in a chosen folder
|
||||||
|
|
||||||
@ -38,18 +34,18 @@ In a file explorer window right click in or on a directory to see "Cmder Here" i
|
|||||||
|
|
||||||
### Tab manipulation
|
### Tab manipulation
|
||||||
|
|
||||||
* `Ctrl + t` : new tab dialog (maybe you want to open cmd as admin?)
|
* <kbd>Ctrl</kbd> + <kbd>T</kbd> : New tab dialog (maybe you want to open cmd as admin?)
|
||||||
* `Ctrl + w` : close tab
|
* <kbd>Ctrl</kbd> + <kbd>W</kbd> : Close tab
|
||||||
* `Ctrl + d` : close tab (if pressed on empty command)
|
* <kbd>Ctrl</kbd> + <kbd>D</kbd> : Close tab (if pressed on empty command)
|
||||||
* `Shift + alt + number` : fast new tab: `1` - CMD, `2` - Powershell `*` - More to come
|
* <kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>#Number</kbd> : Fast new tab: <kbd>1</kbd> - CMD, <kbd>2</kbd> - PowerShell
|
||||||
* `Alt + enter`: Fullscreen
|
* <kbd>Alt</kbd> + <kbd>Enter</kbd>: Fullscreen
|
||||||
|
|
||||||
### Shell
|
### Shell
|
||||||
|
|
||||||
* `Shift + Up` : Traverse up in directory structure (lovely feature!)
|
* <kbd>Shift</kbd> + <kbd>Up</kbd> : Traverse up in directory structure (lovely feature!)
|
||||||
* `End, Home, Ctrl` : Traversing text with as usual on Windows
|
* <kbd>End</kbd>, <kbd>Home</kbd>, <kbd>Ctrl</kbd> : Traversing text with as usual on Windows
|
||||||
* `Ctrl + r` : History search
|
* <kbd>Ctrl</kbd> + <kbd>R</kbd> : History search
|
||||||
* `Shift + mouse` : Select and copy text from buffer
|
* <kbd>Shift</kbd> + Mouse : Select and copy text from buffer
|
||||||
|
|
||||||
(Some shortcuts are not yet documented, thought they exist, please add them here)
|
(Some shortcuts are not yet documented, thought they exist, please add them here)
|
||||||
|
|
||||||
@ -64,17 +60,14 @@ All aliases will be saved in `/config/aliases` file
|
|||||||
|
|
||||||
### SSH Agent
|
### SSH Agent
|
||||||
|
|
||||||
To start SSH agent simply call `agent`, which is in the `bin` folder.
|
To start SSH agent simply call `start-ssh-agent`, which is in the `vendor/git-for-windows/cmd` folder.
|
||||||
|
|
||||||
If you want to run SSH agent on startup, uncomment the line in `/vendor/init.bat`so it says `@call "%CMDER_ROOT%/bin/agent.cmd"`.
|
If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"` in `/config/user-startup.bat` (usually just uncomment it).
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
|
|
||||||
1. Complete PowerShell compatibility.
|
1. Git Bash
|
||||||
2. Workaround git.exe overload after msysgit download (Granted this is an upstream issue).
|
2. Check for clink and git before injecting them (Sort of done)
|
||||||
3. Redo Build/Pack scripts or remove them altogether.
|
|
||||||
4. Git Bash
|
|
||||||
5. Check for clink and git before injecting them
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
@ECHO OFF
|
|
||||||
|
|
||||||
REM Set default sock file
|
|
||||||
SET SSH_AUTH_SOCK=/tmp/ssh-agent.sock
|
|
||||||
|
|
||||||
REM Check socket is available
|
|
||||||
IF NOT EXIST "%TMP%\ssh-agent.sock" GOTO:RUNAGENT
|
|
||||||
|
|
||||||
REM Check if an ssh-agent is running
|
|
||||||
FOR /f "tokens=*" %%I IN ('ps ^| grep ssh-agent ^| sed "s/^ *\([0-9]\+\) .*/\1/"') DO SET VAR=%%I
|
|
||||||
IF "%VAR%" == "" GOTO:RUNAGENT
|
|
||||||
|
|
||||||
REM Check if socket file is valid
|
|
||||||
ssh-add -l 1> NUL 2>&1
|
|
||||||
IF ERRORLEVEL 1 GOTO:RUNAGENT
|
|
||||||
GOTO:ADDKEYS
|
|
||||||
|
|
||||||
:RUNAGENT
|
|
||||||
REM Remove old socket file
|
|
||||||
rm -f /tmp/ssh-agent.sock
|
|
||||||
|
|
||||||
REM Run ssh-agent and save (last) PID in VAR
|
|
||||||
SET VAR=
|
|
||||||
FOR /f "tokens=*" %%J IN ('ssh-agent -a /tmp/ssh-agent.sock') DO FOR /f "tokens=*" %%K IN ('echo %%J ^| grep "SSH_AGENT_PID" ^| sed "s/^SSH_AGENT_PID=\([0-9]\+\); .*/\1/"') DO SET VAR=%%K
|
|
||||||
|
|
||||||
:ADDKEYS
|
|
||||||
SET SSH_AUTH_PID=%VAR%
|
|
||||||
|
|
||||||
REM Check if ssh keys are known
|
|
||||||
SET KEYS=
|
|
||||||
FOR /f "tokens=*" %%I IN ('DIR /B "%HOME%\.ssh\*_rsa"') DO CALL:CHECKKEY %%I
|
|
||||||
|
|
||||||
REM Add missing ssh keys at once
|
|
||||||
IF NOT "%KEYS%" == "" ssh-add %KEYS%
|
|
||||||
GOTO:END
|
|
||||||
|
|
||||||
REM Functions
|
|
||||||
REM Check if ssh key has to be added
|
|
||||||
:CHECKKEY
|
|
||||||
SET VAR=
|
|
||||||
FOR /f "tokens=*" %%J IN ('ssh-add -l ^| grep "%1"') DO SET VAR=%%J
|
|
||||||
IF "%VAR%" == "" SET KEYS='%HOME%\.ssh\%1' %KEYS%
|
|
||||||
GOTO:EOF
|
|
||||||
|
|
||||||
:END
|
|
||||||
@ECHO ON
|
|
@ -1,8 +1,13 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
set ALIASES=%CMDER_ROOT%\config\aliases
|
set ALIASES=%CMDER_ROOT%\config\aliases
|
||||||
|
setlocal
|
||||||
|
:: handle quotes within command definition, e.g. quoted long file names
|
||||||
|
set _x="%*"
|
||||||
|
set _x=%_x:"=%
|
||||||
|
|
||||||
if ["%*"] == [""] echo Use /? for help & echo. & goto :p_show
|
:: check command usage
|
||||||
|
if ["%_x%"] == [""] echo Use /? for help & echo. & goto :p_show
|
||||||
if ["%1"] == ["/?"] goto:p_help
|
if ["%1"] == ["/?"] goto:p_help
|
||||||
if ["%1"] == ["/reload"] goto:p_reload
|
if ["%1"] == ["/reload"] goto:p_reload
|
||||||
:: /d flag for delete existing alias
|
:: /d flag for delete existing alias
|
||||||
@ -13,20 +18,18 @@ if ["%2"] == [""] (
|
|||||||
echo Insufficient parameters. & goto:p_help
|
echo Insufficient parameters. & goto:p_help
|
||||||
)
|
)
|
||||||
|
|
||||||
::validate alias
|
:: validate alias
|
||||||
setlocal
|
for /f "delims== tokens=1" %%G in ("%_x%") do set alias=%%G
|
||||||
for /f "delims== tokens=1" %%G in ("%*") do set _temp2=%%G
|
set _temp=%alias: =%
|
||||||
|
|
||||||
set _temp=%_temp2: =%
|
if not ["%_temp%"] == ["%alias%"] (
|
||||||
|
|
||||||
if not ["%_temp%"] == ["%_temp2%"] (
|
|
||||||
echo Your alias name can not contain a space
|
echo Your alias name can not contain a space
|
||||||
endlocal
|
endlocal
|
||||||
goto:eof
|
goto:eof
|
||||||
)
|
)
|
||||||
|
|
||||||
:: replace already defined alias
|
:: replace already defined alias
|
||||||
findstr /b /v /i "%_temp%=" "%ALIASES%" >> "%ALIASES%.tmp"
|
findstr /b /v /i "%alias%=" "%ALIASES%" >> "%ALIASES%.tmp"
|
||||||
echo %* >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp"
|
echo %* >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp"
|
||||||
doskey /macrofile="%ALIASES%"
|
doskey /macrofile="%ALIASES%"
|
||||||
endlocal
|
endlocal
|
||||||
|
@ -72,12 +72,12 @@
|
|||||||
<value name="StartType" type="hex" data="02"/>
|
<value name="StartType" type="hex" data="02"/>
|
||||||
<value name="CmdLine" type="string" data=""/>
|
<value name="CmdLine" type="string" data=""/>
|
||||||
<value name="StartTasksFile" type="string" data=""/>
|
<value name="StartTasksFile" type="string" data=""/>
|
||||||
<value name="StartTasksName" type="string" data="{PowerShell}"/>
|
<value name="StartTasksName" type="string" data="{cmd}"/>
|
||||||
<value name="StartFarFolders" type="hex" data="00"/>
|
<value name="StartFarFolders" type="hex" data="00"/>
|
||||||
<value name="StartFarEditors" type="hex" data="00"/>
|
<value name="StartFarEditors" type="hex" data="00"/>
|
||||||
<value name="StoreTaskbarkTasks" type="hex" data="00"/>
|
<value name="StoreTaskbarkTasks" type="hex" data="00"/>
|
||||||
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
||||||
<value name="CmdLineHistory" type="multi"><line data=";C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\"/></value>
|
<value name="CmdLineHistory" type="multi"></value>
|
||||||
<value name="SingleInstance" type="hex" data="00"/>
|
<value name="SingleInstance" type="hex" data="00"/>
|
||||||
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
||||||
<value name="Multi" type="hex" data="01"/>
|
<value name="Multi" type="hex" data="01"/>
|
||||||
@ -497,7 +497,7 @@
|
|||||||
<key name="Task2" modified="2015-05-17 22:10:27" build="150513">
|
<key name="Task2" modified="2015-05-17 22:10:27" build="150513">
|
||||||
<value name="Name" type="string" data="{PowerShell}"/>
|
<value name="Name" type="string" data="{PowerShell}"/>
|
||||||
<value name="GuiArgs" type="string" data="/icon "%CMDER_ROOT%\cmder.exe""/>
|
<value name="GuiArgs" type="string" data="/icon "%CMDER_ROOT%\cmder.exe""/>
|
||||||
<value name="Cmd1" type="string" data="PowerShell -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''" -new_console:d:"%USERPROFILE%""/>
|
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''" -new_console:d:"%USERPROFILE%""/>
|
||||||
<value name="Active" type="dword" data="00000000"/>
|
<value name="Active" type="dword" data="00000000"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="dword" data="00000001"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
@ -507,7 +507,7 @@
|
|||||||
<value name="Name" type="string" data="{PowerShell as Admin}"/>
|
<value name="Name" type="string" data="{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%\cmder.exe""/>
|
<value name="GuiArgs" type="string" data="/icon "%CMDER_ROOT%\cmder.exe""/>
|
||||||
<value name="Cmd1" type="string" data="*PowerShell -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''" -new_console:d:"%USERPROFILE%""/>
|
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''" -new_console:d:"%USERPROFILE%""/>
|
||||||
<value name="Active" type="dword" data="00000000"/>
|
<value name="Active" type="dword" data="00000000"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="dword" data="00000001"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
@ -516,8 +516,8 @@
|
|||||||
<value name="Name" type="string" data="{git sh}"/>
|
<value name="Name" type="string" data="{git sh}"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\cmder.exe""/>
|
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\cmder.exe""/>
|
||||||
<value name="Cmd1" type="string" data="cmd /k "%ConEmuDir%\..\init.bat & %CMDER_ROOT%\vendor\msysgit\bin\bash --login -i" -new_console:d:%USERPROFILE%"/>
|
<value name="Cmd1" type="string" data="cmd /k "%ConEmuDir%\..\init.bat & %CMDER_ROOT%\vendor\git-for-windows\bin\bash --login -i" -new_console:d:%USERPROFILE%"/>
|
||||||
<value name="Cmd2" type="string" data="%CMDER_ROOT%\vendor\msysgit\git-bash.bat"/>
|
<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="dword" data="00000000"/>
|
||||||
<value name="Count" type="dword" data="00000001"/>
|
<value name="Count" type="dword" data="00000001"/>
|
||||||
</key>
|
</key>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 14
|
||||||
VisualStudioVersion = 14.0.22823.1
|
VisualStudioVersion = 14.0.23107.0
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CmderLauncher", "CmderLauncher.vcxproj", "{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CmderLauncher", "CmderLauncher.vcxproj", "{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
<ProjectGuid>{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}</ProjectGuid>
|
<ProjectGuid>{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>CmderLauncher</RootNamespace>
|
<RootNamespace>CmderLauncher</RootNamespace>
|
||||||
<TargetPlatformVersion>8.1</TargetPlatformVersion>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
@ -73,6 +72,7 @@
|
|||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@ -85,7 +85,9 @@
|
|||||||
</PostBuildEvent>
|
</PostBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="src\Resource.rc" />
|
<ResourceCompile Include="src\Resource.rc">
|
||||||
|
<FileType>RC</FileType>
|
||||||
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\resource.h" />
|
<ClInclude Include="src\resource.h" />
|
||||||
|
@ -79,6 +79,19 @@ optpair GetOption()
|
|||||||
return pair;
|
return pair;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FileExists(const wchar_t * filePath)
|
||||||
|
{
|
||||||
|
HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
|
||||||
|
|
||||||
|
if (hFile != INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
CloseHandle(hFile);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void StartCmder(std::wstring path, bool is_single_mode)
|
void StartCmder(std::wstring path, bool is_single_mode)
|
||||||
{
|
{
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
@ -87,6 +100,7 @@ void StartCmder(std::wstring path, bool is_single_mode)
|
|||||||
wchar_t exeDir[MAX_PATH] = { 0 };
|
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||||
wchar_t icoPath[MAX_PATH] = { 0 };
|
wchar_t icoPath[MAX_PATH] = { 0 };
|
||||||
wchar_t cfgPath[MAX_PATH] = { 0 };
|
wchar_t cfgPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t oldCfgPath[MAX_PATH] = { 0 };
|
||||||
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
||||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||||
|
|
||||||
@ -99,16 +113,29 @@ void StartCmder(std::wstring path, bool is_single_mode)
|
|||||||
PathRemoveFileSpec(exeDir);
|
PathRemoveFileSpec(exeDir);
|
||||||
|
|
||||||
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
||||||
PathCombine(cfgPath, exeDir, L"config\\ConEmu.xml");
|
PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml");
|
||||||
|
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
||||||
|
|
||||||
|
if (FileExists(oldCfgPath) && !FileExists(cfgPath))
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (is_single_mode)
|
if (is_single_mode)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder /LoadCfgFile \"%s\"", icoPath, cfgPath);
|
swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder", icoPath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"/Icon \"%s\" /Title Cmder /LoadCfgFile \"%s\"", icoPath, cfgPath);
|
swprintf_s(args, L"/Icon \"%s\" /Title Cmder", icoPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build.ps1
|
.\build.ps1
|
||||||
|
|
||||||
Executes the default build for cmder; Conemu, clink. This is equivalent to the "minimum" style package in the releases
|
Executes the default build for Cmder; Conemu, clink. This is equivalent to the "minimum" style package in the releases
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build.ps1 -Full
|
.\build.ps1 -Full
|
||||||
|
|
||||||
Executes a full build for cmder, including git. This is equivalent to the "full" style package in the releases
|
Executes a full build for Cmder, including git. This is equivalent to the "full" style package in the releases
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build -verbose
|
.\build -verbose
|
||||||
|
|
||||||
@ -46,6 +46,9 @@ Param(
|
|||||||
# Launcher folder location
|
# Launcher folder location
|
||||||
[string]$launcher = "..\launcher",
|
[string]$launcher = "..\launcher",
|
||||||
|
|
||||||
|
# Config folder location
|
||||||
|
[string]$config = "..\config",
|
||||||
|
|
||||||
# Include git with the package build
|
# Include git with the package build
|
||||||
[switch]$Full
|
[switch]$Full
|
||||||
)
|
)
|
||||||
@ -61,8 +64,19 @@ Ensure-Exists $sourcesPath
|
|||||||
Ensure-Executable "7z"
|
Ensure-Executable "7z"
|
||||||
New-Item -Type Directory -Path (Join-Path $saveTo "/tmp/") -ErrorAction SilentlyContinue >$null
|
New-Item -Type Directory -Path (Join-Path $saveTo "/tmp/") -ErrorAction SilentlyContinue >$null
|
||||||
|
|
||||||
|
# Preserve modified (by user) ConEmu setting file
|
||||||
|
if ($config -ne "") {
|
||||||
|
$ConEmuXml = Join-Path $saveTo "conemu-maximus5\ConEmu.xml"
|
||||||
|
if (Test-Path $ConEmuXml -pathType leaf) {
|
||||||
|
$ConEmuXmlSave = Join-Path $config "ConEmu.xml"
|
||||||
|
Write-Verbose "Backup '$ConEmuXml' to '$ConEmuXmlSave'"
|
||||||
|
Copy-Item $ConEmuXml $ConEmuXmlSave
|
||||||
|
} else { $ConEmuXml = "" }
|
||||||
|
} else { $ConEmuXml = "" }
|
||||||
|
|
||||||
|
|
||||||
foreach ($s in $sources) {
|
foreach ($s in $sources) {
|
||||||
if($Full -eq $false -and $s.name -eq "msysgit"){
|
if($Full -eq $false -and $s.name -eq "git-for-windows"){
|
||||||
Continue
|
Continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,6 +97,12 @@ foreach ($s in $sources) {
|
|||||||
"$($s.version)" | Out-File "$($s.name)/.cmderver"
|
"$($s.version)" | Out-File "$($s.name)/.cmderver"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Restore user configuration
|
||||||
|
if ($ConEmuXml -ne "") {
|
||||||
|
Write-Verbose "Restore '$ConEmuXmlSave' to '$ConEmuXml'"
|
||||||
|
Copy-Item $ConEmuXmlSave $ConEmuXml
|
||||||
|
}
|
||||||
|
|
||||||
Pop-Location
|
Pop-Location
|
||||||
|
|
||||||
Push-Location -Path $launcher
|
Push-Location -Path $launcher
|
||||||
|
@ -42,11 +42,10 @@ Ensure-Executable "7z"
|
|||||||
$targets = @{
|
$targets = @{
|
||||||
"cmder.zip" = $null;
|
"cmder.zip" = $null;
|
||||||
"cmder.7z" = $null;
|
"cmder.7z" = $null;
|
||||||
"cmder_mini.zip" = "-x!`"vendor\msysgit`"";
|
"cmder_mini.zip" = "-x!`"vendor\git-for-windows`"";
|
||||||
}
|
}
|
||||||
|
|
||||||
Delete-Existing "..\Version*"
|
Delete-Existing "..\Version*"
|
||||||
Cleanup-Git
|
|
||||||
|
|
||||||
$version = Invoke-Expression "git describe --abbrev=0 --tags"
|
$version = Invoke-Expression "git describe --abbrev=0 --tags"
|
||||||
(New-Item -ItemType file "$cmderRoot\Version $version") | Out-Null
|
(New-Item -ItemType file "$cmderRoot\Version $version") | Out-Null
|
||||||
|
@ -61,11 +61,6 @@ function Digest-MD5 ($path) {
|
|||||||
return Invoke-Expression "md5sum $path"
|
return Invoke-Expression "md5sum $path"
|
||||||
}
|
}
|
||||||
|
|
||||||
function Cleanup-Git () {
|
|
||||||
$gitdir = '/vendor/msysgit/libexec/git-core/'
|
|
||||||
Get-Childitem $gitdir -Exclude git.exe | Where-Object{!($_.PSIsContainer)} | Foreach-Object { Remove-Item $_.FullName }
|
|
||||||
}
|
|
||||||
|
|
||||||
function Register-Cmder(){
|
function Register-Cmder(){
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
Param
|
Param
|
||||||
|
24
vendor/init.bat
vendored
24
vendor/init.bat
vendored
@ -2,6 +2,9 @@
|
|||||||
:: Sets some nice defaults
|
:: Sets some nice defaults
|
||||||
:: Created as part of cmder project
|
:: Created as part of cmder project
|
||||||
|
|
||||||
|
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
|
:: !!! Use "%CMDER_ROOT%\config\user-startup.cmd" to add your own startup commands
|
||||||
|
|
||||||
:: Find root dir
|
:: Find root dir
|
||||||
@if not defined CMDER_ROOT (
|
@if not defined CMDER_ROOT (
|
||||||
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do @set CMDER_ROOT=%%~fi
|
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do @set CMDER_ROOT=%%~fi
|
||||||
@ -21,7 +24,7 @@
|
|||||||
:: Run clink
|
:: Run clink
|
||||||
@"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config"
|
@"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config"
|
||||||
|
|
||||||
:: Prepare for msysgit
|
:: Prepare for git-for-windows
|
||||||
|
|
||||||
:: I do not even know, copypasted from their .bat
|
:: I do not even know, copypasted from their .bat
|
||||||
@set PLINK_PROTOCOL=ssh
|
@set PLINK_PROTOCOL=ssh
|
||||||
@ -33,12 +36,12 @@
|
|||||||
) else if exist "%ProgramFiles(x86)%\Git" (
|
) else if exist "%ProgramFiles(x86)%\Git" (
|
||||||
set "GIT_INSTALL_ROOT=%ProgramFiles(x86)%\Git"
|
set "GIT_INSTALL_ROOT=%ProgramFiles(x86)%\Git"
|
||||||
) else if exist "%CMDER_ROOT%\vendor" (
|
) else if exist "%CMDER_ROOT%\vendor" (
|
||||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\msysgit"
|
set "GIT_INSTALL_ROOT=%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 (
|
||||||
set "PATH=%GIT_INSTALL_ROOT%\bin;%GIT_INSTALL_ROOT%\share\vim\vim74;%PATH%"
|
set "PATH=%GIT_INSTALL_ROOT%\bin;%GIT_INSTALL_ROOT%\usr\bin;%GIT_INSTALL_ROOT%\share\vim\vim74;%PATH%"
|
||||||
:: 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"
|
||||||
)
|
)
|
||||||
@ -60,4 +63,17 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: @call "%CMDER_ROOT%/bin/agent.cmd"
|
@if exist "%CMDER_ROOT%\config\user-startup.cmd" (
|
||||||
|
@rem create this file and place your own command in there
|
||||||
|
call "%CMDER_ROOT%\config\user-startup.cmd"
|
||||||
|
) else (
|
||||||
|
@echo Creating user startup file: "%CMDER_ROOT%\config\user-startup.cmd"
|
||||||
|
(
|
||||||
|
@echo :: use this file to run your own startup commands
|
||||||
|
@echo :: use @ in front of the command to prevent printing the command
|
||||||
|
@echo.
|
||||||
|
@echo :: @call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd
|
||||||
|
@echo :: @set PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%
|
||||||
|
@echo.
|
||||||
|
) > "%CMDER_ROOT%\config\user-startup.cmd"
|
||||||
|
)
|
||||||
|
17
vendor/profile.ps1
vendored
17
vendor/profile.ps1
vendored
@ -1,4 +1,9 @@
|
|||||||
# Add Cmder modules directory to the autoload path.
|
# Compatibility with PS major versions <= 2
|
||||||
|
if(!$PSScriptRoot) {
|
||||||
|
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add Cmder modules directory to the autoload path.
|
||||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||||
|
|
||||||
if( -not $env:PSModulePath.Contains($CmderModulePath) ){
|
if( -not $env:PSModulePath.Contains($CmderModulePath) ){
|
||||||
@ -6,7 +11,13 @@ if( -not $env:PSModulePath.Contains($CmderModulePath) ){
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
# Check if git is on PATH, i.e. Git already installed on system
|
||||||
Get-command -Name "git" -ErrorAction Stop >$null
|
Get-command -Name "git" -ErrorAction Stop >$null
|
||||||
|
} catch {
|
||||||
|
$env:Path += ";$env:CMDER_ROOT\vendor\git-for-windows\bin"
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
Import-Module -Name "posh-git" -ErrorAction Stop >$null
|
Import-Module -Name "posh-git" -ErrorAction Stop >$null
|
||||||
$gitStatus = $true
|
$gitStatus = $true
|
||||||
} catch {
|
} catch {
|
||||||
@ -40,7 +51,6 @@ function global:prompt {
|
|||||||
|
|
||||||
# Load special features come from posh-git
|
# Load special features come from posh-git
|
||||||
if ($gitStatus) {
|
if ($gitStatus) {
|
||||||
Enable-GitColors
|
|
||||||
Start-SshAgent -Quiet
|
Start-SshAgent -Quiet
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,3 +60,6 @@ if (Test-Path Env:\CMDER_START) {
|
|||||||
} elseif ($Env:CMDER_ROOT -and $Env:CMDER_ROOT.StartsWith($pwd)) {
|
} elseif ($Env:CMDER_ROOT -and $Env:CMDER_ROOT.StartsWith($pwd)) {
|
||||||
Set-Location -Path $Env:USERPROFILE
|
Set-Location -Path $Env:USERPROFILE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Enhance Path
|
||||||
|
$env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT"
|
18
vendor/sources.json
vendored
18
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "msysgit",
|
"name": "git-for-windows",
|
||||||
"version": "1.9.5-preview20150319",
|
"version": "v2.6.1.windows.1",
|
||||||
"url": "https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/PortableGit-1.9.5-preview20150319.7z"
|
"url": "https://github.com/git-for-windows/git/releases/download/v2.6.1.windows.1/PortableGit-2.6.1-32-bit.7z.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink",
|
"name": "clink",
|
||||||
"version": "0.4.4",
|
"version": "0.4.5",
|
||||||
"url": "https://github.com/mridgers/clink/releases/download/0.4.4/clink_0.4.4.zip"
|
"url": "https://github.com/mridgers/clink/releases/download/0.4.5/clink_0.4.5.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "conemu-maximus5",
|
"name": "conemu-maximus5",
|
||||||
"version": "150513",
|
"version": "150913",
|
||||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v15.05.13/ConEmuPack.150513.7z"
|
"url": "https://github.com/Maximus5/ConEmu/releases/download/v15.09.13/ConEmuPack.150913.7z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
"version": "0.1.0",
|
"version": "0.2.0",
|
||||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.1.0.zip"
|
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.2.0.zip"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user