whole_func_string: function(walk) {
      if (!walk.at('^ '))
        return false;
      // Find the end of the block, checking for adjacent blocks
      var startIdx = walk.position;
      var found = false;
      while (walk.hasCurrent() && !found) {
        walk.scrollToTerm().skipWhitespaces();
        if (!walk.at('^ '))
          found = true;
      }
      var g = this.stripSelector(new SubWalker(walk, startIdx, walk.position));
      this.emitSortableGroup(g);
      return true;
    }
func_code_string: function(walk) {
      if (!walk.at('^ '))
        return false;
      // Find the end of the block, checking for adjacent blocks
      var startIdx = walk.position;
      var found = false;
      while (walk.hasCurrent() && !found) {
        walk.scrollToTerm().skipWhitespaces();
        if (!walk.at('^ '))
          found = true;
      }
      var g = this.stripSelector(new SubWalker(walk, startIdx, walk.position));
      this.emitSortableGroup(g);
      return true;
    }
func_documentation_string: Sortable groups enable users to specify correct ordering for items.
  
  The exact sorting functionality (drag'n'drop, buttons, etc.) must be
  implemented with client-side scripts.
  
  Each item must start with marker `^ `.
  
  Example:
  
  ```
  ^ un
  ^ deux
  ^ trois
  ^ quatre
  ^ cinq
  ^ six
  ```