7#include <unordered_set>
8#include <unordered_map>
148 typedef std::vector<Glyph>
Line;
155 typedef bool(*
TokenizeCallback)(
const char * in_begin,
const char * in_end,
const char *& out_begin,
const char *& out_end,
PaletteIndex & paletteIndex);
197 void Render(
const char* aTitle,
const ImVec2& aSize = ImVec2(),
bool aBorder =
false);
198 void SetText(
const std::string& aText);
201 void SetTextLines(
const std::vector<std::string>& aLines);
239 void MoveUp(
int aAmount = 1,
bool aSelect =
false);
240 void MoveDown(
int aAmount = 1,
bool aSelect =
false);
241 void MoveLeft(
int aAmount = 1,
bool aSelect =
false,
bool aWordMode =
false);
242 void MoveRight(
int aAmount = 1,
bool aSelect =
false,
bool aWordMode =
false);
243 void MoveTop(
bool aSelect =
false);
245 void MoveHome(
bool aSelect =
false);
246 void MoveEnd(
bool aSelect =
false);
262 void Undo(
int aSteps = 1);
263 void Redo(
int aSteps = 1);
270 typedef std::vector<std::pair<std::regex, PaletteIndex>> RegexList;
286 const std::string& aAdded,
290 const std::string& aRemoved,
294 TextEditor::EditorState& aBefore,
295 TextEditor::EditorState& aAfter);
301 Coordinates mAddedStart;
302 Coordinates mAddedEnd;
304 std::string mRemoved;
305 Coordinates mRemovedStart;
306 Coordinates mRemovedEnd;
312 typedef std::vector<UndoRecord> UndoBuffer;
314 void ProcessInputs();
315 void Colorize(
int aFromLine = 0,
int aCount = -1);
316 void ColorizeRange(
int aFromLine = 0,
int aToLine = 0);
317 void ColorizeInternal();
318 float TextDistanceToLineStart(
const Coordinates& aFrom)
const;
319 void EnsureCursorVisible();
320 int GetPageSize()
const;
321 std::string
GetText(
const Coordinates& aStart,
const Coordinates& aEnd)
const;
322 Coordinates GetActualCursorCoordinates()
const;
323 Coordinates SanitizeCoordinates(
const Coordinates& aValue)
const;
324 void Advance(Coordinates& aCoordinates)
const;
325 void DeleteRange(
const Coordinates& aStart,
const Coordinates& aEnd);
326 int InsertTextAt(Coordinates& aWhere,
const char* aValue);
327 void AddUndo(UndoRecord& aValue);
328 Coordinates ScreenPosToCoordinates(
const ImVec2& aPosition)
const;
329 Coordinates FindWordStart(
const Coordinates& aFrom)
const;
330 Coordinates FindWordEnd(
const Coordinates& aFrom)
const;
331 Coordinates FindNextWord(
const Coordinates& aFrom)
const;
332 int GetCharacterIndex(
const Coordinates& aCoordinates)
const;
333 int GetCharacterColumn(
int aLine,
int aIndex)
const;
334 int GetLineCharacterCount(
int aLine)
const;
335 int GetLineMaxColumn(
int aLine)
const;
336 bool IsOnWordBoundary(
const Coordinates& aAt)
const;
337 void RemoveLine(
int aStart,
int aEnd);
338 void RemoveLine(
int aIndex);
339 Line& InsertLine(
int aIndex);
340 void EnterCharacter(ImWchar aChar,
bool aShift);
342 void DeleteSelection();
343 std::string GetWordUnderCursor()
const;
344 std::string GetWordAt(
const Coordinates& aCoords)
const;
345 ImU32 GetGlyphColor(
const Glyph& aGlyph)
const;
347 void HandleKeyboardInputs();
348 void HandleMouseInputs();
354 UndoBuffer mUndoBuffer;
361 bool mScrollToCursor;
364 bool mColorizerEnabled;
367 bool mCursorPositionChanged;
368 int mColorRangeMin, mColorRangeMax;
370 bool mHandleKeyboardInputs;
371 bool mHandleMouseInputs;
372 bool mIgnoreImGuiChild;
373 bool mShowWhitespaces;
377 LanguageDefinition mLanguageDefinition;
378 RegexList mRegexList;
384 Coordinates mInteractiveStart, mInteractiveEnd;
385 std::string mLineBuffer;
void MoveBottom(bool aSelect=false)
void InsertText(const std::string &aValue)
std::unordered_set< std::string > Keywords
bool IsCursorPositionChanged() const
bool IsShowingWhitespaces() const
std::vector< std::string > GetTextLines() const
std::vector< Line > Lines
void SelectWordUnderCursor()
static const Palette & GetLightPalette()
void MoveLeft(int aAmount=1, bool aSelect=false, bool aWordMode=false)
void SetColorizerEnable(bool aValue)
void MoveHome(bool aSelect=false)
void SetSelectionEnd(const Coordinates &aPosition)
static const Palette & GetDarkPalette()
void MoveEnd(bool aSelect=false)
static const Palette & GetRetroBluePalette()
Coordinates GetCursorPosition() const
void SetShowWhitespaces(bool aValue)
bool HasSelection() const
bool IsTextChanged() const
std::unordered_map< std::string, Identifier > Identifiers
void SetReadOnly(bool aValue)
std::string GetText() const
void SetSelectionStart(const Coordinates &aPosition)
void MoveTop(bool aSelect=false)
int GetTotalLines() const
void SetHandleKeyboardInputs(bool aValue)
std::string GetCurrentLineText() const
bool IsHandleMouseInputsEnabled() const
bool IsColorizerEnabled() const
const Palette & GetPalette() const
void MoveUp(int aAmount=1, bool aSelect=false)
std::vector< Glyph > Line
void Render(const char *aTitle, const ImVec2 &aSize=ImVec2(), bool aBorder=false)
void SetPalette(const Palette &aValue)
std::map< int, std::string > ErrorMarkers
void SetImGuiChildIgnored(bool aValue)
void SetBreakpoints(const Breakpoints &aMarkers)
void SetText(const std::string &aText)
void SetTextLines(const std::vector< std::string > &aLines)
bool IsImGuiChildIgnored() const
void MoveDown(int aAmount=1, bool aSelect=false)
@ CurrentLineFillInactive
void SetErrorMarkers(const ErrorMarkers &aMarkers)
const LanguageDefinition & GetLanguageDefinition() const
void SetCursorPosition(const Coordinates &aPosition)
std::unordered_set< int > Breakpoints
std::string GetSelectedText() const
void SetTabSize(int aValue)
void SetHandleMouseInputs(bool aValue)
std::array< ImU32,(unsigned) PaletteIndex::Max > Palette
bool IsHandleKeyboardInputsEnabled() const
void SetSelection(const Coordinates &aStart, const Coordinates &aEnd, SelectionMode aMode=SelectionMode::Normal)
void SetLanguageDefinition(const LanguageDefinition &aLanguageDef)
void MoveRight(int aAmount=1, bool aSelect=false, bool aWordMode=false)
bool operator<=(const Coordinates &o) const
static Coordinates Invalid()
bool operator==(const Coordinates &o) const
bool operator<(const Coordinates &o) const
bool operator>(const Coordinates &o) const
Coordinates(int aLine, int aColumn)
bool operator>=(const Coordinates &o) const
bool operator!=(const Coordinates &o) const
Glyph(Char aChar, PaletteIndex aColorIndex)
static const LanguageDefinition & SQL()
TokenRegexStrings mTokenRegexStrings
std::string mSingleLineComment
static const LanguageDefinition & Lua()
std::string mCommentStart
static const LanguageDefinition & C()
TokenizeCallback mTokenize
Identifiers mPreprocIdentifiers
static const LanguageDefinition & GLSL()
bool(* TokenizeCallback)(const char *in_begin, const char *in_end, const char *&out_begin, const char *&out_end, PaletteIndex &paletteIndex)
std::vector< TokenRegexString > TokenRegexStrings
static const LanguageDefinition & AngelScript()
static const LanguageDefinition & CPlusPlus()
std::pair< std::string, PaletteIndex > TokenRegexString
static const LanguageDefinition & HLSL()