Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/src/main.rs')
| -rw-r--r-- | helix-term/src/main.rs | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/helix-term/src/main.rs b/helix-term/src/main.rs index bdca0c01..385a0406 100644 --- a/helix-term/src/main.rs +++ b/helix-term/src/main.rs @@ -1,4 +1,5 @@ use anyhow::{Context, Error, Result}; +use crossterm::event::EventStream; use helix_loader::VERSION_AND_GIT_HASH; use helix_term::application::Application; use helix_term::args::Args; @@ -39,7 +40,7 @@ fn main() -> Result<()> { #[tokio::main] async fn main_impl() -> Result<i32> { - let args = Args::parse_args().context("could not parse arguments")?; + let mut args = Args::parse_args().context("could not parse arguments")?; helix_loader::initialize_config_file(args.config_file.clone()); helix_loader::initialize_log_file(args.log_file.clone()); @@ -56,27 +57,24 @@ USAGE: hx [FLAGS] [files]... ARGS: - <files>... Set the input file to use, position can also be specified via file[:row[:col]] + <files>... Sets the input file to use, position can also be specified via file[:row[:col]] FLAGS: - -h, --help Print help information - --tutor Load the tutorial - --health [CATEGORY] Check for potential errors in editor setup - CATEGORY can be a language or one of 'clipboard', 'languages', - 'all-languages' or 'all'. 'languages' is filtered according to - user config, 'all-languages' and 'all' are not. If not specified, - the default is the same as 'all', but with languages filtering. - -g, --grammar {{fetch|build}} Fetch or builds tree-sitter grammars listed in languages.toml - -c, --config <file> Specify a file to use for configuration - -v Increase logging verbosity each use for up to 3 times - --log <file> Specify a file to use for logging + -h, --help Prints help information + --tutor Loads the tutorial + --health [CATEGORY] Checks for potential errors in editor setup + CATEGORY can be a language or one of 'clipboard', 'languages' + or 'all'. 'all' is the default if not specified. + -g, --grammar {{fetch|build}} Fetches or builds tree-sitter grammars listed in languages.toml + -c, --config <file> Specifies a file to use for configuration + -v Increases logging verbosity each use for up to 3 times + --log <file> Specifies a file to use for logging (default file: {}) - -V, --version Print version information - --vsplit Split all given files vertically into different windows - --hsplit Split all given files horizontally into different windows + -V, --version Prints version information + --vsplit Splits all given files vertically into different windows + --hsplit Splits all given files horizontally into different windows -w, --working-dir <path> Specify an initial working directory - +[N] Open the first given file at line number N, or the last line, if - N is not specified. + +N Open the first given file at line number N ", env!("CARGO_PKG_NAME"), VERSION_AND_GIT_HASH, @@ -116,6 +114,10 @@ FLAGS: setup_logging(args.verbosity).context("failed to initialize logging")?; + // Before setting the working directory, resolve all the paths in args.files + for (path, _) in &mut args.files { + *path = helix_stdx::path::canonicalize(&*path); + } // NOTE: Set the working directory early so the correct configuration is loaded. Be aware that // Application::new() depends on this logic so it must be updated if this changes. if let Some(path) = &args.working_directory { @@ -151,9 +153,8 @@ FLAGS: // TODO: use the thread local executor to spawn the application task separately from the work pool let mut app = Application::new(args, config, lang_loader).context("unable to start Helix")?; - let mut events = app.event_stream(); - let exit_code = app.run(&mut events).await?; + let exit_code = app.run(&mut EventStream::new()).await?; Ok(exit_code) } |