on master help sign in
goto_file_impl: use relative path to open file (#7965)
0cc94cdMike
helix-term/src/commands.rs+5−1
@@ -1160,6 +1160,10 @@ fn goto_file_impl(cx: &mut Context, action: Action) {
1160 let (view, doc) = current_ref!(cx.editor);
1160 let (view, doc) = current_ref!(cx.editor);
1161 let text = doc.text();
1161 let text = doc.text();
1162 let selections = doc.selection(view.id);
1162 let selections = doc.selection(view.id);
1163+ let rel_path = doc
1164+ .relative_path()
1165+ .map(|path| path.parent().unwrap().to_path_buf())
1166+ .unwrap_or_default();
1163 let mut paths: Vec<_> = selections
1167 let mut paths: Vec<_> = selections
1164 .iter()
1168 .iter()
1165 .map(|r| text.slice(r.from()..r.to()).to_string())
1169 .map(|r| text.slice(r.from()..r.to()).to_string())
@@ -1190,7 +1194,7 @@ fn goto_file_impl(cx: &mut Context, action: Action) {
1190 for sel in paths {
1194 for sel in paths {
1191 let p = sel.trim();
1195 let p = sel.trim();
1192 if !p.is_empty() {
1196 if !p.is_empty() {
1193− let path = Path::new(p);
1197+ let path = &rel_path.join(p);
1194 if path.is_dir() {
1198 if path.is_dir() {
1195 let picker = ui::file_picker(path.into(), &cx.editor.config());
1199 let picker = ui::file_picker(path.into(), &cx.editor.config());
1196 cx.push_layer(Box::new(overlaid(picker)));
1200 cx.push_layer(Box::new(overlaid(picker)));