Merge pull request #167 from RaiKoHoff/Remember_Bookmarks

New feature: auto remember bookmarks in recent file history
This commit is contained in:
Derick Payne 2017-11-06 11:32:02 +02:00 committed by GitHub
commit 83c4c98b13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 156 additions and 53 deletions

View File

@ -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()

View File

@ -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);

View File

@ -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]);
}
}

View File

@ -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);

View File

@ -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();

View File

@ -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;
}