mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-23 13:54:54 +02:00
Enhance "File status Auto-Detection" to avoid switching editing tab off behaviour
Fix a long waiting issue about file auto change detection, by adding a new option to avoid an annoying behaviour: If file content is changed outside of Notepad++, while focus back to Notepad++, the current editing tab will be switched off, the changed file will be switched to and user will be asked to reload the file in question. The new option remains the editing tab. User will be asked to reload it only if the changed file is switched in. Fix #1087, Fix #3349, Fix #3333, Fix #3528, Fix #3138, Fix #3934, Fix #3160, Fix #1822, Fix #745, Fix #3599, Fix #4329, Fix #3971, Fix #4592, Fix #1116, Fix #2082 Close #4180, Close #5386, Close #4189, Close #1995, Close #2867, Close #3306, Close #2776, Close #2724, Close #2405, Close #4072, Close #4747 Close #5389
This commit is contained in:
parent
54350715e4
commit
ba60fbdd71
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<NotepadPlus>
|
<NotepadPlus>
|
||||||
<Native-Langue name="English" filename="english.xml" version="7.6.3">
|
<Native-Langue name="English" filename="english.xml" version="7.6.4">
|
||||||
<Menu>
|
<Menu>
|
||||||
<Main>
|
<Main>
|
||||||
<!-- Main Menu Entries -->
|
<!-- Main Menu Entries -->
|
||||||
@ -907,10 +907,11 @@
|
|||||||
</SearchEngine>
|
</SearchEngine>
|
||||||
|
|
||||||
<MISC title="MISC.">
|
<MISC title="MISC.">
|
||||||
<Item id="6307" name="Enable"/>
|
<Item id="6307" name="Enable for all tabs"/>
|
||||||
<Item id="6308" name="Minimize to system tray"/>
|
<Item id="6308" name="Minimize to system tray"/>
|
||||||
<Item id="6312" name="File Status Auto-Detection"/>
|
<Item id="6312" name="File Status Auto-Detection"/>
|
||||||
<Item id="6313" name="Update silently"/>
|
<Item id="6313" name="Update silently"/>
|
||||||
|
<Item id="6314" name="Enable only for current tab"/>
|
||||||
<Item id="6318" name="Clickable Link Settings"/>
|
<Item id="6318" name="Clickable Link Settings"/>
|
||||||
<Item id="6325" name="Scroll to the last line after update"/>
|
<Item id="6325" name="Scroll to the last line after update"/>
|
||||||
<Item id="6319" name="Enable"/>
|
<Item id="6319" name="Enable"/>
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
** created By:- Rathin A. Dholakia **
|
** created By:- Rathin A. Dholakia **
|
||||||
Email- rathin2j@gmail.com
|
Email- rathin2j@gmail.com
|
||||||
** Last Updated on 18/02/2019 by Rajendra Singh (singh.rajen15@gmail.com) **
|
** Last Updated on 06/03/2019 by Rajendra Singh (singh.rajen15@gmail.com) **
|
||||||
-->
|
-->
|
||||||
<NotepadPlus>
|
<NotepadPlus>
|
||||||
<Native-Langue name="हिन्दी" filename="hindi.xml" version="7.6.3">
|
<Native-Langue name="हिन्दी" filename="hindi.xml" version="7.6.4">
|
||||||
<Menu>
|
<Menu>
|
||||||
<Main>
|
<Main>
|
||||||
<!-- Main Menu Entries -->
|
<!-- Main Menu Entries -->
|
||||||
@ -914,10 +914,11 @@
|
|||||||
</SearchEngine>
|
</SearchEngine>
|
||||||
|
|
||||||
<MISC title="विविध (MISC.)">
|
<MISC title="विविध (MISC.)">
|
||||||
<Item id="6307" name="सक्रिय"/>
|
<Item id="6307" name="सभी टैब के लिए सक्रिय करें"/>
|
||||||
<Item id="6308" name="सिस्टम ट्रे में छोटा करें"/>
|
<Item id="6308" name="सिस्टम ट्रे में छोटा करें"/>
|
||||||
<Item id="6312" name="फाईल स्टेटस की स्वचालित जांच"/>
|
<Item id="6312" name="फाईल स्टेटस की स्वचालित जांच"/>
|
||||||
<Item id="6313" name="साइलेंटली अपडेट करें"/>
|
<Item id="6313" name="साइलेंटली अपडेट करें"/>
|
||||||
|
<Item id="6314" name="केवल वर्तमान टैब के लिए सक्रिय करें"/>
|
||||||
<Item id="6318" name="क्लिक योग्य लिंक की सेटिंग"/>
|
<Item id="6318" name="क्लिक योग्य लिंक की सेटिंग"/>
|
||||||
<Item id="6325" name="अपडेट के बाद आख़री लाईन पे स्क्रॉल करें"/>
|
<Item id="6325" name="अपडेट के बाद आख़री लाईन पे स्क्रॉल करें"/>
|
||||||
<Item id="6319" name="सक्रिय"/>
|
<Item id="6319" name="सक्रिय"/>
|
||||||
@ -1166,8 +1167,8 @@
|
|||||||
<find-status-replaceinopenedfiles-nb-replaced value="खुली फाइलों में बदलें: $INT_REPLACE$ मिलानों को बदल दिया गया है।"/>
|
<find-status-replaceinopenedfiles-nb-replaced value="खुली फाइलों में बदलें: $INT_REPLACE$ मिलानों को बदल दिया गया है।"/>
|
||||||
<find-status-mark-re-malformed value="निशान: ढूंढने के लिए रेगुलर एक्सप्रेशन गलत है।"/>
|
<find-status-mark-re-malformed value="निशान: ढूंढने के लिए रेगुलर एक्सप्रेशन गलत है।"/>
|
||||||
<find-status-invalid-re value="खोज: अवैध रेगुलर एक्सप्रेशन"/>
|
<find-status-invalid-re value="खोज: अवैध रेगुलर एक्सप्रेशन"/>
|
||||||
<find-status-mark-1-match value="1 मिलान"/>
|
<find-status-mark-1-match value="निशान: 1 मिलान"/>
|
||||||
<find-status-mark-nb-matches value="$INT_REPLACE$ मिलान"/>
|
<find-status-mark-nb-matches value="निशान: $INT_REPLACE$ मिलान"/>
|
||||||
<find-status-count-re-malformed value="गणना: ढूंढने के लिए रेगुलर एक्सप्रेशन गलत है।"/>
|
<find-status-count-re-malformed value="गणना: ढूंढने के लिए रेगुलर एक्सप्रेशन गलत है।"/>
|
||||||
<find-status-count-1-match value="गणना: 1 मिलान"/>
|
<find-status-count-1-match value="गणना: 1 मिलान"/>
|
||||||
<find-status-count-nb-matches value="गणना: $INT_REPLACE$ मिलान"/>
|
<find-status-count-nb-matches value="गणना: $INT_REPLACE$ मिलान"/>
|
||||||
|
@ -3328,10 +3328,10 @@ void Notepad_plus::dropFiles(HDROP hdrop)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Notepad_plus::checkModifiedDocument()
|
void Notepad_plus::checkModifiedDocument(bool bCheckOnlyCurrentBuffer)
|
||||||
{
|
{
|
||||||
//this will trigger buffer updates. If the status changes, Notepad++ will be informed and can do its magic
|
//this will trigger buffer updates. If the status changes, Notepad++ will be informed and can do its magic
|
||||||
MainFileManager->checkFilesystemChanges();
|
MainFileManager->checkFilesystemChanges(bCheckOnlyCurrentBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Notepad_plus::getMainClientRect(RECT &rc) const
|
void Notepad_plus::getMainClientRect(RECT &rc) const
|
||||||
@ -3783,10 +3783,18 @@ bool Notepad_plus::activateBuffer(BufferID id, int whichOne)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isCurrBuffDetection = (NppParameters::getInstance()->getNppGUI()._fileAutoDetection & cdEnabledCurrent) ? true : false;
|
||||||
|
|
||||||
if (reload)
|
if (reload)
|
||||||
{
|
{
|
||||||
performPostReload(whichOne);
|
performPostReload(whichOne);
|
||||||
}
|
}
|
||||||
|
else if(isCurrBuffDetection)
|
||||||
|
{
|
||||||
|
// Buffer has been activated, now check for file modification
|
||||||
|
// If enabled for current buffer
|
||||||
|
pBuf->checkFileState();
|
||||||
|
}
|
||||||
|
|
||||||
notifyBufferActivated(id, whichOne);
|
notifyBufferActivated(id, whichOne);
|
||||||
return true;
|
return true;
|
||||||
@ -3795,7 +3803,7 @@ bool Notepad_plus::activateBuffer(BufferID id, int whichOne)
|
|||||||
void Notepad_plus::performPostReload(int whichOne) {
|
void Notepad_plus::performPostReload(int whichOne) {
|
||||||
NppParameters *pNppParam = NppParameters::getInstance();
|
NppParameters *pNppParam = NppParameters::getInstance();
|
||||||
const NppGUI & nppGUI = pNppParam->getNppGUI();
|
const NppGUI & nppGUI = pNppParam->getNppGUI();
|
||||||
bool toEnd = (nppGUI._fileAutoDetection == cdAutoUpdateGo2end) || (nppGUI._fileAutoDetection == cdGo2end);
|
bool toEnd = (nppGUI._fileAutoDetection & cdGo2end) ? true : false;
|
||||||
if (!toEnd)
|
if (!toEnd)
|
||||||
return;
|
return;
|
||||||
if (whichOne == MAIN_VIEW) {
|
if (whichOne == MAIN_VIEW) {
|
||||||
@ -5125,7 +5133,7 @@ void Notepad_plus::notifyBufferChanged(Buffer * buffer, int mask)
|
|||||||
}
|
}
|
||||||
case DOC_MODIFIED: //ask for reloading
|
case DOC_MODIFIED: //ask for reloading
|
||||||
{
|
{
|
||||||
bool autoUpdate = (nppGUI._fileAutoDetection == cdAutoUpdate) || (nppGUI._fileAutoDetection == cdAutoUpdateGo2end);
|
bool autoUpdate = (nppGUI._fileAutoDetection & cdAutoUpdate) ? true : false;
|
||||||
if (!autoUpdate || buffer->isDirty())
|
if (!autoUpdate || buffer->isDirty())
|
||||||
{
|
{
|
||||||
prepareBufferChangedDialog(buffer);
|
prepareBufferChangedDialog(buffer);
|
||||||
|
@ -456,7 +456,7 @@ private:
|
|||||||
void checkMacroState();
|
void checkMacroState();
|
||||||
void checkSyncState();
|
void checkSyncState();
|
||||||
void dropFiles(HDROP hdrop);
|
void dropFiles(HDROP hdrop);
|
||||||
void checkModifiedDocument();
|
void checkModifiedDocument(bool bCheckOnlyCurrentBuffer);
|
||||||
|
|
||||||
void getMainClientRect(RECT & rc) const;
|
void getMainClientRect(RECT & rc) const;
|
||||||
void staticCheckMenuAndTB() const;
|
void staticCheckMenuAndTB() const;
|
||||||
|
@ -311,7 +311,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|||||||
bool isSnapshotMode = nppGUI.isSnapshotMode();
|
bool isSnapshotMode = nppGUI.isSnapshotMode();
|
||||||
if (isSnapshotMode)
|
if (isSnapshotMode)
|
||||||
{
|
{
|
||||||
_notepad_plus_plus_core.checkModifiedDocument();
|
_notepad_plus_plus_core.checkModifiedDocument(false);
|
||||||
// Lauch backup task
|
// Lauch backup task
|
||||||
_notepad_plus_plus_core.launchDocumentBackupTask();
|
_notepad_plus_plus_core.launchDocumentBackupTask();
|
||||||
}
|
}
|
||||||
|
@ -45,12 +45,6 @@ using namespace std;
|
|||||||
#define WM_DPICHANGED 0x02E0
|
#define WM_DPICHANGED 0x02E0
|
||||||
|
|
||||||
|
|
||||||
DWORD WINAPI CheckModifiedDocumentThread(LPVOID)
|
|
||||||
{
|
|
||||||
MainFileManager->checkFilesystemChanges();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct SortTaskListPred final
|
struct SortTaskListPred final
|
||||||
{
|
{
|
||||||
DocTabView *_views[2];
|
DocTabView *_views[2];
|
||||||
@ -1544,7 +1538,9 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||||||
const NppGUI & nppgui = pNppParam->getNppGUI();
|
const NppGUI & nppgui = pNppParam->getNppGUI();
|
||||||
if (nppgui._fileAutoDetection != cdDisabled)
|
if (nppgui._fileAutoDetection != cdDisabled)
|
||||||
{
|
{
|
||||||
checkModifiedDocument();
|
bool bCheckOnlyCurrentBuffer = (nppgui._fileAutoDetection & cdEnabledCurrent) ? true : false;
|
||||||
|
|
||||||
|
checkModifiedDocument(bCheckOnlyCurrentBuffer);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -1621,15 +1617,15 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||||||
|
|
||||||
case NPPM_INTERNAL_ENABLECHECKDOCOPT:
|
case NPPM_INTERNAL_ENABLECHECKDOCOPT:
|
||||||
{
|
{
|
||||||
NppGUI & nppgui = const_cast<NppGUI &>((pNppParam->getNppGUI()));
|
NppGUI& nppgui = const_cast<NppGUI&>((pNppParam->getNppGUI()));
|
||||||
if (wParam == CHECKDOCOPT_NONE)
|
if (wParam == CHECKDOCOPT_NONE)
|
||||||
nppgui._fileAutoDetection = cdDisabled;
|
nppgui._fileAutoDetection = cdDisabled;
|
||||||
else if (wParam == CHECKDOCOPT_UPDATESILENTLY)
|
else if (wParam == CHECKDOCOPT_UPDATESILENTLY)
|
||||||
nppgui._fileAutoDetection = cdAutoUpdate;
|
nppgui._fileAutoDetection = (cdEnabledAll | cdAutoUpdate);
|
||||||
else if (wParam == CHECKDOCOPT_UPDATEGO2END)
|
else if (wParam == CHECKDOCOPT_UPDATEGO2END)
|
||||||
nppgui._fileAutoDetection = cdGo2end;
|
nppgui._fileAutoDetection = (cdEnabledAll | cdGo2end);
|
||||||
else if (wParam == (CHECKDOCOPT_UPDATESILENTLY | CHECKDOCOPT_UPDATEGO2END))
|
else if (wParam == (CHECKDOCOPT_UPDATESILENTLY | CHECKDOCOPT_UPDATEGO2END))
|
||||||
nppgui._fileAutoDetection = cdAutoUpdateGo2end;
|
nppgui._fileAutoDetection = (cdEnabledAll | cdGo2end | cdAutoUpdate);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1359,7 +1359,7 @@ bool Notepad_plus::fileSaveAs(BufferID id, bool isSaveCopy)
|
|||||||
|
|
||||||
// Disable file autodetection before opening save dialog to prevent use-after-delete bug.
|
// Disable file autodetection before opening save dialog to prevent use-after-delete bug.
|
||||||
NppParameters *pNppParam = NppParameters::getInstance();
|
NppParameters *pNppParam = NppParameters::getInstance();
|
||||||
ChangeDetect cdBefore = (const_cast<NppGUI &>(pNppParam->getNppGUI()))._fileAutoDetection;
|
auto cdBefore = pNppParam->getNppGUI()._fileAutoDetection;
|
||||||
(const_cast<NppGUI &>(pNppParam->getNppGUI()))._fileAutoDetection = cdDisabled;
|
(const_cast<NppGUI &>(pNppParam->getNppGUI()))._fileAutoDetection = cdDisabled;
|
||||||
|
|
||||||
TCHAR *pfn = fDlg.doSaveDlg();
|
TCHAR *pfn = fDlg.doSaveDlg();
|
||||||
@ -1393,7 +1393,7 @@ bool Notepad_plus::fileSaveAs(BufferID id, bool isSaveCopy)
|
|||||||
}
|
}
|
||||||
else // cancel button is pressed
|
else // cancel button is pressed
|
||||||
{
|
{
|
||||||
checkModifiedDocument();
|
checkModifiedDocument(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4185,15 +4185,23 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
|||||||
const TCHAR* val = n->Value();
|
const TCHAR* val = n->Value();
|
||||||
if (val)
|
if (val)
|
||||||
{
|
{
|
||||||
if (!lstrcmp(val, TEXT("yes")))
|
if (!lstrcmp(val, TEXT("yesAll")))
|
||||||
_nppGUI._fileAutoDetection = cdEnabled;
|
_nppGUI._fileAutoDetection = cdEnabledAll;
|
||||||
else if (!lstrcmp(val, TEXT("auto")))
|
else if (!lstrcmp(val, TEXT("autoAll")))
|
||||||
_nppGUI._fileAutoDetection = cdAutoUpdate;
|
_nppGUI._fileAutoDetection = (cdEnabledAll | cdAutoUpdate);
|
||||||
else if (!lstrcmp(val, TEXT("Update2End")))
|
else if (!lstrcmp(val, TEXT("Update2EndAll")))
|
||||||
_nppGUI._fileAutoDetection = cdGo2end;
|
_nppGUI._fileAutoDetection = (cdEnabledAll | cdGo2end);
|
||||||
else if (!lstrcmp(val, TEXT("autoUpdate2End")))
|
else if (!lstrcmp(val, TEXT("autoUpdate2EndAll")))
|
||||||
_nppGUI._fileAutoDetection = cdAutoUpdateGo2end;
|
_nppGUI._fileAutoDetection = (cdEnabledAll | cdAutoUpdate | cdGo2end);
|
||||||
else //(!lstrcmp(val, TEXT("no")))
|
else if (!lstrcmp(val, TEXT("yesCurrent")))
|
||||||
|
_nppGUI._fileAutoDetection = cdEnabledCurrent;
|
||||||
|
else if (!lstrcmp(val, TEXT("autoCurrent")))
|
||||||
|
_nppGUI._fileAutoDetection = (cdEnabledCurrent | cdAutoUpdate);
|
||||||
|
else if (!lstrcmp(val, TEXT("Update2EndCurrent")))
|
||||||
|
_nppGUI._fileAutoDetection = (cdEnabledCurrent | cdGo2end);
|
||||||
|
else if (!lstrcmp(val, TEXT("autoUpdate2EndCurrent")))
|
||||||
|
_nppGUI._fileAutoDetection = (cdEnabledCurrent | cdAutoUpdate | cdGo2end);
|
||||||
|
else //(!lstrcmp(val, TEXT("no")))
|
||||||
_nppGUI._fileAutoDetection = cdDisabled;
|
_nppGUI._fileAutoDetection = cdDisabled;
|
||||||
|
|
||||||
_nppGUI._fileAutoDetectionOriginalValue = _nppGUI._fileAutoDetection;
|
_nppGUI._fileAutoDetectionOriginalValue = _nppGUI._fileAutoDetection;
|
||||||
@ -5557,21 +5565,42 @@ void NppParameters::createXmlTreeFromGUIParams()
|
|||||||
// <GUIConfig name="Auto-detection">yes</GUIConfig>
|
// <GUIConfig name="Auto-detection">yes</GUIConfig>
|
||||||
{
|
{
|
||||||
const TCHAR *pStr = TEXT("no");
|
const TCHAR *pStr = TEXT("no");
|
||||||
switch (_nppGUI._fileAutoDetection)
|
|
||||||
|
if (_nppGUI._fileAutoDetection & cdEnabledAll)
|
||||||
{
|
{
|
||||||
case cdEnabled:
|
pStr = TEXT("yesAll");
|
||||||
pStr = TEXT("yes");
|
|
||||||
break;
|
if ((_nppGUI._fileAutoDetection & cdAutoUpdate) && (_nppGUI._fileAutoDetection & cdGo2end))
|
||||||
case cdAutoUpdate:
|
{
|
||||||
pStr = TEXT("auto");
|
pStr = TEXT("autoUpdate2EndAll");
|
||||||
break;
|
}
|
||||||
case cdGo2end:
|
else if (_nppGUI._fileAutoDetection & cdAutoUpdate)
|
||||||
pStr = TEXT("Update2End");
|
{
|
||||||
break;
|
pStr = TEXT("autoAll");
|
||||||
case cdAutoUpdateGo2end:
|
}
|
||||||
pStr = TEXT("autoUpdate2End");
|
else if (_nppGUI._fileAutoDetection & cdGo2end)
|
||||||
break;
|
{
|
||||||
|
pStr = TEXT("Update2EndAll");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else if (_nppGUI._fileAutoDetection & cdEnabledCurrent)
|
||||||
|
{
|
||||||
|
pStr = TEXT("yesCurrent");
|
||||||
|
|
||||||
|
if ((_nppGUI._fileAutoDetection & cdAutoUpdate) && (_nppGUI._fileAutoDetection & cdGo2end))
|
||||||
|
{
|
||||||
|
pStr = TEXT("autoUpdate2EndCurrent");
|
||||||
|
}
|
||||||
|
else if (_nppGUI._fileAutoDetection & cdAutoUpdate)
|
||||||
|
{
|
||||||
|
pStr = TEXT("autoCurrent");
|
||||||
|
}
|
||||||
|
else if (_nppGUI._fileAutoDetection & cdGo2end)
|
||||||
|
{
|
||||||
|
pStr = TEXT("Update2EndCurrent");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TiXmlElement *GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(TEXT("GUIConfig"))))->ToElement();
|
TiXmlElement *GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(TEXT("GUIConfig"))))->ToElement();
|
||||||
GUIConfigElement->SetAttribute(TEXT("name"), TEXT("Auto-detection"));
|
GUIConfigElement->SetAttribute(TEXT("name"), TEXT("Auto-detection"));
|
||||||
GUIConfigElement->InsertEndChild(TiXmlText(pStr));
|
GUIConfigElement->InsertEndChild(TiXmlText(pStr));
|
||||||
|
@ -87,7 +87,7 @@ EolType convertIntToFormatType(int value, EolType defvalue = EolType::osdefault)
|
|||||||
|
|
||||||
|
|
||||||
enum UniMode {uni8Bit=0, uniUTF8=1, uni16BE=2, uni16LE=3, uniCookie=4, uni7Bit=5, uni16BE_NoBOM=6, uni16LE_NoBOM=7, uniEnd};
|
enum UniMode {uni8Bit=0, uniUTF8=1, uni16BE=2, uni16LE=3, uniCookie=4, uni7Bit=5, uni16BE_NoBOM=6, uni16LE_NoBOM=7, uniEnd};
|
||||||
enum ChangeDetect {cdDisabled=0, cdEnabled=1, cdAutoUpdate=2, cdGo2end=3, cdAutoUpdateGo2end=4};
|
enum ChangeDetect { cdDisabled = 0x0, cdEnabledAll = 0x01, cdEnabledCurrent = 0x02, cdAutoUpdate = 0x04, cdGo2end = 0x08 };
|
||||||
enum BackupFeature {bak_none = 0, bak_simple = 1, bak_verbose = 2};
|
enum BackupFeature {bak_none = 0, bak_simple = 1, bak_verbose = 2};
|
||||||
enum OpenSaveDirSetting {dir_followCurrent = 0, dir_last = 1, dir_userDef = 2};
|
enum OpenSaveDirSetting {dir_followCurrent = 0, dir_last = 1, dir_userDef = 2};
|
||||||
enum MultiInstSetting {monoInst = 0, multiInstOnSession = 1, multiInst = 2};
|
enum MultiInstSetting {monoInst = 0, multiInstOnSession = 1, multiInst = 2};
|
||||||
@ -788,8 +788,8 @@ struct NppGUI final
|
|||||||
int _tabSize = 4;
|
int _tabSize = 4;
|
||||||
bool _tabReplacedBySpace = false;
|
bool _tabReplacedBySpace = false;
|
||||||
|
|
||||||
ChangeDetect _fileAutoDetection = cdEnabled;
|
int _fileAutoDetection = cdEnabledAll;
|
||||||
ChangeDetect _fileAutoDetectionOriginalValue = cdEnabled;
|
int _fileAutoDetectionOriginalValue = cdEnabledAll;
|
||||||
bool _checkHistoryFiles = false;
|
bool _checkHistoryFiles = false;
|
||||||
|
|
||||||
RECT _appPos;
|
RECT _appPos;
|
||||||
|
@ -222,7 +222,7 @@ void Buffer::setFileName(const TCHAR *fn, LangType defaultLang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Buffer::checkFileState() //eturns true if the status has been changed (it can change into DOC_REGULAR too). false otherwise
|
bool Buffer::checkFileState() // returns true if the status has been changed (it can change into DOC_REGULAR too). false otherwise
|
||||||
{
|
{
|
||||||
if (_currentStatus == DOC_UNNAMED) //unsaved document cannot change by environment
|
if (_currentStatus == DOC_UNNAMED) //unsaved document cannot change by environment
|
||||||
return false;
|
return false;
|
||||||
@ -485,7 +485,7 @@ void Buffer::setHideLineChanged(bool isHide, int location)
|
|||||||
|
|
||||||
void Buffer::setDeferredReload() // triggers a reload on the next Document access
|
void Buffer::setDeferredReload() // triggers a reload on the next Document access
|
||||||
{
|
{
|
||||||
_isDirty = false; //when reloading, just set to false, since it sohuld be marked as clean
|
_isDirty = false; //when reloading, just set to false, since it should be marked as clean
|
||||||
_needReloading = true;
|
_needReloading = true;
|
||||||
doNotify(BufferChangeDirty);
|
doNotify(BufferChangeDirty);
|
||||||
}
|
}
|
||||||
@ -510,18 +510,26 @@ void FileManager::init(Notepad_plus * pNotepadPlus, ScintillaEditView * pscratch
|
|||||||
_pscratchTilla->execute(SCI_ADDREFDOCUMENT, 0, _scratchDocDefault);
|
_pscratchTilla->execute(SCI_ADDREFDOCUMENT, 0, _scratchDocDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileManager::checkFilesystemChanges()
|
void FileManager::checkFilesystemChanges(bool bCheckOnlyCurrentBuffer)
|
||||||
{
|
{
|
||||||
for (int i = int(_nbBufs) - 1; i >= 0 ; i--)
|
if (bCheckOnlyCurrentBuffer)
|
||||||
{
|
{
|
||||||
if (i >= int(_nbBufs))
|
Buffer* buffer = _pNotepadPlus->getCurrentBuffer();
|
||||||
{
|
buffer->checkFileState();
|
||||||
if (_nbBufs == 0)
|
}
|
||||||
return;
|
else
|
||||||
|
{
|
||||||
|
for (int i = int(_nbBufs) - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (i >= int(_nbBufs))
|
||||||
|
{
|
||||||
|
if (_nbBufs == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
i = int(_nbBufs) - 1;
|
i = int(_nbBufs) - 1;
|
||||||
}
|
}
|
||||||
_buffers[i]->checkFileState(); //something has changed. Triggers update automatically
|
_buffers[i]->checkFileState(); //something has changed. Triggers update automatically
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ public:
|
|||||||
void init(Notepad_plus* pNotepadPlus, ScintillaEditView* pscratchTilla);
|
void init(Notepad_plus* pNotepadPlus, ScintillaEditView* pscratchTilla);
|
||||||
|
|
||||||
//void activateBuffer(int index);
|
//void activateBuffer(int index);
|
||||||
void checkFilesystemChanges();
|
void checkFilesystemChanges(bool bCheckOnlyCurrentBuffer);
|
||||||
|
|
||||||
size_t getNbBuffers() { return _nbBufs; };
|
size_t getNbBuffers() { return _nbBufs; };
|
||||||
int getBufferIndexByID(BufferID id);
|
int getBufferIndexByID(BufferID id);
|
||||||
|
@ -130,15 +130,16 @@ BEGIN
|
|||||||
CONTROL "Enable Notepad++ auto-updater",IDC_CHECK_AUTOUPDATE, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,37,173,217,10
|
CONTROL "Enable Notepad++ auto-updater",IDC_CHECK_AUTOUPDATE, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,37,173,217,10
|
||||||
CONTROL "Enable",IDC_CHECK_CLICKABLELINK_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,15,140,10
|
CONTROL "Enable",IDC_CHECK_CLICKABLELINK_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,15,140,10
|
||||||
CONTROL "No underline",IDC_CHECK_CLICKABLELINK_NOUNDERLINE, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,28,140,10
|
CONTROL "No underline",IDC_CHECK_CLICKABLELINK_NOUNDERLINE, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,28,140,10
|
||||||
CONTROL "Enable",IDC_CHECK_FILEAUTODETECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,57,140,10
|
CONTROL "Enable for all tabs",IDC_CHECK_FILEAUTODETECTION_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,57,140,10
|
||||||
CONTROL "Update silently",IDC_CHECK_UPDATESILENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,69,140,10
|
CONTROL "Enable only for current tab",IDC_CHECK_FILEAUTODETECTION_CURRENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,69,140,10
|
||||||
CONTROL "Scroll to the last line after update",IDC_CHECK_UPDATEGOTOEOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,81,140,10
|
CONTROL "Update silently",IDC_CHECK_UPDATESILENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,81,140,10
|
||||||
|
CONTROL "Scroll to the last line after update",IDC_CHECK_UPDATEGOTOEOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,93,140,10
|
||||||
EDITTEXT IDC_EDIT_SESSIONFILEEXT,381,135,34,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_EDIT_SESSIONFILEEXT,381,135,34,14,ES_AUTOHSCROLL
|
||||||
EDITTEXT IDC_EDIT_WORKSPACEFILEEXT,381,152,34,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_EDIT_WORKSPACEFILEEXT,381,152,34,14,ES_AUTOHSCROLL
|
||||||
GROUPBOX "Document Switcher (Ctrl+TAB)",IDC_DOCUMENTSWITCHER_STATIC,37,4,155,39,BS_CENTER
|
GROUPBOX "Document Switcher (Ctrl+TAB)",IDC_DOCUMENTSWITCHER_STATIC,37,4,155,39,BS_CENTER
|
||||||
GROUPBOX "Clickable Link Settings",IDC_CLICKABLELINK_STATIC,259,4,155,39,BS_CENTER
|
GROUPBOX "Clickable Link Settings",IDC_CLICKABLELINK_STATIC,259,4,155,39,BS_CENTER
|
||||||
GROUPBOX "Document Peeker",IDC_DOCUMENTPEEK_STATIC,37,47,155,39,BS_CENTER
|
GROUPBOX "Document Peeker",IDC_DOCUMENTPEEK_STATIC,37,47,155,39,BS_CENTER
|
||||||
GROUPBOX "File Status Auto-Detection",IDC_FILEAUTODETECTION_STATIC,259,47,155,50,BS_CENTER
|
GROUPBOX "File Status Auto-Detection",IDC_FILEAUTODETECTION_STATIC,259,47,155,62,BS_CENTER
|
||||||
RTEXT "Session file ext.:",IDC_SESSIONFILEEXT_STATIC,271,138,108,8
|
RTEXT "Session file ext.:",IDC_SESSIONFILEEXT_STATIC,271,138,108,8
|
||||||
RTEXT "Workspace file ext.:",IDC_WORKSPACEFILEEXT_STATIC,271,155,108,8
|
RTEXT "Workspace file ext.:",IDC_WORKSPACEFILEEXT_STATIC,271,155,108,8
|
||||||
END
|
END
|
||||||
|
@ -879,25 +879,17 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
|
|||||||
{
|
{
|
||||||
case WM_INITDIALOG :
|
case WM_INITDIALOG :
|
||||||
{
|
{
|
||||||
if (nppGUI._fileAutoDetection == cdEnabled)
|
if (nppGUI._fileAutoDetection & cdEnabledAll)
|
||||||
{
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT), FALSE);
|
||||||
}
|
}
|
||||||
else if (nppGUI._fileAutoDetection == cdAutoUpdate)
|
else if (nppGUI._fileAutoDetection & cdEnabledCurrent)
|
||||||
{
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_CHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
}
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL), FALSE);
|
||||||
else if (nppGUI._fileAutoDetection == cdGo2end)
|
|
||||||
{
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATEGOTOEOF, BM_SETCHECK, BST_CHECKED, 0);
|
|
||||||
}
|
|
||||||
else if (nppGUI._fileAutoDetection == cdAutoUpdateGo2end)
|
|
||||||
{
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION, BM_SETCHECK, BST_CHECKED, 0);
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, BST_CHECKED, 0);
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATEGOTOEOF, BM_SETCHECK, BST_CHECKED, 0);
|
|
||||||
}
|
}
|
||||||
else //cdDisabled
|
else //cdDisabled
|
||||||
{
|
{
|
||||||
@ -905,6 +897,12 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
|
|||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool bCheck = (nppGUI._fileAutoDetection & cdAutoUpdate) ? true : false;
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, bCheck? BST_CHECKED: BST_UNCHECKED, 0);
|
||||||
|
|
||||||
|
bCheck = (nppGUI._fileAutoDetection & cdGo2end) ? true : false;
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATEGOTOEOF, BM_SETCHECK, bCheck ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||||
|
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_MIN2SYSTRAY, BM_SETCHECK, nppGUI._isMinimizedToTray, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_MIN2SYSTRAY, BM_SETCHECK, nppGUI._isMinimizedToTray, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_DETECTENCODING, BM_SETCHECK, nppGUI._detectEncoding, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_DETECTENCODING, BM_SETCHECK, nppGUI._detectEncoding, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_AUTOUPDATE, BM_SETCHECK, nppGUI._autoUpdateOpt._doAutoUpdate, 0);
|
::SendDlgItemMessage(_hSelf, IDC_CHECK_AUTOUPDATE, BM_SETCHECK, nppGUI._autoUpdateOpt._doAutoUpdate, 0);
|
||||||
@ -975,27 +973,35 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
|
|||||||
|
|
||||||
switch (wParam)
|
switch (wParam)
|
||||||
{
|
{
|
||||||
case IDC_CHECK_FILEAUTODETECTION:
|
case IDC_CHECK_FILEAUTODETECTION_ALL:
|
||||||
|
case IDC_CHECK_FILEAUTODETECTION_CURRENT:
|
||||||
{
|
{
|
||||||
bool isChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION);
|
bool isAllChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_ALL);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), isChecked);
|
bool isCurrentChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_CURRENT);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), isChecked);
|
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), isAllChecked | isCurrentChecked);
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), isAllChecked | isCurrentChecked);
|
||||||
|
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL), !isCurrentChecked);
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT), !isAllChecked);
|
||||||
|
|
||||||
bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY);
|
bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY);
|
||||||
bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF);
|
bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF);
|
||||||
|
|
||||||
ChangeDetect cd;
|
int cd = cdDisabled;
|
||||||
|
|
||||||
if (!isChecked)
|
if (isAllChecked | isCurrentChecked)
|
||||||
cd = cdDisabled;
|
{
|
||||||
else if (!isSilent && !isGo2End)
|
if (isAllChecked)
|
||||||
cd = cdEnabled;
|
cd |= cdEnabledAll;
|
||||||
else if (!isSilent && isGo2End)
|
else
|
||||||
cd = cdGo2end;
|
cd |= cdEnabledCurrent;
|
||||||
else if (isSilent && !isGo2End)
|
|
||||||
cd = cdAutoUpdate;
|
if (isSilent)
|
||||||
else //(isSilent && isGo2End)
|
cd |= cdAutoUpdate;
|
||||||
cd = cdAutoUpdateGo2end;
|
if (isGo2End)
|
||||||
|
cd |= cdGo2end;
|
||||||
|
}
|
||||||
|
|
||||||
nppGUI._fileAutoDetection = cd;
|
nppGUI._fileAutoDetection = cd;
|
||||||
}
|
}
|
||||||
@ -1007,16 +1013,23 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM)
|
|||||||
bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY);
|
bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY);
|
||||||
bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF);
|
bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF);
|
||||||
|
|
||||||
ChangeDetect cd;
|
bool isAllChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_ALL);
|
||||||
|
bool isCurrentChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_CURRENT);
|
||||||
|
|
||||||
if (!isSilent && !isGo2End)
|
int cd = cdDisabled;
|
||||||
cd = cdEnabled;
|
|
||||||
else if (!isSilent && isGo2End)
|
if (isAllChecked | isCurrentChecked)
|
||||||
cd = cdGo2end;
|
{
|
||||||
else if (isSilent && !isGo2End)
|
if (isAllChecked)
|
||||||
cd = cdAutoUpdate;
|
cd |= cdEnabledAll;
|
||||||
else //(isSilent && isGo2End)
|
else
|
||||||
cd = cdAutoUpdateGo2end;
|
cd |= cdEnabledCurrent;
|
||||||
|
|
||||||
|
if (isSilent)
|
||||||
|
cd |= cdAutoUpdate;
|
||||||
|
if (isGo2End)
|
||||||
|
cd |= cdGo2end;
|
||||||
|
}
|
||||||
|
|
||||||
nppGUI._fileAutoDetection = cd;
|
nppGUI._fileAutoDetection = cd;
|
||||||
}
|
}
|
||||||
|
@ -162,14 +162,14 @@
|
|||||||
#define IDC_HISTORY_GB_STATIC (IDD_PREFERENCE_SETTING_BOX + 4)
|
#define IDC_HISTORY_GB_STATIC (IDD_PREFERENCE_SETTING_BOX + 4)
|
||||||
#define IDC_CHECK_DONTCHECKHISTORY (IDD_PREFERENCE_SETTING_BOX + 5)
|
#define IDC_CHECK_DONTCHECKHISTORY (IDD_PREFERENCE_SETTING_BOX + 5)
|
||||||
#define IDC_MAXNBFILE_STATIC (IDD_PREFERENCE_SETTING_BOX + 6)
|
#define IDC_MAXNBFILE_STATIC (IDD_PREFERENCE_SETTING_BOX + 6)
|
||||||
#define IDC_CHECK_FILEAUTODETECTION (IDD_PREFERENCE_SETTING_BOX + 7)
|
#define IDC_CHECK_FILEAUTODETECTION_ALL (IDD_PREFERENCE_SETTING_BOX + 7)
|
||||||
#define IDC_CHECK_MIN2SYSTRAY (IDD_PREFERENCE_SETTING_BOX + 8)
|
#define IDC_CHECK_MIN2SYSTRAY (IDD_PREFERENCE_SETTING_BOX + 8)
|
||||||
#define IDC_CHECK_REMEMBERSESSION (IDD_PREFERENCE_SETTING_BOX + 9)
|
#define IDC_CHECK_REMEMBERSESSION (IDD_PREFERENCE_SETTING_BOX + 9)
|
||||||
#define IDC_TABSIZEVAL_STATIC (IDD_PREFERENCE_SETTING_BOX + 10)
|
#define IDC_TABSIZEVAL_STATIC (IDD_PREFERENCE_SETTING_BOX + 10)
|
||||||
#define IDC_MAXNBFILEVAL_STATIC (IDD_PREFERENCE_SETTING_BOX + 11)
|
#define IDC_MAXNBFILEVAL_STATIC (IDD_PREFERENCE_SETTING_BOX + 11)
|
||||||
#define IDC_FILEAUTODETECTION_STATIC (IDD_PREFERENCE_SETTING_BOX + 12)
|
#define IDC_FILEAUTODETECTION_STATIC (IDD_PREFERENCE_SETTING_BOX + 12)
|
||||||
#define IDC_CHECK_UPDATESILENTLY (IDD_PREFERENCE_SETTING_BOX + 13)
|
#define IDC_CHECK_UPDATESILENTLY (IDD_PREFERENCE_SETTING_BOX + 13)
|
||||||
//#define IDC_BACKUP_GB_STATIC (IDD_PREFERENCE_SETTING_BOX + 14)
|
#define IDC_CHECK_FILEAUTODETECTION_CURRENT (IDD_PREFERENCE_SETTING_BOX + 14)
|
||||||
#define IDC_RADIO_BKNONE (IDD_PREFERENCE_SETTING_BOX + 15)
|
#define IDC_RADIO_BKNONE (IDD_PREFERENCE_SETTING_BOX + 15)
|
||||||
#define IDC_RADIO_BKSIMPLE (IDD_PREFERENCE_SETTING_BOX + 16)
|
#define IDC_RADIO_BKSIMPLE (IDD_PREFERENCE_SETTING_BOX + 16)
|
||||||
#define IDC_RADIO_BKVERBOSE (IDD_PREFERENCE_SETTING_BOX + 17)
|
#define IDC_RADIO_BKVERBOSE (IDD_PREFERENCE_SETTING_BOX + 17)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user