Ecodeは、応答性とパフォーマンスに焦点を当てた最新のハードウェア向けに設計された軽量のマルチプラットフォームコードエディターです。これは、エディターにコアテクノロジーを提供するハードウェアでアクセル化されたEEPP GUIで開発されました。このプロジェクトは、EEPP GUIを使用した最初の深刻なプロジェクトとして提供されており、現在、その主な目的の1つとしてEEPP GUIライブラリを改善するために開発されています。
より多くのスクリーンショットのために、MacOSで実行され、Windowsで実行され、俳句、低DPI、コード完了、端末、ファイルロケーター、ファイル形式、グローバル発見、グローバル交換、リナー。
.gitignoreサポートを備えたプロジェクトとしてのフォルダー * Ecodeは、他の多くの編集者と同様に、フォルダーをプロジェクトとして扱います。主な違いは、リポジトリ.gitignoreファイルでフィルタリングされているファイルをフィルタリングすることにより、プロジェクトファイルを自動的に消毒しようとすることです。アイデアは、 .gitignoreファイルをプロジェクト設定として使用することです。プロジェクトファイルは、プロジェクト内のファイルを見つけてグローバル検索を行うために使用されます。通常、これは、プロジェクト関連の検索ではるかに優れた結果につながります。また、 .gitignoreによるフィルタリングされたファイルの可視性を可能にする非常に簡単なメカニズムもあります。これは、フォルダー上にサブフォルダーに許可されたフィルタリングパターンを含むファイルを追加して、必要なグローブパターンで.ecode/.prjallowedでファイルを作成し、フィルタリングされたパターンを「フィルタリング」しないようにします。 Ecodeはエディターによってサポートされているファイルのみを追加しますが、エディターは公式にサポートされていないファイルで何もしようとはしません。
プロジェクト哲学を説明するためのいくつかのポイント:
EcodeはWASMにコンパイルされ、最新のブラウザで実行できます。多くの優れたソリューションがあるため、開発をWebバージョンに(少なくとも現時点では)集中する計画はありません。しかし、あなたはそれを試してみることができます:
ここにデモ
現在、ソースコードはEEPPプロジェクトリポジトリにあります。 Ecode Editorソースは、SRC/Tools/Ecodeにあります。 Ecodeは、EEPP GUIライブラリを積極的に改善し、反復するために使用されています。ある時点で、このリポジトリに移行されます。 Ecodeリポジトリは、問題やドキュメントに使用する必要があります。 ECODEのPRSは、EEPPリポジトリで受け入れられます。
アプリケーションを構築する準備ができている各サポートされているプラットフォームのスクリプトがあります。 LinuxとMacosの場合、プロジェクトを構築するのは簡単です。GCC/Clangをインストールし、LIBSDL2から開発ライブラリをインストールする必要があります。 Windowsビルドスクリプトは現在、クロスコンパイルスクリプトであり、MINGW64を使用しています。ただし、Visual StudioとLibSDL2開発ライブラリをインストールして簡単に構築できます。手動でプロジェクトの構築方法の詳細については、EEPPビルドの指示に従ってください。プロジェクト名は常にecodeです(したがって、Makeで構築している場合は、 make ecode実行する必要があります)。
build.app.sh 、圧縮アプリケーションを使用してAppImageパッケージとtar.gz構築しようとします。 ecodeフォルダーには、非圧縮アプリケーションが含まれます。build.app.shはecode.appを作成します。 create.dmg.shを実行して、 dmgファイルを作成します。 ecode.appフォルダーには、非圧縮アプリケーションが含まれます。build.app.sh実行すると、Zippapt Applicationパッケージを使用してzipファイルが作成されます。 ecodeフォルダーには、非圧縮アプリケーションが含まれます。 Windowsから構築するには、こちらの指示に従ってください。build.app.sh 、圧縮アプリケーションでtar.gzを構築しようとします。 ecode.appフォルダーには、非圧縮アプリケーションが含まれます。build.app.sh 、圧縮アプリケーションでtar.gzを構築しようとします。 ecode.appフォルダーには、非圧縮アプリケーションが含まれます。 ここでは、よりせっかちなユーザーのために毎晩のビルドがここに配布されています。 Ecodeは積極的に開発されています。ユーザーに必要な保留中の未発表の修正がない限り、毎日のビルドは毎日の使用に安定していない場合があります。
Ecodeは絶えずさらに多くの言語サポートを追加しており、構成ファイルを介してその言語サポートを拡張することもサポートしています(すべての機能(Syntax Highlighting、LSP、Linter、Formatter)。
| 言語 | ハイライト | lsp | リナー | フォーマッタ |
|---|---|---|---|---|
| .htaccess | ✓✓ | なし | なし | なし |
| .ignoreファイル | ✓✓ | なし | なし | なし |
| [x]それ! | ✓✓ | なし | なし | なし |
| 熟達 | ✓✓ | adeptlsp | なし | なし |
| AngelScript | ✓✓ | なし | なし | なし |
| awkスクリプト | ✓✓ | なし | なし | なし |
| バット | ✓✓ | なし | なし | なし |
| バゼル | ✓✓ | なし | なし | なし |
| 曲げる | ✓✓ | なし | なし | なし |
| 青写真 | ✓✓ | なし | なし | なし |
| Brainfuck | ✓✓ | なし | なし | なし |
| バズ | ✓✓ | なし | なし | なし |
| c | ✓✓ | クラングド | cppcheck | Clang-format |
| 炭素 | ✓✓ | なし | なし | なし |
| Clojure | ✓✓ | Clojure-lsp | なし | なし |
| cmake | ✓✓ | cmake-language-server | なし | なし |
| cpp | ✓✓ | クラングド | cppcheck | Clang-format |
| 結晶 | ✓✓ | 結晶 | なし | なし |
| csharp | ✓✓ | オムニシャープ | なし | なし |
| CSS | ✓✓ | エメット言語サーバー | なし | ネイティブ |
| d | ✓✓ | surf-d | なし | なし |
| ダート | ✓✓ | ダート言語サーバー | なし | なし |
| diff | ✓✓ | なし | なし | なし |
| dockerfile | ✓✓ | Docker-LangServer | なし | なし |
| エリクサー | ✓✓ | elixir-ls | なし | なし |
| エルム | ✓✓ | エルムランゲージサーバー | なし | なし |
| 環境ファイル | ✓✓ | なし | なし | なし |
| ファントム | ✓✓ | なし | なし | なし |
| Fortran | ✓✓ | Fortls | なし | なし |
| fstab | ✓✓ | なし | なし | なし |
| gdscript | ✓✓ | なし | なし | なし |
| GLSL | ✓✓ | glsl_analyzer | なし | なし |
| 行く | ✓✓ | gopls | なし | gopls |
| graphql | ✓✓ | なし | なし | なし |
| グルーヴィー | ✓✓ | なし | なし | なし |
| 野ウサギ | ✓✓ | なし | なし | なし |
| ハスケル | ✓✓ | Haskell-Language-Server | hlint | オルモル |
| ハックス | ✓✓ | なし | なし | なし |
| Haxeコンパイラの引数 | ✓✓ | なし | なし | なし |
| hlsl | ✓✓ | なし | なし | なし |
| HTML | ✓✓ | エメット言語サーバー | なし | きれい |
| ini | ✓✓ | なし | なし | なし |
| ジャイ | ✓✓ | なし | なし | なし |
| ジャワ | ✓✓ | jdtls | なし | Clang-format |
| JavaScript | ✓✓ | TypeScript-Language-Server | eslint | きれい |
| javascriprectReact | ✓✓ | TypeScript-Language-Server | なし | なし |
| JSON | ✓✓ | なし | JQ | ネイティブ |
| ジュリア | ✓✓ | Languageserver.jl | なし | なし |
| コトリン | ✓✓ | Kotlin-Language-Server | ktlint | ktlint |
| ラテックス | ✓✓ | texlab | なし | なし |
| ロブスター | ✓✓ | なし | なし | なし |
| ルア | ✓✓ | lua-language-server | luacheck | なし |
| makefile | ✓✓ | なし | なし | なし |
| マークダウン | ✓✓ | なし | なし | なし |
| 中間子 | ✓✓ | なし | なし | なし |
| ムーンスクリプト | ✓✓ | なし | なし | なし |
| ネルア | ✓✓ | なし | ネルア | なし |
| nim | ✓✓ | nimlsp | nim | なし |
| objeck | ✓✓ | なし | なし | なし |
| Objective-C | ✓✓ | クラングド | なし | Clang-format |
| ocaml | ✓✓ | ocaml-lsp | なし | なし |
| オーディン | ✓✓ | OLS | なし | なし |
| openscad | ✓✓ | なし | なし | なし |
| パスカル | ✓✓ | なし | なし | なし |
| Perl | ✓✓ | Perlnavigator | なし | なし |
| Php | ✓✓ | phpactor | Php | なし |
| Pico-8 | ✓✓ | なし | なし | なし |
| プレーンテキスト | ✓✓ | なし | なし | なし |
| po | ✓✓ | なし | なし | なし |
| ポニー | ✓✓ | なし | なし | なし |
| postgreSql | ✓✓ | なし | なし | なし |
| Powershell | ✓✓ | なし | なし | なし |
| Python | ✓✓ | Pylsp | ラフ | 黒 |
| r | ✓✓ | r言語サーバー | なし | なし |
| 指輪 | ✓✓ | なし | なし | なし |
| ルビー | ✓✓ | ソーラーグラフ | なし | なし |
| さび | ✓✓ | さびアナリザー | なし | Rustfmt |
| サス | ✓✓ | エメット言語サーバー | なし | なし |
| スカラ | ✓✓ | 金属 | なし | なし |
| shellscript | ✓✓ | Bash-Language-Server | なし | なし |
| SmallBasic | ✓✓ | なし | なし | なし |
| 堅実さ | ✓✓ | ソルク | ソリント | なし |
| SQL | ✓✓ | なし | なし | なし |
| 迅速 | ✓✓ | sourcekit-lsp | なし | なし |
| TCL | ✓✓ | なし | なし | なし |
| ティール | ✓✓ | なし | TL | なし |
| トム | ✓✓ | なし | なし | なし |
| タイプスクリプト | ✓✓ | TypeScript-Language-Server | eslint | きれい |
| タイプスリプトリーアクセス | ✓✓ | TypeScript-Language-Server | なし | なし |
| v | ✓✓ | v-アナリーザー | なし | v |
| ヴァラ | ✓✓ | ヴァラ言語サーバー | なし | なし |
| verilog | ✓✓ | なし | なし | なし |
| ビジュアルベーシック | ✓✓ | なし | なし | なし |
| vue | ✓✓ | VLS | なし | なし |
| レン | ✓✓ | なし | なし | なし |
| x86アセンブリ | ✓✓ | なし | なし | なし |
| XML | ✓✓ | エメット言語サーバー | ネイティブ | ネイティブ |
| Xtend | ✓✓ | なし | なし | なし |
| Yaml | ✓✓ | Yaml-Language-Server | なし | なし |
| ジグ | ✓✓ | ZLS | ジグ | ジグ |
ネイティブタグとは、機能がEcodeによってネイティブにサポートされていることを意味し、機能するための外部ツールは必要ありません。
Ecodeは、現在の言語サポートの健康を表示するツールを提供します。 Ecodeから、 Settings -> Tools -> Check Language Health 、CLIから--health Flag: ecode --healthを使用できます。 Health Check Flagを使用して、行方不明の言語サーバー、リナー、フォーマッタのトラブルシューティングを行います。
すべての言語の健康をecode --healthで確認するか、 ecode --health-lang=<lang> 。
プラグインは、ベースコードエディター機能を拡張します。現在、すべてのプラグインはデフォルトで有効になっていますが、オプションであり、いつでも無効にすることができます。 Ecodeは、プラグインが相互に通信できるようにする内部プロトコルを実装します。 LSPプロトコルは、プラグイン通信を実装するためのベースとして使用されます。また、たとえば、LinterプラグインはLSPを消費して診断を改善します。また、Auto Completeモジュールは、利用可能な場合、完了を改善し、署名ヘルプを提供するために、LSPから支援を要求します。
リンターサポートは、各言語から既に安定したリナーを実行することにより提供されます。 Ecodeはデフォルトでいくつかの言語のサポートを提供し、 linters.json構成を拡張することで簡単に拡張できます。 linters.jsonデフォルト構成はこちらから取得できます。新しいリナーを構成するには、 ecodeのデフォルト構成パスで新しいlinters.jsonファイルを作成できます。
linters.json形式このフォーマットは、サポートされているファイル形式を含む構成オブジェクトとオブジェクトの配列、LUAパターンを含むオブジェクトの配列を備えた非常にシンプルなJSONオブジェクトです。また、いくつかのオプションの追加オブジェクトキーもサポートします。
javascriptリナーの例(eslintを使用)
{
"config" : {
"delay_time" : " 0.5s "
},
"linters" : [
{
"file_patterns" : [ " %.js$ " , " %.ts$ " ],
"warning_pattern" : " [^:]:(%d+):(%d+): ([^%[]+)%[([^ n ]+) " ,
"warning_pattern_order" : { "line" : 1 , "col" : 2 , "message" : 3 , "type" : 4 },
"command" : " eslint --no-ignore --format unix $FILENAME "
}
]
} Ecodeに作業用リナーを用意するために必要なのはこれだけです。 Linters実行可能ファイルはユーザーが手動でインストールする必要があり、Lintersはエディターと一緒に付属しておらず、実行可能ファイルにも表示される必要があります。これは、 PATH環境変数にある必要があるか、バイナリへのパスが絶対的でなければならないことを意味します。
言語サポートテーブルを確認してください
"disable_lsp_languages": ["lua", "python"] 、LuaとPythonを無効にします。"disable_languages": ["lua", "python"] 、それぞれLuacheckとRuffを無効にします。Formatterプラグインは、Linterプラグインとまったく同じように機能しますが、自動フォーマットコードを実行するツールを実行します。 Ecodeは、 formatters.json構成を拡張することで、デフォルトでいくつかの言語をサポートします。 formatters.jsonデフォルト構成はこちらから取得できます。また、いくつかのフォーマットをネイティブにサポートします。これは、フォーマッタが外部依存関係を必要とせずにecodeに付属することを意味します。また、LSPテキストドキュメントのフォーマットもサポートしています。つまり、フォーマットドキュメントをサポートするLSPを実行している場合、フォーマットも利用できます。新しいフォーマッタを構成するには、 ecodeのデフォルト構成パスで新しいformatters.jsonファイルを作成できます。
formatters.json形式{
"config" : {
"auto_format_on_save" : false
},
"keybindings" : {
"format-doc" : " alt+f "
},
"formatters" : [
{
"file_patterns" : [ " %.js$ " , " %.ts$ " ],
"command" : " prettier $FILENAME "
}
]
}言語サポートテーブルを確認してください
LSPサポートは、各言語から既に安定したLSPを実行することにより提供されます。 Ecodeはデフォルトでいくつかの言語のサポートを提供し、 lspclient.json構成を拡張することで簡単に拡張できます。 lspclient.jsonデフォルト構成はこちらから取得できます。新しいLSPを構成するには、 ecodeのデフォルト構成パスで新しいlspclient.jsonファイルを作成できます。
重要な注意:LSPサーバーは非常にリソース集中的であり、単純なプロジェクトの最良の選択肢ではないかもしれません。
実装の詳細:LSPサーバーは必要なときにのみロードされ、プロジェクトでサポートされているファイルが開かれるまでプロセスは開かれません。
lspclient.json形式この形式は、以前のすべての構成ファイルと同じパターンに従います。構成は、 config 、 keybindings 、 servers 3つのメインキーを備えたJSONファイルで表されます。
CおよびC ++ LSPサーバーの例(Clangdを使用)
{
"config" : {
"hover_delay" : " 0.5s "
},
"servers" : [
{
"language" : " c " ,
"name" : " clangd " ,
"url" : " https://clangd.llvm.org/ " ,
"command" : " clangd -log=error --background-index --limit-results=500 --completion-style=bundled " ,
"file_patterns" : [ " %.c$ " , " %.h$ " , " %.C$ " , " %.H$ " , " %.objc$ " ]
},
{
"language" : " cpp " ,
"use" : " clangd " ,
"file_patterns" : [ " %.inl$ " , " %.cpp$ " , " %.hpp$ " , " %.cc$ " , " %.cxx$ " , " %.c++$ " , " %.hh$ " , " %.hxx$ " , " %.h++$ " , " %.objcpp$ " ]
}
]
} Ecodeで機能するLSPを使用するために必要なのはこれだけです。 LSPS実行可能ファイルはユーザーが手動でインストールする必要があり、LSPはエディターと一緒に付属しておらず、実行可能ファイルにも表示される必要があります。これは、 PATH環境変数にある必要があるか、バイナリへのパスが絶対的でなければならないことを意味します。
言語サポートテーブルを確認してください
lspclient.json configでサーバーを宣言することにより、デフォルトのLSPコマンドをオーバーライドすることができます。プラットフォームごとに一部のオカシオンで変更される可能性があるため、各プラットフォームに異なるコマンドを指定することも可能です。その場合、各キーはプラットフォームであり、プラットフォームの定義と一致しない他のプラットフォームを指定するワイルドカードプラットフォーム「その他」もあります。たとえば、 sourcekit-lsp次のことを使用します: "command": {"macos": "xcrun sourcekit-lsp","other": "sourcekit-lsp"}{"name": "clangd","command_parameters": "--background-index-priority=background --malloc-trim"}次のようなことをする必要があります。Ecodeは、いくつかの基本的なgit統合を提供します(将来的には、その他の機能が発生します)。その主な目的は、ユーザーがGitで最も基本的な操作を行うのを支援することです。サポートされている現在の機能の一部:gitステータスと統計視覚化(ファイル状態)、コミット、プッシュ、チェックアウト、プル、フェッチ、ファーストフォワードマージ、作成+の作成+削除ブランチ、マネージャー。すべての統計は、リアルタイムで自動的に更新/更新されます。いくつかの基本的な構成も利用できます。プラグインでは、ユーザーがgitバイナリをインストールし、 PATH Environment Variableで使用できるようにする必要があります。
git.json形式この形式は、以前のすべての構成ファイルと同じパターンに従います。構成は、 config 、 keybindings 、 servers 3つのメインキーを備えたJSONファイルで表されます。
CおよびC ++ LSPサーバーの例(Clangdを使用)
{
"config" : {
"silent" : false ,
"status_recurse_submodules" : true ,
"statusbar_display_branch" : true ,
"statusbar_display_modifications" : true ,
"ui_refresh_frequency" : " 5s "
},
"keybindings" : {
"git-blame" : " alt+shift+b "
}
}.gitディレクトリ内で変更が検出された場合にのみ更新をトリガーします)。自動完了プラグインは、コード完了と署名ヘルプの提案を提供することを担当しています。
XML Toolsプラグイン(デフォルトで無効)は、XMLコンテンツを編集するときに改善が可能になります。
Ecodeは、各OSの標準構成パスを尊重します。
XDG_CONFIG_HOMEを使用し、通常は~/.config/ecode/pluginsに翻訳しますHOMEでApplication Supportフォルダーを使用します。通常、 ~/Library/Application Support/ecode/pluginsに翻訳APPDATAを使用し、通常はC:Users{username}AppDataRoamingecodepluginsに翻訳しますすべてのプラグイン構成は、ユーザーが上書き可能にするように設計されています。これは、デフォルトの構成をユーザーからのカスタム構成に置き換えることができることを意味します。たとえば、ユーザーが別のリナーを使用したい場合は、独自のリナー設定ファイルで新しいリナー定義を宣言するだけです。同じことがフォーマッタとLSPSサーバーにも当てはまります。プラグインは、プラグインのカスタマイズの「構成」を常に実装し、カスタムキーバインディングを構成する「keybindings」キーを常に実装します。
カスタムエディターの配色は、以下で見つかったユーザーの配色ディレクトリに追加できます。
XDG_CONFIG_HOMEを使用し、通常は~/.config/ecode/editor/colorschemesに翻訳しますHOMEでApplication Supportフォルダーを使用し、通常は~/Library/Application Support/ecode/editor/colorschemesに翻訳しますAPPDATAを使用します。通常、 C:Users{username}AppDataRoamingecodeeditorcolorschemesに翻訳しますディレクトリに記載されているファイルは、エディターの配色ファイルとして扱われます。各ファイルには、任意の数の配色を含めることができます。
配色の形式は、ここから読むことができます。
カスタムターミナルカラースキームは、以下で見つかったユーザー端末カラースキームディレクトリに追加できます。
XDG_CONFIG_HOMEを使用し、通常は~/.config/ecode/terminal/colorschemesに翻訳しますHOMEでApplication Supportフォルダーを使用し、通常は~/Library/Application Support/ecode/terminal/colorschemesに翻訳しますAPPDATAを使用します。通常、 C:Users{username}AppDataRoamingecodeterminalcolorschemesに翻訳しますディレクトリに記載されているファイルは、端末配色ファイルとして扱われます。各ファイルには、任意の数の配色を含めることができます。
配色の形式は、ここから読むことができます。
カスタムUIスキームは、以下で見つかったユーザーUIテーマディレクトリに追加できます。
XDG_CONFIG_HOMEを使用し、通常は~/.config/ecode/themesに翻訳しますHOMEでApplication Supportフォルダーを使用し、通常は~/Library/Application Support/ecode/themesに翻訳しますAPPDATAを使用します。通常、 C:Users{username}AppDataRoamingecodethemesに翻訳しますカスタムUIテーマファイルには拡張機能が必要です.css 、ECODEはディレクトリに.css拡張機能を備えたすべてのファイルを探します。UIテーマ名は拡張機能なしのファイル名です。新しいテーマはSettings -> Window -> UI Themeに表示されます。
カスタムUIテーマを使用すると、ユーザーの意志でエディターをカスタマイズできます。 EcodeはCSSを使用してUIのすべての要素をスタイリングするため、新しいテーマの作成は非常に簡単です。カラーパレットのみをカスタマイズすることは可能ですが、必要に応じてすべてのUI要素をカスタマイズすることもできます。 UIテーマ全体をカスタマイズすることは広範囲に及ぶ可能性がありますが、色をカスタマイズすることは、UIの色付けに使用されるCSS変数の値を変更するのと同じくらい簡単です。参照のために、Ecodeで使用される完全なベースUIテーマをここで見ることができます。最も重要なセレクターは、すべての変数が定義されている:rootセレクターです。カラー変数は、そのファイルから簡単に抽出できます。
色合いの色のみを変更するカスタムUIテーマの簡単な例、 Breeze Light Red.cssと呼びましょう:
: root {
--inherit-base-theme : true;
--primary : # e93d66 ;
--scrollbar-button : # a94074 ;
--item-hover : # 502834 ;
--tab-hover : # 5e3347 ;
}これにより、明るい赤色の新しいUIテーマが効果的に作成/追加されます。非常に重要な詳細は、UIテーマがデフォルトテーマの完全な定義を継承する必要がある場合、 --inherit-base-theme: true :true :root要素、そうでなければUIテーマを完全に定義する必要があることです。また、よく知られているCSS仕様に適用される通常のルール(別名適切な特異性を使用し、おそらく!重要なフラグを乱用する)に適用される通常のルールでプロパティを再定義するさまざまなウィジェットのスタイルをオーバーライドすることもできます。
カスタム言語サポートは、以下で見つかった言語ディレクトリに追加できます。
XDG_CONFIG_HOMEを使用し、通常は~/.config/ecode/languagesに翻訳しますHOMEでApplication Supportフォルダーを使用し、通常は~/Library/Application Support/ecode/languagesに変換されますAPPDATAを使用し、通常はC:Users{username}AppDataRoamingecodelanguagesに翻訳しますEcodeは、 json拡張機能を備えたそのディレクトリにある各ファイルを読み取ります。各ファイルには、1つまたは複数の言語を含めることができます。いくつかの言語を設定するために、JSONファイルのルート要素は、各言語に1つのオブジェクトを含む配列である必要があります。そうしないと、ルート要素がオブジェクトである場合、言語定義を含める必要があります。言語定義は、現在サポートされている定義をオーバーライドできます。 Ecodeは、ユーザー定義の定義に優先順位を付けます。
{
"name" : " language_name " ,
"files" : [ " Array of file extensions supported " ],
"comment" : " Sets the comment string used for auto-comment functionality. " ,
"patterns" : [
{ "pattern" : " lua_pattern " , "type" : " type_name " },
{ "pattern" : " no_capture(pattern_capture_1)(pattern_capture_2) " , "type" : { " no_capture_type_name " , " capture_1_type_name " , " capture_2_type_name " } },
{ "pattern" : [ " lua_pattern_start " , " lua_pattern_end " , " escape_character " ], "type" : " type_name " }
],
"symbols" : [
{ "symbol_name" : " type_name " }
],
"visible" : true , /* sets if the language is visible as a main language in the editor, optional parameter, true by default */
"auto_close_xml_tag" : false , /* sets if the language defined supports auto close XML tags, optional parameter, false by default */
"lsp_name" : " sets the LSP name assigned for the language, optional parameter, it will use the _name_ in lowercase if not set "
}Ecodeは、LiteおよびLite-XLエディターと同じ形式に言語定義に使用します。これにより、Ecodeに新しい言語を追加するのがはるかに簡単になります。また、ここにあるEcodeリポジトリからダウンロードできるヘルパーツールもあり、Lite言語定義をEcodeで使用したJSONファイル形式に直接エクスポートできます。
指定され--export-lang-path CLI引数を使用して、それを--export-langすることにより、あらゆる言語定義を簡単に拡張することができます。言語定義を拡張または改善したいユーザーは、それをエクスポートし、それを変更し、カスタム言語パスの.json拡張機能を使用して定義をインストールすることができます。たとえば、言語vueを拡張するには、実行する必要があります: ecode --export-lang=vue --export-lang-path=./vue.json 、エクスポートファイルを終了し、カスタム言語パスに移動します。
{
"name" : " Elixir " ,
"files" : [ " %.ex$ " , " %.exs$ " ],
"comment" : " # " ,
"patterns" : [
{ "pattern" : " #.* n " , "type" : " comment " },
{ "pattern" : [ " : " " , " " " , " \ " ], "type" : " number " },
{ "pattern" : [ " """ " , " """ " , " \ " ], "type" : " string " },
{ "pattern" : [ " " " , " " " , " \ " ], "type" : " string " },
{ "pattern" : [ " ' " , " ' " , " \ " ], "type" : " string " },
{ "pattern" : [ " ~%a[/ " |'%(%[%{<] " , " [/ " |'%)%]%}>] " , " \ " ], "type" : " string " },
{ "pattern" : " -?0x%x+ " , "type" : " number " },
{ "pattern" : " -?%d+[%d%.eE]*f? " , "type" : " number " },
{ "pattern" : " -?%.?%d+f? " , "type" : " number " },
{ "pattern" : " : " ?[%a_][%w_]* " ? " , "type" : " number " },
{ "pattern" : " [%a][%w_!?]*%f[(] " , "type" : " function " },
{ "pattern" : " %u%w+ " , "type" : " normal " },
{ "pattern" : " @[%a_][%w_]* " , "type" : " keyword2 " },
{ "pattern" : " _%a[%w_]* " , "type" : " keyword2 " },
{ "pattern" : " [%+%-=/%*<>!|&] " , "type" : " operator " },
{ "pattern" : " [%a_][%w_]* " , "type" : " symbol " }
],
"symbols" : [
{ "def" : " keyword " },
{ "defp" : " keyword " },
{ "defguard" : " keyword " },
{ "defguardp" : " keyword " },
{ "defmodule" : " keyword " },
{ "defprotocol" : " keyword " },
{ "defimpl" : " keyword " },
{ "defrecord" : " keyword " },
{ "defrecordp" : " keyword " },
{ "defmacro" : " keyword " },
{ "defmacrop" : " keyword " },
{ "defdelegate" : " keyword " },
{ "defoverridable" : " keyword " },
{ "defexception" : " keyword " },
{ "defcallback" : " keyword " },
{ "defstruct" : " keyword " },
{ "for" : " keyword " },
{ "case" : " keyword " },
{ "when" : " keyword " },
{ "with" : " keyword " },
{ "cond" : " keyword " },
{ "if" : " keyword " },
{ "unless" : " keyword " },
{ "try" : " keyword " },
{ "receive" : " keyword " },
{ "after" : " keyword " },
{ "raise" : " keyword " },
{ "rescue" : " keyword " },
{ "catch" : " keyword " },
{ "else" : " keyword " },
{ "quote" : " keyword " },
{ "unquote" : " keyword " },
{ "super" : " keyword " },
{ "unquote_splicing" : " keyword " },
{ "do" : " keyword " },
{ "end" : " keyword " },
{ "fn" : " keyword " },
{ "import" : " keyword2 " },
{ "alias" : " keyword2 " },
{ "use" : " keyword2 " },
{ "require" : " keyword2 " },
{ "and" : " operator " },
{ "or" : " operator " },
{ "true" : " literal " },
{ "false" : " literal " },
{ "nil" : " literal " }
]
}より複雑な構文定義については、ここでEcodeでサポートされているすべての母国語の定義をご覧ください。
順不同でリストされていません:
著者は、コラボレーションを受け入れています。プロジェクトに興味のある人は誰でも参加するよう招待されています。多くの機能はまだ保留中であり、プロジェクトは時間とともにはるかに増加します。コラボレーションしてください。 =)
一部のUnicode文字は、エディターに箱から出してレンダリングされません。レンダリングされていないキャラクターをサポートするフォントを支持して、デフォルトのモノスペースフォントを変更する必要があります。また、従来のモノスパースフォントを使用する場合は、デフォルトのフォールバックフォントを変更することもできます。デフォルトのフォールバックフォントは幅広い言語をカバーする必要がありますが、特別なフォントが必要になる場合があります(現在はCJK言語をカバーしています)。
*1現在のEEPP機能の制限。
*2私はサブピクセルのヒントのファンではありません。しかし、私はそれを実装することをいとわないほどです、私はこの問題にあまり精通していないので、どんな助けも感謝します。
*3 ligaturesはあまり好きではありません。私はそれらを実装するPRSを受け入れています。
*4私はVIMユーザーではなく、VIMモードまたはモーダル編集を実装する資格がありません。 PRはこれをサポートすることを歓迎します。
*5より良いテキスト形成サポートには時間がかかりますが、現時点では急いでいません。 Eepp Architectureは、Harfbuzzサポートを追加する準備ができています。
この編集者は、Lite、Lite-XL、QTCreator、Sublime Text Editorsから深く根付いたインスピレーションを得ています。 Lite/Lite-XLの実装に基づいていくつかの機能が開発されました。いくつかの機能は、Liteから直接移植できます:カラーシームと構文ハイライトパターン(EEPP実装により、元のLite実装を拡張してさらに多くの機能を追加します)。
Ecodeは主にLinuxとMacOSで使用されていますが、Windowsではあまりテストされていません。編集者に問題がある場合は、こちらから報告してください。
これは進行中の作業であり、安定性は保証されていません。重要なタスクに使用しないでください。私は毎日編集者を使用しており、私にとって十分に安定していますが、あなた自身の責任でそれを使用しています。
Niels Lohmann for Json for Modern C ++
SubProcess.hのニール・ヘニング
サックレスターミナルエミュレーターのすべての著者
ヘクセターミナルのフレドリックアレクサンダー
ライトのためのRXI
Lite-XLのFrankoとすべての協力者
セレニティオのアンドレアス・クリング
そして、もっと多くの人!
MITライセンス