diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed0f2dc --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# acme9k + +This is a fork of the `acme` text editor from the `plan9port` distribution. It combines the customizability of [lumar](https://github.com/lumar)/[sminez](https://github.com/sminez/plan9port)'s forks and [acme2k](https://github.com/karahobny/acme2k) with upstream fixes from [9fans](https://github.com/9fans/plan9port) and some custom work. + +See the `config.def.h` for out of the box customizations that can be done. + +[![screenshot](./scrot.png)](./scrot.png) + +## usage + +Keybindings are as follows: + +- Ctrl + - c: copy + - x: cut + - v: paste + - z: undo + - y: redo + - s: save + - e: move to end of line + - a: move to begining of line + - f: filename completion + - u: kill line + - w: kill word (backwords) +- Up/Down: move cursor +- PgUp/PgDown: the obvious +- Esc: cut if there is a selection, otherwise hilight the most recently edited text + +Users unfamiliar with acme in general should check the following resources: + +- [Acme: A User Interface for Programmers](http://doc.cat-v.org/plan_9/4th_edition/papers/acme/) - the definitive guide from Rob Pike +- [A Tour of Acme](https://research.swtch.com/acme) - Russ Cox giving a tour of acme on plan9port (video) +- [acme(1)](http://man.cat-v.org/plan_9/1/acme) - manual page + +## build + +- Clone this repository +- From the repo root, if desired, copy `config.def.h` to `config.h` and make your modifications +- Run `./build.sh` from the repo root. + +## install + +After building, run `./install.sh`; If run as a regular user, it will install to `~/bin/9`; if run as root, it will overwrite the systemwide `acme` in `$PLAN9/bin` + +## TODO + +* [ ] add an indicator of the active window when click to focus (`bartflag`) is enabled + +## thanks + +* [rob pike](https://github.com/robpike) author of the original acme for plan9 +* [russ cox](https://research.swtch.com) and the rest of the [9fans](https://github.com/9fans) for plan9port +* [lumar](https://github.com/lumar) - looks like they deleted their github repos but I originally pulled my keybinds from there +* [sminez](https://github.com/sminez) - possibly the original source of lumar's keybindings +* [karahobny](https://github.com/karahobny) - creator of acme2k, a big inspiration for this project +* [aksr](https://github.com/aksr) - source of the missing tag border pixel fix diff --git a/acme.c b/acme.c index e6bf45d..5b50af6 100644 --- a/acme.c +++ b/acme.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "dat.h" #include "fns.h" /* for generating syms in mkfile only: */ @@ -42,6 +43,8 @@ Rune snarfrune[NSnarf + 1]; char* fontnames[2] = {PRIMARY_FONT, SECONDARY_FONT}; +char version[] = "acme9k v9001-a01"; + Command* command; void shutdownthread(void*); @@ -117,6 +120,10 @@ void threadmain(int argc, char* argv[]) { if (winsize == nil) goto Usage; break; + case 'v': + fprintf(stdout, "%s\n", version); + exit(0); + break; default: Usage: fprint( @@ -983,7 +990,7 @@ void iconinit(void) { Image* tmp; if (tagcols[BACK] == nil) { - /* Black */ + /* TAG */ tagcols[BACK] = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, COLOR_TAG_BG); tagcols[HIGH] = @@ -995,7 +1002,7 @@ void iconinit(void) { tagcols[HTEXT] = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, COLOR_TAG_HT); - /* Blue */ + /* BODY */ textcols[BACK] = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, COLOR_BODY_BG); textcols[HIGH] = diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..0c315e0 --- /dev/null +++ b/install.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +if [ -z "$PLAN9" ]; then + echo "PLAN9 not set;" + echo "Please set it to the location of your plan9port installation." + exit 1 +fi + +if [ $(whoami) != "root" ]; then + mkdir -p ~/bin/9 + cp acme ~/bin/9/acme + echo "acme has been installed to '${HOME}/bin/9/'" +else + cp acme ${PLAN9}/bin/acme + echo "acme has been installed to '${PLAN9}/bin/'" +fi \ No newline at end of file diff --git a/scrot.png b/scrot.png new file mode 100644 index 0000000..0e079c7 Binary files /dev/null and b/scrot.png differ