Nothing Special   »   [go: up one dir, main page]

Skip to content

Learning to implement a text editor with python

License

Notifications You must be signed in to change notification settings

zztkm/editor.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

editor.py

Motivation

Inspired by this article, I decided to implement a text editor: Challenging projects every programmer should try - Austin Z. Henley

TODO

  • データ構造: Piece table
    • index
    • insert
    • delete
  • ファイルがない場合に新規作成
  • UI
    • カーソル移動
  • 編集
    • insert
    • delete
    • undo
    • redo
  • Abstractions to separate the visual and memory aspects of the text.

Piece Table Overview

In computing, a piece table is a data structure typically used to represent a text document while it is edited in a text editor. Initially a reference (or 'span') to the whole of the original file is created, which represents the as yet unchanged file. Subsequent inserts and deletes replace a span by combinations of one, two, or three references to sections of either the original document or to a buffer holding inserted text.[1] Typically the text of the original document is held in one immutable block, and the text of each subsequent insert is stored in new immutable blocks. Because even deleted text is still included in the piece table, this makes multi-level or unlimited undo easier to implement with a piece table than with alternative data structures such as a gap buffer. This data structure was invented by J Strother Moore.[2]

コンピュータでは、ピーステーブルは、通常、テキストエディターで編集中のテキスト文書を表現するために使用されるデータ構造です。最初は、元のファイル全体への参照(または「スパン」)が作成され、まだ変更されていないファイルを表します。その後、挿入や削除を行うと、スパンは、元の文書または挿入されたテキストを保持するバッファのいずれかのセクションへの1、2、または3つの参照の組み合わせに置き換えられます[1]。 通常、元の文書のテキストは 1 つの不変ブロックに保持され、それ以降の挿入のテキストはそれぞれ新しい不変ブロックに格納されます。削除されたテキストもピーステーブルに含まれるため、ギャップバッファなどの代替データ構造よりもピーステーブルの方が、複数レベルまたは無制限のアンドゥを簡単に実装することができます。 このデータ構造はJ Strother Mooreによって考案された[2]。: 日本語訳 DeepL

from wiki

Development

init

poetry install

run tests

poetry run tox

run dev editor-py:

poetry run editor-py --version

install dev version editor:

poetry install

After running poetry install, you can run the editor-py as follows:

editor-py --version

Further reading:

About

Learning to implement a text editor with python

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages