From 144685e92c1c4cc0ee7afa75c9b104f1e503f4c2 Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Thu, 6 Feb 2025 18:00:10 -0800 Subject: [PATCH] feat: back to vscode --- src/content/docs/dev/environment.md | 438 ++++++++++++---------------- 1 file changed, 179 insertions(+), 259 deletions(-) diff --git a/src/content/docs/dev/environment.md b/src/content/docs/dev/environment.md index 1d2717c..1244db1 100644 --- a/src/content/docs/dev/environment.md +++ b/src/content/docs/dev/environment.md @@ -3386,270 +3386,190 @@ This file goes in `~/.config/wofi/style.css`. ## 4. Code Editor -Naomi uses Emacs as her current code editor. +Naomi uses VSCodium as her current code editor. ### 4.1. Settings -This is Naomi's configuration. It goes in `~/.config/emacs/init.el`. +This is Naomi's configuration. It goes in `~/.config/VSCodium/User/settings.json`. -```lisp -;; Initialize package system -(require 'package) -(setq package-archives '(("melpa" . "https://melpa.org/packages/") - ("org" . "https://orgmode.org/elpa/") - ("elpa" . "https://elpa.gnu.org/packages/"))) -(package-initialize) - -;; Bootstrap use-package -(unless (package-installed-p 'use-package) - (package-install 'use-package)) -(require 'use-package) -(setq use-package-always-ensure t) - -;; Terminal-specific settings -(xterm-mouse-mode 1) ; Enable mouse support -(global-set-key (kbd "") 'scroll-down-line) -(global-set-key (kbd "") 'scroll-up-line) -(menu-bar-mode -1) ; Disable menu bar in terminal - -;; Better terminal colors -(use-package eterm-256color - :hook (term-mode . eterm-256color-mode)) - -;; Line numbers configuration -(global-display-line-numbers-mode 1) ; Enable line numbers globally -(setq display-line-numbers-type t) - -;; Make line numbers stand out a bit -(set-face-background 'line-number-current-line nil) -(set-face-foreground 'line-number-current-line "yellow") - -;; Optional: Customize line number format -(setq display-line-numbers-width 4) ; Reserve space for line numbers -(setq display-line-numbers-widen t) ; Expand line number space as needed - -;; Disable line numbers for some modes where they don't make sense -(dolist (mode '(term-mode-hook - shell-mode-hook - treemacs-mode-hook - eshell-mode-hook)) - (add-hook mode (lambda () (display-line-numbers-mode 0)))) - -;; Project management -(use-package projectile - :config - (projectile-mode +1) - :bind-keymap ("C-c p" . projectile-command-map)) - -;; File tree with treemacs -(use-package treemacs - :bind - (:map global-map - ("C-c t" . treemacs)) - :config - (treemacs-follow-mode t) - (treemacs-project-follow-mode t)) - -(use-package treemacs-projectile - :after (treemacs projectile)) - -;; LSP Mode base configuration -(use-package lsp-mode - :init - (setq lsp-keymap-prefix "C-c l" - lsp-enable-symbol-highlighting t - lsp-enable-snippet t - lsp-enable-indentation t) - :hook - ((typescript-mode . lsp) - (js2-mode . lsp) - (web-mode . lsp) - (python-mode . lsp) - (java-mode . lsp) - (c++-mode . lsp) - (c-mode . lsp) - (csharp-mode . lsp)) - :commands lsp) - -;; LSP UI enhancements -(use-package lsp-ui - :commands lsp-ui-mode - :config - (setq lsp-ui-doc-enable t - lsp-ui-doc-position 'at-point)) - -(use-package typescript-mode - :mode ("\\.ts\\'") - :hook (typescript-mode . (lambda () (setq typescript-indent-level 2)))) -(use-package web-mode - :mode (("\\.tsx\\'" . web-mode) - ("\\.jsx\\'" . web-mode)) - :config - (setq web-mode-markup-indent-offset 2 - web-mode-css-indent-offset 2 - web-mode-code-indent-offset 2) - web-mode-json-indent-offset 2) - -;; JavaScript better syntax highlighting -(use-package js2-mode - :mode "\\.js\\'") -(setq js-indent-level 2) - -(use-package csharp-mode - :config - (add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-mode))) - -(use-package ccls - :hook ((c-mode c++-mode) . (lambda () (require 'ccls) (lsp)))) - -(use-package lsp-java - :config (add-hook 'java-mode-hook 'lsp)) - -(use-package kotlin-mode) - -(use-package python-mode - :hook (python-mode . (lambda () - (require 'lsp-pyright) - (lsp)))) -(use-package lsp-pyright - :ensure t) - -(use-package markdown-mode - :mode (("README\\.md\\'" . gfm-mode) - ("\\.md\\'" . markdown-mode) - ("\\.mdx\\'" . markdown-mode)) - :init (setq markdown-command "multimarkdown")) - -(use-package git-gutter - :config - (global-git-gutter-mode +1)) - -(use-package hl-todo - :config - (setq hl-todo-keyword-faces - '(("TODO" . "#FF0000") - ("FIXME" . "#FF0000") - ("DEBUG" . "#A020F0") - ("GOTCHA" . "#FF4500") - ("STUB" . "#1E90FF"))) - (global-hl-todo-mode)) - -(use-package elcord) - (elcord-mode) - -;; Redirect backup files -(setq backup-directory-alist `(("." . "~/.config/emacs/backups"))) - -;; Redirect auto-save files -(setq auto-save-file-name-transforms `((".*" "~/.config/emacs/auto-saves/" t))) - -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(package-selected-packages - '(hl-todo format-all flycheck git-gutter lsp-pyright python-mode kotlin-mode lsp-java ccls js2-mode web-mode typescript-mode company lsp-ui lsp-mode treemacs-projectile treemacs projectile eterm-256color))) -(custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - ) - -(setq-default indent-tabs-mode nil) -(setq-default tab-width 2) -(setq indent-line-function 'insert-tab) - -(add-to-list 'custom-theme-load-path "/home/naomi/.config/emacs/themes/") -(load-theme 'ocean-breeze t) +```json +{ + "workbench.iconTheme": "vscode-icons", + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "javascript.preferences.importModuleSpecifierEnding": "js", + "javascript.updateImportsOnFileMove.enabled": "always", + "typescript.preferences.importModuleSpecifierEnding": "js", + "typescript.preferences.preferTypeOnlyAutoImports": true, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "typescript.updateImportsOnFileMove.enabled": "always", + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.fontFamily": "'OpenDyslexicM Nerd Font'", + "files.exclude": { + "**/node_modules/": true + }, + "editor.fontLigatures": true, + "editor.codeLensFontFamily": "'OpenDyslexicM Nerd Font'", + "editor.inlineSuggest.fontFamily": "'OpenDyslexicM Nerd Font'", + "editor.inlayHints.fontFamily": "'OpenDyslexicM Nerd Font'", + "terminal.integrated.fontFamily": "'OpenDyslexicM Nerd Font'", + "notebook.output.fontFamily": "'OpenDyslexicM Nerd Font'", + "chat.editor.fontFamily": "'OpenDyslexicM Nerd Font'", + "markdown.preview.fontFamily": "'OpenDyslexicM Nerd Font'", + "colorize.languages": [ + "html", + "javascript", + "typescript", + "json", + "typescriptreact", + "css", + "sass", + "scss", + "less", + "postcss", + "sss", + "stylus", + "xml", + "svg" + ], + "cSpell.language": "en-GB", + "http.proxyAuthorization": null, + "github.copilot.enable": { + "*": true, + }, + "discord.detailsIdling": "She's not editing a file...", + "discord.detailsEditing": "{file_name}:L{current_line}:{current_column}", + "discord.lowerDetailsEditing": "{workspace}/{git_branch}", + "discord.largeImageIdling": "Nothing to see here...", + "discord.lowerDetailsIdling": "Off in lala land...", + "editor.inlayHints.enabled": "off", + "workbench.colorCustomizations": { + "editor.lineHighlightBackground": "#1073cf2d", + "editor.lineHighlightBorder": "#9fced11f" + }, + "editor.wordWrap": "off", + "diffEditor.wordWrap": "off", + "editor.guides.indentation": false, + "editor.guides.bracketPairs": false, + "sonarlint.connectedMode.connections.sonarcloud": [ + { + "organizationKey": "nhcarrigan", + "connectionId": "nhcarrigan" + } + ], + "workbench.colorTheme": "Ocean Breeze", + "terminal.integrated.lineHeight": 1, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "debug.console.fontFamily": "'OpenDyslexicM Nerd Font'", + "scm.inputFontFamily": "'OpenDyslexicM Nerd Font'", + "errorLens.fontFamily": "'OpenDyslexicM Nerd Font'", + "gitlens.currentLine.fontFamily": "'OpenDyslexicM Nerd Font'", + "gitlens.blame.fontFamily": "'OpenDyslexicM Nerd Font'", + "sonarlint.disableTelemetry": true, + "explorer.confirmDelete": false, + "wordcounter.include_eol_chars": false, + "wordcounter.side.left": [ + "word", + "char" + ] +} ``` -### 4.2. Theme +### 4.2. Extensions -This is Naomi's custom emacs theme. It goes in `~/.config/emacs/themes/ocean-breeze-theme.el`. +Naomi uses the following extensions. This list is generated with `codium --list-extensions`. -```lisp -(deftheme ocean-breeze - "Naomi's custom emacs theme.") - -;; Set frame transparency -(set-frame-parameter nil 'alpha-background 0) -(add-to-list 'default-frame-alist '(alpha-background . 0)) - -(let ((class '((class color) (min-colors 89))) - ;; Core colors - (bg "unspecified-bg") - (bg-dark "#022b23") - (bg-darker "#044a3c") - (fg "#abfcec") - (fg-light "#e2fcf8") - (selection-bg "#1a7765") - (selection-fg "#d2fcf4") - (cursor "#abfcec") - - ;; ANSI color palette - (black "#022b23") - (red "#ff6b6b") - (green "#4ddbba") - (yellow "#ffd93d") - (blue "#6bc5ff") - (magenta "#ff92df") - (cyan "#89ffea") - (white "#c4fcf2") - - ;; Bright ANSI colors - (bright-black "#044a3c") - (bright-red "#ff8585") - (bright-green "#6bedcc") - (bright-yellow "#ffe074") - (bright-blue "#92d5ff") - (bright-magenta "#ffb2e7") - (bright-cyan "#a9fff0") - (bright-white "#e2fcf8")) - - (custom-theme-set-faces - 'ocean-breeze - - ;; Basic faces - `(default ((,class (:foreground ,fg :background ,bg)))) - `(cursor ((,class (:background ,cursor)))) - `(region ((,class (:background ,selection-bg :foreground ,selection-fg)))) - `(highlight ((,class (:background ,selection-bg)))) - `(hl-line ((,class (:background ,bg-dark)))) - `(fringe ((,class (:background ,bg)))) - `(vertical-border ((,class (:foreground ,bg-darker)))) - - ;; Font-lock faces - `(font-lock-builtin-face ((,class (:foreground ,magenta)))) - `(font-lock-comment-face ((,class (:foreground ,bright-black)))) - `(font-lock-constant-face ((,class (:foreground ,cyan)))) - `(font-lock-doc-face ((,class (:foreground ,green)))) - `(font-lock-function-name-face ((,class (:foreground ,blue)))) - `(font-lock-keyword-face ((,class (:foreground ,magenta)))) - `(font-lock-string-face ((,class (:foreground ,green)))) - `(font-lock-type-face ((,class (:foreground ,yellow)))) - `(font-lock-variable-name-face ((,class (:foreground ,white)))) - `(font-lock-warning-face ((,class (:foreground ,red)))) - - ;; Mode line - `(mode-line ((,class (:background ,bg-darker :foreground ,fg)))) - `(mode-line-inactive ((,class (:background ,bg-dark :foreground ,bright-black)))) - - ;; Search - `(isearch ((,class (:background ,yellow :foreground ,bg)))) - `(lazy-highlight ((,class (:background ,bright-yellow :foreground ,bg)))) - - ;; Others - `(minibuffer-prompt ((,class (:foreground ,blue)))) - `(link ((,class (:foreground ,bright-blue :underline t)))) - `(show-paren-match ((,class (:background ,selection-bg :foreground ,bright-cyan)))) - `(show-paren-mismatch ((,class (:background ,red :foreground ,white)))))) - -;;;###autoload -(when load-file-name - (add-to-list 'custom-theme-load-path - (file-name-as-directory (file-name-directory load-file-name)))) - -(provide-theme 'ocean-breeze) -``` +```txt +1password.op-vscode +aaron-bond.better-comments +addy2142.avalonia-templates +adpyke.codesnap +ahmadalli.vscode-nginx-conf +astro-build.astro-vscode +avaloniateam.vscode-avalonia +bmewburn.vscode-intelephense-client +bungcip.better-toml +chrmarti.regex +dabbinavo.xamlstyler +dart-code.dart-code +dart-code.flutter +dbaeumer.vscode-eslint +donjayamanne.githistory +eamodio.gitlens +esbenp.prettier-vscode +firefox-devtools.vscode-firefox-debug +fwcd.kotlin +github.copilot +github.copilot-chat +golang.go +haskell.haskell +icrawl.discord-vscode +ionide.ionide-fsharp +justusadam.language-haskell +jzmstrjp.color-the-tag-name +kirozen.wordcounter +leodevbro.blockman +mkxml.vscode-filesize +mrmlnc.vscode-scss +ms-dotnettools.csdevkit +ms-dotnettools.csharp +ms-dotnettools.dotnet-interactive-vscode +ms-dotnettools.vscode-dotnet-pack +ms-dotnettools.vscode-dotnet-runtime +ms-dotnettools.vscodeintellicode-csharp +ms-toolsai.jupyter +ms-toolsai.jupyter-keymap +ms-toolsai.jupyter-renderers +ms-toolsai.vscode-jupyter-cell-tags +ms-toolsai.vscode-jupyter-slideshow +ms-vscode.cmake-tools +ms-vscode.cpptools +ms-vscode.cpptools-extension-pack +ms-vscode.cpptools-themes +nhcarrigan.ocean-breeze +oderwat.indent-rainbow +oracle.oracle-java +prisma.prisma +rebornix.ruby +redhat.java +rust-lang.rust-analyzer +sonarsource.sonarlint-vscode +streetsidesoftware.code-spell-checker +twxs.cmake +usernamehw.errorlens +visualstudioexptteam.intellicode-api-usage-examples +visualstudioexptteam.vscodeintellicode +vitest.explorer +vscjava.vscode-gradle +vscjava.vscode-java-debug +vscjava.vscode-java-dependency +vscjava.vscode-java-pack +vscjava.vscode-java-test +vscjava.vscode-maven +vscode-icons-team.vscode-icons +william-voyek.vscode-nginx +wingrunr21.vscode-ruby +wix.vscode-import-cost +xdebug.php-debug +yandeu.five-server +yoavbls.pretty-ts-errors +yutengjing.vscode-colorize-plus +yzane.markdown-pdf +ziglang.vscode-zig +``` \ No newline at end of file