# mode_tree_start

- **Language:** C
- **Kind:** function
- **Source:** https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/mode-tree.c#L389
- **Page:** https://libtmux.org/en/tmux/3.2a/reference/c-function-mode_tree_start/

```c
struct mode_tree_data * mode_tree_start(struct window_pane *wp, struct args *args, mode_tree_build_cb buildcb, mode_tree_draw_cb drawcb, mode_tree_search_cb searchcb, mode_tree_menu_cb menucb, mode_tree_height_cb heightcb, mode_tree_key_cb keycb, void *modedata, const struct menu_item *menu, const char **sort_list, u_int sort_size, struct screen **s)
```

## Parameters

- `wp` (`struct window_pane *`)
- `args` (`struct args *`)
- `buildcb` (`mode_tree_build_cb`)
- `drawcb` (`mode_tree_draw_cb`)
- `searchcb` (`mode_tree_search_cb`)
- `menucb` (`mode_tree_menu_cb`)
- `heightcb` (`mode_tree_height_cb`)
- `keycb` (`mode_tree_key_cb`)
- `modedata` (`void *`)
- `menu` (`const struct menu_item *`)
- `sort_list` (`const char **`)
- `sort_size` (`u_int`)
- `s` (`struct screen **`)

## Called by

- [`window_buffer_init`](/en/tmux/3.2a/reference/c-function-window-buffer-c-window_buffer_init/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/window-buffer.c#L351)
- [`window_client_init`](/en/tmux/3.2a/reference/c-function-window-client-c-window_client_init/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/window-client.c#L311)
- [`window_customize_init`](/en/tmux/3.2a/reference/c-function-window-customize-c-window_customize_init/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/window-customize.c#L891)
- [`window_tree_init`](/en/tmux/3.2a/reference/c-function-window-tree-c-window_tree_init/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/window-tree.c#L934)

## Calls

- [`args_get`](/en/tmux/3.2a/reference/c-function-args_get/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/mode-tree.c#L412)
- [`args_has`](/en/tmux/3.2a/reference/c-function-args_has/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/mode-tree.c#L419)
- [`xcalloc`](/en/tmux/3.2a/reference/c-function-xcalloc/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/mode-tree.c#L400)
- [`xstrdup`](/en/tmux/3.2a/reference/c-function-xstrdup/) (function) [Call site](https://github.com/tmux/tmux/blob/3b929f332aafa7f1080eacc31feb11ffbb1d1841/mode-tree.c#L422)

## Other function references

- [`screen_init`](/en/tmux/3.2a/reference/c-function-screen_init/) (function)

## Referenced declarations

- [`args`](/en/tmux/3.2a/reference/c-struct-args/) (struct)
- [`window_pane.base`](/en/tmux/3.2a/reference/c-struct-window_pane-base/) (attribute)
- [`mode_tree_data.buildcb`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-buildcb/) (attribute)
- [`mode_tree_data.children`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-children/) (attribute)
- [`mode_tree_data.drawcb`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-drawcb/) (attribute)
- [`mode_tree_sort_criteria.field`](/en/tmux/3.2a/reference/c-struct-mode_tree_sort_criteria-field/) (attribute)
- [`mode_tree_data.filter`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-filter/) (attribute)
- [`mode_tree_data.heightcb`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-heightcb/) (attribute)
- [`mode_tree_data.keycb`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-keycb/) (attribute)
- [`mode_tree_data.menu`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-menu/) (attribute)
- [`menu_item`](/en/tmux/3.2a/reference/c-struct-menu_item/) (struct)
- [`mode_tree_data.menucb`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-menucb/) (attribute)
- [`MODE_CURSOR`](/en/tmux/3.2a/reference/c-define-tmux-h-mode_cursor/) (constant)
- [`mode_tree_build_cb`](/en/tmux/3.2a/reference/c-typedef-mode_tree_build_cb/) (typealias)
- [`mode_tree_data`](/en/tmux/3.2a/reference/c-struct-mode_tree_data/) (struct)
- [`mode_tree_draw_cb`](/en/tmux/3.2a/reference/c-typedef-mode_tree_draw_cb/) (typealias)
- [`mode_tree_height_cb`](/en/tmux/3.2a/reference/c-typedef-mode_tree_height_cb/) (typealias)
- [`mode_tree_key_cb`](/en/tmux/3.2a/reference/c-typedef-mode_tree_key_cb/) (typealias)
- [`mode_tree_menu_cb`](/en/tmux/3.2a/reference/c-typedef-mode_tree_menu_cb/) (typealias)
- [`mode_tree_search_cb`](/en/tmux/3.2a/reference/c-typedef-mode_tree_search_cb/) (typealias)
- [`mode_tree_data.modedata`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-modedata/) (attribute)
- [`mode_tree_data.preview`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-preview/) (attribute)
- [`mode_tree_data.references`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-references/) (attribute)
- [`mode_tree_sort_criteria.reversed`](/en/tmux/3.2a/reference/c-struct-mode_tree_sort_criteria-reversed/) (attribute)
- [`mode_tree_data.screen`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-screen/) (attribute)
- [`screen`](/en/tmux/3.2a/reference/c-struct-screen/) (struct)
- [`screen_size_x`](/en/tmux/3.2a/reference/c-define-tmux-h-screen_size_x/) (constant)
- [`screen_size_y`](/en/tmux/3.2a/reference/c-define-tmux-h-screen_size_y/) (constant)
- [`mode_tree_data.searchcb`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-searchcb/) (attribute)
- [`mode_tree_data.sort_crit`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-sort_crit/) (attribute)
- [`mode_tree_data.sort_list`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-sort_list/) (attribute)
- [`mode_tree_data.sort_size`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-sort_size/) (attribute)
- [`window_pane`](/en/tmux/3.2a/reference/c-struct-window_pane/) (struct)
- [`mode_tree_data.wp`](/en/tmux/3.2a/reference/c-struct-mode_tree_data-wp/) (attribute)
