diff --git a/README.md b/README.md index dcd0961..e139e14 100644 --- a/README.md +++ b/README.md @@ -18,12 +18,13 @@ - [Rectangle](https://github.com/rxhanson/Rectanglehttps://github.com/rxhanson/Rectangle) - [MiddleClick](https://github.com/artginzburg/MiddleClick-BigSur) - [LinearMouse](https://linearmouse.org/) -- [AltTab MacOS](https://github.com/lwouis/alt-tab-macos) +- [OpenInTerminal](https://github.com/Ji4n1ng/OpenInTerminal) ### Windows -- AutoHotKey +- [AutoHotKey v1](https://www.autohotkey.com/download/1.1/) - ShareX - Powershell Core - Windows Terminal - WSL (native feature) + diff --git a/config/hammerspoon/init.lua b/config/hammerspoon/init.lua index dd4bcd0..6abd544 100644 --- a/config/hammerspoon/init.lua +++ b/config/hammerspoon/init.lua @@ -83,7 +83,7 @@ function focusOrOpenFirefox() if (count > 0) then wf_browser:getWindows()[1]:focus() - print(count) + -- print(count) else -- for firefox: hs.osascript.applescript(string.format([[ @@ -108,7 +108,7 @@ function focusOrOpenChromium() if (count > 0) then wf_browser:getWindows()[1]:focus() - print(count) + -- print(count) else hs.osascript.applescript(string.format([[ tell application "%s" @@ -125,22 +125,22 @@ hs.hotkey.bind({"cmd", "ctrl"}, "W", focusOrOpenChromium) -- CHROMIUM-BASED BROWSERS ONLY: Open new tab to right of current browser -hs.hotkey.bind({"cmd", "option"}, "T", function() - - local focusedAppName = hs.window.focusedWindow():application():title() - - if focusedAppName == chromiumBrowser - then - hs.osascript.applescript(string.format([[ - tell application "System Events" to tell process "%s" - click menu item "New Tab to the Right" of menu "Tab" of menu bar 1 - end tell - ]], focusedAppName)) - else - hs.notify.new({title=string.format("%s not focused.", browser)}):send() - end - -end) +-- hs.hotkey.bind({"cmd", "option"}, "T", function() +-- +-- local focusedAppName = hs.window.focusedWindow():application():title() +-- +-- if focusedAppName == chromiumBrowser +-- then +-- hs.osascript.applescript(string.format([[ +-- tell application "System Events" to tell process "%s" +-- click menu item "New Tab to the Right" of menu "Tab" of menu bar 1 +-- end tell +-- ]], focusedAppName)) +-- else +-- hs.notify.new({title=string.format("%s not focused.", browser)}):send() +-- end +-- +-- end) -- Open new / focus existing vscode window in current desktop space -- app = VSCodium or Code @@ -209,18 +209,23 @@ end) -- APP-AGNOSTIC GLOBAL OPEN/FOCUS BINDINGS -- common apps --- hs.hotkey.bind({"cmd", "ctrl"}, "Z", function() hs.application.open("Todoist") end) +hs.hotkey.bind({"cmd", "ctrl"}, "D", function() hs.application.open("Todoist") end) -- hs.hotkey.bind({"cmd", "ctrl"}, "R", function() hs.application.open("Obsidian") end) hs.hotkey.bind({"cmd", "ctrl"}, "M", function() hs.application.open("Spotify") end) -hs.hotkey.bind({"cmd", "ctrl"}, "S", function() hs.application.open("Signal") end) hs.hotkey.bind({"cmd", "ctrl"}, "G", function() hs.application.open("Google Calendar") end) hs.hotkey.bind({"cmd", "ctrl"}, "Z", function() hs.application.open("Preview") end) --- annoying apps (manually open only) -hs.hotkey.bind({"cmd", "ctrl"}, "K", function() switchToIfOpen("KiCad") end) -hs.hotkey.bind({"cmd", "ctrl"}, "C", function() switchToIfOpen("CLion") end) -hs.hotkey.bind({"cmd", "ctrl"}, "J", function() hs.application.open("IntelliJ IDEA CE") end) -hs.hotkey.bind({"cmd", "ctrl"}, "I", function() hs.application.open("Insomnia") end) +-- annoying apps (must manually open) +hs.hotkey.bind({"cmd", "ctrl"}, "A", function() switchToIfApplicationOpen("Telegram") end) +hs.hotkey.bind({"cmd", "ctrl"}, "S", function() switchToIfApplicationOpen("Signal") end) +hs.hotkey.bind({"cmd", "ctrl"}, "N", function() switchToIfApplicationOpen("Numi") end) +-- hs.hotkey.bind({"cmd", "ctrl"}, "S", function() switchToIfApplicationOpen("Texts") end) +-- hs.hotkey.bind({"cmd", "ctrl", "shift"}, "S", function() hs.application.open("Signal") end) +hs.hotkey.bind({"cmd", "ctrl"}, "K", function() switchToIfApplicationOpen("KiCad") end) +hs.hotkey.bind({"cmd", "ctrl"}, "C", function() switchToIfApplicationOpen("CLion") end) +hs.hotkey.bind({"cmd", "ctrl"}, "J", function() switchToIfApplicationOpen("IntelliJ IDEA") end) +-- hs.hotkey.bind({"cmd", "ctrl"}, "L", function() switchToIfApplicationOpen("Linear") end) +hs.hotkey.bind({"cmd", "ctrl"}, "L", function() switchToIfApplicationOpen("LTspice") end) -- Clear clipboard @@ -260,7 +265,7 @@ end) -- Switches to application if there's an instance of it open -------------------------------------- -function switchToIfOpen(app) +function switchToIfWindowOpen(app) wf_app = wf.new(false):setAppFilter(app, {currentSpace=true, visible=true}) local wins = wf_app:getWindows() @@ -272,6 +277,28 @@ function switchToIfOpen(app) end end + +-------------------------------------- +-- SWITCH TO IF GLOBALLY OPEN +-- Switches to application if there's an instance of it open +-------------------------------------- + +function switchToIfApplicationOpen(appName) + local runningApps = hs.application.runningApplications() + local isOpen = false + for _, app in pairs(runningApps) do + if app:name() == appName then + isOpen = true + break + end + end + + if (isOpen) then + hs.application.open(appName) + end +end + + -------------------------------------- -- KEY COMBO TO APPLICATION -- Sends keystrokes but only if the specified application is focused diff --git a/config/iterm2/com.googlecode.iterm2.plist b/config/iterm2/com.googlecode.iterm2.plist index 75393f6..88c93f9 100644 --- a/config/iterm2/com.googlecode.iterm2.plist +++ b/config/iterm2/com.googlecode.iterm2.plist @@ -272,6 +272,17 @@ Version 1 + 0x7a-0x100000-0x6 + + Action + 44 + Label + + Text + + Version + 1 + 0x9-0x40000 Action @@ -571,7 +582,7 @@ Close Sessions On End Columns - 120 + 140 Command Cursor Color @@ -1115,7 +1126,7 @@ Right Option Key Sends 0 Rows - 42 + 44 Screen -1 Scrollback Lines @@ -1215,6 +1226,8 @@ ShowFullScreenTabBar + SmartPlacement + SoundForEsc SplitPaneDimmingAmount diff --git a/config/neovim/macos/init.lua b/config/neovim/macos/init.lua index 9e8fe11..f0b08cc 100644 --- a/config/neovim/macos/init.lua +++ b/config/neovim/macos/init.lua @@ -32,6 +32,9 @@ o.tabstop = 4 o.shiftwidth = 4 o.expandtab = true +-- set wrap if markdown file +vim.cmd('autocmd FileType markdown setlocal wrap') + -- NOTE: pcall prevents plugin system from shitting itself on first load if not pcall(function() c.colorscheme 'catppuccin' @@ -116,8 +119,15 @@ return require('packer').startup(function(use) } end} + -- use 'martinsione/darkplus.nvim' + -- NOTE: requires Node.js >= 17 -- use {'github/copilot.vim', run = ':Copilot setup'} + -- + -- Specify Filetype for .python Files + vim.api.nvim_exec([[ + autocmd BufNewFile,BufRead *.sage set filetype=python + ]], false) end) diff --git a/config/vscode/keybindings.json b/config/vscode/keybindings.json index 36c5364..dd136f5 100644 --- a/config/vscode/keybindings.json +++ b/config/vscode/keybindings.json @@ -201,4 +201,828 @@ "key": "ctrl+shift+4", "command": "workbench.action.terminal.focusAtIndex4" }, + { + "key": "ctrl+alt+c i", + "command": "-calva.debug.instrument", + "when": "calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "shift+tab", + "command": "-calva-fmt.tabDedent", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorReadOnly && !hasOtherSuggestions && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+l", + "command": "-calva-fmt.alignCurrentForm", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorReadOnly && !hasOtherSuggestions && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "tab", + "command": "-calva-fmt.formatCurrentForm", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorReadOnly && !hasOtherSuggestions && !inSnippetMode && !inlineSuggestionVisible && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "ctrl+i", + "command": "-calva-fmt.tabIndent", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorReadOnly && !hasOtherSuggestions && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+p i", + "command": "-calva-fmt.inferParens", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorReadOnly && !hasOtherSuggestions && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "ctrl+shift+alt+right", + "command": "-paredit.barfSexpBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+left", + "command": "-paredit.barfSexpForward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+c", + "command": "-paredit.convolute", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "backspace", + "command": "-paredit.deleteBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && !editorHasMultipleSelections && !editorReadOnly && editorLangId == 'clojure' && paredit:keyMap == 'strict'" + }, + { + "key": "delete", + "command": "-paredit.deleteForward", + "when": "calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && !editorHasMultipleSelections && !editorReadOnly && editorLangId == 'clojure' && paredit:keyMap == 'strict'" + }, + { + "key": "ctrl+shift+alt+b", + "command": "-paredit.dragSexprBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "alt+up", + "command": "-paredit.dragSexprBackward", + "when": "calva:keybindingsEnabled && config.calva.paredit.hijackVSCodeDefaults && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+j", + "command": "-paredit.dragSexprBackwardDown", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+u", + "command": "-paredit.dragSexprBackwardUp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+f", + "command": "-paredit.dragSexprForward", + "when": "calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "alt+down", + "command": "-paredit.dragSexprForward", + "when": "calva:keybindingsEnabled && config.calva.paredit.hijackVSCodeDefaults && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+d", + "command": "-paredit.dragSexprForwardDown", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+k", + "command": "-paredit.dragSexprForwardUp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+w", + "command": "-paredit.sexpRangeExpansion", + "when": "calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "alt+backspace", + "command": "-paredit.forceDeleteBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorHasMultipleSelections && !editorReadOnly && editorLangId == 'clojure' && paredit:keyMap == 'strict'" + }, + { + "key": "alt+delete", + "command": "-paredit.forceDeleteForward", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorHasMultipleSelections && !editorReadOnly && editorLangId == 'clojure' && paredit:keyMap == 'strict'" + }, + { + "key": "ctrl+shift+j", + "command": "-paredit.joinSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+backspace", + "command": "-paredit.killListBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+delete", + "command": "-paredit.killListForward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+k", + "command": "-paredit.killRight", + "when": "calva:keybindingsEnabled && editorTextFocus && !selectionAnchorSet && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+backspace", + "command": "-paredit.killSexpBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+delete", + "command": "-paredit.killSexpForward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+up", + "command": "-paredit.backwardDownSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+left", + "command": "-paredit.backwardSexp", + "when": "calva:cursorBeforeComment && editorLangId == 'clojure' || calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && !config.calva.paredit.hijackVSCodeDefaults && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "alt+left", + "command": "-paredit.backwardSexp", + "when": "calva:cursorBeforeComment && editorLangId == 'clojure' || calva:keybindingsEnabled && config.calva.paredit.hijackVSCodeDefaults && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+up", + "command": "-paredit.backwardUpSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+down", + "command": "-paredit.forwardDownSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+right", + "command": "-paredit.forwardSexp", + "when": "calva:cursorAfterComment && editorLangId == 'clojure' || calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && !config.calva.paredit.hijackVSCodeDefaults && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "alt+right", + "command": "-paredit.forwardSexp", + "when": "calva:cursorAfterComment && editorLangId == 'clojure' || calva:keybindingsEnabled && config.calva.paredit.hijackVSCodeDefaults && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+end", + "command": "-paredit.closeList", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+down", + "command": "-paredit.forwardUpSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+p ctrl+alt+r", + "command": "-paredit.raiseSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+r ctrl+alt+q", + "command": "-paredit.rewrapQuote", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+r ctrl+alt+p", + "command": "-paredit.rewrapParens", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+r ctrl+alt+s", + "command": "-paredit.rewrapSquare", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+r ctrl+alt+c", + "command": "-paredit.rewrapCurly", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+r ctrl+alt+h", + "command": "-paredit.rewrapSet", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+up", + "command": "-paredit.selectBackwardDownSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "shift+alt+left", + "command": "-paredit.selectBackwardSexp", + "when": "calva:keybindingsEnabled && config.calva.paredit.hijackVSCodeDefaults && editorTextFocus && !calva:cursorAfterComment && !calva:cursorBeforeComment && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+home", + "command": "-paredit.selectOpenList", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+up", + "command": "-paredit.selectBackwardUpSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+w space", + "command": "-paredit.rangeForDefun", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+down", + "command": "-paredit.selectForwardDownSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "shift+alt+right", + "command": "-paredit.selectForwardSexp", + "when": "calva:keybindingsEnabled && config.calva.paredit.hijackVSCodeDefaults && editorTextFocus && !calva:cursorAfterComment && !calva:cursorBeforeComment && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+end", + "command": "-paredit.selectCloseList", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+down", + "command": "-paredit.selectForwardUpSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+k", + "command": "-paredit.selectRight", + "when": "calva:keybindingsEnabled && editorTextFocus && !selectionAnchorSet && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+w", + "command": "-paredit.sexpRangeContraction", + "when": "calva:keybindingsEnabled && editorTextFocus && !calva:cursorInComment && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+left", + "command": "-paredit.slurpSexpBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+right", + "command": "-paredit.slurpSexpForward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+backspace", + "command": "-paredit.spliceSexpKillBackward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+delete", + "command": "-paredit.spliceSexpKillForward", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+s", + "command": "-paredit.spliceSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+s", + "command": "-paredit.splitSexp", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+p ctrl+alt+m", + "command": "-paredit.togglemode", + "when": "calva:keybindingsEnabled && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+t", + "command": "-paredit.transpose", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+q", + "command": "-paredit.wrapAroundQuote", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+p", + "command": "-paredit.wrapAroundParens", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+s", + "command": "-paredit.wrapAroundSquare", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+alt+c", + "command": "-paredit.wrapAroundCurly", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+alt+r c", + "command": "-paredit.addRichComment", + "when": "calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "escape", + "command": "-calva.clearInlineResults", + "when": "calva:hasInlineResults && calva:keybindingsEnabled && editorTextFocus && !editorHasMultipleSelections && !editorHasSelection && !editorReadOnly && !hasOtherSuggestions && !inlineSuggestionVisible && !parameterHintsVisible && !selectionAnchorSet && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+c", + "command": "-calva.connect", + "when": "calva:keybindingsEnabled && workspaceFolderCount > 0" + }, + { + "key": "ctrl+alt+c alt+c", + "command": "-calva.connectNonProjectREPL", + "when": "calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+c ctrl+c", + "command": "-calva.copyLastResults", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+shift+enter", + "command": "-calva.evaluateEnclosingForm", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+enter", + "command": "-calva.evaluateSelection", + "when": "calva:keybindingsEnabled && editorTextFocus && !suggestWidgetVisible && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c r", + "command": "-calva.evaluateSelectionReplace", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c c", + "command": "-calva.evaluateSelectionAsComment", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+f", + "command": "-calva.evaluateFiddleForSourceFile", + "when": "calva:connected && calva:keybindingsEnabled && !calva:activeEditorIsFiddle" + }, + { + "key": "ctrl+shift+alt+enter", + "command": "-calva.evaluateStartOfFileToCursor", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+enter", + "command": "-calva.evaluateToCursor", + "when": "calva:keybindingsEnabled && editorTextFocus && !editorHasSelection && editorLangId == 'clojure'" + }, + { + "key": "shift+alt+enter", + "command": "-calva.evaluateTopLevelFormToCursor", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+enter", + "command": "-calva.evaluateSelectionToSelectionEnd", + "when": "calva:keybindingsEnabled && editorHasSelection && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "alt+enter", + "command": "-calva.evaluateCurrentTopLevelForm", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+space", + "command": "-calva.evaluateTopLevelFormAsComment", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+d", + "command": "-calva.interruptAllEvaluations", + "when": "calva:connected && calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c enter", + "command": "-calva.loadFile", + "when": "calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c f", + "command": "-calva.openFiddleForSourceFile", + "when": "calva:keybindingsEnabled && !calva:activeEditorIsFiddle" + }, + { + "key": "ctrl+alt+c f", + "command": "-calva.openSourceFileForFiddle", + "when": "calva:activeEditorIsFiddle && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+o d", + "command": "-calva.printClojureDocsToOutputWindow", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+r d", + "command": "-calva.printClojureDocsToRichComment", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+p", + "command": "-calva.printLastStacktrace", + "when": "calva:connected && calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+u", + "command": "-calva.requireREPLUtilities", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c shift+t", + "command": "-calva.runAllTests", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+t", + "command": "-calva.runTestUnderCursor", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+space enter", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space ,", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space .", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space -", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space backspace", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space left", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space right", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space up", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space down", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space tab", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 0", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 1", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 2", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 3", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 4", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 5", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 6", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 7", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 8", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space 9", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space a", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space b", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space c", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space d", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space e", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space f", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space g", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space h", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space i", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space j", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space k", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space l", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space m", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space n", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space o", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space p", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space q", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space r", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space s", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space t", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space u", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space v", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space w", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space x", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space y", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space z", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+space space", + "command": "-calva.runCustomREPLCommand", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+c ctrl+t", + "command": "-calva.rerunTests", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c t", + "command": "-calva.runNamespaceTests", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+b", + "command": "-calva.switchCljsBuild", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "ctrl+alt+c ctrl+s", + "command": "-calva.selectCurrentForm", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+e", + "command": "-calva.sendCurrentFormToOutputWindow", + "when": "calva:connected && calva:keybindingsEnabled && !calva:outputWindowActive && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+space", + "command": "-calva.sendCurrentTopLevelFormToOutputWindow", + "when": "calva:connected && calva:keybindingsEnabled && !calva:outputWindowActive && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+o o", + "command": "-calva.showFileForOutputWindowNS", + "when": "calva:connected && calva:keybindingsEnabled && calva:outputWindowActive" + }, + { + "key": "alt+down", + "command": "-calva.showNextReplHistoryEntry", + "when": "calva:connected && calva:keybindingsEnabled && calva:outputWindowActive && calva:replHistoryCommandsActive && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+o o", + "command": "-calva.showOutputWindow", + "when": "calva:connected && calva:keybindingsEnabled && !calva:outputWindowActive" + }, + { + "key": "alt+up", + "command": "-calva.showPreviousReplHistoryEntry", + "when": "calva:connected && calva:keybindingsEnabled && calva:outputWindowActive && calva:replHistoryCommandsActive && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+j", + "command": "-calva.jackIn", + "when": "calva:keybindingsEnabled && workspaceFolderCount > 0" + }, + { + "key": "ctrl+alt+c ctrl+alt+r", + "command": "-calva.startOrConnectRepl" + }, + { + "key": "ctrl+alt+c n", + "command": "-calva.setOutputWindowNamespace", + "when": "calva:connected && calva:keybindingsEnabled && !calva:outputWindowActive && editorLangId == 'clojure'" + }, + { + "key": "ctrl+shift+t t", + "command": "-calva.tapSelection", + "when": "calva:connected && calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+shift+t space", + "command": "-calva.tapCurrentTopLevelForm", + "when": "calva:connected && calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+o s", + "command": "-calva.toggleEvaluationSendCodeToOutputWindow", + "when": "calva:connected && calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c p", + "command": "-calva.togglePrettyPrint", + "when": "calva:keybindingsEnabled && editorLangId == 'clojure'" + }, + { + "key": "ctrl+alt+c ctrl+alt+s", + "command": "-calva.toggleCLJCSession", + "when": "calva:connected && calva:keybindingsEnabled" + }, + { + "key": "enter", + "command": "-calva.evaluateOutputWindowForm", + "when": "calva:keybindingsEnabled && calva:outputWindowActive && calva:outputWindowSubmitOnEnter && editorTextFocus && !suggestWidgetVisible" + }, + { + "key": "ctrl+home", + "command": "-paredit.openList", + "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/" + }, + { + "key": "ctrl+shift+cmd+e", + "command": "calva.selectCurrentForm" + }, + { + "key": "alt+up", + "command": "calva.showPreviousReplHistoryEntry" + }, + { + "key": "alt+down", + "command": "calva.showNextReplHistoryEntry" + }, + { + "key": "alt+enter", + "command": "calva.evaluateSelectionReplace" + }, + { + "key": "alt+c", + "command": "workbench.panel.chatSidebar" + }, + { + "key": "shift+cmd+e", + "command": "workbench.view.explorer", + "when": "viewContainer.workbench.view.explorer.enabled" + }, + { + "key": "shift+cmd+e", + "command": "-workbench.view.explorer", + "when": "viewContainer.workbench.view.explorer.enabled" + } ] diff --git a/config/zsh/macos.zshrc b/config/zsh/macos.zshrc index 04c6c81..9d5309c 100644 --- a/config/zsh/macos.zshrc +++ b/config/zsh/macos.zshrc @@ -1,4 +1,4 @@ -export PATH=$HOME/.bin:/usr/local/bin:$HOME/go/bin:$HOME/.cargo/bin:$PATH:$HOME/.yarn/bin:/opt/homebrew/opt/libpq/bin:/Applications/Julia-1.7.app/Contents/Resources/julia/bin/:/Applications/love.app/Contents/MacOS/:~/.emacs.d/bin/:/opt/homebrew/opt/llvm/bin +export PATH=$HOME/.bin:$HOME/.scripts:/usr/local/bin:$HOME/go/bin:$HOME/.cargo/bin:/opt/homebrew/opt/llvm/bin:$PATH:$HOME/.yarn/bin:$HOME/.local/bin:/opt/homebrew/opt/libpq/bin:/Applications/Julia-1.7.app/Contents/Resources/julia/bin/:/Applications/love.app/Contents/MacOS/:~/.emacs.d/bin/:/opt/homebrew/opt/llvm/bin:$HOME/opt/android-sdk/cmdline-tools/latest/bin:$HOME/opt/android-sdk/cmdline-tools/latest/platform-tools:$HOME/.nimble/bin:/nix/var/nix/profiles/default/bin:$HOME/opt/android-sdk/platform-tools:~/.nix-profile/bin # Path to your oh-my-zsh installation. export ZSH="/Users/michael/.oh-my-zsh" @@ -69,16 +69,19 @@ COMPLETION_WAITING_DOTS="true" # Custom plugins may be added to $ZSH_CUSTOM/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. -plugins=(git) +plugins=(git nix-zsh-completions) source $ZSH/oh-my-zsh.sh +source ~/.secrets # User configuration -# export MANPATH="/usr/local/man:$MANPATH" -# export ANDROID_SDK_ROOT=$HOME/Library/Android +export ANDROID_HOME=$HOME/opt/android-sdk +export ANDROID_SDK_ROOT=$HOME/opt/android-sdk -export DOCKER_HOST=ssh://root@147.182.184.116 +# export DOCKER_HOST=ssh://mlisano@rocktiplex.michaellisano.com +# export DOCKER_HOST=ssh://mlisano@172.222.128.221:2202 +# export DOCKER_HOST="unix://$HOME/.colima/docker.sock" # You may need to manually set your language environment # export LANG=en_US.UTF-8 @@ -94,13 +97,21 @@ fi # export ARCHFLAGS="-arch x86_64" # ENV VARS +export ENV=dev export CHROME_PATH="/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" -export ANDROID_SDK_ROOT="/opt/homebrew/Caskroom/android-sdk/4333796/" +export ANDROID="" export VCPKG_ROOT="$HOME/.vcpkg-install" -export LDFLAGS="-L/opt/homebrew/opt/llvm/lib" -export CPPFLAGS="-I/opt/homebrew/opt/llvm/include" +export LDFLAGS="-L/opt/homebrew/opt/llvm/lib -I/opt/homebrew/opt/openblas/lib" +export CPPFLAGS="-I/opt/homebrew/opt/llvm/include -I/opt/homebrew/opt/openblas/include" export PIPENV_VERBOSITY=-1 +export DOCKER_BUILDKIT=1 + +# For Nim +# export CPATH=$CPATH:$LD_LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include +# export LIBRARY_PATH=$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib +# export LIBRARY_DIRS=$LIBRARY_DIRS:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib +# export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/opt/openssl/lib/ # Set personal aliases, overriding those provided by oh-my-zsh libs, # plugins, and themes. Aliases can be placed here, though oh-my-zsh @@ -114,10 +125,14 @@ alias ls=lsd alias vim=nvim alias qr=qrencode alias youtube-dl=yt-dlp -alias yt-dlp-flac='yt-dlp -x --audio-format flac' -alias yt-dlp-mp3='yt-dlp -x --audio-format mp3' +alias yt-flac='yt-dlp -x --audio-format flac' +alias yt-mp3='yt-dlp -x --audio-format mp3' +alias yt-720='yt-dlp -f "best[height=720]"' alias http-server='python3 -m http.server' +# personal pandoc prefs +alias ppandoc='pandoc -V geometry:margin=0.65in' + # use ssh kitten, but only if using kitty terminal if [[ $TERM == 'xterm_kitty' ]]; then alias ssh=kitty +kitten ssh @@ -131,6 +146,12 @@ alias del=mvTrash alias trash=mvTrash alias copy=pbcopy alias rosetta="arch -x86_64" +alias notes="cd ~/Documents/Notes/ && nvim -c 'set wrap' && cd" +alias todo="cd ~/Documents/Notes/todo && nvim && cd" +alias vc="$EDITOR ~/.config/nvim/init.lua" +alias zc="$EDITOR ~/.zshrc" +alias sc="$EDITOR ~/.ssh/config" +alias cb=chatblade # Starship eval "$(starship init zsh)" @@ -141,5 +162,32 @@ eval "$(starship init zsh)" autoload bashcompinit bashcompinit -source /Users/michael/.vcpkg-install/scripts/vcpkg_completion.zsh +[ -f "/Users/michael/.ghcup/env" ] && source "/Users/michael/.ghcup/env" # ghcup-env + +alias arc='cd ~/.opt/arc3.2/ && racket -f as.scm' +alias docker-image-clean="docker image rm $(docker image ls | grep '' | awk '{print $3}' | tr '\n' ' ')" +alias docker-container-clean="docker container rm $(docker container ls -a | grep 'Exited (' | awk '{print $1}' | tr '\n' ' ')" +alias cowquote='quote=$(curl -m 0.5 -s https://api.quotable.io/random); cowsay "$(echo $quote | jq -M .content) --$(echo $quote | jq -rM .author)"' +alias oi='interpreter' + +# remote hosts +alias st='ssh thonkpad' +alias sr='ssh rocktiplex' +alias sso='ssh supernova.ocf' +alias sto='ssh tsunami.ocf' +alias sho='ssh hurricane.ocf' +alias styo='ssh typhoon.ocf' + +# completions +source ~/.kube-zsh-completion +source ~/.ignite-zsh-completion + +# Codon compiler path (added by install script) +export PATH=$PATH:/Users/michael/.codon/bin + +# quote lmao + + +# opam +[[ ! -r /Users/michael/.opam/opam-init/init.zsh ]] || source /Users/michael/.opam/opam-init/init.zsh > /dev/null 2> /dev/null