mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
+ enh: initial version of Doc tail Chasing
This commit is contained in:
parent
563350c657
commit
edbfae8914
Binary file not shown.
@ -1619,16 +1619,17 @@ bool FileMRUDlg(HWND hwnd,LPWSTR lpstrFile)
|
||||
// 102 Radio Button (Auto-Reload)
|
||||
// 103 Check Box (Reset on New)
|
||||
//
|
||||
extern int iFileWatchingMode;
|
||||
extern bool bResetFileWatching;
|
||||
extern int g_iFileWatchingMode;
|
||||
extern bool g_bResetFileWatching;
|
||||
extern bool g_bChasingDocTail;
|
||||
|
||||
INT_PTR CALLBACK ChangeNotifyDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
|
||||
{
|
||||
switch(umsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
CheckRadioButton(hwnd,100,102,100+iFileWatchingMode);
|
||||
if (bResetFileWatching)
|
||||
CheckRadioButton(hwnd,100,102,100+g_iFileWatchingMode);
|
||||
if (g_bResetFileWatching)
|
||||
CheckDlgButton(hwnd,103,BST_CHECKED);
|
||||
CenterDlgInParent(hwnd);
|
||||
return true;
|
||||
@ -1638,12 +1639,16 @@ INT_PTR CALLBACK ChangeNotifyDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lP
|
||||
{
|
||||
case IDOK:
|
||||
if (IsDlgButtonChecked(hwnd,100) == BST_CHECKED)
|
||||
iFileWatchingMode = 0;
|
||||
g_iFileWatchingMode = 0;
|
||||
else if (IsDlgButtonChecked(hwnd,101) == BST_CHECKED)
|
||||
iFileWatchingMode = 1;
|
||||
g_iFileWatchingMode = 1;
|
||||
else
|
||||
iFileWatchingMode = 2;
|
||||
bResetFileWatching = (IsDlgButtonChecked(hwnd,103) == BST_CHECKED) ? true : false;
|
||||
g_iFileWatchingMode = 2;
|
||||
|
||||
g_bResetFileWatching = (IsDlgButtonChecked(hwnd,103) == BST_CHECKED) ? true : false;
|
||||
|
||||
if (g_bChasingDocTail) { SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_VIEW_CHASING_DOCTAIL, 1), 0); }
|
||||
|
||||
EndDialog(hwnd,IDOK);
|
||||
break;
|
||||
|
||||
|
||||
@ -7751,7 +7751,7 @@ extern bool bTabsAsSpacesG;
|
||||
extern bool bTabIndentsG;
|
||||
extern int iTabWidthG;
|
||||
extern int iIndentWidthG;
|
||||
extern bool bWordWrap;
|
||||
extern bool g_bWordWrap;
|
||||
extern bool bWordWrapG;
|
||||
extern int iWordWrapMode;
|
||||
extern int iLongLinesLimit;
|
||||
@ -7787,11 +7787,11 @@ bool FileVars_Apply(HWND hwnd,LPFILEVARS lpfv) {
|
||||
SendMessage(g_hwndEdit,SCI_SETTABINDENTS,g_bTabIndents,0);
|
||||
|
||||
if (lpfv->mask & FV_WORDWRAP)
|
||||
bWordWrap = lpfv->fWordWrap;
|
||||
g_bWordWrap = lpfv->fWordWrap;
|
||||
else
|
||||
bWordWrap = bWordWrapG;
|
||||
g_bWordWrap = bWordWrapG;
|
||||
|
||||
if (!bWordWrap)
|
||||
if (!g_bWordWrap)
|
||||
SendMessage(g_hwndEdit,SCI_SETWRAPMODE,SC_WRAP_NONE,0);
|
||||
else
|
||||
SendMessage(g_hwndEdit,SCI_SETWRAPMODE,(iWordWrapMode == 0) ? SC_WRAP_WHITESPACE : SC_WRAP_CHAR,0);
|
||||
|
||||
188
src/Notepad3.c
188
src/Notepad3.c
@ -95,6 +95,8 @@ TBBUTTON tbbMainWnd[] = { { 0,IDT_FILE_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0
|
||||
{ 12,IDT_VIEW_ZOOMIN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0 },
|
||||
{ 13,IDT_VIEW_ZOOMOUT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0 },
|
||||
{ 0,0,0,TBSTYLE_SEP,0,0 },
|
||||
{ 26,IDT_VIEW_CHASING_DOCTAIL,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0 },
|
||||
{ 0,0,0,TBSTYLE_SEP,0,0 },
|
||||
{ 14,IDT_VIEW_SCHEME,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0 },
|
||||
{ 0,0,0,TBSTYLE_SEP,0,0 },
|
||||
{ 24,IDT_FILE_LAUNCH,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0 },
|
||||
@ -109,9 +111,9 @@ TBBUTTON tbbMainWnd[] = { { 0,IDT_FILE_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0
|
||||
{ 20,IDT_FILE_PRINT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0 }
|
||||
};
|
||||
|
||||
#define NUMTOOLBITMAPS 26
|
||||
#define NUMINITIALTOOLS 31
|
||||
#define TBBUTTON_DEFAULT_IDS L"1 2 4 3 0 5 6 0 7 8 9 0 10 11 0 12 0 24 26 0 22 23 0 13 14 0 15 0 25 0 17"
|
||||
#define NUMTOOLBITMAPS 27
|
||||
#define NUMINITIALTOOLS 33
|
||||
#define TBBUTTON_DEFAULT_IDS L"1 2 4 3 0 5 6 0 7 8 9 0 10 11 0 12 0 24 26 0 22 23 0 13 14 0 27 0 15 0 25 0 17"
|
||||
|
||||
|
||||
WCHAR g_wchIniFile[MAX_PATH] = { L'\0' };
|
||||
@ -146,7 +148,7 @@ static WCHAR g_tchToolbarBitmapHot[MAX_PATH] = { L'\0' };
|
||||
static WCHAR g_tchToolbarBitmapDisabled[MAX_PATH] = { L'\0' };
|
||||
|
||||
int iPathNameFormat;
|
||||
bool bWordWrap;
|
||||
bool g_bWordWrap;
|
||||
bool bWordWrapG;
|
||||
int iWordWrapMode;
|
||||
int iWordWrapIndent;
|
||||
@ -205,8 +207,8 @@ int iPrintColor;
|
||||
int iPrintZoom;
|
||||
RECT pagesetupMargin;
|
||||
bool bSaveBeforeRunningTools;
|
||||
int iFileWatchingMode;
|
||||
bool bResetFileWatching;
|
||||
int g_iFileWatchingMode;
|
||||
bool g_bResetFileWatching;
|
||||
DWORD dwFileCheckInverval;
|
||||
DWORD dwAutoReloadTimeout;
|
||||
int iEscFunction;
|
||||
@ -223,6 +225,8 @@ int iUpdateDelayHyperlinkStyling;
|
||||
int iUpdateDelayMarkAllCoccurrences;
|
||||
int iCurrentLineHorizontalSlop = 0;
|
||||
int iCurrentLineVerticalSlop = 0;
|
||||
bool g_bChasingDocTail = false;
|
||||
|
||||
|
||||
const int DirectWriteTechnology[4] = {
|
||||
SC_TECHNOLOGY_DEFAULT
|
||||
@ -296,7 +300,6 @@ WCHAR szTitleExcerpt[MIDSZ_BUFFER] = { L'\0' };
|
||||
int fKeepTitleExcerpt = 0;
|
||||
|
||||
HANDLE hChangeHandle = NULL;
|
||||
bool bRunningWatch = false;
|
||||
bool dwChangeNotifyTime = 0;
|
||||
WIN32_FIND_DATA fdCurFile;
|
||||
|
||||
@ -305,6 +308,7 @@ UINT msgTaskbarCreated = 0;
|
||||
HMODULE hModUxTheme = NULL;
|
||||
HMODULE hRichEdit = NULL;
|
||||
|
||||
static bool g_bRunningWatch = false;
|
||||
|
||||
static EDITFINDREPLACE g_efrData = EFR_INIT_DATA;
|
||||
bool bReplaceInitialized = false;
|
||||
@ -985,14 +989,19 @@ HWND InitInstance(HINSTANCE hInstance,LPSTR pszCmdLine,int nCmdShow)
|
||||
}
|
||||
if (bOpened) {
|
||||
if (flagChangeNotify == 1) {
|
||||
iFileWatchingMode = 0;
|
||||
bResetFileWatching = true;
|
||||
g_iFileWatchingMode = 0;
|
||||
g_bResetFileWatching = true;
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
}
|
||||
else if (flagChangeNotify == 2) {
|
||||
iFileWatchingMode = 2;
|
||||
bResetFileWatching = true;
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
if (!g_bChasingDocTail) {
|
||||
SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_VIEW_CHASING_DOCTAIL, 1), 0);
|
||||
}
|
||||
else {
|
||||
g_iFileWatchingMode = 2;
|
||||
g_bResetFileWatching = true;
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1324,7 +1333,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
|
||||
static void __fastcall _SetWordWrapping(HWND hwndEditCtrl)
|
||||
{
|
||||
// Word wrap
|
||||
if (bWordWrap)
|
||||
if (g_bWordWrap)
|
||||
SendMessage(hwndEditCtrl, SCI_SETWRAPMODE, (iWordWrapMode == 0) ? SC_WRAP_WHITESPACE : SC_WRAP_CHAR, 0);
|
||||
else
|
||||
SendMessage(hwndEditCtrl, SCI_SETWRAPMODE, SC_WRAP_NONE, 0);
|
||||
@ -2124,14 +2133,19 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
if (bOpened) {
|
||||
|
||||
if (params->flagChangeNotify == 1) {
|
||||
iFileWatchingMode = 0;
|
||||
bResetFileWatching = true;
|
||||
g_iFileWatchingMode = 0;
|
||||
g_bResetFileWatching = true;
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
}
|
||||
else if (params->flagChangeNotify == 2) {
|
||||
iFileWatchingMode = 2;
|
||||
bResetFileWatching = true;
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
if (!g_bChasingDocTail) {
|
||||
SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_VIEW_CHASING_DOCTAIL, 1), 0);
|
||||
}
|
||||
else {
|
||||
g_iFileWatchingMode = 2;
|
||||
g_bResetFileWatching = true;
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
}
|
||||
}
|
||||
|
||||
if (0 != params->flagSetEncoding) {
|
||||
@ -2258,23 +2272,34 @@ LRESULT MsgContextMenu(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
//
|
||||
void MsgChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (iFileWatchingMode == 1 || IsDocumentModified || Encoding_HasChanged(CPI_GET))
|
||||
if (g_iFileWatchingMode == 1 || IsDocumentModified || Encoding_HasChanged(CPI_GET)) {
|
||||
SetForegroundWindow(hwnd);
|
||||
}
|
||||
|
||||
if (PathFileExists(g_wchCurFile)) {
|
||||
if ((iFileWatchingMode == 2 && !IsDocumentModified && !Encoding_HasChanged(CPI_GET)) ||
|
||||
MsgBox(MBYESNOWARN,IDS_FILECHANGENOTIFY) == IDYES) {
|
||||
|
||||
if (PathFileExists(g_wchCurFile))
|
||||
{
|
||||
if ((g_iFileWatchingMode == 2 && !IsDocumentModified && !Encoding_HasChanged(CPI_GET)) ||
|
||||
MsgBox(MBYESNOWARN,IDS_FILECHANGENOTIFY) == IDYES)
|
||||
{
|
||||
FileRevert(g_wchCurFile);
|
||||
|
||||
if (g_bChasingDocTail)
|
||||
{
|
||||
SciCall_SetReadOnly(g_bChasingDocTail);
|
||||
//SetForegroundWindow(hwnd);
|
||||
SciCall_ScrollToEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (MsgBox(MBYESNOWARN,IDS_FILECHANGENOTIFY2) == IDYES)
|
||||
FileSave(true,false,false,false);
|
||||
if (MsgBox(MBYESNOWARN, IDS_FILECHANGENOTIFY2) == IDYES) {
|
||||
FileSave(true, false, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (!bRunningWatch)
|
||||
if (!g_bRunningWatch) {
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
}
|
||||
|
||||
UNUSED(wParam);
|
||||
UNUSED(lParam);
|
||||
@ -2540,13 +2565,14 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
|
||||
CheckCmd(hmenu,IDM_VIEW_USE2NDDEFAULT,Style_GetUse2ndDefault());
|
||||
|
||||
CheckCmd(hmenu,IDM_VIEW_WORDWRAP,bWordWrap);
|
||||
CheckCmd(hmenu,IDM_VIEW_WORDWRAP,g_bWordWrap);
|
||||
CheckCmd(hmenu,IDM_VIEW_LONGLINEMARKER,bMarkLongLines);
|
||||
CheckCmd(hmenu,IDM_VIEW_TABSASSPACES,g_bTabsAsSpaces);
|
||||
CheckCmd(hmenu,IDM_VIEW_SHOWINDENTGUIDES,bShowIndentGuides);
|
||||
CheckCmd(hmenu,IDM_VIEW_AUTOINDENTTEXT,bAutoIndent);
|
||||
CheckCmd(hmenu,IDM_VIEW_LINENUMBERS,bShowLineNumbers);
|
||||
CheckCmd(hmenu,IDM_VIEW_MARGIN,g_bShowSelectionMargin);
|
||||
CheckCmd(hmenu,IDM_VIEW_CHASING_DOCTAIL, g_bChasingDocTail);
|
||||
|
||||
EnableCmd(hmenu,IDM_EDIT_COMPLETEWORD,!e && !ro);
|
||||
CheckCmd(hmenu,IDM_VIEW_AUTOCOMPLETEWORDS,bAutoCompleteWords && !ro);
|
||||
@ -2610,7 +2636,7 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
CheckCmd(hmenu,IDM_VIEW_NOSAVEFINDREPL,bSaveFindReplace);
|
||||
CheckCmd(hmenu,IDM_VIEW_SAVEBEFORERUNNINGTOOLS,bSaveBeforeRunningTools);
|
||||
|
||||
CheckCmd(hmenu,IDM_VIEW_CHANGENOTIFY,iFileWatchingMode);
|
||||
CheckCmd(hmenu,IDM_VIEW_CHANGENOTIFY,g_iFileWatchingMode);
|
||||
|
||||
if (StringCchLenW(szTitleExcerpt,COUNTOF(szTitleExcerpt)))
|
||||
i = IDM_VIEW_SHOWEXCERPT;
|
||||
@ -4246,12 +4272,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
|
||||
case IDM_VIEW_WORDWRAP:
|
||||
bWordWrap = (bWordWrap) ? false : true;
|
||||
if (!bWordWrap)
|
||||
g_bWordWrap = (g_bWordWrap) ? false : true;
|
||||
if (!g_bWordWrap)
|
||||
SendMessage(g_hwndEdit,SCI_SETWRAPMODE,SC_WRAP_NONE,0);
|
||||
else
|
||||
SendMessage(g_hwndEdit,SCI_SETWRAPMODE,(iWordWrapMode == 0) ? SC_WRAP_WHITESPACE : SC_WRAP_CHAR,0);
|
||||
bWordWrapG = bWordWrap;
|
||||
bWordWrapG = g_bWordWrap;
|
||||
UpdateToolbar();
|
||||
break;
|
||||
|
||||
@ -4492,6 +4518,36 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
UpdateLineNumberWidth();
|
||||
break;
|
||||
|
||||
case IDM_VIEW_CHASING_DOCTAIL:
|
||||
{
|
||||
static int flagPrevChangeNotify = 0;
|
||||
static int iPrevFileWatchingMode = 0;
|
||||
static bool bPrevResetFileWatching = false;
|
||||
|
||||
g_bChasingDocTail = (g_bChasingDocTail) ? false : true;
|
||||
SciCall_SetReadOnly(g_bChasingDocTail);
|
||||
|
||||
if (g_bChasingDocTail)
|
||||
{
|
||||
SetForegroundWindow(hwnd);
|
||||
flagPrevChangeNotify = flagChangeNotify;
|
||||
iPrevFileWatchingMode = g_iFileWatchingMode;
|
||||
bPrevResetFileWatching = g_bResetFileWatching;
|
||||
flagChangeNotify = 2;
|
||||
g_iFileWatchingMode = 2;
|
||||
g_bResetFileWatching = true;
|
||||
}
|
||||
else {
|
||||
flagChangeNotify = flagPrevChangeNotify;
|
||||
g_iFileWatchingMode = iPrevFileWatchingMode;
|
||||
g_bResetFileWatching = bPrevResetFileWatching;
|
||||
}
|
||||
if (!g_bRunningWatch) { InstallFileWatching(g_wchCurFile); }
|
||||
|
||||
CheckCmd(GetMenu(g_hwndMain), IDM_VIEW_CHASING_DOCTAIL, g_bChasingDocTail);
|
||||
UpdateToolbar();
|
||||
}
|
||||
break;
|
||||
|
||||
case IDM_VIEW_SCROLLPASTEOF:
|
||||
bScrollPastEOF = (bScrollPastEOF) ? false : true;
|
||||
@ -5337,6 +5393,14 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
break;
|
||||
|
||||
|
||||
case IDT_VIEW_CHASING_DOCTAIL:
|
||||
if (IsCmdEnabled(hwnd, IDM_VIEW_CHASING_DOCTAIL))
|
||||
SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_VIEW_CHASING_DOCTAIL,1),0);
|
||||
else
|
||||
MessageBeep(0);
|
||||
break;
|
||||
|
||||
|
||||
case IDT_VIEW_SCHEME:
|
||||
if (IsCmdEnabled(hwnd,IDM_VIEW_SCHEME))
|
||||
SendMessage(hwnd,WM_COMMAND,MAKELONG(IDM_VIEW_SCHEME,1),0);
|
||||
@ -6089,8 +6153,8 @@ void LoadSettings()
|
||||
iPathNameFormat = IniSectionGetInt(pIniSection,L"PathNameFormat",0);
|
||||
iPathNameFormat = max(min(iPathNameFormat,2),0);
|
||||
|
||||
bWordWrap = IniSectionGetBool(pIniSection,L"WordWrap",false);
|
||||
bWordWrapG = bWordWrap;
|
||||
g_bWordWrap = IniSectionGetBool(pIniSection,L"WordWrap",false);
|
||||
bWordWrapG = g_bWordWrap;
|
||||
|
||||
iWordWrapMode = IniSectionGetInt(pIniSection,L"WordWrapMode",0);
|
||||
iWordWrapMode = max(min(iWordWrapMode,1),0);
|
||||
@ -6214,10 +6278,10 @@ void LoadSettings()
|
||||
|
||||
bSaveBeforeRunningTools = IniSectionGetBool(pIniSection,L"SaveBeforeRunningTools",false);
|
||||
|
||||
iFileWatchingMode = IniSectionGetInt(pIniSection,L"FileWatchingMode",0);
|
||||
iFileWatchingMode = max(min(iFileWatchingMode,2),0);
|
||||
g_iFileWatchingMode = IniSectionGetInt(pIniSection,L"FileWatchingMode",0);
|
||||
g_iFileWatchingMode = max(min(g_iFileWatchingMode,2),0);
|
||||
|
||||
bResetFileWatching = IniSectionGetBool(pIniSection,L"ResetFileWatching",true);
|
||||
g_bResetFileWatching = IniSectionGetBool(pIniSection,L"ResetFileWatching",true);
|
||||
|
||||
iEscFunction = IniSectionGetInt(pIniSection,L"EscFunction",0);
|
||||
iEscFunction = max(min(iEscFunction,2),0);
|
||||
@ -6522,8 +6586,8 @@ void SaveSettings(bool bSaveSettingsNow) {
|
||||
IniSectionSetInt(pIniSection, L"PrintMarginRight", pagesetupMargin.right);
|
||||
IniSectionSetInt(pIniSection, L"PrintMarginBottom", pagesetupMargin.bottom);
|
||||
IniSectionSetBool(pIniSection, L"SaveBeforeRunningTools", bSaveBeforeRunningTools);
|
||||
IniSectionSetInt(pIniSection, L"FileWatchingMode", iFileWatchingMode);
|
||||
IniSectionSetBool(pIniSection, L"ResetFileWatching", bResetFileWatching);
|
||||
IniSectionSetInt(pIniSection, L"FileWatchingMode", g_iFileWatchingMode);
|
||||
IniSectionSetBool(pIniSection, L"ResetFileWatching", g_bResetFileWatching);
|
||||
IniSectionSetInt(pIniSection, L"EscFunction", iEscFunction);
|
||||
IniSectionSetBool(pIniSection, L"AlwaysOnTop", bAlwaysOnTop);
|
||||
IniSectionSetBool(pIniSection, L"MinimizeToTray", bMinimizeToTray);
|
||||
@ -7301,7 +7365,8 @@ void UpdateToolbar()
|
||||
|
||||
EnableTool(IDT_FILE_ADDTOFAV, StringCchLenW(g_wchCurFile, COUNTOF(g_wchCurFile)));
|
||||
EnableTool(IDT_FILE_SAVE, (IsDocumentModified || Encoding_HasChanged(CPI_GET)) /*&& !bReadOnly*/);
|
||||
CheckTool(IDT_VIEW_WORDWRAP, bWordWrap);
|
||||
CheckTool(IDT_VIEW_WORDWRAP, g_bWordWrap);
|
||||
CheckTool(IDT_VIEW_CHASING_DOCTAIL, g_bChasingDocTail);
|
||||
|
||||
bool b1 = SciCall_IsSelectionEmpty();
|
||||
bool b2 = (bool)(SciCall_GetTextLength() > 0);
|
||||
@ -7900,8 +7965,11 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
|
||||
UpdateLineNumberWidth();
|
||||
|
||||
// Terminate file watching
|
||||
if (bResetFileWatching) {
|
||||
iFileWatchingMode = 0;
|
||||
if (g_bResetFileWatching) {
|
||||
if (g_bChasingDocTail) {
|
||||
SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_VIEW_CHASING_DOCTAIL, 1), 0);
|
||||
}
|
||||
g_iFileWatchingMode = 0;
|
||||
}
|
||||
InstallFileWatching(NULL);
|
||||
bEnableSaveSettings = true;
|
||||
@ -8022,8 +8090,12 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
|
||||
SHAddToRecentDocs(SHARD_PATHW,szFileName);
|
||||
|
||||
// Install watching of the current file
|
||||
if (!bReload && bResetFileWatching)
|
||||
iFileWatchingMode = 0;
|
||||
if (!bReload && g_bResetFileWatching) {
|
||||
if (g_bChasingDocTail) {
|
||||
SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_VIEW_CHASING_DOCTAIL, 1), 0);
|
||||
}
|
||||
g_iFileWatchingMode = 0;
|
||||
}
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
|
||||
// the .LOG feature ...
|
||||
@ -8103,7 +8175,7 @@ bool FileRevert(LPCWSTR szFileName)
|
||||
|
||||
if (FileLoad(true,false,true,false,true,tchFileName2))
|
||||
{
|
||||
if (bIsTail && iFileWatchingMode == 2) {
|
||||
if (bIsTail && g_iFileWatchingMode == 2) {
|
||||
SendMessage(g_hwndEdit, SCI_DOCUMENTEND, 0, 0);
|
||||
EditEnsureSelectionVisible(g_hwndEdit);
|
||||
}
|
||||
@ -8261,8 +8333,12 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
|
||||
|
||||
_SetDocumentModified(false);
|
||||
// Install watching of the current file
|
||||
if (bSaveAs && bResetFileWatching)
|
||||
iFileWatchingMode = 0;
|
||||
if (bSaveAs && g_bResetFileWatching) {
|
||||
if (g_bChasingDocTail) {
|
||||
SendMessage(g_hwndMain, WM_COMMAND, MAKELONG(IDM_VIEW_CHASING_DOCTAIL, 1), 0);
|
||||
}
|
||||
g_iFileWatchingMode = 0;
|
||||
}
|
||||
InstallFileWatching(g_wchCurFile);
|
||||
}
|
||||
}
|
||||
@ -8942,23 +9018,23 @@ void InstallFileWatching(LPCWSTR lpszFile)
|
||||
HANDLE hFind;
|
||||
|
||||
// Terminate
|
||||
if (!iFileWatchingMode || !lpszFile || StringCchLen(lpszFile,MAX_PATH) == 0)
|
||||
if (!g_iFileWatchingMode || !lpszFile || StringCchLen(lpszFile,MAX_PATH) == 0)
|
||||
{
|
||||
if (bRunningWatch)
|
||||
if (g_bRunningWatch)
|
||||
{
|
||||
if (hChangeHandle) {
|
||||
FindCloseChangeNotification(hChangeHandle);
|
||||
hChangeHandle = NULL;
|
||||
}
|
||||
KillTimer(NULL,ID_WATCHTIMER);
|
||||
bRunningWatch = false;
|
||||
g_bRunningWatch = false;
|
||||
dwChangeNotifyTime = 0;
|
||||
}
|
||||
}
|
||||
else // Install
|
||||
{
|
||||
// Terminate previous watching
|
||||
if (bRunningWatch) {
|
||||
if (g_bRunningWatch) {
|
||||
if (hChangeHandle) {
|
||||
FindCloseChangeNotification(hChangeHandle);
|
||||
hChangeHandle = NULL;
|
||||
@ -8987,7 +9063,7 @@ void InstallFileWatching(LPCWSTR lpszFile)
|
||||
FILE_NOTIFY_CHANGE_SIZE | \
|
||||
FILE_NOTIFY_CHANGE_LAST_WRITE);
|
||||
|
||||
bRunningWatch = true;
|
||||
g_bRunningWatch = true;
|
||||
dwChangeNotifyTime = 0;
|
||||
}
|
||||
UpdateToolbar();
|
||||
@ -9001,7 +9077,7 @@ void InstallFileWatching(LPCWSTR lpszFile)
|
||||
//
|
||||
void CALLBACK WatchTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
|
||||
{
|
||||
if (bRunningWatch)
|
||||
if (g_bRunningWatch)
|
||||
{
|
||||
if (dwChangeNotifyTime > 0 && GetTickCount() - dwChangeNotifyTime > dwAutoReloadTimeout)
|
||||
{
|
||||
@ -9010,7 +9086,7 @@ void CALLBACK WatchTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
|
||||
hChangeHandle = NULL;
|
||||
}
|
||||
KillTimer(NULL,ID_WATCHTIMER);
|
||||
bRunningWatch = false;
|
||||
g_bRunningWatch = false;
|
||||
dwChangeNotifyTime = 0;
|
||||
SendMessage(g_hwndMain,WM_CHANGENOTIFY,0,0);
|
||||
}
|
||||
@ -9037,13 +9113,13 @@ void CALLBACK WatchTimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
|
||||
FindCloseChangeNotification(hChangeHandle);
|
||||
hChangeHandle = NULL;
|
||||
}
|
||||
if (iFileWatchingMode == 2) {
|
||||
bRunningWatch = true; /* ! */
|
||||
if (g_iFileWatchingMode == 2) {
|
||||
g_bRunningWatch = true; /* ! */
|
||||
dwChangeNotifyTime = GetTickCount();
|
||||
}
|
||||
else {
|
||||
KillTimer(NULL,ID_WATCHTIMER);
|
||||
bRunningWatch = false;
|
||||
g_bRunningWatch = false;
|
||||
dwChangeNotifyTime = 0;
|
||||
SendMessage(g_hwndMain,WM_CHANGENOTIFY,0,0);
|
||||
}
|
||||
|
||||
@ -342,6 +342,8 @@ BEGIN
|
||||
MENUITEM "Zoom &Out\tCtrl+-", IDM_VIEW_ZOOMOUT
|
||||
MENUITEM "Reset &Zoom\tCtrl+0", IDM_VIEW_RESETZOOM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Doc Tail Chasing", IDM_VIEW_CHASING_DOCTAIL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Copy Position Args\tCtrl+Shift+K", CMD_COPYWINPOS
|
||||
MENUITEM "Snap to Default Position\tCtrl+Shift+P", CMD_DEFAULTWINPOS
|
||||
MENUITEM "Scroll Past End of &File", IDM_VIEW_SCROLLPASTEOF
|
||||
@ -1523,12 +1525,13 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDT_FILE_PRINT "Print"
|
||||
IDT_FILE_OPENFAV "Favorites"
|
||||
IDT_FILE_ADDTOFAV "Add to Favorites"
|
||||
IDT_VIEW_TOGGLEFOLDS "Toggle Folds"
|
||||
IDT_FILE_LAUNCH "Execute Document"
|
||||
IDT_VIEW_TOGGLE_VIEW "Focused View"
|
||||
IDT_FILE_PRINT "Print"
|
||||
IDT_FILE_OPENFAV "Favorites"
|
||||
IDT_FILE_ADDTOFAV "Add to Favorites"
|
||||
IDT_VIEW_TOGGLEFOLDS "Toggle Folds"
|
||||
IDT_FILE_LAUNCH "Execute Document"
|
||||
IDT_VIEW_TOGGLE_VIEW "Focused View"
|
||||
IDT_VIEW_CHASING_DOCTAIL "Doc Tail Chasing"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
|
||||
@ -242,15 +242,19 @@ DeclareSciCallV0(NewLine, NEWLINE)
|
||||
//
|
||||
// Scrolling and automatic scrolling
|
||||
//
|
||||
DeclareSciCallV2(SetVisiblePolicy, SETVISIBLEPOLICY, int, flags, DocLn, lines)
|
||||
DeclareSciCallV0(ChooseCaretX, CHOOSECARETX)
|
||||
DeclareSciCallV0(ScrollToStart, SCROLLTOSTART)
|
||||
DeclareSciCallV0(ScrollToEnd, SCROLLTOEND)
|
||||
DeclareSciCallV0(ScrollCaret, SCROLLCARET)
|
||||
DeclareSciCallV0(ChooseCaretX, CHOOSECARETX)
|
||||
DeclareSciCallV2(LineScroll, LINESCROLL, DocPos, columns, DocLn, lines)
|
||||
DeclareSciCallV2(ScrollRange, SCROLLRANGE, DocPos, secondaryPos, DocPos, primaryPos)
|
||||
DeclareSciCallV1(SetScrollWidth, SETSCROLLWIDTH, int, width)
|
||||
DeclareSciCallV1(SetEndAtLastLine, SETENDATLASTLINE, bool, flag)
|
||||
DeclareSciCallR0(GetXoffset, GETXOFFSET, int)
|
||||
DeclareSciCallV1(SetXoffset, SETXOFFSET, int, offset)
|
||||
DeclareSciCallV2(SetVisiblePolicy, SETVISIBLEPOLICY, int, flags, DocLn, lines)
|
||||
|
||||
|
||||
|
||||
DeclareSciCallR0(LinesOnScreen, LINESONSCREEN, DocLn)
|
||||
DeclareSciCallR0(GetFirstVisibleLine, GETFIRSTVISIBLELINE, DocLn)
|
||||
|
||||
@ -429,6 +429,7 @@
|
||||
#define IDM_VIEW_CURRENTSCHEME 40457
|
||||
#define IDM_VIEW_SCROLLPASTEOF 40458
|
||||
#define IDM_VIEW_TOGGLE_VIEW 40459
|
||||
#define IDM_VIEW_CHASING_DOCTAIL 40460
|
||||
#define IDM_HELP_ABOUT 40500
|
||||
#define IDM_HELP_CMD 40501
|
||||
#define IDM_HELP_ONLINEDOCUMENTATION 40502
|
||||
@ -460,6 +461,7 @@
|
||||
#define IDT_VIEW_TOGGLEFOLDS 40723
|
||||
#define IDT_FILE_LAUNCH 40724
|
||||
#define IDT_VIEW_TOGGLE_VIEW 40725
|
||||
#define IDT_VIEW_CHASING_DOCTAIL 40726
|
||||
#define IDS_SAVEPOS 40800
|
||||
#define IDS_RESETPOS 40801
|
||||
#define IDS_PREVIEW 40802
|
||||
|
||||
Loading…
Reference in New Issue
Block a user