Skip to content

Commit 6cbf5e0

Browse files
committed
Merge branch 'code-folding/ribbon-view' into code-folding/better-folding-calculation
2 parents d618ace + 4408fac commit 6cbf5e0

34 files changed

Lines changed: 1509 additions & 649 deletions

Example/CodeEditSourceEditorExample/CodeEditSourceEditorExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

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

Package.resolved

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

Package.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,19 @@ let package = Package(
1616
dependencies: [
1717
// A fast, efficient, text view for code.
1818
.package(
19-
path: "../CodeEditTextView"
20-
// url: "https://github.com/CodeEditApp/CodeEditTextView.git",
21-
// from: "0.10.1"
19+
url: "https://github.com/CodeEditApp/CodeEditTextView.git",
20+
from: "0.11.0"
2221
),
2322
// tree-sitter languages
2423
.package(
2524
url: "https://github.com/CodeEditApp/CodeEditLanguages.git",
2625
exact: "0.1.20"
2726
),
27+
// CodeEditSymbols
28+
.package(
29+
url: "https://github.com/CodeEditApp/CodeEditSymbols.git",
30+
exact: "0.2.3"
31+
),
2832
// SwiftLint
2933
.package(
3034
url: "https://github.com/lukepistrol/SwiftLintPlugin",
@@ -44,7 +48,8 @@ let package = Package(
4448
dependencies: [
4549
"CodeEditTextView",
4650
"CodeEditLanguages",
47-
"TextFormation"
51+
"TextFormation",
52+
"CodeEditSymbols"
4853
],
4954
plugins: [
5055
.plugin(name: "SwiftLint", package: "SwiftLintPlugin")

Sources/CodeEditSourceEditor/Controller/TextViewController+Cursor.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import AppKit
1111
extension TextViewController {
1212
/// Sets new cursor positions.
1313
/// - Parameter positions: The positions to set. Lines and columns are 1-indexed.
14-
public func setCursorPositions(_ positions: [CursorPosition]) {
14+
public func setCursorPositions(_ positions: [CursorPosition], scrollToVisible: Bool = false) {
1515
if isPostingCursorNotification { return }
1616
var newSelectedRanges: [NSRange] = []
1717
for position in positions {
@@ -33,6 +33,10 @@ extension TextViewController {
3333
}
3434
}
3535
textView.selectionManager.setSelectedRanges(newSelectedRanges)
36+
37+
if scrollToVisible {
38+
textView.scrollSelectionToVisible()
39+
}
3640
}
3741

3842
/// Update the ``TextViewController/cursorPositions`` variable with new text selections from the text view.

Sources/CodeEditSourceEditor/Controller/TextViewController+FindPanelTarget.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
// Created by Khan Winter on 3/16/25.
66
//
77

8-
import Foundation
8+
import AppKit
99
import CodeEditTextView
1010

1111
extension TextViewController: FindPanelTarget {
12+
var findPanelTargetView: NSView {
13+
textView
14+
}
15+
1216
func findPanelWillShow(panelHeight: CGFloat) {
1317
updateContentInsets()
1418
}
@@ -17,6 +21,10 @@ extension TextViewController: FindPanelTarget {
1721
updateContentInsets()
1822
}
1923

24+
func findPanelModeDidChange(to mode: FindPanelMode) {
25+
updateContentInsets()
26+
}
27+
2028
var emphasisManager: EmphasisManager? {
2129
textView?.emphasisManager
2230
}

Sources/CodeEditSourceEditor/Controller/TextViewController+Lifecycle.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ extension TextViewController {
225225
self.findViewController?.showFindPanel()
226226
return nil
227227
case (0, "\u{1b}"): // Escape key
228-
self.findViewController?.findPanel.dismiss()
228+
self.findViewController?.hideFindPanel()
229229
return nil
230230
case (_, _):
231231
return event

Sources/CodeEditSourceEditor/Controller/TextViewController+StyleViews.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,11 @@ extension TextViewController {
9797
minimapView.scrollView.contentInsets.bottom += additionalTextInsets?.bottom ?? 0
9898

9999
// Inset the top by the find panel height
100-
let findInset = (findViewController?.isShowingFindPanel ?? false) ? FindPanel.height : 0
100+
let findInset: CGFloat = if findViewController?.viewModel.isShowingFindPanel ?? false {
101+
findViewController?.viewModel.panelHeight ?? 0
102+
} else {
103+
0
104+
}
101105
scrollView.contentInsets.top += findInset
102106
minimapView.scrollView.contentInsets.top += findInset
103107

Sources/CodeEditSourceEditor/Find/FindPanelDelegate.swift

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//
2+
// FindPanelMode.swift
3+
// CodeEditSourceEditor
4+
//
5+
// Created by Khan Winter on 4/18/25.
6+
//
7+
8+
enum FindPanelMode: CaseIterable {
9+
case find
10+
case replace
11+
12+
var displayName: String {
13+
switch self {
14+
case .find:
15+
return "Find"
16+
case .replace:
17+
return "Replace"
18+
}
19+
}
20+
}

Sources/CodeEditSourceEditor/Find/FindPanelTarget.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
// Created by Khan Winter on 3/10/25.
66
//
77

8-
import Foundation
8+
import AppKit
99
import CodeEditTextView
1010

1111
protocol FindPanelTarget: AnyObject {
12-
var emphasisManager: EmphasisManager? { get }
13-
var text: String { get }
12+
var textView: TextView! { get }
13+
var findPanelTargetView: NSView { get }
1414

1515
var cursorPositions: [CursorPosition] { get }
16-
func setCursorPositions(_ positions: [CursorPosition])
16+
func setCursorPositions(_ positions: [CursorPosition], scrollToVisible: Bool)
1717
func updateCursorPosition()
1818

1919
func findPanelWillShow(panelHeight: CGFloat)
2020
func findPanelWillHide(panelHeight: CGFloat)
21+
func findPanelModeDidChange(to mode: FindPanelMode)
2122
}

0 commit comments

Comments
 (0)