mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 13:46:41 +00:00
564 lines
17 KiB
JSON
564 lines
17 KiB
JSON
{
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Appearance
|
|
// ===========================================================================
|
|
//
|
|
// Dark/Light mode detection
|
|
"window.autoDetectColorScheme": true,
|
|
"window.systemColorTheme": "auto",
|
|
//
|
|
// Theme
|
|
"workbench.colorTheme": "One Dark Pro",
|
|
"workbench.iconTheme": "material-icon-theme",
|
|
"workbench.preferredDarkColorTheme": "One Dark Pro",
|
|
"workbench.preferredLightColorTheme": "Solarized Light",
|
|
//
|
|
// One Dark Pro theme settings
|
|
"oneDarkPro.vivid": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Window
|
|
// ===========================================================================
|
|
//
|
|
"window.commandCenter": true,
|
|
"window.customTitleBarVisibility": "auto",
|
|
"window.nativeFullScreen": false,
|
|
"workbench.activityBar.location": "top",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Editor
|
|
// ===========================================================================
|
|
//
|
|
// Font
|
|
"editor.fontFamily": "'Menlo Nerd Font Mono', 'Menlo Nerd Font', Menlo, Monaco, 'Courier New', monospace",
|
|
"editor.fontLigatures": false,
|
|
"editor.fontWeight": "normal",
|
|
"editor.fontSize": 12,
|
|
//
|
|
// Cursor
|
|
"editor.cursorSurroundingLines": 5,
|
|
//
|
|
// Whitespace
|
|
"editor.renderWhitespace": "boundary",
|
|
//
|
|
// Formatting
|
|
"editor.formatOnSave": true,
|
|
"editor.formatOnPaste": true,
|
|
"editor.formatOnSaveMode": "file",
|
|
//
|
|
// Rulers
|
|
"editor.rulers": [
|
|
80,
|
|
100,
|
|
120
|
|
],
|
|
//
|
|
// Semantic Highlighting
|
|
"editor.semanticHighlighting.enabled": true,
|
|
//
|
|
// Minimap
|
|
"editor.minimap.enabled": true,
|
|
"editor.minimap.showSlider": "always",
|
|
//
|
|
// Modified Tabs
|
|
"workbench.editor.highlightModifiedTabs": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Workbench
|
|
// ===========================================================================
|
|
//
|
|
// Activity Bar
|
|
"workbench.activityBar.orientation": "horizontal",
|
|
//
|
|
// Command Palette
|
|
"workbench.commandPalette.history": 250,
|
|
"workbench.commandPalette.preserveInput": true,
|
|
//
|
|
// Hover
|
|
"workbench.hover.delay": 200,
|
|
//
|
|
// Local History
|
|
"workbench.localHistory.maxFileEntries": 250,
|
|
"workbench.localHistory.maxFileSize": 512,
|
|
//
|
|
// Tree
|
|
"workbench.tree.indent": 18,
|
|
"workbench.tree.renderIndentGuides": "always",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Explorer
|
|
// ===========================================================================
|
|
//
|
|
"explorer.sortOrder": "mixed",
|
|
"explorer.sortOrderLexicographicOptions": "unicode",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Files
|
|
// ===========================================================================
|
|
//
|
|
// Associations
|
|
"files.associations": {
|
|
"gitconfig": "gitconfig",
|
|
"gitignore": "gitignore"
|
|
},
|
|
//
|
|
// Encoding
|
|
"files.autoGuessEncoding": true,
|
|
//
|
|
// Formatting
|
|
"files.insertFinalNewline": true,
|
|
"files.trimFinalNewlines": true,
|
|
"files.trimTrailingWhitespace": true,
|
|
//
|
|
// Read-only
|
|
"files.readonlyFromPermissions": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Git
|
|
// ===========================================================================
|
|
//
|
|
"git.blame.editorDecoration.enabled": false,
|
|
"scm.defaultViewMode": "tree",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Diffs
|
|
// ===========================================================================
|
|
//
|
|
"diffEditor.ignoreTrimWhitespace": false,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Cursor
|
|
// ===========================================================================
|
|
//
|
|
"cursor.aipreview.enabled": true,
|
|
"cursor.cpp.enablePartialAccepts": true,
|
|
"cursor.diffs.useCharacterLevelDiffs": true,
|
|
"cursor.terminal.usePreviewBox": true,
|
|
"cursor.general.enableShadowWorkspace": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Terminal
|
|
// ===========================================================================
|
|
//
|
|
"terminal.integrated.allowChords": false,
|
|
"terminal.integrated.macOptionIsMeta": true,
|
|
"terminal.integrated.persistentSessionScrollback": 1000,
|
|
"terminal.integrated.scrollback": 50000,
|
|
"terminal.integrated.sendKeybindingsToShell": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: File Browser
|
|
// ===========================================================================
|
|
// Extension:
|
|
// - https://marketplace.visualstudio.com/items?itemName=bodil.file-browser
|
|
//
|
|
"file-browser.hideDotfiles": false,
|
|
"file-browser.labelIgnoredFiles": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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"
|
|
],
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Mise (https://mise.jdx.dev/)
|
|
// ===========================================================================
|
|
// Extension:
|
|
// - https://marketplace.visualstudio.com/items?itemName=hverlin.mise-vscode
|
|
//
|
|
"mise.updateOpenTerminalsEnvAutomatically": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Hex editor
|
|
// ===========================================================================
|
|
// Extension:
|
|
// - https://marketplace.visualstudio.com/items?itemName=ms-vscode.hexeditor
|
|
//
|
|
"workbench.editor.defaultBinaryEditor": "hexEditor.hexedit",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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
|
|
},
|
|
//
|
|
// ===========================================================================
|
|
// MARK: JSON
|
|
// ===========================================================================
|
|
//
|
|
"[json]": {
|
|
"editor.insertSpaces": true,
|
|
"editor.tabSize": 2
|
|
},
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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",
|
|
//
|
|
// ===========================================================================
|
|
// MARK: YAML
|
|
// ===========================================================================
|
|
// Extensions:
|
|
// - https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml
|
|
// - https://marketplace.visualstudio.com/items?itemName=arahata.linter-actionlint
|
|
//
|
|
"redhat.telemetry.enabled": false,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Makefile
|
|
// ===========================================================================
|
|
// Extensions:
|
|
// - https://marketplace.visualstudio.com/items?itemName=carlos-algms.make-task-provider
|
|
//
|
|
"makefile.configureOnOpen": false,
|
|
"make-task-provider.telemetry": false,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Sort Lines
|
|
// ===========================================================================
|
|
// Extensions:
|
|
// - https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines
|
|
//
|
|
"sortLines.filterBlankLines": true,
|
|
"sortLines.ignoreUnselectedLastLine": true,
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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"
|
|
],
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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"
|
|
}
|
|
]
|
|
},
|
|
//
|
|
// ===========================================================================
|
|
// MARK: Command aliases
|
|
// ===========================================================================
|
|
//
|
|
"command aliases": {
|
|
// Sort Lines.
|
|
// Extension: https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines
|
|
"sortLines.sortLines": "sl"
|
|
},
|
|
//
|
|
// ===========================================================================
|
|
// MARK: 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"
|
|
]
|
|
}
|
|
}
|