适用于 iOS、visionOS 和 macOS 的 SwiftUI 代码编辑器视图

CodeEditorView 包提供了一个 SwiftUI 视图,该视图实现了适用于 iOS、visionOS 和 macOS 的代码编辑器,其视觉风格灵感来自 Xcode,并且基于 TextKit 2。目前支持的功能包括:使用可配置主题的语法高亮、内联消息报告(警告、错误等)、括号匹配、匹配括号插入、当前行高亮显示、常用代码编辑操作以及迷你地图。

在 macOS 上,CodeEditorView 还支持 (1) 显示有关标识符的信息(例如,类型信息和以 Markdown 格式提供的文档)以及 (2) 代码补全。此支持独立于底层信息的计算方式——一种常见的选择是使用基于语言服务器协议 (LSP) 的语言服务器。 此功能最终也将在 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 的实际效果,请查看包含跨平台演示应用程序的存储库。

文档

有关更多信息,请参见软件包文档

状态

我仍然认为此软件包的质量是预发布质量,但在这个阶段,它主要是一系列已知错误,这些错误阻止了它成为 1.0 版本。

许可

版权所有 [2021..2025] Manuel M. T. Chakravarty。

根据 Apache-2.0 许可证分发 — 有关详细信息,请参见许可证文件