-
Notifications
You must be signed in to change notification settings - Fork 38
Description
Hey, suppose I've got a data type with multiple constructors and would like to re-order them:
data JSValue = JSNumber Double
| JSString String
| JSNull
| JSObject [(String, JSValue)]
| JSArray [JSValue]
| JSIndexInto JSValue JSValue
| JSLetIn String JSValue JSValue
| JSIdentifier String
| JSLambda [String] JSValue
| JSApplication JSValue [JSValue]
For example, say I want to move JSIdentifier to the top. Normally I would use C-k to kill the line. However it seems the behavior of (shm/kill-line) is to kill all data constructors to the end of the type. Here that would include JSIdentifier, JSLambda, and JSApplication.
Another way to move the data constructor would be to select it, use kill-region, and yank. (Specifically: place your cursor immediately after the |, select, move down one line, kill region, place your cursor after the =, and then yank.) Following this procedure, killing the line works as expected, but upon yanking, the formatting is not correct:
data JSValue =JSIdentifier String
| JSNumber Double
| JSString String
| JSNull
| JSObject [(String, JSValue)]
| JSArray [JSValue]
| JSIndexInto JSValue JSValue
| JSLetIn String JSValue JSValue
| JSLambda [String] JSValue
| JSApplication JSValue [JSValue]
So, how should one actually re-order data constructors?