git: f03b2ed7de11 - main - editors/lapce: Update to 0.2.0

From: Nuno Teixeira <eduardo_at_FreeBSD.org>
Date: Mon, 05 Sep 2022 19:27:54 UTC
The branch main has been updated by eduardo:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f03b2ed7de111e8b31e6ddffa9c1ab66fecdf9f3

commit f03b2ed7de111e8b31e6ddffa9c1ab66fecdf9f3
Author:     Nuno Teixeira <eduardo@FreeBSD.org>
AuthorDate: 2022-09-05 19:22:39 +0000
Commit:     Nuno Teixeira <eduardo@FreeBSD.org>
CommitDate: 2022-09-05 19:26:22 +0000

    editors/lapce: Update to 0.2.0
    
    ChangeLog:      https://github.com/lapce/lapce/releases/tag/v0.2.0
    PR:             266232
---
 editors/lapce/Makefile                             |   4 +-
 editors/lapce/Makefile.crates                      |  22 +-
 editors/lapce/distinfo                             |  50 +++-
 ...rates_interprocess-1.1.1_src_os_unix_imports.rs |  23 ++
 ...interprocess-1.1.1_src_os_unix_local__socket.rs |  18 ++
 ...crates_interprocess-1.1.1_src_os_unix_signal.rs |  15 ++
 ...ates_interprocess-1.1.1_src_os_unix_udsocket.rs | 141 +++++++++++
 editors/lapce/files/patch-druid                    | 266 +++++++++++----------
 editors/lapce/files/patch-lapce-proxy_Cargo.toml   |   4 +-
 9 files changed, 404 insertions(+), 139 deletions(-)

diff --git a/editors/lapce/Makefile b/editors/lapce/Makefile
index 6afb08fdd06f..6947b14d4a53 100644
--- a/editors/lapce/Makefile
+++ b/editors/lapce/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	lapce
-PORTVERSION=	g20220826 # remove openssl-src-* from CARGO-CRATES each update
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.2.0 # remove openssl-src-* from CARGO-CRATES each update
 CATEGORIES=	editors
 
 MAINTAINER=	eduardo@FreeBSD.org
@@ -18,7 +19,6 @@ LIB_DEPENDS=	libfontconfig.so:x11-fonts/fontconfig \
 
 USES=		cargo gmake gnome localbase:ldflags perl5 pkgconfig ssl
 USE_GITHUB=	yes
-GH_TAGNAME=	5abf778
 USE_GNOME=	atk gdkpixbuf2 gtk30 pango
 
 PLIST_FILES=	bin/lapce \
diff --git a/editors/lapce/Makefile.crates b/editors/lapce/Makefile.crates
index 3e76949b39b9..12bff73991cb 100644
--- a/editors/lapce/Makefile.crates
+++ b/editors/lapce/Makefile.crates
@@ -13,9 +13,12 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		arrayref-0.3.6 \
 		arrayvec-0.5.2 \
 		arrayvec-0.7.2 \
+		async-channel-1.7.1 \
+		async-task-4.3.0 \
 		async-trait-0.1.57 \
 		atk-0.14.0 \
 		atk-sys-0.14.0 \
+		atomic-waker-1.0.0 \
 		atty-0.2.14 \
 		autocfg-1.1.0 \
 		backtrace-0.3.66 \
@@ -27,6 +30,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		bitmaps-2.1.0 \
 		block-0.1.6 \
 		block-buffer-0.9.0 \
+		blocking-1.2.0 \
 		bstr-0.2.17 \
 		bumpalo-3.10.0 \
 		bytecount-0.6.3 \
@@ -34,6 +38,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		bytemuck_derive-1.2.0 \
 		byteorder-1.4.3 \
 		bytes-1.2.1 \
+		cache-padded-1.2.0 \
 		cairo-rs-0.14.9 \
 		cairo-sys-rs-0.14.9 \
 		cap-fs-ext-0.25.2 \
@@ -47,11 +52,15 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		cfg-if-1.0.0 \
 		cgl-0.3.2 \
 		chrono-0.4.22 \
+		clap-3.2.17 \
+		clap_derive-3.2.17 \
+		clap_lex-0.2.4 \
 		cmake-0.1.48 \
 		cocoa-0.24.0 \
 		cocoa-foundation-0.1.0 \
 		color_quant-1.1.0 \
 		combine-4.6.6 \
+		concurrent-queue-1.2.4 \
 		config-0.11.0 \
 		console_error_panic_hook-0.1.7 \
 		const-cstr-0.3.0 \
@@ -100,6 +109,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		errno-0.2.8 \
 		errno-dragonfly-0.1.2 \
 		euclid-0.22.7 \
+		event-listener-2.5.3 \
 		exr-1.4.2 \
 		fallible-iterator-0.2.0 \
 		fastrand-1.8.0 \
@@ -137,6 +147,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		futures-core-0.3.23 \
 		futures-executor-0.3.23 \
 		futures-io-0.3.23 \
+		futures-lite-1.12.0 \
 		futures-macro-0.3.23 \
 		futures-sink-0.3.23 \
 		futures-task-0.3.23 \
@@ -200,8 +211,10 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		inotify-0.9.6 \
 		inotify-sys-0.1.5 \
 		instant-0.1.12 \
+		interprocess-1.1.1 \
 		intl-memoizer-0.5.1 \
 		intl_pluralrules-7.0.1 \
+		intmap-0.7.1 \
 		io-extras-0.15.0 \
 		io-lifetimes-0.7.3 \
 		iovec-0.1.4 \
@@ -285,8 +298,10 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		openssl-macros-0.1.0 \
 		openssl-probe-0.1.5 \
 		openssl-sys-0.9.75 \
+		os_str_bytes-6.3.0 \
 		pango-0.14.8 \
 		pango-sys-0.14.0 \
+		parking-2.0.0 \
 		parking_lot-0.11.2 \
 		parking_lot-0.12.1 \
 		parking_lot_core-0.8.5 \
@@ -383,6 +398,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		smallvec-1.9.0 \
 		socket2-0.4.4 \
 		spin-0.9.4 \
+		spinning-0.1.0 \
 		spsc-buffer-0.1.1 \
 		stable_deref_trait-1.2.0 \
 		static_assertions-1.1.0 \
@@ -401,6 +417,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		target-lexicon-0.12.4 \
 		tempfile-3.3.0 \
 		termcolor-1.1.3 \
+		textwrap-0.15.0 \
 		thiserror-1.0.32 \
 		thiserror-impl-1.0.32 \
 		thread-id-4.0.0 \
@@ -478,6 +495,7 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		version_check-0.9.4 \
 		vte-0.10.1 \
 		vte_generate_state_changes-0.1.1 \
+		waker-fn-1.1.0 \
 		walkdir-2.3.2 \
 		want-0.3.0 \
 		wasi-0.10.0+wasi-snapshot-preview1 \
