This is a short description of my Acme setup, mostly so that I don’t forget the details.
editinacme as my $EDITOR, patched to allow editing of nonexistent filesWatch installed with go install github.com/9fans/go/acme/Watch@latestacme-lspacme-supportAnd Acme from plan9port.
I use gopls as the language server for Go development, clangd for C/C++, and rls for Rust.
I mostly use Acme with an Evoluent VerticalMouse 4, because that makes things like the 2-1 chord easier to perform and a vertical mouse is easier on the wrist than a regular flat mouse.
If I’m not at my desk, using Acme with just the touchpad and Ctrl/Alt (on Linux) or Command/Option (on MacOS) works nicely as well.
This is the script I use to start Acme:
 1#!/usr/bin/env -S 9 rc -x
 2
 3# Starts all the stuff required for Acme to work nicely
 4
 59 plumber
 6
 7if (~ `{pgrep fontsrv} '') {
 8	9 fontsrv &
 9}
10
11if (~ $fontsz '') {
12	fontsz=10
13}
14
15monospace=DejaVuSansMono
16proportional=DejaVuSans
17
18# monospace=GoMono
19# proportional=GoRegular
20
21# monospace=NotoMono
22# proportional=NotoSans-Regular
23
24# monospace=GoMono
25# proportional=InputSerif-Regular
26
27# monospace=UbuntuMono-Regular
28# proportional=Ubuntu
29
30# acmebin=$home^/go/bin/acme
31acmebin=$home^/plan9port/bin/acme
32
33touch $home^/acme.dump
34
35$acmebin -a \
36	-l $home^/acme.dump \
37	-F '/mnt/font/'^$monospace^'/'^$fontsz^'a/font' \
38	-f '/mnt/font/'^$proportional^'/'^$fontsz^'a/font' &
39
40sleep 1
41acmefocused &
42acme-lsp &
43Adefaults &
44
Adefaults is the following script. It adds default options to the tag line of various Acme windows, depending on the file
name:
 1#!/bin/bash
 2
 39p read acme/log | while read line; do
 4	winid=$(echo "$line" | cut -d' ' -f1)
 5	action=$(echo "$line" | cut -d' ' -f2)
 6	fname=$(echo "$line" | cut -d' ' -f3-)
 7
 8	if [[ "$action" != "new" ]]; then
 9		continue
10	fi
11
12	if [[ -d "$fname" ]]; then
13		(
14			if [[ -e "$fname"/go.mod ]]; then
15				printf "Lws+ "
16			fi
17		) | 9p write acme/$winid/tag
18	else
19		# Regular file
20		(
21			case "$fname" in
22				*.beancount)
23					printf '[fava $%%] :$ '
24					;;
25				*.md|*/guide)
26					printf "|fmt |Check"
27					;;
28				*.go|*.cpp|*.h|*.rs|*.ml|*.mli)
29					printf "Lfmt Ldef Lrefs Lhov "
30					;;
31				*.py)
32					printf "[Edit ,x/	/c/    /] "
33					;;
34				*/COMMIT_EDITMSG|*.jjdescription)
35					printf "|fmt "
36					;;
37				/tmp/neomutt-*)
38					printf "|par "
39					;;
40			esac
41		) | 9p write acme/$winid/tag
42	fi
43done