summaryrefslogtreecommitdiffstats
path: root/src/external_editor/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/external_editor/mod.rs')
-rw-r--r--src/external_editor/mod.rs46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/external_editor/mod.rs b/src/external_editor/mod.rs
index b6cc9bd..7855dc7 100644
--- a/src/external_editor/mod.rs
+++ b/src/external_editor/mod.rs
@@ -3,7 +3,6 @@ mod argument_tolkenizer;
use crate::display::display_color::DisplayColor;
use crate::display::Display;
use crate::external_editor::argument_tolkenizer::tolkenize;
-use crate::git_interactive::GitInteractive;
use crate::input::input_handler::{InputHandler, InputMode};
use crate::input::Input;
use crate::list::line::Line;
@@ -11,6 +10,7 @@ use crate::process::exit_status::ExitStatus;
use crate::process::process_module::ProcessModule;
use crate::process::process_result::ProcessResult;
use crate::process::state::State;
+use crate::todo_file::TodoFile;
use crate::view::line_segment::LineSegment;
use crate::view::view_data::ViewData;
use crate::view::view_line::ViewLine;
@@ -37,14 +37,14 @@ pub struct ExternalEditor<'e> {
}
impl<'e> ProcessModule for ExternalEditor<'e> {
- fn activate(&mut self, git_interactive: &GitInteractive, _: State) -> ProcessResult {
+ fn activate(&mut self, todo_file: &TodoFile, _: State) -> ProcessResult {
let mut result = ProcessResult::new();
self.state = ExternalEditorState::Active;
- if let Err(err) = git_interactive.write_file() {
+ if let Err(err) = todo_file.write_file() {
result = result.error(err).state(State::List);
}
else if self.lines.is_empty() {
- self.lines = git_interactive.get_lines().to_owned();
+ self.lines = todo_file.get_lines().to_owned();
}
result
}
@@ -55,7 +55,7 @@ impl<'e> ProcessModule for ExternalEditor<'e> {
self.view_data.reset();
}
- fn build_view_data(&mut self, view: &View<'_>, _: &GitInteractive) -> &ViewData {
+ fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData {
let (window_width, window_height) = view.get_view_size();
self.view_data.clear();
@@ -112,20 +112,20 @@ impl<'e> ProcessModule for ExternalEditor<'e> {
fn handle_input(
&mut self,
input_handler: &InputHandler<'_>,
- git_interactive: &mut GitInteractive,
+ todo_file: &mut TodoFile,
view: &View<'_>,
) -> ProcessResult
{
let mut result = ProcessResult::new();
match self.state {
ExternalEditorState::Active => {
- if let Err(e) = self.run_editor(git_interactive) {
+ if let Err(e) = self.run_editor(todo_file) {
self.state = ExternalEditorState::Error(e);
}
else {
- match git_interactive.load_file() {
+ match todo_file.load_file() {
Ok(_) => {
- if git_interactive.get_lines().is_empty() || git_interactive.is_noop() {
+ if todo_file.get_lines().is_empty() || todo_file.is_noop() {
self.state = ExternalEditorState::Empty;
}
else {
@@ -146,8 +146,8 @@ impl<'e> ProcessModule for ExternalEditor<'e> {
Input::Character('1') => result = result.exit_status(ExitStatus::Good),
Input::Character('2') => self.state = ExternalEditorState::Active,
Input::Character('3') => {
- git_interactive.set_lines(self.lines.to_vec());
- self.activate(git_interactive, State::ExternalEditor);
+ todo_file.set_lines(self.lines.to_vec());
+ self.activate(todo_file, State::ExternalEditor);
},
_ => self.invalid_selection = true,
}
@@ -160,20 +160,20 @@ impl<'e> ProcessModule for ExternalEditor<'e> {
self.invalid_selection = false;
match input {
Input::Character('1') => {
- git_interactive.clear();
+ todo_file.set_noop();
result = result.exit_status(ExitStatus::Good)
},
Input::Character('2') => self.state = ExternalEditorState::Active,
Input::Character('3') => {
- git_interactive.set_lines(self.lines.to_vec());
+ todo_file.set_lines(self.lines.to_vec());
result = result.state(State::List);
- if let Err(err) = git_interactive.write_file() {
+ if let Err(err) = todo_file.write_file() {
result = result.error(err);
}
},
Input::Character('4') => {
- git_interactive.set_lines(self.lines.to_vec());
- self.activate(git_interactive, State::ExternalEditor);
+ todo_file.set_lines(self.lines.to_vec());
+ self.activate(todo_file, State::ExternalEditor);
},
_ => self.invalid_selection = true,
}
@@ -215,7 +215,7 @@ impl<'e> ExternalEditor<'e> {
None
}
- fn run_editor(&mut self, git_interactive: &GitInteractive) -> Result<()> {
+ fn run_editor(&mut self, todo_file: &TodoFile) -> Result<()> {
let mut arguments = tolkenize(self.editor.as_str())
.map_or(Err(anyhow!("Invalid editor: \"{}\"", self.editor)), |args| {
if args.is_empty() {
@@ -227,7 +227,7 @@ impl<'e> ExternalEditor<'e> {
})
.map_err(|e| anyhow!("Please see the git \"core.editor\" configuration for details").context(e))?;
- let filepath = git_interactive.get_filepath();
+ let filepath = todo_file.get_filepath();
let callback = || -> Result<ProcessExitStatus> {
let mut file_pattern_found = false;
let mut cmd = Command::new(arguments.next().unwrap());
@@ -329,7 +329,7 @@ mod tests {
get_external_editor("pick aaa comment", "0").as_str(),
);
assert_process_result!(test_context.activate(&mut module, State::List));
- assert_eq!(test_context.git_interactive.get_lines(), &vec![
+ assert_eq!(test_context.rebase_todo_file.get_lines(), &vec![
Line::new("pick aaa comment1").unwrap(),
Line::new("drop bbb comment2").unwrap()
]);
@@ -491,7 +491,7 @@ mod tests {
test_context.build_view_data(&mut module);
assert_process_result!(test_context.handle_input(&mut module), input = Input::Character('3'));
assert_external_editor_state_eq!(module.state, ExternalEditorState::Active);
- assert_eq!(test_context.git_interactive.get_lines(), &vec![
+ assert_eq!(test_context.rebase_todo_file.get_lines(), &vec![
Line::new("pick aaa comment").unwrap(),
Line::new("drop bbb comment").unwrap()
]);
@@ -735,7 +735,7 @@ mod tests {
input = Input::Character('1'),
exit_status = ExitStatus::Good
);
- assert_eq!(test_context.git_interactive.get_lines(), &vec![]);
+ assert_eq!(test_context.rebase_todo_file.get_lines(), &vec![]);
},
);
}
@@ -781,7 +781,7 @@ mod tests {
input = Input::Character('3'),
state = State::List
);
- assert_eq!(test_context.git_interactive.get_lines(), &vec![Line::new(
+ assert_eq!(test_context.rebase_todo_file.get_lines(), &vec![Line::new(
"pick aaa comment"
)
.unwrap()]);
@@ -806,7 +806,7 @@ mod tests {
test_context.build_view_data(&mut module);
assert_process_result!(test_context.handle_input(&mut module), input = Input::Character('4'));
assert_external_editor_state_eq!(module.state, ExternalEditorState::Active);
- assert_eq!(test_context.git_interactive.get_lines(), &vec![Line::new(
+ assert_eq!(test_context.rebase_todo_file.get_lines(), &vec![Line::new(
"pick aaa comment"
)
.unwrap()]);