gotin / gmacs2

Emacs like text editor working on web browser or web component

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gmacs2

Emacs like text editor working on web browser or web component

TODO list:

  • 画面を適当につくる
  • keyEvent処理系をつくる(シーケンスのハンドリング)
  • シーケンスとイベント処理の部分をつくる
  • イベント処理で、画面に映すところをつくる
  • 複数入力のシーケンス処理を導入
    • キーシケンスの定義部分を独立化できるように
    • 操作用関数リスト(I/F)
  • 日本語入力
  • カーソル位置表示
  • スクロール処理
    • 一番下/上(ないし、設定された位置)であることの検知
    • 適切な量(ないし、設定された量)のスクロール実行
  • コピー&ペースト
    • テキストの選択を可能にする -> mark & move
      • マーク配置
      • 過去のマークへ移動
      • カーソルとマークの置き換え
      • キルリングの導入
      • カーソルとマークの間の文字列をカットしてキルリングへ(cut and push())
      • カーソルとマークの間の文字列をコピーしてキルリングへ(copy and push())
      • カーソルにキルリングの内容をペースト(not pop() but top())
      • カーソルにキルリングの内容をペースト直後、M-yで前のキル内容をペースト
        • 直前のコマンドを知る手段が必要
    • transient mark mode(on/off) -> いるかな?いらないかも(pending)
    • 何らかの処理を選択エリアに対して実行する仕組みと、それを使ったコピー/カット処理 -> Buffer.prototype.region でマークを渡すとカーソルとの間の領域などの情報を作ってくれる
    • カーソル動作、テキスト追加、削除などの動作に対してイベントハンドリングの仕組みを導入する
      • テキスト変化イベント
        • テキスト追加(->カーソル移動)
        • テキスト削除(-> Deleteの場合はカーソル移動なし,backspaceはあり)
      • カーソル移動イベント
        • カーソル水平移動
        • カーソル垂直移動
      • ステータス表示にこれを使ってみる
      • mark操作に対してもイベントを起こす->いるかな?いらないかも(pending)
  • ステータス表示とmini-bufferをちゃんとする
    • mini-buffer(というか、モーダルダイアログ)
      • 検索機能(incremental search / exp) - [ ] 置換機能 - [ ] transient-mark modeのon/off - [ ] その他コマンドも
    • ステータス表示はフレームごとにある
      • フレームは必ず一つのbufferを持つ
      • bufferは複数のフレームを持ちうる
      • フレームごとにカーソルがある
      • 同じbufferを持つフレームに対しても、変更は伝搬する
      • 全フレームに他のフレームのカーソルもつっこんでおき、全viewに対してカーソルに対する処理を実行させればいいはず
  • オブジェクトに分けることを考慮しつつ、複数Bufferを導入。
  • 別ファイルnew/open
  • バッファ切り替え
  • フレーム分割を導入
    • C-x 2
    • C-x ^
    • C-x 3
    • C-x { / }
  • C-u 数字 コマンド
  • vimっぽい動作も可能にする
  • シンタックスハイライト
  • auto-indent
  • auto-completion
  • multiple-cursors
  • 何らかの形で(仮想的な)ファイルシステムと連動。ローカルファイルも触れるとうれしい。
  • undo/redo

About

Emacs like text editor working on web browser or web component

License:MIT License


Languages

Language:JavaScript 96.2%Language:CSS 3.8%