@@ -551,8 +569,9 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		zstd-sys-2.0.1+zstd.1.5.2 \
 		tree-sitter-wgsl@git+https://github.com/szebniok/tree-sitter-wgsl?branch=master\#272e89ef2aeac74178edb9db4a83c1ffef80a463 \
 		psp-types@git+https://github.com/lapce/psp-types\#0a18e1d285b6e1791e440728c633ef84ed99d1e0 \
-		druid,druid-derive,druid-shell@git+https://github.com/lapce/druid?branch=shell_opengl\#85d503a79df7581d1a144f97ee1cc369788b55b8 \
 		tree-sitter-glimmer@git+https://github.com/VixieTSQ/tree-sitter-glimmer\#7281caca2ba114e1960c5d944a37860ef0841426 \
+		druid,druid-derive,druid-shell@git+https://github.com/lapce/druid?branch=shell_opengl\#3e53ab2159b7154fea77731ff7633970a40cb7b4 \
+		tree-sitter-yaml@git+https://github.com/panekj/tree-sitter-yaml?branch=master\#80c8d76847f03e772c5c524cf29bafb56858a8d1 \
 		tree-sitter-ruby@git+https://github.com/Liberatys/tree-sitter-ruby.git?branch=chore/allow-range-of-tree-sitter\#26086eeb072266abf51273af631a2cb62d0fd1e8 \
 		wasi-experimental-http-wasmtime@git+https://github.com/lapce/wasi-experimental-http\#3685f0893ef19c1cca5b16a11ba01ff7ade14a5f \
 		tree-sitter-haxe@git+https://github.com/VixieTSQ/tree-sitter-haxe\#a3e23bc0f84a53371eb5d86229782ec6c21d3729 \
@@ -568,7 +587,6 @@ CARGO_CRATES=	Inflector-0.11.4 \
 		tree-sitter-ocaml@git+https://github.com/tree-sitter/tree-sitter-ocaml\#cc26b1ef111100f26a137bcbcd39fd4e35be9a59 \
 		tree-sitter-hcl@git+https://github.com/VixieTSQ/tree-sitter-hcl\#f4aa4553344e03e149ec459549a7f686d6846626 \
 		tree-sitter-zig@git+https://github.com/maxxnino/tree-sitter-zig?branch=main\#8d3224c3bd0890fe08358886ebf54fca2ed448a6 \
-		tree-sitter-yaml@git+https://github.com/panekj/tree-sitter-yaml?branch=master\#faed130c65531addfa3edf855e1d417b96c7f163 \
 		tree-sitter-haskell@git+https://github.com/tree-sitter/tree-sitter-haskell\#972156b37ee6f4a8b51a6f67f76aecc6fa13714c \
 		piet-wgpu@git+https://github.com/lapce/piet-wgpu?branch=shell_opengl\#f863b3e49175d1811e6008cea2ca1bd282fc5bed \
 		tree-sitter-scss@git+https://github.com/VixieTSQ/tree-sitter-scss?branch=patch-1\#3aac3391ede5098edbf4cc8a9f6d0cfdfe28e5dc \
diff --git a/editors/lapce/distinfo b/editors/lapce/distinfo
index 6ceb6c1b4365..1d9318796774 100644
--- a/editors/lapce/distinfo
+++ b/editors/lapce/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1661590395
+TIMESTAMP = 1662383795
 SHA256 (rust/crates/Inflector-0.11.4.crate) = fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3
 SIZE (rust/crates/Inflector-0.11.4.crate) = 17438
 SHA256 (rust/crates/addr2line-0.17.0.crate) = b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b
@@ -29,12 +29,18 @@ SHA256 (rust/crates/arrayvec-0.5.2.crate) = 23b62fc65de8e4e7f52534fb52b0f3ed0474
 SIZE (rust/crates/arrayvec-0.5.2.crate) = 27838
 SHA256 (rust/crates/arrayvec-0.7.2.crate) = 8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6
 SIZE (rust/crates/arrayvec-0.7.2.crate) = 29341
+SHA256 (rust/crates/async-channel-1.7.1.crate) = e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28
+SIZE (rust/crates/async-channel-1.7.1.crate) = 12855
+SHA256 (rust/crates/async-task-4.3.0.crate) = 7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524
+SIZE (rust/crates/async-task-4.3.0.crate) = 29544
 SHA256 (rust/crates/async-trait-0.1.57.crate) = 76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f
 SIZE (rust/crates/async-trait-0.1.57.crate) = 26793
 SHA256 (rust/crates/atk-0.14.0.crate) = a83b21d2aa75e464db56225e1bda2dd5993311ba1095acaa8fa03d1ae67026ba
 SIZE (rust/crates/atk-0.14.0.crate) = 35031
 SHA256 (rust/crates/atk-sys-0.14.0.crate) = badcf670157c84bb8b1cf6b5f70b650fed78da2033c9eed84c4e49b11cbe83ea
 SIZE (rust/crates/atk-sys-0.14.0.crate) = 21815
+SHA256 (rust/crates/atomic-waker-1.0.0.crate) = 065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a
+SIZE (rust/crates/atomic-waker-1.0.0.crate) = 11771
 SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
 SIZE (rust/crates/atty-0.2.14.crate) = 5470
 SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
@@ -57,6 +63,8 @@ SHA256 (rust/crates/block-0.1.6.crate) = 0d8c1fef690941d3e7788d328517591fecc684c
 SIZE (rust/crates/block-0.1.6.crate) = 4077
 SHA256 (rust/crates/block-buffer-0.9.0.crate) = 4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4
 SIZE (rust/crates/block-buffer-0.9.0.crate) = 7108
+SHA256 (rust/crates/blocking-1.2.0.crate) = c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc
+SIZE (rust/crates/blocking-1.2.0.crate) = 18494
 SHA256 (rust/crates/bstr-0.2.17.crate) = ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223
 SIZE (rust/crates/bstr-0.2.17.crate) = 330350
 SHA256 (rust/crates/bumpalo-3.10.0.crate) = 37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3
