diff --git a/PowerEditor/src/NppCommands.cpp b/PowerEditor/src/NppCommands.cpp index d43ed45c..f42bef57 100644 --- a/PowerEditor/src/NppCommands.cpp +++ b/PowerEditor/src/NppCommands.cpp @@ -89,7 +89,7 @@ void Notepad_plus::command(int id) case IDM_FILE_OPEN_CMD: { - Command cmd(TEXT("cmd")); + Command cmd(NppParameters::getInstance().getNppGUI()._commandLineInterpreter.c_str()); cmd.run(_pPublicInterface->getHSelf(), TEXT("$(CURRENT_DIRECTORY)")); } break; diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index d7bed691..1bbbd30e 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -2076,7 +2076,6 @@ bool NppParameters::getSessionFromXmlTree(TiXmlDocument *pSessionDoc, Session *p (childNode->ToElement())->Attribute(TEXT("endPos"), &position._endPos); (childNode->ToElement())->Attribute(TEXT("selMode"), &position._selMode); (childNode->ToElement())->Attribute(TEXT("scrollWidth"), &position._scrollWidth); - MapPosition mapPosition; int32_t mapPosVal; const TCHAR *mapPosStr = (childNode->ToElement())->Attribute(TEXT("mapFirstVisibleDisplayLine"), &mapPosVal); @@ -5096,7 +5095,16 @@ void NppParameters::feedGUIParameters(TiXmlNode *node) const TCHAR * optDocPeekOnMap = element->Attribute(TEXT("docPeekOnMap")); if (optDocPeekOnMap) _nppGUI._isDocPeekOnMap = (lstrcmp(optDocPeekOnMap, TEXT("yes")) == 0); - + } + else if (!lstrcmp(nm, TEXT("commandLineInterpreter"))) + { + TiXmlNode *node = childNode->FirstChild(); + if (node) + { + const TCHAR *cli = node->Value(); + if (cli && cli[0]) + _nppGUI._commandLineInterpreter.assign(cli); + } } } } @@ -5861,6 +5869,14 @@ void NppParameters::createXmlTreeFromGUIParams() GUIConfigElement->SetAttribute(TEXT("onAnotherView"), _nppGUI._smartHiliteOnAnotherView ? TEXT("yes") : TEXT("no")); } + // powershell + if (_nppGUI._commandLineInterpreter.compare(TEXT("cmd"))) + { + TiXmlElement *GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(TEXT("GUIConfig"))))->ToElement(); + GUIConfigElement->SetAttribute(TEXT("name"), TEXT("commandLineInterpreter")); + GUIConfigElement->InsertEndChild(TiXmlText(_nppGUI._commandLineInterpreter.c_str())); + } + // writeScintillaParams(); diff --git a/PowerEditor/src/Parameters.h b/PowerEditor/src/Parameters.h index 715be818..f37edc86 100644 --- a/PowerEditor/src/Parameters.h +++ b/PowerEditor/src/Parameters.h @@ -857,6 +857,8 @@ struct NppGUI final generic_string _definedSessionExt; generic_string _definedWorkspaceExt; + generic_string _commandLineInterpreter = TEXT("cmd"); + struct AutoUpdateOptions { bool _doAutoUpdate = true; diff --git a/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp b/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp index 5ef8c3ef..ddee5a31 100644 --- a/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp +++ b/PowerEditor/src/WinControls/FileBrowser/fileBrowser.cpp @@ -779,9 +779,7 @@ void FileBrowser::popupMenuCmd(int cmdID) generic_string path = getNodePath(selectedNode); if (::PathFileExists(path.c_str())) { - TCHAR cmdStr[1024]; - wsprintf(cmdStr, TEXT("cmd")); - Command cmd(cmdStr); + Command cmd(NppParameters::getInstance().getNppGUI()._commandLineInterpreter.c_str()); cmd.run(nullptr, path.c_str()); } }