bootstrap: Add support for ./x setup vim
This commit is contained in:
parent
dfc7e396a6
commit
9b24fae0be
@ -522,6 +522,7 @@ fn install_git_hook_maybe(builder: &Builder<'_>, config: &Config) -> io::Result<
|
|||||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||||
enum EditorKind {
|
enum EditorKind {
|
||||||
Vscode,
|
Vscode,
|
||||||
|
Vim,
|
||||||
Emacs,
|
Emacs,
|
||||||
Helix,
|
Helix,
|
||||||
}
|
}
|
||||||
@ -532,7 +533,7 @@ impl EditorKind {
|
|||||||
/// outdated vs. user-modified settings files.
|
/// outdated vs. user-modified settings files.
|
||||||
fn hashes(&self) -> Vec<&str> {
|
fn hashes(&self) -> Vec<&str> {
|
||||||
match self {
|
match self {
|
||||||
EditorKind::Vscode => vec![
|
EditorKind::Vscode | EditorKind::Vim => vec![
|
||||||
"ea67e259dedf60d4429b6c349a564ffcd1563cf41c920a856d1f5b16b4701ac8",
|
"ea67e259dedf60d4429b6c349a564ffcd1563cf41c920a856d1f5b16b4701ac8",
|
||||||
"56e7bf011c71c5d81e0bf42e84938111847a810eee69d906bba494ea90b51922",
|
"56e7bf011c71c5d81e0bf42e84938111847a810eee69d906bba494ea90b51922",
|
||||||
"af1b5efe196aed007577899db9dae15d6dbc923d6fa42fa0934e68617ba9bbe0",
|
"af1b5efe196aed007577899db9dae15d6dbc923d6fa42fa0934e68617ba9bbe0",
|
||||||
@ -546,9 +547,9 @@ fn hashes(&self) -> Vec<&str> {
|
|||||||
"51068d4747a13732440d1a8b8f432603badb1864fa431d83d0fd4f8fa57039e0",
|
"51068d4747a13732440d1a8b8f432603badb1864fa431d83d0fd4f8fa57039e0",
|
||||||
"d29af4d949bbe2371eac928a3c31cf9496b1701aa1c45f11cd6c759865ad5c45",
|
"d29af4d949bbe2371eac928a3c31cf9496b1701aa1c45f11cd6c759865ad5c45",
|
||||||
],
|
],
|
||||||
EditorKind::Helix => vec![
|
EditorKind::Helix => {
|
||||||
"2d3069b8cf1b977e5d4023965eb6199597755e6c96c185ed5f2854f98b83d233"
|
vec!["2d3069b8cf1b977e5d4023965eb6199597755e6c96c185ed5f2854f98b83d233"]
|
||||||
]
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,6 +560,7 @@ fn settings_path(&self, config: &Config) -> PathBuf {
|
|||||||
fn settings_short_path(&self) -> PathBuf {
|
fn settings_short_path(&self) -> PathBuf {
|
||||||
self.settings_folder().join(match self {
|
self.settings_folder().join(match self {
|
||||||
EditorKind::Vscode => "settings.json",
|
EditorKind::Vscode => "settings.json",
|
||||||
|
EditorKind::Vim => "coc-settings.json",
|
||||||
EditorKind::Emacs => ".dir-locals.el",
|
EditorKind::Emacs => ".dir-locals.el",
|
||||||
EditorKind::Helix => "languages.toml",
|
EditorKind::Helix => "languages.toml",
|
||||||
})
|
})
|
||||||
@ -567,6 +569,7 @@ fn settings_short_path(&self) -> PathBuf {
|
|||||||
fn settings_folder(&self) -> PathBuf {
|
fn settings_folder(&self) -> PathBuf {
|
||||||
match self {
|
match self {
|
||||||
EditorKind::Vscode => PathBuf::new().join(".vscode"),
|
EditorKind::Vscode => PathBuf::new().join(".vscode"),
|
||||||
|
EditorKind::Vim => PathBuf::new().join(".vim"),
|
||||||
EditorKind::Emacs => PathBuf::new(),
|
EditorKind::Emacs => PathBuf::new(),
|
||||||
EditorKind::Helix => PathBuf::new().join(".helix"),
|
EditorKind::Helix => PathBuf::new().join(".helix"),
|
||||||
}
|
}
|
||||||
@ -574,18 +577,16 @@ fn settings_folder(&self) -> PathBuf {
|
|||||||
|
|
||||||
fn settings_template(&self) -> &str {
|
fn settings_template(&self) -> &str {
|
||||||
match self {
|
match self {
|
||||||
EditorKind::Vscode => include_str!("../../../../etc/rust_analyzer_settings.json"),
|
EditorKind::Vscode | EditorKind::Vim => {
|
||||||
|
include_str!("../../../../etc/rust_analyzer_settings.json")
|
||||||
|
}
|
||||||
EditorKind::Emacs => include_str!("../../../../etc/rust_analyzer_eglot.el"),
|
EditorKind::Emacs => include_str!("../../../../etc/rust_analyzer_eglot.el"),
|
||||||
EditorKind::Helix => include_str!("../../../../etc/rust_analyzer_helix.toml"),
|
EditorKind::Helix => include_str!("../../../../etc/rust_analyzer_helix.toml"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn backup_extension(&self) -> &str {
|
fn backup_extension(&self) -> String {
|
||||||
match self {
|
format!("{}.bak", self.settings_short_path().extension().unwrap().to_str().unwrap())
|
||||||
EditorKind::Vscode => "json.bak",
|
|
||||||
EditorKind::Emacs => "el.bak",
|
|
||||||
EditorKind::Helix => "toml.bak",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -627,6 +628,7 @@ fn run(self, builder: &Builder<'_>) -> Self::Output {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl_editor_support!(vscode, Vscode);
|
impl_editor_support!(vscode, Vscode);
|
||||||
|
impl_editor_support!(vim, Vim);
|
||||||
impl_editor_support!(emacs, Emacs);
|
impl_editor_support!(emacs, Emacs);
|
||||||
impl_editor_support!(helix, Helix);
|
impl_editor_support!(helix, Helix);
|
||||||
|
|
||||||
|
@ -1001,7 +1001,15 @@ macro_rules! describe {
|
|||||||
run::GenerateCompletions,
|
run::GenerateCompletions,
|
||||||
),
|
),
|
||||||
Kind::Setup => {
|
Kind::Setup => {
|
||||||
describe!(setup::Profile, setup::Hook, setup::Link, setup::Vscode, setup::Emacs, setup::Helix)
|
describe!(
|
||||||
|
setup::Profile,
|
||||||
|
setup::Hook,
|
||||||
|
setup::Link,
|
||||||
|
setup::Vscode,
|
||||||
|
setup::Emacs,
|
||||||
|
setup::Helix,
|
||||||
|
setup::Vim
|
||||||
|
)
|
||||||
}
|
}
|
||||||
Kind::Clean => describe!(clean::CleanAll, clean::Rustc, clean::Std),
|
Kind::Clean => describe!(clean::CleanAll, clean::Rustc, clean::Std),
|
||||||
Kind::Vendor => describe!(vendor::Vendor),
|
Kind::Vendor => describe!(vendor::Vendor),
|
||||||
|
@ -450,13 +450,14 @@ pub enum Subcommand {
|
|||||||
To only set up the git hook, VS Code config or toolchain link, you may use
|
To only set up the git hook, VS Code config or toolchain link, you may use
|
||||||
./x.py setup hook
|
./x.py setup hook
|
||||||
./x.py setup vscode
|
./x.py setup vscode
|
||||||
|
./x.py setup vim
|
||||||
./x.py setup emacs
|
./x.py setup emacs
|
||||||
./x.py setup helix
|
./x.py setup helix
|
||||||
./x.py setup link", Profile::all_for_help(" ").trim_end()))]
|
./x.py setup link", Profile::all_for_help(" ").trim_end()))]
|
||||||
Setup {
|
Setup {
|
||||||
/// Either the profile for `config.toml` or another setup action.
|
/// Either the profile for `config.toml` or another setup action.
|
||||||
/// May be omitted to set up interactively
|
/// May be omitted to set up interactively
|
||||||
#[arg(value_name = "<PROFILE>|hook|vscode|emacs|helix|link")]
|
#[arg(value_name = "<PROFILE>|hook|vscode|vim|emacs|helix|link")]
|
||||||
profile: Option<PathBuf>,
|
profile: Option<PathBuf>,
|
||||||
},
|
},
|
||||||
/// Suggest a subset of tests to run, based on modified files
|
/// Suggest a subset of tests to run, based on modified files
|
||||||
|
@ -270,4 +270,9 @@ pub fn human_readable_changes(changes: &[ChangeInfo]) -> String {
|
|||||||
severity: ChangeSeverity::Info,
|
severity: ChangeSeverity::Info,
|
||||||
summary: "If `llvm.download-ci-llvm` is not defined, it defaults to `true`.",
|
summary: "If `llvm.download-ci-llvm` is not defined, it defaults to `true`.",
|
||||||
},
|
},
|
||||||
|
ChangeInfo {
|
||||||
|
change_id: 131075,
|
||||||
|
severity: ChangeSeverity::Info,
|
||||||
|
summary: "New options for ./x setup added - ./x setup [vim|emacs|helix]",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
@ -2741,7 +2741,7 @@ _x.py() {
|
|||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
x.py__setup)
|
x.py__setup)
|
||||||
opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [<PROFILE>|hook|vscode|emacs|helix|link] [PATHS]... [ARGS]..."
|
opts="-v -i -j -h --verbose --incremental --config --build-dir --build --host --target --exclude --skip --include-default-paths --rustc-error-format --on-fail --dry-run --dump-bootstrap-shims --stage --keep-stage --keep-stage-std --src --jobs --warnings --error-format --json-output --color --bypass-bootstrap-lock --rust-profile-generate --rust-profile-use --llvm-profile-use --llvm-profile-generate --enable-bolt-settings --skip-stage0-validation --reproducible-artifact --set --help [<PROFILE>|hook|vscode|vim|emacs|helix|link] [PATHS]... [ARGS]..."
|
||||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
||||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
return 0
|
return 0
|
||||||
|
Loading…
Reference in New Issue
Block a user