@@ -71,7 +71,7 @@ bool FileExists(const wchar_t * filePath)
7171 return false ;
7272}
7373
74- void StartCmder (std::wstring path = L" " , bool is_single_mode = false , std::wstring taskName = L" " , std::wstring cfgRoot = L" " , bool use_user_cfg = true )
74+ void StartCmder (std::wstring path = L" " , bool is_single_mode = false , std::wstring taskName = L" " , std::wstring cfgRoot = L" " , bool use_user_cfg = true , std::wstring conemu_args = L" " )
7575{
7676#if USE_TASKBAR_API
7777 wchar_t appId[MAX_PATH] = { 0 };
@@ -98,6 +98,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
9898
9999 std::wstring cmderStart = path;
100100 std::wstring cmderTask = taskName;
101+ std::wstring cmderConEmuArgs = conemu_args;
101102
102103 std::copy (cfgRoot.begin (), cfgRoot.end (), userConfigDirPath);
103104 userConfigDirPath[cfgRoot.length ()] = 0 ;
@@ -391,6 +392,11 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
391392 swprintf_s (args, L" %s -loadcfgfile \" %s\" " , args, userConEmuCfgPath);
392393 }
393394
395+ if (!streqi (cmderConEmuArgs.c_str (), L" " ))
396+ {
397+ swprintf_s (args, L" %s %s" , args, cmderConEmuArgs.c_str ());
398+ }
399+
394400 SetEnvironmentVariable (L" CMDER_ROOT" , exeDir);
395401 if (wcscmp (userConfigDirPath, configDirPath) != 0 )
396402 {
@@ -527,6 +533,7 @@ struct cmderOptions
527533 std::wstring cmderStart = L" " ;
528534 std::wstring cmderTask = L" " ;
529535 std::wstring cmderRegScope = L" USER" ;
536+ std::wstring cmderConEmuArgs = L" " ;
530537 bool cmderSingle = false ;
531538 bool cmderUserCfg = true ;
532539 bool registerApp = false ;
@@ -620,6 +627,12 @@ cmderOptions GetOption()
620627 }
621628 }
622629 }
630+ /* Used for passing arguments to conemu prog */
631+ else if (_wcsicmp (L" /x" , szArgList[i]) == 0 )
632+ {
633+ cmderOptions.cmderConEmuArgs = szArgList[i + 1 ];
634+ i++;
635+ }
623636 else if (cmderOptions.cmderStart == L" " )
624637 {
625638 int len = wcslen (szArgList[i]);
@@ -635,13 +648,13 @@ cmderOptions GetOption()
635648 }
636649 else
637650 {
638- MessageBox (NULL , L" Unrecognized parameter.\n\n Valid 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\n /m\n\n or\n\n /register [USER | ALL]\n\n or\n\n /unregister [USER | ALL]\n " , MB_TITLE, MB_OK);
651+ MessageBox (NULL , L" Unrecognized parameter.\n\n Valid 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\n /m\n\n /x [ConEmu extra arguments] \n\ n or\n\n /register [USER | ALL]\n\n or\n\n /unregister [USER | ALL]\n " , MB_TITLE, MB_OK);
639652 cmderOptions.error = true ;
640653 }
641654 }
642655 else
643656 {
644- MessageBox (NULL , L" Unrecognized parameter.\n\n Valid 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\n /m\n\n or\n\n /register [USER | ALL]\n\n or\n\n /unregister [USER | ALL]\n " , MB_TITLE, MB_OK);
657+ MessageBox (NULL , L" Unrecognized parameter.\n\n Valid 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\n /m\n\n /x [ConEmu extra arguments] \n\ n or\n\n /register [USER | ALL]\n\n or\n\n /unregister [USER | ALL]\n " , MB_TITLE, MB_OK);
645658 cmderOptions.error = true ;
646659 }
647660 }
@@ -683,7 +696,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
683696 }
684697 else
685698 {
686- StartCmder (cmderOptions.cmderStart , cmderOptions.cmderSingle , cmderOptions.cmderTask , cmderOptions.cmderCfgRoot , cmderOptions.cmderUserCfg );
699+ StartCmder (cmderOptions.cmderStart , cmderOptions.cmderSingle , cmderOptions.cmderTask , cmderOptions.cmderCfgRoot , cmderOptions.cmderUserCfg , cmderOptions. cmderConEmuArgs );
687700 }
688701
689702 return 0 ;
0 commit comments