Skip to content

Commit cfb11d4

Browse files
authored
删除历史代码,解决部分问题 (#38)
* 删除历史代码,解决部分问题
1 parent 5d785d9 commit cfb11d4

33 files changed

+93
-4401
lines changed

src/application/handler/workspace.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ use crate::errors::*;
44

55
pub fn to_normal_mode(app: &mut Application) -> Result<()> {
66
if let ModeData::Workspace(ref mode) = app.mode {
7-
app.workspace.select_buffer(mode.prev_buffer_id);
7+
if let Some(buffer_id) = mode.prev_buffer_id {
8+
app.workspace.select_buffer(buffer_id);
9+
} else {
10+
return Ok(());
11+
}
812
}
913
app.switch_mode(ModeKey::Normal);
1014
Ok(())

src/application/mod.rs

Lines changed: 7 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ use state::ApplicationStateData;
1515
use std::{cell::RefCell, collections::HashMap, mem, rc::Rc, sync::Arc};
1616

1717
use crate::{
18-
config::appconfig::AppSetting,
1918
modules::perferences::{Perferences, PerferencesManager},
20-
utils::{file::FileManager, ui::uicore::Ui},
2119
view::monitor::Monitor,
2220
workspace::Workspace,
2321
};
@@ -28,9 +26,6 @@ pub mod plugin_interafce;
2826
pub mod state;
2927

3028
pub struct Application {
31-
file_manager: FileManager,
32-
bak: bool,
33-
ui: Arc<Ui>,
3429
pub workspace: Workspace,
3530
pub monitor: Monitor,
3631
pub perferences: Rc<RefCell<dyn Perferences>>,
@@ -50,19 +45,7 @@ pub struct Application {
5045
}
5146

5247
impl Application {
53-
pub fn new(file_path: Option<String>, setting: AppSetting, args: &[String]) -> Result<Self> {
54-
let bak;
55-
let mut file = if file_path.is_some() {
56-
bak = true;
57-
FileManager::new(file_path.unwrap())?
58-
} else {
59-
bak = false;
60-
FileManager::new("held.tmp".to_string())?
61-
};
62-
63-
// 将文件数据读入buf
64-
let buf = file.init(bak)?;
65-
48+
pub fn new(args: &[String]) -> Result<Self> {
6649
let perferences = PerferencesManager::load()?;
6750

6851
let plugin_system = Rc::new(RefCell::new(PluginSystem::init_system(
@@ -72,10 +55,8 @@ impl Application {
7255
let input_map = InputLoader::load(perferences.borrow().input_config_path()?)?;
7356
let mut monitor = Monitor::new(perferences.clone(), plugin_system.clone())?;
7457
let workspace = Workspace::create_workspace(&mut monitor, perferences.borrow(), args)?;
58+
7559
Ok(Self {
76-
file_manager: file,
77-
bak,
78-
ui: Ui::new(Arc::new(buf), setting),
7960
workspace,
8061
monitor,
8162
perferences,
@@ -90,15 +71,8 @@ impl Application {
9071
}
9172

9273
fn init(&mut self) -> Result<()> {
93-
// Ui::init_ui()?;
94-
// PluginSystem::init_system();
95-
// self.monitor.terminal.clear().unwrap();
9674
self.init_modes()?;
9775
self.plugin_system.borrow().init();
98-
// if !self.bak {
99-
// self.ui.start_page_ui()?;
100-
// }
101-
10276
Ok(())
10377
}
10478

@@ -122,12 +96,16 @@ impl Application {
12296
self.mode_history.insert(ModeKey::Delete, ModeData::Delete);
12397
self.mode_history
12498
.insert(ModeKey::Search, ModeData::Search(SearchData::new()));
99+
100+
if self.workspace.current_buffer.is_none() {
101+
self.switch_mode(ModeKey::Workspace);
102+
}
103+
125104
Ok(())
126105
}
127106

128107
pub fn run(&mut self) -> Result<()> {
129108
self.init()?;
130-
131109
loop {
132110
self.render()?;
133111
self.listen_event()?;
@@ -137,24 +115,6 @@ impl Application {
137115
return Ok(());
138116
}
139117
}
140-
141-
// 主线程
142-
match self.ui.ui_loop() {
143-
Ok(store) => {
144-
if store {
145-
let buffer = &self.ui.core.lock().unwrap().buffer;
146-
self.file_manager.store(buffer)?
147-
} else if self.file_manager.is_first_open() {
148-
self.file_manager.delete_files()?;
149-
}
150-
}
151-
Err(_) => {
152-
// 补救措施:恢复备份文件
153-
todo!()
154-
}
155-
}
156-
disable_raw_mode()?;
157-
Ok(())
158118
}
159119

160120
fn listen_event(&mut self) -> Result<()> {

src/application/mode/delete.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ impl ModeRenderer for DeleteRenderer {
1616
let mut presenter = monitor.build_presenter()?;
1717

1818
if let Some(buffer) = &workspace.current_buffer {
19-
warn!("Delete buffer id: {}", buffer.id.unwrap());
2019
let data = buffer.data();
2120
presenter.print_buffer(buffer, &data, &workspace.syntax_set, None, None)?;
2221

src/application/mode/normal.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ impl ModeRenderer for NormalRenderer {
1616
let mut presenter = monitor.build_presenter()?;
1717

1818
if let Some(buffer) = &workspace.current_buffer {
19-
warn!("normal buffer id: {}", buffer.id.unwrap());
2019
let data = buffer.data();
2120
presenter.print_buffer(buffer, &data, &workspace.syntax_set, None, None)?;
2221

src/application/mode/workspace.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub struct WorkspaceModeData {
2424
max_index: usize,
2525
opened_dir_inos: HashSet<u64>,
2626
buffer_id: usize,
27-
pub prev_buffer_id: usize,
27+
pub prev_buffer_id: Option<usize>,
2828
highlight_ranges: Vec<(Range, CharStyle, Colors)>,
2929
}
3030

@@ -37,19 +37,23 @@ impl WorkspaceModeData {
3737
let mut opened_dir_inos = HashSet::new();
3838
opened_dir_inos.insert(workspace.path.metadata()?.ino());
3939

40-
let prev_buffer_id = workspace.current_buffer.as_ref().unwrap().id()?;
41-
40+
let mut prev_buffer_id = None;
41+
if let Some(current_buffer) = workspace.current_buffer.as_ref() {
42+
prev_buffer_id = Some(current_buffer.id()?);
43+
}
4244
let buffer = Buffer::new();
4345
let buffer_id = workspace.add_buffer(buffer);
44-
monitor.init_buffer(workspace.current_buffer.as_mut().unwrap())?;
46+
monitor.init_buffer(workspace.get_buffer_mut(buffer_id).unwrap())?;
4547

46-
workspace.select_buffer(prev_buffer_id);
48+
if let Some(id) = prev_buffer_id {
49+
workspace.select_buffer(id);
50+
}
4751

4852
Ok(WorkspaceModeData {
4953
path: workspace.path.clone(),
5054
selected_index: 0,
5155
opened_dir_inos,
52-
buffer_id: buffer_id,
56+
buffer_id,
5357
prev_buffer_id,
5458
highlight_ranges: Vec::new(),
5559
current_render_index: 0,
@@ -276,10 +280,9 @@ impl WorkspaceModeData {
276280
Ok(false)
277281
} else {
278282
let buffer = Buffer::from_file(&self.selected_path)?;
279-
let id = workspace.add_buffer(buffer);
280-
workspace.select_buffer(id);
283+
let id = workspace.add_buffer_with_select(buffer);
281284
monitor.init_buffer(workspace.current_buffer.as_mut().unwrap())?;
282-
self.prev_buffer_id = id;
285+
self.prev_buffer_id = Some(id);
283286
Ok(true)
284287
}
285288
}

src/config/appconfig.rs

Lines changed: 0 additions & 163 deletions
This file was deleted.

src/config/cmd.rs

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)