From b4e9c91a3f1d28773b3ca05c5237dbc2fb437291 Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Thu, 13 Oct 2022 23:24:40 +0200 Subject: [PATCH] +enh: add option to auto-load most recent file from file history --- language/common_res.h | 182 ++++++++++++++-------------- language/np3_de_de/dialogs_de_de.rc | 8 +- language/np3_de_de/menu_de_de.rc | 1 + language/np3_en_us/dialogs_en_us.rc | 10 +- language/np3_en_us/menu_en_us.rc | 1 + src/Config/Config.cpp | 3 +- src/Dialogs.c | 7 +- src/Notepad3.c | 33 ++++- src/Notepad3.h | 1 + src/TypeDefs.h | 1 + src/Version.h | 2 +- 11 files changed, 144 insertions(+), 105 deletions(-) diff --git a/language/common_res.h b/language/common_res.h index b46a6ea54..1a03c155a 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -373,88 +373,89 @@ #define IDC_SAVEMRU 18048 #define IDC_REMOVE 18049 #define IDC_REMEMBERSEARCHPATTERN 18050 -#define IDC_STYLELIST 18051 -#define IDC_DEFAULTSCHEME 18052 -#define IDC_AUTOSELECT 18053 -#define IDC_STYLELABEL_ROOT 18054 -#define IDC_STYLEEDIT_ROOT 18055 -#define IDC_STYLELABEL 18056 -#define IDC_STYLEFORE 18057 -#define IDC_STYLEBACK 18058 -#define IDC_STYLEFONT 18059 -#define IDC_PREVIEW 18060 -#define IDC_STYLEDEFAULT 18061 -#define IDC_PREVSTYLE 18062 -#define IDC_NEXTSTYLE 18063 -#define IDC_IMPORT 18064 -#define IDC_EXPORT 18065 -#define IDC_TITLE 18066 -#define IDC_STYLEEDIT 18067 -#define IDC_PRINTER 18068 -#define IDC_FAVORITESDIR 18069 -#define IDC_GETFAVORITESDIR 18070 -#define IDC_FAVORITESDESCR 18071 -#define IDC_PWD_EDIT1 18072 -#define IDC_PWD_EDIT2 18073 -#define IDC_PWD_EDIT3 18074 -#define IDC_PWD_CHECK1 18075 -#define IDC_PWD_CHECK2 18076 -#define IDC_PWD_CHECK3 18077 -#define IDC_PWD_CHECK4 18078 -#define IDC_PWD_STATMPW 18079 -#define IDC_COLUMNWRAP 18080 -#define IDC_INFOBOXTEXT 18081 -#define IDC_INFOBOXCHECK 18082 -#define IDC_INFOBOXICON 18083 -#define IDC_VERSION 18084 -#define IDC_SCI_VERSION 18085 -#define IDC_COMPILER 18086 -#define IDC_COPYRIGHT 18087 -#define IDC_WEBPAGE2 18088 -#define IDC_WEBPAGE 18089 -#define IDR_RIZBITMAP 18090 -#define IDC_RIZONEBMP 18091 -#define IDC_COPYVERSTRG 18092 -#define IDC_RICHEDITABOUT 18093 -#define IDC_TRANSL_AUTH 18094 -#define IDC_TRANSPARENT 18095 -#define IDC_TAB_WIDTH 18096 -#define IDC_INDENT_DEPTH 18097 -#define IDC_TAB_AS_SPC 18098 -#define IDC_TAB_INDENTS 18099 -#define IDC_BACKTAB_INDENTS 18100 -#define IDC_WARN_INCONSISTENT_INDENTS 18101 -#define IDC_AUTO_DETECT_INDENTS 18102 -#define IDC_CMDLINEHELP 18103 -#define IDC_STYLEEDIT_HELP 18104 -#define IDC_RELIABLE_DETECTION_RES 18105 -#define IDC_LINE_TEXT 18106 -#define IDC_COLUMN_TEXT 18107 -#define IDC_INDENT_WIDTH_TAB 18108 -#define IDC_INDENT_WIDTH_SPC 18109 -#define IDC_INDENT_SUM_TAB 18110 -#define IDC_INDENT_SUM_SPC 18111 -#define IDC_INDENT_SUM_MIX 18112 -#define IDC_INDENT_BY_TABS 18113 -#define IDC_INDENT_BY_SPCS 18114 -#define IDC_INDENT_TAB_MODX 18115 -#define IDC_INDENT_SPC_MODX 18116 -#define IDC_ADDFAV_FILES 18117 -#define IDC_INFO_GROUPBOX 18118 -#define IDC_MULTIEDGELINE 18119 -#define IDC_SHOWEDGELINE 18120 -#define IDC_BACKGRDCOLOR 18121 -#define IDC_CLEAR_LIST 18122 -#define IDC_FINDESCCTRLCHR 18123 -#define IDC_REPLESCCTRLCHR 18124 -#define IDC_AUTOSAVE_ENABLE 18125 -#define IDC_AUTOSAVE_INTERVAL 18126 -#define IDC_AUTOSAVE_SUSPEND 18127 -#define IDC_AUTOSAVE_SHUTDOWN 18128 -#define IDC_AS_BACKUP_ENABLE 18129 -#define IDC_AS_BACKUP_AUTOSAVE 18130 -#define IDC_AS_BACKUP_SIDEBYSIDE 18131 -#define IDC_AS_BACKUP_OPENFOLDER 18132 +#define IDC_AUTOLOAD_MRU_FILE 18051 +#define IDC_STYLELIST 18052 +#define IDC_DEFAULTSCHEME 18053 +#define IDC_AUTOSELECT 18054 +#define IDC_STYLELABEL_ROOT 18055 +#define IDC_STYLEEDIT_ROOT 18056 +#define IDC_STYLELABEL 18057 +#define IDC_STYLEFORE 18058 +#define IDC_STYLEBACK 18059 +#define IDC_STYLEFONT 18060 +#define IDC_PREVIEW 18061 +#define IDC_STYLEDEFAULT 18062 +#define IDC_PREVSTYLE 18063 +#define IDC_NEXTSTYLE 18064 +#define IDC_IMPORT 18065 +#define IDC_EXPORT 18066 +#define IDC_TITLE 18067 +#define IDC_STYLEEDIT 18068 +#define IDC_PRINTER 18069 +#define IDC_FAVORITESDIR 18070 +#define IDC_GETFAVORITESDIR 18071 +#define IDC_FAVORITESDESCR 18072 +#define IDC_PWD_EDIT1 18073 +#define IDC_PWD_EDIT2 18074 +#define IDC_PWD_EDIT3 18075 +#define IDC_PWD_CHECK1 18076 +#define IDC_PWD_CHECK2 18077 +#define IDC_PWD_CHECK3 18078 +#define IDC_PWD_CHECK4 18079 +#define IDC_PWD_STATMPW 18080 +#define IDC_COLUMNWRAP 18081 +#define IDC_INFOBOXTEXT 18082 +#define IDC_INFOBOXCHECK 18083 +#define IDC_INFOBOXICON 18084 +#define IDC_VERSION 18085 +#define IDC_SCI_VERSION 18086 +#define IDC_COMPILER 18087 +#define IDC_COPYRIGHT 18088 +#define IDC_WEBPAGE2 18089 +#define IDC_WEBPAGE 18090 +#define IDR_RIZBITMAP 18091 +#define IDC_RIZONEBMP 18092 +#define IDC_COPYVERSTRG 18093 +#define IDC_RICHEDITABOUT 18094 +#define IDC_TRANSL_AUTH 18095 +#define IDC_TRANSPARENT 18096 +#define IDC_TAB_WIDTH 18097 +#define IDC_INDENT_DEPTH 18098 +#define IDC_TAB_AS_SPC 18099 +#define IDC_TAB_INDENTS 18100 +#define IDC_BACKTAB_INDENTS 18101 +#define IDC_WARN_INCONSISTENT_INDENTS 18102 +#define IDC_AUTO_DETECT_INDENTS 18103 +#define IDC_CMDLINEHELP 18104 +#define IDC_STYLEEDIT_HELP 18105 +#define IDC_RELIABLE_DETECTION_RES 18106 +#define IDC_LINE_TEXT 18107 +#define IDC_COLUMN_TEXT 18108 +#define IDC_INDENT_WIDTH_TAB 18109 +#define IDC_INDENT_WIDTH_SPC 18110 +#define IDC_INDENT_SUM_TAB 18111 +#define IDC_INDENT_SUM_SPC 18112 +#define IDC_INDENT_SUM_MIX 18113 +#define IDC_INDENT_BY_TABS 18114 +#define IDC_INDENT_BY_SPCS 18115 +#define IDC_INDENT_TAB_MODX 18116 +#define IDC_INDENT_SPC_MODX 18117 +#define IDC_ADDFAV_FILES 18118 +#define IDC_INFO_GROUPBOX 18119 +#define IDC_MULTIEDGELINE 18120 +#define IDC_SHOWEDGELINE 18121 +#define IDC_BACKGRDCOLOR 18122 +#define IDC_CLEAR_LIST 18123 +#define IDC_FINDESCCTRLCHR 18124 +#define IDC_REPLESCCTRLCHR 18125 +#define IDC_AUTOSAVE_ENABLE 18126 +#define IDC_AUTOSAVE_INTERVAL 18127 +#define IDC_AUTOSAVE_SUSPEND 18128 +#define IDC_AUTOSAVE_SHUTDOWN 18129 +#define IDC_AS_BACKUP_ENABLE 18130 +#define IDC_AS_BACKUP_AUTOSAVE 18131 +#define IDC_AS_BACKUP_SIDEBYSIDE 18132 +#define IDC_AS_BACKUP_OPENFOLDER 18133 #define IDC_RADIO_BTN_A 18200 #define IDC_RADIO_BTN_B 18201 @@ -812,14 +813,15 @@ #define IDM_SET_SAVEBEFORERUNNINGTOOLS 42030 #define IDM_SET_NOSAVERECENT 42031 #define IDM_SET_NOSAVEFINDREPL 42032 -#define IDM_SET_SAVESETTINGS 42033 -#define IDM_SET_SAVESETTINGSNOW 42034 -#define IDM_SET_AUTOCOMPLETEWORDS 42035 -#define IDM_SET_AUTOCLEXKEYWORDS 42036 -#define IDM_SET_ALTERNATE_WORD_SEPS 42037 -#define IDM_SET_NOPRESERVECARET 42038 -#define IDM_SET_MUTE_MESSAGEBEEP 42039 -#define IDM_SET_EVALTINYEXPRONSEL 42040 +#define IDM_SET_AUTOLOAD_MRU_FILE 42033 +#define IDM_SET_SAVESETTINGS 42034 +#define IDM_SET_SAVESETTINGSNOW 42035 +#define IDM_SET_AUTOCOMPLETEWORDS 42036 +#define IDM_SET_AUTOCLEXKEYWORDS 42037 +#define IDM_SET_ALTERNATE_WORD_SEPS 42038 +#define IDM_SET_NOPRESERVECARET 42039 +#define IDM_SET_MUTE_MESSAGEBEEP 42040 +#define IDM_SET_EVALTINYEXPRONSEL 42041 #define IDM_HELP_ABOUT 43000 #define IDM_HELP_CMD 43001 diff --git a/language/np3_de_de/dialogs_de_de.rc b/language/np3_de_de/dialogs_de_de.rc index a26330637..d9f487663 100644 --- a/language/np3_de_de/dialogs_de_de.rc +++ b/language/np3_de_de/dialogs_de_de.rc @@ -254,16 +254,16 @@ BEGIN PUSHBUTTON "Abbrechen",IDCANCEL,7,74,50,14 END -IDD_MUI_FILEMRU DIALOGEX 0, 0, 269, 160 +IDD_MUI_FILEMRU DIALOGEX 0, 0, 269, 172 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Zuletzt geöffnete Dateien" FONT 9, "Segoe UI", 400, 0, 0x1 BEGIN CONTROL "",IDC_FILEMRU,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,7,255,97 - CONTROL "&Letzte Caret Position merken.",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,120,10 CONTROL "&Speichere Historie beim Beenden.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,120,10 - CONTROL "&Letztes Suchmuster merken.",IDC_REMEMBERSEARCHPATTERN, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,130,120,10 + CONTROL "&Letzte Caret Position merken.",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,120,10 + CONTROL "&Letztes Suchmuster merken.",IDC_REMEMBERSEARCHPATTERN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,131,120,10 + CONTROL "&Lade letzte Datei beim Start autom.",IDC_AUTOLOAD_MRU_FILE,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,7,143,120,10 CONTROL "Verwerfen", IDC_REMOVE, "Button", BS_DEFSPLITBUTTON | WS_TABSTOP | WS_DISABLED, 212, 107, 50, 14 DEFPUSHBUTTON "OK",IDOK,154,139,50,14,WS_DISABLED PUSHBUTTON "Schließen",IDCANCEL,212,139,50,14 diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index 6ea12ff9b..b421a2652 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -492,6 +492,7 @@ BEGIN MENUITEM "Letzte Dateien merken", IDM_SET_NOSAVERECENT MENUITEM "Textposition speichern", IDM_SET_NOPRESERVECARET MENUITEM "Suchbegriffe speichern", IDM_SET_NOSAVEFINDREPL + MENUITEM "Letzte Datei beim Start laden", IDM_SET_AUTOLOAD_MRU_FILE END POPUP "&Fenster" BEGIN diff --git a/language/np3_en_us/dialogs_en_us.rc b/language/np3_en_us/dialogs_en_us.rc index 60706e9d4..fa440ed49 100644 --- a/language/np3_en_us/dialogs_en_us.rc +++ b/language/np3_en_us/dialogs_en_us.rc @@ -254,16 +254,16 @@ BEGIN PUSHBUTTON "Cancel",IDCANCEL,7,74,50,14 END -IDD_MUI_FILEMRU DIALOGEX 0, 0, 269, 160 +IDD_MUI_FILEMRU DIALOGEX 0, 0, 269, 172 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Open Recent File" FONT 9, "Segoe UI", 400, 0, 0x1 BEGIN CONTROL "",IDC_FILEMRU,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,7,255,97 - CONTROL "&Preserve caret position.",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,96,10 - CONTROL "&Save recent file list on exit.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,96,10 - CONTROL "&Remember search pattern.",IDC_REMEMBERSEARCHPATTERN, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,130,96,10 + CONTROL "&Save recent file list on exit.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,120,10 + CONTROL "&Preserve caret position.",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,119,120,10 + CONTROL "&Remember search pattern.",IDC_REMEMBERSEARCHPATTERN,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,7,131,120,10 + CONTROL "&Autoload most recent file on startup.",IDC_AUTOLOAD_MRU_FILE,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,7,143,120,10 CONTROL "Discard", IDC_REMOVE, "Button", BS_DEFSPLITBUTTON | WS_TABSTOP | WS_DISABLED, 212, 107, 50, 14 DEFPUSHBUTTON "OK",IDOK,154,139,50,14,WS_DISABLED PUSHBUTTON "Close",IDCANCEL,212,139,50,14 diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index c1696a817..256840411 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -492,6 +492,7 @@ BEGIN MENUITEM "Remember &Recent Files", IDM_SET_NOSAVERECENT MENUITEM "Preserve &Caret Position", IDM_SET_NOPRESERVECARET MENUITEM "Remember &Search Pattern", IDM_SET_NOSAVEFINDREPL + MENUITEM "&Autoload Recent File", IDM_SET_AUTOLOAD_MRU_FILE END POPUP "W&indow" BEGIN diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 1ebf1a6fc..a577abf00 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1432,6 +1432,7 @@ void LoadSettings() GET_BOOL_VALUE_FROM_INISECTION(SaveRecentFiles, true); GET_BOOL_VALUE_FROM_INISECTION(PreserveCaretPos, false); GET_BOOL_VALUE_FROM_INISECTION(SaveFindReplace, false); + GET_BOOL_VALUE_FROM_INISECTION(AutoLoadMRUFile, false); GET_BOOL_VALUE_FROM_INISECTION(DocReadOnlyMode, false); Defaults.EFR_Data.bFindClose = false; @@ -1885,7 +1886,7 @@ static bool _SaveSettings(bool bForceSaveSettings) SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveRecentFiles); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, PreserveCaretPos); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveFindReplace); - SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveFindReplace); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, AutoLoadMRUFile); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, DocReadOnlyMode); if (Settings.EFR_Data.bFindClose != Defaults.EFR_Data.bFindClose) { diff --git a/src/Dialogs.c b/src/Dialogs.c index b5e33ca87..25a7db4c4 100644 --- a/src/Dialogs.c +++ b/src/Dialogs.c @@ -2255,7 +2255,7 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPAR SetExplorerTheme(GetDlgItem(hwnd, IDCANCEL)); SetExplorerTheme(GetDlgItem(hwnd, IDC_REMOVE)); SetExplorerTheme(GetDlgItem(hwnd, IDC_RESIZEGRIP)); - int const ctl[] = { IDC_SAVEMRU, IDC_PRESERVECARET, IDC_REMEMBERSEARCHPATTERN, IDC_STATIC }; + int const ctl[] = { IDC_SAVEMRU, IDC_PRESERVECARET, IDC_REMEMBERSEARCHPATTERN, IDC_AUTOLOAD_MRU_FILE, IDC_STATIC }; for (int i = 0; i < COUNTOF(ctl); ++i) { SetWindowTheme(GetDlgItem(hwnd, ctl[i]), L"", L""); // remove theme for BS_AUTORADIOBUTTON } @@ -2301,6 +2301,7 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPAR CheckDlgButton(hwnd, IDC_SAVEMRU, SetBtn(Settings.SaveRecentFiles)); CheckDlgButton(hwnd, IDC_PRESERVECARET, SetBtn(Settings.PreserveCaretPos)); CheckDlgButton(hwnd, IDC_REMEMBERSEARCHPATTERN, SetBtn(Settings.SaveFindReplace)); + CheckDlgButton(hwnd, IDC_AUTOLOAD_MRU_FILE, SetBtn(Settings.AutoLoadMRUFile)); DialogEnableControl(hwnd, IDC_PRESERVECARET, Settings.SaveRecentFiles); @@ -2319,8 +2320,9 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPAR } Settings.SaveRecentFiles = IsButtonChecked(hwnd, IDC_SAVEMRU); - Settings.SaveFindReplace = IsButtonChecked(hwnd, IDC_REMEMBERSEARCHPATTERN); Settings.PreserveCaretPos = IsButtonChecked(hwnd, IDC_PRESERVECARET); + Settings.SaveFindReplace = IsButtonChecked(hwnd, IDC_REMEMBERSEARCHPATTERN); + Settings.AutoLoadMRUFile = IsButtonChecked(hwnd, IDC_AUTOLOAD_MRU_FILE); Path_Release(hFilePath); @@ -2340,6 +2342,7 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPAR hdwp = DeferCtlPos(hdwp, hwnd, IDC_SAVEMRU, 0, dy, SWP_NOSIZE); hdwp = DeferCtlPos(hdwp, hwnd, IDC_PRESERVECARET, 0, dy, SWP_NOSIZE); hdwp = DeferCtlPos(hdwp, hwnd, IDC_REMEMBERSEARCHPATTERN, 0, dy, SWP_NOSIZE); + hdwp = DeferCtlPos(hdwp, hwnd, IDC_AUTOLOAD_MRU_FILE, 0, dy, SWP_NOSIZE); EndDeferWindowPos(hdwp); ListView_SetColumnWidth(hwndLV, 0, LVSCW_AUTOSIZE_USEHEADER); } diff --git a/src/Notepad3.c b/src/Notepad3.c index 8bbc60a29..c4ec7e6ff 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1076,6 +1076,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, StringCchCat(s_wchWndClass, COUNTOF(s_wchWndClass), L"B"); } + // INI File Handling FindIniFile(); TestIniFile(); DWORD dwFileSize = 0UL; @@ -1087,7 +1088,9 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, } LoadSettings(); - // set AppUserModelID + // Autoload recent file on close + CheckAutoLoadMostRecent(); + PrivateSetCurrentProcessExplicitAppUserModelID(Settings2.AppUserModelID); (void)CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_SPEED_OVER_MEMORY); @@ -4281,6 +4284,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) CheckCmd(hmenu, IDM_SET_NOSAVERECENT, Settings.SaveRecentFiles); CheckCmd(hmenu, IDM_SET_NOPRESERVECARET, Settings.PreserveCaretPos); CheckCmd(hmenu, IDM_SET_NOSAVEFINDREPL, Settings.SaveFindReplace); + CheckCmd(hmenu, IDM_SET_AUTOLOAD_MRU_FILE, Settings.AutoLoadMRUFile); CheckCmd(hmenu, IDM_SET_EVALTINYEXPRONSEL, Settings.EvalTinyExprOnSelection); @@ -6298,6 +6302,11 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; + case IDM_SET_AUTOLOAD_MRU_FILE: + Settings.AutoLoadMRUFile = !Settings.AutoLoadMRUFile; + break; + + case IDM_SET_SAVEBEFORERUNNINGTOOLS: Settings.SaveBeforeRunningTools = !Settings.SaveBeforeRunningTools; break; @@ -9151,7 +9160,6 @@ void ParseCommandLine() FreeMem(lpFileBuf); } } - // Continue with next argument if (bContinue) { StringCchCopy(lp3, len, lp2); @@ -9164,6 +9172,26 @@ void ParseCommandLine() } +//============================================================================= +// +// CheckAutoLoadMostRecent() +// +void CheckAutoLoadMostRecent() +{ + // Add most recent from file history + if (Path_IsEmpty(s_pthArgFilePath) && Settings.AutoLoadMRUFile) { + if (MRU_Count(Globals.pFileMRU) > 0) { + LPWSTR const szFileBuf = Path_WriteAccessBuf(s_pthArgFilePath, PATHLONG_MAX_CCH); // reserve buffer + int const cchFileBuf = (int)Path_GetBufCount(s_pthArgFilePath); + MRU_Enum(Globals.pFileMRU, 0, szFileBuf, cchFileBuf); + Path_Sanitize(s_pthArgFilePath); + Path_UnQuoteSpaces(s_pthArgFilePath); + Path_AbsoluteFromApp(s_pthArgFilePath, true); + } + } +} + + //============================================================================= // // _DelayUpdateStatusbar() @@ -10090,6 +10118,7 @@ void UpdateSaveSettingsCmds() EnableCmd(hmenu, IDM_SET_NOSAVERECENT, bCanSav); EnableCmd(hmenu, IDM_SET_NOPRESERVECARET, Settings.SaveRecentFiles && bCanSav); EnableCmd(hmenu, IDM_SET_NOSAVEFINDREPL, bCanSav); + EnableCmd(hmenu, IDM_SET_AUTOLOAD_MRU_FILE, bCanSav); DrawMenuBar(Globals.hwndMain); } diff --git a/src/Notepad3.h b/src/Notepad3.h index ee0f7dbef..8ba6f95e3 100644 --- a/src/Notepad3.h +++ b/src/Notepad3.h @@ -123,6 +123,7 @@ void SetNotifyIconTitle(HWND hwnd); void SetSavePoint(); void ParseCommandLine(); +void CheckAutoLoadMostRecent(); void ShowZoomCallTip(); void ShowWrapAroundCallTip(bool forwardSearch); diff --git a/src/TypeDefs.h b/src/TypeDefs.h index e876c3486..638111301 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -558,6 +558,7 @@ typedef struct SETTINGS_T { bool SaveRecentFiles; bool PreserveCaretPos; bool SaveFindReplace; + bool AutoLoadMRUFile; int PathNameFormat; bool WordWrap; int WordWrapMode; diff --git a/src/Version.h b/src/Version.h index 948eeca6d..e4411cba8 100644 --- a/src/Version.h +++ b/src/Version.h @@ -151,7 +151,7 @@ inline LPCWSTR _Win10BuildToReleaseId(const DWORD build) #if defined(_MSC_VER) #if (_MSC_VER == 1933) #if (_MSC_FULL_VER >= 193331630) - #define VER_CPL MS Visual C++ 2022 v17.3.(4-5) + #define VER_CPL MS Visual C++ 2022 v17.3.(4-6) #elif (_MSC_FULL_VER >= 193331629) #define VER_CPL MS Visual C++ 2022 v17.3.(0-3) #endif