fresh/app/
view_actions.rs1use super::Editor;
6use crate::state::ViewMode;
7use rust_i18n::t;
8
9impl Editor {
10 pub fn handle_toggle_compose_mode(&mut self) {
12 let default_wrap = self.config.editor.line_wrap;
13 let default_line_numbers = self.config.editor.line_numbers;
14 let active_split = self.split_manager.active_split();
15
16 let view_mode = {
17 let current = self
18 .split_view_states
19 .get(&active_split)
20 .map(|vs| vs.view_mode.clone())
21 .unwrap_or(ViewMode::Source);
22 match current {
23 ViewMode::Compose => ViewMode::Source,
24 _ => ViewMode::Compose,
25 }
26 };
27
28 if let Some(vs) = self.split_view_states.get_mut(&active_split) {
30 vs.view_mode = view_mode.clone();
31 vs.viewport.line_wrap_enabled = match view_mode {
35 ViewMode::Compose => false,
36 ViewMode::Source => default_wrap,
37 };
38 match view_mode {
39 ViewMode::Compose => {
40 vs.show_line_numbers = false;
41 }
42 ViewMode::Source => {
43 vs.compose_width = None;
45 vs.view_transform = None;
46 vs.show_line_numbers = default_line_numbers;
47 }
48 }
49 }
50
51 let mode_label = match view_mode {
52 ViewMode::Compose => t!("view.compose").to_string(),
53 ViewMode::Source => "Source".to_string(),
54 };
55 self.set_status_message(t!("view.mode", mode = mode_label).to_string());
56 }
57}