This is a better mapping of solarized to console/powershell
This commit is contained in:
parent
f825c6a061
commit
66d2f1fea8
2 changed files with 139 additions and 68 deletions
|
|
@ -131,6 +131,67 @@ function Add-ConsoleHelper()
|
||||||
Add-Type -TypeDefinition $code -ReferencedAssemblies @('System.Drawing')
|
Add-Type -TypeDefinition $code -ReferencedAssemblies @('System.Drawing')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-SolarizedColorTable()
|
||||||
|
{
|
||||||
|
# This table is mostly from http://ethanschoonover.com/solarized, with the console color mapping proposed here:
|
||||||
|
# https://github.com/neilpa/cmd-colors-solarized
|
||||||
|
#
|
||||||
|
$source = @"
|
||||||
|
SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB ConsoleColor
|
||||||
|
--------- ------- ---- ------- ----------- ---------- ----------- ----------- ------------
|
||||||
|
base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21 DarkGray
|
||||||
|
base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26 Black
|
||||||
|
base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46 DarkGreen
|
||||||
|
base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51 DarkYellow
|
||||||
|
base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59 DarkBlue
|
||||||
|
base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63 DarkCyan
|
||||||
|
base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93 Gray
|
||||||
|
base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99 White
|
||||||
|
yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71 Yellow
|
||||||
|
orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80 DarkRed
|
||||||
|
red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86 Red
|
||||||
|
magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83 Magenta
|
||||||
|
violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77 DarkMagenta
|
||||||
|
blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82 Blue
|
||||||
|
cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63 Cyan
|
||||||
|
green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60 Green
|
||||||
|
"@
|
||||||
|
|
||||||
|
$table = @{}
|
||||||
|
$lines = $source -split "`n"
|
||||||
|
for($i = 2; $i -lt $lines.Length; $i++)
|
||||||
|
{
|
||||||
|
$tok = $lines[$i].Split(@(' '), "RemoveEmptyEntries")
|
||||||
|
$val = New-Object PSObject -Property (@{
|
||||||
|
"Solarized"=$tok[0];
|
||||||
|
"Hex"=$tok[1];
|
||||||
|
"TermCol"=$tok[3];
|
||||||
|
"XTerm"=$tok[4];
|
||||||
|
"XTermHex"=$tok[5];
|
||||||
|
"L"=[int]$tok[6];
|
||||||
|
"A"=[int]$tok[7];
|
||||||
|
"B"=[int]$tok[8];
|
||||||
|
"Red"=[int]$tok[9];
|
||||||
|
"Green"=[int]$tok[10];
|
||||||
|
"Blue"=[int]$tok[11];
|
||||||
|
"Hue"=[int]$tok[12];
|
||||||
|
"Saturation"=[int]$tok[13];
|
||||||
|
"Black"=[int]$tok[14];
|
||||||
|
"ConsoleColor"=[ConsoleColor]($tok[15])
|
||||||
|
})
|
||||||
|
|
||||||
|
$table[$val.Solarized]=$val
|
||||||
|
}
|
||||||
|
return $table
|
||||||
|
}
|
||||||
|
|
||||||
|
$SolarizedTable = Get-SolarizedColorTable
|
||||||
|
|
||||||
|
function ConvertFrom-SolarizedColor($solarized)
|
||||||
|
{
|
||||||
|
return $SolarizedTable[$solarized].ConsoleColor
|
||||||
|
}
|
||||||
|
|
||||||
function Set-SolarizedColors([switch]$Light, [switch]$Dark)
|
function Set-SolarizedColors([switch]$Light, [switch]$Dark)
|
||||||
{
|
{
|
||||||
if ( (-not $Light) -and (-not $Dark) )
|
if ( (-not $Light) -and (-not $Dark) )
|
||||||
|
|
@ -138,89 +199,48 @@ function Set-SolarizedColors([switch]$Light, [switch]$Dark)
|
||||||
$Light = $true
|
$Light = $true
|
||||||
}
|
}
|
||||||
|
|
||||||
# Here's the solarized table...
|
|
||||||
#
|
|
||||||
# SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB
|
|
||||||
# --------- ------- ---- ------- ----------- ---------- ----------- -----------
|
|
||||||
$base03 = "#002b36" # 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
|
|
||||||
$base02 = "#073642" # 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
|
|
||||||
$base01 = "#586e75" # 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46
|
|
||||||
$base00 = "#657b83" # 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51
|
|
||||||
$base0 = "#839496" # 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
|
|
||||||
$base1 = "#93a1a1" # 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
|
|
||||||
$base2 = "#eee8d5" # 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93
|
|
||||||
$base3 = "#fdf6e3" # 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
|
|
||||||
$yellow = "#b58900" # 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
|
|
||||||
$orange = "#cb4b16" # 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
|
|
||||||
$red = "#dc322f" # 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
|
|
||||||
$magenta = "#d33682" # 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
|
|
||||||
$violet = "#6c71c4" # 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
|
|
||||||
$blue = "#268bd2" # 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
|
|
||||||
$cyan = "#2aa198" # 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
|
|
||||||
$green = "#859900" # 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
|
|
||||||
|
|
||||||
if ($Host.Name -eq "ConsoleHost")
|
if ($Host.Name -eq "ConsoleHost")
|
||||||
{
|
{
|
||||||
Add-Type -AssemblyName System.Drawing
|
Add-Type -AssemblyName System.Drawing
|
||||||
Add-ConsoleHelper
|
Add-ConsoleHelper
|
||||||
|
|
||||||
# Redefine the standard console colors to have the Solarized-Light
|
# Redefine the standard console colors to have the Solarized palette.
|
||||||
# palette.
|
|
||||||
#
|
#
|
||||||
# TODO: Check this out as a color palette...
|
$table = Get-SolarizedColorTable
|
||||||
#
|
foreach( $entry in $table.Values )
|
||||||
if ([ConsoleColorHelper]::GetStandardConsoleColor([ConsoleColor]::DarkGray) -ne $base03)
|
|
||||||
{
|
{
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkGray, $base03)
|
[ConsoleColorHelper]::SetStandardConsoleColor($entry.ConsoleColor, $entry.Hex)
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Black, $base02)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Green, $base01)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Yellow, $base00)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Blue, $base0)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Cyan, $base1)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Gray, $base2)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::White, $base3)
|
|
||||||
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkYellow, $yellow)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Red, $orange)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkRed, $red)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkMagenta, $magenta)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::Magenta, $violet)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkBlue, $blue)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkCyan, $cyan)
|
|
||||||
[ConsoleColorHelper]::SetStandardConsoleColor([ConsoleColor]::DarkGreen, $green)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($Light)
|
if ($Light)
|
||||||
{
|
{
|
||||||
$Host.UI.RawUI.BackgroundColor = [ConsoleColor]::White
|
$Host.UI.RawUI.BackgroundColor = ConvertFrom-SolarizedColor "base3"
|
||||||
$Host.UI.RawUI.ForegroundColor = [ConsoleColor]::Yellow
|
$Host.UI.RawUI.ForegroundColor = ConvertFrom-SolarizedColor "base00"
|
||||||
|
|
||||||
$Host.PrivateData.VerboseForegroundColor = [ConsoleColor]::Cyan
|
$Host.PrivateData.WarningForegroundColor = ConvertFrom-SolarizedColor "base1"
|
||||||
|
$Host.PrivateData.VerboseForegroundColor = ConvertFrom-SolarizedColor "base01"
|
||||||
|
$Host.PrivateData.DebugForegroundColor = ConvertFrom-SolarizedColor "base01"
|
||||||
|
|
||||||
$Host.PrivateData.ProgressBackgroundColor = [ConsoleColor]::DarkGray
|
$Host.PrivateData.ErrorBackgroundColor = ConvertFrom-SolarizedColor "base2"
|
||||||
$Host.PrivateData.ProgressForegroundColor = [ConsoleColor]::Blue
|
$Host.PrivateData.WarningBackgroundColor = ConvertFrom-SolarizedColor "base2"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$Host.UI.RawUI.BackgroundColor = [ConsoleColor]::DarkGray
|
$Host.UI.RawUI.BackgroundColor = ConvertFrom-SolarizedColor "base03"
|
||||||
$Host.UI.RawUI.ForegroundColor = [ConsoleColor]::Blue
|
$Host.UI.RawUI.ForegroundColor = ConvertFrom-SolarizedColor "base0"
|
||||||
|
|
||||||
$Host.PrivateData.VerboseForegroundColor = [ConsoleColor]::Green
|
$Host.PrivateData.WarningForegroundColor = ConvertFrom-SolarizedColor "base01"
|
||||||
|
$Host.PrivateData.VerboseForegroundColor = ConvertFrom-SolarizedColor "base1"
|
||||||
|
$Host.PrivateData.DebugForegroundColor = ConvertFrom-SolarizedColor "base1"
|
||||||
|
|
||||||
$Host.PrivateData.ProgressBackgroundColor = [ConsoleColor]::White
|
$Host.PrivateData.ErrorBackgroundColor = ConvertFrom-SolarizedColor "base02"
|
||||||
$Host.PrivateData.ProgressForegroundColor = [ConsoleColor]::Yellow
|
$Host.PrivateData.WarningBackgroundColor = ConvertFrom-SolarizedColor "base02"
|
||||||
}
|
}
|
||||||
|
|
||||||
$Host.PrivateData.ErrorForegroundColor = [ConsoleColor]::DarkRed
|
$Host.PrivateData.ErrorForegroundColor = ConvertFrom-SolarizedColor "red"
|
||||||
$Host.PrivateData.WarningForegroundColor = [ConsoleColor]::DarkYellow
|
|
||||||
$Host.PrivateData.DebugForegroundColor = [ConsoleColor]::DarkBlue
|
|
||||||
|
|
||||||
$Host.PrivateData.ErrorBackgroundColor =
|
|
||||||
$Host.PrivateData.WarningBackgroundColor =
|
|
||||||
$Host.PrivateData.DebugBackgroundColor =
|
$Host.PrivateData.DebugBackgroundColor =
|
||||||
$Host.PrivateData.VerboseBackgroundColor =
|
$Host.PrivateData.VerboseBackgroundColor =
|
||||||
$Host.UI.RawUI.BackgroundColor
|
$Host.UI.RawUI.BackgroundColor
|
||||||
|
|
||||||
Clear-Host
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,10 +60,10 @@ function prompt
|
||||||
# Our "theme", as it were. Note that we assume the use of the
|
# Our "theme", as it were. Note that we assume the use of the
|
||||||
# solarized colors.
|
# solarized colors.
|
||||||
#
|
#
|
||||||
$cdelim = [ConsoleColor]::DarkCyan
|
$cdelim = ConvertFrom-SolarizedColor "base1"
|
||||||
$chost = [ConsoleColor]::DarkGreen
|
$chost = ConvertFrom-SolarizedColor "green"
|
||||||
$cloc = $csym = [ConsoleColor]::DarkCyan
|
$cloc = $csym = ConvertFrom-SolarizedColor "base0"
|
||||||
if (-not $ok) { $csym = [ConsoleColor]::DarkRed; }
|
if (-not $ok) { $csym = ConvertFrom-SolarizedColor "red" }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -208,3 +208,54 @@ function Wrap-Text ($txt)
|
||||||
function ConvertFrom-Base64UTF8($base64) {
|
function ConvertFrom-Base64UTF8($base64) {
|
||||||
return [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($base64))
|
return [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($base64))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Get-TFSWorkspace(
|
||||||
|
[string]$path = ((pwd).Path)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
|
||||||
|
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client")
|
||||||
|
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.WorkItemTracking.Client")
|
||||||
|
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
|
||||||
|
|
||||||
|
function InitServerAndWorkspaceFromWSInfo( $wsInfo )
|
||||||
|
{
|
||||||
|
$tfs = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection( $wsInfo.ServerUri )
|
||||||
|
$versionControlServer = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
|
||||||
|
|
||||||
|
return @{
|
||||||
|
"BuildServer"= $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]);
|
||||||
|
"VersionControl"=$versionControlServer;
|
||||||
|
"WorkItems"=$tfs.GetService([Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]);
|
||||||
|
"Workspace"=$versionControlServer.GetWorkspace($wsInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# is there only 1 workspace in our cache file? If so, use that one regardless of the hint
|
||||||
|
$workspaceInfos = [Microsoft.TeamFoundation.VersionControl.Client.Workstation]::Current.GetAllLocalWorkspaceInfo()
|
||||||
|
if ($workspaceInfos.Length -eq 1)
|
||||||
|
{
|
||||||
|
InitServerAndWorkspaceFromWSInfo($workspaceInfos[0])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$current = $path
|
||||||
|
do
|
||||||
|
{
|
||||||
|
$workspaceInfos = [Microsoft.TeamFoundation.VersionControl.Client.Workstation]::Current.GetLocalWorkspaceInfoRecursively($current)
|
||||||
|
if ($workspaceInfos.Length -gt 1)
|
||||||
|
{
|
||||||
|
throw 'More than one workspace matches the workspace hint "{0}": {1}' -f
|
||||||
|
$current, [string]::join(', ', @($workspaceInfos | %{ $_.Name}))
|
||||||
|
}
|
||||||
|
|
||||||
|
$current = split-path -parent $current
|
||||||
|
} while (($workspaceInfos.Length -ne 1) -and $current)
|
||||||
|
|
||||||
|
if (-not $workspaceInfos)
|
||||||
|
{
|
||||||
|
throw "Could not figure out a workspace based on $path"
|
||||||
|
}
|
||||||
|
|
||||||
|
return InitServerAndWorkspaceFromWSInfo( $workspaceInfos[0] )
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue