ECODE هو محرر رمز متعدد المنصات خفيف الوزن مصمم للأجهزة الحديثة مع التركيز على الاستجابة والأداء. تم تطويره باستخدام EEPP GUI المسلسل للأجهزة ، والذي يوفر التكنولوجيا الأساسية للمحرر. يأتي المشروع كأول مشروع خطير يستخدم EEPP GUI ، ويتم تطويره حاليًا لتحسين مكتبة EEPP GUI كجزء من أحد أهدافها الرئيسية.
لمزيد من لقطات الشاشة التي تم تشغيلها على جهاز MacOS ، تعمل على Windows ، تعمل على Haiku ، منخفضة DPI ، إكمال الكود ، المحطة ، محدد الملفات ، تنسيقات الملفات ، Find Global ، Global Reply ، Linter.
.gitignore دعم * يعامل Ecode المجلدات كمشاريع ، مثل العديد من المحررين الآخرين. الفرق الرئيسي هو أنه يحاول أيضًا تعقيم ملفات المشروع تلقائيًا عن طريق تصفية أي ملف يتم تصفيته في ملفات .gitignore المستودع. الفكرة هي استخدام ملف .gitignore كإعداد للمشروع. ستكون ملفات المشروع هي تلك المستخدمة للعثور على الملفات في المشروع وإجراء عمليات البحث العالمية. عادةً ما يترجم هذا إلى نتائج أفضل بكثير لأي بحث مرتبط بالمشروع. هناك أيضًا آلية بسيطة للغاية للسماح برؤية الملفات التي تمت ترشيحها بواسطة .gitignore ، عن طريق إضافة ملف مع أنماط ترشيح مسموح بها في المجلد الفرعي فوق المجلد المحمّل ، وإنشاء ملف في .ecode/.prjallowed مع أنماط الكرة الأرضية اللازمة التي تسمح بأن الأنماط المصفاة "غير مطلوبة". ستضيف ECODE فقط ملفات مدعومة من قبل المحرر ، لن يحاول المحرر فعل أي شيء مع الملفات التي لم يتم دعمها رسميًا.
بعض النقاط لتوضيح فلسفة المشروع:
يمكن تجميع Ecode إلى WASM وتشغيله في أي متصفح حديث. لا توجد خطط لتركيز التطوير على إصدار الويب (على الأقل في الوقت الحالي) نظرًا لوجود الكثير من الحلول الجيدة هناك. ولكن يمكنك تجربتها:
العرض التوضيحي هنا
حاليًا ، يقع الرمز المصدر في مستودع مشروع EEPP. يوجد مصدر محرر Ecode في SRC/Tools/Ecode. يتم استخدام ECODE لتحسين وتكرار مكتبة EEPP GUI. في مرحلة ما ، سيتم ترحيله إلى هذا المستودع. يجب استخدام مستودع ECODE للمشكلات والتوثيق. سيتم قبول PRS لـ Ecode في مستودع EEPP.
هناك نصوص لكل منصة مدعومة جاهزة لبناء التطبيق. بالنسبة إلى Linux و MacOS ، من التافهة إنشاء المشروع ، ستحتاج فقط إلى تثبيت GCC/Clang وكذلك مكتبة التطوير من LIBSDL2. يعد برنامج Windows Build Script حاليًا برنامجًا مشتركًا بين المتجانسة ويستخدم MingW64. ولكن يمكن أيضًا بناؤه بسهولة باستخدام Visual Studio و LIBSDL2 Development Libraries. لمزيد من المعلومات حول كيفية إنشاء مشروع يدويًا ، يرجى اتباع تعليمات بناء 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 بإنشاء ملف zip مع حزمة التطبيق المضغوطة. سيحتوي مجلد ecode على التطبيق غير المضغوط. للبناء من Windows اتبع التعليمات هنا.build.app.sh سيحاول بناء tar.gz مع التطبيق المضغوط. سيحتوي مجلد ecode.app على التطبيق غير المضغوط.build.app.sh سيحاول بناء tar.gz مع التطبيق المضغوط. سيحتوي مجلد ecode.app على التطبيق غير المضغوط. يتم توزيع البناء الليلي هنا للمستخدمين الأكثر نفاد الصبر. يتم تطوير ECODE بنشاط ، وقد لا تكون البناء الليلي مستقرة للاستخدام اليومي ما لم يكن هناك إصلاح غير منشور مطلوب للمستخدم.
تقوم ECODE باستمرار بإضافة المزيد من دعم اللغات ويدعم أيضًا توسيع دعم اللغة عبر ملفات التكوين (لكل ميزة: تمييز بناء الجملة ، LSP ، Linter و Formatter).
| لغة | تسليط الضوء | LSP | لينتر | التنسيق |
|---|---|---|---|---|
| .htaccess | ✓ | لا أحد | لا أحد | لا أحد |
| .ignore ملف | ✓ | لا أحد | لا أحد | لا أحد |
| [x] ذلك! | ✓ | لا أحد | لا أحد | لا أحد |
| بارع | ✓ | adeptlsp | لا أحد | لا أحد |
| ملائكة | ✓ | لا أحد | لا أحد | لا أحد |
| نص AWK | ✓ | لا أحد | لا أحد | لا أحد |
| الخفافيش | ✓ | لا أحد | لا أحد | لا أحد |
| بازيل | ✓ | لا أحد | لا أحد | لا أحد |
| يلوي | ✓ | لا أحد | لا أحد | لا أحد |
| مخطط | ✓ | لا أحد | لا أحد | لا أحد |
| Brainfuck | ✓ | لا أحد | لا أحد | لا أحد |
| شرب حتى الثمالة | ✓ | لا أحد | لا أحد | لا أحد |
| ج | ✓ | clangd | cppcheck | clang-format |
| الكربون | ✓ | لا أحد | لا أحد | لا أحد |
| clojure | ✓ | clojure-lsp | لا أحد | لا أحد |
| cmake | ✓ | خادم Cmake-language | لا أحد | لا أحد |
| CPP | ✓ | clangd | cppcheck | clang-format |
| كريستال | ✓ | بلوري | لا أحد | لا أحد |
| Csharp | ✓ | Omnisharp | لا أحد | لا أحد |
| CSS | ✓ | خادم Emmet-language | لا أحد | محلي |
| د | ✓ | خدمة | لا أحد | لا أحد |
| دارت | ✓ | خادم لغة السهام | لا أحد | لا أحد |
| فرق | ✓ | لا أحد | لا أحد | لا أحد |
| Dockerfile | ✓ | Docker-Langserver | لا أحد | لا أحد |
| إكسير | ✓ | Elixir-LS | لا أحد | لا أحد |
| الدردار | ✓ | خادم الدردار | لا أحد | لا أحد |
| ملف البيئة | ✓ | لا أحد | لا أحد | لا أحد |
| فانتوم | ✓ | لا أحد | لا أحد | لا أحد |
| فورتران | ✓ | fortls | لا أحد | لا أحد |
| FSTAB | ✓ | لا أحد | لا أحد | لا أحد |
| gdscript | ✓ | لا أحد | لا أحد | لا أحد |
| GLSL | ✓ | GLSL_ANADYZER | لا أحد | لا أحد |
| يذهب | ✓ | gopls | لا أحد | gopls |
| GraphQl | ✓ | لا أحد | لا أحد | لا أحد |
| رائع | ✓ | لا أحد | لا أحد | لا أحد |
| أرنبة | ✓ | لا أحد | لا أحد | لا أحد |
| هاسكل | ✓ | خادم Haskell-language | hlint | الذهب الزائف |
| هاكس | ✓ | لا أحد | لا أحد | لا أحد |
| حجج التحويل البرمجي Haxe | ✓ | لا أحد | لا أحد | لا أحد |
| HLSL | ✓ | لا أحد | لا أحد | لا أحد |
| HTML | ✓ | خادم Emmet-language | لا أحد | أجمل |
| إيني | ✓ | لا أحد | لا أحد | لا أحد |
| جاي | ✓ | لا أحد | لا أحد | لا أحد |
| جافا | ✓ | JDTLS | لا أحد | clang-format |
| جافا سكريبت | ✓ | خادم النشوة واللغة | eslint | أجمل |
| JavaScriptreact | ✓ | خادم النشوة واللغة | لا أحد | لا أحد |
| جيسون | ✓ | لا أحد | JQ | محلي |
| جوليا | ✓ | Languageserver.jl | لا أحد | لا أحد |
| كوتلين | ✓ | خادم كوتلين باللغة | ktlint | ktlint |
| مطاط | ✓ | Texlab | لا أحد | لا أحد |
| سرطان البحر | ✓ | لا أحد | لا أحد | لا أحد |
| لوا | ✓ | لوا لاعب الخادم | لوشيك | لا أحد |
| Makefile | ✓ | لا أحد | لا أحد | لا أحد |
| تخفيض السعر | ✓ | لا أحد | لا أحد | لا أحد |
| الميزون | ✓ | لا أحد | لا أحد | لا أحد |
| Moonscript | ✓ | لا أحد | لا أحد | لا أحد |
| نيلوا | ✓ | لا أحد | نيلوا | لا أحد |
| نيم | ✓ | NIMLSP | نيم | لا أحد |
| Objeck | ✓ | لا أحد | لا أحد | لا أحد |
| الهدف-C | ✓ | clangd | لا أحد | clang-format |
| Ocaml | ✓ | OCAML-LSP | لا أحد | لا أحد |
| أودين | ✓ | OLS | لا أحد | لا أحد |
| Openscad | ✓ | لا أحد | لا أحد | لا أحد |
| باسكال | ✓ | لا أحد | لا أحد | لا أحد |
| بيرل | ✓ | Perlnavigator | لا أحد | لا أحد |
| PHP | ✓ | phpactor | PHP | لا أحد |
| بيكو -8 | ✓ | لا أحد | لا أحد | لا أحد |
| نص عادي | ✓ | لا أحد | لا أحد | لا أحد |
| بو | ✓ | لا أحد | لا أحد | لا أحد |
| ترجمة حرفية | ✓ | لا أحد | لا أحد | لا أحد |
| postgresql | ✓ | لا أحد | لا أحد | لا أحد |
| PowerShell | ✓ | لا أحد | لا أحد | لا أحد |
| بيثون | ✓ | PYLSP | روف | أسود |
| ص | ✓ | ص لايسرفر | لا أحد | لا أحد |
| جرس | ✓ | لا أحد | لا أحد | لا أحد |
| روبي | ✓ | Solargraph | لا أحد | لا أحد |
| الصدأ | ✓ | صدأ الحلل | لا أحد | Rustfmt |
| ساس | ✓ | خادم Emmet-language | لا أحد | لا أحد |
| سكالا | ✓ | المعادن | لا أحد | لا أحد |
| Shellscript | ✓ | خادم باش باللغة | لا أحد | لا أحد |
| smallbasic | ✓ | لا أحد | لا أحد | لا أحد |
| صلابة | ✓ | solc | سولهينت | لا أحد |
| SQL | ✓ | لا أحد | لا أحد | لا أحد |
| سريع | ✓ | SourceKit-LSP | لا أحد | لا أحد |
| TCL | ✓ | لا أحد | لا أحد | لا أحد |
| البط البري | ✓ | لا أحد | TL | لا أحد |
| توم | ✓ | لا أحد | لا أحد | لا أحد |
| TypeScript | ✓ | خادم النشوة واللغة | eslint | أجمل |
| TypeCriptReact | ✓ | خادم النشوة واللغة | لا أحد | لا أحد |
| الخامس | ✓ | V-analyzer | لا أحد | الخامس |
| فالا | ✓ | خادم فالا | لا أحد | لا أحد |
| Verilog | ✓ | لا أحد | لا أحد | لا أحد |
| Visual Basic | ✓ | لا أحد | لا أحد | لا أحد |
| Vue | ✓ | VLS | لا أحد | لا أحد |
| وين | ✓ | لا أحد | لا أحد | لا أحد |
| x86 التجميع | ✓ | لا أحد | لا أحد | لا أحد |
| XML | ✓ | خادم Emmet-language | محلي | محلي |
| xtend | ✓ | لا أحد | لا أحد | لا أحد |
| يامل | ✓ | لخادم Yaml-language | لا أحد | لا أحد |
| متعرج | ✓ | ZLS | متعرج | متعرج |
العلامة الأصلية تعني أن الميزة مدعومة أصليًا بواسطة ECODE ولا تحتاج إلى أي أداة خارجية للعمل.
يجلب ECODE أداة لعرض صحة دعم اللغة الحالية. من ECODE ، يمكنك التحقق من حالتها الصحية من Settings -> Tools -> Check Language Health ، ومن CLI يمكنك استخدام علامة --health : ecode --health . استخدم علامة فحص الصحة لاستكشاف خوادم اللغة المفقودة والبانيرات والمنسقات.
تحقق من صحة جميع اللغات باستخدام ecode --health أو اطلب تفاصيل عن لغة معينة مع ecode --health-lang=<lang> .
تمديد المكونات الإضافية وظيفة محرر الرمز الأساسي. يتم تمكين جميع الإضافات حاليًا افتراضيًا ، لكنها اختيارية ويمكن تعطيلها في أي وقت. يقوم ECODE بتنفيذ بروتوكول داخلي يسمح للمكونات الإضافية بالتواصل مع بعضها البعض. سيتم استخدام بروتوكول LSP كقاعدة لتنفيذ اتصال البرنامج المساعد. وعلى سبيل المثال ، سوف يستهلك المكون الإضافي LINTER LSP لتحسين تشخيصاته. كما ستطلب الوحدة النمطية التلقائية للسيارات المساعدة من LSP ، إن وجدت ، لتحسين الإكمال وتوفير مساعدة التوقيع.
يتم توفير دعم Linter من خلال تنفيذ Linters المعتدل بالفعل من كل لغة. يوفر ECODE الدعم للعديد من اللغات افتراضيًا ويمكن تمديده بسهولة عن طريق توسيع تكوين linters.json . يمكن الحصول على التكوين الافتراضي linters.json من هنا. لتكوين المبيدات الجديدة ، يمكنك إنشاء ملف linters.json جديد في مسار التكوين الافتراضي لـ ECODE .
linters.json Formatالتنسيق هو كائن JSON بسيط للغاية مع كائن تكوين ومجموعة من الكائنات التي تحتوي على تنسيقات الملفات المدعومة ، ونمط LUA للعثور على أي خطأ مطبوع بواسطة linter إلى stdout ، وموضع كل مجموعة من النمط ، والأمر الذي يتم تنفيذه. كما يدعم بعض مفاتيح الكائن الإضافية الاختيارية.
مثال JavaScript Linter (باستخدام 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 . يجب أن يتم تثبيت Unterters Executables يدويًا من قبل المستخدم ، ولن تأتي المبيدات مع المحرر ، كما أنها بحاجة إلى أن تكون مرئية للتنفيذ. هذا يعني أنه يجب أن يكون على متغير بيئة PATH أو أن المسار إلى الثنائي يجب أن يكون مطلقًا.
يرجى التحقق من جدول دعم اللغة
"disable_lsp_languages": ["lua", "python"] ، يعطل Lua و Python."disable_languages": ["lua", "python"] ، يعطل Luacheck و Ruff على التوالي. يعمل المكون الإضافي Formatter تمامًا مثل المكون الإضافي Linter ، لكنه سيقوم بتنفيذ أدوات رمز التنسيق التلقائي. يوفر ECODE الدعم لعدة لغات بشكل افتراضي مع يمكن تمديده بسهولة عن طريق توسيع تكوين formatters.json . formatters.json يمكن الحصول على التكوين الافتراضي من هنا. كما أنه يدعم بعض التنسيقات أصلاً ، وهذا يعني أن التنسيق يأتي مع ECODE دون الحاجة إلى أي تبعية خارجية. ويدعم أيضًا تنسيق مستندات النص LSP ، مما يعني أنه إذا كنت تقوم بتشغيل LSP تدعم مستندات التنسيق ، فسيكون التنسيق متاحًا أيضًا. لتكوين التنسيقات الجديدة ، يمكنك إنشاء ملف formatters.json جديد في مسار التكوين الافتراضي لـ ECODE .
formatters.json Format {
"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 الافتراضي من هنا. لتكوين LSPs جديدة ، يمكنك إنشاء ملف lspclient.json جديد في مسار التكوين الافتراضي لـ ECODE .
ملاحظة مهمة: يمكن أن تكون خوادم LSP مكثفة للغاية للموارد وقد لا تكون دائمًا أفضل خيار للمشاريع البسيطة.
تفاصيل التنفيذ: يتم تحميل خوادم LSP فقط عند الحاجة ، ولن يتم فتح أي عملية حتى يتم فتح ملف مدعوم في المشروع.
lspclient.json تنسيق يتبع التنسيق نفس النمط الذي جميع ملفات التكوين السابقة. يتم تمثيل التكوين في ملف JSON مع ثلاثة مفاتيح رئيسية: config ، keybindings ، servers .
مثال خادم 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$ " ]
}
]
} هذا كل ما نحتاجه للحصول على LSP يعمل في Ecode . يجب أن يتم تثبيت Hextables LSPS يدويًا من قبل المستخدم ، ولن تأتي LSPs مع المحرر ، كما أنها بحاجة إلى أن تكون مرئية للمنفذ. هذا يعني أنه يجب أن يكون على متغير بيئة PATH أو أن المسار إلى الثنائي يجب أن يكون مطلقًا.
يرجى التحقق من جدول دعم اللغة
lspclient.json . من الممكن أيضًا تحديد أمر مختلف لكل منصة ، بالنظر إلى أنه قد يتغير في بعض Ocassions لكل منصة. في هذه الحالة ، يجب استخدام كائن ، مع كون كل مفتاح منصة ، وهناك أيضًا منصة Wildcard "Other" لتحديد أي منصة أخرى لا تتطابق مع تعريف النظام الأساسي. على سبيل المثال ، يستخدم 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 .
git.json يتبع التنسيق نفس النمط الذي جميع ملفات التكوين السابقة. يتم تمثيل التكوين في ملف JSON مع ثلاثة مفاتيح رئيسية: config ، keybindings ، servers .
مثال خادم 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 مسارات التكوين القياسية على كل نظام تشغيل:
XDG_CONFIG_HOME ، وعادة ما يترجم إلى ~/.config/ecode/pluginsApplication Support في HOME ، وعادة ما يترجم إلى ~/Library/Application Support/ecode/pluginsAPPDATA ، عادةً ما يترجم إلى C:Users{username}AppDataRoamingecodepluginsتم تصميم جميع تكوينات المكون الإضافي ليكون مستلزمًا من قبل المستخدم. هذا يعني أنه يمكن استبدال التكوين الافتراضي بتكوينات مخصصة من المستخدم. على سبيل المثال ، إذا أراد المستخدم استخدام Linter مختلف ، فإنه يحتاج فقط إلى إعلان تعريف Linter جديد في ملف تكوين Linter الخاص به. وينطبق الشيء نفسه على الخوادم والخوادم LSPs. ستقوم المكونات الإضافية دائمًا بتطبيق "تكوين" لتخصيص الإضافات ، وسوف تقوم دائمًا بتنفيذ مفتاح "keybindings" لتكوين keybindings المخصصة.
يمكن إضافة مخططات ألوان المحرر المخصصة في دليل مخططات ألوان المستخدم الموجود في:
XDG_CONFIG_HOME ، وعادة ما يترجم إلى ~/.config/ecode/editor/colorschemesApplication Support في HOME ، وعادة ما يترجم إلى ~/Library/Application Support/ecode/editor/colorschemesAPPDATA ، عادةً ما يترجم إلى C:Users{username}AppDataRoamingecodeeditorcolorschemesسيتم التعامل مع أي ملف مكتوب في الدليل كملف نظام ألوان المحرر. يمكن أن يحتوي كل ملف على أي عدد من مخططات الألوان.
يمكن قراءة تنسيق نظام الألوان من هنا.
يمكن إضافة أنظمة ألوان الطرفية المخصصة في دليل مخططات ألوان محطة المستخدم الموجود في:
XDG_CONFIG_HOME ، وعادة ما يترجم إلى ~/.config/ecode/terminal/colorschemesApplication Support في HOME ، وعادة ما يترجم إلى ~/Library/Application Support/ecode/terminal/colorschemesAPPDATA ، عادةً ما يترجم إلى C:Users{username}AppDataRoamingecodeterminalcolorschemesسيتم التعامل مع أي ملف مكتوب في الدليل كملف نظام ألوان طرفي. يمكن أن يحتوي كل ملف على أي عدد من مخططات الألوان.
يمكن قراءة تنسيق نظام الألوان من هنا.
يمكن إضافة مخططات واجهة المستخدم المخصصة في دليل مواضيع واجهة مستخدم المستخدم الموجود في:
XDG_CONFIG_HOME ، وعادة ما يترجم إلى ~/.config/ecode/themesApplication Support في HOME ، وعادة ما يترجم إلى ~/Library/Application Support/ecode/themesAPPDATA ، وعادة ما يترجم إلى C:Users{username}AppDataRoamingecodethemes يجب أن يحتوي ملف موضوع واجهة المستخدم المخصص على ملحق .css ، سيبحث ECODE عن جميع الملفات التي تحتوي على ملحق .css في الدليل ، اسم موضوع واجهة المستخدم هو اسم الملف بدون الامتداد. سيظهر السمة الجديدة في Settings -> Window -> UI Theme .
تتيح سمات واجهة المستخدم المخصصة تخصيص المحرر في إرادة المستخدم. نظرًا لأن ECODE يستخدم CSS لتصميم جميع عناصر واجهة المستخدم ، فإن إنشاء موضوعات جديدة أمر سهل للغاية. من الممكن تخصيص لوحة الألوان فقط ولكن من الممكن أيضًا تخصيص جميع عناصر واجهة المستخدم إذا رغبت في ذلك. يمكن أن يكون تخصيص موضوع واجهة المستخدم بالكامل واسع النطاق ، ولكن تخصيص الألوان أمر بسيط مثل تغيير قيم متغيرات CSS المستخدمة لتلوين واجهة المستخدم. للرجوع إليها ، يمكن رؤية موضوع واجهة المستخدم الأساسية الكاملة التي تستخدمها ECODE هنا. سيكون المحدد الأكثر أهمية هو :root ، حيث يتم تعريف جميع المتغيرات. يمكن استخراج متغيرات الألوان بسهولة من هذا الملف.
مثال بسيط على سمة واجهة المستخدم المخصصة التي تغير ألوان الصبغة فقط ، دعنا نسميها Breeze Light Red.css :
: root {
--inherit-base-theme : true;
--primary : # e93d66 ;
--scrollbar-button : # a94074 ;
--item-hover : # 502834 ;
--tab-hover : # 5e3347 ;
} هذا من شأنه أن ينشئ/إضافة سمة واجهة مستخدم جديدة بألوان حمراء فاتحة. التفاصيل المهمة للغاية هي أنه إذا كان يجب أن يرث سمة واجهة المستخدم التعريف الكامل للموضوع الافتراضي ، فيجب علينا إضافة-- --inherit-base-theme: true لعنصر :root ، وإلا يجب تعريف موضوع واجهة المستخدم تمامًا ، مما يعني أن كل عنصر واجهة مستخدم يجب تصميمه من نقطة الصفر (غير موصى به بالنظر إلى تعقيده). من الممكن أيضًا تجاوز نمط العناصر المستخدمة المختلفة التي تعيد تعريف خصائصها مع القواعد المعتادة التي تنطبق على مواصفات CSS المعروفة (المعروفة أيضًا باستخدام خصوصية كافية وربما تعاطي العلم المهم!
يمكن إضافة دعم اللغات المخصصة في دليل اللغات الموجود في:
XDG_CONFIG_HOME ، وعادة ما يترجم إلى ~/.config/ecode/languagesApplication Support في HOME ، وعادة ما يترجم إلى ~/Library/Application Support/ecode/languagesAPPDATA ، عادةً ما يترجم إلى C:Users{username}AppDataRoamingecodelanguages سوف تقرأ ECODE كل ملف موجود في هذا الدليل مع امتداد json . يمكن أن يحتوي كل ملف على لغة أو عدة لغات. من أجل تعيين عدة لغات ، يجب أن يكون عنصر جذر ملف JSON صفيفًا ، يحتوي على كائن واحد لكل لغة ، وإلا إذا كان عنصر الجذر كائنًا ، فيجب أن يحتوي على تعريف اللغة. يمكن أن تتجاوز تعريفات اللغة أي تعريف مدعوم حاليًا. سيقوم 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 مباشرة إلى تنسيق ملف JSON المستخدم في ECODE.
من الممكن توسيع أي تعريف لغة بسهولة عن طريق تصديره باستخدام وسيطات CLI المقدمة: --export-lang و --export-lang-path . يمكن للمستخدم الذي يرغب في تمديد أو تحسين تعريف اللغة تصديره وتعديله وتثبيت التعريف بامتداد .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 في المحرر خارج المربع. ستحتاج إلى تغيير خط Monospace الافتراضي لصالح الخط الذي يدعم الأحرف التي تريد رؤيتها التي لا يتم تقديمها. يمكنك أيضًا تغيير خط الاحتياطي الافتراضي في الحالة التي تريد استخدامها خطًا أحاديًا تقليديًا. يجب أن يغطي خط الاحتياطي الافتراضي مجموعة واسعة من اللغات ولكن قد تحتاج إلى بعض الخطوط الخاصة (يغطي حاليًا لغات CJK).
*1 حدود ميزة EEPP الحالية.
*2 أنا لست من محبي التلميح دون بكسل. لكنني أكثر من استعداد لتنفيذها ، لست ضليعًا جدًا في هذا الأمر ، لذلك سيتم تقدير أي مساعدة.
*3 أنا لا أحب Allatures حقًا. أنا منفتح على PRS تنفيذها.
*4 أنا لست مستخدمًا لـ VIM ، ولست مؤهلاً لتنفيذ وضع VIM أو أي تحرير مشروط. PRS مرحب بهم لدعم هذا.
*5 سيأتي دعم أفضل على تشكيل النص مع مرور الوقت ، ولكن مع عدم وجود اندفاع في الوقت الحالي. EEPP Architecture جاهزة لإضافة دعم Harfbuzz.
هذا المحرر له مصدر إلهام عميق من Lite و Lite-XL و QTCreator و Sublime Text Editors. تم تطوير العديد من الميزات بناءً على تطبيقات Lite/Lite-XL. يمكن نقل بعض الميزات مباشرةً من Lite: مخططات الألوان وأنماط الإضاءة عالية البناء (تنفيذ EEPP يوسع تطبيق Lite الأصلي لإضافة العديد من الميزات).
يتم استخدام ECODE في الغالب في Linux و MacOS ، فهو لا يتم اختباره جيدًا في Windows. إذا وجدت أي مشكلات مع المحرر ، فيرجى الإبلاغ عنها هنا.
هذا عمل مستمر ، لا يضمن الاستقرار. من فضلك لا تستخدمه للمهام الحرجة. أنا أستخدم المحرر يوميًا ومستقرًا بما يكفي بالنسبة لي ، لكن استخدمه على مسؤوليتك الخاصة.
نيلز لوهمان ل json من أجل C ++ الحديث
نيل هينينج للعملية الفرعية
جميع مؤلفي المحاكي الطرفي المصم
فريدريك ألكساندر لمحطة السداسي
RXI لليت
فرانكو وجميع المتعاونين مع Lite-XL
أندرياس كلينج من أجل Serenityos
والكثير من الناس!
رخصة معهد ماساتشوستس للتكنولوجيا