Merge pull request #798 from JanSchulz/cmder_here

Make "cmder here" work again
This commit is contained in:
Martin Kemp 2016-01-15 11:44:39 +00:00
commit 5b7c008202
3 changed files with 14 additions and 37 deletions

View File

@ -63,10 +63,12 @@ optpair GetOption()
if (argc == 1) if (argc == 1)
{ {
// no commandline argument...
pair = optpair(L"/START", L""); pair = optpair(L"/START", L"");
} }
else if (argc == 2 && argv[1][0] != L'/') else if (argc == 2 && argv[1][0] != L'/')
{ {
// only a single argument: this should be a path...
pair = optpair(L"/START", argv[1]); pair = optpair(L"/START", argv[1]);
} }
else else
@ -152,7 +154,10 @@ void StartCmder(std::wstring path, bool is_single_mode)
} }
SetEnvironmentVariable(L"CMDER_ROOT", exeDir); SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
//SetEnvironmentVariable(L"CMDER_START", path.c_str()); if (!streqi(path.c_str(), L""))
{
SetEnvironmentVariable(L"CMDER_START", path.c_str());
}
// Send out the Settings Changed message - Once using ANSII... // Send out the Settings Changed message - Once using ANSII...
//SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, NULL); //SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, NULL);
@ -160,13 +165,6 @@ void StartCmder(std::wstring path, bool is_single_mode)
// ...and once using UniCode (because Windows 8 likes it that way). // ...and once using UniCode (because Windows 8 likes it that way).
//SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) L"Environment", SMTO_ABORTIFHUNG, 5000, NULL); //SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) L"Environment", SMTO_ABORTIFHUNG, 5000, NULL);
HKEY cmderStartRegistryKey;
if (RegCreateKeyEx(HKEY_CURRENT_USER, L"Software\\cmder", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &cmderStartRegistryKey, 0) == ERROR_SUCCESS)
{
RegSetValueEx(cmderStartRegistryKey, L"CMDER_START", 0, REG_SZ, (const BYTE*) path.c_str(), path.size() * 2);
RegCloseKey(cmderStartRegistryKey);
}
STARTUPINFO si = { 0 }; STARTUPINFO si = { 0 };
si.cb = sizeof(STARTUPINFO); si.cb = sizeof(STARTUPINFO);
#if USE_TASKBAR_API #if USE_TASKBAR_API

8
vendor/init.bat vendored
View File

@ -58,7 +58,7 @@
@if not exist "%CMDER_ROOT%\config\aliases" ( @if not exist "%CMDER_ROOT%\config\aliases" (
echo Creating intial aliases in %CMDER_ROOT%\config\aliases echo Creating intial aliases in %CMDER_ROOT%\config\aliases
copy "%CMDER_ROOT%\vendor\aliases.example" "%CMDER_ROOT%\config\aliases" > null copy "%CMDER_ROOT%\vendor\aliases.example" "%CMDER_ROOT%\config\aliases" > null
) )
:: Add aliases :: Add aliases
@doskey /macrofile="%CMDER_ROOT%\config\aliases" @doskey /macrofile="%CMDER_ROOT%\config\aliases"
@ -76,12 +76,10 @@
:: Set home path :: Set home path
@if not defined HOME set HOME=%USERPROFILE% @if not defined HOME set HOME=%USERPROFILE%
:: This is either a env variable set by the user or the result of
:: cmder.exe setting this variable due to a commandline argument or a "cmder here"
@if defined CMDER_START ( @if defined CMDER_START (
@cd /d "%CMDER_START%" @cd /d "%CMDER_START%"
) else (
@if "%CD%\" == "%CMDER_ROOT%\" (
@cd /d "%HOME%"
)
) )
@if exist "%CMDER_ROOT%\config\user-profile.cmd" ( @if exist "%CMDER_ROOT%\config\user-profile.cmd" (

29
vendor/profile.ps1 vendored
View File

@ -32,7 +32,7 @@ try {
# $env:Path += $(";" + $env:CMDER_ROOT + "\vendor\git-for-windows\usr\bin") # $env:Path += $(";" + $env:CMDER_ROOT + "\vendor\git-for-windows\usr\bin")
# set-alias -name "vi" -value "vim" # set-alias -name "vi" -value "vim"
# # I think the below is safer. # # I think the below is safer.
new-alias -name "vim" -value $($ENV:CMDER_ROOT + "\vendor\git-for-windows\usr\bin\vim.exe") new-alias -name "vim" -value $($ENV:CMDER_ROOT + "\vendor\git-for-windows\usr\bin\vim.exe")
new-alias -name "vi" -value vim new-alias -name "vi" -value vim
} }
@ -82,34 +82,15 @@ if ($gitStatus) {
} }
# Move to the wanted location # Move to the wanted location
$cmderStartKey = 'HKCU:\Software\cmder' # This is either a env variable set by the user or the result of
$cmderStartSubKey = 'CMDER_START' # cmder.exe setting this variable due to a commandline argument or a "cmder here"
if ( $ENV:CMDER_START ) {
$cmderStart = (Get-Item -Path $cmderStartKey -ErrorAction SilentlyContinue) Set-Location -Path "$ENV:CMDER_START"
if ( $cmderStart ) {
$cmderStart = $cmderStart.GetValue($cmderStartSubKey)
$cmderStart = ($cmderStart).Trim('"').Trim("'")
if ( $cmderStart.EndsWith(':') ) {
$cmderStart += '\'
}
if ( ( Get-Item $cmderStart -Force ) -is [System.IO.FileInfo] ) {
$cmderStart = Split-Path $cmderStart
}
Set-Location -Path "${cmderStart}"
Set-ItemProperty -Path $cmderStartKey -Name $cmderStartSubKey -Value $null
} else {
Set-Location -Path "${env:HOME}"
} }
# Enhance Path # Enhance Path
$env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT" $env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT"
$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.