SYNOPSIS
        void ed()
        void ed(string file)
        void ed(string file, string func)

BESCHREIBUNG
        Der Aufruf von ed() ohne Argumente startet den Editor mit dem Namen
        der Fehlerdatei, die von master->valid_read(0, geteuid(this_player()),
        "ed_start", this_player()) bestimmt wird, gewoehnlich etwas wie
        ~/.err. Wenn dieses File leer ist, wird ed() sofort wieder beendet.

        Wird ed() mit einem Argument <file> aufgerufen, wird der Editor fuer
        dieses File geoeffnet. Wird zusaetzlich das optionale Argument <func>
        angegeben, wird diese Funktion nach dem Beenden des ed() aufgerufen.

        Der LPC-Editor ist fast ed(1)-kompatibel.

SIEHE AUCH
        enable_commands(E), query_editing(E), ed0(LPC)