@@ -71,6 +79,8 @@ SHA256 (rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3
 SIZE (rust/crates/byteorder-1.4.3.crate) = 22512
 SHA256 (rust/crates/bytes-1.2.1.crate) = ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db
 SIZE (rust/crates/bytes-1.2.1.crate) = 54857
+SHA256 (rust/crates/cache-padded-1.2.0.crate) = c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c
+SIZE (rust/crates/cache-padded-1.2.0.crate) = 9125
 SHA256 (rust/crates/cairo-rs-0.14.9.crate) = 33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482
 SIZE (rust/crates/cairo-rs-0.14.9.crate) = 48398
 SHA256 (rust/crates/cairo-sys-rs-0.14.9.crate) = b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570
@@ -97,6 +107,12 @@ SHA256 (rust/crates/cgl-0.3.2.crate) = 0ced0551234e87afee12411d535648dd89d2e7f34
 SIZE (rust/crates/cgl-0.3.2.crate) = 7557
 SHA256 (rust/crates/chrono-0.4.22.crate) = bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1
 SIZE (rust/crates/chrono-0.4.22.crate) = 185570
+SHA256 (rust/crates/clap-3.2.17.crate) = 29e724a68d9319343bb3328c9cc2dfde263f4b3142ee1059a9980580171c954b
+SIZE (rust/crates/clap-3.2.17.crate) = 213699
+SHA256 (rust/crates/clap_derive-3.2.17.crate) = 13547f7012c01ab4a0e8f8967730ada8f9fdf419e8b6c792788f39cf4e46eefa
+SIZE (rust/crates/clap_derive-3.2.17.crate) = 28217
+SHA256 (rust/crates/clap_lex-0.2.4.crate) = 2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5
+SIZE (rust/crates/clap_lex-0.2.4.crate) = 9652
 SHA256 (rust/crates/cmake-0.1.48.crate) = e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a
 SIZE (rust/crates/cmake-0.1.48.crate) = 15142
 SHA256 (rust/crates/cocoa-0.24.0.crate) = 6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832
@@ -107,6 +123,8 @@ SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7
 SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
 SHA256 (rust/crates/combine-4.6.6.crate) = 35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4
 SIZE (rust/crates/combine-4.6.6.crate) = 132428
+SHA256 (rust/crates/concurrent-queue-1.2.4.crate) = af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c
+SIZE (rust/crates/concurrent-queue-1.2.4.crate) = 15375
 SHA256 (rust/crates/config-0.11.0.crate) = 1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369
 SIZE (rust/crates/config-0.11.0.crate) = 32062
 SHA256 (rust/crates/console_error_panic_hook-0.1.7.crate) = a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc
@@ -203,6 +221,8 @@ SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d25187
 SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
 SHA256 (rust/crates/euclid-0.22.7.crate) = b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade
 SIZE (rust/crates/euclid-0.22.7.crate) = 75976
+SHA256 (rust/crates/event-listener-2.5.3.crate) = 0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0
+SIZE (rust/crates/event-listener-2.5.3.crate) = 15392
 SHA256 (rust/crates/exr-1.4.2.crate) = 14cc0e06fb5f67e5d6beadf3a382fec9baca1aa751c6d5368fdeee7e5932c215
 SIZE (rust/crates/exr-1.4.2.crate) = 235974
 SHA256 (rust/crates/fallible-iterator-0.2.0.crate) = 4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7
@@ -277,6 +297,8 @@ SHA256 (rust/crates/futures-executor-0.3.23.crate) = 1d11aa21b5b587a64682c0094c2
 SIZE (rust/crates/futures-executor-0.3.23.crate) = 17744
 SHA256 (rust/crates/futures-io-0.3.23.crate) = 93a66fc6d035a26a3ae255a6d2bca35eda63ae4c5512bef54449113f7a1228e5
 SIZE (rust/crates/futures-io-0.3.23.crate) = 8906
+SHA256 (rust/crates/futures-lite-1.12.0.crate) = 7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48
+SIZE (rust/crates/futures-lite-1.12.0.crate) = 36032
 SHA256 (rust/crates/futures-macro-0.3.23.crate) = 0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d
 SIZE (rust/crates/futures-macro-0.3.23.crate) = 11250
 SHA256 (rust/crates/futures-sink-0.3.23.crate) = ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765
@@ -403,10 +425,14 @@ SHA256 (rust/crates/inotify-sys-0.1.5.crate) = e05c02b5e89bff3b946cedeca278abc62
 SIZE (rust/crates/inotify-sys-0.1.5.crate) = 6965
 SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
 SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/interprocess-1.1.1.crate) = 1c58ec7fbda1df9a93f587b780659db3c99f61f4be27f9c82c9b37684ffd0366
+SIZE (rust/crates/interprocess-1.1.1.crate) = 76139
 SHA256 (rust/crates/intl-memoizer-0.5.1.crate) = c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f
 SIZE (rust/crates/intl-memoizer-0.5.1.crate) = 8292
 SHA256 (rust/crates/intl_pluralrules-7.0.1.crate) = b18f988384267d7066cc2be425e6faf352900652c046b6971d2e228d3b1c5ecf
 SIZE (rust/crates/intl_pluralrules-7.0.1.crate) = 9263
+SHA256 (rust/crates/intmap-0.7.1.crate) = ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9
+SIZE (rust/crates/intmap-0.7.1.crate) = 6708
 SHA256 (rust/crates/io-extras-0.15.0.crate) = 4a5d8c2ab5becd8720e30fd25f8fa5500d8dc3fceadd8378f05859bd7b46fc49
 SIZE (rust/crates/io-extras-0.15.0.crate) = 35094
 SHA256 (rust/crates/io-lifetimes-0.7.3.crate) = 1ea37f355c05dde75b84bba2d767906ad522e97cd9e2eef2be7a4ab7fb442c06
@@ -573,10 +599,14 @@ SHA256 (rust/crates/openssl-probe-0.1.5.crate) = ff011a302c396a5197692431fc19480
 SIZE (rust/crates/openssl-probe-0.1.5.crate) = 7227
 SHA256 (rust/crates/openssl-sys-0.9.75.crate) = e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f
 SIZE (rust/crates/openssl-sys-0.9.75.crate) = 60028
+SHA256 (rust/crates/os_str_bytes-6.3.0.crate) = 9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff
+SIZE (rust/crates/os_str_bytes-6.3.0.crate) = 22928
 SHA256 (rust/crates/pango-0.14.8.crate) = 546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581
 SIZE (rust/crates/pango-0.14.8.crate) = 37643
 SHA256 (rust/crates/pango-sys-0.14.0.crate) = 2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe
 SIZE (rust/crates/pango-sys-0.14.0.crate) = 23109
