diff --git a/CHANGELOG.md b/CHANGELOG.md
index e31fa27cad..e265fe071c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,26 @@
## Unreleased
+### Features/Changes
+
+### Bug Fixes
+
+## 0.4.2
+
+### Features/Changes
+- Implement "Run in terminal"
+- Implement document symbols in a panel
+- Implement "Go To Location" functionality in the Diff editor.
+- Implement on screen find which is similar to `f` in vim but for the whole screen.
+- Make file explorer horizontal scrollable
+- Implement "Reveal in system file explorer"
+
+### Bug Fixes
+- Fix markdown syntax highlighting
+- Fix click issue on window error message
+
+## 0.4.1
+
### Features/Changes
- Add fedora builds
- Finish tree sitter dynamic libary support by downloading from https://github.com/lapce/tree-sitter-grammars
diff --git a/Cargo.lock b/Cargo.lock
index f08869645e..cec49f4946 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1684,7 +1684,7 @@ checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
[[package]]
name = "floem"
version = "0.1.1"
-source = "git+https://github.com/lapce/floem?rev=54f0d1bcf0e1a91d82492ee7300a526adb60eb5c#54f0d1bcf0e1a91d82492ee7300a526adb60eb5c"
+source = "git+https://github.com/lapce/floem?rev=157631a49d6ba13a3467dcb994eb46a98c52eb76#157631a49d6ba13a3467dcb994eb46a98c52eb76"
dependencies = [
"bitflags 2.6.0",
"copypasta",
@@ -1702,7 +1702,6 @@ dependencies = [
"image",
"indexmap",
"lapce-xi-rope",
- "once_cell",
"parking_lot",
"peniko",
"raw-window-handle 0.6.0",
@@ -1722,13 +1721,12 @@ dependencies = [
[[package]]
name = "floem-editor-core"
version = "0.1.1"
-source = "git+https://github.com/lapce/floem?rev=54f0d1bcf0e1a91d82492ee7300a526adb60eb5c#54f0d1bcf0e1a91d82492ee7300a526adb60eb5c"
+source = "git+https://github.com/lapce/floem?rev=157631a49d6ba13a3467dcb994eb46a98c52eb76#157631a49d6ba13a3467dcb994eb46a98c52eb76"
dependencies = [
"bitflags 2.6.0",
"itertools 0.12.1",
"lapce-xi-rope",
"memchr",
- "once_cell",
"serde",
"strum",
"strum_macros",
@@ -1800,7 +1798,7 @@ dependencies = [
[[package]]
name = "floem_reactive"
version = "0.1.1"
-source = "git+https://github.com/lapce/floem?rev=54f0d1bcf0e1a91d82492ee7300a526adb60eb5c#54f0d1bcf0e1a91d82492ee7300a526adb60eb5c"
+source = "git+https://github.com/lapce/floem?rev=157631a49d6ba13a3467dcb994eb46a98c52eb76#157631a49d6ba13a3467dcb994eb46a98c52eb76"
dependencies = [
"smallvec",
]
@@ -1808,7 +1806,7 @@ dependencies = [
[[package]]
name = "floem_renderer"
version = "0.1.1"
-source = "git+https://github.com/lapce/floem?rev=54f0d1bcf0e1a91d82492ee7300a526adb60eb5c#54f0d1bcf0e1a91d82492ee7300a526adb60eb5c"
+source = "git+https://github.com/lapce/floem?rev=157631a49d6ba13a3467dcb994eb46a98c52eb76#157631a49d6ba13a3467dcb994eb46a98c52eb76"
dependencies = [
"cosmic-text",
"image",
@@ -1821,7 +1819,7 @@ dependencies = [
[[package]]
name = "floem_tiny_skia_renderer"
version = "0.1.1"
-source = "git+https://github.com/lapce/floem?rev=54f0d1bcf0e1a91d82492ee7300a526adb60eb5c#54f0d1bcf0e1a91d82492ee7300a526adb60eb5c"
+source = "git+https://github.com/lapce/floem?rev=157631a49d6ba13a3467dcb994eb46a98c52eb76#157631a49d6ba13a3467dcb994eb46a98c52eb76"
dependencies = [
"anyhow",
"bytemuck",
@@ -1838,7 +1836,7 @@ dependencies = [
[[package]]
name = "floem_vger_renderer"
version = "0.1.1"
-source = "git+https://github.com/lapce/floem?rev=54f0d1bcf0e1a91d82492ee7300a526adb60eb5c#54f0d1bcf0e1a91d82492ee7300a526adb60eb5c"
+source = "git+https://github.com/lapce/floem?rev=157631a49d6ba13a3467dcb994eb46a98c52eb76#157631a49d6ba13a3467dcb994eb46a98c52eb76"
dependencies = [
"anyhow",
"floem-vger",
@@ -2629,9 +2627,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.2.6"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
dependencies = [
"equivalent",
"hashbrown",
@@ -2906,7 +2904,7 @@ dependencies = [
[[package]]
name = "lapce"
-version = "0.4.0"
+version = "0.4.2"
dependencies = [
"lapce-app",
"lapce-proxy",
@@ -2914,7 +2912,7 @@ dependencies = [
[[package]]
name = "lapce-app"
-version = "0.4.0"
+version = "0.4.2"
dependencies = [
"Inflector",
"alacritty_terminal",
@@ -2978,7 +2976,7 @@ dependencies = [
[[package]]
name = "lapce-core"
-version = "0.4.0"
+version = "0.4.2"
dependencies = [
"ahash",
"anyhow",
@@ -3006,7 +3004,7 @@ dependencies = [
[[package]]
name = "lapce-proxy"
-version = "0.4.0"
+version = "0.4.2"
dependencies = [
"alacritty_terminal",
"anyhow",
@@ -3055,7 +3053,7 @@ dependencies = [
[[package]]
name = "lapce-rpc"
-version = "0.4.0"
+version = "0.4.2"
dependencies = [
"anyhow",
"crossbeam-channel",
diff --git a/Cargo.toml b/Cargo.toml
index 658c97f93d..da90228dbb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,7 +23,7 @@ path = "lapce-proxy/src/bin/lapce-proxy.rs"
members = ["lapce-app", "lapce-proxy", "lapce-rpc", "lapce-core"]
[workspace.package]
-version = "0.4.0"
+version = "0.4.2"
edition = "2021"
rust-version = "1.77.0"
license = "Apache-2.0"
@@ -43,7 +43,7 @@ globset = { version = "0.4.14" }
hashbrown = { version = "0.14.5", features = ["serde"] }
im = { version = "15.0.0", features = ["serde"] }
include_dir = { version = "0.7" }
-indexmap = { version = "2.0", features = ["serde"] }
+indexmap = { version = "2.5", features = ["serde"] }
interprocess = { version = "1.2.1" }
itertools = { version = "0.12.1" }
notify = { version = "5.2.0", features = ["serde"] }
@@ -76,9 +76,9 @@ lapce-core = { path = "./lapce-core" }
lapce-rpc = { path = "./lapce-rpc" }
lapce-proxy = { path = "./lapce-proxy" }
-floem = { git = "https://github.com/lapce/floem", rev = "54f0d1bcf0e1a91d82492ee7300a526adb60eb5c", features = ["editor", "serde", "default-image-formats", "rfd-async-std"] }
+floem = { git = "https://github.com/lapce/floem", rev = "157631a49d6ba13a3467dcb994eb46a98c52eb76", features = ["editor", "serde", "default-image-formats", "rfd-async-std"] }
# floem = { path = "../floem", features = ["editor", "serde", "default-image-formats", "rfd-async-std"] }
-floem-editor-core = { git = "https://github.com/lapce/floem", rev = "54f0d1bcf0e1a91d82492ee7300a526adb60eb5c", features = ["serde"] }
+floem-editor-core = { git = "https://github.com/lapce/floem", rev = "157631a49d6ba13a3467dcb994eb46a98c52eb76", features = ["serde"] }
# floem-editor-core = { path = "../floem/editor-core/", features = ["serde"] }
[patch.crates-io]
diff --git a/defaults/dark-theme.toml b/defaults/dark-theme.toml
index 478d501a64..8d3c6ce0c4 100644
--- a/defaults/dark-theme.toml
+++ b/defaults/dark-theme.toml
@@ -68,6 +68,14 @@ dim-text = "#5C6370"
"variable.other.member" = "$red"
"tag" = "$blue"
+"markup.heading" = "$red"
+"markup.bold" = "$orange"
+"markup.italic" = "$orange"
+"markup.list" = "$orange"
+"markup.link.url" = "$blue"
+"markup.link.label" = "$purple"
+"markup.link.text" = "$purple"
+
"bracket.color.1" = "$blue"
"bracket.color.2" = "$yellow"
"bracket.color.3" = "$purple"
diff --git a/defaults/icon-theme.toml b/defaults/icon-theme.toml
index 8bda5b1de8..4a818c9bee 100644
--- a/defaults/icon-theme.toml
+++ b/defaults/icon-theme.toml
@@ -36,6 +36,7 @@ name = "Lapce Codicons"
"keyboard" = "keyboard.svg"
"breadcrumb_separator" = "chevron-right.svg"
"symbol_color" = "symbol-color.svg"
+"type_hierarchy" = "type-hierarchy.svg"
"window.close" = "chrome-close.svg"
"window.restore" = "chrome-restore.svg"
@@ -103,6 +104,7 @@ name = "Lapce Codicons"
"search.replace" = "replace.svg"
"search.replace_all" = "replace-all.svg"
+"document_symbol" = "symbol-class.svg"
"symbol_kind.array" = "symbol-array.svg"
"symbol_kind.boolean" = "symbol-boolean.svg"
"symbol_kind.class" = "symbol-class.svg"
diff --git a/defaults/light-theme.toml b/defaults/light-theme.toml
index 5cef4861b2..570e6f75b2 100644
--- a/defaults/light-theme.toml
+++ b/defaults/light-theme.toml
@@ -74,6 +74,14 @@ dim-text = "#A0A1A7"
"variable.other.member" = "$red"
"tag" = "$blue"
+"markup.heading" = "$red"
+"markup.bold" = "$orange"
+"markup.italic" = "$orange"
+"markup.list" = "$orange"
+"markup.link.url" = "$blue"
+"markup.link.label" = "$purple"
+"markup.link.text" = "$purple"
+
"bracket.color.1" = "$blue"
"bracket.color.2" = "$yellow"
"bracket.color.3" = "$purple"
diff --git a/extra/linux/dev.lapce.lapce.metainfo.xml b/extra/linux/dev.lapce.lapce.metainfo.xml
index 99d322aff3..2156280bdf 100644
--- a/extra/linux/dev.lapce.lapce.metainfo.xml
+++ b/extra/linux/dev.lapce.lapce.metainfo.xml
@@ -30,6 +30,6 @@
-
+
diff --git a/extra/macos/Lapce.app/Contents/Info.plist b/extra/macos/Lapce.app/Contents/Info.plist
index 2f6f78e208..45b6321f10 100644
--- a/extra/macos/Lapce.app/Contents/Info.plist
+++ b/extra/macos/Lapce.app/Contents/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 0.4.0
+ 0.4.2
CFBundleSupportedPlatforms
MacOSX
diff --git a/extra/windows/wix/lapce.wxs b/extra/windows/wix/lapce.wxs
index b2d0e4c600..dbc0890515 100644
--- a/extra/windows/wix/lapce.wxs
+++ b/extra/windows/wix/lapce.wxs
@@ -1,6 +1,6 @@
-
+
diff --git a/icons/codicons/type-hierarchy.svg b/icons/codicons/type-hierarchy.svg
new file mode 100644
index 0000000000..bcbc902e40
--- /dev/null
+++ b/icons/codicons/type-hierarchy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lapce-app/src/about.rs b/lapce-app/src/about.rs
index 7a3c47b913..a800a99ad3 100644
--- a/lapce-app/src/about.rs
+++ b/lapce-app/src/about.rs
@@ -3,7 +3,7 @@ use std::rc::Rc;
use floem::{
event::EventListener,
keyboard::Modifiers,
- reactive::{RwSignal, Scope},
+ reactive::{RwSignal, Scope, SignalGet, SignalUpdate},
style::{CursorStyle, Display, Position},
views::{container, label, stack, svg, Decorators},
View,
diff --git a/lapce-app/src/alert.rs b/lapce-app/src/alert.rs
index c56f32eb8b..8e2b7ac853 100644
--- a/lapce-app/src/alert.rs
+++ b/lapce-app/src/alert.rs
@@ -6,7 +6,7 @@ use std::{
use floem::{
event::EventListener,
- reactive::{ReadSignal, RwSignal, Scope},
+ reactive::{ReadSignal, RwSignal, Scope, SignalGet, SignalUpdate},
style::CursorStyle,
views::{container, dyn_stack, label, stack, svg, Decorators},
View,
diff --git a/lapce-app/src/app.rs b/lapce-app/src/app.rs
index 36a04eb11d..024e5ff39e 100644
--- a/lapce-app/src/app.rs
+++ b/lapce-app/src/app.rs
@@ -23,7 +23,7 @@ use floem::{
},
reactive::{
create_effect, create_memo, create_rw_signal, provide_context, use_context,
- ReadSignal, RwSignal, Scope,
+ ReadSignal, RwSignal, Scope, SignalGet, SignalUpdate, SignalWith,
},
style::{
AlignItems, CursorStyle, Display, FlexDirection, JustifyContent, Position,
@@ -38,9 +38,7 @@ use floem::{
views::{
clip, container, drag_resize_window_area, drag_window_area, dyn_stack,
empty, label, rich_text,
- scroll::{
- scroll, HideBar, PropagatePointerWheel, VerticalScrollAsHorizontal,
- },
+ scroll::{scroll, PropagatePointerWheel, VerticalScrollAsHorizontal},
stack, svg, tab, text, tooltip, virtual_stack, Decorators, VirtualDirection,
VirtualItemSize, VirtualVector,
},
@@ -1055,9 +1053,9 @@ fn editor_tab_header(
.with_untracked(|editor_tab| editor_tab.children[active].1)
.get_untracked()
})
+ .scroll_style(|s| s.hide_bars(true))
.style(|s| {
- s.set(HideBar, true)
- .set(VerticalScrollAsHorizontal, true)
+ s.set(VerticalScrollAsHorizontal, true)
.absolute()
.size_full()
}),
@@ -2261,10 +2259,11 @@ fn palette_item(
.style(move |s| {
let config = config.get();
let size = config.ui.icon_size() as f32;
- s.min_width(size)
- .size(size, size)
- .margin_right(5.0)
- .color(config.color(LapceColor::LAPCE_ICON_ACTIVE))
+ s.min_width(size).size(size, size).margin_right(5.0).color(
+ config.symbol_color(&kind).unwrap_or_else(|| {
+ config.color(LapceColor::LAPCE_ICON_ACTIVE)
+ }),
+ )
}),
focus_text(
move || text.clone(),
@@ -2795,10 +2794,10 @@ fn window_message_view(
}),
stack((
text(title.clone()).style(|s| {
- s.min_width(0.0).line_height(1.6).font_weight(Weight::BOLD)
+ s.min_width(0.0).line_height(1.8).font_weight(Weight::BOLD)
}),
text(message.message.clone()).style(|s| {
- s.min_width(0.0).line_height(1.6).margin_top(5.0)
+ s.min_width(0.0).line_height(1.8).margin_top(5.0)
}),
))
.style(move |s| {
@@ -2818,6 +2817,7 @@ fn window_message_view(
)
.style(|s| s.margin_left(6.0)),
))
+ .on_event_stop(EventListener::PointerDown, |_| {})
.style(move |s| {
let config = config.get();
s.width_full()
@@ -2846,7 +2846,11 @@ fn window_message_view(
.style(|s| s.flex_col().width_full()),
)
.style(|s| {
- s.absolute().width_full().min_height(0.0).max_height_full()
+ s.absolute()
+ .width_full()
+ .min_height(0.0)
+ .max_height_full()
+ .set(PropagatePointerWheel, false)
}),
)
.style(|s| s.size_full()),
@@ -2930,6 +2934,7 @@ fn hover(window_tab_data: Rc) -> impl View {
layout_rect.set(rect);
})
.on_event_stop(EventListener::PointerMove, |_| {})
+ .on_event_stop(EventListener::PointerDown, |_| {})
.style(move |s| {
let active = window_tab_data.common.hover.active.get();
if !active {
@@ -3617,7 +3622,11 @@ fn window(window_data: WindowData) -> impl View {
}
pub fn launch() {
- logging::panic_hook();
+ let cli = Cli::parse();
+
+ if !cli.wait {
+ logging::panic_hook();
+ }
let (reload_handle, _guard) = logging::logging();
trace!(TraceLevel::INFO, "Starting up Lapce..");
@@ -3653,8 +3662,6 @@ pub fn launch() {
load_shell_env();
}
- let cli = Cli::parse();
-
// small hack to unblock terminal if launched from it
// launch it as a separate process that waits
if !cli.wait {
diff --git a/lapce-app/src/code_action.rs b/lapce-app/src/code_action.rs
index 0db20e3d17..f3b93903ff 100644
--- a/lapce-app/src/code_action.rs
+++ b/lapce-app/src/code_action.rs
@@ -3,7 +3,7 @@ use std::rc::Rc;
use floem::{
keyboard::Modifiers,
peniko::kurbo::Rect,
- reactive::{RwSignal, Scope},
+ reactive::{RwSignal, Scope, SignalGet, SignalUpdate},
};
use lapce_core::{command::FocusCommand, mode::Mode, movement::Movement};
use lapce_rpc::plugin::PluginId;
diff --git a/lapce-app/src/command.rs b/lapce-app/src/command.rs
index 1ea715861c..1d6aa0ed27 100644
--- a/lapce-app/src/command.rs
+++ b/lapce-app/src/command.rs
@@ -187,9 +187,27 @@ pub enum LapceWorkbenchCommand {
#[strum(message = "Show Call Hierarchy")]
ShowCallHierarchy,
- #[strum(serialize = "reveal_in_file_tree")]
- #[strum(message = "Reveal in File Tree")]
- RevealInFileTree,
+ #[strum(serialize = "reveal_in_panel")]
+ #[strum(message = "Reveal in Panel")]
+ RevealInPanel,
+
+ #[strum(serialize = "source_control_open_active_file_remote_url")]
+ #[strum(message = "Source Control: Open Remote File Url")]
+ SourceControlOpenActiveFileRemoteUrl,
+
+ #[cfg(not(target_os = "macos"))]
+ #[strum(serialize = "reveal_in_file_explorer")]
+ #[strum(message = "Reveal in System File Explorer")]
+ RevealInFileExplorer,
+
+ #[cfg(target_os = "macos")]
+ #[strum(serialize = "reveal_in_file_explorer")]
+ #[strum(message = "Reveal in Finder")]
+ RevealInFileExplorer,
+
+ #[strum(serialize = "run_in_terminal")]
+ #[strum(message = "Run in Terminal")]
+ RunInTerminal,
#[strum(serialize = "reveal_active_file_in_file_explorer")]
#[strum(message = "Reveal Active File in File Explorer")]
@@ -562,6 +580,10 @@ pub enum LapceWorkbenchCommand {
#[strum(serialize = "quit")]
#[strum(message = "Quit Editor")]
Quit,
+
+ #[strum(serialize = "go_to_location")]
+ #[strum(message = "Go to Location")]
+ GoToLocation,
}
#[derive(Clone, Debug)]
diff --git a/lapce-app/src/completion.rs b/lapce-app/src/completion.rs
index b71cfe1dae..201612651e 100644
--- a/lapce-app/src/completion.rs
+++ b/lapce-app/src/completion.rs
@@ -2,7 +2,7 @@ use std::{borrow::Cow, path::PathBuf, str::FromStr, sync::Arc};
use floem::{
peniko::kurbo::Rect,
- reactive::{ReadSignal, RwSignal, Scope},
+ reactive::{ReadSignal, RwSignal, Scope, SignalGet, SignalUpdate, SignalWith},
views::editor::{id::EditorId, text::Document},
};
use lapce_core::{
diff --git a/lapce-app/src/config.rs b/lapce-app/src/config.rs
index 4258f636a0..7c70e30340 100644
--- a/lapce-app/src/config.rs
+++ b/lapce-app/src/config.rs
@@ -655,6 +655,36 @@ impl LapceConfig {
Some(self.ui_svg(kind_str))
}
+ pub fn symbol_color(&self, kind: &SymbolKind) -> Option {
+ let theme_str = match *kind {
+ SymbolKind::METHOD => "method",
+ SymbolKind::FUNCTION => "method",
+ SymbolKind::ENUM => "enum",
+ SymbolKind::ENUM_MEMBER => "enum-member",
+ SymbolKind::CLASS => "class",
+ SymbolKind::VARIABLE => "field",
+ SymbolKind::STRUCT => "structure",
+ SymbolKind::CONSTANT => "constant",
+ SymbolKind::PROPERTY => "property",
+ SymbolKind::FIELD => "field",
+ SymbolKind::INTERFACE => "interface",
+ SymbolKind::ARRAY => "",
+ SymbolKind::BOOLEAN => "",
+ SymbolKind::EVENT => "",
+ SymbolKind::FILE => "",
+ SymbolKind::KEY => "",
+ SymbolKind::OBJECT => "",
+ SymbolKind::NAMESPACE => "",
+ SymbolKind::NUMBER => "number",
+ SymbolKind::OPERATOR => "",
+ SymbolKind::TYPE_PARAMETER => "",
+ SymbolKind::STRING => "string",
+ _ => return None,
+ };
+
+ self.style_color(theme_str)
+ }
+
pub fn logo_svg(&self) -> String {
self.svg_store.read().logo_svg()
}
diff --git a/lapce-app/src/config/icon.rs b/lapce-app/src/config/icon.rs
index a53812e88b..61a17bd421 100644
--- a/lapce-app/src/config/icon.rs
+++ b/lapce-app/src/config/icon.rs
@@ -38,6 +38,7 @@ impl LapceIcons {
pub const KEYBOARD: &'static str = "keyboard";
pub const BREADCRUMB_SEPARATOR: &'static str = "breadcrumb_separator";
pub const SYMBOL_COLOR: &'static str = "symbol_color";
+ pub const TYPE_HIERARCHY: &'static str = "type_hierarchy";
pub const FILE: &'static str = "file";
pub const FILE_EXPLORER: &'static str = "file_explorer";
@@ -108,6 +109,7 @@ impl LapceIcons {
pub const FILE_TYPE_SYMLINK_FILE: &'static str = "file-symlink-file";
pub const FILE_TYPE_SYMLINK_DIRECTORY: &'static str = "file-symlink-directory";
+ pub const DOCUMENT_SYMBOL: &'static str = "document_symbol";
pub const SYMBOL_KIND_ARRAY: &'static str = "symbol_kind.array";
pub const SYMBOL_KIND_BOOLEAN: &'static str = "symbol_kind.boolean";
pub const SYMBOL_KIND_CLASS: &'static str = "symbol_kind.class";
diff --git a/lapce-app/src/db.rs b/lapce-app/src/db.rs
index 1ed885931f..05bb1cf0ab 100644
--- a/lapce-app/src/db.rs
+++ b/lapce-app/src/db.rs
@@ -6,7 +6,7 @@ use std::{
use anyhow::{anyhow, Result};
use crossbeam_channel::{unbounded, Sender};
-use floem::peniko::kurbo::Vec2;
+use floem::{peniko::kurbo::Vec2, reactive::SignalGet};
use lapce_core::directory::Directory;
use lapce_rpc::plugin::VoltID;
use sha2::{Digest, Sha256};
diff --git a/lapce-app/src/debug.rs b/lapce-app/src/debug.rs
index 71aebe827b..a213af5b79 100644
--- a/lapce-app/src/debug.rs
+++ b/lapce-app/src/debug.rs
@@ -8,7 +8,7 @@ use std::{
use floem::{
ext_event::create_ext_action,
- reactive::{Memo, RwSignal, Scope},
+ reactive::{Memo, RwSignal, Scope, SignalGet, SignalUpdate, SignalWith},
views::VirtualVector,
};
use lapce_rpc::{
diff --git a/lapce-app/src/doc.rs b/lapce-app/src/doc.rs
index cd64958b1c..3369db3d3a 100644
--- a/lapce-app/src/doc.rs
+++ b/lapce-app/src/doc.rs
@@ -17,7 +17,9 @@ use floem::{
ext_event::create_ext_action,
keyboard::Modifiers,
peniko::Color,
- reactive::{batch, ReadSignal, RwSignal, Scope},
+ reactive::{
+ batch, ReadSignal, RwSignal, Scope, SignalGet, SignalUpdate, SignalWith,
+ },
text::{Attrs, AttrsList, FamilyOwned, TextLayout},
views::editor::{
actions::CommonAction,
@@ -64,8 +66,8 @@ use lapce_xi_rope::{
Interval, Rope, RopeDelta, Transformer,
};
use lsp_types::{
- CodeActionOrCommand, CodeLens, Diagnostic, DiagnosticSeverity, InlayHint,
- InlayHintLabel,
+ CodeActionOrCommand, CodeLens, Diagnostic, DiagnosticSeverity,
+ DocumentSymbolResponse, InlayHint, InlayHintLabel,
};
use serde::{Deserialize, Serialize};
use smallvec::SmallVec;
@@ -78,7 +80,10 @@ use crate::{
history::DocumentHistory,
keypress::KeyPressFocus,
main_split::Editors,
- panel::kind::PanelKind,
+ panel::{
+ document_symbol::{SymbolData, SymbolInformationItemData},
+ kind::PanelKind,
+ },
window_tab::{CommonData, Focus},
workspace::LapceWorkspace,
};
@@ -205,6 +210,8 @@ pub struct Doc {
editors: Editors,
pub common: Rc,
+
+ pub document_symbol_data: RwSignal