// Zed keymap
//
// For information on binding keys, see the Zed
// documentation: https://zed.dev/docs/key-bindings
//
// To see the default key bindings run `zed: open default keymap`
// from the command palette.
[
  {
    "context": "",
    "bindings": {
      "ctrl-q": null, // "zed::Quit"
      "alt-pageup": "workspace::ActivatePaneLeft",
      "alt-pagedown": "workspace::ActivatePaneRight"
    }
  },
  {
    "context": "Workspace",
    "bindings": {
      // "escape": "project_panel::ToggleFocus"
      "ctrl-j": null, // "workspace::ToggleBottomDock"
      "ctrl-a": "workspace::ToggleBottomDock"
    }
  },
  {
    "context": "Pane",
    "bindings": {
      // "ctrl-tab": "pane::ActivateNextItem"
      // "ctrl-shift-tab": "pane::ActivatePrevItem",
      // "ctrl-pageup": "pane::ActivatePrevItem", // default
      // "ctrl-pagedown": "pane::ActivateNextItem" // default
      // "ctrl-shift-pageup": "pane::SwapItemLeft", // default
      // "ctrl-shift-pagedown": "pane::SwapItemRight" // default
      "ctrl-,": "zed::OpenSettings"
      // "ctrl-;": "zed::OpenKeymap" //doesn't work
    }
  },
  {
    "context": "ProjectPanel && !editing",
    "bindings": {
      "enter": "project_panel::Open",
      "escape": "project_panel::ToggleFocus",
      "ctrl-e": "project_panel::ToggleFocus",
      "ctrl-d": "project_panel::Duplicate",
      "ctrl-p": "file_finder::Toggle"
    }
  },
  {
    "context": "Workspace",
    "bindings": {
      "ctrl-e": "project_panel::ToggleFocus"
    }
  },
  // {
  //   // TODO
  //   "context": "Editor && multibuffer",
  //   "bindings": {
  //     // "ctrl-k ctrl-1": ["editor::FoldAtLevel", 0],
  //     "ctrl-k ctrl-1": "editor::FoldAll",
  //     "ctrl-k ctrl-0": "editor::UnfoldAll"
  //   }
  // },
  {
    "context": "Editor && mode == full",
    "bindings": {
      "alt-f3": "editor::SelectAllMatches", // Select all occurrences of current word
      "alt-d": ["editor::SelectNext", { "replace_newest": false }],
      "ctrl-d": "editor::DuplicateLineDown",
      "ctrl-shift-d": "editor::DeleteLine",
      "ctrl-j": "editor::JoinLines",
      "ctrl-shift-j": null, // "editor::JoinLines"
      "ctrl-oslash": "editor::Fold", // ctrl-ΓΈ
      "ctrl-l": "editor::UnfoldLines",

      "f5": "editor::SortLinesCaseSensitive",

      "ctrl-shift-e": null, // "project_panel::RevealInFileManager"
      "ctrl-e": "project_panel::RevealInFileManager",

      "ctrl-shift-l": "language_selector::Toggle",

      // "alt-enter": "editor::OpenUrl",
      // "ctrl-shift-enter": "editor::FindAllReferences",
      "ctrl-enter": "editor::GoToDefinition", // TODO: open-url, and somehow disable FindAllReferences fallback behavior here
      // "ctrl-enter": ["editor::GoToDefinition", "editor::OpenUrl"],

      // i'm confused
      "ctrl-shift-c": "editor::Copy",
      "ctrl-shift-v": "editor::Paste",

      "ctrl-k ctrl-u": "editor::ConvertToUpperCase",
      "ctrl-k ctrl-l": "editor::ConvertToLowerCase",

      // "ctrl-k ctrl-1": ["editor::FoldAtLevel", 0],
      "ctrl-k ctrl-0": "editor::UnfoldAll",

      "ctrl-'": ["editor::ToggleComments", { "advance_downwards": false }],

      "ctrl-r": "editor::ToggleLineNumbers"
    }
  },
  // ====================
  // search behaviour
  // ====================
  {
    "context": "Editor && mode == full",
    "bindings": {
      // defaults are with '"replace_enabled": false'
      // "ctrl-f": ["buffer_search::Deploy", { "replace_enabled": true }]
      // "ctrl-shift-f": ["pane::DeploySearch", { "replace_enabled": true }]
    }
  },
  // ====================
  {
    "context": "Terminal",
    "bindings": {
      "ctrl-n": ["terminal::SendKeystroke", "ctrl-n"]
    }
  }
]