add zed stuff

This commit is contained in:
Christoph J. Scherr 2025-01-09 04:46:45 +01:00
parent 581995fd68
commit 1c6d2f5848
3 changed files with 245 additions and 0 deletions

119
.config/zed/keymap.json Normal file
View File

@ -0,0 +1,119 @@
// 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": "Workspace",
"bindings": {
"f5": "workspace::ToggleLeftDock",
"alt-v": "terminal_panel::ToggleFocus",
}
},
{
"context": "Picker",
"bindings": {
"shift-tab": "menu::SelectPrev",
"tab": "menu::SelectNext"
}
},
{
"context": "BufferSearchBar && !in_replace > Editor",
"bindings": {
"shift-tab": "menu::SelectPrev",
"tab": "menu::SelectNext"
}
},
{
"context": "Terminal",
"bindings": {
"alt-v": "workspace::ToggleBottomDock",
"ctrl-w": "terminal::ToggleViMode"
}
},
{
"context": "Terminal && VimControl",
"bindings": {
"tab": "pane::ActivateNextItem",
"shift-tab": "pane::ActivatePrevItem",
}
},
{
"context": "Editor",
"bindings": {
"; f s": "outline::Toggle",
"; f w": "workspace::NewSearch",
"; f t": "theme_selector::Toggle",
}
},
{
"context": "VimControl && !menu",
"bindings": {
"ctrl-h": [
"workspace::ActivatePaneInDirection",
"Left"
],
"ctrl-l": [
"workspace::ActivatePaneInDirection",
"Right"
],
"ctrl-k": [
"workspace::ActivatePaneInDirection",
"Up"
],
"ctrl-j": [
"workspace::ActivatePaneInDirection",
"Down"
],
"L": "vim::EndOfLine",
"H": "vim::StartOfLine",
"left": "editor::TabPrev",
"right": "editor::Indent",
"space v": "editor::ToggleComments",
"alt-c": "pane::CloseActiveItem",
"alt-j": "vim::ScrollDown",
"alt-k": "vim::ScrollUp",
"up": "editor::MoveLineUp",
"down": "editor::MoveLineDown",
"space c a": "editor::ToggleCodeActions",
"space y": "editor::Copy",
"space p": "editor::Paste",
"tab": "pane::ActivateNextItem",
"shift-tab": "pane::ActivatePrevItem",
"space \"": "pane::SplitVertical",
"space %": "pane::SplitHorizontal",
"space c r": "editor::Rename",
}
},
{
"context": "vim_mode == normal",
"bindings": {
"space g g": [
"task::Spawn",
{
"task_name": "lazygit",
"reveal_target": "center"
}
]
}
},
{
"context": "vim_mode == insert",
"bindings": {
"ctrl-l": "vim::Right",
"ctrl-h": "vim::Left",
"ctrl-j": "vim::Down",
"ctrl-k": "vim::Up",
}
},
{
"context": "Editor && (showing_code_actions || showing_completions)",
"bindings": {
"shift-tab": "editor::ContextMenuPrev",
"tab": "editor::ContextMenuNext",
}
},
]

60
.config/zed/settings.json Normal file
View File

@ -0,0 +1,60 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"features": {
"inline_completion_provider": "none"
},
"assistant": {
"dock": "right",
"version": "2"
},
"format_on_save": "language_server",
"formatter": "language_server",
"buffer_font_family": "FiraCode Nerd Font",
"tab_size": 4,
"vim_mode": true,
"ui_font_size": 16,
"buffer_font_size": 16,
"theme": {
"mode": "system",
"light": "One Light",
"dark": "Tokyo Night"
},
"lsp": {
"rust-analyzer": {
"initialization_options": {
"check": {
"command": "clippy" // rust-analyzer.checkOnSave.command
},
"checkOnSave": {
"command": "clippy" // rust-analyzer.checkOnSave.command
},
"inlayHints": {
"maxLength": null,
"lifetimeElisionHints": {
"enable": "skip_trivial",
"useParameterNames": true
},
"closureReturnTypeHints": {
"enable": "always"
}
},
"diagnostics": {
"experimental": {
"enable": true
}
},
"cargo": {
"features": "all",
"allTargets": true
},
}
}
}
}

66
.config/zed/tasks.json Normal file
View File

@ -0,0 +1,66 @@
// Static tasks configuration.
//
// Example:
[
{
"label": "lazygit",
"command": "lazygit -p $ZED_WORKTREE_ROOT",
"use_new_terminal": true,
"reveal": "always",
"reveal_target": "center",
"hide": "always",
},
{
"label": "btop",
"command": "btop",
"use_new_terminal": true,
"reveal": "always",
"reveal_target": "center",
"hide": "always",
},
{
"label": "Example task",
"command": "for i in {1..5}; do echo \"Hello $i/5\"; sleep 1; done",
//"args": [],
// Env overrides for the command, will be appended to the terminal's environment from the settings.
"env": {
"foo": "bar"
},
// Current working directory to spawn the command into, defaults to current project root.
//"cwd": "/path/to/working/directory",
// Whether to use a new terminal tab or reuse the existing one to spawn the process, defaults to `false`.
"use_new_terminal": false,
// Whether to allow multiple instances of the same task to be run, or rather wait for the existing ones to finish, defaults to `false`.
"allow_concurrent_runs": false,
// What to do with the terminal pane and tab, after the command was started:
// * `always` always show the task's pane, and focus the corresponding tab in it (default)
// * `no_focus` always show the task's pane, add the task's tab in it, but don't focus it
// * `never` do not alter focus, but still add/reuse the task's tab in its pane
"reveal": "always",
// Where to place the task's terminal item after starting the task:
// * `dock` in the terminal dock, "regular" terminal items' place (default)
// * `center` in the central pane group, "main" editor area
"reveal_target": "dock",
// What to do with the terminal pane and tab, after the command had finished:
// * `never` Do nothing when the command finishes (default)
// * `always` always hide the terminal tab, hide the pane also if it was the last tab in it
// * `on_success` hide the terminal tab on task success only, otherwise behaves similar to `always`
"hide": "never",
// Which shell to use when running a task inside the terminal.
// May take 3 values:
// 1. (default) Use the system's default terminal configuration in /etc/passwd
// "shell": "system"
// 2. A program:
// "shell": {
// "program": "sh"
// }
// 3. A program with arguments:
// "shell": {
// "with_arguments": {
// "program": "/bin/bash",
// "args": ["--login"]
// }
// }
"shell": "system"
}
]