Ecode -это легкий многоплатформенный редактор кода, разработанный для современного оборудования с акцентом на отзывчивость и производительность. Он был разработан с помощью графического интерфейса EEPP с ускорением аппаратного обеспечения, который предоставляет основную технологию для редактора. Проект является первым серьезным проектом с использованием графического интерфейса EEPP, и в настоящее время он разрабатывается для улучшения библиотеки GUI EEPP в рамках одной из ее основных целей.
Для получения дополнительной проверки экрана, работающей на MacOS, работаю в Windows, работая на хайку, низкий DPI, завершение кода, терминал, локатор файлов, форматы файлов, глобальный находка, глобальная замена, Linter.
.gitignore * Ecode рассматривает папки как проекты, как и многие другие редакторы. Основное отличие заключается в том, что он также пытается автоматически дезинфицировать файлы проекта, отфильтровав любой файл, который он отфильтрован в файлах репозитория .gitignore . Идея состоит в том, чтобы использовать файл .gitignore в качестве настройки проекта. Файлы проекта будут использоваться для поиска файлов в проекте и выполнять глобальные поиски. Обычно это приводит к гораздо лучшим результатам для любого поиска, связанного с проектом. Существует также очень простой механизм .ecode/.prjallowed чтобы обеспечить видимость фильтрованных файлов .gitignore Ecode добавит только файлы, которые поддерживаются редактором, редактор не будет пытаться что -либо сделать с файлами, которые официально не поддерживаются.
Некоторые моменты, чтобы проиллюстрировать философию проекта:
Ecode может быть скомпилирован в WASM и работает в любом современном браузере. Нет никаких планов сосредоточить разработку на веб -версии (по крайней мере, на данный момент), поскольку существует множество хороших решений. Но вы можете попробовать:
Демонстрация здесь
В настоящее время исходный код находится в репозитории проекта EEPP. Источник редактора Ecode расположен в SRC/Tools/Ecode. Ecode используется для активного улучшения и итерации библиотеки EEPP GUI. В какой -то момент это будет перенесено в это хранилище. Репозиторий Ecode должен использоваться для проблем и документации. PRS для Ecode будет принята в репозитории EEPP.
Существуют сценарии для каждой поддерживаемой платформы, готовой к созданию приложения. Для Linux и MacOS это тривиально создавать проект, вам просто нужно будет установить GCC/Clang, а также библиотеку разработки от LibsDL2. Сценарий Windows Build в настоящее время является сценарием перекрестной компилирования и использует Mingw64. Но его также можно легко построить с помощью установленных библиотек развития Visual Studio и LibsDL2. Для получения дополнительной информации о том, как создать вручную проект, пожалуйста, следуйте инструкциям по сборке EEPP. Имя проекта всегда экода (поэтому, если вы строите с 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 -файл с помощью пакета приложений Zipped. Папка 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 | Никто | Никто |
| Angelscript | ✓ | Никто | Никто | Никто |
| сценарий AWK | ✓ | Никто | Никто | Никто |
| летучая мышь | ✓ | Никто | Никто | Никто |
| Базель | ✓ | Никто | Никто | Никто |
| сгибать | ✓ | Никто | Никто | Никто |
| план | ✓ | Никто | Никто | Никто |
| Brainfuck | ✓ | Никто | Никто | Никто |
| гул | ✓ | Никто | Никто | Никто |
| в | ✓ | Клангд | cppcheck | Кланг-формат |
| углерод | ✓ | Никто | Никто | Никто |
| Клоджюр | ✓ | Clojure-lsp | Никто | Никто |
| Cmake | ✓ | Cmake-Language-Server | Никто | Никто |
| CPP | ✓ | Клангд | cppcheck | Кланг-формат |
| кристалл | ✓ | кристаллический | Никто | Никто |
| Csharp | ✓ | Omnisharp | Никто | Никто |
| CSS | ✓ | Эммет-Сервер | Никто | родной |
| дюймовый | ✓ | служить-d | Никто | Никто |
| дрэк | ✓ | DART Language-Server | Никто | Никто |
| разница | ✓ | Никто | Никто | Никто |
| Dockerfile | ✓ | Docker-Langserver | Никто | Никто |
| эликсир | ✓ | Эликсир-Л.С. | Никто | Никто |
| вере | ✓ | Вязки-Сервер | Никто | Никто |
| Файл среды | ✓ | Никто | Никто | Никто |
| Фантом | ✓ | Никто | Никто | Никто |
| Фортран | ✓ | Fortls | Никто | Никто |
| FSTAB | ✓ | Никто | Никто | Никто |
| Gdscript | ✓ | Никто | Никто | Никто |
| GLSL | ✓ | GLSL_ANALYZER | Никто | Никто |
| идти | ✓ | Gopls | Никто | Gopls |
| graphql | ✓ | Никто | Никто | Никто |
| Groovy | ✓ | Никто | Никто | Никто |
| заяц | ✓ | Никто | Никто | Никто |
| Хаскелл | ✓ | Haskell-Language-Server | Хлинт | Ормолу |
| хакс | ✓ | Никто | Никто | Никто |
| Haxe Compiler Arguments | ✓ | Никто | Никто | Никто |
| HLSL | ✓ | Никто | Никто | Никто |
| HTML | ✓ | Эммет-Сервер | Никто | красивее |
| INI | ✓ | Никто | Никто | Никто |
| джай | ✓ | Никто | Никто | Никто |
| Ява | ✓ | JDTLS | Никто | Кланг-формат |
| JavaScript | ✓ | ТИЗКИНГОВЛЯЧЕЙ СЕРВЕР | Эслинт | красивее |
| Javascriptreact | ✓ | ТИЗКИНГОВЛЯЧЕЙ СЕРВЕР | Никто | Никто |
| json | ✓ | Никто | jq | родной |
| Джулия | ✓ | Languageserver.jl | Никто | Никто |
| Котлин | ✓ | Kotlin-Language-Server | ktlint | ktlint |
| латекс | ✓ | Texlab | Никто | Никто |
| Омар | ✓ | Никто | Никто | Никто |
| Луа | ✓ | Lua-Language-Server | Луачек | Никто |
| Makefile | ✓ | Никто | Никто | Никто |
| отметка | ✓ | Никто | Никто | Никто |
| мезон | ✓ | Никто | Никто | Никто |
| MOONSCRIPT | ✓ | Никто | Никто | Никто |
| Нелуа | ✓ | Никто | Нелуа | Никто |
| ним | ✓ | nimlsp | ним | Никто |
| ОБЕКЕК | ✓ | Никто | Никто | Никто |
| объектив-c | ✓ | Клангд | Никто | Кланг-формат |
| ocaml | ✓ | Ocaml-lsp | Никто | Никто |
| Один | ✓ | Олс | Никто | Никто |
| OpenScad | ✓ | Никто | Никто | Никто |
| Паскаль | ✓ | Никто | Никто | Никто |
| перв | ✓ | Перлнавигатор | Никто | Никто |
| PHP | ✓ | Phpactor | PHP | Никто |
| пико-8 | ✓ | Никто | Никто | Никто |
| открытый текст | ✓ | Никто | Никто | Никто |
| попечитель | ✓ | Никто | Никто | Никто |
| пони | ✓ | Никто | Никто | Никто |
| Postgresql | ✓ | Никто | Никто | Никто |
| PowerShell | ✓ | Никто | Никто | Никто |
| питон | ✓ | пилсп | рюша | черный |
| ведущий | ✓ | R LanguageServer | Никто | Никто |
| кольцо | ✓ | Никто | Никто | Никто |
| рубин | ✓ | солнечный | Никто | Никто |
| ржавчина | ✓ | анализер ржавчины | Никто | rustfmt |
| набережный | ✓ | Эммет-Сервер | Никто | Никто |
| Скала | ✓ | металлы | Никто | Никто |
| ShellScript | ✓ | Bash-Language-Server | Никто | Никто |
| Маленький бассейн | ✓ | Никто | Никто | Никто |
| прочность | ✓ | соль | Солхинт | Никто |
| SQL | ✓ | Никто | Никто | Никто |
| быстрый | ✓ | Sourcekit-lsp | Никто | Никто |
| TCL | ✓ | Никто | Никто | Никто |
| чирок | ✓ | Никто | TL | Никто |
| Томл | ✓ | Никто | Никто | Никто |
| машинопись | ✓ | ТИЗКИНГОВЛЯЧЕЙ СЕРВЕР | Эслинт | красивее |
| Typecriptreact | ✓ | ТИЗКИНГОВЛЯЧЕЙ СЕРВЕР | Никто | Никто |
| V. | ✓ | V-Analyzer | Никто | V. |
| вала | ✓ | Вала-Сервер | Никто | Никто |
| вероисповедание | ✓ | Никто | Никто | Никто |
| Visual Basic | ✓ | Никто | Никто | Никто |
| Vue | ✓ | VLS | Никто | Никто |
| крапивник | ✓ | Никто | Никто | Никто |
| x86 сборка | ✓ | Никто | Никто | Никто |
| XML | ✓ | Эммет-Сервер | родной | родной |
| Xtend | ✓ | Никто | Никто | Никто |
| Ямл | ✓ | Ямл-языка-сервер | Никто | Никто |
| Zig | ✓ | zls | Zig | Zig |
Настоящий тег означает, что эта функция поддерживается назначенным Ecode, и она не нуждается в каком -либо внешнем инструменте для функционирования.
Ecode приносит инструмент для отображения текущего здоровья языковой поддержки. Из Ecode вы можете проверить его состояние здоровья из Settings -> Tools -> Check Language Health , а от CLI вы можете использовать флаг --health : ecode --health . Используйте флаг проверки здоровья, чтобы устранение неполадок, пропущенных языковых серверов, рынков и форматеров.
Проверьте здоровье всех языков с помощью ecode --health или запросите подробности о конкретном языке с ecode --health-lang=<lang> .
Плагины расширяют функциональность редактора базового кода. В настоящее время все плагины включены по умолчанию, но они необязательны, и они могут быть отключены в любое время. Ecode реализует внутренний протокол, который позволяет плагинам общаться друг с другом. Протокол LSP будет использоваться в качестве базы для реализации связи плагина. И, например, плагин Linter будет потреблять LSP для улучшения его диагностики. Также модуль Auto Complete будет запрашивать помощь от LSP, если она будет доступна, для улучшения завершений и предоставления подписи.
Поддержка Linter предоставляется в результате выполнения уже стабированных линтеров с каждого языка. ECODE обеспечивает поддержку нескольких языков по умолчанию и может быть легко расширен путем расширения конфигурации linters.json . Конфигурация linters.json по умолчанию может быть получена отсюда. Для настройки новых Linters вы можете создать новый файл 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 . Пользователи должны быть установлены вручную, Linters не будут поставляться с редактором, и они также должны быть видны для исполняемого файла. Это означает, что он должен быть на переменной среды PATH , или путь к бинарству должен быть абсолютным.
Пожалуйста, проверьте таблицу поддержки языка
"disable_lsp_languages": ["lua", "python"] , отключает Луа и Питон."disable_languages": ["lua", "python"] , отключает Луачек и Рафф соответственно. Плагин 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 format Формат следует тем же шаблону, что и все предыдущие файлы конфигурации. Конфигурация представлена в файле 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 не будет поставляться с редактором, и они также должны быть видны для исполняемого файла. Это означает, что он должен быть на переменной среды 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 и визуализация статистики (состояния файлов), совершение, толкание, оформление, вытягивание, извлечение, быстрое слияние, создание+переименования+удаления ветвей, управление тайниками. Все статистики будут автоматически обновлены/обновляются в режиме реального времени. Есть также некоторая базовая конфигурация. Плагин требует, чтобы пользователь установил git и доступную в переменной среды PATH .
git.json format Формат следует тем же шаблону, что и все предыдущие файлы конфигурации. Конфигурация представлена в файле 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. Плагины всегда будут реализовать «конфигурацию» для настройки плагинов и всегда будут реализовать клавишу «Киногинги» для настройки пользовательских связей клавиш.
Пользовательские цветовые схемы редактора могут быть добавлены в каталог цветовых схем пользователя, найденный по адресу:
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 Я не очень люблю лигатуры. Я открыт для их реализации PRS.
*4 Я не пользователь VIM, и я не имею права реализации режима VIM или любого модального редактирования. PRs могут поддержать это.
*5 Лучшая поддержка формирования текста придет со временем, но на данный момент не будет. Архитектура EEPP готова добавить поддержку Harfbuzz.
Этот редактор обладает глубоко укоренившимся вдохновением от Lite, Lite-XL, QTCreator и Sublime Text Editors. Несколько функций были разработаны на основе реализаций Lite/Lite-XL. Некоторые функции могут быть перенесены непосредственно из LITE: цветовые схемы и синтаксис-подсветки (реализация EEPP расширяет оригинальную реализацию LITE, чтобы добавить еще много функций).
Ecode используется в основном в Linux и MacOS, он не очень хорошо протестирован в Windows. Если вы найдете какие -либо проблемы с редактором, сообщите об этом здесь.
Это работа в процессе, стабильность не гарантирована. Пожалуйста, не используйте его для критических задач. Я использую редактор ежедневно и достаточно стабилен для меня, но использую его на свой страх и риск.
Нильс Ломанн для JSON для современного C ++
Нил Хеннинг для подпроцесса.
Все авторы эмулятора терминала без сосания
Фредрик Александер для гексикового терминала
RXI для Lite
Франко и все сотрудники для Lite-xl
Андреас Клинг для Serenityos
И намного больше людей!
MIT Лицензия