Files
.vscode.d/settings.json
Jim Myhrberg 91663ad00d feat(settings): add commands to insert em-dash and en-dash symbols
Due to me using alt+- and alt+shift+- as undo/redo, macOS's which are macOS' default keybindings for typing en-dash and em-dash, I need an alternative way to insert them when needed.

This solution uses a combo of the macros and aliases extensions to achieve it. It's a bit of a dirty hack, but works for now. At a later day I'll look for a solution that lets me define and add custom commands.
2025-03-15 13:20:05 +00:00

649 lines
20 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
//
// ===========================================================================
// 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, // Does not work with nativeTabs enabled.
"window.nativeTabs": true,
"window.title": "${rootName}${separator}${profileName}",
//
// ===========================================================================
// MARK: Cursor (Text Editor)
// ===========================================================================
//
"cursor.aipreview.enabled": true,
"cursor.cpp.enablePartialAccepts": true,
"cursor.diffs.useCharacterLevelDiffs": true,
"cursor.terminal.usePreviewBox": true,
"cursor.general.enableShadowWorkspace": true,
//
// ===========================================================================
// MARK: Windsurf (Text Editor)
// ===========================================================================
//
"windsurf.autocompleteSpeed": "fast",
//
// ===========================================================================
// 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,
//
// Accessibility
"editor.accessibilitySupport": "off",
//
// ===========================================================================
// MARK: Workbench
// ===========================================================================
//
// Activity Bar
"workbench.activityBar.location": "top",
"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
// ===========================================================================
//
// I like the idea of file nesting, but in practice I find myself hating it :(
"explorer.fileNesting.enabled": false,
"explorer.fileNesting.patterns": {
"*.go": "${capture}_test.go, ${capture}_example_test.go, ${capture}_integration_test.go, ${capture}_internal_test.go",
"Brewfile": "Brewfile.lock.json",
"Gemfile": "Gemfile.lock",
"go.mod": "go.sum"
},
"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: 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: Spell Check
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker
//
"cSpell.checkVSCodeSystemFiles": true,
"cSpell.customDictionaries": {
// Run the `./siren <editor> config` command to symlink
// `cspell/vscode-user-dictionary.txt` into the `~/.cspell` directory.
"custom-user-dictionary": {
"name": "vscode-user-dictionary",
"path": "~/.cspell/vscode-user-dictionary.txt",
"addWords": true,
"scope": "user"
}
},
//
// ===========================================================================
// 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: Text Tables
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=RomanPeshkov.vscode-text-tables
//
"text-tables.showStatus": false,
//
// ===========================================================================
// 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: Settings Cycle
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=hoovercj.vscode-settings-cycler
//
"settings.cycle": [
{
"id": "commandCenter",
"overrideWorkspaceSettings": false,
"values": [
{
"window.customTitleBarVisibility": "auto"
},
{
"window.customTitleBarVisibility": "never"
}
]
}
],
//
// ===========================================================================
// MARK: Command aliases
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=ArturoDent.command-alias
//
"command aliases": {
"sortLines.sortLines": "sl", // Sort Lines - https://marketplace.visualstudio.com/items?itemName=Tyriar.sort-lines
"settings.cycle.commandCenter": "Toggle Command Center",
"macros.insertEmDash": "Insert Em Dash",
"macros.insertEnDash": "Insert En Dash"
},
//
// ===========================================================================
// MARK: Macros
// ===========================================================================
// Extension:
// - https://marketplace.visualstudio.com/items?itemName=ctf0.macros
//
"macros.list": {
"insertEmDash": [
{
"command": "type",
"args": {
"text": "—"
}
}
],
"insertEnDash": [
{
"command": "type",
"args": {
"text": ""
}
}
],
//
// 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"
]
}
}