Add file monitoring command line argument [-monitor]

Fix #10562, close #11539
This commit is contained in:
Ibrahim Kosgi 2022-04-15 23:51:58 -04:00 committed by Don Ho
parent c32da953cf
commit 1dffb05e0a
6 changed files with 23 additions and 5 deletions

View File

@ -6177,6 +6177,7 @@ std::vector<generic_string> Notepad_plus::loadCommandlineParams(const TCHAR * co
bool recursive = pCmdParams->_isRecursive;
bool readOnly = pCmdParams->_isReadOnly;
bool openFoldersAsWorkspace = pCmdParams->_openFoldersAsWorkspace;
bool monitorFiles = pCmdParams->_monitorFiles;
if (openFoldersAsWorkspace)
{
@ -6238,6 +6239,12 @@ std::vector<generic_string> Notepad_plus::loadCommandlineParams(const TCHAR * co
switchEditViewTo(iView); //restore view
}
if (monitorFiles)
{
monitoringStartOrStopAndUpdateUI(pBuf, true);
createMonitoringThread(pBuf);
}
}
if (lastOpened != BUFFER_INVALID)
{
@ -8109,6 +8116,13 @@ void Notepad_plus::monitoringStartOrStopAndUpdateUI(Buffer* pBuf, bool isStartin
}
}
void Notepad_plus::createMonitoringThread(Buffer* pBuf)
{
MonitorInfo *monitorInfo = new Notepad_plus::MonitorInfo(pBuf, _pPublicInterface->getHSelf());
HANDLE hThread = ::CreateThread(NULL, 0, monitorFileOnChange, (void *)monitorInfo, 0, NULL); // will be deallocated while quitting thread
::CloseHandle(hThread);
}
// Fill names into the shortcut list.
// Each command shortcut has two names:
// - The menu name, to be displayed in the menu

View File

@ -636,5 +636,6 @@ private:
};
void monitoringStartOrStopAndUpdateUI(Buffer* pBuf, bool isStarting);
void createMonitoringThread(Buffer* pBuf);
void updateCommandShortcuts();
};

View File

@ -20,7 +20,7 @@ const int splitterSize = 8;
const TCHAR COMMAND_ARG_HELP[] = TEXT("Usage :\r\
\r\
notepad++ [--help] [-multiInst] [-noPlugin] [-lLanguage] [-udl=\"My UDL Name\"] [-LlangCode] [-nLineNumber] [-cColumnNumber] [-pPosition] [-xLeftPos] [-yTopPos] [-nosession] [-notabbar] [-ro] [-systemtray] [-loadingTime] [-alwaysOnTop] [-openSession] [-r] [-qn=\"Easter egg name\" | -qt=\"a text to display.\" | -qf=\"D:\\my quote.txt\"] [-qSpeed1|2|3] [-quickPrint] [-settingsDir=\"d:\\your settings dir\\\"] [-openFoldersAsWorkspace] [-titleAdd=\"additional title bar text\"][filePath]\r\
notepad++ [--help] [-multiInst] [-noPlugin] [-lLanguage] [-udl=\"My UDL Name\"] [-LlangCode] [-nLineNumber] [-cColumnNumber] [-pPosition] [-xLeftPos] [-yTopPos] [-monitor] [-nosession] [-notabbar] [-ro] [-systemtray] [-loadingTime] [-alwaysOnTop] [-openSession] [-r] [-qn=\"Easter egg name\" | -qt=\"a text to display.\" | -qf=\"D:\\my quote.txt\"] [-qSpeed1|2|3] [-quickPrint] [-settingsDir=\"d:\\your settings dir\\\"] [-openFoldersAsWorkspace] [-titleAdd=\"additional title bar text\"][filePath]\r\
\r\
--help : This help message\r\
-multiInst : Launch another Notepad++ instance\r\
@ -33,6 +33,7 @@ notepad++ [--help] [-multiInst] [-noPlugin] [-lLanguage] [-udl=\"My UDL Name\"]
-p : Scroll to indicated position on filePath\r\
-x : Move Notepad++ to indicated left side position on the screen\r\
-y : Move Notepad++ to indicated top position on the screen\r\
-monitor: Open file with file monitoring enabled\r\
-nosession : Launch Notepad++ without previous session\r\
-notabbar : Launch Notepad++ without tabbar\r\
-ro : Make the filePath read only\r\

View File

@ -2517,10 +2517,7 @@ void Notepad_plus::command(int id)
{
// Monitoring firstly for making monitoring icon
monitoringStartOrStopAndUpdateUI(curBuf, true);
MonitorInfo *monitorInfo = new MonitorInfo(curBuf, _pPublicInterface->getHSelf());
HANDLE hThread = ::CreateThread(NULL, 0, monitorFileOnChange, (void *)monitorInfo, 0, NULL); // will be deallocated while quitting thread
::CloseHandle(hThread);
createMonitoringThread(curBuf);
}
}
else

View File

@ -242,6 +242,7 @@ struct CmdLineParams
bool _isSessionFile = false;
bool _isRecursive = false;
bool _openFoldersAsWorkspace = false;
bool _monitorFiles = false;
LangType _langType = L_EXTERNAL;
generic_string _localizationPath;
@ -271,6 +272,7 @@ struct CmdLineParamsDTO
bool _isSessionFile = false;
bool _isRecursive = false;
bool _openFoldersAsWorkspace = false;
bool _monitorFiles = false;
intptr_t _line2go = 0;
intptr_t _column2go = 0;
@ -287,6 +289,7 @@ struct CmdLineParamsDTO
dto._isSessionFile = params._isSessionFile;
dto._isRecursive = params._isRecursive;
dto._openFoldersAsWorkspace = params._openFoldersAsWorkspace;
dto._monitorFiles = params._monitorFiles;
dto._line2go = params._line2go;
dto._column2go = params._column2go;

View File

@ -312,6 +312,7 @@ const TCHAR FLAG_OPEN_FOLDERS_AS_WORKSPACE[] = TEXT("-openFoldersAsWorkspace");
const TCHAR FLAG_SETTINGS_DIR[] = TEXT("-settingsDir=");
const TCHAR FLAG_TITLEBAR_ADD[] = TEXT("-titleAdd=");
const TCHAR FLAG_APPLY_UDL[] = TEXT("-udl=");
const TCHAR FLAG_MONITOR_FILES[] = TEXT("-monitor");
void doException(Notepad_plus_Window & notepad_plus_plus)
{
@ -443,6 +444,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int)
cmdLineParams._isSessionFile = isInList(FLAG_OPENSESSIONFILE, params);
cmdLineParams._isRecursive = isInList(FLAG_RECURSIVE, params);
cmdLineParams._openFoldersAsWorkspace = isInList(FLAG_OPEN_FOLDERS_AS_WORKSPACE, params);
cmdLineParams._monitorFiles = isInList(FLAG_MONITOR_FILES, params);
cmdLineParams._langType = getLangTypeFromParam(params);
cmdLineParams._localizationPath = getLocalizationPathFromParam(params);