1use gpui::{Action, actions};
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5// If the zed binary doesn't use anything in this crate, it will be optimized away
6// and the actions won't initialize. So we just provide an empty initialization function
7// to be called from main.
8//
9// These may provide relevant context:
10// https://github.com/rust-lang/rust/issues/47384
11// https://github.com/mmastrac/rust-ctor/issues/280
12pub fn init() {}
13
14/// Opens a URL in the system's default web browser.
15#[derive(Clone, PartialEq, Deserialize, JsonSchema, Action)]
16#[action(namespace = zed)]
17#[serde(deny_unknown_fields)]
18pub struct OpenBrowser {
19 pub url: String,
20}
21
22/// Opens a zed:// URL within the application.
23#[derive(Clone, PartialEq, Deserialize, JsonSchema, Action)]
24#[action(namespace = zed)]
25#[serde(deny_unknown_fields)]
26pub struct OpenZedUrl {
27 pub url: String,
28}
29
30/// Opens the keymap to either add a keybinding or change an existing one
31#[derive(PartialEq, Clone, Default, Action, JsonSchema, Serialize, Deserialize)]
32#[action(namespace = zed, no_json, no_register)]
33pub struct ChangeKeybinding {
34 pub action: String,
35}
36
37actions!(
38 zed,
39 [
40 /// Opens the settings editor.
41 #[action(deprecated_aliases = ["zed_actions::OpenSettingsEditor"])]
42 OpenSettings,
43 /// Opens the settings JSON file.
44 #[action(deprecated_aliases = ["zed_actions::OpenSettings"])]
45 OpenSettingsFile,
46 /// Opens project-specific settings.
47 #[action(deprecated_aliases = ["zed_actions::OpenProjectSettings"])]
48 OpenProjectSettings,
49 /// Opens the default keymap file.
50 OpenDefaultKeymap,
51 /// Opens the user keymap file.
52 #[action(deprecated_aliases = ["zed_actions::OpenKeymap"])]
53 OpenKeymapFile,
54 /// Opens the keymap editor.
55 #[action(deprecated_aliases = ["zed_actions::OpenKeymapEditor"])]
56 OpenKeymap,
57 /// Opens account settings.
58 OpenAccountSettings,
59 /// Opens server settings.
60 OpenServerSettings,
61 /// Quits the application.
62 Quit,
63 /// Shows information about Zed.
64 About,
65 /// Opens the documentation website.
66 OpenDocs,
67 /// Views open source licenses.
68 OpenLicenses,
69 /// Opens the telemetry log.
70 OpenTelemetryLog,
71 /// Opens the performance profiler.
72 OpenPerformanceProfiler,
73 /// Opens the onboarding view.
74 OpenOnboarding,
75 ]
76);
77
78#[derive(PartialEq, Clone, Copy, Debug, Deserialize, JsonSchema)]
79#[serde(rename_all = "snake_case")]
80pub enum ExtensionCategoryFilter {
81 Themes,
82 IconThemes,
83 Languages,
84 Grammars,
85 LanguageServers,
86 ContextServers,
87 AgentServers,
88 SlashCommands,
89 IndexedDocsProviders,
90 Snippets,
91 DebugAdapters,
92}
93
94/// Opens the extensions management interface.
95#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
96#[action(namespace = zed)]
97#[serde(deny_unknown_fields)]
98pub struct Extensions {
99 /// Filters the extensions page down to extensions that are in the specified category.
100 #[serde(default)]
101 pub category_filter: Option<ExtensionCategoryFilter>,
102 /// Focuses just the extension with the specified ID.
103 #[serde(default)]
104 pub id: Option<String>,
105}
106
107/// Opens the ACP registry.
108#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
109#[action(namespace = zed)]
110#[serde(deny_unknown_fields)]
111pub struct AcpRegistry;
112
113/// Show call diagnostics and connection quality statistics.
114#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
115#[action(namespace = collab)]
116#[serde(deny_unknown_fields)]
117pub struct ShowCallStats;
118
119/// Decreases the font size in the editor buffer.
120#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
121#[action(namespace = zed)]
122#[serde(deny_unknown_fields)]
123pub struct DecreaseBufferFontSize {
124 #[serde(default)]
125 pub persist: bool,
126}
127
128/// Increases the font size in the editor buffer.
129#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
130#[action(namespace = zed)]
131#[serde(deny_unknown_fields)]
132pub struct IncreaseBufferFontSize {
133 #[serde(default)]
134 pub persist: bool,
135}
136
137/// Opens the settings editor at a specific path.
138#[derive(PartialEq, Clone, Debug, Deserialize, JsonSchema, Action)]
139#[action(namespace = zed)]
140#[serde(deny_unknown_fields)]
141pub struct OpenSettingsAt {
142 /// A path to a specific setting (e.g. `theme.mode`)
143 pub path: String,
144}
145
146/// Resets the buffer font size to the default value.
147#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
148#[action(namespace = zed)]
149#[serde(deny_unknown_fields)]
150pub struct ResetBufferFontSize {
151 #[serde(default)]
152 pub persist: bool,
153}
154
155/// Decreases the font size of the user interface.
156#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
157#[action(namespace = zed)]
158#[serde(deny_unknown_fields)]
159pub struct DecreaseUiFontSize {
160 #[serde(default)]
161 pub persist: bool,
162}
163
164/// Increases the font size of the user interface.
165#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
166#[action(namespace = zed)]
167#[serde(deny_unknown_fields)]
168pub struct IncreaseUiFontSize {
169 #[serde(default)]
170 pub persist: bool,
171}
172
173/// Resets the UI font size to the default value.
174#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
175#[action(namespace = zed)]
176#[serde(deny_unknown_fields)]
177pub struct ResetUiFontSize {
178 #[serde(default)]
179 pub persist: bool,
180}
181
182/// Resets all zoom levels (UI and buffer font sizes, including in the agent panel) to their default values.
183#[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
184#[action(namespace = zed)]
185#[serde(deny_unknown_fields)]
186pub struct ResetAllZoom {
187 #[serde(default)]
188 pub persist: bool,
189}
190
191pub mod editor {
192 use gpui::actions;
193 actions!(
194 editor,
195 [
196 /// Moves cursor up.
197 MoveUp,
198 /// Moves cursor down.
199 MoveDown,
200 /// Reveals the current file in the system file manager.
201 RevealInFileManager,
202 ]
203 );
204}
205
206pub mod dev {
207 use gpui::actions;
208
209 actions!(
210 dev,
211 [
212 /// Toggles the developer inspector for debugging UI elements.
213 ToggleInspector
214 ]
215 );
216}
217
218pub mod remote_debug {
219 use gpui::actions;
220
221 actions!(
222 remote_debug,
223 [
224 /// Simulates a disconnection from the remote server for testing purposes.
225 /// This will trigger the reconnection logic.
226 SimulateDisconnect,
227 /// Simulates a timeout/slow connection to the remote server for testing purposes.
228 /// This will cause heartbeat failures and trigger reconnection.
229 SimulateTimeout,
230 /// Simulates a timeout/slow connection to the remote server for testing purposes.
231 /// This will cause heartbeat failures and attempting a reconnection while having exhausted all attempts.
232 SimulateTimeoutExhausted,
233 ]
234 );
235}
236
237pub mod workspace {
238 use gpui::actions;
239
240 actions!(
241 workspace,
242 [
243 #[action(deprecated_aliases = ["editor::CopyPath", "outline_panel::CopyPath", "project_panel::CopyPath"])]
244 CopyPath,
245 #[action(deprecated_aliases = ["editor::CopyRelativePath", "outline_panel::CopyRelativePath", "project_panel::CopyRelativePath"])]
246 CopyRelativePath,
247 /// Opens the selected file with the system's default application.
248 #[action(deprecated_aliases = ["project_panel::OpenWithSystem"])]
249 OpenWithSystem,
250 ]
251 );
252}
253
254pub mod git {
255 use gpui::actions;
256
257 actions!(
258 git,
259 [
260 /// Checks out a different git branch.
261 CheckoutBranch,
262 /// Switches to a different git branch.
263 Switch,
264 /// Selects a different repository.
265 SelectRepo,
266 /// Filter remotes.
267 FilterRemotes,
268 /// Create a git remote.
269 CreateRemote,
270 /// Opens the git branch selector.
271 #[action(deprecated_aliases = ["branches::OpenRecent"])]
272 Branch,
273 /// Opens the git stash selector.
274 ViewStash,
275 /// Opens the git worktree selector.
276 Worktree,
277 /// Creates a pull request for the current branch.
278 CreatePullRequest
279 ]
280 );
281}
282
283pub mod toast {
284 use gpui::actions;
285
286 actions!(
287 toast,
288 [
289 /// Runs the action associated with a toast notification.
290 RunAction
291 ]
292 );
293}
294
295pub mod command_palette {
296 use gpui::actions;
297
298 actions!(
299 command_palette,
300 [
301 /// Toggles the command palette.
302 Toggle,
303 ]
304 );
305}
306
307pub mod project_panel {
308 use gpui::actions;
309
310 actions!(
311 project_panel,
312 [
313 /// Toggles the project panel.
314 Toggle,
315 /// Toggles focus on the project panel.
316 ToggleFocus
317 ]
318 );
319}
320pub mod feedback {
321 use gpui::actions;
322
323 actions!(
324 feedback,
325 [
326 /// Opens email client to send feedback to Zed support.
327 EmailZed,
328 /// Opens the bug report form.
329 FileBugReport,
330 /// Opens the feature request form.
331 RequestFeature
332 ]
333 );
334}
335
336pub mod theme {
337 use gpui::actions;
338
339 actions!(theme, [ToggleMode]);
340}
341
342pub mod theme_selector {
343 use gpui::Action;
344 use schemars::JsonSchema;
345 use serde::Deserialize;
346
347 /// Toggles the theme selector interface.
348 #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
349 #[action(namespace = theme_selector)]
350 #[serde(deny_unknown_fields)]
351 pub struct Toggle {
352 /// A list of theme names to filter the theme selector down to.
353 pub themes_filter: Option<Vec<String>>,
354 }
355}
356
357pub mod icon_theme_selector {
358 use gpui::Action;
359 use schemars::JsonSchema;
360 use serde::Deserialize;
361
362 /// Toggles the icon theme selector interface.
363 #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
364 #[action(namespace = icon_theme_selector)]
365 #[serde(deny_unknown_fields)]
366 pub struct Toggle {
367 /// A list of icon theme names to filter the theme selector down to.
368 pub themes_filter: Option<Vec<String>>,
369 }
370}
371
372pub mod search {
373 use gpui::actions;
374 actions!(
375 search,
376 [
377 /// Toggles searching in ignored files.
378 ToggleIncludeIgnored
379 ]
380 );
381}
382pub mod buffer_search {
383 use gpui::{Action, actions};
384 use schemars::JsonSchema;
385 use serde::Deserialize;
386
387 /// Opens the buffer search interface with the specified configuration.
388 #[derive(PartialEq, Clone, Deserialize, JsonSchema, Action)]
389 #[action(namespace = buffer_search)]
390 #[serde(deny_unknown_fields)]
391 pub struct Deploy {
392 #[serde(default = "util::serde::default_true")]
393 pub focus: bool,
394 #[serde(default)]
395 pub replace_enabled: bool,
396 #[serde(default)]
397 pub selection_search_enabled: bool,
398 }
399
400 impl Deploy {
401 pub fn find() -> Self {
402 Self {
403 focus: true,
404 replace_enabled: false,
405 selection_search_enabled: false,
406 }
407 }
408
409 pub fn replace() -> Self {
410 Self {
411 focus: true,
412 replace_enabled: true,
413 selection_search_enabled: false,
414 }
415 }
416 }
417
418 actions!(
419 buffer_search,
420 [
421 /// Deploys the search and replace interface.
422 DeployReplace,
423 /// Dismisses the search bar.
424 Dismiss,
425 /// Focuses back on the editor.
426 FocusEditor
427 ]
428 );
429}
430pub mod settings_profile_selector {
431 use gpui::Action;
432 use schemars::JsonSchema;
433 use serde::Deserialize;
434
435 #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
436 #[action(namespace = settings_profile_selector)]
437 pub struct Toggle;
438}
439
440pub mod agent {
441 use gpui::{Action, SharedString, actions};
442 use schemars::JsonSchema;
443 use serde::Deserialize;
444
445 actions!(
446 agent,
447 [
448 /// Opens the agent settings panel.
449 #[action(deprecated_aliases = ["agent::OpenConfiguration"])]
450 OpenSettings,
451 /// Opens the agent onboarding modal.
452 OpenOnboardingModal,
453 /// Opens the ACP onboarding modal.
454 OpenAcpOnboardingModal,
455 /// Opens the Claude Agent onboarding modal.
456 OpenClaudeAgentOnboardingModal,
457 /// Resets the agent onboarding state.
458 ResetOnboarding,
459 /// Starts a chat conversation with the agent.
460 Chat,
461 /// Toggles the language model selector dropdown.
462 #[action(deprecated_aliases = ["assistant::ToggleModelSelector", "assistant2::ToggleModelSelector"])]
463 ToggleModelSelector,
464 /// Triggers re-authentication on Gemini
465 ReauthenticateAgent,
466 /// Add the current selection as context for threads in the agent panel.
467 #[action(deprecated_aliases = ["assistant::QuoteSelection", "agent::QuoteSelection"])]
468 AddSelectionToThread,
469 /// Resets the agent panel zoom levels (agent UI and buffer font sizes).
470 ResetAgentZoom,
471 /// Pastes clipboard content without any formatting.
472 PasteRaw,
473 ]
474 );
475
476 /// Opens a new agent thread with the provided branch diff for review.
477 #[derive(Clone, PartialEq, Deserialize, JsonSchema, Action)]
478 #[action(namespace = agent)]
479 #[serde(deny_unknown_fields)]
480 pub struct ReviewBranchDiff {
481 /// The full text of the diff to review.
482 pub diff_text: SharedString,
483 /// The base ref that the diff was computed against (e.g. "main").
484 pub base_ref: SharedString,
485 }
486
487 /// A single merge conflict region extracted from a file.
488 #[derive(Clone, Debug, PartialEq, Deserialize, JsonSchema)]
489 pub struct ConflictContent {
490 pub file_path: String,
491 pub conflict_text: String,
492 pub ours_branch_name: String,
493 pub theirs_branch_name: String,
494 }
495
496 /// Opens a new agent thread to resolve specific merge conflicts.
497 #[derive(Clone, PartialEq, Deserialize, JsonSchema, Action)]
498 #[action(namespace = agent)]
499 #[serde(deny_unknown_fields)]
500 pub struct ResolveConflictsWithAgent {
501 /// Individual conflicts with their full text.
502 pub conflicts: Vec<ConflictContent>,
503 }
504
505 /// Opens a new agent thread to resolve merge conflicts in the given file paths.
506 #[derive(Clone, PartialEq, Deserialize, JsonSchema, Action)]
507 #[action(namespace = agent)]
508 #[serde(deny_unknown_fields)]
509 pub struct ResolveConflictedFilesWithAgent {
510 /// File paths with unresolved conflicts (for project-wide resolution).
511 pub conflicted_file_paths: Vec<String>,
512 }
513}
514
515pub mod assistant {
516 use gpui::{Action, actions};
517 use schemars::JsonSchema;
518 use serde::Deserialize;
519 use uuid::Uuid;
520
521 actions!(
522 agent,
523 [
524 /// Toggles the agent panel.
525 Toggle,
526 #[action(deprecated_aliases = ["assistant::ToggleFocus"])]
527 ToggleFocus
528 ]
529 );
530
531 actions!(
532 assistant,
533 [
534 /// Shows the assistant configuration panel.
535 ShowConfiguration
536 ]
537 );
538
539 /// Opens the rules library for managing agent rules and prompts.
540 #[derive(PartialEq, Clone, Default, Debug, Deserialize, JsonSchema, Action)]
541 #[action(namespace = agent, deprecated_aliases = ["assistant::OpenRulesLibrary", "assistant::DeployPromptLibrary"])]
542 #[serde(deny_unknown_fields)]
543 pub struct OpenRulesLibrary {
544 #[serde(skip)]
545 pub prompt_to_select: Option<Uuid>,
546 }
547
548 /// Deploys the assistant interface with the specified configuration.
549 #[derive(Clone, Default, Deserialize, PartialEq, JsonSchema, Action)]
550 #[action(namespace = assistant)]
551 #[serde(deny_unknown_fields)]
552 pub struct InlineAssist {
553 pub prompt: Option<String>,
554 }
555}
556
557/// Opens the recent projects interface.
558#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
559#[action(namespace = projects)]
560#[serde(deny_unknown_fields)]
561pub struct OpenRecent {
562 #[serde(default)]
563 pub create_new_window: bool,
564}
565
566/// Creates a project from a selected template.
567#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
568#[action(namespace = projects)]
569#[serde(deny_unknown_fields)]
570pub struct OpenRemote {
571 #[serde(default)]
572 pub from_existing_connection: bool,
573 #[serde(default)]
574 pub create_new_window: bool,
575}
576
577/// Opens the dev container connection modal.
578#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
579#[action(namespace = projects)]
580#[serde(deny_unknown_fields)]
581pub struct OpenDevContainer;
582
583/// Where to spawn the task in the UI.
584#[derive(Default, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
585#[serde(rename_all = "snake_case")]
586pub enum RevealTarget {
587 /// In the central pane group, "main" editor area.
588 Center,
589 /// In the terminal dock, "regular" terminal items' place.
590 #[default]
591 Dock,
592}
593
594/// Spawns a task with name or opens tasks modal.
595#[derive(Debug, PartialEq, Clone, Deserialize, JsonSchema, Action)]
596#[action(namespace = task)]
597#[serde(untagged)]
598pub enum Spawn {
599 /// Spawns a task by the name given.
600 ByName {
601 task_name: String,
602 #[serde(default)]
603 reveal_target: Option<RevealTarget>,
604 },
605 /// Spawns a task by the tag given.
606 ByTag {
607 task_tag: String,
608 #[serde(default)]
609 reveal_target: Option<RevealTarget>,
610 },
611 /// Spawns a task via modal's selection.
612 ViaModal {
613 /// Selected task's `reveal_target` property override.
614 #[serde(default)]
615 reveal_target: Option<RevealTarget>,
616 },
617}
618
619impl Spawn {
620 pub fn modal() -> Self {
621 Self::ViaModal {
622 reveal_target: None,
623 }
624 }
625}
626
627/// Reruns the last task.
628#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
629#[action(namespace = task)]
630#[serde(deny_unknown_fields)]
631pub struct Rerun {
632 /// Controls whether the task context is reevaluated prior to execution of a task.
633 /// If it is not, environment variables such as ZED_COLUMN, ZED_FILE are gonna be the same as in the last execution of a task
634 /// If it is, these variables will be updated to reflect current state of editor at the time task::Rerun is executed.
635 /// default: false
636 #[serde(default)]
637 pub reevaluate_context: bool,
638 /// Overrides `allow_concurrent_runs` property of the task being reran.
639 /// Default: null
640 #[serde(default)]
641 pub allow_concurrent_runs: Option<bool>,
642 /// Overrides `use_new_terminal` property of the task being reran.
643 /// Default: null
644 #[serde(default)]
645 pub use_new_terminal: Option<bool>,
646
647 /// If present, rerun the task with this ID, otherwise rerun the last task.
648 #[serde(skip)]
649 pub task_id: Option<String>,
650}
651
652pub mod outline {
653 use std::sync::OnceLock;
654
655 use gpui::{AnyView, App, Window, actions};
656
657 actions!(
658 outline,
659 [
660 #[action(name = "Toggle")]
661 ToggleOutline
662 ]
663 );
664 /// A pointer to outline::toggle function, exposed here to sewer the breadcrumbs <-> outline dependency.
665 pub static TOGGLE_OUTLINE: OnceLock<fn(AnyView, &mut Window, &mut App)> = OnceLock::new();
666}
667
668actions!(
669 zed_predict_onboarding,
670 [
671 /// Opens the Zed Predict onboarding modal.
672 OpenZedPredictOnboarding
673 ]
674);
675actions!(
676 git_onboarding,
677 [
678 /// Opens the git integration onboarding modal.
679 OpenGitIntegrationOnboarding
680 ]
681);
682
683pub mod debug_panel {
684 use gpui::actions;
685 actions!(
686 debug_panel,
687 [
688 /// Toggles the debug panel.
689 Toggle,
690 /// Toggles focus on the debug panel.
691 ToggleFocus
692 ]
693 );
694}
695
696actions!(
697 debugger,
698 [
699 /// Toggles the enabled state of a breakpoint.
700 ToggleEnableBreakpoint,
701 /// Removes a breakpoint.
702 UnsetBreakpoint,
703 /// Opens the project debug tasks configuration.
704 OpenProjectDebugTasks,
705 ]
706);
707
708pub mod vim {
709 use gpui::actions;
710
711 actions!(
712 vim,
713 [
714 /// Opens the default keymap file.
715 OpenDefaultKeymap
716 ]
717 );
718}
719
720#[derive(Debug, Clone, PartialEq, Eq, Hash)]
721pub struct WslConnectionOptions {
722 pub distro_name: String,
723 pub user: Option<String>,
724}
725
726#[cfg(target_os = "windows")]
727pub mod wsl_actions {
728 use gpui::Action;
729 use schemars::JsonSchema;
730 use serde::Deserialize;
731
732 /// Opens a folder inside Wsl.
733 #[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
734 #[action(namespace = projects)]
735 #[serde(deny_unknown_fields)]
736 pub struct OpenFolderInWsl {
737 #[serde(default)]
738 pub create_new_window: bool,
739 }
740
741 /// Open a wsl distro.
742 #[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
743 #[action(namespace = projects)]
744 #[serde(deny_unknown_fields)]
745 pub struct OpenWsl {
746 #[serde(default)]
747 pub create_new_window: bool,
748 }
749}
750
751pub mod preview {
752 pub mod markdown {
753 use gpui::actions;
754
755 actions!(
756 markdown,
757 [
758 /// Opens a markdown preview for the current file.
759 OpenPreview,
760 /// Opens a markdown preview in a split pane.
761 OpenPreviewToTheSide,
762 ]
763 );
764 }
765
766 pub mod svg {
767 use gpui::actions;
768
769 actions!(
770 svg,
771 [
772 /// Opens an SVG preview for the current file.
773 OpenPreview,
774 /// Opens an SVG preview in a split pane.
775 OpenPreviewToTheSide,
776 ]
777 );
778 }
779}
780
781pub mod agents_sidebar {
782 use gpui::{Action, actions};
783 use schemars::JsonSchema;
784 use serde::Deserialize;
785
786 /// Toggles the thread switcher popup when the sidebar is focused.
787 #[derive(PartialEq, Clone, Deserialize, JsonSchema, Default, Action)]
788 #[action(namespace = agents_sidebar)]
789 #[serde(deny_unknown_fields)]
790 pub struct ToggleThreadSwitcher {
791 #[serde(default)]
792 pub select_last: bool,
793 }
794
795 actions!(
796 agents_sidebar,
797 [
798 /// Moves focus to the sidebar's search/filter editor.
799 FocusSidebarFilter,
800 /// Moves the active workspace to a new window.
801 MoveWorkspaceToNewWindow,
802 ]
803 );
804}
805
806pub mod notebook {
807 use gpui::actions;
808
809 actions!(
810 notebook,
811 [
812 /// Move to down in cells
813 NotebookMoveDown,
814 /// Move to up in cells
815 NotebookMoveUp,
816 ]
817 );
818}