Merge pull request #854 from RaiKoHoff/Dev_NewFeatures

Merge bugfixes for release
This commit is contained in:
Rainer Kottenhoff 2018-12-06 03:48:38 +01:00 committed by GitHub
commit cbb585c3d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 119 additions and 91 deletions

View File

@ -13,7 +13,7 @@ LEGEND:
==================================================
==================================================
Version 5.18.1103.1407 (3 November 2018)
Version 5.18.1206.1448 (6 December 2018)
==================================================
--------------------------------------------------
@ -48,6 +48,10 @@ CHANGES:
- Show Zoom Percentage on magnification changes
- Tidy Notepad3.ini to remove all defaulted [Setting] items
- Change Default settings to make the first experience of Notepad3 more attractive...
- ANSI CodePage detection (CED) - allow less reliable results also
- Open Find/Replace: Use most recent search pattern instead of clipboard (if selection eis empty)
- Encoding affinity: UTF-8 instead of local ANSI code-page
- Replace dialog: tmp disable "mark all occ" in case of multi-line selection
--------------------------------------------------
FIXES:
@ -62,6 +66,8 @@ FIXES:
- In case of STD lexer only display "Default Text" in statusbar (indicator shows which one).
- Fixed resource file problem (preproc defines).
- Fixed save window Position (Default and Initial switch)
- Fixed problem with bad brace highlighting (indicator)
- if activated, ESC will close/minimize program immediately w/o canceling selection/tooltip first.
--------------------------------------------------
TRANSLATIONS (MUI):

View File

@ -68,12 +68,6 @@ IDR_RIZBITMAP BITMAP "rizonesoft.bmp"
IDC_COPY CURSOR "Copy.cur"
// NOT able to get "RichEdit Friendly Name Hyperlinks" up and running :-/ (https://blogs.msdn.microsoft.com/murrays/2009/09/24/richedit-friendly-name-hyperlinks/)
// ... "{\\field{\\*\\fldinst{HYPERLINK \"" VERSIONA_FILEVERSION_LONG "\"}}{\\fldrslt{https://www.rizonesoft.com/downloads/notepad3}}}\\par"
//"\\viewkind4\\uc1\\pard\\cf1\\f0\\fs20\\b1 " VERSIONA_FILEVERSION_LONG " \\cf0\\uc0\\par"
STRINGTABLE
BEGIN
@ -105,13 +99,14 @@ IDS_MUI_ABOUT_LIBS "\
\\cf0 Lewis Van Winkle (TinyExpr)\\tab https://github.com/codeplea/tinyexpr\\par\
\\cf0 \\par\
"
//
// Caution: To correctly access the site "https://github.com/craigo-"
// a No-Break Space " " (alt+0160) is added AFTER the "-" !
// For "craigo-": to access the right site "https://github.com/craigo-",
// a slash "/" is voluntarily added after the "craigo-" !
//
IDS_MUI_ABOUT_ACKNOWLEDGES "\
\\cf0 craigo-\\tab https://github.com/craigo- \\par\
\\cf0 craigo-\\tab https://github.com/craigo-/\\par\
\\cf0 lhmouse\\tab https://github.com/lhmouse\\par\
\\cf0 hpwamr\\tab https://github.com/hpwamr\\par\
\\cf0 engelhro\\tab https://github.com/engelhro\\par\
@ -138,13 +133,6 @@ IDS_MUI_ABOUT_LICENSES "\
END
//"\\trowd\\cellx4000\\cellx8000"
//"\\intbl cell 1\\cell"
//"\\intbl lots of text in cell two\\cell\\row"
//"\\trowd\\cellx4000\\cellx8000"
//"\\intbl row 2 cell 1\\cell"
//"\\intbl lots of text in row 2 cell two\\cell\\row"
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////

View File

