aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-05-09 16:02:53 +0000
committerBlaž Hrastnik2021-05-09 16:02:53 +0000
commit0f77f543e5a7a6be0eabd2d4b72591cdafc7ec71 (patch)
treee4705a2e5f04a3e710d77b26b1533f1b31b2fd45
parentd33e8fd3d8fa2062acf697b2feb74877ed309561 (diff)
Determine runtime dir based on executable location or env override.
-rw-r--r--helix-core/src/lib.rs12
-rw-r--r--helix-core/src/syntax.rs3
-rw-r--r--shell.nix2
3 files changed, 16 insertions, 1 deletions
diff --git a/helix-core/src/lib.rs b/helix-core/src/lib.rs
index dda9863b..e68dc186 100644
--- a/helix-core/src/lib.rs
+++ b/helix-core/src/lib.rs
@@ -44,6 +44,18 @@ pub(crate) fn find_first_non_whitespace_char(text: RopeSlice, line_num: usize) -
None
}
+pub fn runtime_dir() -> std::path::PathBuf {
+ // runtime env var || dir where binary is located
+ std::env::var("HELIX_RUNTIME")
+ .map(|path| path.into())
+ .unwrap_or_else(|_| {
+ std::env::current_exe()
+ .ok()
+ .and_then(|path| path.parent().map(|path| path.to_path_buf()))
+ .unwrap()
+ })
+}
+
pub fn config_dir() -> std::path::PathBuf {
// TODO: allow env var override
let xdg_dirs =
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index dbeed45c..aaf22edc 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -63,7 +63,8 @@ fn read_query(language: &str, filename: &str) -> String {
static INHERITS_REGEX: Lazy<Regex> =
Lazy::new(|| Regex::new(r";+\s*inherits\s*:?\s*([a-z_,()]+)\s*").unwrap());
- let root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
+ let root = crate::runtime_dir();
+ // let root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let path = root
.join("../runtime/queries")
diff --git a/shell.nix b/shell.nix
index 82af46d4..0a26b6ad 100644
--- a/shell.nix
+++ b/shell.nix
@@ -11,5 +11,7 @@ pkgs.mkShell {
RUST_BACKTRACE = "1";
# https://github.com/rust-lang/rust/issues/55979
LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib64:$LD_LIBRARY_PATH";
+
+ HELIX_RUNTIME=./runtime;
}