[FarGroup/FarManager] master: Refactoring (09f3979d6)

0 views
Skip to first unread message

farg...@farmanager.com

unread,
Aug 29, 2025, 4:30:58 PM (8 days ago) Aug 29
to farco...@googlegroups.com
Repository : https://github.com/FarGroup/FarManager
On branch : master
Link : https://github.com/FarGroup/FarManager/commit/09f3979d636f913aec745b21a048efb221f455e5

>---------------------------------------------------------------

commit 09f3979d636f913aec745b21a048efb221f455e5
Author: Alex Alabuzhev <alab...@gmail.com>
Date: Fri Aug 29 21:17:05 2025 +0100

Refactoring


>---------------------------------------------------------------

09f3979d636f913aec745b21a048efb221f455e5
far/changelog | 5 +++++
far/config.cpp | 4 ++--
far/editor.hpp | 2 --
far/fileedit.cpp | 20 ++++++++++----------
far/vbuild.m4 | 2 +-
5 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/far/changelog b/far/changelog
index 3e4e0f65d..50be1e1d2 100644
--- a/far/changelog
+++ b/far/changelog
@@ -1,3 +1,8 @@
+--------------------------------------------------------------------------------
+drkns 2025-08-29 21:16:05+01:00 - build 6540
+
+1. Refactoring.
+
--------------------------------------------------------------------------------
drkns 2025-08-26 22:32:24+01:00 - build 6539

diff --git a/far/config.cpp b/far/config.cpp
index eb612fb4b..6dc03c865 100644
--- a/far/config.cpp
+++ b/far/config.cpp
@@ -911,8 +911,8 @@ void Options::EditorConfig(EditorOptions &EdOptRef, bool Local)
Builder.AddCheckbox(lng::MEditConfigSavePos, EdOptRef.SavePos);
Builder.AddCheckbox(lng::MEditConfigSaveShortPos, EdOptRef.SaveShortPos);
Builder.AddCheckbox(lng::MEditShareWrite, EdOpt.EditOpenedForWrite);
- Builder.AddCheckbox(lng::MEditLockROFileModification, EdOpt.ReadOnlyLock, 1);
- Builder.AddCheckbox(lng::MEditWarningBeforeOpenROFile, EdOpt.ReadOnlyLock, 2);
+ Builder.AddCheckbox(lng::MEditLockROFileModification, EdOpt.ReadOnlyLock, 0b01);
+ Builder.AddCheckbox(lng::MEditWarningBeforeOpenROFile, EdOpt.ReadOnlyLock, 0b10);
Builder.AddCheckbox(lng::MEditAutoDetectCodePage, EdOpt.AutoDetectCodePage);
Builder.AddText(lng::MEditConfigDefaultCodePage);
codepages::instance().FillCodePagesList(Items, false, false, false, false, false);
diff --git a/far/editor.hpp b/far/editor.hpp
index fb6e18c31..b849ec2b7 100644
--- a/far/editor.hpp
+++ b/far/editor.hpp
@@ -96,8 +96,6 @@ public:
bool GetBSLikeDel() const { return EdOpt.BSLikeDel; }
void SetCharCodeBase(int NewMode) { EdOpt.CharCodeBase = NewMode % 3; }
int GetCharCodeBase() const { return EdOpt.CharCodeBase; }
- void SetReadOnlyLock(int NewMode) { EdOpt.ReadOnlyLock = NewMode & 3; }
- int GetReadOnlyLock() const { return EdOpt.ReadOnlyLock; }
void SetShowScrollBar(bool NewMode) { EdOpt.ShowScrollBar = NewMode; }
void SetSearchCursorAtEnd(bool NewMode) { EdOpt.SearchCursorAtEnd = NewMode; }
void SetWordDiv(string_view const WordDiv) { EdOpt.strWordDiv = string(WordDiv); }
diff --git a/far/fileedit.cpp b/far/fileedit.cpp
index 2b207e49e..e205f1592 100644
--- a/far/fileedit.cpp
+++ b/far/fileedit.cpp
@@ -472,6 +472,14 @@ FileEditor::~FileEditor()
}
}

+static DWORD get_read_only_attributes(uint64_t const ReadOnlyLock)
+{
+ return
+ FILE_ATTRIBUTE_READONLY |
+ (ReadOnlyLock & 0b0010'0000? FILE_ATTRIBUTE_HIDDEN : 0) |
+ (ReadOnlyLock & 0b0100'0000? FILE_ATTRIBUTE_SYSTEM : 0);
+}
+
void FileEditor::Init(
const string_view Name,
uintptr_t codepage,
@@ -678,15 +686,7 @@ void FileEditor::Init(
return;
}

- if (m_editor->EdOpt.ReadOnlyLock & 1_bit &&
- FileStatus.check(FILE_ATTRIBUTE_READONLY |
- /* Hidden=0x2 System=0x4 - располагаются во 2-м полубайте,
- поэтому применяем маску 0110.0000 и
- сдвигаем на свое место => 0000.0110 и получаем
- те самые нужные атрибуты */
- ((m_editor->EdOpt.ReadOnlyLock & 0b0110'0000) >> 4)
- )
- )
+ if (m_editor->EdOpt.ReadOnlyLock & 1_bit && FileStatus.check(get_read_only_attributes(m_editor->EdOpt.ReadOnlyLock)))
{
if (Message(MSG_WARNING,
msg(lng::MEditTitle),
@@ -1481,7 +1481,7 @@ bool FileEditor::LoadFile(const string_view Name, int& UserBreak, error_state_ex
const auto Cached = LoadFromCache(pc);

const os::fs::file_status FileStatus(Name);
- if ((m_editor->EdOpt.ReadOnlyLock & 0_bit) && FileStatus.check(FILE_ATTRIBUTE_READONLY | (m_editor->EdOpt.ReadOnlyLock & 0b0110'0000) >> 4))
+ if (m_editor->EdOpt.ReadOnlyLock & 0_bit && FileStatus.check(get_read_only_attributes(m_editor->EdOpt.ReadOnlyLock)))
{
m_editor->m_Flags.Invert(Editor::FEDITOR_LOCKMODE);
}
diff --git a/far/vbuild.m4 b/far/vbuild.m4
index b0b20f198..8bb727ee4 100644
--- a/far/vbuild.m4
+++ b/far/vbuild.m4
@@ -1 +1 @@
-6539
+6540


Reply all
Reply to author
Forward
0 new messages