namespace jnc

namespace jnc {

// classes

class Edit;
class EditBase;
class EditTheme;
class HighlighterBase;

// global functions

lex::LineCol
getCursorLineCol(const QTextCursor& cursor0);

bool
isCursorMultiLineSelection(const QTextCursor& cursor0);

bool
isCursorAtStartOfLine(const QTextCursor& cursor0);

bool
isCursorAtEndOfLineIgnoreSpace(const QTextCursor& cursor0);

int
getCursorStartOfLinePosition(const QTextCursor& cursor0);

int
getCursorEndOfLinePosition(const QTextCursor& cursor0);

QString
getCursorLinePrefix(const QTextCursor& cursor0);

QString
getCursorLineSuffix(const QTextCursor& cursor0);

bool
isCursorLineEmpty(const QTextCursor& cursor0);

bool
isCursorNextLineEmpty(const QTextCursor& cursor0);

QString
getCursorPrevWord(const QTextCursor& cursor0);

QChar
getCursorPrevChar(const QTextCursor& cursor0);

QChar
getCursorNextChar(const QTextCursor& cursor0);

bool
isCursorOnIndent(const QTextCursor& cursor0);

bool
hasCursorHighlightColor(const QTextCursor& cursor);

void
moveCursorWithLimit(
    QTextCursor* cursor,
    const QTextCursor& limitCursor,
    QTextCursor::MoveOperation op,
    QTextCursor::MoveMode mode = QTextCursor::MoveAnchor,
    int n = 1
);

AXL_SELECT_ANY EditTheme
g_defaultLightTheme(EditTheme::InitLight);

AXL_SELECT_ANY EditTheme
g_defaultDarkTheme(EditTheme::InitDark);

} // namespace jnc