@ -577,6 +577,11 @@
<a href="https://sourceforge.net/p/scintilla/bugs/2054/">Bug #2054</a>.
</li>
<li>
The C++ lexer interprets continued preprocessor lines correctly by reading all of
the logical line.
<a href="https://sourceforge.net/p/scintilla/bugs/2062/">Bug #2062</a>.
</li>
<li>
For SciTE's Find in Files, allow case-sensitivity and whole-word options when running
a user defined command.
<a href="https://sourceforge.net/p/scintilla/bugs/2053/">Bug #2053</a>.

View File

@ -201,17 +201,27 @@ struct EscapeSequence {
std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) {
std::string restOfLine;
Sci_Position i =0;
Sci_Position line = styler.GetLine(start);
Sci_Position pos = start;
Sci_Position endLine = styler.LineEnd(line);
char ch = styler.SafeGetCharAt(start, '\n');
const Sci_Position endLine = styler.LineEnd(styler.GetLine(start));
while (((start+i) < endLine) && (ch != '\r')) {
const char chNext = styler.SafeGetCharAt(start + i + 1, '\n');
if (ch == '/' && (chNext == '/' || chNext == '*'))
break;
if (allowSpace || (ch != ' '))
restOfLine += ch;
i++;
ch = chNext;
while (pos < endLine) {
if (ch == '\\' && ((pos + 1) == endLine)) {
// Continuation line
line++;
pos = styler.LineStart(line);
endLine = styler.LineEnd(line);
ch = styler.SafeGetCharAt(pos, '\n');
} else {
const char chNext = styler.SafeGetCharAt(pos + 1, '\n');
if (ch == '/' && (chNext == '/' || chNext == '*'))
break;
if (allowSpace || (ch != ' ')) {
restOfLine += ch;
}
pos++;
ch = chNext;
}
}
return restOfLine;
}

View File

@ -1054,7 +1054,7 @@ bool EditLoadFile(
size_t const cbNbytes4Analysis = (cbData < 200000L) ? cbData : 200000L;
int iPreferedEncoding = (bNfoDizDetected) ? g_DOSEncoding :
((Settings.UseDefaultForFileEncoding || (cbNbytes4Analysis == 0)) ? Settings.DefaultEncoding : CPI_ANSI_DEFAULT);
((Settings.UseDefaultForFileEncoding || (cbNbytes4Analysis == 0)) ? Settings.DefaultEncoding : PREFERRED_DEFAULT_ENCODING);
// --------------------------------------------------------------------------
bool bIsReliable = false;
@ -4998,7 +4998,7 @@ static void _DelayMarkAll(HWND hwnd, int delay, DocPos iStartPos)
//
// EditFindReplaceDlgProcW()
//
static char g_lastFind[FNDRPL_BUFFER] = { L'\0' };
static char s_lastFind[FNDRPL_BUFFER] = { L'\0' };
INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
{
@ -5017,11 +5017,12 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
static int iSaveMarkOcc = -1;
static bool bSaveOccVisible = false;
static bool bSaveTFBackSlashes = false;
static bool _bRestoreMarkOcc = true;
WCHAR tchBuf[FNDRPL_BUFFER] = { L'\0' };
switch (umsg)
{
case WM_INITDIALOG:
@ -5039,6 +5040,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
iSaveMarkOcc = s_bSwitchedFindReplace ? iSaveMarkOcc : Settings.MarkOccurrences;
bSaveOccVisible = s_bSwitchedFindReplace ? bSaveOccVisible : Settings.MarkOccurrencesMatchVisible;
_bRestoreMarkOcc = sg_pefrData->bMarkOccurences;
//const WORD wTabSpacing = (WORD)SendMessage(sg_pefrData->hwnd, SCI_GETTABWIDTH, 0, 0);; // dialog box units
//SendDlgItemMessage(hwnd, IDC_FINDTEXT, EM_SETTABSTOPS, 1, (LPARAM)&wTabSpacing);
@ -5108,6 +5110,12 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
DialogEnableWindow(hwnd, IDC_DOT_MATCH_ALL, false);
}
// switch off "mark all occ" in case of initial replace dialog on multiline selection
if (GetDlgItem(hwnd, IDC_REPLACE) && !s_bSwitchedFindReplace) {
if (Sci_IsMultiLineSelection()) {
sg_pefrData->bMarkOccurences = false;
}
}
if (sg_pefrData->bMarkOccurences) {
Settings.MarkOccurrences = 0;
Settings.MarkOccurrencesMatchVisible = false;
@ -5209,6 +5217,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
}
}
sg_pefrData->szFind[0] = '\0';
sg_pefrData->bMarkOccurences = _bRestoreMarkOcc;
Settings.MarkOccurrences = iSaveMarkOcc;
Settings.MarkOccurrencesMatchVisible = bSaveOccVisible;
@ -5279,7 +5288,8 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
EditEnsureSelectionVisible(Globals.hwndEdit);
DialogEnableWindow(hwnd, IDC_REPLACEINSEL, !SciCall_IsSelectionEmpty());
bool const bEnableReplInSel = !(SciCall_IsSelectionEmpty() || SciCall_IsSelectionRectangle());
DialogEnableWindow(hwnd, IDC_REPLACEINSEL, bEnableReplInSel);
break;
}
@ -5315,16 +5325,23 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
}
else { // (cchSelection <= 1)
// nothing is selected in the editor:
// if first time you bring up find/replace dialog,
// copy content clipboard to find box
char* pClip = EditGetClipboardText(hwnd, false, NULL, NULL);
if (pClip) {
size_t const len = StringCchLenA(pClip,0);
if (len) {
lpszSelection = AllocMem(len + 1, HEAP_ZERO_MEMORY);
StringCchCopyNA(lpszSelection, len + 1, pClip, len);
// if first time you bring up find/replace dialog,
// use most recent search pattern to find box
GetFindPattern(tchBuf, FNDRPL_BUFFER);
if (tchBuf[0] == L'\0') {
MRU_Enum(Globals.pMRUfind, 0, tchBuf, COUNTOF(tchBuf));
}
// no recent find pattern: copy content clipboard to find box
if (tchBuf[0] == L'\0') {
char* pClip = EditGetClipboardText(hwnd, false, NULL, NULL);
if (pClip) {
size_t const len = StringCchLenA(pClip, 0);
if (len) {
lpszSelection = AllocMem(len + 1, HEAP_ZERO_MEMORY);
StringCchCopyNA(lpszSelection, len + 1, pClip, len);
}
FreeMem(pClip);
}
FreeMem(pClip);
}
}
@ -5365,13 +5382,13 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
StringCchCopyNA(szFind, FNDRPL_BUFFER, szCmpBuf, FNDRPL_BUFFER);
}
bool bEnableF = (GetWindowTextLengthW(GetDlgItem(hwnd, IDC_FINDTEXT)) ||
bool const bEnableF = (GetWindowTextLengthW(GetDlgItem(hwnd, IDC_FINDTEXT)) ||
CB_ERR != SendDlgItemMessage(hwnd, IDC_FINDTEXT, CB_GETCURSEL, 0, 0));
bool bEnableR = (GetWindowTextLengthW(GetDlgItem(hwnd, IDC_REPLACETEXT)) ||
bool const bEnableR = (GetWindowTextLengthW(GetDlgItem(hwnd, IDC_REPLACETEXT)) ||
CB_ERR != SendDlgItemMessage(hwnd, IDC_REPLACETEXT, CB_GETCURSEL, 0, 0));
bool bEnableIS = !(bool)SendMessage(Globals.hwndEdit, SCI_GETSELECTIONEMPTY, 0, 0);
bool const bEnableIS = !(SciCall_IsSelectionEmpty() || SciCall_IsSelectionRectangle());
DialogEnableWindow(hwnd, IDOK, bEnableF);
DialogEnableWindow(hwnd, IDC_FINDPREV, bEnableF);
@ -5398,10 +5415,10 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
{
_SetSearchFlags(hwnd, sg_pefrData);
if (sg_pefrData->bMarkOccurences) {
if (sg_pefrData->bStateChanged || (StringCchCompareXA(g_lastFind, sg_pefrData->szFind) != 0)) {
if (sg_pefrData->bStateChanged || (StringCchCompareXA(s_lastFind, sg_pefrData->szFind) != 0)) {
_IGNORE_NOTIFY_CHANGE_;
if (EditToggleView(Globals.hwndEdit, false)) { _DeleteLineStateAll(LINESTATE_OCCURRENCE_MARK); }
StringCchCopyA(g_lastFind, COUNTOF(g_lastFind), sg_pefrData->szFind);
StringCchCopyA(s_lastFind, COUNTOF(s_lastFind), sg_pefrData->szFind);
RegExResult_t match = _FindHasMatch(Globals.hwndEdit, sg_pefrData, 0, (sg_pefrData->bMarkOccurences), false);
if (s_anyMatch != match) { s_anyMatch = match; }
// we have to set Sci's regex instance to first find (have substitution in place)
@ -5438,6 +5455,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
{
iSaveMarkOcc = Settings.MarkOccurrences;
bSaveOccVisible = Settings.MarkOccurrencesMatchVisible;
_bRestoreMarkOcc = true;
Settings.MarkOccurrences = 0;
Settings.MarkOccurrencesMatchVisible = false;
@ -5450,6 +5468,7 @@ INT_PTR CALLBACK EditFindReplaceDlgProcW(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
else { // switched OFF
Settings.MarkOccurrences = iSaveMarkOcc;
Settings.MarkOccurrencesMatchVisible = bSaveOccVisible;
_bRestoreMarkOcc = false;
//DialogEnableWindow(hwnd, IDC_TOGGLE_VISIBILITY, (Settings.MarkOccurrences > 0) && !Settings.MarkOccurrencesMatchVisible);
DialogEnableWindow(hwnd, IDC_TOGGLE_VISIBILITY, false);
if (EditToggleView(Globals.hwndEdit, false)) {
@ -6926,8 +6945,6 @@ static bool _HighlightIfBrace(HWND hwnd, DocPos iPos)
// clear indicator
SciCall_BraceBadLight(INVALID_POSITION);
SciCall_SetHighLightGuide(0);
if (!Settings2.UseOldStyleBraceMatching)
SciCall_BraceBadLightIndicator(false, INDIC_NP3_BAD_BRACE);
return true;
}
@ -6940,16 +6957,10 @@ static bool _HighlightIfBrace(HWND hwnd, DocPos iPos)
DocPos col2 = SciCall_GetColumn(iBrace2);
SciCall_BraceHighLight(iPos, iBrace2);
SciCall_SetHighLightGuide(min_i((int)col1, (int)col2));
if (!Settings2.UseOldStyleBraceMatching) {
SciCall_BraceHighLightIndicator(true, INDIC_NP3_MATCH_BRACE);
}
}
else {
SciCall_BraceBadLight(iPos);
SciCall_SetHighLightGuide(0);
if (!Settings2.UseOldStyleBraceMatching) {
SciCall_BraceHighLightIndicator(true, INDIC_NP3_BAD_BRACE);
}
}
return true;
}

View File

@ -56,6 +56,8 @@ extern bool g_bForceCompEncDetection;
#define Encoding_IsNONE(enc) ((enc) == CPI_NONE)
//~#define PREFERRED_DAFAULT_ENCODING CPI_ANSI_DEFAULT
#define PREFERRED_DEFAULT_ENCODING CPI_UTF8
typedef struct _np2encoding {
UINT uFlags;

View File

@ -85,8 +85,7 @@ static WCHAR s_wchTmpFilePath[MAX_PATH + 1] = { L'\0' };
static WCHAR* const s_tchAvailableLanguages = L"af-ZA be-BY de-DE es-ES en-GB fr-FR ja-JP nl-NL ru-RU zh-CN"; // en-US internal
static int s_iSettingsVersion = CFG_VER_NONE;
static bool s_bSaveSettings = true;
static int s_iSettingsVersion = CFG_VER_CURRENT;
static bool s_bEnableSaveSettings = true;
static prefix_t s_mxSBPrefix[STATUS_SECTOR_COUNT];
@ -1592,6 +1591,10 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl)
SendMessage(hwndEditCtrl, SCI_INDICSETFORE, INDIC_NP3_BAD_BRACE, RGB(0xFF, 0x00, 0x00));
SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_BAD_BRACE, 120);
SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_BAD_BRACE, 120);
if (!Settings2.UseOldStyleBraceMatching) {
SendMessage(hwndEditCtrl, SCI_BRACEHIGHLIGHTINDICATOR, true, INDIC_NP3_MATCH_BRACE);
SendMessage(hwndEditCtrl, SCI_BRACEBADLIGHTINDICATOR, true, INDIC_NP3_BAD_BRACE);
}
// paste into rectangular selection
SendMessage(hwndEditCtrl, SCI_SETMULTIPASTE, SC_MULTIPASTE_EACH, 0);
@ -2938,7 +2941,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
CheckMenuRadioItem(hmenu,IDM_VIEW_NOESCFUNC,IDM_VIEW_ESCEXIT,i,MF_BYCOMMAND);
i = (int)StringCchLenW(Globals.IniFile,COUNTOF(Globals.IniFile));
CheckCmd(hmenu,IDM_VIEW_SAVESETTINGS,s_bSaveSettings && i);
CheckCmd(hmenu,IDM_VIEW_SAVESETTINGS,Settings.SaveSettings && i);
EnableCmd(hmenu,IDM_VIEW_REUSEWINDOW,i);
EnableCmd(hmenu,IDM_VIEW_STICKYWINPOS,i);
@ -4999,11 +5002,11 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_VIEW_SAVESETTINGS:
if (IsCmdEnabled(hwnd, IDM_VIEW_SAVESETTINGS)) {
s_bSaveSettings = !s_bSaveSettings;
if (s_bSaveSettings)
Settings.SaveSettings = !Settings.SaveSettings;
if (Settings.SaveSettings == Defaults.SaveSettings)
IniSetString(L"Settings", L"SaveSettings", NULL);
else
IniSetBool(L"Settings", L"SaveSettings", s_bSaveSettings);
IniSetBool(L"Settings", L"SaveSettings", Settings.SaveSettings);
}
break;
@ -5065,26 +5068,21 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case CMD_ESCAPE:
if (SciCall_CallTipActive()) {
if (SciCall_CallTipActive() || SciCall_AutoCActive()) {
SciCall_CallTipCancel();
break;
}
if (SciCall_AutoCActive()) {
SciCall_AutoCCancel();
break;
}
if (!SciCall_IsSelectionEmpty()) {
DocPos const iCurPos = SciCall_GetCurrentPos();
EditSetSelectionEx(Globals.hwndEdit, iCurPos, iCurPos, -1, -1);
break;
}
if (Settings.EscFunction == 1) {
else if (Settings.EscFunction == 1) {
SendMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
else if (Settings.EscFunction == 2) {
PostMessage(hwnd, WM_CLOSE, 0, 0);
}
else {
if (!SciCall_IsSelectionEmpty()) {
DocPos const iCurPos = SciCall_GetCurrentPos();
EditSetSelectionEx(Globals.hwndEdit, iCurPos, iCurPos, -1, -1);
}
SciCall_Cancel();
}
break;
@ -6607,9 +6605,11 @@ void LoadSettings()
if (pIniSection)
{
// prerequisites
s_bSaveSettings = IniGetBool(L"Settings", L"SaveSettings", true);
s_iSettingsVersion = IniGetInt(L"Settings", L"SettingsVersion", CFG_VER_NONE);
Defaults.SaveSettings = true;
Settings.SaveSettings = IniGetBool(L"Settings", L"SaveSettings", Defaults.SaveSettings);
// first load "hard coded" .ini-Settings
// --------------------------------------------------------------------------
LoadIniSection(L"Settings2", pIniSection, cchIniSection);
@ -6641,7 +6641,7 @@ void LoadSettings()
// deprecated
Defaults.RenderingTechnology = IniSectionGetInt(pIniSection, L"SciDirectWriteTech", -111);
if ((Defaults.RenderingTechnology != -111) && s_bSaveSettings) {
if ((Defaults.RenderingTechnology != -111) && Settings.SaveSettings) {
// cleanup
IniSetString(L"Settings2", L"SciDirectWriteTech", NULL);
}
@ -6649,7 +6649,7 @@ void LoadSettings()
// Settings2 deprecated
Defaults.Bidirectional = IniSectionGetInt(pIniSection, L"EnableBidirectionalSupport", -111);
if ((Defaults.Bidirectional != -111) && s_bSaveSettings) {
if ((Defaults.Bidirectional != -111) && Settings.SaveSettings) {
// cleanup
IniSetString(L"Settings2", L"EnableBidirectionalSupport", NULL);
}
@ -6744,11 +6744,11 @@ void LoadSettings()
// --------------------------------------------------------------------------
#define GET_BOOL_VALUE_FROM_INISECTION(VARNAME,DEFAULT) \
Defaults.VARNAME = DEFAULT; \
Defaults.VARNAME = DEFAULT; \
Settings.VARNAME = IniSectionGetBool(pIniSection, STRGW(VARNAME), Defaults.VARNAME)
#define GET_INT_VALUE_FROM_INISECTION(VARNAME,DEFAULT,MIN,MAX) \
Defaults.VARNAME = DEFAULT; \
Defaults.VARNAME = DEFAULT; \
Settings.VARNAME = clampi(IniSectionGetInt(pIniSection, STRGW(VARNAME), Defaults.VARNAME),MIN,MAX)
GET_BOOL_VALUE_FROM_INISECTION(SaveRecentFiles, true);
@ -6837,15 +6837,15 @@ void LoadSettings()
GET_BOOL_VALUE_FROM_INISECTION(ViewWhiteSpace, false);
GET_BOOL_VALUE_FROM_INISECTION(ViewEOLs, false);
GET_INT_VALUE_FROM_INISECTION(DefaultEncoding, CPI_ANSI_DEFAULT, CED_NO_MAPPING, INT_MAX);
// if DefaultEncoding is not defined set to system's current code-page
int const iPrefEncIniSetting = Encoding_MapIniSetting(false, PREFERRED_DEFAULT_ENCODING);
GET_INT_VALUE_FROM_INISECTION(DefaultEncoding, iPrefEncIniSetting, CED_NO_MAPPING, Encoding_CountOf()-1);
Settings.DefaultEncoding = ((Settings.DefaultEncoding == CPI_NONE) ?
Encoding_MapIniSetting(true, (int)GetACP()) : Encoding_MapIniSetting(true, Settings.DefaultEncoding));
PREFERRED_DEFAULT_ENCODING : Encoding_MapIniSetting(true, Settings.DefaultEncoding));
GET_BOOL_VALUE_FROM_INISECTION(UseDefaultForFileEncoding, false);
GET_BOOL_VALUE_FROM_INISECTION(SkipUnicodeDetection, false);
GET_BOOL_VALUE_FROM_INISECTION(SkipANSICodePageDetection, false);
GET_BOOL_VALUE_FROM_INISECTION(LoadASCIIasUTF8, false);
GET_BOOL_VALUE_FROM_INISECTION(LoadASCIIasUTF8, true);
GET_BOOL_VALUE_FROM_INISECTION(LoadNFOasOEM, true);
GET_BOOL_VALUE_FROM_INISECTION(NoEncodingTags, false);
GET_INT_VALUE_FROM_INISECTION(DefaultEOLMode, SC_EOL_CRLF, SC_EOL_CRLF, SC_EOL_LF);
@ -7077,7 +7077,7 @@ void LoadSettings()
// SaveSettings()
//
#define SAVE_VALUE_IF_NOT_EQ_DEFAULT(TYPE,VARNAME) \
#define SAVE_VALUE_IF_NOT_EQ_DEFAULT(TYPE,VARNAME) \
if (Settings.VARNAME != Defaults.VARNAME) { \
IniSectionSet##TYPE(pIniSection, STRGW(VARNAME), Settings.VARNAME); \
}
@ -7093,8 +7093,11 @@ void SaveSettings(bool bSaveSettingsNow)
CreateIniFile();
if (!(s_bSaveSettings || bSaveSettingsNow)) {
IniSetBool(L"Settings", L"SaveSettings", s_bSaveSettings);
if (!(Settings.SaveSettings || bSaveSettingsNow)) {
IniSetInt(L"Settings", L"SettingsVersion", CFG_VER_CURRENT);
if (Settings.SaveSettings != Defaults.SaveSettings) {
IniSetBool(L"Settings", L"SaveSettings", Settings.SaveSettings);
}
return;
}
// update window placement
@ -7107,10 +7110,11 @@ void SaveSettings(bool bSaveSettingsNow)
int const cchIniSection = INISECTIONBUFCNT * HUGE_BUFFER;
WCHAR *pIniSection = AllocMem(sizeof(WCHAR) * cchIniSection, HEAP_ZERO_MEMORY);
if (pIniSection) {
if (pIniSection)
{
IniSectionSetInt(pIniSection, L"SettingsVersion", CFG_VER_CURRENT);
IniSectionSetBool(pIniSection, L"SaveSettings", s_bSaveSettings);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveSettings);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveRecentFiles);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, PreserveCaretPos);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SaveFindReplace);
@ -7200,9 +7204,10 @@ void SaveSettings(bool bSaveSettingsNow)
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ViewWhiteSpace);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ViewEOLs);
if (Settings.DefaultEncoding != Defaults.DefaultEncoding) {
IniSectionSetInt(pIniSection, L"DefaultEncoding", Encoding_MapIniSetting(false, Settings.DefaultEncoding));
}
Settings.DefaultEncoding = Encoding_MapIniSetting(false, Settings.DefaultEncoding);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, DefaultEncoding);
Settings.DefaultEncoding = Encoding_MapIniSetting(true, Settings.DefaultEncoding);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, UseDefaultForFileEncoding);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SkipUnicodeDetection);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SkipANSICodePageDetection);
@ -7905,8 +7910,8 @@ int FindIniFile() {
bFound = _CheckIniFile(tchPath,tchModule);
}
if (bFound) {
if (bFound)
{
// allow two redirections: administrator -> user -> custom
if (_CheckIniFileRedirect(MKWCS(APPNAME), MKWCS(APPNAME) L".ini", tchPath, tchModule)) {
_CheckIniFileRedirect(MKWCS(APPNAME), MKWCS(APPNAME) L".ini", tchPath, tchModule);
@ -8834,7 +8839,7 @@ void UpdateSettingsCmds()
{
HMENU hmenu = GetSystemMenu(Globals.hwndMain, false);
bool hasIniFile = (StringCchLenW(Globals.IniFile,COUNTOF(Globals.IniFile)) > 0 || StringCchLenW(s_wchIniFile2,COUNTOF(s_wchIniFile2)) > 0);
CheckCmd(hmenu, IDM_VIEW_SAVESETTINGS, s_bSaveSettings && s_bEnableSaveSettings);
CheckCmd(hmenu, IDM_VIEW_SAVESETTINGS, Settings.SaveSettings && s_bEnableSaveSettings);
EnableCmd(hmenu, IDM_VIEW_SAVESETTINGS, hasIniFile && s_bEnableSaveSettings);
EnableCmd(hmenu, IDM_VIEW_SAVESETTINGSNOW, hasIniFile && s_bEnableSaveSettings);
if (SciCall_GetZoom() != 100) { EditShowZoomCallTip(Globals.hwndEdit); }

View File

@ -95,7 +95,7 @@ typedef enum
XXXL_BUFFER = 4096,
ANSI_CHAR_BUFFER = 258,
FNDRPL_BUFFER = 1024,
FNDRPL_BUFFER = 2048,
LONG_LINES_MARKER_LIMIT = 4096
} BUFFER_SIZES;
@ -299,6 +299,7 @@ extern GLOBALS_T Globals;
typedef struct _settings_t
{
bool SaveSettings;
bool SaveRecentFiles;
bool PreserveCaretPos;
bool SaveFindReplace;