Skip to content

Commit

Permalink
Merge pull request #673 from DoCode/development
Browse files Browse the repository at this point in the history
Enable the '/single' switch (#577)
  • Loading branch information
MartiUK committed Nov 20, 2015
2 parents 7e49125 + a57c11e commit 6d215f5
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 10 deletions.
25 changes: 19 additions & 6 deletions launcher/src/CmderLauncher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#define SHELL_MENU_REGISTRY_PATH_BACKGROUND L"Directory\\Background\\shell\\Cmder"
#define SHELL_MENU_REGISTRY_PATH_LISTITEM L"Directory\\shell\\Cmder"

#define streqi(a, b) (_wcsicmp((a), (b)) == 0)
#define streqi(a, b) (_wcsicmp((a), (b)) == 0)

#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
Expand All @@ -29,7 +29,7 @@
void ShowErrorAndExit(DWORD ec, const wchar_t * func, int line)
{
wchar_t * buffer;
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, ec, 0, (LPWSTR) &buffer, 0, NULL) == 0)
{
buffer = L"Unknown error. FormatMessage failed.";
Expand Down Expand Up @@ -129,17 +129,30 @@ void StartCmder(std::wstring path, bool is_single_mode)
}
}

if (is_single_mode)
if (is_single_mode)
{
swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder", icoPath);
}
else
else
{
swprintf_s(args, L"/Icon \"%s\" /Title Cmder", icoPath);
}

SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
SetEnvironmentVariable(L"CMDER_START", path.c_str());
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
//SetEnvironmentVariable(L"CMDER_START", path.c_str());

// Send out the Settings Changed message - Once using ANSII...
//SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, NULL);

// ...and once using UniCode (because Windows 8 likes it that way).
//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 };
si.cb = sizeof(STARTUPINFO);
Expand Down
23 changes: 19 additions & 4 deletions vendor/profile.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,25 @@ if ($gitStatus) {
}

# Move to the wanted location
if (Test-Path Env:\CMDER_START) {
Set-Location -Path $Env:CMDER_START
} elseif ($Env:CMDER_ROOT -and $Env:CMDER_ROOT.StartsWith($pwd)) {
Set-Location -Path $Env:USERPROFILE
$cmderStartKey = 'HKCU:\Software\cmder'
$cmderStartSubKey = 'CMDER_START'

$cmderStart = (Get-Item -Path $cmderStartKey).GetValue($cmderStartSubKey)
if ( $cmderStart ) {
$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
Expand Down

0 comments on commit 6d215f5

Please sign in to comment.