Пакет CodeEditorView Swift предоставляет представление Swiftui, реализующее богатый редактор кода для iOS, Visionos и MacOS, визуальный стиль которого вдохновлен XCode. В настоящее время поддерживаемая в настоящее время функциональность включает в себя синтаксис, выделяющую с настраиваемыми темами, встроенное сообщение (предупреждения, ошибки и т. Д.), Сопоставление кронштейнов, соответствующая вставка кронштейнов, выделение текущей линии и минимум.
Обновлять:
CodeEditorView теперь основан на TextKit 2.CodeEditorView в более ранней версии MacOS или iOS, вам необходимо использовать выпуск 0.12.0 или ветвь textkit1 этого репозитория. (У меня нет пропускной способности, чтобы поддержать TextKit 2 в более ранних версиях ОС, но я рад принять PR, которые добавляют поддержку для этого. Им нужно использовать Swift 5.9, хотя.)CodeEditorView также поддерживает (1) отображение информации об идентификаторах (например, информация о типе и документация, представленная в Markdown), а также (2) завершение кода. Это в конечном итоге также будет поддержано на iOS. Это темная тема по умолчанию на MacOS. Как и в XCode, сообщения имеют встроенный вид с правой стороны экрана, который появляется в большем наложении, чтобы отобразить больше информации. Минимап справа обеспечивает схему отредактированного текста.

Ниже приведена легкая тема по умолчанию на iOS.

Типичное использование взгляда заключается в следующем.
import SwiftUI
import CodeEditor
import LanguageSupport
struct ContentView : View {
@ State private var text : String = " My awesome code... "
@ State private var position : CodeEditor . Position = CodeEditor . Position ( )
@ State private var messages : Set < TextLocated < Message > > = Set ( )
@ Environment ( . colorScheme ) private var colorScheme : ColorScheme
var body : some View {
CodeEditor ( text : $text , position : $position , messages : $messages , language : . swift )
. environment ( . codeEditorTheme ,
colorScheme == . dark ? Theme . defaultDark : Theme . defaultLight )
}
} Чтобы увидеть CodeEditorView в действии, посмотрите на репо с кроссплатформенным демонстрационным приложением.
Для получения дополнительной информации см. Документацию пакета.
Я считаю это качеством перед выпуском. Достаточно что -то построить с этим, но это еще не готово к производству. Представление CodeEditor уже поддерживает довольно много расширенных функциональных возможностей (например, встроенные сообщения, минимум и завершение кода (на macOS)). Другие компоненты по -прежнему довольно просты, такие как диапазон токенов, охватываемых языковой конфигурацией, но это также то, что легко расширить. Производительность по -прежнему является проблемой для более крупных файлов.
Авторские права [2021..2024] Мануэль Мт Чакраварти.
Распределено по лицензии Apache-2.0-см. Файл лицензии для получения подробной информации.