+SHA256 (rust/crates/parking-2.0.0.crate) = 427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72
+SIZE (rust/crates/parking-2.0.0.crate) = 9714
 SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
 SIZE (rust/crates/parking_lot-0.11.2.crate) = 39869
 SHA256 (rust/crates/parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f
@@ -769,6 +799,8 @@ SHA256 (rust/crates/socket2-0.4.4.crate) = 66d72b759436ae32898a2af0a14218dbf55ef
 SIZE (rust/crates/socket2-0.4.4.crate) = 44048
 SHA256 (rust/crates/spin-0.9.4.crate) = 7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09
 SIZE (rust/crates/spin-0.9.4.crate) = 30180
+SHA256 (rust/crates/spinning-0.1.0.crate) = 2d4f0e86297cad2658d92a707320d87bf4e6ae1050287f51d19b67ef3f153a7b
+SIZE (rust/crates/spinning-0.1.0.crate) = 12713
 SHA256 (rust/crates/spsc-buffer-0.1.1.crate) = be6c3f39c37a4283ee4b43d1311c828f2e1fb0541e76ea0cb1a2abd9ef2f5b3b
 SIZE (rust/crates/spsc-buffer-0.1.1.crate) = 3176
 SHA256 (rust/crates/stable_deref_trait-1.2.0.crate) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
@@ -805,6 +837,8 @@ SHA256 (rust/crates/tempfile-3.3.0.crate) = 5cdb1ef4eaeeaddc8fbd371e5017057064af
 SIZE (rust/crates/tempfile-3.3.0.crate) = 27578
 SHA256 (rust/crates/termcolor-1.1.3.crate) = bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755
 SIZE (rust/crates/termcolor-1.1.3.crate) = 17242
+SHA256 (rust/crates/textwrap-0.15.0.crate) = b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb
+SIZE (rust/crates/textwrap-0.15.0.crate) = 52998
 SHA256 (rust/crates/thiserror-1.0.32.crate) = f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994
 SIZE (rust/crates/thiserror-1.0.32.crate) = 17241
 SHA256 (rust/crates/thiserror-impl-1.0.32.crate) = 12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21
@@ -959,6 +993,8 @@ SHA256 (rust/crates/vte-0.10.1.crate) = 6cbce692ab4ca2f1f3047fcf732430249c0e971b
 SIZE (rust/crates/vte-0.10.1.crate) = 24947
 SHA256 (rust/crates/vte_generate_state_changes-0.1.1.crate) = d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff
 SIZE (rust/crates/vte_generate_state_changes-0.1.1.crate) = 2422
+SHA256 (rust/crates/waker-fn-1.1.0.crate) = 9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca
+SIZE (rust/crates/waker-fn-1.1.0.crate) = 7114
 SHA256 (rust/crates/walkdir-2.3.2.crate) = 808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56
 SIZE (rust/crates/walkdir-2.3.2.crate) = 23516
 SHA256 (rust/crates/want-0.3.0.crate) = 1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0
@@ -1105,10 +1141,12 @@ SHA256 (szebniok-tree-sitter-wgsl-272e89ef2aeac74178edb9db4a83c1ffef80a463_GH0.t
 SIZE (szebniok-tree-sitter-wgsl-272e89ef2aeac74178edb9db4a83c1ffef80a463_GH0.tar.gz) = 4534014
 SHA256 (lapce-psp-types-0a18e1d285b6e1791e440728c633ef84ed99d1e0_GH0.tar.gz) = 16bb33a3e53cbc228d6dafb49b9be0ba8120e9f18b8363818a3e510453bff8a8
 SIZE (lapce-psp-types-0a18e1d285b6e1791e440728c633ef84ed99d1e0_GH0.tar.gz) = 750
-SHA256 (lapce-druid-85d503a79df7581d1a144f97ee1cc369788b55b8_GH0.tar.gz) = bb276fa61354d29fbfcd8f2bd908551cab5324cae61af30fcb37d657f52d9c37
-SIZE (lapce-druid-85d503a79df7581d1a144f97ee1cc369788b55b8_GH0.tar.gz) = 635836
 SHA256 (VixieTSQ-tree-sitter-glimmer-7281caca2ba114e1960c5d944a37860ef0841426_GH0.tar.gz) = fa2469c7b92f2869d0d19c025178d318fbe6be4f6ef179bfb7ada4423b99e6d3
 SIZE (VixieTSQ-tree-sitter-glimmer-7281caca2ba114e1960c5d944a37860ef0841426_GH0.tar.gz) = 38080
+SHA256 (lapce-druid-3e53ab2159b7154fea77731ff7633970a40cb7b4_GH0.tar.gz) = 57a4435741428d1f09a4f1a87d917e25d255e86078bdb4d411b6fe418f6444a3
+SIZE (lapce-druid-3e53ab2159b7154fea77731ff7633970a40cb7b4_GH0.tar.gz) = 636336
+SHA256 (panekj-tree-sitter-yaml-80c8d76847f03e772c5c524cf29bafb56858a8d1_GH0.tar.gz) = acebe5c39dbaf282bb363607882debaf1cda96b7e4c70b5422fc7b704eed983f
+SIZE (panekj-tree-sitter-yaml-80c8d76847f03e772c5c524cf29bafb56858a8d1_GH0.tar.gz) = 270403
 SHA256 (Liberatys-tree-sitter-ruby-26086eeb072266abf51273af631a2cb62d0fd1e8_GH0.tar.gz) = fd50e29f9fee659789ac2e1231d94a6032986b01642051aba357ccc24cf71e9f
 SIZE (Liberatys-tree-sitter-ruby-26086eeb072266abf51273af631a2cb62d0fd1e8_GH0.tar.gz) = 479324
 SHA256 (lapce-wasi-experimental-http-3685f0893ef19c1cca5b16a11ba01ff7ade14a5f_GH0.tar.gz) = 33b2dbfde47025b19ff765e9bf364b752cbef89948563195df0a47e7347e4757
@@ -1139,8 +1177,6 @@ SHA256 (VixieTSQ-tree-sitter-hcl-f4aa4553344e03e149ec459549a7f686d6846626_GH0.ta
 SIZE (VixieTSQ-tree-sitter-hcl-f4aa4553344e03e149ec459549a7f686d6846626_GH0.tar.gz) = 59766
 SHA256 (maxxnino-tree-sitter-zig-8d3224c3bd0890fe08358886ebf54fca2ed448a6_GH0.tar.gz) = 505a053d10c880f39b6a3b352b8e44a1ee7526f368ede18bb0d8ae5f88049de6
 SIZE (maxxnino-tree-sitter-zig-8d3224c3bd0890fe08358886ebf54fca2ed448a6_GH0.tar.gz) = 731793
-SHA256 (panekj-tree-sitter-yaml-faed130c65531addfa3edf855e1d417b96c7f163_GH0.tar.gz) = 880026231530981443226006c61508ff1669f9f6a98afc6f8280bad1ae0e2678
-SIZE (panekj-tree-sitter-yaml-faed130c65531addfa3edf855e1d417b96c7f163_GH0.tar.gz) = 268296
 SHA256 (tree-sitter-tree-sitter-haskell-972156b37ee6f4a8b51a6f67f76aecc6fa13714c_GH0.tar.gz) = 010cbb3e6b0911efbb0445cc5b6d06845b9250b0b3e805d7776c148199c55e24
 SIZE (tree-sitter-tree-sitter-haskell-972156b37ee6f4a8b51a6f67f76aecc6fa13714c_GH0.tar.gz) = 1201398
 SHA256 (lapce-piet-wgpu-f863b3e49175d1811e6008cea2ca1bd282fc5bed_GH0.tar.gz) = 4befd05436c95b5952bccef02df758f3ce67d031d47720a3691854ebd75e1fe9
@@ -1157,5 +1193,5 @@ SHA256 (lapce-structdesc-a6a2b8ab65d43475238f889736c4aa5dfff4500a_GH0.tar.gz) =
 SIZE (lapce-structdesc-a6a2b8ab65d43475238f889736c4aa5dfff4500a_GH0.tar.gz) = 1413
 SHA256 (tree-sitter-tree-sitter-java-72a9af08f4e501fad1252cc62f71469f247229f1_GH0.tar.gz) = db55413630f88cc716a587fd3784ca0295543431db9e73cca9c5cf2552070f4c
 SIZE (tree-sitter-tree-sitter-java-72a9af08f4e501fad1252cc62f71469f247229f1_GH0.tar.gz) = 167899
-SHA256 (lapce-lapce-g20220826-5abf778_GH0.tar.gz) = 1d7e75832b8aca8e6ddffa000d573c7278abba7d48da0bb8242a46203393de1e
-SIZE (lapce-lapce-g20220826-5abf778_GH0.tar.gz) = 1763072
+SHA256 (lapce-lapce-v0.2.0_GH0.tar.gz) = 163102244c6586530bc0f0736219d38a44797b2a6d97ad37d5f6553ffc8f1a04
+SIZE (lapce-lapce-v0.2.0_GH0.tar.gz) = 1852451
diff --git a/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_imports.rs b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_imports.rs
new file mode 100644
index 000000000000..d7617a0c1c14
--- /dev/null
+++ b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_imports.rs
@@ -0,0 +1,23 @@
+--- cargo-crates/interprocess-1.1.1/src/os/unix/imports.rs.orig	2022-09-05 13:24:51 UTC
++++ cargo-crates/interprocess-1.1.1/src/os/unix/imports.rs
+@@ -46,7 +46,7 @@ cfg_if! {
+             sockaddr_un,
+             msghdr, cmsghdr,
+         };
+-        #[cfg(not(any(target_os = "macos", target_os = "ios")))]
++        #[cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios")))]
+         pub(super) use libc::{
+             SIGPOLL,
+             SO_PASSCRED,
+@@ -56,9 +56,9 @@ cfg_if! {
+             ucred,
+         };
+ 
+-        #[cfg(any(target_os = "macos", target_os = "ios"))]
++        #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))]
+         pub(super) const SIGPOLL: i32 = 999;
+-        #[cfg(any(target_os = "macos", target_os = "ios"))]
++        #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))]
+         #[doc(hidden)]
+         pub struct ucred {}
+ 
diff --git a/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_local__socket.rs b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_local__socket.rs
new file mode 100644
index 000000000000..db929765af4d
--- /dev/null
+++ b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_local__socket.rs
@@ -0,0 +1,18 @@
+--- cargo-crates/interprocess-1.1.1/src/os/unix/local_socket.rs.orig	2022-09-05 13:24:51 UTC
++++ cargo-crates/interprocess-1.1.1/src/os/unix/local_socket.rs
+@@ -72,13 +72,13 @@ impl LocalSocketStream {
+     }
+     #[inline]
+     pub fn peer_pid(&self) -> io::Result<u32> {
+-        #[cfg(not(any(target_os = "macos", target_os = "ios")))]
++        #[cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios")))]
+         {
+             self.inner
+                 .get_peer_credentials()
+                 .map(|ucred| ucred.pid as u32)
+         }
+-        #[cfg(any(target_os = "macos", target_os = "ios"))]
++        #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))]
+         {
+             Err(io::Error::new(io::ErrorKind::Other, "not supported"))
+         }
diff --git a/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_signal.rs b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_signal.rs
new file mode 100644
index 000000000000..b47c99ed5012
--- /dev/null
+++ b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_signal.rs
@@ -0,0 +1,15 @@
+--- cargo-crates/interprocess-1.1.1/src/os/unix/signal.rs.orig	2022-09-05 13:24:51 UTC
++++ cargo-crates/interprocess-1.1.1/src/os/unix/signal.rs
+@@ -972,10 +972,10 @@ pub enum SignalType {
+     ///
+     /// *Default handler: process termination.*
+     // TODO more on this
+-    #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++    #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+     #[cfg_attr(
+         feature = "doc_cfg",
+-        doc(cfg(not(any(target_os = "macos", target_os = "ios",)),))
++        doc(cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))
+     )]
+     PollNotification = SIGPOLL,
+     /// `SIGBUS` — [bus error]. This signal is issued by the OS when a process does one of the following:
diff --git a/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_udsocket.rs b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_udsocket.rs
new file mode 100644
index 000000000000..32a505840ec2
--- /dev/null
+++ b/editors/lapce/files/patch-cargo-crates_interprocess-1.1.1_src_os_unix_udsocket.rs
@@ -0,0 +1,141 @@
+--- cargo-crates/interprocess-1.1.1/src/os/unix/udsocket.rs.orig	2022-09-05 13:24:51 UTC
++++ cargo-crates/interprocess-1.1.1/src/os/unix/udsocket.rs
+@@ -98,7 +98,7 @@ unsafe fn enable_passcred(socket: i32) -> bool {
+ #[inline]
+ #[allow(unused_variables)]
+ unsafe fn enable_passcred(socket: i32) -> bool {
+-    #[cfg(not(any(target_os = "macos", target_os = "ios")))]
++    #[cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios")))]
+     {
+         let passcred: c_int = 1;
+         libc::setsockopt(
+@@ -109,12 +109,12 @@ unsafe fn enable_passcred(socket: i32) -> bool {
+             mem::size_of_val(&passcred) as u32,
+         ) != -1
+     }
+-    #[cfg(any(target_os = "macos", target_os = "ios"))]
++    #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))]
+     {
+         true
+     } // Cannot have passcred on macOS and iOS.
+ }
+-#[cfg(not(any(target_os = "macos", target_os = "ios")))]
++#[cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios")))]
+ unsafe fn get_peer_ucred(socket: i32) -> Option<ucred> {
+     // SAFETY: it's safe for the ucred structure to be zero-initialized, since
+     // it only contains integers
+@@ -196,7 +196,7 @@ unsafe fn raw_get_nonblocking(socket: i32) -> Option<b
+ /// Sending and receiving ancillary data:
+ /// ```no_run
+ /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+-/// # #[cfg(all(unix, not(any(target_os = "macos", target_os = "ios"))))] {
++/// # #[cfg(all(unix, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))] {
+ /// use interprocess::{
+ ///     unnamed_pipe::{pipe, UnnamedPipeReader},
+ ///     os::unix::udsocket::{UdStreamListener, UdStream, AncillaryData, AncillaryDataBuf},
+@@ -360,7 +360,7 @@ impl UdStreamListener {
+     /// # Example
+     /// ```no_run
+     /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+-    /// # #[cfg(all(unix, not(any(target_os = "macos", target_os = "ios"))))] {
++    /// # #[cfg(all(unix, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))] {
+     /// use interprocess::os::unix::udsocket::UdStreamListener;
+     ///
+     /// let listener = UdStreamListener::bind("/tmp/example.sock")?;
+@@ -495,7 +495,7 @@ impl FromRawFd for UdStreamListener {
+ /// Receiving and sending ancillary data:
+ /// ```no_run
+ /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
+-/// # #[cfg(all(unix, not(any(target_os = "macos", target_os = "ios"))))] {
++/// # #[cfg(all(unix, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))] {
+ /// use interprocess::os::unix::udsocket::{UdStream, AncillaryData, AncillaryDataBuf};
+ /// use std::{
+ ///     io::{self, prelude::*},
+@@ -821,10 +821,10 @@ impl UdStream {
+     }
+ 
+     /// Fetches the credentials of the other end of the connection without using ancillary data. The returned structure contains the process identifier, user identifier and group identifier of the peer.
+-    #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios"))))]
++    #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))]
+     #[cfg_attr(
+         feature = "doc_cfg",
+-        doc(cfg(not(any(target_os = "macos", target_os = "ios"))))
++        doc(cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))
+     )]
+     pub fn get_peer_credentials(&self) -> io::Result<ucred> {
+         unsafe { get_peer_ucred(self.fd.0).ok_or_else(io::Error::last_os_error) }
+@@ -1349,10 +1349,10 @@ impl UdSocket {
+     }
+ 
+     /// Fetches the credentials of the other end of the connection without using ancillary data. The returned structure contains the process identifier, user identifier and group identifier of the peer.
+-    #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios"))))]
++    #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))]
+     #[cfg_attr(
+         feature = "doc_cfg",
+-        doc(cfg(not(any(target_os = "macos", target_os = "ios"))))
++        doc(cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))))
+     )]
+     pub fn get_peer_credentials(&self) -> io::Result<ucred> {
+         unsafe { get_peer_ucred(self.fd.0).ok_or_else(io::Error::last_os_error) }
+@@ -1999,10 +1999,10 @@ pub enum AncillaryData<'a> {
+     /// Credentials to be sent. The specified values are checked by the system when sent for all users except for the superuser — for senders, this means that the correct values need to be filled out, otherwise, an error is returned; for receivers, this means that the credentials are to be trusted for authentification purposes. For convenience, the [`credentials`] function provides a value which is known to be valid when sent.
+     ///
+     /// [`credentials`]: #method.credentials " "
+-    #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++    #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+     #[cfg_attr(
+         feature = "doc_cfg",
+-        doc(cfg(not(any(target_os = "macos", target_os = "ios",)),))
++        doc(cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))
+     )]
+     Credentials {
+         /// The process identificator (PID) for the process.
+@@ -2054,7 +2054,7 @@ impl<'a> AncillaryData<'a> {
+     pub fn clone_ref(&'a self) -> Self {
+         match *self {
+             Self::FileDescriptors(ref fds) => Self::FileDescriptors(Cow::Borrowed(&fds)),
+-            #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++            #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+             Self::Credentials { pid, uid, gid } => Self::Credentials { pid, uid, gid },
+         }
+     }
+@@ -2064,7 +2064,7 @@ impl<'a> AncillaryData<'a> {
+     pub fn encoded_size(&self) -> usize {
+         match self {
+             Self::FileDescriptors(fds) => Self::encoded_size_of_file_descriptors(fds.len()),
+-            #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++            #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+             Self::Credentials { .. } => Self::ENCODED_SIZE_OF_CREDENTIALS,
+         }
+     }
+@@ -2100,7 +2100,7 @@ impl<'a> AncillaryData<'a> {
+                         buffer.extend_from_slice(&desc_bytes);
+                     }
+                 }
+-                #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++                #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+                 AncillaryData::Credentials { pid, uid, gid } => {
+                     cmsg_type_bytes = SCM_RIGHTS.to_ne_bytes();
+                     cmsg_len += mem::size_of::<ucred>();
+@@ -2125,10 +2125,10 @@ impl AncillaryData<'static> {
+     /// Fetches the credentials of the process from the system and returns a value which can be safely sent to another process without the system complaining about an unauthorized attempt to impersonate another process/user/group.
+     ///
+     /// If you want to send credentials to another process, this is usually the function you need to obtain the desired ancillary payload.
+-    #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++    #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+     #[cfg_attr(
+         feature = "doc_cfg",
+-        doc(cfg(not(any(target_os = "macos", target_os = "ios",)),))
++        doc(cfg(not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))
+     )]
+     #[inline]
+     pub fn credentials() -> Self {
+@@ -2350,7 +2350,7 @@ impl<'a> Iterator for AncillaryDataDecoder<'a> {
+                 }
+                 Some(AncillaryData::FileDescriptors(Cow::Owned(descriptors)))
+             }
+-            #[cfg(any(doc, not(any(target_os = "macos", target_os = "ios",)),))]
++            #[cfg(any(doc, not(any(target_os = "freebsd", target_os = "macos", target_os = "ios",)),))]
+             SCM_CREDENTIALS => {
+                 // We're reading a single ucred structure from the ancillary data payload.
+                 // SAFETY: those are still ints
diff --git a/editors/lapce/files/patch-druid b/editors/lapce/files/patch-druid
index a01fabaa8837..677368895fbf 100644
--- a/editors/lapce/files/patch-druid
+++ b/editors/lapce/files/patch-druid
@@ -1,37 +1,91 @@
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/backend/shared/keyboard.rs.orig	2022-08-22 14:59:41.904511000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/backend/shared/keyboard.rs	2022-08-22 15:00:38.861126000 +0200
-@@ -20,7 +20,7 @@ use keyboard_types::{Code, Location};
- #[cfg(any(
-     all(
-         any(feature = "x11", feature = "wayland"),
--        any(target_os = "linux", target_os = "openbsd")
-+        any(target_os = "freebsd", target_os = "linux", target_os = "openbsd")
-     ),
-     target_os = "macos"
- ))]
-@@ -57,7 +57,7 @@ pub fn code_to_location(code: Code) -> Location {
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/examples/markdown_preview.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/examples/markdown_preview.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/examples/markdown_preview.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/examples/markdown_preview.rs	2022-09-05 12:03:16.089187000 +0100
+@@ -239,7 +239,7 @@
+     {
+         base = base.entry(druid::platform_menus::mac::application::default())
      }
- }
+-    #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
++    #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
+     {
+         base = base.entry(druid::platform_menus::win::file::default());
+     }
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/examples/multiwin.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/examples/multiwin.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/examples/multiwin.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/examples/multiwin.rs	2022-09-05 12:03:39.328247000 +0100
+@@ -200,7 +200,7 @@
+     {
+         base = druid::platform_menus::mac::menu_bar();
+     }
+-    #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
++    #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
+     {
+         base = base.entry(druid::platform_menus::win::file::default());
+     }
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/examples/textbox.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/examples/textbox.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/examples/textbox.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/examples/textbox.rs	2022-09-05 12:03:29.140275000 +0100
+@@ -98,7 +98,7 @@
+     {
+         base = base.entry(druid::platform_menus::mac::application::default())
+     }
+-    #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
++    #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
+     {
+         base = base.entry(druid::platform_menus::win::file::default());
+     }
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/src/menu/mod.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/src/menu/mod.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/src/menu/mod.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/src/menu/mod.rs	2022-09-05 12:03:02.905122000 +0100
+@@ -170,7 +170,7 @@
+         #[cfg(target_os = "macos")]
+         return Some(MenuManager::new(|_, _, _| sys::mac::application::default()));
  
