mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge pull request #167 from RaiKoHoff/Remember_Bookmarks
New feature: auto remember bookmarks in recent file history
This commit is contained in:
commit
83c4c98b13
59
src/Edit.c
59
src/Edit.c
@ -4610,13 +4610,13 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
|
||||
if (StringCchLenA(lpefr->szFind,COUNTOF(lpefr->szFind))) {
|
||||
if (GetDlgItemTextA2W(CP_UTF8,hwnd,IDC_FINDTEXT,lpefr->szFindUTF8,COUNTOF(lpefr->szFindUTF8))) {
|
||||
GetDlgItemText(hwnd,IDC_FINDTEXT,tch,COUNTOF(tch));
|
||||
MRU_Add(mruFind,tch,0,0);
|
||||
MRU_Add(mruFind,tch,0,0,NULL);
|
||||
}
|
||||
}
|
||||
if (StringCchLenA(lpefr->szReplace,COUNTOF(lpefr->szReplace))) {
|
||||
if (GetDlgItemTextA2W(CP_UTF8,hwnd,IDC_REPLACETEXT,lpefr->szReplaceUTF8,COUNTOF(lpefr->szReplaceUTF8))) {
|
||||
GetDlgItemText(hwnd,IDC_REPLACETEXT,tch,COUNTOF(tch));
|
||||
MRU_Add(mruReplace,tch,0,0);
|
||||
MRU_Add(mruReplace,tch,0,0,NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -5329,7 +5329,7 @@ void EditMarkAll(HWND hwnd, BOOL bMarkOccurrencesMatchCase, BOOL bMarkOccurrence
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// CompleteWord()
|
||||
// EditCompleteWord()
|
||||
// Auto-complete words (by Aleksandar Lekov)
|
||||
//
|
||||
struct WLIST {
|
||||
@ -5337,7 +5337,7 @@ struct WLIST {
|
||||
struct WLIST* next;
|
||||
};
|
||||
|
||||
void CompleteWord(HWND hwnd, BOOL autoInsert) {
|
||||
void EditCompleteWord(HWND hwnd, BOOL autoInsert) {
|
||||
const char* NON_WORD = bAccelWordNavigation ? DelimCharsAccel : DelimChars;
|
||||
|
||||
int iCurrentPos = (int)SendMessage(hwnd, SCI_GETCURRENTPOS, 0, 0);
|
||||
@ -6235,7 +6235,6 @@ BOOL EditSortDlg(HWND hwnd,int *piSortFlags)
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// EditSortDlg()
|
||||
@ -6254,6 +6253,56 @@ void EditSetAccelWordNav(HWND hwnd,BOOL bAccelWordNav)
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// EditGetBookmarkList()
|
||||
//
|
||||
void EditGetBookmarkList(HWND hwnd, LPWSTR pszBookMarks, int cchLength)
|
||||
{
|
||||
WCHAR tchLine[32];
|
||||
StringCchCopyW(pszBookMarks, cchLength, L"");
|
||||
int bitmask = (1 << MARKER_NP3_BOOKMARK);
|
||||
int iLine = -1;
|
||||
do {
|
||||
iLine = (int)SendMessage(hwnd, SCI_MARKERNEXT, iLine + 1, bitmask);
|
||||
if (iLine >= 0) {
|
||||
StringCchPrintfW(tchLine, COUNTOF(tchLine), L"%i;", iLine);
|
||||
StringCchCatW(pszBookMarks, cchLength, tchLine);
|
||||
}
|
||||
} while (iLine >= 0);
|
||||
|
||||
StrTrimW(pszBookMarks, L";");
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// EditSetBookmarkList()
|
||||
//
|
||||
void EditSetBookmarkList(HWND hwnd, LPCWSTR pszBookMarks)
|
||||
{
|
||||
WCHAR lnNum[32];
|
||||
const WCHAR* p1 = pszBookMarks;
|
||||
if (!p1) return;
|
||||
|
||||
int iLineMax = (int)SendMessage(hwnd, SCI_GETLINECOUNT, 0, 0) - 1;
|
||||
|
||||
while (*p1) {
|
||||
const WCHAR* p2 = StrChr(p1, L';');
|
||||
if (!p2)
|
||||
p2 = StrEnd(p1);
|
||||
StringCchCopyNW(lnNum, COUNTOF(lnNum), p1, min((int)(p2 - p1), 16));
|
||||
int iLine = 0;
|
||||
if (swscanf_s(lnNum, L"%i", &iLine) == 1) {
|
||||
if (iLine <= iLineMax) {
|
||||
SendMessage(hwnd, SCI_MARKERADD, iLine, MARKER_NP3_BOOKMARK);
|
||||
}
|
||||
}
|
||||
p1 = (*p2) ? (p2 + 1) : p2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// FileVars_Init()
|
||||
|
||||
@ -118,7 +118,9 @@ void EditPrintInit();
|
||||
void EditMatchBrace(HWND);
|
||||
void EditMarkAll(HWND,BOOL,BOOL);
|
||||
void EditSetAccelWordNav(HWND,BOOL);
|
||||
void CompleteWord(HWND,BOOL);
|
||||
void EditCompleteWord(HWND,BOOL);
|
||||
void EditGetBookmarkList(HWND,LPWSTR,int);
|
||||
void EditSetBookmarkList(HWND,LPCWSTR);
|
||||
|
||||
|
||||
//void SciInitThemes(HWND);
|
||||
|
||||
@ -1793,7 +1793,9 @@ BOOL MRU_Destroy(LPMRULIST pmru)
|
||||
for (i = 0; i < pmru->iSize; i++) {
|
||||
if (pmru->pszItems[i])
|
||||
LocalFree(pmru->pszItems[i]);
|
||||
}
|
||||
if (pmru->pszBookMarks[i])
|
||||
LocalFree(pmru->pszBookMarks[i]);
|
||||
}
|
||||
ZeroMemory(pmru,sizeof(MRULIST));
|
||||
LocalFree(pmru);
|
||||
return TRUE;
|
||||
@ -1807,7 +1809,7 @@ int MRU_Compare(LPMRULIST pmru,LPCWSTR psz1,LPCWSTR psz2)
|
||||
return(StringCchCompareX(psz1,psz2));
|
||||
}
|
||||
|
||||
BOOL MRU_Add(LPMRULIST pmru,LPCWSTR pszNew, int iEnc, int iPos)
|
||||
BOOL MRU_Add(LPMRULIST pmru,LPCWSTR pszNew, int iEnc, int iPos, LPCWSTR pszBookMarks)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < pmru->iSize; i++) {
|
||||
@ -1821,12 +1823,18 @@ BOOL MRU_Add(LPMRULIST pmru,LPCWSTR pszNew, int iEnc, int iPos)
|
||||
pmru->pszItems[i] = pmru->pszItems[i - 1];
|
||||
pmru->iEncoding[i] = pmru->iEncoding[i - 1];
|
||||
pmru->iCaretPos[i] = pmru->iCaretPos[i - 1];
|
||||
pmru->pszBookMarks[i] = pmru->pszBookMarks[i - 1];
|
||||
}
|
||||
pmru->pszItems[0] = StrDup(pszNew);
|
||||
|
||||
pmru->iEncoding[0] = iEnc;
|
||||
pmru->iCaretPos[0] = (bPreserveCaretPos) ? iPos : 0;
|
||||
|
||||
if (pszBookMarks)
|
||||
pmru->pszBookMarks[0] = StrDup(pszBookMarks);
|
||||
else
|
||||
pmru->pszBookMarks[0] = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1854,7 +1862,7 @@ BOOL MRU_FindFile(LPMRULIST pmru,LPCWSTR pszFile,int* iIndex) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL MRU_AddFile(LPMRULIST pmru,LPCWSTR pszFile,BOOL bRelativePath,BOOL bUnexpandMyDocs,int iEnc,int iPos) {
|
||||
BOOL MRU_AddFile(LPMRULIST pmru,LPCWSTR pszFile,BOOL bRelativePath,BOOL bUnexpandMyDocs,int iEnc,int iPos, LPCWSTR pszBookMarks) {
|
||||
|
||||
int i;
|
||||
if (MRU_FindFile(pmru,pszFile,&i)) {
|
||||
@ -1864,9 +1872,10 @@ BOOL MRU_AddFile(LPMRULIST pmru,LPCWSTR pszFile,BOOL bRelativePath,BOOL bUnexpan
|
||||
i = (i < pmru->iSize) ? i : (pmru->iSize - 1);
|
||||
}
|
||||
for (; i > 0; i--) {
|
||||
pmru->pszItems[i] = pmru->pszItems[i - 1];
|
||||
pmru->iEncoding[i] = pmru->iEncoding[i - 1];
|
||||
pmru->iCaretPos[i] = pmru->iCaretPos[i - 1];
|
||||
pmru->pszItems[i] = pmru->pszItems[i-1];
|
||||
pmru->iEncoding[i] = pmru->iEncoding[i-1];
|
||||
pmru->iCaretPos[i] = pmru->iCaretPos[i-1];
|
||||
pmru->pszBookMarks[i] = pmru->pszBookMarks[i-1];
|
||||
}
|
||||
if (bRelativePath) {
|
||||
WCHAR wchFile[MAX_PATH] = { L'\0' };
|
||||
@ -1879,6 +1888,11 @@ BOOL MRU_AddFile(LPMRULIST pmru,LPCWSTR pszFile,BOOL bRelativePath,BOOL bUnexpan
|
||||
pmru->iEncoding[0] = iEnc;
|
||||
pmru->iCaretPos[0] = (bPreserveCaretPos) ? iPos : 0;
|
||||
|
||||
if (pszBookMarks)
|
||||
pmru->pszBookMarks[0] = StrDup(pszBookMarks);
|
||||
else
|
||||
pmru->pszBookMarks[0] = StrDup(L"");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1891,14 +1905,19 @@ BOOL MRU_Delete(LPMRULIST pmru,int iIndex) {
|
||||
if (pmru->pszItems[iIndex]) {
|
||||
LocalFree(pmru->pszItems[iIndex]);
|
||||
}
|
||||
if (pmru->pszBookMarks[iIndex]) {
|
||||
LocalFree(pmru->pszBookMarks[iIndex]);
|
||||
}
|
||||
for (i = iIndex; i < pmru->iSize-1; i++) {
|
||||
pmru->pszItems[i] = pmru->pszItems[i + 1];
|
||||
pmru->iEncoding[i] = pmru->iEncoding[i + 1];
|
||||
pmru->iCaretPos[i] = pmru->iCaretPos[i + 1];
|
||||
pmru->pszItems[i] = pmru->pszItems[i+1];
|
||||
pmru->iEncoding[i] = pmru->iEncoding[i+1];
|
||||
pmru->iCaretPos[i] = pmru->iCaretPos[i+1];
|
||||
pmru->pszBookMarks[i] = pmru->pszBookMarks[i+1];
|
||||
|
||||
pmru->pszItems[i+1] = NULL;
|
||||
pmru->iEncoding[i+1] = 0;
|
||||
pmru->iCaretPos[i+1] = 0;
|
||||
pmru->pszBookMarks[i+1] = NULL;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -1920,28 +1939,29 @@ BOOL MRU_DeleteFileFromStore(LPMRULIST pmru,LPCWSTR pszFile) {
|
||||
else
|
||||
i++;
|
||||
}
|
||||
|
||||
MRU_Save(pmruStore);
|
||||
MRU_Destroy(pmruStore);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL MRU_Empty(LPMRULIST pmru) {
|
||||
|
||||
int i;
|
||||
for (i = 0; i < pmru->iSize; i++) {
|
||||
BOOL MRU_Empty(LPMRULIST pmru)
|
||||
{
|
||||
for (int i = 0; i < pmru->iSize; i++) {
|
||||
if (pmru->pszItems[i]) {
|
||||
LocalFree(pmru->pszItems[i]);
|
||||
pmru->pszItems[i] = NULL;
|
||||
pmru->iEncoding[i] = 0;
|
||||
pmru->iCaretPos[i] = 0;
|
||||
if (pmru->pszBookMarks[i])
|
||||
LocalFree(pmru->pszBookMarks[i]);
|
||||
pmru->pszBookMarks[i] = NULL;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int MRU_Enum(LPMRULIST pmru,int iIndex,LPWSTR pszItem,int cchItem) {
|
||||
|
||||
int MRU_Enum(LPMRULIST pmru,int iIndex,LPWSTR pszItem,int cchItem)
|
||||
{
|
||||
if (pszItem == NULL || cchItem == 0) {
|
||||
int i = 0;
|
||||
while (i < pmru->iSize && pmru->pszItems[i])
|
||||
@ -1958,10 +1978,11 @@ int MRU_Enum(LPMRULIST pmru,int iIndex,LPWSTR pszItem,int cchItem) {
|
||||
}
|
||||
}
|
||||
|
||||
BOOL MRU_Load(LPMRULIST pmru) {
|
||||
|
||||
BOOL MRU_Load(LPMRULIST pmru)
|
||||
{
|
||||
WCHAR tchName[32] = { L'\0' };
|
||||
WCHAR tchItem[1024] = { L'\0' };
|
||||
WCHAR wchBookMarks[MRU_BMRK_SIZE] = { L'\0' };
|
||||
WCHAR *pIniSection = LocalAlloc(LPTR,sizeof(WCHAR)*32*1024);
|
||||
|
||||
MRU_Empty(pmru);
|
||||
@ -1985,6 +2006,9 @@ BOOL MRU_Load(LPMRULIST pmru) {
|
||||
pmru->iEncoding[n] = Encoding_MapIniSetting(TRUE,iCP);
|
||||
StringCchPrintf(tchName,COUNTOF(tchName),L"POS%.2i",i + 1);
|
||||
pmru->iCaretPos[n] = (bPreserveCaretPos) ? IniSectionGetInt(pIniSection,tchName,0) : 0;
|
||||
StringCchPrintf(tchName, COUNTOF(tchName), L"BMRK%.2i", i + 1);
|
||||
IniSectionGetString(pIniSection, tchName, L"", wchBookMarks, COUNTOF(wchBookMarks));
|
||||
pmru->pszBookMarks[n] = StrDup(wchBookMarks);
|
||||
++n;
|
||||
}
|
||||
}
|
||||
@ -2011,17 +2035,21 @@ BOOL MRU_Save(LPMRULIST pmru) {
|
||||
IniSectionSetString(pIniSection,tchName,tchItem);
|
||||
}
|
||||
else*/
|
||||
IniSectionSetString(pIniSection,tchName,pmru->pszItems[i]);
|
||||
IniSectionSetString(pIniSection,tchName,pmru->pszItems[i]);
|
||||
|
||||
if (pmru->iEncoding[i] > 0) {
|
||||
StringCchPrintf(tchName,COUNTOF(tchName),L"ENC%.2i",i + 1);
|
||||
int iCP = Encoding_MapIniSetting(FALSE,pmru->iEncoding[i]);
|
||||
IniSectionSetInt(pIniSection,tchName,iCP);
|
||||
}
|
||||
if (pmru->iCaretPos[i] > 0) {
|
||||
StringCchPrintf(tchName,COUNTOF(tchName),L"POS%.2i",i + 1);
|
||||
IniSectionSetInt(pIniSection,tchName,pmru->iCaretPos[i]);
|
||||
}
|
||||
if (pmru->iEncoding[i] > 0) {
|
||||
StringCchPrintf(tchName,COUNTOF(tchName),L"ENC%.2i",i + 1);
|
||||
int iCP = Encoding_MapIniSetting(FALSE,pmru->iEncoding[i]);
|
||||
IniSectionSetInt(pIniSection,tchName,iCP);
|
||||
}
|
||||
if (pmru->iCaretPos[i] > 0) {
|
||||
StringCchPrintf(tchName,COUNTOF(tchName),L"POS%.2i",i + 1);
|
||||
IniSectionSetInt(pIniSection,tchName,pmru->iCaretPos[i]);
|
||||
}
|
||||
if (pmru->pszBookMarks[i] && (StringCchLenW(pmru->pszBookMarks[i], MRU_BMRK_SIZE) > 0)) {
|
||||
StringCchPrintf(tchName, COUNTOF(tchName), L"BMRK%.2i", i + 1);
|
||||
IniSectionSetString(pIniSection, tchName, pmru->pszBookMarks[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
SaveIniSection(pmru->szRegKey,pIniSection);
|
||||
@ -2043,15 +2071,14 @@ BOOL MRU_MergeSave(LPMRULIST pmru,BOOL bAddFiles,BOOL bRelativePath,BOOL bUnexpa
|
||||
if (pmru->pszItems[i]) {
|
||||
WCHAR wchItem[MAX_PATH] = { L'\0' };
|
||||
PathAbsoluteFromApp(pmru->pszItems[i],wchItem,COUNTOF(wchItem),TRUE);
|
||||
MRU_AddFile(pmruBase,wchItem,bRelativePath,bUnexpandMyDocs,pmru->iEncoding[i],pmru->iCaretPos[i]);
|
||||
MRU_AddFile(pmruBase,wchItem,bRelativePath,bUnexpandMyDocs,pmru->iEncoding[i],pmru->iCaretPos[i],pmru->pszBookMarks[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
for (i = pmru->iSize-1; i >= 0; i--) {
|
||||
if (pmru->pszItems[i])
|
||||
MRU_Add(pmruBase,pmru->pszItems[i],pmru->iEncoding[i],pmru->iCaretPos[i]);
|
||||
MRU_Add(pmruBase,pmru->pszItems[i],pmru->iEncoding[i],pmru->iCaretPos[i],pmru->pszBookMarks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -215,6 +215,7 @@ UINT CharSetFromCodePage(UINT);
|
||||
#define MRU_MAXITEMS 24
|
||||
#define MRU_NOCASE 1
|
||||
#define MRU_UTF8 2
|
||||
#define MRU_BMRK_SIZE 1024
|
||||
|
||||
typedef struct _mrulist {
|
||||
|
||||
@ -224,14 +225,15 @@ typedef struct _mrulist {
|
||||
LPWSTR pszItems[MRU_MAXITEMS];
|
||||
int iEncoding[MRU_MAXITEMS];
|
||||
int iCaretPos[MRU_MAXITEMS];
|
||||
LPWSTR pszBookMarks[MRU_MAXITEMS];
|
||||
|
||||
} MRULIST, *PMRULIST, *LPMRULIST;
|
||||
|
||||
LPMRULIST MRU_Create(LPCWSTR,int,int);
|
||||
BOOL MRU_Destroy(LPMRULIST);
|
||||
BOOL MRU_Add(LPMRULIST,LPCWSTR,int,int);
|
||||
BOOL MRU_Add(LPMRULIST,LPCWSTR,int,int,LPCWSTR);
|
||||
BOOL MRU_FindFile(LPMRULIST,LPCWSTR,int*);
|
||||
BOOL MRU_AddFile(LPMRULIST,LPCWSTR,BOOL,BOOL,int,int);
|
||||
BOOL MRU_AddFile(LPMRULIST,LPCWSTR,BOOL,BOOL,int,int,LPCWSTR);
|
||||
BOOL MRU_Delete(LPMRULIST,int);
|
||||
BOOL MRU_DeleteFileFromStore(LPMRULIST,LPCWSTR);
|
||||
BOOL MRU_Empty(LPMRULIST);
|
||||
|
||||
@ -3800,7 +3800,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
int iPos = (int)SendMessage( hwndEdit , SCI_GETCURRENTPOS , 0 , 0);
|
||||
int iLine = (int)SendMessage( hwndEdit , SCI_LINEFROMPOSITION , iPos , 0 );
|
||||
|
||||
int bitmask = 1;
|
||||
int bitmask = (1 << MARKER_NP3_BOOKMARK);
|
||||
int iNextLine = (int)SendMessage( hwndEdit , SCI_MARKERNEXT , iLine+1 , bitmask );
|
||||
if( iNextLine == -1 )
|
||||
{
|
||||
@ -3849,7 +3849,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
int iLine = (int)SendMessage(hwndEdit, SCI_LINEFROMPOSITION, iPos, 0);
|
||||
|
||||
int bitmask = (int)SendMessage(hwndEdit, SCI_MARKERGET, iLine, MARKER_NP3_BOOKMARK);
|
||||
if (bitmask & 1) {
|
||||
if (bitmask & (1 << MARKER_NP3_BOOKMARK)) {
|
||||
// unset
|
||||
SendMessage(hwndEdit, SCI_MARKERDELETE, iLine, MARKER_NP3_BOOKMARK);
|
||||
}
|
||||
@ -3933,7 +3933,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
break;
|
||||
|
||||
case IDM_EDIT_COMPLETEWORD:
|
||||
CompleteWord(hwndEdit, TRUE);
|
||||
EditCompleteWord(hwndEdit, TRUE);
|
||||
break;
|
||||
|
||||
|
||||
@ -4519,7 +4519,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
|
||||
|
||||
case CMD_DEL:
|
||||
{
|
||||
if ((BOOL)SendMessage(hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0))
|
||||
SendMessage(hwndEdit, SCI_CLEAR, 0, 0);
|
||||
else {
|
||||
int token = BeginSelUndoAction();
|
||||
SendMessage(hwndEdit, SCI_CLEAR, 0, 0);
|
||||
EndSelUndoAction(token);
|
||||
@ -4528,7 +4530,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
|
||||
|
||||
case CMD_BACK:
|
||||
{
|
||||
if ((BOOL)SendMessage(hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0))
|
||||
SendMessage(hwndEdit, SCI_DELETEBACK, 0, 0);
|
||||
else {
|
||||
int token = BeginSelUndoAction();
|
||||
SendMessage(hwndEdit, SCI_DELETEBACK, 0, 0);
|
||||
EndSelUndoAction(token);
|
||||
@ -4579,8 +4583,11 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
int iStartPos = (int)SendMessage(hwndEdit,SCI_POSITIONFROMLINE,(WPARAM)iLine,0);
|
||||
int iEndPos = (int)SendMessage(hwndEdit,SCI_GETLINEENDPOSITION,(WPARAM)iLine,0);
|
||||
|
||||
if (iPos != iAnchor)
|
||||
SendMessage(hwndEdit,SCI_SETSEL,(WPARAM)iPos,(LPARAM)iPos);
|
||||
if (iPos != iAnchor) {
|
||||
int token = BeginSelUndoAction();
|
||||
SendMessage(hwndEdit, SCI_SETSEL, (WPARAM)iPos, (LPARAM)iPos);
|
||||
EndSelUndoAction(token);
|
||||
}
|
||||
else {
|
||||
if (iStartPos != iEndPos)
|
||||
SendMessage(hwndEdit,SCI_DELWORDRIGHT,0,0);
|
||||
@ -4593,13 +4600,13 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
|
||||
case CMD_CTRLTAB:
|
||||
{
|
||||
int token = BeginSelUndoAction();
|
||||
int token = ((BOOL)SendMessage(hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0)) ? -1 : BeginSelUndoAction();
|
||||
SendMessage(hwndEdit,SCI_SETTABINDENTS,FALSE,0);
|
||||
SendMessage(hwndEdit,SCI_SETUSETABS,TRUE,0);
|
||||
SendMessage(hwndEdit,SCI_TAB,0,0);
|
||||
SendMessage(hwndEdit,SCI_SETUSETABS,!bTabsAsSpaces,0);
|
||||
SendMessage(hwndEdit,SCI_SETTABINDENTS,bTabIndents,0);
|
||||
EndSelUndoAction(token);
|
||||
if (token >= 0) EndSelUndoAction(token);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -5322,7 +5329,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
if( iPrevLineLength == 0 )
|
||||
{
|
||||
int bitmask = (int)SendMessage( hwndEdit , SCI_MARKERGET , iCurLine-1 , 0 );
|
||||
if( bitmask & 1 )
|
||||
if( bitmask & (1 << MARKER_NP3_BOOKMARK))
|
||||
{
|
||||
SendMessage( hwndEdit , SCI_MARKERDELETE , iCurLine-1 , MARKER_NP3_BOOKMARK);
|
||||
SendMessage( hwndEdit , SCI_MARKERADD , iCurLine , MARKER_NP3_BOOKMARK);
|
||||
@ -5434,7 +5441,7 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
}
|
||||
}
|
||||
else if (bAutoCompleteWords && !SendMessage(hwndEdit, SCI_AUTOCACTIVE, 0, 0))
|
||||
CompleteWord(hwndEdit, FALSE);
|
||||
EditCompleteWord(hwndEdit, FALSE);
|
||||
break;
|
||||
|
||||
case SCN_MODIFIED:
|
||||
@ -7180,6 +7187,11 @@ BOOL FileIO(BOOL fLoad,LPCWSTR pszFileName,BOOL bNoEncDetect,int *ienc,int *ieol
|
||||
if (MRU_FindFile(pFileMRU,pszFileName,&idx)) {
|
||||
pFileMRU->iEncoding[idx] = *ienc;
|
||||
pFileMRU->iCaretPos[idx] = (bPreserveCaretPos) ? (int)SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0) : 0;
|
||||
WCHAR wchBookMarks[MRU_BMRK_SIZE] = { L'\0' };
|
||||
EditGetBookmarkList(hwndEdit, wchBookMarks, COUNTOF(wchBookMarks));
|
||||
if (pFileMRU->pszBookMarks[idx])
|
||||
LocalFree(pFileMRU->pszBookMarks[idx]);
|
||||
pFileMRU->pszBookMarks[idx] = StrDup(wchBookMarks);
|
||||
}
|
||||
fSuccess = EditSaveFile(hwndEdit,pszFileName,*ienc,pbCancelDataLoss,bSaveCopy);
|
||||
}
|
||||
@ -7346,11 +7358,15 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp
|
||||
fileEncoding = Encoding_Current(CPI_GET);
|
||||
Encoding_HasChanged(fileEncoding);
|
||||
int idx, iCaretPos = 0;
|
||||
LPCWSTR pszBookMarks = L"";
|
||||
if (!bReload && MRU_FindFile(pFileMRU,szFileName,&idx)) {
|
||||
iCaretPos = pFileMRU->iCaretPos[idx];
|
||||
pszBookMarks = pFileMRU->pszBookMarks[idx];
|
||||
}
|
||||
MRU_AddFile(pFileMRU,szFileName,flagRelativeFileMRU,flagPortableMyDocs,fileEncoding,iCaretPos);
|
||||
MRU_AddFile(pFileMRU,szFileName,flagRelativeFileMRU,flagPortableMyDocs,fileEncoding,iCaretPos,pszBookMarks);
|
||||
|
||||
EditSetBookmarkList(hwndEdit, pszBookMarks);
|
||||
|
||||
if (flagUseSystemMRU == 2)
|
||||
SHAddToRecentDocs(SHARD_PATHW,szFileName);
|
||||
|
||||
@ -7483,6 +7499,11 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
|
||||
if (MRU_FindFile(pFileMRU,szCurFile,&idx)) {
|
||||
pFileMRU->iEncoding[idx] = Encoding_Current(CPI_GET);
|
||||
pFileMRU->iCaretPos[idx] = (bPreserveCaretPos) ? (int)SendMessage(hwndEdit,SCI_GETCURRENTPOS,0,0) : 0;
|
||||
WCHAR wchBookMarks[MRU_BMRK_SIZE] = { L'\0' };
|
||||
EditGetBookmarkList(hwndEdit, wchBookMarks, COUNTOF(wchBookMarks));
|
||||
if (pFileMRU->pszBookMarks[idx])
|
||||
LocalFree(pFileMRU->pszBookMarks[idx]);
|
||||
pFileMRU->pszBookMarks[idx] = StrDup(wchBookMarks);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -7572,7 +7593,9 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
|
||||
int iCurrEnc = Encoding_Current(CPI_GET);
|
||||
Encoding_HasChanged(iCurrEnc);
|
||||
int iCaretPos = (int)SendMessage(hwndEdit, SCI_GETCURRENTPOS, 0, 0);
|
||||
MRU_AddFile(pFileMRU,szCurFile,flagRelativeFileMRU,flagPortableMyDocs,iCurrEnc,iCaretPos);
|
||||
WCHAR wchBookMarks[MRU_BMRK_SIZE] = { L'\0' };
|
||||
EditGetBookmarkList(hwndEdit, wchBookMarks, COUNTOF(wchBookMarks));
|
||||
MRU_AddFile(pFileMRU,szCurFile,flagRelativeFileMRU,flagPortableMyDocs,iCurrEnc,iCaretPos,wchBookMarks);
|
||||
if (flagUseSystemMRU == 2)
|
||||
SHAddToRecentDocs(SHARD_PATHW,szCurFile);
|
||||
UpdateToolbar();
|
||||
|
||||
@ -4193,7 +4193,7 @@ BOOL Style_StrGetAlpha(LPCWSTR lpszStyle, int *i) {
|
||||
*i = min(max(SC_ALPHA_TRANSPARENT, iValue), SC_ALPHA_OPAQUE);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user