Add LSP completion/code actions/rename/signature help infrastructure, fix TypeScript LSP, rebrand app identifiers
- LSP Layer: Add completion, completion_resolve, signature_help, code_action, prepare_rename, and rename methods to TextDocumentService and LspServerModel - Types: Add CompletionItemData, CompletionResult, SignatureHelpResult, CodeActionData, PrepareRenameResult, RenameResult, FileEdits - Feature Flags: Add LspCompletion, LspCodeActions, LspRename, LspSignatureHelp - Client Capabilities: Declare completion, signature help, rename, and code action capabilities so servers advertise these features - Completion UI: Add completion state machine with debounced triggers, fuzzy filtering, positioned overlay menu, and edit application - TypeScript LSP: Switch to npx for running typescript-language-server (handles download/caching automatically, survives node version switches) - PATH Resolution: Add interactive shell PATH fallback for LSP server discovery and spawning (fixes nvm/fnm/volta users) - App Identity: Rebrand from com.samsung.Galaxy/dev.warp.WarpOss to samsung.galaxy.GalaxyOss across bundle IDs, URL schemes, and plists - Add scripts/reset-galaxy.sh for clean slate testing - Galaxy status messages and other in-progress work Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
f37a744692
commit
a75bc99852
@@ -48,4 +48,37 @@ impl CommandBuilder {
|
||||
}
|
||||
cmd
|
||||
}
|
||||
|
||||
/// Attempts to capture PATH from the user's login shell.
|
||||
/// This is a fallback for when the PATH passed in from the terminal session
|
||||
/// doesn't include paths set by tools like nvm, pyenv, rbenv, etc. that
|
||||
/// modify PATH in shell rc files.
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
pub async fn capture_interactive_shell_path() -> Option<String> {
|
||||
let shell = std::env::var("SHELL").unwrap_or_else(|_| "/bin/zsh".to_string());
|
||||
|
||||
let output = Command::new(&shell)
|
||||
.args(["-i", "-l", "-c", "echo $PATH"])
|
||||
.output()
|
||||
.await
|
||||
.ok()?;
|
||||
|
||||
if !output.status.success() {
|
||||
log::warn!(
|
||||
"Failed to capture PATH from interactive shell ({}): {}",
|
||||
shell,
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
);
|
||||
return None;
|
||||
}
|
||||
|
||||
let path = String::from_utf8_lossy(&output.stdout).trim().to_string();
|
||||
if path.is_empty() {
|
||||
log::warn!("Interactive shell returned empty PATH");
|
||||
return None;
|
||||
}
|
||||
|
||||
log::info!("Captured PATH from interactive shell ({shell})");
|
||||
Some(path)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user