1 #ifndef ABSTRACTTEXTEDITORAPPLICATION_H
2 #define ABSTRACTTEXTEDITORAPPLICATION_H
18 #include <QFontMetrics>
87 operator char32_t ()
const
96 std::shared_ptr<std::vector<Character>>
vec;
143 vec->emplace_back(c);
145 std::vector<Character>::iterator
begin()
149 std::vector<Character> ::iterator
end()
153 std::vector<Character>::const_iterator
begin()
const
157 std::vector<Character> ::const_iterator
end()
const
163 vec->insert(pos, first);
167 vec->insert(pos, first, last);
169 void insert(std::vector<Character>::iterator pos, std::vector<Character>::const_iterator first, std::vector<Character>::const_iterator last)
171 vec->insert(pos, first, last);
173 void erase(std::vector<Character>::iterator pos)
177 void erase(std::vector<Character>::iterator first, std::vector<Character>::iterator last)
179 vec->erase(first, last);
190 typedef std::variant<std::vector<char>, std::string_view>
varline_t;
216 mutable std::shared_ptr<LineProperty>
detail;
227 std::shared_ptr<D>
sp;
230 :
sp(
std::make_shared<
D>())
235 :
sp(
std::make_shared<
D>())
242 :
sp(
std::make_shared<
D>())
244 sp->text = std::vector<char>(ba.data(), ba.data() + ba.size());
273 line.
sp->meta.type =
type;
281 line.
sp->meta = meta;
292 if (std::holds_alternative<std::string_view>(line.
sp->text)) {
295 std::vector<char>
const *v = std::get_if<std::vector<char>>(&line.
sp->text);
297 return View(std::string_view(v->data(), v->size()), line.
sp->meta);
304 std::vector<char> owned_text;
305 std::string_view source_text =
text();
306 if (!source_text.empty()) {
307 owned_text.assign(source_text.begin(), source_text.end());
309 Line line(owned_text,
sp->meta.type);
310 line.
sp->meta.text_revision =
sp->meta.text_revision;
311 line.
sp->meta.logical_col_pos =
sp->meta.logical_col_pos;
312 line.
sp->meta.logical_col_len =
sp->meta.logical_col_len;
313 line.
sp->meta.line_number_override =
sp->meta.line_number_override;
326 return sp->meta.type;
331 sp->meta.line_number_override =
num;
336 return sp->meta.detail.get();
341 sp->meta.detail = std::make_shared<LineProperty>();
347 sp->meta.detail.reset();
352 int c =
text().empty() ? 0 :
text().back();
353 return c ==
'\n' || c ==
'\r';
358 if (std::holds_alternative<std::string_view>(
sp->text)) {
359 return std::get<std::string_view>(
sp->text);
361 std::vector<char>
const *v = std::get_if<std::vector<char>>(&
sp->text);
363 return std::string_view(v->data(), v->size());
369 sp->meta.text_revision++;
370 sp->meta.detail.reset();
375 if (std::string_view *sv = std::get_if<std::string_view>(&
sp->text)) {
376 sp->text = std::vector<char>(sv->data(), sv->data() + sv->size());
378 std::vector<char> *v = std::get_if<std::vector<char>>(&
sp->text);
385 if (!new_text.empty()) {
387 v->insert(v->end(), new_text.data(), new_text.data() + new_text.size());
388 sp->meta.text_revision++;
389 sp->meta.detail.reset();
390 sp->meta.visual_lines.clear();
396 if (!new_text.empty()) {
397 append_text(std::string_view(new_text.data(), new_text.size()));
408 sp->meta.visual_lines.clear();
438 explicit operator bool ()
const
519 std::unordered_map<QString, int>
map;
522 std::unique_ptr<QFontMetrics>
fm_;
536 fm_ = std::make_unique<QFontMetrics>(pr.fontMetrics());
548 return w > 0 ? w : 1;
553 return h > 0 ? h : 1;
562 ret =
fm_->horizontalAdvance(text);
715 void initEngine(
const std::shared_ptr<TextEditorContext>&
cx);
785 bool openFile(QString
const &path, QString *error_message =
nullptr);
786 bool saveFile(QString
const &path, QString *error_message =
nullptr);
794 void setDocument(
const std::vector<Document::Line> *source);
810 void write(uint32_t c,
bool by_keyboard);
811 void write(
char const *ptr,
int len,
bool by_keyboard);
812 void write(std::string
const &text);
813 void write(QKeyEvent *e);
849 void write_(
char const *ptr,
bool by_keyboard);
850 void write_(QString
const &text,
bool by_keyboard);
871 bool save(std::function<
bool (
char const *p,
size_t n)> callback)
const
875 std::string_view view = line.text();
876 if (!callback(view.data(), view.size())) {
int32_t row_index_t
Definition: AbstractTextEditorApplication.h:183
static bool operator>(SelectionAnchor const &a, SelectionAnchor const &b)
Definition: AbstractTextEditorApplication.h:461
int32_t col_index_t
Definition: AbstractTextEditorApplication.h:184
std::shared_ptr< TextEditorEngine > TextEditorEngine_sp
Definition: AbstractTextEditorApplication.h:463
static bool operator>=(SelectionAnchor const &a, SelectionAnchor const &b)
Definition: AbstractTextEditorApplication.h:459
static bool operator<=(SelectionAnchor const &a, SelectionAnchor const &b)
Definition: AbstractTextEditorApplication.h:458
static bool operator==(SelectionAnchor const &a, SelectionAnchor const &b)
Definition: AbstractTextEditorApplication.h:456
static bool operator!=(SelectionAnchor const &a, SelectionAnchor const &b)
Definition: AbstractTextEditorApplication.h:457
static bool operator<(SelectionAnchor const &a, SelectionAnchor const &b)
Definition: AbstractTextEditorApplication.h:460
Definition: AbstractTextEditorApplication.h:514
QFont font() const
Definition: AbstractTextEditorApplication.h:541
QSize basic_character_size_
Definition: AbstractTextEditorApplication.h:525
int basis_char_width() const
Definition: AbstractTextEditorApplication.h:545
TextWidthCache text_width_cache_
Definition: AbstractTextEditorApplication.h:526
int text_width(QString const &text) const
Definition: AbstractTextEditorApplication.h:555
int basis_char_height() const
Definition: AbstractTextEditorApplication.h:550
int ascent_
Definition: AbstractTextEditorApplication.h:523
int descent_
Definition: AbstractTextEditorApplication.h:524
QFont text_font_
Definition: AbstractTextEditorApplication.h:521
std::unique_ptr< QFontMetrics > fm_
Definition: AbstractTextEditorApplication.h:522
void set_font(QFont const &font)
Definition: AbstractTextEditorApplication.h:528
Definition: AbstractTextEditorApplication.h:600
uint32_t atts
Definition: AbstractTextEditorApplication.h:607
QString text
Definition: AbstractTextEditorApplication.h:602
bool isSelected() const
Definition: AbstractTextEditorApplication.h:613
Attr
Definition: AbstractTextEditorApplication.h:603
@ Selected
Definition: AbstractTextEditorApplication.h:605
@ StyleID
Definition: AbstractTextEditorApplication.h:604
FormattedLine(QString const &text, int atts)
Definition: AbstractTextEditorApplication.h:608
Definition: AbstractTextEditorApplication.h:512
void set_client_size(int w, int h, bool update_layout)
Definition: AbstractTextEditorApplication.cpp:1013
row_index_t current_visual_row() const
Definition: AbstractTextEditorApplication.cpp:312
void writeCR()
Definition: AbstractTextEditorApplication.cpp:2367
CharBuffer * parse_line(row_index_t vrow) const
行を解析してCharacterの配列を返す(全文字のX座標を計算する)
Definition: AbstractTextEditorApplication.cpp:527
void ensure_current_line_visible()
Definition: AbstractTextEditorApplication.cpp:1374
std::optional< CharBuffer > edit_selection(EditOperation op)
Definition: AbstractTextEditorApplication.cpp:1547
void set_selection_start_enabled(bool enabled)
Definition: AbstractTextEditorApplication.cpp:419
void setNormalTextEditorMode(bool f)
Definition: AbstractTextEditorApplication.cpp:2162
SelectionAnchor currentAnchor(bool enabled) const
Definition: AbstractTextEditorApplication.cpp:2167
void delete_line(row_index_t lrow)
Definition: AbstractTextEditorApplication.cpp:1707
EditOperation
Definition: AbstractTextEditorApplication.h:707
bool isControlModifierPressed() const
Definition: AbstractTextEditorApplication.cpp:164
bool _update_line(row_index_t lrow, std::optional< std::vector< char >> text, bool force, std::mutex *mutex)
論理行を更新する
Definition: AbstractTextEditorApplication.cpp:820
void clearShiftModifier()
Definition: AbstractTextEditorApplication.cpp:159
void set_auto_layout(bool f)
Definition: AbstractTextEditorApplication.cpp:174
bool isAutoLayout() const
Definition: AbstractTextEditorApplication.cpp:2157
void invalidate_visual_line_details(row_index_t vrow, size_t n=-1)
Definition: AbstractTextEditorApplication.cpp:577
std::vector< Document::Line > * documentLinesForWrite(bool check_readonly=true)
Definition: AbstractTextEditorApplication.cpp:1040
void set_selection_end(SelectionAnchor const &anchor)
Definition: AbstractTextEditorApplication.cpp:414
int current_visual_col() const
Definition: AbstractTextEditorApplication.cpp:317
void setTextEditorEngine(const TextEditorEngine_sp &e)
Definition: AbstractTextEditorApplication.cpp:1159
void setContentWidth(int w)
Definition: AbstractTextEditorApplication.cpp:1022
void set_text_font(const QFont &font)
Definition: AbstractTextEditorApplication.cpp:1445
void setTerminalMode(bool f)
Definition: AbstractTextEditorApplication.cpp:2240
virtual void setCursorRow(row_index_t vrow, bool auto_scroll=true, bool by_mouse=false)
Definition: AbstractTextEditorApplication.cpp:1481
void internalWrite(const ushort *begin, const ushort *end)
Definition: AbstractTextEditorApplication.cpp:2288
void edit_cut()
Definition: AbstractTextEditorApplication.cpp:2218
void loadExampleFile()
Definition: TextEditorView.cpp:125
int calcColumnToIndex(int column)
Definition: AbstractTextEditorApplication.cpp:1814
col_index_t current_logical_col() const
Definition: AbstractTextEditorApplication.cpp:296
TextEditorContext * cx()
Definition: AbstractTextEditorApplication.cpp:1126
int logical_nlines() const
論理行数を返す
Definition: AbstractTextEditorApplication.cpp:225
SelectionAnchor const & selection_start() const
Definition: AbstractTextEditorApplication.cpp:399
void setRecentlyUsedPath(QString const &path)
Definition: AbstractTextEditorApplication.cpp:211
void set_read_only(bool f)
Definition: AbstractTextEditorApplication.cpp:2176
bool saveFile(QString const &path, QString *error_message=nullptr)
Definition: AbstractTextEditorApplication.cpp:1303
virtual void moveCursorDown()
Definition: AbstractTextEditorApplication.cpp:1940
void movePageUp()
Definition: AbstractTextEditorApplication.cpp:2049
void scrollToTop()
Definition: AbstractTextEditorApplication.cpp:1950
int editor_viewport_height() const
Definition: AbstractTextEditorApplication.cpp:1116
Private * m
Definition: AbstractTextEditorApplication.h:621
bool is_current_line_writable() const
Definition: AbstractTextEditorApplication.cpp:1094
void moveCursorRight()
Definition: AbstractTextEditorApplication.cpp:1989
void setWriteMode(WriteMode wm)
Definition: AbstractTextEditorApplication.cpp:2225
std::vector< Document::Line > _wrap_line(Document::Line line, std::mutex *mutex) const
Definition: AbstractTextEditorApplication.cpp:613
static int nextTabStop(TextEditorContext const *cx, int x)
Definition: AbstractTextEditorApplication.cpp:1539
int linenum_area_width_px() const
行番号表示領域の幅を返す(ピクセル単位)
Definition: AbstractTextEditorApplication.cpp:261
void moveCursorOut()
Definition: AbstractTextEditorApplication.cpp:1859
bool isWidthFixed() const
Definition: AbstractTextEditorApplication.cpp:1386
Document * document()
Definition: AbstractTextEditorApplication.cpp:1359
bool update_visual_line(row_index_t lrow, bool force)
論理行番号に対応する物理行情報を更新する
Definition: AbstractTextEditorApplication.cpp:859
virtual PositionX currentPixelX() const
Definition: AbstractTextEditorApplication.h:826
static int charWidth(uint32_t c)
Definition: AbstractTextEditorApplication.cpp:998
void doDelete()
Definition: AbstractTextEditorApplication.cpp:1718
void updateSelectionAnchor2(bool auto_scroll)
Definition: AbstractTextEditorApplication.cpp:1429
State state() const
Definition: AbstractTextEditorApplication.cpp:1354
void set_current_visual_col(col_index_t col)
Definition: AbstractTextEditorApplication.cpp:307
bool deleteIfSelected()
Definition: AbstractTextEditorApplication.cpp:1695
bool openFile(QString const &path, QString *error_message=nullptr)
Definition: AbstractTextEditorApplication.cpp:1225
QString statusLine() const
Definition: AbstractTextEditorApplication.cpp:2107
virtual void calc_pos_x(CharBuffer *chars) const
Definition: AbstractTextEditorApplication.h:702
int cursor_col_px() const
Definition: AbstractTextEditorApplication.cpp:353
LineIndexMap::LogicalPosition query_logical_for_visual_row(row_index_t vrow) const
物理行番号から論理行番号と論理列番号を求める。
Definition: AbstractTextEditorApplication.cpp:540
row_index_t lrow_to_vrow(row_index_t lrow) const
論理行番号から物理行番号を求める。
Definition: AbstractTextEditorApplication.cpp:762
void initEngine(const std::shared_ptr< TextEditorContext > &cx)
Definition: AbstractTextEditorApplication.cpp:1121
void setCursorVisible(bool show)
Definition: AbstractTextEditorApplication.cpp:186
void moveCursorHome(bool consider_indent)
Definition: AbstractTextEditorApplication.cpp:1864
int scrollBottomLimit2() const
Definition: AbstractTextEditorApplication.cpp:1854
int leftMargin_() const
Definition: AbstractTextEditorApplication.cpp:206
void update_visual_lines_all()
全論理行の折り返し結果とLineIndexMapを再構築する
Definition: AbstractTextEditorApplication.cpp:875
int line_height_px() const
Definition: AbstractTextEditorApplication.cpp:1469
void pressEscape()
Definition: AbstractTextEditorApplication.cpp:1344
const CharBuffer * parse_current_line() const
Definition: AbstractTextEditorApplication.cpp:594
void clear_selection()
Definition: AbstractTextEditorApplication.cpp:434
bool isLineNumberVisible() const
Definition: AbstractTextEditorApplication.cpp:993
void restorePos()
Definition: AbstractTextEditorApplication.cpp:1401
void doBackspace()
Definition: AbstractTextEditorApplication.cpp:1796
bool isInsertMode() const
Definition: AbstractTextEditorApplication.cpp:2230
void setCursorPosByMouse(RowCol vpos, QPoint pt)
Definition: AbstractTextEditorApplication.cpp:1532
RowCol visual_position(SelectionAnchor const &a) const
Definition: AbstractTextEditorApplication.cpp:782
void setDocument(const std::vector< Document::Line > *source)
Definition: AbstractTextEditorApplication.cpp:1046
State
Definition: AbstractTextEditorApplication.h:576
void set_scroll_horz_pos_px(int col)
Definition: AbstractTextEditorApplication.cpp:345
AbstractTextEditorApplication::WrappingMode wrappingMode() const
Definition: AbstractTextEditorApplication.cpp:608
int client_height_px() const
Definition: AbstractTextEditorApplication.cpp:1008
int scrollBottomLimit() const
Definition: AbstractTextEditorApplication.cpp:1849
void write(uint32_t c, bool by_keyboard)
Definition: AbstractTextEditorApplication.cpp:2374
bool isCursorVisible()
Definition: AbstractTextEditorApplication.cpp:191
int scroll_vert_pos_px() const
Definition: AbstractTextEditorApplication.cpp:327
void set_selection_end_enabled(bool enabled)
Definition: AbstractTextEditorApplication.cpp:424
void pressEnter()
Definition: AbstractTextEditorApplication.cpp:1338
const Document::Line * currentLine() const
Definition: AbstractTextEditorApplication.cpp:391
int scroll_horz_pos_px() const
Definition: AbstractTextEditorApplication.cpp:332
int line_baseline_px() const
Definition: AbstractTextEditorApplication.cpp:1475
void update_line_index_map(row_index_t lrow, Document::Line *ll, std::mutex *mutex)
論理行に対応する物理行数を更新する(line_index_map)
Definition: AbstractTextEditorApplication.cpp:798
void setSelectionAnchor(bool enabled, bool update_anchor, bool auto_scroll)
Definition: AbstractTextEditorApplication.cpp:2186
bool isPaintingSuppressed() const
Definition: AbstractTextEditorApplication.cpp:1030
void scrollUp()
Definition: AbstractTextEditorApplication.cpp:1913
void _set_cursor_col(col_index_t col, bool auto_scroll=true, bool by_mouse=false)
Definition: AbstractTextEditorApplication.cpp:1503
void need_to_update_scroll_bar()
スクロールバー更新が必要であることを通知する
Definition: AbstractTextEditorApplication.cpp:252
bool hasSelection() const
Definition: AbstractTextEditorApplication.cpp:1411
virtual void setCursorCol(col_index_t vcol)
Definition: AbstractTextEditorApplication.cpp:1520
void insert_line(row_index_t lrow)
Definition: AbstractTextEditorApplication.cpp:1069
void write_(char const *ptr, bool by_keyboard)
Definition: AbstractTextEditorApplication.cpp:2606
bool isChanged() const
Definition: AbstractTextEditorApplication.cpp:196
void _edit_op(EditOperation op)
Definition: AbstractTextEditorApplication.cpp:1670
void wrap_line(Document::Line *ll, bool force, std::mutex *mutex)
Definition: AbstractTextEditorApplication.cpp:744
WrappingMode
Definition: AbstractTextEditorApplication.h:581
virtual void layoutEditor()
Definition: AbstractTextEditorApplication.cpp:978
bool isShiftModifierPressed() const
Definition: AbstractTextEditorApplication.cpp:169
void edit_paste()
Definition: AbstractTextEditorApplication.cpp:2196
void sync_selection()
Definition: AbstractTextEditorApplication.cpp:429
void appendBulk(std::string_view const &str)
文字列を複数行に分割して、ドキュメントの末尾に追加する
Definition: AbstractTextEditorApplication.cpp:2510
CharBuffer parse_logical_line(const TextEditorContext *cx, row_index_t lrow) const
Definition: AbstractTextEditorApplication.cpp:1084
void moveCursorUp()
Definition: AbstractTextEditorApplication.cpp:1930
Font const & text_font() const
Definition: AbstractTextEditorApplication.cpp:1458
void movePageDown()
Definition: AbstractTextEditorApplication.cpp:2063
Font const & fixed_font() const
Definition: AbstractTextEditorApplication.cpp:1453
void setCursorPos(RowCol const &vpos)
Definition: AbstractTextEditorApplication.cpp:1526
bool save(std::function< bool(char const *p, size_t n)> callback) const
Definition: AbstractTextEditorApplication.h:871
void set_scroll_vert_pos_px(int row)
Definition: AbstractTextEditorApplication.cpp:337
Document::Line const * visual_line(row_index_t vrow) const
Definition: AbstractTextEditorApplication.h:641
void setWrappingMode(WrappingMode mode)
Definition: AbstractTextEditorApplication.cpp:599
row_index_t vrow_to_lrow(row_index_t vrow) const
Definition: AbstractTextEditorApplication.cpp:772
static const int LINE_NUMBER_AREA_WIDTH
Definition: AbstractTextEditorApplication.h:569
void logicalMoveToBottom()
Definition: AbstractTextEditorApplication.cpp:2269
bool isOverwriteMode() const
Definition: AbstractTextEditorApplication.cpp:2235
void paintLineNumbers(std::function< void(int, QString const &, Document::Line const *)> const &draw)
Definition: AbstractTextEditorApplication.cpp:2114
bool is_read_only() const
Definition: AbstractTextEditorApplication.cpp:2181
bool commit_line(row_index_t lrow, const CharBuffer &vec)
論理行を更新する(テキストを指定して更新する)
Definition: AbstractTextEditorApplication.cpp:951
void moveToTop()
Definition: AbstractTextEditorApplication.cpp:2257
std::shared_ptr< TextEditorContext > editor_cx
Definition: AbstractTextEditorApplication.h:670
void new_document()
Definition: AbstractTextEditorApplication.cpp:1145
void _update_logical_pos_cache() const
Definition: AbstractTextEditorApplication.cpp:275
void moveCursorLeft()
Definition: AbstractTextEditorApplication.cpp:1958
WriteMode
Definition: AbstractTextEditorApplication.h:571
row_index_t current_logical_row() const
Definition: AbstractTextEditorApplication.cpp:290
void set_fixed_font(const QFont &font)
Definition: AbstractTextEditorApplication.cpp:1437
void setModifierKeys(Qt::KeyboardModifiers const &keymod)
Definition: AbstractTextEditorApplication.cpp:152
void edit_copy()
Definition: AbstractTextEditorApplication.cpp:2213
void invalidate_nlines_cache()
物理行数キャッシュを無効化する
Definition: AbstractTextEditorApplication.cpp:269
void update_horz_scroll()
Definition: AbstractTextEditorApplication.cpp:2082
int current_visual_x_px() const
Definition: AbstractTextEditorApplication.cpp:322
virtual void updateVisibility(UpdateVisibilityOption const &arg)=0
QString recentlyUsedPath()
Definition: AbstractTextEditorApplication.cpp:216
void setPaintingSuppressed(bool f)
Definition: AbstractTextEditorApplication.cpp:1035
void scrollDown()
Definition: AbstractTextEditorApplication.cpp:1921
void moveToBottom()
Definition: AbstractTextEditorApplication.cpp:2281
void invalidate_visual_row_info(row_index_t vrow, size_t n=-1)
指定した表示行範囲の描画・解析詳細を無効化する
Definition: AbstractTextEditorApplication.cpp:560
void showLineNumber(bool show, int left_margin=LINE_NUMBER_AREA_WIDTH)
Definition: AbstractTextEditorApplication.cpp:180
TextEditorEngine_sp engine() const
Definition: AbstractTextEditorApplication.cpp:1139
virtual ~AbstractTextEditorApplication()
Definition: AbstractTextEditorApplication.cpp:147
int cursor_row_px() const
Definition: AbstractTextEditorApplication.cpp:358
virtual void updateScrollBarRange()
Definition: AbstractTextEditorApplication.h:733
void savePos()
Definition: AbstractTextEditorApplication.cpp:1391
void initEditor()
Definition: AbstractTextEditorApplication.cpp:987
void clear()
Definition: AbstractTextEditorApplication.cpp:1171
void setChanged(bool f)
Definition: AbstractTextEditorApplication.cpp:201
void set_line_margin(int n)
Definition: AbstractTextEditorApplication.cpp:1369
void invalidate_logical_row_info(row_index_t vrow)
Definition: AbstractTextEditorApplication.cpp:565
SelectionAnchor const & selection_end() const
Definition: AbstractTextEditorApplication.cpp:404
int editor_viewport_width_px() const
Definition: AbstractTextEditorApplication.cpp:1111
void updateSelectionAnchor1(bool auto_scroll)
Definition: AbstractTextEditorApplication.cpp:1416
int client_width_px() const
Definition: AbstractTextEditorApplication.cpp:1003
CharBuffer _parse_line(const TextEditorContext *cx, const Document::Line *line, std::mutex *mutex) const
UTF-8行をCharacter列へ変換し、全文字のX座標を計算する
Definition: AbstractTextEditorApplication.cpp:450
row_index_t visual_nlines() const
物理行数を返す
Definition: AbstractTextEditorApplication.cpp:234
void set_line_margin_px(int top, int bottom)
Definition: AbstractTextEditorApplication.cpp:1463
Document::Line * visual_line(row_index_t vrow)
物理行を取得する
Definition: AbstractTextEditorApplication.cpp:368
void moveCursorEnd()
Definition: AbstractTextEditorApplication.cpp:1893
void set_selection_start(SelectionAnchor const &anchor)
Definition: AbstractTextEditorApplication.cpp:409
void writeNewLine()
Definition: AbstractTextEditorApplication.cpp:1176
void set_current_visual_row(row_index_t row)
Definition: AbstractTextEditorApplication.cpp:302
bool isTerminalMode() const
Definition: AbstractTextEditorApplication.cpp:2252
AbstractTextEditorApplication()
Definition: AbstractTextEditorApplication.cpp:142
Definition: AbstractTextEditorApplication.h:92
std::vector< Character >::const_iterator end() const
Definition: AbstractTextEditorApplication.h:157
void insert(std::vector< Character >::iterator pos, Character const *first, Character const *last)
Definition: AbstractTextEditorApplication.h:165
void push_back(Character const &c)
Definition: AbstractTextEditorApplication.h:137
void clear()
Definition: AbstractTextEditorApplication.h:109
CharBuffer()
Definition: AbstractTextEditorApplication.h:97
std::vector< Character >::iterator begin()
Definition: AbstractTextEditorApplication.h:145
void insert(std::vector< Character >::iterator pos, std::vector< Character >::const_iterator first, std::vector< Character >::const_iterator last)
Definition: AbstractTextEditorApplication.h:169
size_t size() const
Definition: AbstractTextEditorApplication.h:117
void emplace_back(Character const &c)
Definition: AbstractTextEditorApplication.h:141
bool empty() const
Definition: AbstractTextEditorApplication.h:121
std::vector< Character >::iterator end()
Definition: AbstractTextEditorApplication.h:149
CharBuffer(std::vector< Character > const &v)
Definition: AbstractTextEditorApplication.h:101
Character & operator[](size_t i)
Definition: AbstractTextEditorApplication.h:129
void erase(std::vector< Character >::iterator first, std::vector< Character >::iterator last)
Definition: AbstractTextEditorApplication.h:177
void resize(size_t n)
Definition: AbstractTextEditorApplication.h:113
void erase(std::vector< Character >::iterator pos)
Definition: AbstractTextEditorApplication.h:173
void insert(std::vector< Character >::iterator pos, Character const &first)
Definition: AbstractTextEditorApplication.h:161
void reserve(size_t n)
Definition: AbstractTextEditorApplication.h:105
std::shared_ptr< std::vector< Character > > vec
Definition: AbstractTextEditorApplication.h:96
Character const & back() const
Definition: AbstractTextEditorApplication.h:125
std::vector< Character >::const_iterator begin() const
Definition: AbstractTextEditorApplication.h:153
Definition: AbstractTextEditorApplication.h:186
std::vector< Line > logical_lines
Definition: AbstractTextEditorApplication.h:417
LineType
Definition: AbstractTextEditorApplication.h:203
@ Normal
Definition: AbstractTextEditorApplication.h:205
@ Del
Definition: AbstractTextEditorApplication.h:207
@ Add
Definition: AbstractTextEditorApplication.h:206
@ Invalid
Definition: AbstractTextEditorApplication.h:204
QByteArray all
Definition: AbstractTextEditorApplication.h:413
std::variant< std::vector< char >, std::string_view > varline_t
Definition: AbstractTextEditorApplication.h:190
Definition: LineIndexMap.h:29
Definition: AbstractTextEditorApplication.h:420
Document document
Definition: AbstractTextEditorApplication.h:422
Definition: AbstractTextEditorApplication.h:22
@ Right
Definition: AbstractTextEditorApplication.h:26
@ Delete
Definition: AbstractTextEditorApplication.h:31
@ Home
Definition: AbstractTextEditorApplication.h:28
@ End
Definition: AbstractTextEditorApplication.h:29
@ Insert
Definition: AbstractTextEditorApplication.h:30
@ PageUp
Definition: AbstractTextEditorApplication.h:32
@ Down
Definition: AbstractTextEditorApplication.h:25
@ PageDown
Definition: AbstractTextEditorApplication.h:33
@ Left
Definition: AbstractTextEditorApplication.h:27
@ Up
Definition: AbstractTextEditorApplication.h:24
Definition: GitObjectManager.h:7
Definition: AbstractTextEditorApplication.h:593
CharAttr a
Definition: AbstractTextEditorApplication.h:595
uint16_t c
Definition: AbstractTextEditorApplication.h:594
Definition: AbstractTextEditorApplication.h:516
std::unordered_map< QString, int > map
Definition: AbstractTextEditorApplication.h:519
Definition: AbstractTextEditorApplication.h:587
CharFlags char_flag
Definition: AbstractTextEditorApplication.h:589
QRect clip
Definition: AbstractTextEditorApplication.h:590
CharAttr char_attr
Definition: AbstractTextEditorApplication.h:588
Definition: AbstractTextEditorApplication.cpp:95
Definition: AbstractTextEditorApplication.h:683
bool auto_scroll
Definition: AbstractTextEditorApplication.h:686
bool change_col
Definition: AbstractTextEditorApplication.h:685
bool ensure_current_line_visible
Definition: AbstractTextEditorApplication.h:684
Definition: AbstractTextEditorApplication.h:37
bool operator==(CharAttr const &r) const
Definition: AbstractTextEditorApplication.h:49
CharAttr(int index=Normal)
Definition: AbstractTextEditorApplication.h:45
QColor color
Definition: AbstractTextEditorApplication.h:44
uint16_t index
Definition: AbstractTextEditorApplication.h:43
Index
Definition: AbstractTextEditorApplication.h:38
@ Hilite
Definition: AbstractTextEditorApplication.h:41
@ Normal
Definition: AbstractTextEditorApplication.h:39
@ Invert
Definition: AbstractTextEditorApplication.h:40
bool operator!=(CharAttr const &r) const
Definition: AbstractTextEditorApplication.h:53
Definition: AbstractTextEditorApplication.h:59
bool selected
Definition: AbstractTextEditorApplication.h:68
DiffMarker
Definition: AbstractTextEditorApplication.h:60
@ Del
Definition: AbstractTextEditorApplication.h:62
@ Undefined
Definition: AbstractTextEditorApplication.h:61
@ Add
Definition: AbstractTextEditorApplication.h:63
@ _Reserved
Definition: AbstractTextEditorApplication.h:64
bool current_line
Definition: AbstractTextEditorApplication.h:69
uint16_t all
Definition: AbstractTextEditorApplication.h:73
uint8_t diff_marker
Definition: AbstractTextEditorApplication.h:70
Definition: AbstractTextEditorApplication.h:77
int right_x
Definition: AbstractTextEditorApplication.h:80
char32_t unicode
Definition: AbstractTextEditorApplication.h:78
CharAttr attr
Definition: AbstractTextEditorApplication.h:81
Character(char32_t unicode)
Definition: AbstractTextEditorApplication.h:83
int left_x
Definition: AbstractTextEditorApplication.h:79
Definition: AbstractTextEditorApplication.h:194
CharBuffer chars
Definition: AbstractTextEditorApplication.h:195
uint64_t metrics_revision
Definition: AbstractTextEditorApplication.h:200
std::vector< CharFlags > flags
Definition: AbstractTextEditorApplication.h:196
uint64_t text_revision
Definition: AbstractTextEditorApplication.h:199
Definition: AbstractTextEditorApplication.h:221
varline_t text
Definition: AbstractTextEditorApplication.h:222
Meta meta
Definition: AbstractTextEditorApplication.h:223
Definition: AbstractTextEditorApplication.h:209
static Line View(std::string_view v)
Definition: AbstractTextEditorApplication.h:285
void clear_visual_lines()
Definition: AbstractTextEditorApplication.h:406
void append_text(const std::vector< char > &new_text)
Definition: AbstractTextEditorApplication.h:394
LineProperty * detail() const
Definition: AbstractTextEditorApplication.h:334
void set_line_number_override(int32_t num)
Definition: AbstractTextEditorApplication.h:329
static Line None()
Definition: AbstractTextEditorApplication.h:262
LineProperty * new_detail()
Definition: AbstractTextEditorApplication.h:339
void clear_detail()
Definition: AbstractTextEditorApplication.h:345
static Line NormalEmptyLine()
Definition: AbstractTextEditorApplication.h:255
void set_text(std::vector< char > const &text)
Definition: AbstractTextEditorApplication.h:366
bool ends_with_new_line() const
Definition: AbstractTextEditorApplication.h:350
Line detached_copy() const
Definition: AbstractTextEditorApplication.h:302
Line()
Definition: AbstractTextEditorApplication.h:229
static Line View(std::string_view v, LineType type)
Definition: AbstractTextEditorApplication.h:269
static Line View(std::string_view v, Meta const &meta)
Definition: AbstractTextEditorApplication.h:277
std::vector< char > * to_vector()
Definition: AbstractTextEditorApplication.h:373
static Line InvalidLine()
Definition: AbstractTextEditorApplication.h:248
std::string_view text() const
Definition: AbstractTextEditorApplication.h:356
LineType type() const
Definition: AbstractTextEditorApplication.h:324
Line(std::vector< char > const &ba, LineType type=Normal)
Definition: AbstractTextEditorApplication.h:234
void detach_if_shared()
Definition: AbstractTextEditorApplication.h:317
void append_text(std::string_view new_text)
Definition: AbstractTextEditorApplication.h:383
static Line View(Line const &line)
Definition: AbstractTextEditorApplication.h:290
void append_text(char c)
Definition: AbstractTextEditorApplication.h:401
std::shared_ptr< D > sp
Definition: AbstractTextEditorApplication.h:227
Line(QByteArray const &ba, LineType type=Normal)
Definition: AbstractTextEditorApplication.h:241
Definition: LineIndexMap.h:413
Definition: AbstractTextEditorApplication.h:425
row_index_t visual_row
Definition: AbstractTextEditorApplication.h:426
Definition: AbstractTextEditorApplication.h:465
int absolute_x_px
Definition: AbstractTextEditorApplication.h:466
int visual_x_px
Definition: AbstractTextEditorApplication.h:467
Definition: AbstractTextEditorApplication.h:470
col_index_t col
Definition: AbstractTextEditorApplication.h:472
row_index_t row
Definition: AbstractTextEditorApplication.h:471
RowCol(row_index_t row=0, col_index_t col=0)
Definition: AbstractTextEditorApplication.h:473
Definition: AbstractTextEditorApplication.h:434
row_index_t lrow
Definition: AbstractTextEditorApplication.h:436
col_index_t lcol
Definition: AbstractTextEditorApplication.h:437
bool enabled
Definition: AbstractTextEditorApplication.h:435
int compare(SelectionAnchor const &a) const
Definition: AbstractTextEditorApplication.h:442
Definition: AbstractTextEditorApplication.h:503
row_index_t current_logical_row
Definition: AbstractTextEditorApplication.h:505
std::optional< row_index_t > nlines
Definition: AbstractTextEditorApplication.h:504
col_index_t current_logical_col
Definition: AbstractTextEditorApplication.h:506
bool scroll_bar_update_needed
Definition: AbstractTextEditorApplication.h:507
Definition: AbstractTextEditorApplication.h:480
int bottom_line_y
Definition: AbstractTextEditorApplication.h:498
Cache cache
Definition: AbstractTextEditorApplication.h:509
int scroll_horz_pos_px
Definition: AbstractTextEditorApplication.h:491
col_index_t viewport_org_x_cols
Definition: AbstractTextEditorApplication.h:493
int saved_col_hint
Definition: AbstractTextEditorApplication.h:489
row_index_t current_visual_row
Definition: AbstractTextEditorApplication.h:482
row_index_t viewport_org_y_rows
Definition: AbstractTextEditorApplication.h:494
col_index_t current_visual_col
Definition: AbstractTextEditorApplication.h:483
TextEditorEngine_sp engine
Definition: AbstractTextEditorApplication.h:499
int viewport_height_rows
Definition: AbstractTextEditorApplication.h:496
int viewport_width_px
Definition: AbstractTextEditorApplication.h:495
int current_char_span
Definition: AbstractTextEditorApplication.h:490
QRect cursor_rect
Definition: AbstractTextEditorApplication.h:481
PositionX current_pos
Definition: AbstractTextEditorApplication.h:485
int current_visual_col_hint
Definition: AbstractTextEditorApplication.h:484
int scroll_vert_pos_px
Definition: AbstractTextEditorApplication.h:492
row_index_t saved_row
Definition: AbstractTextEditorApplication.h:487
int tab_indent_size
Definition: AbstractTextEditorApplication.h:497
int current_visual_y_px
Definition: AbstractTextEditorApplication.h:486
LineIndexMap line_index_map
Definition: AbstractTextEditorApplication.h:502
col_index_t saved_col
Definition: AbstractTextEditorApplication.h:488
Definition: AbstractTextEditorApplication.h:429
col_index_t lcol
Definition: AbstractTextEditorApplication.h:431
row_index_t lrow
Definition: AbstractTextEditorApplication.h:430