edwood

command module
v0.0.0-...-f91b2b3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2023 License: BSD-3-Clause, MIT Imports: 42 Imported by: 0

README

Go Report CardBuild Status

Overview

Go port of Rob Pike's Acme editor. Derived from ProjectSerenity but now increasingly divergent. ProjectSerenity was itself a transliteration of the original Acme and libframe C code from plan9port

Named edwood in celebration of the formative influence of Ed Wood on Plan9 and the truth of ed-iting.

Note that on unix systems, Edwood (as with Acme) requires by default some infrastructure from plan9port: in particular devdraw, 9pserve and fontsrv. (Note that many other utilities like win and 9pfuse that contribute to Edwood's utility are also found in plan9port.) So, you'll want to install plan9port first, unless you choose to use the more experimental pure-Go Edwood described below.

Edwood without plan9port

On Windows, plan9port is never used. On unix systems, plan9port is not used only when the duitdraw and mux9p tags are used:

go get -u -tags 'duitdraw mux9p' github.com/rjkroege/edwood

These tags replaces devdraw with duitdraw and 9pserve with mux9p. Note that there are several outstanding issues which makes Edwood more unstable and slower when not using plan9port.

Duitdraw can use TTF fonts or compressed Plan 9 bitmap fonts. If the font name is empty, the Go Font is used. Example usage:

edwood	# Use Go font at 10pt
edwood -f @12pt -F @12pt	# Go font at 12pt
edwood -f /usr/share/fonts/TTF/DejaVuSans.ttf@12pt -F /usr/share/fonts/TTF/DejaVuSansMono.ttf@12pt
edwood -f $PLAN9/font/lucsans/euro.8.font -F $PLAN9/font/lucm/unicode.9.font

Edwood on Plan 9

To build Edwood on Plan 9, use 9fans.net/go PR#28:

hget https://github.com/rjkroege/edwood/archive/master.tar.gz | tar xvz
cd edwood-master
go mod edit -replace '9fans.net/go=github.com/fhs/9fans-go@plan9-pr'
go build
./edwood

Contributions

Contributions are welcome. Just submit a pull request and we'll review the code before merging it in.

Discussion

Have thoughts? Questions? Want to talk about Edwood (or Acme and other related Plan9 things)? If so, I've now enabled Edwood GitHub Discussions.

Project Status

Edwood has reached the useful milestone (v0.1) and should serve as drop-in replacement for Plan9 Port Acme. (But probably with different bugs.) Please file issues if Acme client apps don't work with Edwood or if your favourite Acme feature doesn't work.

Roadmap

  • More idiomatic Go and tests.
  • Internal API modernization.
  • Revised text handling data structures.
  • More configurability: styles, keyboard shortcuts, autocomplete.
  • See the issues list for the details.
  • Improve the testing code coverage

Documentation

Overview

Go port of Rob Pike's Acme editor.

Tag related code.

Notes

Bugs

  • This is broken when the client is doing a sequential read using a very small buffer and we create/delete windows in-between the requests.

Directories

Path Synopsis
cmd
win
Package complete implements file name completion.
Package complete implements file name completion.
drawutil
Package drawutil contains draw related utility functions.
Package drawutil contains draw related utility functions.
Package dumpfile implements encoding and decoding of Edwood dump file.
Package dumpfile implements encoding and decoding of Edwood dump file.
Package edwoodtest contains utility functions that help with testing Edwood.
Package edwoodtest contains utility functions that help with testing Edwood.
Package undo provides methods for undoable/redoable text manipulation.
Package undo provides methods for undoable/redoable text manipulation.
Package frame supports frames of editable text.
Package frame supports frames of editable text.
Package ninep contains helper routines for implementing a 9P2000 protocol server.
Package ninep contains helper routines for implementing a 9P2000 protocol server.
Package regexp implements regular expression search.
Package regexp implements regular expression search.
Package runes implements functions for the manipulation of rune slices.
Package runes implements functions for the manipulation of rune slices.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL