all repos — nixfiles @ e4b550955c8afce7b4290bbbfc845a316c71f72a

System and user configuration, managed by nix and home-manager

user/settings/zed.nix (view raw)

{ ... }:
{
  programs.zed-editor = {
    enable = true;
    installRemoteServer = true;
    userSettings = {
      base_keymap = "Emacs";
      vim_mode = true;
      tab_size = 2;
      tab_bar = {
        show = true;
        show_nav_history_buttons = false;
        show_tab_bar_buttons = false;
      };
      toolbar = {
        breadcrumbs = false;
        quick_actions = false;
        selections_menu = false;
      };
      cursor_blink = false;
      current_line_highlight = "gutter";
      indent_guides.enabled = false;
      git = {
        git_gutter = "hide";
        inline_blame.enabled = false;
      };
      gutter = {
        runnables = false;
        breakpoints = false;
        folds = false;
      };
      pane_split_direction_vertical = "right";
      use_smartcase_search = true;
      seed_search_query_from_cursor = "always";
      inlay_hints = {
        enabled = true;
        show_type_hints = true;
        show_parameter_hints = false;
      };
      file_types = {
        "Shell Script" = [ "envrc" ];
      };
      project_panel = {
        entry_spacing = "standard";
        file_icons = false;
        folder_icons = false;
        indent_size = 16;
      };
      preview_tabs.enabled = false;
      collaboration_panel.button = false;
      vim = {
        toggle_relative_line_numbers = true;
      };
    };

    userKeymaps = [
      {
        context = "VimControl && !menu";
        bindings = {
          "alt-x" = "command_palette::Toggle";
          "," = null;
          ", f f" = "file_finder::Toggle";
          ", b b" = "file_finder::Toggle";
          ", f s" = "workspace::Save";
          ", p" = "projects::OpenRecent";
          ", r" = "editor::Rename";
          ", w d" = "editor::GoToDefinitionSplit";
          ", w g d" = "editor::GoToDefinitionSplit";
          ", w shift-d" = "editor::GoToTypeDefinitionSplit";
          ", w g shift-d" = "editor::GoToTypeDefinitionSplit";
          ", w space" = "editor::OpenExcerptsSplit";
          ", w g space" = "editor::OpenExcerptsSplit";
          ", b x" = "pane::CloseActiveItem";
          ", q" = "pane::CloseActiveItem";
        };
      }
      {
        context = "ProjectPanel || CollabPanel || OutlinePanel || ChatPanel || VimControl || EmptyPane || SharedScreen || MarkdownPreview || KeyContextView";
        bindings = {
          ", w" = null;
          ", w left" = "workspace::ActivatePaneLeft";
          ", w right" = "workspace::ActivatePaneRight";
          ", w up" = "workspace::ActivatePaneUp";
          ", w down" = "workspace::ActivatePaneDown";
          ", w h" = "workspace::ActivatePaneLeft";
          ", w l" = "workspace::ActivatePaneRight";
          ", w k" = "workspace::ActivatePaneUp";
          ", w j" = "workspace::ActivatePaneDown";
          ", w ctrl-h" = "workspace::ActivatePaneLeft";
          ", w ctrl-l" = "workspace::ActivatePaneRight";
          ", w ctrl-k" = "workspace::ActivatePaneUp";
          ", w ctrl-j" = "workspace::ActivatePaneDown";
          ", w shift-left" = "workspace::SwapPaneLeft";
          ", w shift-right" = "workspace::SwapPaneRight";
          ", w shift-up" = "workspace::SwapPaneUp";
          ", w shift-down" = "workspace::SwapPaneDown";
          ", w shift-h" = "workspace::SwapPaneLeft";
          ", w shift-l" = "workspace::SwapPaneRight";
          ", w shift-k" = "workspace::SwapPaneUp";
          ", w shift-j" = "workspace::SwapPaneDown";
          ", w 1" = [
            "workspace::ActivatePane"
            0
          ];
          ", w 2" = [
            "workspace::ActivatePane"
            1
          ];
          ", w 3" = [
            "workspace::ActivatePane"
            2
          ];
          ", w 4" = [
            "workspace::ActivatePane"
            3
          ];
          ", w 5" = [
            "workspace::ActivatePane"
            4
          ];
          ", w 6" = [
            "workspace::ActivatePane"
            5
          ];
          ", w 7" = [
            "workspace::ActivatePane"
            6
          ];
          ", w 8" = [
            "workspace::ActivatePane"
            7
          ];
          ", w 9" = [
            "workspace::ActivatePane"
            8
          ];
          ", w >" = "vim::ResizePaneRight";
          ", w <" = "vim::ResizePaneLeft";
          ", w -" = "vim::ResizePaneDown";
          ", w +" = "vim::ResizePaneUp";
          ", w _" = "vim::MaximizePane";
          ", w =" = "vim::ResetPaneSizes";
          ", w g t" = "pane::ActivateNextItem";
          ", w ctrl-g t" = "pane::ActivateNextItem";
          ", w g shift-t" = "pane::ActivatePreviousItem";
          ", w ctrl-g shift-t" = "pane::ActivatePreviousItem";
          ", w w" = "workspace::ActivateNextPane";
          ", w p" = "workspace::ActivatePreviousPane";
          ", w ctrl-p" = "workspace::ActivatePreviousPane";
          ", w shift-w" = "workspace::ActivatePreviousPane";
          ", w v" = "pane::SplitVertical";
          ", w ctrl-v" = "pane::SplitVertical";
          ", w s" = "pane::SplitHorizontal";
          ", w shift-s" = "pane::SplitHorizontal";
          ", w ctrl-s" = "pane::SplitHorizontal";
          ", w c" = "pane::CloseAllItems";
          ", w ctrl-c" = "pane::CloseAllItems";
          ", w q" = "pane::CloseAllItems";
          ", w ctrl-q" = "pane::CloseAllItems";
          ", w o" = "workspace::CloseInactiveTabsAndPanes";
          ", w ctrl-o" = "workspace::CloseInactiveTabsAndPanes";
          ", w n" = "workspace::NewFileSplitHorizontal";
          ", w ctrl-n" = "workspace::NewFileSplitHorizontal";
        };
      }
    ];
  };
}