MCP edit* requests

A multi-line request for the client to invoke a local editor on the attached text, and later send the edited text to the server.

Keywords

type:

Optional. Suggested values include program, text, string, value and mail. The client may be able to use this information to provide a specialized editing mode.

name:

Optional. A human-readable descriptive name for what's being edited.

In existing Emacs clients, this is used for the buffer name. In tkmoo, name: is used as the window and icon title for the workspace editing the text.

upload:

Required. Specifies a line to prefix the edited text with before sending to the server. When the text is sent to the server, it is followed by a line of a single period.

Notes

Typically the upload: value will be a command that starts reading input from the player, like @paste or @qsend; the MOO will use $command_utils:read_lines() to consume the uploaded lines.

Proposal: Every known use of #$#edit requires "." as its final line sent back to the server. Worse, it's not defined that dot-quoting should be performed on the uploaded text, which $command_utils:read_lines() expects. We should either explicitly state these things, or we should use multi-line MCP requests to send the text back to the server.

Examples

A request to provide an editing session for a property:


  #$#edit* 12345678 type: text name: Dave.test upload: "@set-note-text #75.test"

  @@@This is a test.

  @@@

  #$#END

A request to provide an editing session for a verb:


  #$#edit* 12345678 type: program name: Dave:test upload: "@program #75:test none none none"

  @@@player:tell("This is a test.");

  #$#END