diff --git a/.config/zed/keymap.json b/.config/zed/keymap.json new file mode 100644 index 0000000..9fc5140 --- /dev/null +++ b/.config/zed/keymap.json @@ -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", + } + }, +] diff --git a/.config/zed/settings.json b/.config/zed/settings.json new file mode 100644 index 0000000..08491b3 --- /dev/null +++ b/.config/zed/settings.json @@ -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 + }, + } + } + } +} diff --git a/.config/zed/tasks.json b/.config/zed/tasks.json new file mode 100644 index 0000000..42797e3 --- /dev/null +++ b/.config/zed/tasks.json @@ -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" + } +]