diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 56e4f1b6..7434d4cd 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -2288,16 +2288,17 @@ fn buffer_picker(cx: &mut Context) {
         cx.editor
             .documents
             .iter()
-            .map(|(id, doc)| (id, doc.relative_path()))
+            .map(|(id, doc)| (id, doc.path().cloned()))
             .collect(),
         move |(id, path): &(DocumentId, Option<PathBuf>)| {
-            // format_fn
+            use helix_view::document::relative_path;
+            let path = path.as_deref().map(relative_path);
             match path.as_ref().and_then(|path| path.to_str()) {
                 Some(path) => {
                     if *id == current {
-                        format!("{} (*)", path).into()
+                        format!("{} (*)", &path).into()
                     } else {
-                        path.into()
+                        path.to_owned().into()
                     }
                 }
                 None => "[scratch buffer]".into(),
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index ff0c8bf4..b38a94ab 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -398,6 +398,14 @@ pub fn canonicalize_path(path: &Path) -> std::io::Result<PathBuf> {
     Ok(normalize_path(&path))
 }
 
+pub fn relative_path(mut path: &Path) -> PathBuf {
+    let cwdir = std::env::current_dir().expect("couldn't determine current directory");
+    if path.is_absolute() {
+        path = path.strip_prefix(cwdir).unwrap_or(path)
+    };
+    fold_home_dir(path)
+}
+
 use helix_lsp::lsp;
 use url::Url;
 
@@ -936,15 +944,7 @@ impl Document {
     }
 
     pub fn relative_path(&self) -> Option<PathBuf> {
-        let cwdir = std::env::current_dir().expect("couldn't determine current directory");
-
-        self.path.as_ref().map(|path| {
-            let mut path = path.as_path();
-            if path.is_absolute() {
-                path = path.strip_prefix(cwdir).unwrap_or(path)
-            };
-            fold_home_dir(path)
-        })
+        self.path.as_deref().map(relative_path)
     }
 
     // pub fn slice<R>(&self, range: R) -> RopeSlice where R: RangeBounds {