new file:   semantic-edit.el