lp0 on fire

My personal blog

Rant: VSCode bloat

Visual Studio Code has something going for it; it has one of the most powerful features an editor can have; customizable task for automating what you want to. However, the more I am using vscode, the more it's getting in my way.

Recently I've been working a bit on html markup for designing physical cards. All fine and dany, until vscode keeps inserting </div> elements and more that I didn't ask for. Now I spend my time fighting the editor to insert the right characters. The same is true for brackets, strings, and more.

Code lens showing references everywhere is annoying, the file minimap takes too much space on my 1280x800 screen, and the screen reader (orca) I sometimes use is absolute garbage on vscode. The fact that I cannot disable popular extensions and the likes nags me too.

It makes me realize that all I really need from my editor is a file panel, my text editor, multiple embedded consoles to type commands in without having to leave the editor and a simple gui for git intergtation.

Alternatives

I've tried atom with moderate success with the plugin platformio-ide-terminal, but it's to me a bit too clunky to be used and will retire soon. TextMate is sadly only for osx, and JetBrains Fleet seems to be more focussed on web intergration than actual productivity. I considered sublime text until I noticed it was closed-source software. I really don't want to use closed-source software again for my ide, otherwise I would be using vs2017 again.

Gedit

I switched to gedit for a bit There is a terminal, files panel, some simple git intergration, multi-file edit and it isn't based on chromium so it sounds goods enough... until it wasn't possible to open up multiple terminals at once. The interface is a coherent mess and all default themes suck.

Back to atom

This time I spent more time setting it up, added in 2 more extensions (git-log and file-icons) and it worked like a charm. I still do miss vscode's tasks configuration however and haven't yet found a package that can add this functionality for me. I've yet to try a screen reader with Atom, I'll see how that goes later.

Conclusion

Just the fact alone that atom isn't inserting suggestions while I tell it not to, that it isn't adding "smart" features that get in my way and that it's simple to use yet extendable makes it a great replacement for vscode for those who face the same. Such a shame that it loses support from a code development team soon, but I'm looking forward to keep running this editor past the expiration date.

Appendix A - vscode settings

{
    // disable general editor annoyingness
    "workbench.startupEditor": "none",
    "explorer.confirmDelete": false,
    "explorer.confirmDragAndDrop": false,
    "editor.matchBrackets": "never",

    // disable git trying to be smart
    "git.enableSmartCommit": true,
    "git.confirmSync": false,

    // disable telemetry
    "telemetry.telemetryLevel": "off",
    "workbench.settings.enableNaturalLanguageSearch": false,
    "workbench.enableExperiments": false,
    "update.showReleaseNotes": false,
    "extensions.autoCheckUpdates": false,
    "extensions.autoUpdate": false,
    "update.mode": "none",

    // disable trust
    "security.workspace.trust.enabled": false,

    // disable smart features
    "editor.minimap.enabled": false,
    "editor.codeLens": false,

    // disable intellisense
    "editor.acceptSuggestionOnCommitCharacter": false,
    "editor.acceptSuggestionOnEnter": "off",
    "editor.hover.enabled": false,
    "editor.parameterHints.enabled": false,
    "editor.quickSuggestions": false,
    "editor.quickSuggestionsDelay": 10,
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    "editor.suggestOnTriggerCharacters": false,
    "editor.wordBasedSuggestions": false,

    // disable text insertion
    "editor.autoClosingBrackets": "never",
    "editor.autoClosingDelete": "never",
    "editor.autoClosingOvertype": "never",
    "editor.autoSurround": "never"
}

Appendix B - atom settings

"*":
  core:
    disabledPackages: [
      "archive-view"
      "autocomplete-atom-api"
      "autocomplete-css"
      "autocomplete-html"
      "autocomplete-plus"
      "autocomplete-snippets"
      "background-tips"
      "bracket-matcher"
      "deprecation-cop"
      "exception-reporting"
      "fuzzy-finder"
      "go-to-line"
      "language-clojure"
      "language-coffee-script"
      "language-go"
      "language-java"
      "language-less"
      "language-mustache"
      "language-objective-c"
      "language-perl"
      "language-php"
      "language-property-list"
      "language-python"
      "language-ruby"
      "language-ruby-on-rails"
      "language-rust-bundled"
      "language-sass"
      "language-shellscript"
      "language-sql"
      "language-todo"
      "language-toml"
      "language-typescript"
      "language-yaml"
      "metrics"
      "open-on-github"
      "package-generator"
      "snippets"
      "spell-check"
      "styleguide"
      "symbols-view"
      "timecop"
      "welcome"
      "about"
    ]
    telemetryConsent: "no"
  welcome:
    showOnStartup: false
.status-bar {
  .current-path, .github-StatusBarTile {
    display: none;
  }
}