aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Editor.h')
-rw-r--r--src/Editor.h177
1 files changed, 95 insertions, 82 deletions
diff --git a/src/Editor.h b/src/Editor.h
index 42944929b..08e7d134b 100644
--- a/src/Editor.h
+++ b/src/Editor.h
@@ -8,7 +8,7 @@
#ifndef EDITOR_H
#define EDITOR_H
-namespace Scintilla {
+namespace Scintilla::Internal {
/**
*/
@@ -55,7 +55,7 @@ public:
upTo = 0;
}
void Need(WorkItems items_, Sci::Position pos) noexcept {
- if (FlagSet(items_, WorkItems::style) && (upTo < pos))
+ if (Scintilla::FlagSet(items_, WorkItems::style) && (upTo < pos))
upTo = pos;
items = static_cast<WorkItems>(static_cast<int>(items) | static_cast<int>(items_));
}
@@ -70,16 +70,16 @@ public:
bool rectangular;
bool lineCopy;
int codePage;
- int characterSet;
- SelectionText() noexcept : rectangular(false), lineCopy(false), codePage(0), characterSet(0) {}
+ Scintilla::CharacterSet characterSet;
+ SelectionText() noexcept : rectangular(false), lineCopy(false), codePage(0), characterSet(Scintilla::CharacterSet::Ansi) {}
void Clear() noexcept {
s.clear();
rectangular = false;
lineCopy = false;
codePage = 0;
- characterSet = 0;
+ characterSet = Scintilla::CharacterSet::Ansi;
}
- void Copy(const std::string &s_, int codePage_, int characterSet_, bool rectangular_, bool lineCopy_) {
+ void Copy(const std::string &s_, int codePage_, Scintilla::CharacterSet characterSet_, bool rectangular_, bool lineCopy_) {
s = s_;
codePage = codePage_;
characterSet = characterSet_;
@@ -145,16 +145,25 @@ struct WrapPending {
}
};
-struct CaretPolicy {
- int policy; // Combination from CARET_SLOP, CARET_STRICT, CARET_JUMPS, CARET_EVEN
+struct CaretPolicySlop {
+ Scintilla::CaretPolicy policy; // Combination from CaretPolicy::Slop, CaretPolicy::Strict, CaretPolicy::Jumps, CaretPolicy::Even
int slop; // Pixels for X, lines for Y
- CaretPolicy(uptr_t policy_=0, sptr_t slop_=0) noexcept :
- policy(static_cast<int>(policy_)), slop(static_cast<int>(slop_)) {}
+ CaretPolicySlop(Scintilla::CaretPolicy policy_, intptr_t slop_) noexcept :
+ policy(policy_), slop(static_cast<int>(slop_)) {}
+ CaretPolicySlop(uintptr_t policy_=0, intptr_t slop_=0) noexcept :
+ policy(static_cast<Scintilla::CaretPolicy>(policy_)), slop(static_cast<int>(slop_)) {}
};
struct CaretPolicies {
- CaretPolicy x;
- CaretPolicy y;
+ CaretPolicySlop x;
+ CaretPolicySlop y;
+};
+
+struct VisiblePolicySlop {
+ Scintilla::VisiblePolicy policy; // Combination from VisiblePolicy::Slop, VisiblePolicy::Strict
+ int slop; // Pixels for X, lines for Y
+ VisiblePolicySlop(uintptr_t policy_ = 0, intptr_t slop_ = 0) noexcept :
+ policy(static_cast<Scintilla::VisiblePolicy>(policy_)), slop(static_cast<int>(slop_)) {}
};
enum class XYScrollOptions {
@@ -165,6 +174,10 @@ enum class XYScrollOptions {
all = useMargin | vertical | horizontal
};
+constexpr XYScrollOptions operator|(XYScrollOptions a, XYScrollOptions b) noexcept {
+ return static_cast<XYScrollOptions>(static_cast<int>(a) | static_cast<int>(b));
+}
+
/**
*/
class Editor : public EditModel, public DocWatcher {
@@ -179,14 +192,14 @@ protected: // ScintillaBase subclass needs access to much of Editor
* When a style attribute is changed, this cache is flushed. */
bool stylesValid;
ViewStyle vs;
- int technology;
+ Scintilla::Technology technology;
Point sizeRGBAImage;
float scaleRGBAImage;
MarginView marginView;
EditView view;
- int cursorMode;
+ Scintilla::CursorShape cursorMode;
bool mouseDownCaptures;
bool mouseWheelCaptures;
@@ -196,14 +209,14 @@ protected: // ScintillaBase subclass needs access to much of Editor
int scrollWidth;
bool verticalScrollBarVisible;
bool endAtLastLine;
- int caretSticky;
- int marginOptions;
+ Scintilla::CaretSticky caretSticky;
+ Scintilla::MarginOption marginOptions;
bool mouseSelectionRectangularSwitch;
bool multipleSelection;
bool additionalSelectionTyping;
- int multiPasteMode;
+ Scintilla::MultiPaste multiPasteMode;
- int virtualSpaceOptions;
+ Scintilla::VirtualSpace virtualSpaceOptions;
KeyMap kmap;
@@ -232,12 +245,12 @@ protected: // ScintillaBase subclass needs access to much of Editor
Sci::Position wordSelectAnchorEndPos;
Sci::Position wordSelectInitialCaretPos;
SelectionSegment targetRange;
- int searchFlags;
+ Scintilla::FindOption searchFlags;
Sci::Line topLine;
Sci::Position posTopLine;
Sci::Position lengthForEncode;
- int needUpdateUI;
+ Scintilla::Update needUpdateUI;
enum class PaintState { notPainting, painting, abandoned } paintState;
bool paintAbandonedByStyling;
@@ -245,23 +258,23 @@ protected: // ScintillaBase subclass needs access to much of Editor
bool paintingAllText;
bool willRedrawAll;
WorkNeeded workNeeded;
- int idleStyling;
+ Scintilla::IdleStyling idleStyling;
bool needIdleStyling;
- int modEventMask;
+ Scintilla::ModificationFlags modEventMask;
bool commandEvents;
SelectionText drag;
CaretPolicies caretPolicies;
- CaretPolicy visiblePolicy;
+ VisiblePolicySlop visiblePolicy;
Sci::Position searchAnchor;
bool recordingMacro;
- int foldAutomatic;
+ Scintilla::AutomaticFold foldAutomatic;
// Wrapping support
WrapPending wrapPending;
@@ -317,7 +330,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
void InvalidateRange(Sci::Position start, Sci::Position end);
bool UserVirtualSpace() const noexcept {
- return ((virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0);
+ return (FlagSet(virtualSpaceOptions, Scintilla::VirtualSpace::UserAccessible));
}
Sci::Position CurrentPosition() const;
bool SelectionEmpty() const noexcept;
@@ -389,8 +402,8 @@ protected: // ScintillaBase subclass needs access to much of Editor
void PaintSelMargin(Surface *surfaceWindow, const PRectangle &rc);
void RefreshPixMaps(Surface *surfaceWindow);
void Paint(Surface *surfaceWindow, PRectangle rcArea);
- Sci::Position FormatRange(bool draw, const Sci_RangeToFormat *pfr);
- long TextWidth(uptr_t style, const char *text);
+ Sci::Position FormatRange(bool draw, const Scintilla::RangeToFormat *pfr);
+ long TextWidth(Scintilla::uptr_t style, const char *text);
virtual void SetVerticalScrollPos() = 0;
virtual void SetHorizontalScrollPos() = 0;
@@ -403,7 +416,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
Sci::Position RealizeVirtualSpace(Sci::Position position, Sci::Position virtualSpace);
SelectionPosition RealizeVirtualSpace(const SelectionPosition &position);
void AddChar(char ch);
- virtual void InsertCharacter(std::string_view sv, CharacterSource charSource);
+ virtual void InsertCharacter(std::string_view sv, Scintilla::CharacterSource charSource);
void ClearBeforeTentativeStart();
void InsertPaste(const char *text, Sci::Position len);
enum class PasteShape { stream=0, rectangular = 1, line = 2 };
@@ -424,25 +437,25 @@ protected: // ScintillaBase subclass needs access to much of Editor
void DelCharBack(bool allowLineStartDeletion);
virtual void ClaimSelection() = 0;
- static int ModifierFlags(bool shift, bool ctrl, bool alt, bool meta=false, bool super=false) noexcept;
+ static Scintilla::KeyMod ModifierFlags(bool shift, bool ctrl, bool alt, bool meta=false, bool super=false) noexcept;
virtual void NotifyChange() = 0;
virtual void NotifyFocus(bool focus);
virtual void SetCtrlID(int identifier);
virtual int GetCtrlID() { return ctrlID; }
- virtual void NotifyParent(SCNotification scn) = 0;
+ virtual void NotifyParent(Scintilla::NotificationData scn) = 0;
virtual void NotifyStyleToNeeded(Sci::Position endStyleNeeded);
- void NotifyChar(int ch, CharacterSource charSource);
+ void NotifyChar(int ch, Scintilla::CharacterSource charSource);
void NotifySavePoint(bool isSavePoint);
void NotifyModifyAttempt();
- virtual void NotifyDoubleClick(Point pt, int modifiers);
- void NotifyHotSpotClicked(Sci::Position position, int modifiers);
- void NotifyHotSpotDoubleClicked(Sci::Position position, int modifiers);
- void NotifyHotSpotReleaseClick(Sci::Position position, int modifiers);
+ virtual void NotifyDoubleClick(Point pt, Scintilla::KeyMod modifiers);
+ void NotifyHotSpotClicked(Sci::Position position, Scintilla::KeyMod modifiers);
+ void NotifyHotSpotDoubleClicked(Sci::Position position, Scintilla::KeyMod modifiers);
+ void NotifyHotSpotReleaseClick(Sci::Position position, Scintilla::KeyMod modifiers);
bool NotifyUpdateUI();
void NotifyPainted();
- void NotifyIndicatorClick(bool click, Sci::Position position, int modifiers);
- bool NotifyMarginClick(Point pt, int modifiers);
- bool NotifyMarginRightClick(Point pt, int modifiers);
+ void NotifyIndicatorClick(bool click, Sci::Position position, Scintilla::KeyMod modifiers);
+ bool NotifyMarginClick(Point pt, Scintilla::KeyMod modifiers);
+ bool NotifyMarginRightClick(Point pt, Scintilla::KeyMod modifiers);
void NotifyNeedShown(Sci::Position pos, Sci::Position len);
void NotifyDwelling(Point pt, bool state);
void NotifyZoom();
@@ -454,10 +467,10 @@ protected: // ScintillaBase subclass needs access to much of Editor
void NotifyDeleted(Document *document, void *userData) noexcept override;
void NotifyStyleNeeded(Document *doc, void *userData, Sci::Position endStyleNeeded) override;
void NotifyLexerChanged(Document *doc, void *userData) override;
- void NotifyErrorOccurred(Document *doc, void *userData, int status) override;
- void NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+ void NotifyErrorOccurred(Document *doc, void *userData, Scintilla::Status status) override;
+ void NotifyMacroRecord(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
- void ContainerNeedsUpdate(int flags) noexcept;
+ void ContainerNeedsUpdate(Scintilla::Update flags) noexcept;
void PageMove(int direction, Selection::SelTypes selt=Selection::SelTypes::none, bool stuttered = false);
enum class CaseMapping { same, upper, lower };
virtual std::string CaseMapString(const std::string &s, CaseMapping caseMapping);
@@ -475,18 +488,18 @@ protected: // ScintillaBase subclass needs access to much of Editor
Sci::Position VCHomeDisplayPosition(Sci::Position position);
Sci::Position VCHomeWrapPosition(Sci::Position position);
Sci::Position LineEndWrapPosition(Sci::Position position);
- int HorizontalMove(unsigned int iMessage);
- int DelWordOrLine(unsigned int iMessage);
- virtual int KeyCommand(unsigned int iMessage);
- virtual int KeyDefault(int /* key */, int /*modifiers*/);
- int KeyDownWithModifiers(int key, int modifiers, bool *consumed);
+ int HorizontalMove(Scintilla::Message iMessage);
+ int DelWordOrLine(Scintilla::Message iMessage);
+ virtual int KeyCommand(Scintilla::Message iMessage);
+ virtual int KeyDefault(Scintilla::Keys /* key */, Scintilla::KeyMod /*modifiers*/);
+ int KeyDownWithModifiers(Scintilla::Keys key, Scintilla::KeyMod modifiers, bool *consumed);
void Indent(bool forwards);
virtual std::unique_ptr<CaseFolder> CaseFolderForEncoding();
- Sci::Position FindText(uptr_t wParam, sptr_t lParam);
+ Sci::Position FindText(Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
void SearchAnchor();
- Sci::Position SearchText(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+ Sci::Position SearchText(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
Sci::Position SearchInTarget(const char *text, Sci::Position length);
void GoToLine(Sci::Line lineNo);
@@ -511,10 +524,10 @@ protected: // ScintillaBase subclass needs access to much of Editor
void WordSelection(Sci::Position pos);
void DwellEnd(bool mouseMoved);
void MouseLeave();
- virtual void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);
- virtual void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);
- void ButtonMoveWithModifiers(Point pt, unsigned int curTime, int modifiers);
- void ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers);
+ virtual void ButtonDownWithModifiers(Point pt, unsigned int curTime, Scintilla::KeyMod modifiers);
+ virtual void RightButtonDownWithModifiers(Point pt, unsigned int curTime, Scintilla::KeyMod modifiers);
+ void ButtonMoveWithModifiers(Point pt, unsigned int curTime, Scintilla::KeyMod modifiers);
+ void ButtonUpWithModifiers(Point pt, unsigned int curTime, Scintilla::KeyMod modifiers);
bool Idle();
enum class TickReason { caret, scroll, widen, dwell, platform };
@@ -534,13 +547,13 @@ protected: // ScintillaBase subclass needs access to much of Editor
void StartIdleStyling(bool truncatedLastStyling);
void StyleAreaBounded(PRectangle rcArea, bool scrolling);
constexpr bool SynchronousStylingToVisible() const noexcept {
- return (idleStyling == SC_IDLESTYLING_NONE) || (idleStyling == SC_IDLESTYLING_AFTERVISIBLE);
+ return (idleStyling == Scintilla::IdleStyling::None) || (idleStyling == Scintilla::IdleStyling::AfterVisible);
}
- void IdleStyling();
+ void IdleStyle();
virtual void IdleWork();
virtual void QueueIdleWork(WorkItems items, Sci::Position upTo=0);
- virtual int SupportsFeature(int feature);
+ virtual int SupportsFeature(Scintilla::Supports feature);
virtual bool PaintContains(PRectangle rc);
bool PaintContainsMargin();
void CheckForChangeOutsidePaint(Range r);
@@ -549,18 +562,18 @@ protected: // ScintillaBase subclass needs access to much of Editor
void SetAnnotationHeights(Sci::Line start, Sci::Line end);
virtual void SetDocPointer(Document *document);
- void SetAnnotationVisible(int visible);
- void SetEOLAnnotationVisible(int visible);
+ void SetAnnotationVisible(Scintilla::AnnotationVisible visible);
+ void SetEOLAnnotationVisible(Scintilla::EOLAnnotationVisible visible);
Sci::Line ExpandLine(Sci::Line line);
void SetFoldExpanded(Sci::Line lineDoc, bool expanded);
- void FoldLine(Sci::Line line, int action);
- void FoldExpand(Sci::Line line, int action, int level);
+ void FoldLine(Sci::Line line, Scintilla::FoldAction action);
+ void FoldExpand(Sci::Line line, Scintilla::FoldAction action, Scintilla::FoldLevel level);
Sci::Line ContractedFoldNext(Sci::Line lineStart) const;
void EnsureLineVisible(Sci::Line lineDoc, bool enforcePolicy);
- void FoldChanged(Sci::Line line, int levelNow, int levelPrev);
+ void FoldChanged(Sci::Line line, Scintilla::FoldLevel levelNow, Scintilla::FoldLevel levelPrev);
void NeedShown(Sci::Position pos, Sci::Position len);
- void FoldAll(int action);
+ void FoldAll(Scintilla::FoldAction action);
Sci::Position GetTag(char *tagValue, int tagNumber);
Sci::Position ReplaceTarget(bool replacePatterns, const char *text, Sci::Position length=-1);
@@ -580,39 +593,39 @@ protected: // ScintillaBase subclass needs access to much of Editor
Sci::Line WrapCount(Sci::Line line);
void AddStyledText(const char *buffer, Sci::Position appendLength);
- virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0;
- bool ValidMargin(uptr_t wParam) const noexcept;
- void StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
- sptr_t StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
- void SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+ virtual Scintilla::sptr_t DefWndProc(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam) = 0;
+ bool ValidMargin(Scintilla::uptr_t wParam) const noexcept;
+ void StyleSetMessage(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
+ Scintilla::sptr_t StyleGetMessage(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
+ void SetSelectionNMessage(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
- static const char *StringFromEOLMode(int eolMode) noexcept;
+ static const char *StringFromEOLMode(Scintilla::EndOfLine eolMode) noexcept;
// Coercion functions for transforming WndProc parameters into pointers
- static void *PtrFromSPtr(sptr_t lParam) noexcept {
+ static void *PtrFromSPtr(Scintilla::sptr_t lParam) noexcept {
return reinterpret_cast<void *>(lParam);
}
- static const char *ConstCharPtrFromSPtr(sptr_t lParam) noexcept {
+ static const char *ConstCharPtrFromSPtr(Scintilla::sptr_t lParam) noexcept {
return static_cast<const char *>(PtrFromSPtr(lParam));
}
- static const unsigned char *ConstUCharPtrFromSPtr(sptr_t lParam) noexcept {
+ static const unsigned char *ConstUCharPtrFromSPtr(Scintilla::sptr_t lParam) noexcept {
return static_cast<const unsigned char *>(PtrFromSPtr(lParam));
}
- static char *CharPtrFromSPtr(sptr_t lParam) noexcept {
+ static char *CharPtrFromSPtr(Scintilla::sptr_t lParam) noexcept {
return static_cast<char *>(PtrFromSPtr(lParam));
}
- static unsigned char *UCharPtrFromSPtr(sptr_t lParam) noexcept {
+ static unsigned char *UCharPtrFromSPtr(Scintilla::sptr_t lParam) noexcept {
return static_cast<unsigned char *>(PtrFromSPtr(lParam));
}
- static void *PtrFromUPtr(uptr_t wParam) noexcept {
+ static void *PtrFromUPtr(Scintilla::uptr_t wParam) noexcept {
return reinterpret_cast<void *>(wParam);
}
- static const char *ConstCharPtrFromUPtr(uptr_t wParam) noexcept {
+ static const char *ConstCharPtrFromUPtr(Scintilla::uptr_t wParam) noexcept {
return static_cast<const char *>(PtrFromUPtr(wParam));
}
- static sptr_t StringResult(sptr_t lParam, const char *val) noexcept;
- static sptr_t BytesResult(sptr_t lParam, const unsigned char *val, size_t len) noexcept;
+ static Scintilla::sptr_t StringResult(Scintilla::sptr_t lParam, const char *val) noexcept;
+ static Scintilla::sptr_t BytesResult(Scintilla::sptr_t lParam, const unsigned char *val, size_t len) noexcept;
// Set a variable controlling appearance to a value and invalidates the display
// if a change was made. Avoids extra text and the possibility of mistyping.
@@ -633,11 +646,11 @@ public:
// Public so the COM thunks can access it.
bool IsUnicodeMode() const noexcept;
// Public so scintilla_send_message can use it.
- virtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+ virtual Scintilla::sptr_t WndProc(Scintilla::Message iMessage, Scintilla::uptr_t wParam, Scintilla::sptr_t lParam);
// Public so scintilla_set_id can use it.
int ctrlID;
// Public so COM methods for drag and drop can set it.
- int errorStatus;
+ Scintilla::Status errorStatus;
friend class AutoSurface;
};
@@ -648,16 +661,16 @@ class AutoSurface {
private:
std::unique_ptr<Surface> surf;
public:
- AutoSurface(const Editor *ed, int technology = -1) {
+ AutoSurface(const Editor *ed) {
if (ed->wMain.GetID()) {
- surf = Surface::Allocate(technology != -1 ? technology : ed->technology);
+ surf = Surface::Allocate(ed->technology);
surf->Init(ed->wMain.GetID());
surf->SetMode(SurfaceMode(ed->CodePage(), ed->BidirectionalR2L()));
}
}
- AutoSurface(SurfaceID sid, Editor *ed, int technology = -1) {
+ AutoSurface(SurfaceID sid, Editor *ed, std::optional<Scintilla::Technology> technology = {}) {
if (ed->wMain.GetID()) {
- surf = Surface::Allocate(technology != -1 ? technology : ed->technology);
+ surf = Surface::Allocate(technology ? *technology : ed->technology);
surf->Init(sid, ed->wMain.GetID());
surf->SetMode(SurfaceMode(ed->CodePage(), ed->BidirectionalR2L()));
}