ability to change editor
This commit is contained in:
parent
1a136a8966
commit
b91af6d847
@ -3,9 +3,6 @@
|
|||||||
A (currently in development) to do app for the command line.
|
A (currently in development) to do app for the command line.
|
||||||
|
|
||||||
## Planned Features and Changes:
|
## Planned Features and Changes:
|
||||||
- Options for editing additional config
|
|
||||||
- `config`
|
|
||||||
- `editor` subcommand for setting default text editor
|
|
||||||
- Listing tasks in vault (command: `list`)
|
- Listing tasks in vault (command: `list`)
|
||||||
- Options for which field to order by, and how to order (ascending or descending)
|
- Options for which field to order by, and how to order (ascending or descending)
|
||||||
- Options for which columns to include
|
- Options for which columns to include
|
||||||
|
@ -4,10 +4,20 @@ use crate::colour;
|
|||||||
|
|
||||||
use std::path;
|
use std::path;
|
||||||
|
|
||||||
#[derive(Debug, Default, serde::Serialize, serde::Deserialize)]
|
#[derive(Debug, serde::Serialize, serde::Deserialize)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
/// Paths for all vaults, ordered according to recent usage, with current at the front.
|
/// Paths for all vaults, ordered according to recent usage, with current at the front.
|
||||||
pub vaults : Vec<(String, path::PathBuf)>,
|
pub vaults : Vec<(String, path::PathBuf)>,
|
||||||
|
pub editor : String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Config {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
vaults : Vec::default(),
|
||||||
|
editor : String::from("vim"),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
38
src/main.rs
38
src/main.rs
@ -1,5 +1,3 @@
|
|||||||
//#![allow(dead_code, unused_variables)]
|
|
||||||
|
|
||||||
mod git;
|
mod git;
|
||||||
mod edit;
|
mod edit;
|
||||||
mod vault;
|
mod vault;
|
||||||
@ -71,11 +69,23 @@ enum Command {
|
|||||||
// - which columns to include
|
// - which columns to include
|
||||||
// - filters which exclude values
|
// - filters which exclude values
|
||||||
},
|
},
|
||||||
|
/// For making changes to global configuration.
|
||||||
|
#[clap(subcommand)]
|
||||||
|
Config(ConfigCommand),
|
||||||
/// Commands for interacting with vaults.
|
/// Commands for interacting with vaults.
|
||||||
#[clap(subcommand)]
|
#[clap(subcommand)]
|
||||||
Vault(VaultCommand),
|
Vault(VaultCommand),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(clap::Subcommand, Debug)]
|
||||||
|
enum ConfigCommand {
|
||||||
|
/// For checking or changing default text editor command.
|
||||||
|
Editor {
|
||||||
|
/// Command to launch editor. Omit to view current editor.
|
||||||
|
editor : Option<String>,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(clap::Subcommand, Debug)]
|
#[derive(clap::Subcommand, Debug)]
|
||||||
enum VaultCommand {
|
enum VaultCommand {
|
||||||
/// Creates a new vault at the specified location of the given name.
|
/// Creates a new vault at the specified location of the given name.
|
||||||
@ -153,7 +163,23 @@ fn program() -> Result<(), error::Error> {
|
|||||||
println!("Switched to vault {}", colour::vault(&name));
|
println!("Switched to vault {}", colour::vault(&name));
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
Config(command) => {
|
||||||
|
use ConfigCommand::*;
|
||||||
|
match command {
|
||||||
|
Editor { editor } => {
|
||||||
|
match editor {
|
||||||
|
Some(editor) => {
|
||||||
|
config.editor = editor;
|
||||||
|
println!("Updated editor command to: {}", config.editor);
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
println!("Current editor command: {}", config.editor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
command => {
|
command => {
|
||||||
let vault_folder = &config.current_vault()?.1;
|
let vault_folder = &config.current_vault()?.1;
|
||||||
let mut state = state::State::load(vault_folder)?;
|
let mut state = state::State::load(vault_folder)?;
|
||||||
@ -180,10 +206,10 @@ fn program() -> Result<(), error::Error> {
|
|||||||
Edit { id_or_name, info } => {
|
Edit { id_or_name, info } => {
|
||||||
let id = state.name_or_id_to_id(&id_or_name)?;
|
let id = state.name_or_id_to_id(&id_or_name)?;
|
||||||
if info {
|
if info {
|
||||||
edit::edit_info(id, vault_folder.clone(), "nvim")?;
|
edit::edit_info(id, vault_folder.clone(), &config.editor)?;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
edit::edit_raw(id, vault_folder.clone(), "nvim", &mut state)?;
|
edit::edit_raw(id, vault_folder.clone(), &config.editor, &mut state)?;
|
||||||
}
|
}
|
||||||
println!("Updated task {}", colour::id(&id.to_string()));
|
println!("Updated task {}", colour::id(&id.to_string()));
|
||||||
},
|
},
|
||||||
@ -207,7 +233,7 @@ fn program() -> Result<(), error::Error> {
|
|||||||
List {} => {
|
List {} => {
|
||||||
tasks::list(vault_folder)?;
|
tasks::list(vault_folder)?;
|
||||||
}
|
}
|
||||||
Vault(_) => unreachable!(),
|
Vault(_) | Config(_) => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
||||||
state.save()?;
|
state.save()?;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user