The 'with' keyword would be used as a means of accessing a datum or atom's members without needing to reference the object for every time you'd like to access. 'with' creates a scope similar to 'using' in C++ where the object's procedures and variables can be referenced anywhere in that scope.
The object's members take precedence over globally-scoped identifiers of the same names.
Another feature of 'with' is to be able to check if an object is not null before executing the instructions inside of the scope. If null, the scope is skipped.
Example:
proc/test_proc()
var/mob/m = new()
with (m)
loc = locate(1,1,1)
name = "Simpleton"
desc = "He just might save the world someday."
Equivalent code without 'with':
proc/test_proc()
var/mob/m = new()
m.loc = locate(1,1,1)
m.name = "Simpleton"
m.desc = "He just might save the world someday."
The behavior of src should be changed to point to the object which is handled inside of the scope as well, for instances or examples where file() would be needed.
with (file("text1.txt"))
src << "More text."
I kind of which we had some means of defining more complex macros that can act as blocks.
Changing src has some side-effects though. Would be interesting to see how Lum approaches this.