forked from helix-editor/helix
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Align view for background buffer opened with
alt-ret
(helix-editor#…
…7691) * fix(picker): `alt-ret' changes cursor pos of current file, not new one Closes helix-editor#7673 * fix other pickers * symbol pickers * diagnostick pickers This is done using the already patched `jump_to_location` method. * fix global and jumplist pickers * use `view` as old_id; make `align_view` method of `Action` * test(picker): basic <alt-ret> functionality * fix: picker integrational test * fix nit Co-authored-by: Michael Davis <[email protected]> --------- Co-authored-by: Michael Davis <[email protected]>
- Loading branch information
Showing
5 changed files
with
121 additions
and
63 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,6 +19,7 @@ mod test { | |
mod auto_pairs; | ||
mod commands; | ||
mod movement; | ||
mod picker; | ||
mod prompt; | ||
mod splits; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
use std::fs; | ||
|
||
use helix_core::{path::get_canonicalized_path, Range}; | ||
use helix_loader::{current_working_dir, set_current_working_dir}; | ||
use helix_view::{current_ref, editor::Action}; | ||
use tempfile::{Builder, TempDir}; | ||
|
||
use super::*; | ||
|
||
#[tokio::test(flavor = "multi_thread")] | ||
async fn test_picker_alt_ret() -> anyhow::Result<()> { | ||
// Create two files, open the first and run a global search for a word | ||
// from the second file. Press <alt-ret> to have helix open the second file in the | ||
// new buffer, but not change focus. Then check whether the word is highlighted | ||
// correctly and the view of the first file has not changed. | ||
let tmp_dir = TempDir::new()?; | ||
set_current_working_dir(tmp_dir.path().into())?; | ||
|
||
let mut app = AppBuilder::new().build()?; | ||
|
||
log::debug!( | ||
"set current working directory to {:?}", | ||
current_working_dir() | ||
); | ||
|
||
// Add prefix so helix doesn't hide these files in a picker | ||
let files = [ | ||
Builder::new().prefix("1").tempfile_in(&tmp_dir)?, | ||
Builder::new().prefix("2").tempfile_in(&tmp_dir)?, | ||
]; | ||
let paths = files | ||
.iter() | ||
.map(|f| get_canonicalized_path(f.path()).unwrap()) | ||
.collect::<Vec<_>>(); | ||
|
||
fs::write(&paths[0], "1\n2\n3\n4")?; | ||
fs::write(&paths[1], "first\nsecond")?; | ||
|
||
log::debug!( | ||
"created and wrote two temporary files: {:?} & {:?}", | ||
paths[0], | ||
paths[1] | ||
); | ||
|
||
// Manually open to save the offset, otherwise we won't be able to change the state in the Fn trait | ||
app.editor.open(files[0].path(), Action::Replace)?; | ||
let view_offset = current_ref!(app.editor).0.offset; | ||
|
||
test_key_sequences( | ||
&mut app, | ||
vec![ | ||
(Some("<space>/"), None), | ||
(Some("second<ret>"), None), | ||
( | ||
Some("<A-ret><esc>"), | ||
Some(&|app| { | ||
let (view, doc) = current_ref!(app.editor); | ||
assert_eq!(doc.path().unwrap(), &paths[0]); | ||
let select_ranges = doc.selection(view.id).ranges(); | ||
assert_eq!(select_ranges[0], Range::new(0, 1)); | ||
assert_eq!(view.offset, view_offset); | ||
}), | ||
), | ||
( | ||
Some(":buffer<minus>next<ret>"), | ||
Some(&|app| { | ||
let (view, doc) = current_ref!(app.editor); | ||
assert_eq!(doc.path().unwrap(), &paths[1]); | ||
let select_ranges = doc.selection(view.id).ranges(); | ||
assert_eq!(select_ranges.len(), 1); | ||
assert_eq!(select_ranges[0], Range::new(6, 12)); | ||
}), | ||
), | ||
], | ||
false, | ||
) | ||
.await?; | ||
|
||
Ok(()) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters