LemonCpp2 — LemonCpp 第2世代の軽量C++エディタ

Tool

概要

LemonCpp2 は「the 2rd generation of wangyizhi’s LemonCpp.」という説明文どおり、元の LemonCpp を基にした第二世代の軽量 C++ エディタ/ツール群です。リポジトリはファイル数が少なく、主に LemonCpp.cpp と textbox.hpp を中心に動作が構成されています。一般的な編集操作(Ctrl+C/V/A/S/Z/Y など)や行単位の削除・複製、インデント操作、選択時の括弧での囲みなど、エディタとして必要最小限のショートカットが実装されています。また F9/F10/F11 によるコンパイルや実行のショートカットが設定されており、学習用途や小規模な開発に向いたシンプルさが特徴です(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 5
  • メインの言語: C++

主な特徴

  • 軽量な C++ 実装のエディタ(ソース数が少なく学習に適する)
  • 一般的な編集ショートカットを網羅(コピー・貼り付け・保存・元に戻す等)
  • F9/F10/F11 によるコンパイル・実行連携機能
  • 単純構成で拡張・解析しやすいファイル構造

技術的なポイント

LemonCpp2 は小規模な C++ アプリケーションとして構成されており、主要な機能は少数のファイルに収まっています。textbox.hpp は名前から推測するにテキスト編集のコア(テキストバッファ管理、カーソル移動、選択、インデントや括弧の自動挿入/囲み処理、クリップボード操作、undo/redo)を担うヘッダであり、GUI ロジックやイベント処理は LemonCpp.cpp 側に置かれている可能性が高いです。ICO ファイルが含まれていることからネイティブなデスクトップアプリ(おそらく Windows)としてビルドされます。

キーボードショートカットの一覧は README に詳細があり、これらはキーイベントをフックしてファイル I/O(開く/保存/別名保存)、編集操作(行削除・複製・単語削除)、ファイルタブ管理(Ctrl+Tab など)やビルド操作(F9/F10/F11)へマッピングされています。ビルド関連はソース内で外部コンパイラ呼び出し(system() やプロセス生成)を行っていると推測され、ローカル環境の g++/cl.exe を利用する形で簡易的にコンパイル→実行までを行う実装になっていると考えられます。

この種の小規模エディタでは、テキストレンダリングや選択描画、IME 対応、改行コード・文字コードの扱い(UTF-8 など)といった点が実装の要・難所になります。特に日本語などマルチバイト文字列を扱う場合、バイト単位と表示幅の差分管理やカーソルの正確な位置付け、undo 履歴の一貫性が重要です。拡張の観点では、CMake 等のビルドスクリプト追加によるビルド環境整備、シンタックスハイライトや簡易の LSP クライアント統合、設定ファイルによるキー割り当てのカスタマイズ、プラグイン API の整備などが挙げられます。さらに、クロスプラットフォーム化を目指すなら抽象化レイヤ(ウィンドウ/入力/ファイルI/O)の導入や、ImGui や Qt など既存 GUI ライブラリの採用検討が実用的です。

小規模である利点は、ソースを追いやすく、教育的に内部実装を学べる点にあります。貢献としては、ドキュメント整備、ビルド手順の明記、テキスト操作の境界ケース(大きなファイル、異なる改行文字、UTF-8/UTF-16)に対するテスト追加などから始めるとよいでしょう。(約900字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • LemonCpp New.ico: file
  • LemonCpp.cpp: file
  • README.md: file
  • textbox.hpp: file

まとめ

軽量で読みやすい実装。学習や小規模開発のベースに最適。

リポジトリ情報:

READMEの抜粋:

LemonCpp2

the 2rd generation of wangyizhi’s LemonCpp.

常用快捷键及编译方式:

Ctrl+C:复制

Ctrl+V:粘贴

Ctrl+A:全选

Ctrl+S:保存

Ctrl+Z:撤销

Ctrl+Y:重做

Ctrl+O:打开文件

Ctrl+Shift+S:另存为

Shift+方向键:选中

Ctrl+D:删除整行

Ctrl+E:复制整行

Ctrl+X:剪切

Ctrl+N:新建文件

Ctrl+W:关闭当前文件,如果关闭完无文件了会新建。

Ctrl+[ / Shift+Tab:去掉选中内容/本行の一个缩进。

Ctrl+] / Tab:给选中内容/本行增加一个缩进。

Select+(/{/[/"/':给选中内容包一层符号。

Ctrl+Tab:切换到下一个文件

Ctrl+Shift+Tab:切换到上一个文件

Ctrl+Backspace:删除整个单词

鼠标拖动:选中

F9:编译

F10:运行

F11:编译运…