[prev in list] [next in list] [prev in thread] [next in thread] 

List:       9fans
Subject:    Re: [9fans] Using the Acme Editor
From:       "Russ Cox" 
Date:       2008-08-19 17:58:50
Message-ID: 20080819175641.3B7301E8C54 () holo ! morphisms ! net
[Download RAW message or body]

> what is the Acme way of approaching it?

> 01. Toggle on/off line wrapping
> 02. Toggle on/off EOL character display

Write shorter lines.

> 03. Display line numbers

You can go to a specific line with :n and 
find out the current line with Edit =

> 04. Display ruler

If you really care, you can make a little file called ruler
that contains the text you want and then just open the
file in a window above the one you are editing.
But the Acme way is not to care what column you're on.
Just say no.

> 05. Rectangluar block selection

Someone posted a C program once that interpreted
the current selection as a rectangular block (starting
in the column where the selection began, ending
in the column where it ended, and spanning the lines
that it spans) and replaced each subline with a given
piece of text.  But again, just say no.

> 06. Search and replace with confirmation at each item

Put the cursor at the top of the file.
In the tag, type and select

	Edit .+#0/old/c/new/

and middle click it.  That will search for old, replace it
with new, and scroll the file to highlight and show the
replacement.  If you don't like that change, you middle
click Undo.  Either way, middle clicking the Edit command
will find and change the next occurrence.  So you can
just sit there middle clicking the Edit command until
you find one that you didn't mean to change, Undo,
and then go back to middle clicking Edit.  Selecting
the command in the tag keeps acme from moving the
mouse to the changed selection, so that it is easier 
to repeat the command.

> 07. Automatic insertion of spaces for tabs

Just say no.  If you are forced to use spaces,
acme -a makes them a bit more bearable
by filling in the previous line's indentation 
when you type Enter.

> 08. Syntax highlighting of code

Just say no.

> 09. Code folding

This is interesting but doesn't fit easily into the model.
I do wish there were a way to do this, and not just for
folding code.  But it would probably break the very deep
assumption in acme that window contents are ordinary
text streams.  Acme gets a lot of benefit from that one
decision, but this might be one of the drawbacks.

On the other hand, not having code folding means that
you have to write good code to begin with.  Code folding
might be the C++ equivalent of Emacs paren matching for Lisp:

        The various ML dialects share the same flaw in their
    syntax. They lack a simple property I call editor
    friendliness. An editor friendly language has the property
    that a simple calculation is all that is needed to locate the
    beginning of an expression when one is at the end of an
    expression.
        As you can guess, Lisp is a very editor friendly language.
    Because of this fact, an experienced Emacs user realizes
    nearly all of the benefits of structure based editing
    without suffering from its restrictions.
        --- John D. Ramsdell

        The various Lisp dialects share the same flaw in their
    syntax. They lack a simple property I call human
    friendliness. A human friendly language has the property
    that syntactic constructs are different enough from one
    another that a simple visual inspection is all that is
    needed to locate the beginning of an expression when one
    is at the end of an expression.
        As you can guess, Lisp is a very human unfriendly
    language. Because of this fact, an experienced Lisp user
    realizes that it is virtually impossible to write Lisp
    programs of any size without substantial mechanical
    assistance.
        --- Andrew Koenig

You're better off writing code that doesn't need folding
to be read.

> 10. Code clips/completion

Just say no.

> 11. Bookmarks

Make a file with things like

	/sys/src/cmd/acme/scrl.c
	/sys/src/cmd/acme/scrl.c:100
	/sys/src/cmd/acme/scrl.c:/^mousethread

and open it.

> 12. Display file diff with locked parallel windows

Personally, I'm happy with running diff -n and
right-clicking the headers to display a particular
section in context.  This is actually better than the
locked windows because at any point you can go
do something else and then come back to it.

> 13. Customize the contextual display of commands in the tag line

Just say no.

> 14. Customize the color scheme

Just say no.

> 15. Change fonts

As Erik pointed out, there is a Font command that applies
to the whole window.  Changing fonts inside the text 
would break the text model.

> 16. HTML tag matching

Easy external program.

> 17. Display (in status bar?) the Unicode ID of glyph at cursor

As Erik pointed out, you can always cut and paste a character
and feed it to the "unicode" program.  You don't even need
Erik's > command.  Just type the word unicode (or "unicode -n")
in a tag somewhere, highlight the letter you want,
and then 2-1 click unicode.

> 18. Display right-to-left text

This is essentially left as an exercise to the interested user.
There are a lot of difficult issues here, and none of the 
developers use right-to-left text.

> Also, regarding Acme's use as a file browser:
> 
> 19. Open new directories in the same window, 
> so that you don't get a desktop full of windows 
> as you drill down through a directory tree.

Easy external program, but why not just type
the whole path to the directory you want, perhaps
with help from ^F?

Russ


[prev in list] [next in list] [prev in thread] [next in thread] 



Configure |

About |
News |
Add a list |
Sponsored by KoreLogic

Read More