67 lines
2.0 KiB
Rust
67 lines
2.0 KiB
Rust
use std::collections::BTreeSet;
|
|
|
|
use super::FileAccessInterface;
|
|
use super::LocalFileAccessInterface;
|
|
use crate::types::IndentationLevel;
|
|
use crate::types::Object;
|
|
|
|
// TODO: Ultimately, I think we'll need most of this: https://orgmode.org/manual/In_002dbuffer-Settings.html
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct GlobalSettings<'g, 's> {
|
|
pub radio_targets: Vec<&'g Vec<Object<'s>>>,
|
|
pub file_access: &'g dyn FileAccessInterface,
|
|
pub in_progress_todo_keywords: BTreeSet<String>,
|
|
pub complete_todo_keywords: BTreeSet<String>,
|
|
/// Set to true to allow for plain lists using single letters as the bullet in the same way that numbers are used.
|
|
///
|
|
/// Corresponds to the org-list-allow-alphabetical elisp variable.
|
|
pub list_allow_alphabetical: bool,
|
|
|
|
/// How many spaces a tab should be equal to.
|
|
///
|
|
/// Corresponds to the tab-width elisp variable.
|
|
pub tab_width: IndentationLevel,
|
|
|
|
/// Whether to only allow odd headline levels.
|
|
///
|
|
/// Corresponds to org-odd-levels-only elisp variable.
|
|
pub odd_levels_only: HeadlineLevelFilter,
|
|
}
|
|
|
|
pub const DEFAULT_TAB_WIDTH: IndentationLevel = 8;
|
|
|
|
impl<'g, 's> GlobalSettings<'g, 's> {
|
|
fn new() -> GlobalSettings<'g, 's> {
|
|
GlobalSettings {
|
|
radio_targets: Vec::new(),
|
|
file_access: &LocalFileAccessInterface {
|
|
working_directory: None,
|
|
},
|
|
in_progress_todo_keywords: BTreeSet::new(),
|
|
complete_todo_keywords: BTreeSet::new(),
|
|
list_allow_alphabetical: false,
|
|
tab_width: DEFAULT_TAB_WIDTH,
|
|
odd_levels_only: HeadlineLevelFilter::default(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'g, 's> Default for GlobalSettings<'g, 's> {
|
|
fn default() -> GlobalSettings<'g, 's> {
|
|
GlobalSettings::new()
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq)]
|
|
pub enum HeadlineLevelFilter {
|
|
Odd,
|
|
OddEven,
|
|
}
|
|
|
|
impl Default for HeadlineLevelFilter {
|
|
fn default() -> Self {
|
|
HeadlineLevelFilter::OddEven
|
|
}
|
|
}
|