<div dir="ltr">This patch was developed based on a request for functionality at:<br><a href="http://www.reddit.com/r/xmonad/comments/2pnjse/dynamic_workspaces_appending_new_workspace_from/">http://www.reddit.com/r/xmonad/comments/2pnjse/dynamic_workspaces_appending_new_workspace_from/</a><br>  <br>* Generalize new workspace addition functions to support arbitrary insertion.<br>  <br>  The current DynamicWorkspaces module only supports adding new workspaces<br>  at the start of the list of workspaces. This means when binding workspaces<br>  to keys based on the position in the list, key bindings can change <br>  as workspaces are added in removed in a far more destructive way than<br>  necessary. Instead, supporting appending and arbitrary insertion allows<br>  the user to determine where the new workspace should be added.<br>  <br>  This patch is a straight generalization of the addHiddenWorkspace' function.<br>  Rather than always using `(:)` to insert the new workspace into the list<br>  of workspaces, this patches causes it to use an arbitrary list insertion<br>  function instead. A few new functions are added to prevent breakage of<br>  external code while exported functions are left unchanged.<br>  <br>  List of new functions:<br>    appendWorkspace<br>    appendWorkspacePrompt<br>    addWorkspaceAt<br>    addHiddenWorkspaceAt<br>  <br>  Existing functions were modified to call their generalized brethren where possible<br>  without changing functionality. This patch should not change behavior for any<br>  existing users of this module.<br></div>