diff --git a/Cargo.lock b/Cargo.lock
index ac13aba9..6603e8ca 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1615,7 +1615,6 @@ dependencies = [
[[package]]
name = "floem"
version = "0.1.0"
-source = "git+https://github.com/lapce/floem?rev=8f00e4d530441982627dd62cbf20f2e3f0efac6d#8f00e4d530441982627dd62cbf20f2e3f0efac6d"
dependencies = [
"bitflags 2.2.1",
"crossbeam-channel",
@@ -1643,7 +1642,6 @@ dependencies = [
[[package]]
name = "floem_renderer"
version = "0.1.0"
-source = "git+https://github.com/lapce/floem?rev=8f00e4d530441982627dd62cbf20f2e3f0efac6d#8f00e4d530441982627dd62cbf20f2e3f0efac6d"
dependencies = [
"cosmic-text",
"peniko",
@@ -1653,7 +1651,6 @@ dependencies = [
[[package]]
name = "floem_vger"
version = "0.1.0"
-source = "git+https://github.com/lapce/floem?rev=8f00e4d530441982627dd62cbf20f2e3f0efac6d#8f00e4d530441982627dd62cbf20f2e3f0efac6d"
dependencies = [
"anyhow",
"floem_renderer",
@@ -3439,9 +3436,9 @@ dependencies = [
[[package]]
name = "lapce-xi-rope"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08ae23edb8cf91f01edd9a87c88623eae3977c8d647a31c57cb12f1a125ca10a"
+checksum = "6516aaa99c5059dc1a1bc02ed782d5e524699c1b4330028a6bed8259f9d9ff0a"
dependencies = [
"bytecount",
"memchr",
diff --git a/Cargo.toml b/Cargo.toml
index 8209823f..e03e236d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -69,7 +69,7 @@ lsp-types = { version = "0.93", features = ["proposed"] }
psp-types = { git = "https://github.com/lapce/psp-types" }
-lapce-xi-rope = { version = "0.3.1", features = ["serde"] }
+lapce-xi-rope = { version = "0.3.2", features = ["serde"] }
lapce-core = { path = "./lapce-core" }
lapce-rpc = { path = "./lapce-rpc" }
diff --git a/defaults/settings.toml b/defaults/settings.toml
index c1ad7de2..490cabf5 100644
--- a/defaults/settings.toml
+++ b/defaults/settings.toml
@@ -327,6 +327,8 @@ name = ""
"search.case_sensitive" = "case-sensitive.svg"
"search.whole_word" = "whole-word.svg"
"search.regex" = "regex.svg"
+"search.replace" = "replace.svg"
+"search.replace_all" = "replace-all.svg"
"symbol_kind.array" = "symbol-array.svg"
"symbol_kind.boolean" = "symbol-boolean.svg"
diff --git a/icons/codicons/replace-all.svg b/icons/codicons/replace-all.svg
new file mode 100644
index 00000000..f5a51538
--- /dev/null
+++ b/icons/codicons/replace-all.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/codicons/replace.svg b/icons/codicons/replace.svg
new file mode 100644
index 00000000..65bfaacf
--- /dev/null
+++ b/icons/codicons/replace.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lapce-app/Cargo.toml b/lapce-app/Cargo.toml
index ed7faec9..547b5b99 100644
--- a/lapce-app/Cargo.toml
+++ b/lapce-app/Cargo.toml
@@ -36,8 +36,8 @@ fuzzy-matcher = "0.3.7"
sled = "0.34.7"
tokio = { version = "1.21", features = ["full"] }
futures = "0.3.26"
-floem = { git = "https://github.com/lapce/floem", rev = "8f00e4d530441982627dd62cbf20f2e3f0efac6d" }
-# floem = { path = "../../workspaces/floem" }
+# floem = { git = "https://github.com/lapce/floem", rev = "8f00e4d530441982627dd62cbf20f2e3f0efac6d" }
+floem = { path = "../../workspaces/floem" }
config = { version = "0.13.2", default-features = false, features = ["toml"] }
structdesc = { git = "https://github.com/lapce/structdesc" }
diff --git a/lapce-app/src/app.rs b/lapce-app/src/app.rs
index 76761f59..38ba8ebd 100644
--- a/lapce-app/src/app.rs
+++ b/lapce-app/src/app.rs
@@ -345,6 +345,7 @@ struct Info {
}
fn editor_tab_content(
+ main_split: MainSplitData,
workspace: Arc,
active_editor_tab: ReadSignal