Ecode 는 대응 성과 성능에 중점을 둔 최신 하드웨어 용으로 설계된 가벼운 다중 플랫폼 코드 편집기입니다. 하드웨어 가속 EEPP GUI로 개발되었으며 편집기의 핵심 기술을 제공합니다. 이 프로젝트는 EEPP GUI를 사용한 최초의 심각한 프로젝트로 제공되며 현재 주요 목표 중 하나의 일환으로 EEPP GUI 라이브러리를 개선하기 위해 개발 중입니다.
MACOS에서 실행중인 더 많은 스크린 샷 체크 아웃, Windows에서 실행, Haiku, 낮은 DPI, 코드 완료, 터미널, 파일 로케이터, 파일 형식, 글로벌 찾기, 글로벌 교체, Linter.
.gitignore 지원이있는 프로젝트로서 폴더 * Ecode는 다른 많은 편집자와 마찬가지로 폴더를 프로젝트로 취급합니다. 주요 차이점은 또한 저장소 .gitignore 파일에서 필터링 된 파일을 필터링하여 프로젝트 파일을 자동으로 소독하려고한다는 것입니다. 아이디어는 .gitignore 파일을 프로젝트 설정으로 사용하는 것입니다. 프로젝트 파일은 프로젝트에서 파일을 찾고 글로벌 검색을 수행하는 데 사용되는 파일입니다. 일반적으로 이것은 프로젝트 관련 검색에 대해 훨씬 더 나은 결과로 해석됩니다. 또한로드 된 폴더 위의 서브 폴더에 허용 필터링 된 패턴 .ecode/.prjallowed 있는 파일을 추가하여 .gitignore 의 필터링 된 파일을 가시적으로 허용하는 매우 간단한 메커니즘이 있습니다. Ecode는 편집기가 지원하는 파일 만 추가 할 수 있으며 편집기는 공식적으로 지원되지 않는 파일로 아무것도하지 않습니다.
프로젝트 철학을 설명하기위한 몇 가지 요점 :
Ecode는 WASM으로 컴파일하고 모든 최신 브라우저에서 실행할 수 있습니다. 좋은 솔루션이 많이 있기 때문에 웹 버전에 대한 개발에 집중할 계획은 없습니다. 그러나 시도해 볼 수 있습니다.
여기 데모
현재 소스 코드는 EEPP 프로젝트 저장소에 있습니다. Ecode 편집기 소스는 SRC/Tools/Ecode에 있습니다. EEPP GUI 라이브러리를 적극적으로 개선하고 반복하는 데 Ecode가 사용되고 있습니다. 어느 시점 에서이 저장소로 마이그레이션됩니다. 생태상 저장소는 문제와 문서에 사용해야합니다. EEPP 리포지토리에서 ECODE에 대한 PRS가 허용됩니다.
응용 프로그램을 빌드 할 준비가 된 각 지원 플랫폼에 대한 스크립트가 있습니다. 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 생성합니다. dmg 파일을 만들려면 create.dmg.sh 실행하십시오. ecode.app 폴더에는 압축되지 않은 응용 프로그램이 포함됩니다.build.app.sh Zipped Application 패키지가있는 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] IT! | ✓ | 없음 | 없음 | 없음 |
| 정통한 | ✓ | adeptlsp | 없음 | 없음 |
| 천사 스크립트 | ✓ | 없음 | 없음 | 없음 |
| awk 스크립트 | ✓ | 없음 | 없음 | 없음 |
| 박쥐 | ✓ | 없음 | 없음 | 없음 |
| 바젤 | ✓ | 없음 | 없음 | 없음 |
| 만곡부 | ✓ | 없음 | 없음 | 없음 |
| 청사진 | ✓ | 없음 | 없음 | 없음 |
| Brainfuck | ✓ | 없음 | 없음 | 없음 |
| 버저 소리 | ✓ | 없음 | 없음 | 없음 |
| 기음 | ✓ | Clangd | CPPCHECK | Clang-format |
| 탄소 | ✓ | 없음 | 없음 | 없음 |
| Clojure | ✓ | Clojure-lsp | 없음 | 없음 |
| cmake | ✓ | cmake-language-server | 없음 | 없음 |
| CPP | ✓ | Clangd | CPPCHECK | Clang-format |
| 결정 | ✓ | 수정 같은 | 없음 | 없음 |
| csharp | ✓ | Omnisharp | 없음 | 없음 |
| CSS | ✓ | Emmet-Language-Server | 없음 | 토종의 |
| 디 | ✓ | 서브 D | 없음 | 없음 |
| 다트 | ✓ | 다트 언어 서버 | 없음 | 없음 |
| 차이 | ✓ | 없음 | 없음 | 없음 |
| dockerfile | ✓ | Docker-Langserver | 없음 | 없음 |
| 엘릭서 | ✓ | Elixir-ls | 없음 | 없음 |
| 엘름 | ✓ | Elm-Language-Server | 없음 | 없음 |
| 환경 파일 | ✓ | 없음 | 없음 | 없음 |
| 팬텀 | ✓ | 없음 | 없음 | 없음 |
| 포트란 | ✓ | 요새 | 없음 | 없음 |
| fstab | ✓ | 없음 | 없음 | 없음 |
| gdscript | ✓ | 없음 | 없음 | 없음 |
| Glsl | ✓ | glsl_analyzer | 없음 | 없음 |
| 가다 | ✓ | Gopls | 없음 | Gopls |
| 그래프 QL | ✓ | 없음 | 없음 | 없음 |
| 그루비 | ✓ | 없음 | 없음 | 없음 |
| 토끼 | ✓ | 없음 | 없음 | 없음 |
| 하스켈 | ✓ | Haskell-Language-Server | hlint | 오르 몰루 |
| HAXE | ✓ | 없음 | 없음 | 없음 |
| Haxe 컴파일러 인수 | ✓ | 없음 | 없음 | 없음 |
| hlsl | ✓ | 없음 | 없음 | 없음 |
| HTML | ✓ | Emmet-Language-Server | 없음 | 더 예쁘다 |
| 이니 | ✓ | 없음 | 없음 | 없음 |
| 자이 | ✓ | 없음 | 없음 | 없음 |
| 자바 | ✓ | JDTLS | 없음 | Clang-format |
| 자바 스크립트 | ✓ | TypeScript-Language-Server | eslint | 더 예쁘다 |
| JavaScriptReact | ✓ | TypeScript-Language-Server | 없음 | 없음 |
| JSON | ✓ | 없음 | JQ | 토종의 |
| 줄리아 | ✓ | LanguagesErver.jl | 없음 | 없음 |
| 코 틀린 | ✓ | Kotlin-Language-Server | ktlint | ktlint |
| 유액 | ✓ | 텍사스 | 없음 | 없음 |
| 새우 | ✓ | 없음 | 없음 | 없음 |
| 루아 | ✓ | Lua-Language-Server | 루크 넥 | 없음 |
| Makefile | ✓ | 없음 | 없음 | 없음 |
| 가격 인하 | ✓ | 없음 | 없음 | 없음 |
| 중간자 | ✓ | 없음 | 없음 | 없음 |
| Moonscript | ✓ | 없음 | 없음 | 없음 |
| Nelua | ✓ | 없음 | Nelua | 없음 |
| 님 | ✓ | nimlsp | 님 | 없음 |
| Objeck | ✓ | 없음 | 없음 | 없음 |
| 대상 c | ✓ | Clangd | 없음 | Clang-format |
| OCAML | ✓ | OCAML-LSP | 없음 | 없음 |
| 오딘 | ✓ | OLS | 없음 | 없음 |
| OpenScad | ✓ | 없음 | 없음 | 없음 |
| 파스칼 | ✓ | 없음 | 없음 | 없음 |
| 펄 | ✓ | perlnavigator | 없음 | 없음 |
| PHP | ✓ | phpactor | PHP | 없음 |
| 피코 8 | ✓ | 없음 | 없음 | 없음 |
| 일반 텍스트 | ✓ | 없음 | 없음 | 없음 |
| 포 | ✓ | 없음 | 없음 | 없음 |
| 조랑말 | ✓ | 없음 | 없음 | 없음 |
| Postgresql | ✓ | 없음 | 없음 | 없음 |
| PowerShell | ✓ | 없음 | 없음 | 없음 |
| 파이썬 | ✓ | pylsp | 주름 옷깃 | 검은색 |
| 아르 자형 | ✓ | R LanguagesErver | 없음 | 없음 |
| 반지 | ✓ | 없음 | 없음 | 없음 |
| 루비 | ✓ | 태양 | 없음 | 없음 |
| 녹 | ✓ | Rust-Analyzer | 없음 | Rustfmt |
| 사스 | ✓ | Emmet-Language-Server | 없음 | 없음 |
| 스칼라 | ✓ | 궤조 | 없음 | 없음 |
| 쉘 스크립트 | ✓ | bash-language-server | 없음 | 없음 |
| 작은 바스 틱 | ✓ | 없음 | 없음 | 없음 |
| 견고 | ✓ | SOLC | Solhint | 없음 |
| SQL | ✓ | 없음 | 없음 | 없음 |
| 스위프트 | ✓ | SourceKit-lsp | 없음 | 없음 |
| TCL | ✓ | 없음 | 없음 | 없음 |
| 물오리 | ✓ | 없음 | TL | 없음 |
| 톰 | ✓ | 없음 | 없음 | 없음 |
| TypeScript | ✓ | TypeScript-Language-Server | eslint | 더 예쁘다 |
| TypeScriptReact | ✓ | TypeScript-Language-Server | 없음 | 없음 |
| 다섯 | ✓ | V- 애널러 | 없음 | 다섯 |
| 발라 | ✓ | Vala-Language-Server | 없음 | 없음 |
| Verilog | ✓ | 없음 | 없음 | 없음 |
| 비주얼 기본 | ✓ | 없음 | 없음 | 없음 |
| vue | ✓ | 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를 사용하여 진단을 개선합니다. 또한 Auto Complete Module은 가능한 경우 LSP의 도움을 요청하여 완료를 개선하고 서명 도움을 제공합니다.
Linter 지원은 각 언어에서 이미 마련된 라이터를 실행하여 제공됩니다. Ecode는 기본적으로 여러 언어를 지원하며 linters.json 구성을 확장하여 쉽게 확장 할 수 있습니다. linters.json 기본 구성은 여기에서 얻을 수 있습니다. 새 Linters를 구성하려면 Ecode 의 기본 구성 경로에서 새 linters.json 파일을 만들 수 있습니다.
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 "
}
]
} 그것이 우리가 Ecode 에 작동하는 Linter를 갖는 데 필요한 전부입니다. Linters 실행 파일은 사용자가 수동으로 설치해야하며 Linters는 편집기와 함께 제공되지 않으며 실행 파일에도 볼 필요가 있습니다. 이것은 PATH 환경에 있어야한다는 것을 의미하거나 이진으로가는 경로는 절대적이어야합니다.
언어 지원 테이블을 확인하십시오
"disable_lsp_languages": ["lua", "python"] , lua 및 python을 비활성화합니다."disable_languages": ["lua", "python"] 는 각각 Luacheck과 Ruff를 비활성화합니다. Formatter 플러그인은 Linter 플러그인과 똑같이 작동하지만 자동 형식 코드가있는 도구를 실행합니다. Ecode는 기본적으로 여러 언어를 지원하여 formatters.json 구성을 확장하여 쉽게 확장 할 수 있습니다. formatters.json 기본 구성은 여기에서 얻을 수 있습니다. 또한 일부 포피터를 기본적으로 지원합니다. 이는 Formatter가 외부 의존성을 필요로하지 않고 Ecode와 함께 제공 함을 의미합니다. 또한 LSP 텍스트 문서 서식을 지원합니다. 즉, 문서 형식을 지원하는 LSP를 실행하는 경우 서식도 사용할 수 있습니다. 새 Formatters를 구성하려면 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 세 가지 기본 키가있는 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 명령을 무시할 수 있습니다. 플랫폼 당 일부 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 상태 및 통계 시각화 (파일 상태), 커밋, 푸시, 체크 아웃, 풀, 페치, 빠른 포워드 병합,+이름 바꾸기+삭제, 방향 관리 관리. 모든 통계는 실시간으로 자동 업데이트/새로 고침됩니다. 몇 가지 기본 구성이 있습니다. 플러그인은 사용자에게 PATH 환경 변수에 git Binary를 설치하고 사용할 수 있어야합니다.
git.json 형식 형식은 모든 이전 구성 파일과 동일한 패턴을 따릅니다. 구성은 config , keybindings , servers 세 가지 기본 키가있는 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 도구 플러그인 (기본적으로 비활성화)은 XML 컨텐츠를 편집 할 때 개선을 제공하는 것이 좋습니다.
Ecode는 각 OS의 표준 구성 경로를 존중합니다.
XDG_CONFIG_HOME 사용하며 일반적으로 ~/.config/ecode/plugins 으로 변환됩니다HOME 에서 Application Support 폴더를 사용합니다. 일반적으로 ~/Library/Application Support/ecode/plugins 으로 번역됩니다.APPDATA 사용합니다. 일반적으로 C:Users{username}AppDataRoamingecodeplugins 로 변환됩니다모든 플러그인 구성은 사용자가 덮어 쓰기 위해 설계되었습니다. 즉, 기본 구성을 사용자의 사용자 정의 구성으로 대체 할 수 있습니다. 예를 들어, 사용자가 다른 Linter를 사용하려면 자체 Linter 구성 파일에 새 Linter 정의를 선언하면됩니다. Formatter 및 LSPS 서버에도 동일하게 적용됩니다. 플러그인은 항상 플러그인 사용자 정의를위한 "구성"을 구현하며 항상 사용자 정의 키 바인딩을 구성하기 위해 "키 바인딩"키를 구현합니다.
사용자 정의 편집기 색 구성표는 다음에서 찾은 사용자 색상 구성표 디렉토리에 추가 할 수 있습니다.
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 :root 요소, 그렇지 않으면 UI 테마를 완전히 정의해야한다는 것입니다. 잘 알려진 CSS 사양에 적용되는 일반적인 규칙 (일명 적절한 특이성을 사용하고 중요한 플래그를 남용 할 수 있음)으로 속성을 재정의하는 다른 위젯의 스타일을 무시할 수도 있습니다.
사용자 정의 언어 지원은 다음에서 찾은 언어 디렉토리에 추가 할 수 있습니다.
XDG_CONFIG_HOME 사용합니다. 일반적으로 ~/.config/ecode/languages 로 변환됩니다HOME 에서 Application Support 폴더를 사용합니다. 일반적으로 ~/Library/Application Support/ecode/languages 로 번역됩니다.APPDATA 사용합니다. 일반적으로 C:Users{username}AppDataRoamingecodelanguages 로 변환됩니다 Ecode는 json Extension이있는 해당 디렉토리에있는 각 파일을 읽습니다. 각 파일에는 하나 또는 여러 언어가 포함될 수 있습니다. 여러 언어를 설정하려면 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 Repository에서 다운로드 할 수있는 헬퍼 도구도있어 Lite Language 정의를 Ecode에 사용 된 JSON 파일 형식으로 직접 내보낼 수 있습니다.
제공된 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에서 지원하는 모든 모국어의 정의를 참조하십시오.
특별한 순서없이 나열 :
저자는 공동 작업에 개방적입니다. 프로젝트에 관심이있는 사람은 참여하도록 초대됩니다. 많은 기능이 여전히 보류 중이며 프로젝트는 시간이 지남에 따라 훨씬 더 커질 것입니다. 제발, 협력하십시오. =))
일부 유니 코드 문자는 상자에서 편집기에서 렌더링되지 않습니다. 렌더링되지 않는 캐릭터를 지원하는 글꼴을 선호하여 기본 단일 공간 글꼴을 변경해야합니다. 전통적인 모노 스케이스 글꼴을 사용하려는 경우 기본 폴백 글꼴을 변경할 수도 있습니다. 기본 폴백 글꼴은 광범위한 언어를 다루어야하지만 일부 특수 글꼴이 필요할 수 있습니다 (현재 CJK 언어를 다룹니다).
*1 현재 EEPP 기능 제한.
*2 나는 하위 픽셀 힌트의 팬이 아닙니다. 그러나 나는 그것을 기꺼이 구현하려는 것 이상으로, 나는 그 문제에 정통하지 않았으므로 어떤 도움을받을 것입니다.
*3 나는 인대를 좋아하지 않습니다. 나는 그들을 구현하는 PRS에 열려 있습니다.
*4 저는 VIM 사용자가 아니며 VIM 모드 또는 모달 편집을 구현할 자격이 없습니다. PR은 이것을 지원할 수 있습니다.
*5 더 나은 텍스트 모양의 지원은 시간과 함께 제공되지만 지금은 서두르지 않습니다. EEPP 아키텍처는 Harfbuzz 지원을 추가 할 준비가되었습니다.
이 편집자는 Lite, Lite-XL, QTCreator 및 Sublime Text 편집기의 뿌리 깊은 영감을 받았습니다. LITE/LITE-XL 구현을 기반으로 몇 가지 기능이 개발되었습니다. 일부 기능은 LITE에서 직접 포팅 할 수 있습니다 : Color-Schemes 및 Syntax Highlighting Patterns (EEPP 구현은 원래 Lite 구현을 확장하여 더 많은 기능을 추가).
Ecode 는 주로 Linux 및 MacOS에서 사용되고 있으며 Windows에서는 잘 테스트되지 않습니다. 편집자에 문제가있는 경우 여기에서보고하십시오.
이것은 진행중인 작업이며 안정성은 보장되지 않습니다. 중요한 작업에는 사용하지 마십시오. 나는 매일 편집자를 사용하고 있고 나에게 충분히 안정적이지만, 당신의 위험에 따라 사용합니다.
현대 C ++의 JSON을위한 Niels Lohmann
하위 프로세스를위한 Neil Henning.h
빠른 터미널 에뮬레이터의 모든 저자
Hexe 터미널의 Fredrik Aleksander
라이트를위한 RXI
Lite-XL의 Franko와 모든 공동 작업자
Serenityos를위한 Andreas Kling
그리고 더 많은 사람들!
MIT 라이센스