Restore buffer_picker.
This commit is contained in:
parent
376232c543
commit
915fd9ebaf
2 changed files with 37 additions and 37 deletions
|
@ -11,7 +11,7 @@ use once_cell::sync::Lazy;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
compositor::{Callback, Compositor},
|
compositor::{Callback, Compositor},
|
||||||
ui::{self, Popup, Prompt, PromptEvent},
|
ui::{self, Picker, Popup, Prompt, PromptEvent},
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
@ -19,7 +19,7 @@ use std::path::PathBuf;
|
||||||
use helix_view::{
|
use helix_view::{
|
||||||
document::Mode,
|
document::Mode,
|
||||||
view::{View, PADDING},
|
view::{View, PADDING},
|
||||||
Document, Editor,
|
Document, DocumentId, Editor,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crossterm::event::{KeyCode, KeyEvent};
|
use crossterm::event::{KeyCode, KeyEvent};
|
||||||
|
@ -820,10 +820,39 @@ pub fn file_picker(cx: &mut Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn buffer_picker(cx: &mut Context) {
|
pub fn buffer_picker(cx: &mut Context) {
|
||||||
// let documents = cx.editor.documents.iter().map(||).collect();
|
use std::path::{Path, PathBuf};
|
||||||
// (document_id, relative_path/name) mappings
|
let current = cx.editor.view().doc;
|
||||||
// let picker = ui::buffer_picker(&documents, editor.focus);
|
|
||||||
// cx.push_layer(Box::new(picker));
|
let picker = Picker::new(
|
||||||
|
cx.editor
|
||||||
|
.documents
|
||||||
|
.iter()
|
||||||
|
.map(|(id, doc)| (id, doc.relative_path().map(Path::to_path_buf)))
|
||||||
|
.collect(),
|
||||||
|
move |(id, path): &(DocumentId, Option<PathBuf>)| {
|
||||||
|
// format_fn
|
||||||
|
match path {
|
||||||
|
Some(path) => {
|
||||||
|
if *id == current {
|
||||||
|
format!("{} (*)", path.to_str().unwrap()).into()
|
||||||
|
} else {
|
||||||
|
path.to_str().unwrap().into()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => "[NEW]".into(),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|editor: &mut Editor, (_, path): &(DocumentId, Option<PathBuf>)| match path {
|
||||||
|
Some(path) => {
|
||||||
|
use helix_view::editor::Action;
|
||||||
|
editor
|
||||||
|
.open(path.into(), Action::Replace)
|
||||||
|
.expect("editor.open failed");
|
||||||
|
}
|
||||||
|
None => (),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
cx.push_layer(Box::new(picker));
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate line numbers for each selection range
|
// calculate line numbers for each selection range
|
||||||
|
|
|
@ -20,6 +20,8 @@ pub use tui::style::{Color, Modifier, Style};
|
||||||
use helix_core::regex::Regex;
|
use helix_core::regex::Regex;
|
||||||
use helix_view::{Document, Editor};
|
use helix_view::{Document, Editor};
|
||||||
|
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
// TODO: temp
|
// TODO: temp
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn text_color() -> Style {
|
pub fn text_color() -> Style {
|
||||||
|
@ -75,7 +77,6 @@ pub fn regex_prompt(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
use std::path::{Path, PathBuf};
|
|
||||||
pub fn file_picker(root: &str) -> Picker<PathBuf> {
|
pub fn file_picker(root: &str) -> Picker<PathBuf> {
|
||||||
use ignore::Walk;
|
use ignore::Walk;
|
||||||
// TODO: determine root based on git root
|
// TODO: determine root based on git root
|
||||||
|
@ -109,36 +110,6 @@ pub fn file_picker(root: &str) -> Picker<PathBuf> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
use helix_view::View;
|
|
||||||
pub fn buffer_picker(buffers: &[Document], current: usize) -> Picker<(Option<PathBuf>, usize)> {
|
|
||||||
use helix_view::Editor;
|
|
||||||
Picker::new(
|
|
||||||
buffers
|
|
||||||
.iter()
|
|
||||||
.enumerate()
|
|
||||||
.map(|(i, doc)| (doc.relative_path().map(Path::to_path_buf), i))
|
|
||||||
.collect(),
|
|
||||||
move |(path, index): &(Option<PathBuf>, usize)| {
|
|
||||||
// format_fn
|
|
||||||
match path {
|
|
||||||
Some(path) => {
|
|
||||||
if *index == current {
|
|
||||||
format!("{} (*)", path.to_str().unwrap()).into()
|
|
||||||
} else {
|
|
||||||
path.to_str().unwrap().into()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None => "[NEW]".into(),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|editor: &mut Editor, &(_, index): &(Option<PathBuf>, usize)| {
|
|
||||||
// if index < editor.views.len() {
|
|
||||||
// editor.focus = index;
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub mod completers {
|
pub mod completers {
|
||||||
use crate::ui::prompt::Completion;
|
use crate::ui::prompt::Completion;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
Loading…
Reference in a new issue