mirror of
https://github.com/cmderdev/cmder.git
synced 2025-11-08 21:29:02 +08:00
Compare commits
21 Commits
copilot/su
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
667820105e | ||
|
|
6b26f5b9b4 | ||
|
|
d37d173702 | ||
|
|
1f70cfa508 | ||
|
|
641a3b55fc | ||
|
|
89ec06b387 | ||
|
|
b20f084fbc | ||
|
|
8ab1f11fa4 | ||
|
|
73739407b1 | ||
|
|
aa6b28a2b0 | ||
|
|
d01ab39181 | ||
|
|
a513d08ab8 | ||
|
|
fb01ee7bb9 | ||
|
|
0cbe1e8d8c | ||
|
|
614f314e41 | ||
|
|
9653adc5f9 | ||
|
|
545331a336 | ||
|
|
08ce81609a | ||
|
|
218400a4b8 | ||
|
|
173b86fbc8 | ||
|
|
8ec4789e35 |
@@ -352,6 +352,8 @@ Cmder by default comes with a vendored ConEmu installation as the underlying ter
|
|||||||
|
|
||||||
However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator.
|
However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator.
|
||||||
|
|
||||||
|
⚠ *Note:* Cmder includes built-in support for Windows Terminal directory tracking via OSC 9;9 sequences. This enables "Duplicate Tab" and "Split Pane" features to preserve the current working directory for both `cmd.exe` and PowerShell sessions.
|
||||||
|
|
||||||
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|||||||
@@ -32,7 +32,11 @@ Param(
|
|||||||
# -whatif switch to not actually make changes
|
# -whatif switch to not actually make changes
|
||||||
|
|
||||||
# Path to the vendor configuration source file
|
# Path to the vendor configuration source file
|
||||||
[string]$sourcesPath = "$PSScriptRoot\..\vendor\sources.json"
|
[string]$sourcesPath = "$PSScriptRoot\..\vendor\sources.json",
|
||||||
|
|
||||||
|
# Include pre-release versions (RC, beta, alpha, etc.)
|
||||||
|
# By default, only stable releases are considered
|
||||||
|
[switch]$IncludePrerelease = $false
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get the root directory of the cmder project.
|
# Get the root directory of the cmder project.
|
||||||
@@ -79,11 +83,39 @@ function Match-Filenames {
|
|||||||
return $position
|
return $position
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Checks if a release is a pre-release based on GitHub API flag and version tag keywords
|
||||||
|
# Pre-release keywords include: -rc (release candidate), -beta, -alpha, -preview, -pre
|
||||||
|
function Test-IsPrerelease {
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$release
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if marked as pre-release by GitHub
|
||||||
|
if ($release.prerelease -eq $true) {
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for common pre-release keywords in tag name
|
||||||
|
# This catches versions like v2.50.0-rc, v1.0.0-beta, v1.0.0-alpha, etc.
|
||||||
|
$prereleaseKeywords = @('-rc', '-beta', '-alpha', '-preview', '-pre')
|
||||||
|
foreach ($keyword in $prereleaseKeywords) {
|
||||||
|
if ($release.tag_name -ilike "*$keyword*") {
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
# Uses the GitHub api in order to fetch the current download links for the latest releases of the repo.
|
# Uses the GitHub api in order to fetch the current download links for the latest releases of the repo.
|
||||||
function Fetch-DownloadUrl {
|
function Fetch-DownloadUrl {
|
||||||
param (
|
param (
|
||||||
[Parameter(Mandatory = $true)]
|
[Parameter(Mandatory = $true)]
|
||||||
$urlStr
|
$urlStr,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[bool]$includePrerelease = $false
|
||||||
)
|
)
|
||||||
|
|
||||||
$url = [uri] $urlStr
|
$url = [uri] $urlStr
|
||||||
@@ -127,6 +159,13 @@ function Fetch-DownloadUrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
:loop foreach ($i in $info) {
|
:loop foreach ($i in $info) {
|
||||||
|
# Skip pre-release versions unless explicitly included
|
||||||
|
# Pre-releases include RC (Release Candidate), beta, alpha, and other test versions
|
||||||
|
if (-not $includePrerelease -and (Test-IsPrerelease $i)) {
|
||||||
|
Write-Verbose "Skipping pre-release version: $($i.tag_name)"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if (-not ($i.assets -is [array])) {
|
if (-not ($i.assets -is [array])) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -164,12 +203,26 @@ function Fetch-DownloadUrl {
|
|||||||
|
|
||||||
# Special case for archive downloads of repository
|
# Special case for archive downloads of repository
|
||||||
if (($null -eq $downloadLinks) -or (-not $downloadLinks)) {
|
if (($null -eq $downloadLinks) -or (-not $downloadLinks)) {
|
||||||
if ((($p | ForEach-Object { $_.Trim('/') }) -contains "archive") -and $info[0].tag_name) {
|
if ((($p | ForEach-Object { $_.Trim('/') }) -contains "archive")) {
|
||||||
for ($i = 0; $i -lt $p.Length; $i++) {
|
# Find the first release that matches our pre-release filtering criteria
|
||||||
if ($p[$i].Trim('/') -eq "archive") {
|
$selectedRelease = $null
|
||||||
$p[$i + 1] = $info[0].tag_name + ".zip"
|
foreach ($release in $info) {
|
||||||
$downloadLinks = $url.Scheme + "://" + $url.Host + ($p -join '')
|
# Apply the same filtering logic
|
||||||
return $downloadLinks
|
if (-not $includePrerelease -and (Test-IsPrerelease $release)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
# Use the first release that passes the filter
|
||||||
|
$selectedRelease = $release
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($selectedRelease -and $selectedRelease.tag_name) {
|
||||||
|
for ($i = 0; $i -lt $p.Length; $i++) {
|
||||||
|
if ($p[$i].Trim('/') -eq "archive") {
|
||||||
|
$p[$i + 1] = $selectedRelease.tag_name + ".zip"
|
||||||
|
$downloadLinks = $url.Scheme + "://" + $url.Host + ($p -join '')
|
||||||
|
return $downloadLinks
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,7 +268,7 @@ foreach ($s in $sources) {
|
|||||||
|
|
||||||
Write-Verbose "Old Link: $($s.url)"
|
Write-Verbose "Old Link: $($s.url)"
|
||||||
|
|
||||||
$downloadUrl = Fetch-DownloadUrl $s.url
|
$downloadUrl = Fetch-DownloadUrl $s.url -includePrerelease $IncludePrerelease
|
||||||
|
|
||||||
if (($null -eq $downloadUrl) -or ($downloadUrl -eq '')) {
|
if (($null -eq $downloadUrl) -or ($downloadUrl -eq '')) {
|
||||||
Write-Verbose "No new links were found"
|
Write-Verbose "No new links were found"
|
||||||
|
|||||||
154
vendor/clink.lua
vendored
154
vendor/clink.lua
vendored
@@ -7,7 +7,7 @@
|
|||||||
-- luacheck: globals uah_color cwd_color lamb_color clean_color dirty_color conflict_color unknown_color
|
-- luacheck: globals uah_color cwd_color lamb_color clean_color dirty_color conflict_color unknown_color
|
||||||
-- luacheck: globals prompt_homeSymbol prompt_lambSymbol prompt_type prompt_useHomeSymbol prompt_useUserAtHost
|
-- luacheck: globals prompt_homeSymbol prompt_lambSymbol prompt_type prompt_useHomeSymbol prompt_useUserAtHost
|
||||||
-- luacheck: globals prompt_singleLine prompt_includeVersionControl
|
-- luacheck: globals prompt_singleLine prompt_includeVersionControl
|
||||||
-- luacheck: globals prompt_overrideGitStatusOptIn prompt_overrideSvnStatusOptIn
|
-- luacheck: globals prompt_overrideGitStatusOptIn
|
||||||
-- luacheck: globals clink io.popenyield os.isdir settings.get
|
-- luacheck: globals clink io.popenyield os.isdir settings.get
|
||||||
|
|
||||||
-- At first, load the original clink.lua file
|
-- At first, load the original clink.lua file
|
||||||
@@ -350,13 +350,8 @@ end
|
|||||||
-- @return {false|mercurial branch information}
|
-- @return {false|mercurial branch information}
|
||||||
---
|
---
|
||||||
local function get_hg_branch()
|
local function get_hg_branch()
|
||||||
-- Return the branch information. The default is to get just the
|
-- Return the branch information.
|
||||||
-- branch name, but you could e.g. use the "hg-prompt" extension to
|
local file = io.popen("hg branch 2>nul")
|
||||||
-- get more information, such as any applied mq patches. Here's an
|
|
||||||
-- example of that:
|
|
||||||
-- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
|
||||||
local cmd = "hg branch 2>nul"
|
|
||||||
local file = io.popen(cmd)
|
|
||||||
if not file then
|
if not file then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@@ -424,12 +419,33 @@ local function get_git_status()
|
|||||||
return { status = is_status, conflict = conflict_found }
|
return { status = is_status, conflict = conflict_found }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---
|
||||||
|
-- Get the status of working dir
|
||||||
|
-- @return {bool}
|
||||||
|
---
|
||||||
|
local function get_hg_status()
|
||||||
|
-- The default is to just use the branch name, but you could e.g. use the
|
||||||
|
-- "hg-prompt" extension to get more information, such as any applied mq
|
||||||
|
-- patches. Here's an example of that:
|
||||||
|
-- "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
||||||
|
local pipe = io_popenyield("hg status -amrd 2>&1")
|
||||||
|
if not pipe then
|
||||||
|
return { error = true }
|
||||||
|
end
|
||||||
|
|
||||||
|
local output = pipe:read('*all')
|
||||||
|
pipe:close()
|
||||||
|
|
||||||
|
local dirty = (output ~= nil and output ~= "")
|
||||||
|
return { clean = not dirty }
|
||||||
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Get the status of working dir
|
-- Get the status of working dir
|
||||||
-- @return {bool}
|
-- @return {bool}
|
||||||
---
|
---
|
||||||
local function get_svn_status()
|
local function get_svn_status()
|
||||||
local file = io_popenyield("svn status -q")
|
local file = io_popenyield("svn status -q 2>nul")
|
||||||
if not file then
|
if not file then
|
||||||
return { error = true }
|
return { error = true }
|
||||||
end
|
end
|
||||||
@@ -520,14 +536,6 @@ local function git_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Colors for git status
|
|
||||||
local colors = {
|
|
||||||
clean = get_clean_color(),
|
|
||||||
dirty = get_dirty_color(),
|
|
||||||
conflict = get_conflict_color(),
|
|
||||||
nostatus = get_unknown_color()
|
|
||||||
}
|
|
||||||
|
|
||||||
local git_dir = get_git_dir()
|
local git_dir = get_git_dir()
|
||||||
local color
|
local color
|
||||||
if git_dir then
|
if git_dir then
|
||||||
@@ -547,18 +555,19 @@ local function git_prompt_filter()
|
|||||||
local gitConflict = gitInfo.conflict
|
local gitConflict = gitInfo.conflict
|
||||||
|
|
||||||
if gitStatus == nil then
|
if gitStatus == nil then
|
||||||
color = colors.nostatus
|
color = get_unknown_color()
|
||||||
elseif gitStatus then
|
elseif gitStatus then
|
||||||
color = colors.clean
|
color = get_clean_color()
|
||||||
else
|
else
|
||||||
color = colors.dirty
|
color = get_dirty_color()
|
||||||
end
|
end
|
||||||
|
|
||||||
if gitConflict then
|
if gitConflict then
|
||||||
color = colors.conflict
|
color = get_conflict_color()
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", " "..color.."("..branch..")")
|
local result = " "..color.."("..branch..")"
|
||||||
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", result)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -568,6 +577,18 @@ local function git_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_hg_info_table()
|
||||||
|
local info = clink_promptcoroutine(function ()
|
||||||
|
return get_hg_status() or {}
|
||||||
|
end)
|
||||||
|
if not info then
|
||||||
|
info = cached_info.hg_info or {}
|
||||||
|
else
|
||||||
|
cached_info.hg_info = info
|
||||||
|
end
|
||||||
|
return info
|
||||||
|
end
|
||||||
|
|
||||||
local function hg_prompt_filter()
|
local function hg_prompt_filter()
|
||||||
|
|
||||||
-- Don't do any hg processing if the prompt doesn't want to show hg info.
|
-- Don't do any hg processing if the prompt doesn't want to show hg info.
|
||||||
@@ -577,33 +598,30 @@ local function hg_prompt_filter()
|
|||||||
|
|
||||||
local hg_dir = get_hg_dir()
|
local hg_dir = get_hg_dir()
|
||||||
if hg_dir then
|
if hg_dir then
|
||||||
-- Colors for mercurial status
|
local branch = get_hg_branch()
|
||||||
local colors = {
|
if branch and
|
||||||
clean = get_clean_color(),
|
|
||||||
dirty = get_dirty_color(),
|
|
||||||
nostatus = get_unknown_color()
|
|
||||||
}
|
|
||||||
local output = get_hg_branch()
|
|
||||||
|
|
||||||
-- strip the trailing newline from the branch name
|
|
||||||
local n = #output
|
|
||||||
while n > 0 and output:find("^%s", n) do n = n - 1 end
|
|
||||||
local branch = output:sub(1, n)
|
|
||||||
|
|
||||||
if branch ~= nil and
|
|
||||||
string.sub(branch,1,7) ~= "abort: " and -- not an HG working copy
|
string.sub(branch,1,7) ~= "abort: " and -- not an HG working copy
|
||||||
(not string.find(branch, "is not recognized")) then -- 'hg' not in path
|
(not string.find(branch, "is not recognized")) then -- 'hg' not in path
|
||||||
local color = colors.clean
|
-- If in a different repo or branch than last time, discard cached info
|
||||||
|
if cached_info.hg_dir ~= hg_dir or cached_info.hg_branch ~= branch then
|
||||||
local pipe = io.popen("hg status -amrd 2>&1")
|
cached_info.hg_info = nil
|
||||||
if pipe then
|
cached_info.hg_dir = hg_dir
|
||||||
output = pipe:read('*all')
|
cached_info.hg_branch = branch
|
||||||
pipe:close()
|
|
||||||
if output ~= nil and output ~= "" then color = colors.dirty end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local result = color .. "(" .. branch .. ")"
|
local hgInfo = get_hg_info_table()
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", " "..result)
|
|
||||||
|
local color
|
||||||
|
if not hgInfo or hgInfo.error then
|
||||||
|
color = get_unknown_color()
|
||||||
|
elseif hgInfo.clean then
|
||||||
|
color = get_clean_color()
|
||||||
|
else
|
||||||
|
color = get_dirty_color()
|
||||||
|
end
|
||||||
|
|
||||||
|
local result = " "..color.."("..branch..")"
|
||||||
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", result)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -612,6 +630,18 @@ local function hg_prompt_filter()
|
|||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "")
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function get_svn_info_table()
|
||||||
|
local info = clink_promptcoroutine(function ()
|
||||||
|
return get_svn_status() or {}
|
||||||
|
end)
|
||||||
|
if not info then
|
||||||
|
info = cached_info.svn_info or {}
|
||||||
|
else
|
||||||
|
cached_info.svn_info = info
|
||||||
|
end
|
||||||
|
return info
|
||||||
|
end
|
||||||
|
|
||||||
local function svn_prompt_filter()
|
local function svn_prompt_filter()
|
||||||
|
|
||||||
-- Don't do any svn processing if the prompt doesn't want to show svn info.
|
-- Don't do any svn processing if the prompt doesn't want to show svn info.
|
||||||
@@ -619,13 +649,6 @@ local function svn_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Colors for svn status
|
|
||||||
local colors = {
|
|
||||||
clean = get_clean_color(),
|
|
||||||
dirty = get_dirty_color(),
|
|
||||||
nostatus = get_unknown_color()
|
|
||||||
}
|
|
||||||
|
|
||||||
local svn_dir = get_svn_dir()
|
local svn_dir = get_svn_dir()
|
||||||
if svn_dir then
|
if svn_dir then
|
||||||
-- if we're inside of svn repo then try to detect current branch
|
-- if we're inside of svn repo then try to detect current branch
|
||||||
@@ -637,29 +660,16 @@ local function svn_prompt_filter()
|
|||||||
cached_info.svn_dir = svn_dir
|
cached_info.svn_dir = svn_dir
|
||||||
cached_info.svn_branch = branch
|
cached_info.svn_branch = branch
|
||||||
end
|
end
|
||||||
-- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call
|
|
||||||
local svnStatus
|
local svnInfo = get_svn_info_table()
|
||||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then -- luacheck: no max line length
|
|
||||||
svnStatus = clink_promptcoroutine(function ()
|
|
||||||
return get_svn_status()
|
|
||||||
end)
|
|
||||||
-- If the status result is pending, use the cached version instead, otherwise store it to the cache
|
|
||||||
if svnStatus == nil then
|
|
||||||
svnStatus = cached_info.svn_info
|
|
||||||
else
|
|
||||||
cached_info.svn_info = svnStatus
|
|
||||||
end
|
|
||||||
else
|
|
||||||
svnStatus = get_svn_status()
|
|
||||||
end
|
|
||||||
|
|
||||||
local color
|
local color
|
||||||
if not svnStatus or svnStatus.error then
|
if not svnInfo or svnInfo.error then
|
||||||
color = colors.nostatus
|
color = get_unknown_color()
|
||||||
elseif svnStatus.clean then
|
elseif svnInfo.clean then
|
||||||
color = colors.clean
|
color = get_clean_color()
|
||||||
else
|
else
|
||||||
color = colors.dirty
|
color = get_dirty_color()
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", " "..color.."("..branch..")")
|
clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", " "..color.."("..branch..")")
|
||||||
|
|||||||
5
vendor/cmder_prompt_config.lua.default
vendored
5
vendor/cmder_prompt_config.lua.default
vendored
@@ -38,11 +38,6 @@ prompt_includeVersionControl = true
|
|||||||
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
||||||
prompt_overrideGitStatusOptIn = false
|
prompt_overrideGitStatusOptIn = false
|
||||||
|
|
||||||
-- OPTIONAL. If true then always ignore the cmder.status and cmder.cmdstatus svn config settings and run the svn prompt commands in the background.
|
|
||||||
-- default is false
|
|
||||||
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
|
||||||
prompt_overrideSvnStatusOptIn = false
|
|
||||||
|
|
||||||
-- Prompt Attributes
|
-- Prompt Attributes
|
||||||
--
|
--
|
||||||
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
||||||
|
|||||||
2
vendor/init.bat
vendored
2
vendor/init.bat
vendored
@@ -355,7 +355,7 @@ setlocal enabledelayedexpansion
|
|||||||
if defined git_locale (
|
if defined git_locale (
|
||||||
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
||||||
if not defined LANG (
|
if not defined LANG (
|
||||||
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
for /F "delims=" %%F in ('"!git_locale!" -uU 2') do (
|
||||||
set "LANG=%%F"
|
set "LANG=%%F"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
11
vendor/profile.ps1
vendored
11
vendor/profile.ps1
vendored
@@ -28,7 +28,7 @@ if (!$ENV:CMDER_ROOT) {
|
|||||||
# Remove trailing '\'
|
# Remove trailing '\'
|
||||||
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
||||||
|
|
||||||
# -> recent PowerShell versions include PowerShellGet out of the box
|
# Recent PowerShell versions include PowerShellGet out of the box
|
||||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
||||||
|
|
||||||
# Add Cmder modules directory to the autoload path.
|
# Add Cmder modules directory to the autoload path.
|
||||||
@@ -196,6 +196,15 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
|||||||
[ScriptBlock]$Prompt = {
|
[ScriptBlock]$Prompt = {
|
||||||
$lastSUCCESS = $?
|
$lastSUCCESS = $?
|
||||||
$realLastExitCode = $LastExitCode
|
$realLastExitCode = $LastExitCode
|
||||||
|
|
||||||
|
# Emit OSC 9;9 sequence for Windows Terminal directory tracking
|
||||||
|
# This enables "Duplicate Tab" and "Split Pane" to preserve the working directory
|
||||||
|
# Only active in Windows Terminal ($env:WT_SESSION) or ConEmu ($env:ConEmuPID)
|
||||||
|
$loc = $executionContext.SessionState.Path.CurrentLocation
|
||||||
|
if (($env:WT_SESSION -or $env:ConEmuPID) -and $loc.Provider.Name -eq "FileSystem") {
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]27)]9;9;`"$($loc.ProviderPath)`"$([char]27)\"
|
||||||
|
}
|
||||||
|
|
||||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
||||||
if ($lastSUCCESS -or ($LastExitCode -ne 0)) {
|
if ($lastSUCCESS -or ($LastExitCode -ne 0)) {
|
||||||
|
|||||||
19
vendor/sources.json
vendored
19
vendor/sources.json
vendored
@@ -1,22 +1,27 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "git-for-windows",
|
"name": "git-for-windows",
|
||||||
"version": "2.49.0.windows.1",
|
"version": "2.51.2.windows.1",
|
||||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.49.0.windows.1/PortableGit-2.49.0-64-bit.7z.exe"
|
"url": "https://github.com/git-for-windows/git/releases/download/v2.51.2.windows.1/PortableGit-2.51.2-64-bit.7z.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink",
|
"name": "clink",
|
||||||
"version": "1.7.14",
|
"version": "1.8.8",
|
||||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.7.14/clink.1.7.14.843933.zip"
|
"url": "https://github.com/chrisant996/clink/releases/download/v1.8.8/clink.1.8.8.a63364.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "conemu-maximus5",
|
"name": "conemu-maximus5",
|
||||||
"version": "23.07.24",
|
"version": "23.07.24",
|
||||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z"
|
"url": "https://github.com/ConEmu/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "windows-terminal",
|
||||||
|
"version": "1.23.12811.0",
|
||||||
|
"url": "https://github.com/microsoft/terminal/releases/download/v1.23.12811.0/Microsoft.WindowsTerminal_1.23.12811.0_x64.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
"version": "0.6.2",
|
"version": "0.6.6",
|
||||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.2.zip"
|
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.6.zip"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user