summary refs log tree commit diff
path: root/dot_config/powershell
diff options
context:
space:
mode:
authorAlen <alen@dotfiles.xyz>2023-09-13 00:28:43 +0400
committerAlen <alen@dotfiles.xyz>2023-09-14 01:36:41 +0400
commit73ccf329640316f26305e6b0c8dc75956b370237 (patch)
tree10c2717e4b299b78118416dea93f54d9ccd3d8a5 /dot_config/powershell
parent96326bbd44e47f2485cb378401e7a198ec3092a4 (diff)
Add basic PowerShell profile
Diffstat (limited to 'dot_config/powershell')
-rw-r--r--dot_config/powershell/profile.ps185
1 files changed, 85 insertions, 0 deletions
diff --git a/dot_config/powershell/profile.ps1 b/dot_config/powershell/profile.ps1
new file mode 100644
index 0000000..8100a78
--- /dev/null
+++ b/dot_config/powershell/profile.ps1
@@ -0,0 +1,85 @@
+# PSReadline settings
+Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit
+Set-PSReadlineKeyHandler -Key ctrl+a -Function BeginningOfLine
+Set-PSReadlineKeyHandler -Key ctrl+e -Function EndOfLine
+Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
+Set-PSReadLineKeyHandler -Chord UpArrow -Function HistorySearchBackward
+Set-PSReadLineOption -HistorySearchCursorMovesToEnd
+
+# Prompt setup
+Try {
+    # oh-my-posh prompt
+    oh-my-posh init pwsh --config "$HOME/.alen.omp.yaml" | Invoke-Expression
+}
+Catch {
+    # simple prompt
+    function prompt {
+        $lec = $lastExitCode
+        if (!$(Test-Path variable:lastExitCode) -or ($lec -eq 0)) {
+           $error = 0
+        } else {
+           $error = 1
+        }
+        Write-Host ""
+        Write-Host " $(hostname) " -NoNewline -ForegroundColor Black -BackgroundColor Yellow
+        Write-Host " $(Convert-Path $(Get-Location)) " -NoNewline -ForegroundColor White -BackgroundColor Blue
+        Write-Host "" -ForegroundColor White -BackgroundColor Black
+        if ($error) {
+            Write-Host "❯" -NoNewline -ForegroundColor Red
+        } else {
+            Write-Host "❯" -NoNewline -ForegroundColor Green
+        }
+        return " "
+    }
+}
+
+# Auto-env, the lazy way
+function Try-AutoVenv {
+    param (
+        [Parameter(Mandatory=$true)] [string]$Path
+    )
+    if (-Not $(Test-Path Env:VIRTUAL_ENV) -And $(Test-Path .\venv\Scripts\Activate.ps1 -PathType Leaf)) {
+        .\venv\Scripts\Activate.ps1
+    }
+}
+
+function Register-AutoVenv {
+    param()
+    if (-not (Test-Path function:\global:AutoVenvOrigPrompt)) {
+        Copy-Item function:\prompt function:\global:AutoVenvOrigPrompt
+        $global:AutoVenvPromptScriptBlock = {
+            Try-AutoVenv $pwd
+            AutoVenvOrigPrompt
+        }
+        Set-Content -Path function:\prompt -Value $global:AutoVenvPromptScriptBlock -Force
+    }
+}
+
+Register-AutoVenv
+
+# Some aliases
+Set-Alias -Name g -Value git
+Set-Alias -Name q -Value ipython
+Set-Alias -Name which -Value Get-Command
+
+# Has to run after any prompt mods, so run last
+if (Get-Module -ListAvailable -Name ZLocation) {
+    Import-Module ZLocation
+    Set-Alias -Name j -Value Invoke-ZLocation
+}
+
+# Colourful ls and l
+if (Get-Module -ListAvailable -Name Get-ChildItemColor) {
+    Import-Module Get-ChildItemColor
+    Set-Alias l Get-ChildItem -Option AllScope
+    Set-Alias ls Get-ChildItemColorFormatWide -Option AllScope
+} else {
+    Set-Alias l Get-ChildItem -Option AllScope
+    Set-Alias ls Get-ChildItem
+}
+
+# TODO: Brew
+Try {
+    $(/opt/homebrew/bin/brew shellenv) | Invoke-Expression
+}
+Catch {}