git: a4e552651ca5 - main - editors/ad: Adaptable text editor
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 06 Oct 2024 11:50:10 UTC
The branch main has been updated by fuz:
URL: https://cgit.FreeBSD.org/ports/commit/?id=a4e552651ca542b651d153c21a2e06801959cfe2
commit a4e552651ca542b651d153c21a2e06801959cfe2
Author: Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2024-10-04 14:00:32 +0000
Commit: Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2024-10-06 11:49:20 +0000
editors/ad: Adaptable text editor
ad (pronounced A.D.) is an attempt at combining a modal editing
interface of likes of vi and kakoune with the approach to extensibility
of Plan9's Acme. Inside of ad text is something you can execute as
well as edit.
It is primarily intended as playground for experimenting with
implementing various text editor features and currently is not at all
optimised or feature complete enough for use as your main text editor.
ad is aiming to be a hybrid of the pieces of various editors that I find
most useful:
- vim style modal editing to allow for convenient key bindings
- convenient text navigation and selection from vim/kakoune
- mini-buffer based user defined minor modes from emacs
- sam/acme style editing commands for larger editing actions
- acme style extension through exposing editor state and functionality
for external client programs.
- support for mouse based navigation and selection but not requiring
that as the main way of using the editor like in acme. That's fine
for desktop but most of the time I'm working with a laptop which
makes that far too clunky.
ad is not trying to replace vim (or kakoune, or emacs) in terms of being
a massively hackable editor. Rather it is trying to follow the
philosophy of acme in being an integrating development environment
(rather than integrated). By which I mean that the aim is to provide a
comfortable editing environment to work in that supports direct
interaction with external tools and programs from the outside rather
than pulling everything in.
WWW: https://crates.io/crates/ad-editor
---
editors/Makefile | 1 +
editors/ad/Makefile | 24 +++++
editors/ad/Makefile.crates | 87 ++++++++++++++++++
editors/ad/distinfo | 177 +++++++++++++++++++++++++++++++++++++
editors/ad/files/patch-src_util.rs | 20 +++++
editors/ad/pkg-descr | 30 +++++++
6 files changed, 339 insertions(+)
diff --git a/editors/Makefile b/editors/Makefile
index f4faa7a859a2..556ca00fa303 100644
--- a/editors/Makefile
+++ b/editors/Makefile
@@ -3,6 +3,7 @@
SUBDIR += 2bsd-vi
SUBDIR += abiword
SUBDIR += abiword-docs
+ SUBDIR += ad
SUBDIR += aee
SUBDIR += aewan
SUBDIR += amp
diff --git a/editors/ad/Makefile b/editors/ad/Makefile
new file mode 100644
index 000000000000..6d2804df5d0e
--- /dev/null
+++ b/editors/ad/Makefile
@@ -0,0 +1,24 @@
+PORTNAME= ad
+DISTVERSION= 0.1.2
+CATEGORIES= editors
+
+MAINTAINER= fuz@FreeBSD.org
+COMMENT= Adaptable text editor
+WWW= https://crates.io/crates/ad-editor
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= xclip:x11/xclip
+
+USES= cargo
+USE_GITHUB= yes
+GH_ACCOUNT= sminez
+
+PLIST_FILES= bin/ad \
+ share/man/man1/ad.1.gz
+
+post-install:
+ ${INSTALL_MAN} ${WRKSRC}/doc/man/ad.1 ${STAGEDIR}${PREFIX}/share/man/man1/
+
+.include <bsd.port.mk>
diff --git a/editors/ad/Makefile.crates b/editors/ad/Makefile.crates
new file mode 100644
index 000000000000..cecd24132350
--- /dev/null
+++ b/editors/ad/Makefile.crates
@@ -0,0 +1,87 @@
+CARGO_CRATES= aho-corasick-1.1.3 \
+ anes-0.1.6 \
+ anstyle-1.0.8 \
+ autocfg-1.3.0 \
+ bitflags-2.6.0 \
+ bumpalo-3.16.0 \
+ cast-0.3.0 \
+ cfg-if-1.0.0 \
+ ciborium-0.2.2 \
+ ciborium-io-0.2.2 \
+ ciborium-ll-0.2.2 \
+ clap-4.5.17 \
+ clap_builder-4.5.17 \
+ clap_lex-0.7.2 \
+ criterion-0.5.1 \
+ criterion-plot-0.5.0 \
+ crossbeam-deque-0.8.5 \
+ crossbeam-epoch-0.9.18 \
+ crossbeam-utils-0.8.20 \
+ crunchy-0.2.2 \
+ either-1.13.0 \
+ half-2.4.1 \
+ hermit-abi-0.4.0 \
+ is-terminal-0.4.13 \
+ itertools-0.10.5 \
+ itoa-1.0.11 \
+ js-sys-0.3.70 \
+ lazy_static-1.5.0 \
+ libc-0.2.158 \
+ log-0.4.22 \
+ memchr-2.7.4 \
+ nu-ansi-term-0.46.0 \
+ num-traits-0.2.19 \
+ once_cell-1.19.0 \
+ oorandom-11.1.4 \
+ overload-0.1.1 \
+ pin-project-lite-0.2.14 \
+ plotters-0.3.7 \
+ plotters-backend-0.3.7 \
+ plotters-svg-0.3.7 \
+ proc-macro2-1.0.86 \
+ quote-1.0.37 \
+ rayon-1.10.0 \
+ rayon-core-1.12.1 \
+ regex-1.10.6 \
+ regex-automata-0.4.7 \
+ regex-syntax-0.8.4 \
+ ryu-1.0.18 \
+ same-file-1.0.6 \
+ serde-1.0.210 \
+ serde_derive-1.0.210 \
+ serde_json-1.0.128 \
+ sharded-slab-0.1.7 \
+ simple_test_case-1.2.0 \
+ smallvec-1.13.2 \
+ syn-2.0.77 \
+ thread_local-1.1.8 \
+ tinytemplate-1.2.1 \
+ tracing-0.1.40 \
+ tracing-attributes-0.1.27 \
+ tracing-core-0.1.32 \
+ tracing-log-0.2.0 \
+ tracing-subscriber-0.3.18 \
+ unicode-ident-1.0.13 \
+ valuable-0.1.0 \
+ walkdir-2.5.0 \
+ wasm-bindgen-0.2.93 \
+ wasm-bindgen-backend-0.2.93 \
+ wasm-bindgen-macro-0.2.93 \
+ wasm-bindgen-macro-support-0.2.93 \
+ wasm-bindgen-shared-0.2.93 \
+ web-sys-0.3.70 \
+ winapi-0.3.9 \
+ winapi-i686-pc-windows-gnu-0.4.0 \
+ winapi-util-0.1.9 \
+ winapi-x86_64-pc-windows-gnu-0.4.0 \
+ windows-sys-0.52.0 \
+ windows-sys-0.59.0 \
+ windows-targets-0.52.6 \
+ windows_aarch64_gnullvm-0.52.6 \
+ windows_aarch64_msvc-0.52.6 \
+ windows_i686_gnu-0.52.6 \
+ windows_i686_gnullvm-0.52.6 \
+ windows_i686_msvc-0.52.6 \
+ windows_x86_64_gnu-0.52.6 \
+ windows_x86_64_gnullvm-0.52.6 \
+ windows_x86_64_msvc-0.52.6
diff --git a/editors/ad/distinfo b/editors/ad/distinfo
new file mode 100644
index 000000000000..a2bd489cdc8a
--- /dev/null
+++ b/editors/ad/distinfo
@@ -0,0 +1,177 @@
+TIMESTAMP = 1728049546
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstyle-1.0.8.crate) = 1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1
+SIZE (rust/crates/anstyle-1.0.8.crate) = 15771
+SHA256 (rust/crates/autocfg-1.3.0.crate) = 0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0
+SIZE (rust/crates/autocfg-1.3.0.crate) = 16524
+SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de
+SIZE (rust/crates/bitflags-2.6.0.crate) = 45357
+SHA256 (rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c
+SIZE (rust/crates/bumpalo-3.16.0.crate) = 85677
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/ciborium-0.2.2.crate) = 42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e
+SIZE (rust/crates/ciborium-0.2.2.crate) = 35611
+SHA256 (rust/crates/ciborium-io-0.2.2.crate) = 05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757
+SIZE (rust/crates/ciborium-io-0.2.2.crate) = 6697
+SHA256 (rust/crates/ciborium-ll-0.2.2.crate) = 57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9
+SIZE (rust/crates/ciborium-ll-0.2.2.crate) = 14695
+SHA256 (rust/crates/clap-4.5.17.crate) = 3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac
+SIZE (rust/crates/clap-4.5.17.crate) = 56802
+SHA256 (rust/crates/clap_builder-4.5.17.crate) = 8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73
+SIZE (rust/crates/clap_builder-4.5.17.crate) = 163559
+SHA256 (rust/crates/clap_lex-0.7.2.crate) = 1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97
+SIZE (rust/crates/clap_lex-0.7.2.crate) = 12805
+SHA256 (rust/crates/criterion-0.5.1.crate) = f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f
+SIZE (rust/crates/criterion-0.5.1.crate) = 110088
+SHA256 (rust/crates/criterion-plot-0.5.0.crate) = 6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1
+SIZE (rust/crates/criterion-plot-0.5.0.crate) = 22706
+SHA256 (rust/crates/crossbeam-deque-0.8.5.crate) = 613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d
+SIZE (rust/crates/crossbeam-deque-0.8.5.crate) = 21726
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.20.crate) = 22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80
+SIZE (rust/crates/crossbeam-utils-0.8.20.crate) = 42487
+SHA256 (rust/crates/crunchy-0.2.2.crate) = 7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7
+SIZE (rust/crates/crunchy-0.2.2.crate) = 2995
+SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0
+SIZE (rust/crates/either-1.13.0.crate) = 19169
+SHA256 (rust/crates/half-2.4.1.crate) = 6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888
+SIZE (rust/crates/half-2.4.1.crate) = 50892
+SHA256 (rust/crates/hermit-abi-0.4.0.crate) = fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc
+SIZE (rust/crates/hermit-abi-0.4.0.crate) = 16310
+SHA256 (rust/crates/is-terminal-0.4.13.crate) = 261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b
+SIZE (rust/crates/is-terminal-0.4.13.crate) = 7665
+SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
+SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b
+SIZE (rust/crates/itoa-1.0.11.crate) = 10563
+SHA256 (rust/crates/js-sys-0.3.70.crate) = 1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a
+SIZE (rust/crates/js-sys-0.3.70.crate) = 53863
+SHA256 (rust/crates/lazy_static-1.5.0.crate) = bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe
+SIZE (rust/crates/lazy_static-1.5.0.crate) = 14025
+SHA256 (rust/crates/libc-0.2.158.crate) = d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439
+SIZE (rust/crates/libc-0.2.158.crate) = 751340
+SHA256 (rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24
+SIZE (rust/crates/log-0.4.22.crate) = 44027
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
+SHA256 (rust/crates/nu-ansi-term-0.46.0.crate) = 77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84
+SIZE (rust/crates/nu-ansi-term-0.46.0.crate) = 24311
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
+SIZE (rust/crates/once_cell-1.19.0.crate) = 33046
+SHA256 (rust/crates/oorandom-11.1.4.crate) = b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9
+SIZE (rust/crates/oorandom-11.1.4.crate) = 10201
+SHA256 (rust/crates/overload-0.1.1.crate) = b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39
+SIZE (rust/crates/overload-0.1.1.crate) = 24439
+SHA256 (rust/crates/pin-project-lite-0.2.14.crate) = bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02
+SIZE (rust/crates/pin-project-lite-0.2.14.crate) = 28817
+SHA256 (rust/crates/plotters-0.3.7.crate) = 5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747
+SIZE (rust/crates/plotters-0.3.7.crate) = 149031
+SHA256 (rust/crates/plotters-backend-0.3.7.crate) = df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a
+SIZE (rust/crates/plotters-backend-0.3.7.crate) = 13709
+SHA256 (rust/crates/plotters-svg-0.3.7.crate) = 51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670
+SIZE (rust/crates/plotters-svg-0.3.7.crate) = 6715
+SHA256 (rust/crates/proc-macro2-1.0.86.crate) = 5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77
+SIZE (rust/crates/proc-macro2-1.0.86.crate) = 48958
+SHA256 (rust/crates/quote-1.0.37.crate) = b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af
+SIZE (rust/crates/quote-1.0.37.crate) = 28558
+SHA256 (rust/crates/rayon-1.10.0.crate) = b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa
+SIZE (rust/crates/rayon-1.10.0.crate) = 180155
+SHA256 (rust/crates/rayon-core-1.12.1.crate) = 1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2
+SIZE (rust/crates/rayon-core-1.12.1.crate) = 70701
+SHA256 (rust/crates/regex-1.10.6.crate) = 4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619
+SIZE (rust/crates/regex-1.10.6.crate) = 253894
+SHA256 (rust/crates/regex-automata-0.4.7.crate) = 38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df
+SIZE (rust/crates/regex-automata-0.4.7.crate) = 617582
+SHA256 (rust/crates/regex-syntax-0.8.4.crate) = 7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b
+SIZE (rust/crates/regex-syntax-0.8.4.crate) = 347577
+SHA256 (rust/crates/ryu-1.0.18.crate) = f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f
+SIZE (rust/crates/ryu-1.0.18.crate) = 47713
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/serde-1.0.210.crate) = c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a
+SIZE (rust/crates/serde-1.0.210.crate) = 78338
+SHA256 (rust/crates/serde_derive-1.0.210.crate) = 243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f
+SIZE (rust/crates/serde_derive-1.0.210.crate) = 56020
+SHA256 (rust/crates/serde_json-1.0.128.crate) = 6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8
+SIZE (rust/crates/serde_json-1.0.128.crate) = 149520
+SHA256 (rust/crates/sharded-slab-0.1.7.crate) = f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6
+SIZE (rust/crates/sharded-slab-0.1.7.crate) = 58227
+SHA256 (rust/crates/simple_test_case-1.2.0.crate) = 5d0649fa40b80dcacda1cabd018fd47b6b0c7fbbda6e1c3f658a6c4d5926500a
+SIZE (rust/crates/simple_test_case-1.2.0.crate) = 9956
+SHA256 (rust/crates/smallvec-1.13.2.crate) = 3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67
+SIZE (rust/crates/smallvec-1.13.2.crate) = 35216
+SHA256 (rust/crates/syn-2.0.77.crate) = 9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed
+SIZE (rust/crates/syn-2.0.77.crate) = 268784
+SHA256 (rust/crates/thread_local-1.1.8.crate) = 8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c
+SIZE (rust/crates/thread_local-1.1.8.crate) = 13962
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/tracing-0.1.40.crate) = c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef
+SIZE (rust/crates/tracing-0.1.40.crate) = 79459
+SHA256 (rust/crates/tracing-attributes-0.1.27.crate) = 34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7
+SIZE (rust/crates/tracing-attributes-0.1.27.crate) = 32241
+SHA256 (rust/crates/tracing-core-0.1.32.crate) = c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54
+SIZE (rust/crates/tracing-core-0.1.32.crate) = 61221
+SHA256 (rust/crates/tracing-log-0.2.0.crate) = ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3
+SIZE (rust/crates/tracing-log-0.2.0.crate) = 17561
+SHA256 (rust/crates/tracing-subscriber-0.3.18.crate) = ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b
+SIZE (rust/crates/tracing-subscriber-0.3.18.crate) = 196312
+SHA256 (rust/crates/unicode-ident-1.0.13.crate) = e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe
+SIZE (rust/crates/unicode-ident-1.0.13.crate) = 43279
+SHA256 (rust/crates/valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d
+SIZE (rust/crates/valuable-0.1.0.crate) = 27718
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasm-bindgen-0.2.93.crate) = a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5
+SIZE (rust/crates/wasm-bindgen-0.2.93.crate) = 43769
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.93.crate) = 9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b
+SIZE (rust/crates/wasm-bindgen-backend-0.2.93.crate) = 30344
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.93.crate) = 585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf
+SIZE (rust/crates/wasm-bindgen-macro-0.2.93.crate) = 6822
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.93.crate) = afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.93.crate) = 20642
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.93.crate) = c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484
+SIZE (rust/crates/wasm-bindgen-shared-0.2.93.crate) = 7527
+SHA256 (rust/crates/web-sys-0.3.70.crate) = 26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0
+SIZE (rust/crates/web-sys-0.3.70.crate) = 615438
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.9.crate) = cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb
+SIZE (rust/crates/winapi-util-0.1.9.crate) = 12464
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (sminez-ad-0.1.2_GH0.tar.gz) = 859b45bcde3fe4b4aeb93bd8a9a059963552763082b72d0f37ded808e693c782
+SIZE (sminez-ad-0.1.2_GH0.tar.gz) = 476497
diff --git a/editors/ad/files/patch-src_util.rs b/editors/ad/files/patch-src_util.rs
new file mode 100644
index 000000000000..6cb43d5d1a5b
--- /dev/null
+++ b/editors/ad/files/patch-src_util.rs
@@ -0,0 +1,20 @@
+--- src/util.rs.orig 2024-10-04 13:50:39 UTC
++++ src/util.rs
+@@ -12,7 +12,7 @@ use std::{
+ thread::spawn,
+ };
+
+-#[cfg(target_os = "linux")]
++#[cfg(any(target_os = "linux", target_os = "freebsd"))]
+ /// Set the current system clipboard state using xclip.
+ pub fn set_clipboard(s: &str) -> io::Result<()> {
+ let mut child = Command::new("xclip")
+@@ -23,7 +23,7 @@ pub fn set_clipboard(s: &str) -> io::Result<()> {
+ child.stdin.take().unwrap().write_all(s.as_bytes())
+ }
+
+-#[cfg(target_os = "linux")]
++#[cfg(any(target_os = "linux", target_os = "freebsd"))]
+ /// Read the current system clipboard state using xclip.
+ pub fn read_clipboard() -> io::Result<String> {
+ let output = Command::new("xclip")
diff --git a/editors/ad/pkg-descr b/editors/ad/pkg-descr
new file mode 100644
index 000000000000..a01ac1c64815
--- /dev/null
+++ b/editors/ad/pkg-descr
@@ -0,0 +1,30 @@
+ad (pronounced A.D.) is an attempt at combining a modal editing
+interface of likes of vi and kakoune with the approach to extensibility
+of Plan9's Acme. Inside of ad text is something you can execute as
+well as edit.
+
+It is primarily intended as playground for experimenting with
+implementing various text editor features and currently is not at all
+optimised or feature complete enough for use as your main text editor.
+
+ad is aiming to be a hybrid of the pieces of various editors that I find
+most useful:
+
+ - vim style modal editing to allow for convenient key bindings
+ - convenient text navigation and selection from vim/kakoune
+ - mini-buffer based user defined minor modes from emacs
+ - sam/acme style editing commands for larger editing actions
+ - acme style extension through exposing editor state and functionality
+ for external client programs.
+ - support for mouse based navigation and selection but not requiring
+ that as the main way of using the editor like in acme. That's fine
+ for desktop but most of the time I'm working with a laptop which
+ makes that far too clunky.
+
+ad is not trying to replace vim (or kakoune, or emacs) in terms of being
+a massively hackable editor. Rather it is trying to follow the
+philosophy of acme in being an integrating development environment
+(rather than integrated). By which I mean that the aim is to provide a
+comfortable editing environment to work in that supports direct
+interaction with external tools and programs from the outside rather
+than pulling everything in.