user/settings/zed.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | {
config,
lib,
...
}:
{
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;
};
title_bar = {
show_branch_name = false;
show_user_picture = false;
show_user_menu = false;
show_sign_in = 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;
};
which_key = {
enabled = true;
};
command_aliases = {
"gk" = "git push";
"gj" = "git pull";
};
};
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";
};
}
{
context = "vim_operator == a || vim_operator == i || vim_operator == cs";
bindings = {
# mini.ai plugin behavior
q = "vim::MiniQuotes";
b = "vim::MiniBrackets";
};
}
];
};
programs.fish.interactiveShellInit = lib.mkOrder 900 ''
if set --query ZED_TERM
set --export EDITOR ${
if config.programs.zed-editor.package == null then "zed" else "zeditor"
} -w
set --export VISUAL $EDITOR
end
'';
}
|