mirror of
https://github.com/zaphar/sheetsui.git
synced 2025-07-23 05:19:48 -04:00
Compare commits
16 Commits
704f9f7746
...
d50c12a5ba
Author | SHA1 | Date | |
---|---|---|---|
d50c12a5ba | |||
b38af78ad7 | |||
c3ab2b72de | |||
61e9a4631f | |||
7de19e8e3b | |||
10d35ab0d6 | |||
a65ad974ce | |||
19d01f057b | |||
282df18177 | |||
babe2525a0 | |||
7bbdc26f13 | |||
92b02eea78 | |||
247674530b | |||
e984d7324c | |||
52d1909868 | |||
c5cbc1e75c |
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
|||||||
result/
|
result/
|
||||||
*.json
|
*.json
|
||||||
tarpaulin-report.*
|
tarpaulin-report.*
|
||||||
|
*.profraw
|
||||||
|
2
Makefile
2
Makefile
@ -8,7 +8,7 @@ build: $(rust-files)
|
|||||||
cargo build
|
cargo build
|
||||||
|
|
||||||
tarpaulin-report.%: $(rust_files)
|
tarpaulin-report.%: $(rust_files)
|
||||||
cargo tarpaulin --skip-clean --test --out $*
|
cargo tarpaulin --skip-clean --engine llvm --out $*
|
||||||
|
|
||||||
cover: tarpaulin-report.html
|
cover: tarpaulin-report.html
|
||||||
|
|
||||||
|
@ -549,7 +549,9 @@ impl<'ws> Workspace<'ws> {
|
|||||||
self.maybe_update_range_end();
|
self.maybe_update_range_end();
|
||||||
}
|
}
|
||||||
KeyCode::Char(' ') | KeyCode::Enter => {
|
KeyCode::Char(' ') | KeyCode::Enter => {
|
||||||
self.update_range_selection()?;
|
if self.update_range_selection()? {
|
||||||
|
self.exit_range_select_mode()?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
KeyCode::Char('n') if key.modifiers == KeyModifiers::CONTROL => {
|
KeyCode::Char('n') if key.modifiers == KeyModifiers::CONTROL => {
|
||||||
self.state.range_select.reset_range_selection();
|
self.state.range_select.reset_range_selection();
|
||||||
@ -570,16 +572,24 @@ impl<'ws> Workspace<'ws> {
|
|||||||
KeyCode::Char('C')
|
KeyCode::Char('C')
|
||||||
if key
|
if key
|
||||||
.modifiers
|
.modifiers
|
||||||
.contains(KeyModifiers::CONTROL | KeyModifiers::SHIFT) =>
|
.contains(KeyModifiers::CONTROL) =>
|
||||||
{
|
{
|
||||||
// TODO(zaphar): Share the algorithm below between both copies
|
// TODO(zaphar): Share the algorithm below between both copies
|
||||||
self.copy_range(true)?;
|
self.copy_range(true)?;
|
||||||
|
self.exit_range_select_mode()?;
|
||||||
|
}
|
||||||
|
KeyCode::Char('Y') => {
|
||||||
|
self.copy_range(true)?;
|
||||||
|
self.exit_range_select_mode()?;
|
||||||
}
|
}
|
||||||
KeyCode::Char('Y') => self.copy_range(true)?,
|
|
||||||
KeyCode::Char('c') if key.modifiers == KeyModifiers::CONTROL => {
|
KeyCode::Char('c') if key.modifiers == KeyModifiers::CONTROL => {
|
||||||
self.copy_range(false)?;
|
self.copy_range(false)?;
|
||||||
|
self.exit_range_select_mode()?;
|
||||||
|
}
|
||||||
|
KeyCode::Char('y') => {
|
||||||
|
self.copy_range(false)?;
|
||||||
|
self.exit_range_select_mode()?;
|
||||||
}
|
}
|
||||||
KeyCode::Char('y') => self.copy_range(false)?,
|
|
||||||
KeyCode::Char('x') => {
|
KeyCode::Char('x') => {
|
||||||
if let (Some(from), Some(to)) = (self.state.range_select.start.as_ref(), self.state.range_select.end.as_ref()) {
|
if let (Some(from), Some(to)) = (self.state.range_select.start.as_ref(), self.state.range_select.end.as_ref()) {
|
||||||
self.book.extend_to(from, to)?;
|
self.book.extend_to(from, to)?;
|
||||||
@ -627,17 +637,17 @@ impl<'ws> Workspace<'ws> {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.exit_range_select_mode()?;
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_range_selection(&mut self) -> Result<(), anyhow::Error> {
|
fn update_range_selection(&mut self) -> Result<bool, anyhow::Error> {
|
||||||
Ok(if self.state.range_select.start.is_none() {
|
Ok(if self.state.range_select.start.is_none() {
|
||||||
self.state.range_select.start = Some(self.book.location.clone());
|
self.state.range_select.start = Some(self.book.location.clone());
|
||||||
self.state.range_select.end = Some(self.book.location.clone());
|
self.state.range_select.end = Some(self.book.location.clone());
|
||||||
|
false
|
||||||
} else {
|
} else {
|
||||||
self.state.range_select.end = Some(self.book.location.clone());
|
self.state.range_select.end = Some(self.book.location.clone());
|
||||||
self.exit_range_select_mode()?;
|
true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -692,7 +702,7 @@ impl<'ws> Workspace<'ws> {
|
|||||||
KeyCode::Char('C')
|
KeyCode::Char('C')
|
||||||
if key
|
if key
|
||||||
.modifiers
|
.modifiers
|
||||||
.contains(KeyModifiers::CONTROL | KeyModifiers::SHIFT) =>
|
.contains(KeyModifiers::CONTROL) =>
|
||||||
{
|
{
|
||||||
self.state.clipboard = Some(ClipboardContents::Cell(
|
self.state.clipboard = Some(ClipboardContents::Cell(
|
||||||
self.book.get_current_cell_rendered()?,
|
self.book.get_current_cell_rendered()?,
|
||||||
|
953
src/ui/test.rs
953
src/ui/test.rs
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user