{ // // =========================================================================== // Theme // =========================================================================== // "workbench.colorTheme": "One Dark Pro", "workbench.iconTheme": "material-icon-theme", // // =========================================================================== // Editor // =========================================================================== // "editor.fontFamily": "'Menlo Nerd Font Mono', 'Menlo Nerd Font', Menlo, Monaco, 'Courier New', monospace", "editor.fontLigatures": false, "editor.fontWeight": "normal", "editor.fontSize": 12, "editor.renderWhitespace": "boundary", "editor.formatOnSave": true, "editor.formatOnPaste": true, "editor.rulers": [ 80, 100, 120 ], "editor.semanticHighlighting.enabled": true, "editor.minimap.enabled": true, "editor.minimap.showSlider": "always", "workbench.editor.highlightModifiedTabs": true, // // =========================================================================== // Explorer // =========================================================================== // "explorer.sortOrder": "mixed", // // =========================================================================== // Files // =========================================================================== // "files.associations": { "gitconfig": "gitconfig", "gitignore": "gitignore" }, "files.insertFinalNewline": true, "files.trimFinalNewlines": true, "files.trimTrailingWhitespace": true, // // =========================================================================== // Git // =========================================================================== // "git.blame.editorDecoration.enabled": false, // // =========================================================================== // Diffs // =========================================================================== // "diffEditor.ignoreTrimWhitespace": false, // // =========================================================================== // Cursor // =========================================================================== // "cursor.aipreview.enabled": true, "cursor.cpp.enablePartialAccepts": true, "cursor.diffs.useCharacterLevelDiffs": true, "cursor.terminal.usePreviewBox": true, "cursor.general.enableShadowWorkspace": true, // // =========================================================================== // Window // =========================================================================== // "window.commandCenter": true, "window.customTitleBarVisibility": "auto", "window.nativeFullScreen": false, "workbench.activityBar.location": "top", // // =========================================================================== // Terminal // =========================================================================== // "terminal.integrated.allowChords": false, "terminal.integrated.macOptionIsMeta": true, "terminal.integrated.persistentSessionScrollback": 1000, "terminal.integrated.scrollback": 10000, "terminal.integrated.sendKeybindingsToShell": true, // // =========================================================================== // Awesome Emacs Keybindings // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=tuttieee.emacs-mcx // "emacs-mcx.emacsLikeTab": false, // Done via custom keybinding instead. "emacs-mcx.killRingMax": 120, "emacs-mcx.markRingMax": 32, // // =========================================================================== // File Browser // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=bodil.file-browser // "file-browser.hideDotfiles": false, "file-browser.labelIgnoredFiles": true, // // =========================================================================== // Project Manager // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager // "projectManager.git.baseFolders": [ "~/Projects", "~/.dotfiles", "~/.config" ], "projectManager.git.ignoredFolders": [ "node_modules", "out", "typings", "test", ".haxelib", "tmp", "vendor", "straight", "elpaca" ], "projectManager.any.ignoredFolders": [ "node_modules", "out", "typings", "test", "tmp", "vendor", "straight", "elpaca" ], "projectManager.hg.ignoredFolders": [ "node_modules", "out", "typings", "test", ".haxelib", "straight", "elpaca" ], "projectManager.svn.ignoredFolders": [ "node_modules", "out", "typings", "test", "straight", "elpaca" ], "projectManager.vscode.ignoredFolders": [ "node_modules", "out", "typings", "test", "straight", "elpaca" ], // // =========================================================================== // GitHub // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github // - https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub // "githubRepositories.autoFetch.enabled": false, // // =========================================================================== // Mise (https://mise.jdx.dev/) // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=hverlin.mise-vscode // "mise.updateOpenTerminalsEnvAutomatically": true, // // =========================================================================== // Hex editor // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor // "workbench.editor.defaultBinaryEditor": "hexEditor.hexedit", // // =========================================================================== // Go // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=golang.go // - https://marketplace.visualstudio.com/items?itemName=gofenix.go-lines // "go-lines.lineLength": 120, "go.coverOnSingleTest": true, "go.coverShowCounts": true, "go.formatTool": "gofumpt", "go.inlayHints.constantValues": true, "go.lintOnSave": "workspace", "go.lintTool": "golangci-lint", "go.testExplorer.packageDisplayMode": "nested", "go.testExplorer.showDynamicSubtestsInEditor": true, "go.testFlags": [ "-count=1" ], "go.useLanguageServer": true, "gopls": { "ui.diagnostic.analyses": { "shadow": true }, "ui.diagnostic.staticcheck": true }, // // =========================================================================== // JSON // =========================================================================== // "[json]": { "editor.insertSpaces": true, "editor.tabSize": 2 }, // // =========================================================================== // Lua // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=sumneko.lua // "Lua.codeLens.enable": true, "Lua.diagnostics.globals": [ // Hammerspoon "hs", "spoon" ], "Lua.diagnostics.workspaceEvent": "OnChange", "Lua.hint.enable": true, // // =========================================================================== // Ruby // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-extensions-pack // - https://marketplace.visualstudio.com/items?itemName=connorshea.vscode-ruby-test-adapter // "[ruby]": { "editor.defaultFormatter": "Shopify.ruby-lsp", "editor.formatOnSave": true, "editor.formatOnType": true, "editor.insertSpaces": true, "editor.tabSize": 2 }, // Ruby Test Explorer "rubyTestExplorer.logpanel": false, // Use mise to execute ruby test explorer bundler commands to ensure correct // version of Ruby is used. "rubyTestExplorer.minitestCommand": "mise x -- bundle exec rake", "rubyTestExplorer.rspecCommand": "mise x -- bundle exec rspec", // // =========================================================================== // Shellscript // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format // "[shellscript]": { "editor.tabSize": 2, "editor.insertSpaces": true }, "[sh]": { "editor.tabSize": 2, "editor.insertSpaces": true }, "[zsh]": { "editor.tabSize": 2, "editor.insertSpaces": true }, "shellformat.useEditorConfig": true, "shellformat.flag": "-i 2 -ci -sr", // =========================================================================== // YAML // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml // - https://marketplace.visualstudio.com/items?itemName=arahata.linter-actionlint // "redhat.telemetry.enabled": false, // // =========================================================================== // Makefile // =========================================================================== // Extensions: // - https://marketplace.visualstudio.com/items?itemName=carlos-algms.make-task-provider // "makefile.configureOnOpen": false, "make-task-provider.telemetry": false, // // =========================================================================== // vscode-color-picker // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=AntiAntiSepticeye.vscode-color-picker // "vscode-color-picker.languages": [ "css", "go", "javascript", "less", "postcss", "python", "ruby", "sass", "scss", "sss", "stylus", "svg", "typescript", "xml" ], // // =========================================================================== // Run on Save callbacks // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave // "emeraldwalk.runonsave": { "commands": [ { // Automatically chmod +x script files (first two bytes are `#!`). "match": ".*", "cmd": "if [ ! -x \"${file}\" ] && head -n 1 \"${file}\" | grep -q '^#!'; then echo \"Marking ${relativeFile} as executable...\" && chmod +x \"${file}\"; fi" } ] }, // // =========================================================================== // Macros // =========================================================================== // Extension: // - https://marketplace.visualstudio.com/items?itemName=ctf0.macros // "macros.list": { // // cycleSpacing is a basic emulation Emacs' built-in cycle-spacing command. // It doesn't actually cycle spacing, but it performs the first step which // is to replace all spacing surrounding the cursor with a single space. // "cycleSpacing": [ "emacs-mcx.deleteHorizontalSpace", { "command": "type", "args": { "text": " " } } ], // // Run test macros which re-focus back into the editor after being // triggered. The test commands changes focus to the Test Results panel, and // no settings I found avoids this. Hence these macros trigger relevant test // running commands and then switches focus back to the editor. // // The 1 ms delay between the running tests and switch focus back allows for // the Test Results panel to appear and steal focus before we try and focus // back into the editor. Without the delay the focus commands runs before // Test Results appear and steal focus. // "runTestCurrentFile": [ "testing.runCurrentFile", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageCurrentFile": [ "testing.coverageCurrentFile", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestAtCursor": [ "testing.runAtCursor", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageAtCursor": [ "testing.coverageAtCursor", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestAll": [ "testing.runAll", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageAll": [ "testing.coverageAll", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestReRunLastRun": [ "testing.reRunLastRun", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestCoverageLastRun": [ "testing.coverageLastRun", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestReRunFailTests": [ "testing.reRunFailTests", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestDebugFailTests": [ "testing.debugFailTests", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ], "runTestDebugLastRun": [ "testing.debugLastRun", { "command": "$delay", "args": { "delay": 1 } }, "workbench.action.focusActiveEditorGroup" ] } }