Skip to content

Commit 12b9f42

Browse files
flinteger-codemingchen
authored andcommitted
Apply PR 402 and update tree-sitter 0.26.6
1 parent d490289 commit 12b9f42

File tree

10 files changed

+28
-26
lines changed

10 files changed

+28
-26
lines changed

Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let package = Package(
1313
.library(name: "Runestone", targets: ["Runestone"])
1414
],
1515
dependencies: [
16-
.package(url: "https://github.com/tree-sitter/tree-sitter", .upToNextMinor(from: "0.20.9"))
16+
.package(url: "https://github.com/tree-sitter/tree-sitter", .upToNextMinor(from: "0.26.6"))
1717
],
1818
targets: [
1919
.target(name: "Runestone", dependencies: [

Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguage.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import TreeSitter
22

33
final class TreeSitterInternalLanguage {
4-
let languagePointer: UnsafePointer<TSLanguage>
4+
let languagePointer: OpaquePointer
55
let highlightsQuery: TreeSitterQuery?
66
let injectionsQuery: TreeSitterQuery?
77
let indentationScopes: TreeSitterIndentationScopes?
88

9-
init(languagePointer: UnsafePointer<TSLanguage>,
9+
init(languagePointer: OpaquePointer,
1010
highlightsQuery: TreeSitterQuery?,
1111
injectionsQuery: TreeSitterQuery?,
1212
indentationScopes: TreeSitterIndentationScopes?) {

Sources/Runestone/TextView/SyntaxHighlighting/Internal/TreeSitter/TreeSitterInternalLanguageMode.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ final class TreeSitterInternalLanguageMode: InternalLanguageMode {
2323
self.lineManager = lineManager
2424
operationQueue.name = "TreeSitterLanguageMode"
2525
operationQueue.qualityOfService = .default
26-
parser = TreeSitterParser(encoding: TSInputEncodingUTF16)
26+
parser = TreeSitterParser(encoding: TSInputEncodingUTF16LE)
2727
rootLanguageLayer = TreeSitterLanguageLayer(
2828
language: language,
2929
languageProvider: languageProvider,

Sources/Runestone/TextView/SyntaxHighlighting/TreeSitter/TreeSitterLanguage.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import TreeSitter
88
/// Refer to <doc:AddingATreeSitterLanguage> for more information on adding a Tree-sitter language to your project.
99
public final class TreeSitterLanguage {
1010
/// Reference to the raw Tree-sitter language.
11-
public let languagePointer: UnsafePointer<TSLanguage>
11+
public let languagePointer: OpaquePointer
1212
/// Query used for syntax highlighting.
1313
public let highlightsQuery: TreeSitterLanguage.Query?
1414
/// Query used for detecting injected languages.
@@ -34,7 +34,7 @@ public final class TreeSitterLanguage {
3434
/// - highlightsQuery: Query used for syntax highlighting.
3535
/// - injectionsQuery: Query used for detecting injected languages.
3636
/// - indentationScopes: Rules used for indenting text.
37-
public init(_ language: UnsafePointer<TSLanguage>,
37+
public init(_ language: OpaquePointer,
3838
highlightsQuery: TreeSitterLanguage.Query? = nil,
3939
injectionsQuery: TreeSitterLanguage.Query? = nil,
4040
indentationScopes: TreeSitterIndentationScopes? = nil) {
@@ -93,7 +93,7 @@ private extension TreeSitterInternalLanguage {
9393
indentationScopes: language.indentationScopes)
9494
}
9595

96-
private static func makeInternalQuery(from query: TreeSitterLanguage.Query?, with language: UnsafePointer<TSLanguage>) -> TreeSitterQuery? {
96+
private static func makeInternalQuery(from query: TreeSitterLanguage.Query?, with language: OpaquePointer) -> TreeSitterQuery? {
9797
if let string = query?.string {
9898
do {
9999
return try TreeSitterQuery(source: string, language: language)

Sources/Runestone/TreeSitter/TreeSitterParser.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ protocol TreeSitterParserDelegate: AnyObject {
88
final class TreeSitterParser {
99
weak var delegate: TreeSitterParserDelegate?
1010
let encoding: TSInputEncoding
11-
var language: UnsafePointer<TSLanguage>? {
11+
var language: OpaquePointer? {
1212
didSet {
1313
ts_parser_set_language(pointer, language)
1414
}
@@ -81,8 +81,10 @@ private extension TSInputEncoding {
8181
switch self {
8282
case TSInputEncodingUTF8:
8383
return .utf8
84-
case TSInputEncodingUTF16:
85-
return String.preferredUTF16Encoding
84+
case TSInputEncodingUTF16LE:
85+
return .utf16LittleEndian
86+
case TSInputEncodingUTF16BE:
87+
return .utf16BigEndian
8688
default:
8789
return nil
8890
}

Sources/Runestone/TreeSitter/TreeSitterQuery.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ enum TreeSitterQueryError: Error {
1212
final class TreeSitterQuery {
1313
let pointer: OpaquePointer
1414

15-
private let language: UnsafePointer<TSLanguage>
15+
private let language: OpaquePointer
1616
private var patternCount: UInt32 {
1717
ts_query_pattern_count(pointer)
1818
}
1919

20-
init(source: String, language: UnsafePointer<TSLanguage>) throws {
20+
init(source: String, language: OpaquePointer) throws {
2121
let errorOffset = UnsafeMutablePointer<UInt32>.allocate(capacity: 1)
2222
let errorType = UnsafeMutablePointer<TSQueryError>.allocate(capacity: 1)
2323
let pointer = source.withCString { cstr in

Sources/Runestone/TreeSitter/TreeSitterTextInput.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ final class TreeSitterTextInput {
2121

2222
func makeTSInput() -> TSInput {
2323
let payload = Unmanaged.passUnretained(self).toOpaque()
24-
return TSInput(payload: payload, read: read, encoding: encoding)
24+
return TSInput(payload: payload, read: read, encoding: encoding, decode: nil)
2525
}
2626

2727
func deallocate() {

Tests/RunestoneTests/Helpers/LanguageModeFactory.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,23 @@ enum LanguageModeFactory {
2222
"}",
2323
"]"
2424
])
25-
let language = TreeSitterLanguage(tree_sitter_javascript(), indentationScopes: indentationScopes)
25+
let language = TreeSitterLanguage(OpaquePointer(tree_sitter_javascript()), indentationScopes: indentationScopes)
2626
let languageMode = languageMode(language: language, text: text)
2727
languageMode.parse(text as NSString)
2828
return languageMode
2929
}
3030

3131
static func jsonLanguageMode(text: String) -> TreeSitterInternalLanguageMode {
3232
let indentationScopes = TreeSitterIndentationScopes(indent: ["object", "array"], outdent: ["}", "]"])
33-
let language = TreeSitterLanguage(tree_sitter_json(), indentationScopes: indentationScopes)
33+
let language = TreeSitterLanguage(OpaquePointer(tree_sitter_json()), indentationScopes: indentationScopes)
3434
let languageMode = languageMode(language: language, text: text)
3535
languageMode.parse(text as NSString)
3636
return languageMode
3737
}
3838

3939
static func htmlLanguageMode(text: String) -> TreeSitterInternalLanguageMode {
4040
let indentationScopes = TreeSitterIndentationScopes(indent: ["start_tag", "element"], outdent: ["end_tag"])
41-
let language = TreeSitterLanguage(tree_sitter_html(), indentationScopes: indentationScopes)
41+
let language = TreeSitterLanguage(OpaquePointer(tree_sitter_html()), indentationScopes: indentationScopes)
4242
let languageMode = languageMode(language: language, text: text)
4343
languageMode.parse(text as NSString)
4444
return languageMode
@@ -58,15 +58,15 @@ enum LanguageModeFactory {
5858
"try_statement"
5959
],
6060
whitespaceDenotesBlocks: true)
61-
let language = TreeSitterLanguage(tree_sitter_python(), indentationScopes: indentationScopes)
61+
let language = TreeSitterLanguage(OpaquePointer(tree_sitter_python()), indentationScopes: indentationScopes)
6262
let languageMode = languageMode(language: language, text: text)
6363
languageMode.parse(text as NSString)
6464
return languageMode
6565
}
6666

6767
static func yamlLanguageMode(text: String) -> TreeSitterInternalLanguageMode {
6868
let indentationScopes = TreeSitterIndentationScopes(indent: ["block_mapping_pair"], whitespaceDenotesBlocks: true)
69-
let language = TreeSitterLanguage(tree_sitter_yaml(), indentationScopes: indentationScopes)
69+
let language = TreeSitterLanguage(OpaquePointer(tree_sitter_yaml()), indentationScopes: indentationScopes)
7070
let languageMode = languageMode(language: language, text: text)
7171
languageMode.parse(text as NSString)
7272
return languageMode

Tests/RunestoneTests/TreeSitterParserTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ final class TreeSitterParserTests: XCTestCase {
88

99
func testParseString() {
1010
let string: NSString = "let foo = \"Hello world\""
11-
let parser = TreeSitterParser(encoding: TSInputEncodingUTF16)
11+
let parser = TreeSitterParser(encoding: TSInputEncodingUTF16LE)
1212
parser.delegate = delegate
13-
parser.language = tree_sitter_javascript()
13+
parser.language = OpaquePointer(tree_sitter_javascript())
1414
let tree = parser.parse(string)
1515
let expressionString = "(program (lexical_declaration (variable_declarator name: (identifier) value: (string))))"
1616
XCTAssertEqual(tree?.rootNode.expressionString, expressionString)
1717
}
1818

1919
func testReplaceShortTextWithSameShortText() {
2020
let string: NSString = "let foo = \"Hello world\""
21-
let parser = TreeSitterParser(encoding: TSInputEncodingUTF16)
21+
let parser = TreeSitterParser(encoding: TSInputEncodingUTF16LE)
2222
parser.delegate = delegate
23-
parser.language = tree_sitter_javascript()
23+
parser.language = OpaquePointer(tree_sitter_javascript())
2424
let oldTree = parser.parse(string)
2525
// Replace the entire text but with the same text (Select all and paste: CMD + A, CMD + V)
2626
let inputEdit = TreeSitterInputEdit(
@@ -55,9 +55,9 @@ final class TreeSitterParserTests: XCTestCase {
5555
}
5656
5757
"""
58-
let parser = TreeSitterParser(encoding: TSInputEncodingUTF16)
58+
let parser = TreeSitterParser(encoding: TSInputEncodingUTF16LE)
5959
parser.delegate = delegate
60-
parser.language = tree_sitter_javascript()
60+
parser.language = OpaquePointer(tree_sitter_javascript())
6161
let oldTree = parser.parse(string)
6262
// Replace the entire text but with the same text (Select all and paste: CMD + A, CMD + V)
6363
let inputEdit = TreeSitterInputEdit(

0 commit comments

Comments
 (0)