From e7a598428de0f2be88f19974524d3c95d0ec46ca Mon Sep 17 00:00:00 2001 From: Nikita Revenco <154856872+nikitarevenco@users.noreply.github.com> Date: Sat, 9 Nov 2024 14:21:25 +0000 Subject: [PATCH] feat: :cd with no args changes to home directory --- helix-term/src/commands/typed.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs index 68ba9bab5..416840ab8 100644 --- a/helix-term/src/commands/typed.rs +++ b/helix-term/src/commands/typed.rs @@ -1,3 +1,4 @@ +use std::borrow::Borrow; use std::fmt::Write; use std::io::BufReader; use std::ops::Deref; @@ -9,6 +10,7 @@ use super::*; use helix_core::fuzzy::fuzzy_match; use helix_core::indent::MAX_INDENT; use helix_core::{line_ending, shellwords::Shellwords}; +use helix_stdx::path::home_dir; use helix_view::document::{read_to_string, DEFAULT_LANGUAGE_NAME}; use helix_view::editor::{CloseError, ConfigEvent}; use serde_json::Value; @@ -1087,11 +1089,14 @@ fn change_current_directory( return Ok(()); } - let dir = args - .first() - .context("target directory not provided")? - .as_ref(); - let dir = helix_stdx::path::expand_tilde(Path::new(dir)); + let dir = match args.first() { + Some(input_path) => { + helix_stdx::path::expand_tilde(Path::new(input_path.as_ref()).to_owned()) + .deref() + .to_path_buf() + } + None => home_dir()?.as_path().to_owned(), + }; helix_stdx::env::set_current_working_dir(dir)?;