Hungry Delete 中學到的

簡介

Visual Studio code,簡稱 vscode,是微軟的 open source editor,由 Node.js 寫成,支持主流的程式語言。其定位為 IDE 和 Plain Text Editor 之間,所以當中設計巳經包含 Debugger API 等等。

Hungry Delete 是一個 vscode 的 extension, 由 typescript 寫成。有興趣的朋友可以從 Marketplace 下載。設計初衷是減少按 backspace 的次數,暫時的主要功能有 Hungry Delete 和 Smart Backspace。

Hungry Delete

按下 ctrl+backspace

hungry-delete

Smart Backspace

控下 backspace

smart-backspace

VScode API 設計

大致結構

window 和 workspace 是其中兩個主要 namespace,為最外層的 API, 前者負責管理 editors 和 showMessage,後者負責管理 file systems 和 configuration。

每個 tab 為一個 TextEditor。負責管理 selection(s) 及 修改內容 insert, delete, replace

每個 TextEditor tab 只可以打開一個檔案,檔案內容為 TextDocument。

TextDocument 即管理檔案內容

  • 多少行數 lineCount
  • EOL Character eol
  • 檔案是什麼語言 languageId
  • 提取某一行 lineAt 等等。

每一行稱為 TextLine 負責

  • 該行的範圍 rangerangeIncludingLineBreak
  • 第一個非空白的字元 firstNonWhitespaceCharacterIndex
  • 是不是空白行 isEmptyOrWhitespace
  • 及內容 string

Position

Position 是其中一個共用的結構,記錄 Row 和 Column

TextEditor 的 selection 有 start, end, anchorreversed ,前三者全是 Position。

  • 當 selection 左至右時, start = anchor, reversed = false
  • 當 selection 右至左時, start < anchor, reversed = true

TextLine 內 Range 的 start, end 也是 Position。