--#[cfg(any(target_os = "linux", target_os = "openbsd"))]
-+#[cfg(any(target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
- /// Map hardware keycode to code.
- ///
- /// In theory, the hardware keycode is device dependent, but in
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/backend/shared/mod.rs.orig	2022-08-22 14:59:41.906063000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/backend/shared/mod.rs	2022-08-22 15:00:56.908906000 +0200
-@@ -15,7 +15,7 @@ cfg_if::cfg_if! {
- //! Logic that is shared by more than one backend.
+-        #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
++        #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
+         return None;
  
- cfg_if::cfg_if! {
--    if #[cfg(any(target_os = "macos", target_os = "linux", target_os = "openbsd"))] {
-+    if #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "linux", target_os = "openbsd"))] {
-         mod keyboard;
-         pub use keyboard::*;
-     }
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/backend/mod.rs.orig	2022-08-22 14:59:41.907594000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/backend/mod.rs	2022-08-22 15:01:57.581204000 +0200
-@@ -28,36 +28,36 @@ pub(crate) mod shared;
+         // we want to explicitly handle all platforms; log if a platform is missing.
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/src/widget/textbox.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/src/widget/textbox.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid/src/widget/textbox.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid/src/widget/textbox.rs	2022-09-05 12:02:53.957452000 +0100
+@@ -34,6 +34,7 @@
+ 
+ const CURSOR_BLINK_DURATION: Duration = Duration::from_millis(500);
+ const MAC_OR_LINUX_OR_OBSD: bool = cfg!(any(
++    target_os = "freebsd",
+     target_os = "macos",
+     target_os = "linux",
+     target_os = "openbsd"
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/Cargo.toml ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/Cargo.toml
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/Cargo.toml	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/Cargo.toml	2022-09-05 12:07:27.797905000 +0100
+@@ -101,7 +101,7 @@
+ bitflags = "1.2.1"
+ cgl = "0.3"
+ 
+-[target.'cfg(any(target_os="linux", target_os="openbsd"))'.dependencies]
++[target.'cfg(any(target_os ="freebsd", target_os="linux", target_os="openbsd"))'.dependencies]
+ gl_loader = "0.1.2"
+ ashpd = { version = "0.3.0", optional = true }
+ # TODO(x11/dependencies): only use feature "xcb" if using X11
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/build.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/build.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/build.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/build.rs	2022-09-05 12:02:40.562752000 +0100
+@@ -7,7 +7,8 @@
+     use std::env;
+     use std::path::PathBuf;
+ 
+-    if env::var("CARGO_CFG_TARGET_OS").unwrap() != "linux"
++    if env::var("CARGO_CFG_TARGET_OS").unwrap() != "freebsd"
++        && env::var("CARGO_CFG_TARGET_OS").unwrap() != "linux"
+         && env::var("CARGO_CFG_TARGET_OS").unwrap() != "openbsd"
+     {
+         return;
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/backend/mod.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/backend/mod.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/backend/mod.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/backend/mod.rs	2022-09-05 12:00:26.214282000 +0100
+@@ -28,36 +28,36 @@
  #[cfg(target_os = "macos")]
  pub(crate) mod shared;
  
@@ -77,9 +131,55 @@
  ))]
  pub(crate) mod shared;
  
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/dialog.rs.orig	2022-08-22 14:59:41.909107000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/dialog.rs	2022-08-22 15:02:20.045602000 +0200
-@@ -38,7 +38,7 @@ pub struct FileInfo {
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/backend/shared/keyboard.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/backend/shared/keyboard.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/backend/shared/keyboard.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/backend/shared/keyboard.rs	2022-09-05 11:59:19.998724000 +0100
+@@ -20,7 +20,7 @@
+ #[cfg(any(
+     all(
+         any(feature = "x11", feature = "wayland"),
+-        any(target_os = "linux", target_os = "openbsd")
++        any(target_os = "freebsd", target_os = "linux", target_os = "openbsd")
+     ),
+     target_os = "macos"
+ ))]
+@@ -57,7 +57,7 @@
+     }
+ }
+ 
+-#[cfg(any(target_os = "linux", target_os = "openbsd"))]
++#[cfg(any(target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
+ /// Map hardware keycode to code.
+ ///
+ /// In theory, the hardware keycode is device dependent, but in
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/backend/shared/mod.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/backend/shared/mod.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/backend/shared/mod.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/backend/shared/mod.rs	2022-09-05 12:00:02.809946000 +0100
+@@ -15,7 +15,7 @@
+ //! Logic that is shared by more than one backend.
+ 
+ cfg_if::cfg_if! {
+-    if #[cfg(any(target_os = "macos", target_os = "linux", target_os = "openbsd"))] {
++    if #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "linux", target_os = "openbsd"))] {
+         mod keyboard;
+         pub use keyboard::*;
+     }
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/clipboard.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/clipboard.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/clipboard.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/clipboard.rs	2022-09-05 12:01:09.188366000 +0100
+@@ -226,7 +226,7 @@
+     } else {
+         impl ClipboardFormat {
+             cfg_if::cfg_if! {
+-                if #[cfg(any(target_os = "linux", target_os = "openbsd"))] {
++                if #[cfg(any(target_os = "freebsd", target_os = "linux", target_os = "openbsd"))] {
+                     // trial and error; this is the most supported string type for gtk?
+                     pub const TEXT: &'static str = "UTF8_STRING";
+                 } else {
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/dialog.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/dialog.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/dialog.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/dialog.rs	2022-09-05 12:00:45.943691000 +0100
+@@ -38,7 +38,7 @@
  
  /// Type of file dialog.
  #[cfg(not(any(
@@ -88,8 +188,9 @@
      feature = "wayland"
  )))]
  #[derive(Clone, Copy, PartialEq)]
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/lib.rs.orig	2022-08-22 14:59:41.910601000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/lib.rs	2022-08-22 15:02:41.085484000 +0200
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/lib.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/lib.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/lib.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/lib.rs	2022-09-05 12:00:56.778285000 +0100
 @@ -38,7 +38,7 @@
  // Rename `gtk_rs` back to `gtk`.
  // This allows us to use `gtk` as the feature name.
