Skip to main content

editor/
app.rs

1//! App-owned configuration.
2
3use gpui::App;
4
5/// Configuration carried by the application. Import as `use editor::AppExt as _;`.
6pub trait AppExt {
7    /// Reads editor layout.
8    fn editor_layout(&self) -> crate::Layout;
9
10    /// Reads editor text size.
11    fn editor_text_size(&self) -> crate::TextSize;
12
13    /// Configures editor layout.
14    fn set_editor_layout(&mut self, layout: crate::Layout);
15
16    /// Sets editor zoom steps and limits, not an individual editor’s base size.
17    fn set_editor_text_size(&mut self, text_size: crate::TextSize);
18
19    /// Installs the image store used when pasting pictures.
20    fn set_image_store(&mut self, store: crate::ImageStore);
21
22    /// Returns the installed image store, or the default that keeps nothing.
23    fn image_store(&self) -> crate::ImageStore;
24
25    /// Overrides clipboard paste; returning `None` keeps the default behavior.
26    /// File drops are not passed to this handler.
27    fn set_paste_handler(&mut self, handler: crate::PasteHandler);
28
29    /// Replaces the slash menu's items, which are [`crate::slash_defaults`]
30    /// until this is called.
31    fn set_slash_items(&mut self, items: Vec<crate::SlashItem>);
32
33    /// Installs what the `@` menu lists, in editors whose
34    /// [`crate::Chrome::mention`] is on.
35    fn set_mention_source(&mut self, source: crate::MentionSource);
36
37    /// Adjusts every open document by the given points and refreshes windows.
38    fn adjust_editor_text_size(&mut self, points: f32);
39
40    /// Resets the shared adjustment to zero and refreshes windows.
41    fn reset_editor_text_size(&mut self);
42
43    /// Returns the shared adjustment from each document’s base size, in points.
44    fn editor_text_size_adjustment(&self) -> f32;
45}
46
47impl AppExt for App {
48    fn editor_layout(&self) -> crate::Layout {
49        crate::layout::Layout::of(self)
50    }
51
52    fn editor_text_size(&self) -> crate::TextSize {
53        crate::text_size::TextSize::of(self)
54    }
55
56    fn set_editor_layout(&mut self, layout: crate::Layout) {
57        crate::layout::set_layout(self, layout)
58    }
59
60    fn set_editor_text_size(&mut self, text_size: crate::TextSize) {
61        crate::text_size::set_text_size(self, text_size)
62    }
63
64    fn set_image_store(&mut self, store: crate::ImageStore) {
65        crate::editor::image::set_image_store(self, store)
66    }
67
68    fn image_store(&self) -> crate::ImageStore {
69        crate::editor::image::store(self)
70    }
71
72    fn set_paste_handler(&mut self, handler: crate::PasteHandler) {
73        self.set_global(crate::paste::Installed(handler));
74    }
75
76    fn set_mention_source(&mut self, source: crate::MentionSource) {
77        self.set_global(crate::mention::Installed(source));
78    }
79
80    fn set_slash_items(&mut self, items: Vec<crate::SlashItem>) {
81        self.set_global(crate::slash::Installed(items));
82    }
83
84    fn adjust_editor_text_size(&mut self, points: f32) {
85        crate::text_size::adjust_text_size(self, points)
86    }
87
88    fn reset_editor_text_size(&mut self) {
89        crate::text_size::reset_text_size(self)
90    }
91
92    fn editor_text_size_adjustment(&self) -> f32 {
93        crate::text_size::text_size_adjustment(self)
94    }
95}