Ecode เป็นตัวแก้ไขรหัสหลายแพลตฟอร์มที่มีน้ำหนักเบาออกแบบมาสำหรับฮาร์ดแวร์ที่ทันสมัยโดยมุ่งเน้นไปที่การตอบสนองและประสิทธิภาพ มันได้รับการพัฒนาด้วย EEPP GUI EEPP ที่เร่งความเร็วซึ่งให้เทคโนโลยีหลักสำหรับบรรณาธิการ โครงการนี้เป็นโครงการที่จริงจังครั้งแรกโดยใช้ EEPP GUI และปัจจุบันได้รับการพัฒนาเพื่อปรับปรุงห้องสมุด EEPP GUI ซึ่งเป็นส่วนหนึ่งของวัตถุประสงค์หลัก
สำหรับการชำระเงินภาพหน้าจอเพิ่มเติมที่ทำงานบน MacOS, ทำงานบน Windows, ทำงานบนไฮกุ, DPI ต่ำ, รหัสเสร็จสมบูรณ์, เทอร์มินัล, ตัวระบุตำแหน่งไฟล์, รูปแบบไฟล์, Global Find, Global Replact, Linter
.gitignore สนับสนุน * Ecode ถือว่าโฟลเดอร์เป็นโครงการเช่นเดียวกับบรรณาธิการอื่น ๆ ความแตกต่างที่สำคัญคือมันยังพยายามฆ่าเชื้อไฟล์โครงการโดยอัตโนมัติโดยกรองไฟล์ใด ๆ ที่กรองในไฟล์ repository .gitignore แนวคิดคือการใช้ไฟล์ .gitignore เป็นการตั้งค่าโครงการ ไฟล์โครงการจะเป็นไฟล์ที่ใช้ในการค้นหาไฟล์ในโครงการและทำการค้นหาทั่วโลก โดยปกติแล้วสิ่งนี้จะแปลเป็นผลลัพธ์ที่ดีกว่ามากสำหรับการค้นหาที่เกี่ยวข้องกับโครงการ นอกจากนี้ยังมีกลไกที่ง่ายมากในการอนุญาตให้มองเห็นไฟล์ที่กรองโดย .gitignore โดยการเพิ่มไฟล์ด้วยรูปแบบที่ผ่านการกรองที่อนุญาตในโฟลเดอร์ย่อยเหนือโฟลเดอร์โหลดสร้างไฟล์ใน .ecode/.prjallowed ด้วยรูปแบบลูกโลกที่จำเป็น Ecode จะเพิ่มไฟล์ที่รองรับโดยตัวแก้ไขเท่านั้นตัวแก้ไขจะไม่พยายามทำอะไรกับไฟล์ที่ไม่ได้รับการสนับสนุนอย่างเป็นทางการ
บางจุดเพื่อแสดงให้เห็นถึงปรัชญาโครงการ:
Ecode สามารถรวบรวมกับ WASM และทำงานในเบราว์เซอร์ที่ทันสมัย ไม่มีแผนที่จะมุ่งเน้นการพัฒนาบนเว็บเวอร์ชัน (อย่างน้อยก็ในขณะนี้) เนื่องจากมีวิธีแก้ปัญหาที่ดีมากมาย แต่คุณสามารถลองได้:
การสาธิตที่นี่
ปัจจุบันซอร์สโค้ดตั้งอยู่ที่ที่เก็บโครงการ EEPP Ecode Editor Source ตั้งอยู่ที่ SRC/Tools/Ecode Ecode กำลังถูกใช้เพื่อปรับปรุงและย้ำห้องสมุด EEPP GUI อย่างแข็งขัน เมื่อถึงจุดหนึ่งมันจะถูกย้ายไปยังที่เก็บนี้ ควรใช้ที่เก็บ Ecode สำหรับปัญหาและเอกสารประกอบ PRS สำหรับ Ecode จะได้รับการยอมรับที่พื้นที่เก็บข้อมูล EEPP
มีสคริปต์สำหรับแต่ละแพลตฟอร์มที่รองรับพร้อมที่จะสร้างแอปพลิเคชัน สำหรับ Linux และ MacOS มันเป็นเรื่องเล็กน้อยในการสร้างโครงการคุณจะต้องติดตั้ง GCC/Clang และห้องสมุดการพัฒนาจาก LIBSDL2 ขณะนี้สคริปต์ Windows Build เป็นสคริปต์การคอมไพล์ข้ามและใช้ 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 | ไม่มี | ไม่มี | ไม่มี | |
| ค้างคาว | ไม่มี | ไม่มี | ไม่มี | |
| ปลากะพง | ไม่มี | ไม่มี | ไม่มี | |
| โค้งงอ | ไม่มี | ไม่มี | ไม่มี | |
| พิมพ์เขียว | ไม่มี | ไม่มี | ไม่มี | |
| สมอง | ไม่มี | ไม่มี | ไม่มี | |
| เสียงพึมพำ | ไม่มี | ไม่มี | ไม่มี | |
| C | เสียงดัง | CPPCHECK | รูปแบบเสียงดัง | |
| คาร์บอน | ไม่มี | ไม่มี | ไม่มี | |
| การปิดบัง | clojure-lsp | ไม่มี | ไม่มี | |
| cmake | เซิร์ฟเวอร์ Cmake-Language | ไม่มี | ไม่มี | |
| CPP | เสียงดัง | CPPCHECK | รูปแบบเสียงดัง | |
| คริสตัล | ผลึก | ไม่มี | ไม่มี | |
| คาร์บอน | Omnisharp | ไม่มี | ไม่มี | |
| CSS | Emmet-Language-Server | ไม่มี | พื้นเมือง | |
| d | รับใช้ | ไม่มี | ไม่มี | |
| โผ | เซิร์ฟเวอร์ภาษาดาร์ท | ไม่มี | ไม่มี | |
| แตกต่าง | ไม่มี | ไม่มี | ไม่มี | |
| Dockerfile | Docker-Langserver | ไม่มี | ไม่มี | |
| น้ำอมฤต | น้ำอมฤต | ไม่มี | ไม่มี | |
| เอล์ม | Elm-Language-Server | ไม่มี | ไม่มี | |
| ไฟล์สภาพแวดล้อม | ไม่มี | ไม่มี | ไม่มี | |
| ความเพ้อฝัน | ไม่มี | ไม่มี | ไม่มี | |
| คนหาอาหาร | ป้อมปราการ | ไม่มี | ไม่มี | |
| fstab | ไม่มี | ไม่มี | ไม่มี | |
| gdScript | ไม่มี | ไม่มี | ไม่มี | |
| GLSL | glsl_analyzer | ไม่มี | ไม่มี | |
| ไป | GOPLS | ไม่มี | GOPLS | |
| graphql | ไม่มี | ไม่มี | ไม่มี | |
| ร่อง | ไม่มี | ไม่มี | ไม่มี | |
| กระต่าย | ไม่มี | ไม่มี | ไม่มี | |
| Haskell | เซิร์ฟเวอร์ Haskell-Language | โสเภณี | ormolu | |
| Haxe | ไม่มี | ไม่มี | ไม่มี | |
| Haxe Compiler อาร์กิวเมนต์ | ไม่มี | ไม่มี | ไม่มี | |
| HLSL | ไม่มี | ไม่มี | ไม่มี | |
| HTML | Emmet-Language-Server | ไม่มี | สวยกว่า | |
| อินนิ | ไม่มี | ไม่มี | ไม่มี | |
| ไจ | ไม่มี | ไม่มี | ไม่มี | |
| ชวา | jdtls | ไม่มี | รูปแบบเสียงดัง | |
| จาวาสคริปต์ | เซิร์ฟเวอร์ TypeScript-Language | eslint | สวยกว่า | |
| Javascriptreact | เซิร์ฟเวอร์ TypeScript-Language | ไม่มี | ไม่มี | |
| JSON | ไม่มี | JQ | พื้นเมือง | |
| จูเลีย | languageserver.jl | ไม่มี | ไม่มี | |
| Kotlin | Kotlin-Language-Server | Ktlint | Ktlint | |
| น้ำยาง | Texlab | ไม่มี | ไม่มี | |
| กุ้งมังกร | ไม่มี | ไม่มี | ไม่มี | |
| Lua | Lua-Language-Server | luacheck | ไม่มี | |
| makefile | ไม่มี | ไม่มี | ไม่มี | |
| การทำเครื่องหมาย | ไม่มี | ไม่มี | ไม่มี | |
| เมซอน | ไม่มี | ไม่มี | ไม่มี | |
| ดวงจันทร์ | ไม่มี | ไม่มี | ไม่มี | |
| Nelua | ไม่มี | Nelua | ไม่มี | |
| ไม่มีความสุข | Nimlsp | ไม่มีความสุข | ไม่มี | |
| ขุ่นเคือง | ไม่มี | ไม่มี | ไม่มี | |
| วัตถุประสงค์ -C | เสียงดัง | ไม่มี | รูปแบบเสียงดัง | |
| Ocaml | Ocaml-lsp | ไม่มี | ไม่มี | |
| โอดิน | ols | ไม่มี | ไม่มี | |
| การเปิดเครื่อง | ไม่มี | ไม่มี | ไม่มี | |
| ประเทศปาสคาล | ไม่มี | ไม่มี | ไม่มี | |
| Perl | เครื่องพล็อต | ไม่มี | ไม่มี | |
| PHP | phpactor | PHP | ไม่มี | |
| pico-8 | ไม่มี | ไม่มี | ไม่มี | |
| ข้อความธรรมดา | ไม่มี | ไม่มี | ไม่มี | |
| ปอ | ไม่มี | ไม่มี | ไม่มี | |
| ม้า | ไม่มี | ไม่มี | ไม่มี | |
| PostgreSQL | ไม่มี | ไม่มี | ไม่มี | |
| PowerShell | ไม่มี | ไม่มี | ไม่มี | |
| งูหลาม | Pylsp | รุ | สีดำ | |
| R | R Languageserver | ไม่มี | ไม่มี | |
| แหวน | ไม่มี | ไม่มี | ไม่มี | |
| ทับทิม | กราฟ | ไม่มี | ไม่มี | |
| สนิม | การวิเคราะห์สนิม | ไม่มี | Rustfmt | |
| เขี้ยว | Emmet-Language-Server | ไม่มี | ไม่มี | |
| สกาล่า | โลหะ | ไม่มี | ไม่มี | |
| เชลล์ | เซิร์ฟเวอร์ Bash-Language | ไม่มี | ไม่มี | |
| เล็ก ๆ น้อย ๆ | ไม่มี | ไม่มี | ไม่มี | |
| ความเป็นน้ำ | การแก้ปัญหา | โซลิน | ไม่มี | |
| SQL | ไม่มี | ไม่มี | ไม่มี | |
| ฉับพลัน | sourcekit-lsp | ไม่มี | ไม่มี | |
| TCL | ไม่มี | ไม่มี | ไม่มี | |
| นกเป็ดน้ำ | ไม่มี | TL | ไม่มี | |
| Toml | ไม่มี | ไม่มี | ไม่มี | |
| ตัวพิมพ์ใหญ่ | เซิร์ฟเวอร์ TypeScript-Language | eslint | สวยกว่า | |
| TypeScriptreact | เซิร์ฟเวอร์ TypeScript-Language | ไม่มี | ไม่มี | |
| V | V-Analyzer | ไม่มี | V | |
| Vala | Vala-Language-Server | ไม่มี | ไม่มี | |
| verilog | ไม่มี | ไม่มี | ไม่มี | |
| ภาพพื้นฐาน | ไม่มี | ไม่มี | ไม่มี | |
| ความเต็ม | VLS | ไม่มี | ไม่มี | |
| นกกระจิบ | ไม่มี | ไม่มี | ไม่มี | |
| แอสเซมบลี x86 | ไม่มี | ไม่มี | ไม่มี | |
| XML | Emmet-Language-Server | พื้นเมือง | พื้นเมือง | |
| xtend | ไม่มี | ไม่มี | ไม่มี | |
| ยม | Yaml-Language-Server | ไม่มี | ไม่มี | |
| ซิก | 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 นั้นมีให้โดยการดำเนินการเกี่ยวกับผ้าใบที่มีอยู่แล้วจากแต่ละภาษา Ecode ให้การสนับสนุนหลายภาษาโดยค่าเริ่มต้นและสามารถขยายได้อย่างง่ายดายโดยการขยายการกำหนดค่า linters.json linters.json การกำหนดค่าเริ่มต้นสามารถรับได้จากที่นี่ ในการกำหนดค่าผ้าลินินใหม่คุณสามารถสร้างไฟล์ linters.json ใหม่ในเส้นทางการกำหนดค่าเริ่มต้นของ Ecode
linters.jsonรูปแบบเป็นวัตถุ 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 "
}
]
} นั่นคือทั้งหมดที่เราต้องมี linter ที่ใช้งานได้ใน 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 ที่รองรับเอกสารการจัดรูปแบบการจัดรูปแบบจะพร้อมใช้งานเช่นกัน ในการกำหนดค่า Formatters ใหม่คุณสามารถสร้างไฟล์ formatters.json ใหม่ในเส้นทางการกำหนดค่าเริ่มต้นของ Ecode
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 ใหม่คุณสามารถสร้างไฟล์ 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 ผู้ใช้งาน LSPS จะต้องติดตั้งด้วยตนเอง LSP จะไม่มาพร้อมกับตัวแก้ไขและพวกเขายังต้องมองเห็นได้ ซึ่งหมายความว่ามันจะต้องอยู่ในตัวแปรสภาพแวดล้อม PATH หรือเส้นทางไปยังไบนารีจะต้องแน่นอน
โปรดตรวจสอบตารางสนับสนุนภาษา
lspclient.json นอกจากนี้ยังเป็นไปได้ที่จะระบุคำสั่งที่แตกต่างกันสำหรับแต่ละแพลตฟอร์มเนื่องจากอาจเปลี่ยนแปลงในบาง ocassions ต่อแพลตฟอร์ม ในกรณีนี้ควรใช้วัตถุโดยแต่ละคีย์เป็นแพลตฟอร์มและยังมีแพลตฟอร์มไวด์การ์ด "อื่น ๆ " เพื่อระบุแพลตฟอร์มอื่น ๆ ที่ไม่ตรงกับคำจำกัดความของแพลตฟอร์ม ตัวอย่างเช่น sourcekit-lsp ใช้: "command": {"macos": "xcrun sourcekit-lsp","other": "sourcekit-lsp"}{"name": "clangd","command_parameters": "--background-index-priority=background --malloc-trim"} ECODE ให้การรวม GIT พื้นฐาน (คุณสมบัติเพิ่มเติมจะมาในอนาคต) วัตถุประสงค์หลักคือการช่วยให้ผู้ใช้สามารถดำเนินการพื้นฐานได้มากที่สุดด้วย GIT คุณสมบัติบางอย่างที่รองรับปัจจุบัน: สถานะ GIT และการสร้างภาพข้อมูลสถิติ (สถานะไฟล์), commit, push, checkout, pull, fetch, การผสานล่วงหน้า, การสร้าง+การเปลี่ยนชื่อ+การลบสาขา, การจัดการที่ซ่อน สถิติทั้งหมดจะได้รับการปรับปรุง/รีเฟรชโดยอัตโนมัติตามเวลาจริง นอกจากนี้ยังมีการกำหนดค่าพื้นฐานบางอย่าง ปลั๊กอินต้องการให้ผู้ใช้มีการติดตั้งไบนารี 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 (ปิดใช้งานโดยค่าเริ่มต้น) ให้การปรับปรุงบางอย่างเมื่อแก้ไขเนื้อหา XML
Ecode เคารพเส้นทางการกำหนดค่ามาตรฐานในแต่ละระบบปฏิบัติการ:
XDG_CONFIG_HOME มักจะแปลเป็น ~/.config/ecode/pluginsApplication Support ใน HOME มักจะแปลเป็น ~/Library/Application Support/ecode/pluginsAPPDATA มักจะแปลเป็น C:Users{username}AppDataRoamingecodepluginsการกำหนดค่าปลั๊กอินทั้งหมดได้รับการออกแบบให้สามารถเขียนทับได้โดยผู้ใช้ ซึ่งหมายความว่าการกำหนดค่าเริ่มต้นสามารถแทนที่ด้วยการกำหนดค่าที่กำหนดเองจากผู้ใช้ ตัวอย่างเช่นหากผู้ใช้ต้องการใช้ linter ที่แตกต่างกันเพียงแค่ต้องประกาศนิยาม Linter ใหม่ในไฟล์กำหนดค่า linter ของตัวเอง เช่นเดียวกับเซิร์ฟเวอร์ Formatters และ LSPS ปลั๊กอินจะใช้ "config" สำหรับการปรับแต่งปลั๊กอินและจะใช้คีย์ "keybindings" เสมอเพื่อกำหนดค่าคีย์ bindings ที่กำหนดเอง
โทนสีตัวแก้ไขแบบกำหนดเองสามารถเพิ่มได้ในไดเรกทอรีสีของผู้ใช้สีที่พบได้ที่:
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ไฟล์ใด ๆ ที่เขียนในไดเรกทอรีจะถือว่าเป็นไฟล์ชุดสีเทอร์มินัล แต่ละไฟล์สามารถมีโทนสีจำนวนเท่าใดก็ได้
รูปแบบของโทนสีสามารถอ่านได้จากที่นี่
สามารถเพิ่มรูปแบบ UI ที่กำหนดเองในไดเรกทอรี UI ของผู้ใช้ที่พบได้ที่:
XDG_CONFIG_HOME มักจะแปลเป็น ~/.config/ecode/themesApplication Support ใน HOME โดยปกติจะแปลเป็น ~/Library/Application Support/ecode/themesAPPDATA มักจะแปลเป็น C:Users{username}AppDataRoamingecodethemes ไฟล์ธีม UI ที่กำหนดเองจะต้องมีส่วนขยาย .css , Ecode จะค้นหาไฟล์ทั้งหมดที่มีส่วนขยาย .css ในไดเรกทอรีชื่อธีม UI คือชื่อไฟล์ที่ไม่มีส่วนขยาย ชุดรูปแบบใหม่จะปรากฏใน Settings -> Window -> UI Theme
ธีม UI ที่กำหนดเองอนุญาตให้ปรับแต่งตัวแก้ไขตามความประสงค์ของผู้ใช้ เนื่องจาก Ecode ใช้ CSS เพื่อจัดสไตล์องค์ประกอบทั้งหมดของ UI การสร้างธีมใหม่จึงค่อนข้างง่าย เป็นไปได้ที่จะปรับแต่งเฉพาะจานสี แต่ก็เป็นไปได้ที่จะปรับแต่งองค์ประกอบ UI ทั้งหมดหากต้องการ การปรับแต่งธีม UI ทั้งหมดนั้นมีความกว้างขวาง แต่การปรับแต่งสีนั้นง่ายพอ ๆ กับการเปลี่ยนค่าของตัวแปร CSS ที่ใช้ในการระบายสี UI สำหรับการอ้างอิงธีม UI พื้นฐานที่สมบูรณ์ที่ใช้โดย Ecode สามารถดูได้ที่นี่ ตัวเลือกที่สำคัญที่สุดคือ :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 กับ :root มิฉะนั้นธีม UI จะต้องกำหนดอย่างสมบูรณ์ นอกจากนี้ยังเป็นไปได้ที่จะแทนที่รูปแบบของวิดเจ็ตที่แตกต่างกันนิยามคุณสมบัติของพวกเขาใหม่ด้วยกฎปกติที่ใช้กับข้อกำหนด CSS ที่รู้จักกันดี (aka โดยใช้ความจำเพาะที่เพียงพอและอาจใช้ธงที่สำคัญ!
การสนับสนุนภาษาที่กำหนดเองสามารถเพิ่มในไดเรกทอรีภาษาที่พบได้ที่:
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 เริ่มต้นเพื่อสนับสนุนตัวอักษรที่สนับสนุนตัวละครที่คุณต้องการเห็นว่าไม่ได้รับการแสดงผล นอกจากนี้คุณยังสามารถเปลี่ยนฟอนต์ทางเลือกเริ่มต้นในกรณีที่คุณต้องการใช้แบบอักษรแบบ monospaced แบบดั้งเดิม ฟอนต์ทางเลือกเริ่มต้นควรครอบคลุมภาษาที่หลากหลาย แต่คุณอาจต้องใช้แบบอักษรพิเศษ (ปัจจุบันครอบคลุมภาษา CJK)
*1 ข้อ จำกัด คุณสมบัติ EEPP ปัจจุบัน
*2 ฉันไม่ได้เป็นแฟนตัวยงของพิกเซลคำใบ้ แต่ฉันเต็มใจที่จะนำไปใช้มากกว่านี้ฉันไม่ค่อยมีความเชี่ยวชาญในเรื่องนี้ดังนั้นความช่วยเหลือใด ๆ จะได้รับการชื่นชม
*3 ฉันไม่ชอบ ligatures จริงๆ ฉันเปิดให้ PRS ดำเนินการ
*4 ฉันไม่ใช่ผู้ใช้ VIM และฉันไม่มีคุณสมบัติที่จะใช้โหมด VIM หรือการแก้ไขโมดอลใด ๆ PRS ยินดีที่จะสนับสนุนสิ่งนี้
*5 การสนับสนุนการปรับแต่งข้อความที่ดีขึ้นจะมาพร้อมกับเวลา แต่ไม่รีบเร่งในขณะนี้ สถาปัตยกรรม EEPP พร้อมที่จะเพิ่มการสนับสนุน Harfbuzz
บรรณาธิการนี้มีแรงบันดาลใจที่หยั่งรากลึกจาก Lite, Lite-XL, QTCreator และบรรณาธิการข้อความประเสริฐ คุณสมบัติหลายอย่างได้รับการพัฒนาตามการใช้งาน Lite/Lite-XL คุณสมบัติบางอย่างสามารถพอร์ตได้โดยตรงจาก Lite: Color-Schemes และรูปแบบการส่องสว่างแบบไวยากรณ์ (การใช้ EEPP จะขยายการใช้งาน Lite ดั้งเดิมเพื่อเพิ่มคุณสมบัติอื่น ๆ อีกมากมาย)
Ecode ส่วนใหญ่ใช้ใน Linux และ MacOS มันไม่ได้ทดสอบอย่างดีใน Windows หากคุณพบปัญหาใด ๆ กับบรรณาธิการโปรดรายงานที่นี่
นี่คืองานที่กำลังดำเนินการไม่รับประกันความมั่นคง โปรดอย่าใช้สำหรับงานที่สำคัญ ฉันใช้ตัวแก้ไขทุกวันและมีเสถียรภาพเพียงพอสำหรับฉัน แต่ใช้มันตามความเสี่ยงของคุณเอง
Niels Lohmann สำหรับ JSON สำหรับ C ++ ที่ทันสมัย
Neil Henning สำหรับ subprocess.h
ผู้เขียนทั้งหมดของเครื่องจำลองเทอร์มินัลที่ไร้สาระ
Fredrik Aleksander สำหรับ terminal hexe
rxi สำหรับ lite
Franko และผู้ทำงานร่วมกันทั้งหมดสำหรับ Lite-XL
Andreas Kling สำหรับ Serenityos
และผู้คน มากมาย !
ใบอนุญาต MIT