@@ -99,19 +200,9 @@
  extern crate gtk_rs as gtk;
  
  // Reexport the version of `image` we are using.
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/clipboard.rs.orig	2022-08-22 14:59:41.912090000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/clipboard.rs	2022-08-22 15:00:06.556769000 +0200
-@@ -226,7 +226,7 @@ cfg_if::cfg_if! {
-     } else {
-         impl ClipboardFormat {
-             cfg_if::cfg_if! {
--                if #[cfg(any(target_os = "linux", target_os = "openbsd"))] {
-+                if #[cfg(any(target_os = "freebsd", target_os = "linux", target_os = "openbsd"))] {
-                     // trial and error; this is the most supported string type for gtk?
-                     pub const TEXT: &'static str = "UTF8_STRING";
-                 } else {
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/platform/mod.rs.orig	2022-08-22 14:59:41.913493000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/src/platform/mod.rs	2022-08-22 15:03:00.893578000 +0200
+diff -ruN ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/platform/mod.rs ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/platform/mod.rs
+--- ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4.orig/druid-shell/src/platform/mod.rs	2022-08-30 12:25:50.000000000 +0100
++++ ../druid-3e53ab2159b7154fea77731ff7633970a40cb7b4/druid-shell/src/platform/mod.rs	2022-09-05 12:01:26.654371000 +0100
 @@ -14,7 +14,7 @@
  
  //! Platorm specific extensions.
@@ -121,80 +212,3 @@
  pub mod linux;
  
  #[cfg(any(doc, target_os = "macos"))]
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/Cargo.toml.orig	2022-08-22 14:59:41.915001000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/Cargo.toml	2022-08-22 15:03:23.037710000 +0200
-@@ -101,7 +101,7 @@ cgl = "0.3"
- bitflags = "1.2.1"
- cgl = "0.3"
- 
--[target.'cfg(any(target_os="linux", target_os="openbsd"))'.dependencies]
-+[target.'cfg(any(target_os = "freebsd", target_os="linux", target_os="openbsd"))'.dependencies]
- gl_loader = "0.1.2"
- ashpd = { version = "0.3.0", optional = true }
- # TODO(x11/dependencies): only use feature "xcb" if using X11
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/build.rs.orig	2022-08-22 14:59:41.916305000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid-shell/build.rs	2022-08-22 15:04:05.021937000 +0200
-@@ -7,7 +7,8 @@ fn main() {
-     use std::env;
-     use std::path::PathBuf;
- 
--    if env::var("CARGO_CFG_TARGET_OS").unwrap() != "linux"
-+    if env::var("CARGO_CFG_TARGET_OS").unwrap() != "freebsd"
-+        && env::var("CARGO_CFG_TARGET_OS").unwrap() != "linux"
-         && env::var("CARGO_CFG_TARGET_OS").unwrap() != "openbsd"
-     {
-         return;
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/src/widget/textbox.rs.orig	2022-08-22 14:59:41.917875000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/src/widget/textbox.rs	2022-08-22 15:04:22.638401000 +0200
-@@ -34,6 +34,7 @@ const MAC_OR_LINUX_OR_OBSD: bool = cfg!(any(
- 
- const CURSOR_BLINK_DURATION: Duration = Duration::from_millis(500);
- const MAC_OR_LINUX_OR_OBSD: bool = cfg!(any(
-+    target_os = "freebsd",
-     target_os = "macos",
-     target_os = "linux",
-     target_os = "openbsd"
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/src/menu/mod.rs.orig	2022-08-22 14:59:41.919526000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/src/menu/mod.rs	2022-08-22 15:04:44.110525000 +0200
-@@ -170,7 +170,7 @@ impl<T: Data> MenuManager<T> {
-         #[cfg(target_os = "macos")]
-         return Some(MenuManager::new(|_, _, _| sys::mac::application::default()));
- 
--        #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
-+        #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
-         return None;
- 
-         // we want to explicitly handle all platforms; log if a platform is missing.
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/examples/markdown_preview.rs.orig	2022-08-22 14:59:41.920963000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/examples/markdown_preview.rs	2022-08-22 15:05:24.670324000 +0200
-@@ -239,7 +239,7 @@ fn make_menu<T: Data>(_window_id: Option<WindowId>, _a
-     {
-         base = base.entry(druid::platform_menus::mac::application::default())
-     }
--    #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
-+    #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
-     {
-         base = base.entry(druid::platform_menus::win::file::default());
-     }
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/examples/textbox.rs.orig	2022-08-22 14:59:41.922304000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/examples/textbox.rs	2022-08-22 15:05:03.838164000 +0200
-@@ -98,7 +98,7 @@ fn make_menu<T: Data>(_window: Option<WindowId>, _data
-     {
-         base = base.entry(druid::platform_menus::mac::application::default())
-     }
--    #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
-+    #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
-     {
-         base = base.entry(druid::platform_menus::win::file::default());
-     }
---- ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/examples/multiwin.rs.orig	2022-08-22 14:59:41.923677000 +0200
-+++ ../druid-85d503a79df7581d1a144f97ee1cc369788b55b8/druid/examples/multiwin.rs	2022-08-22 15:05:14.078523000 +0200
-@@ -200,7 +200,7 @@ fn make_menu(_: Option<WindowId>, state: &State, _: &E
-     {
-         base = druid::platform_menus::mac::menu_bar();
-     }
--    #[cfg(any(target_os = "windows", target_os = "linux", target_os = "openbsd"))]
-+    #[cfg(any(target_os = "windows", target_os = "freebsd", target_os = "linux", target_os = "openbsd"))]
-     {
-         base = base.entry(druid::platform_menus::win::file::default());
-     }
diff --git a/editors/lapce/files/patch-lapce-proxy_Cargo.toml b/editors/lapce/files/patch-lapce-proxy_Cargo.toml
index 3dcc6401ba53..65c4cf433fd5 100644
--- a/editors/lapce/files/patch-lapce-proxy_Cargo.toml
+++ b/editors/lapce/files/patch-lapce-proxy_Cargo.toml
@@ -1,6 +1,6 @@
---- lapce-proxy/Cargo.toml.orig	2022-08-23 19:54:34 UTC
+--- lapce-proxy/Cargo.toml.orig	2022-09-02 21:18:07 UTC
 +++ lapce-proxy/Cargo.toml
-@@ -37,7 +37,7 @@ toml_edit = { version = "0.14.4", features = ["easy"] 
+@@ -40,7 +40,7 @@ toml_edit = { version = "0.14.4", features = ["easy"] 
  serde_json = "1.0.59"
  anyhow = "1.0.32"
  toml_edit = { version = "0.14.4", features = ["easy"] }