class jnc::Edit

class Edit: public QPlainTextEdit {
public:
    // enums

    enum CodeAssistTrigger;

    // properties

    bool
    isReadOnly;

    bool
    isLineNumberMarginEnabled;

    int
    lineNumberMarginWidth;

    bool
    isCurrentLineHighlightingEnabled;

    bool
    isSyntaxHighlightingEnabled;

    int
    tabWidth;

    CodeAssistTriggers
    codeAssistTriggers;

    QStringList
    importDirList;

    // construction

    Edit(QWidget* parent = NULL);
    ~Edit();

    // methods

    void
    setReadOnly(bool isReadOnly);

    bool
    isLineNumberMarginEnabled();

    void
    enableLineNumberMargin(bool isEnabled);

    int
    lineNumberMarginWidth();

    bool
    isCurrentLineHighlightingEnabled();

    void
    enableCurrentLineHighlighting(bool isEnabled);

    bool
    isSyntaxHighlightingEnabled();

    void
    enableSyntaxHighlighting(bool isEnabled);

    int
    tabWidth();

    void
    setTabWidth(int width);

    const EditTheme*
    theme();

    void
    setTheme(const EditTheme* theme);

    CodeAssistTriggers
    codeAssistTriggers();

    void
    setCodeAssistTriggers(CodeAssistTriggers triggers);

    QStringList
    importDirList();

    void
    setImportDirList(const QStringList& dirList);

    QStringList
    importList();

    void
    setImportList(const QStringList& importList);

    QString
    extraSource();

    void
    setExtraSource(const QString& source);

    void
    setTextCursorLineCol(
        int line,
        int col
    );

    void
    highlightLineTemp(
        int line,
        const QColor& backColor,
        const QColor& textColor = QColor::Invalid
    );
};