/
CDC-1.2b/
CDC-1.2b/src/
parent $generic_editor
object $note_editor

var $root child_index 0
var $root owners [$note_editor]
var $root owned [$note_editor]
var $root fertile 0
var $has_commands commands [["save", 'save_cmd]]
var $has_commands shortcuts []
var $root inited 1
var $command_aliases command_aliases []
var $root manager $note_editor
var $root writable [$note_editor]
var $root readable ['parameters, 'methods, 'code]
var $root dbref 'note_editor
var $old_command_environment verb_cache #[]
var $old_command_environment command_cache [["save", 'save_cmd], ["@abort|abort", 'abort_cmd], ["quit|@quit", 'quit_cmd], ["list|nlist *", 'list_cmd], ["ins?ert *", 'insert_cmd], ["del?ete *", 'del_line_cmd], ["join *", 'join_cmd], ["enter", 'enter_cmd], ["help", 'help_screen]]
var $old_command_environment shortcuts_cache [["\"*", 'add_line_cmd, [1]], ["s/*/*", 'sub_cmd, ["", 1, 2]], ["fill * @*", 'fill_cmd, ["", 1, 2]], ["fill *", 'fill_cmd, ["", 1, ""]]]

method start_editing
    arg what;
    var obj, text;
    
    // called by $user_input.edit_cmd
    obj = (| sender().match_environment(what) |);
    if ((!obj) || (!(| obj.writeable_by(sender()) |))) {
        sender().tell(("I don't see a note around here called " + what) + " that you can edit.");
        return 0;
    }
    catch any {
        text = sender().run_with_users_perms(obj, 'text);
    } with handler {
        sender().tell(("You cannot edit " + what) + ".");
        sender().tell("Error: " + ((traceback()[1])[2]));
        return 0;
    }
    sender().tell(("Now editing " + what) + ".");
    
    // user doing editing, obj edited, text, current line number, changes made
    return #[['user, sender()], ['obj, obj], ['text, text], ['cur_line, 1], ['changed, 0]];
.

method help_msg
    var msg;
    
    msg = [];
    msg = msg + ["The note editor allows you to write on notes interactively."];
    msg = msg + ["It includes these commands it inherits from the generic editor:"];
    msg = msg + pass();
    msg = msg + [""];
    msg = msg + ["And adds the following:"];
    msg = msg + ["  save         store text to note"];
    msg = msg + [""];
    return msg;
.

method save_cmd
    arg editing, cmd;
    var error;
    
    .perms(sender(), 'parser);
    catch any {
        (editing['user]).run_with_users_perms(editing['obj], 'erase_cmd, "", "all", "", "");
        (editing['user]).run_with_users_perms(editing['obj], 'add_text, editing['text], $user);
        (editing['user]).tell("Done.");
    
        // clear modified flag
        editing = editing.replace('changed, 0);
    } with handler {
        (editing['user]).tell("An error occurred attempting to save.");
        (editing['user]).tell("The error was " + ((traceback()[1])[2]));
    }
    return editing;
.