Skip to content

Instantly share code, notes, and snippets.

@chausen
Created April 4, 2026 03:04
Show Gist options
  • Select an option

  • Save chausen/dada80a4ffd77591e185435a68eef0d5 to your computer and use it in GitHub Desktop.

Select an option

Save chausen/dada80a4ffd77591e185435a68eef0d5 to your computer and use it in GitHub Desktop.
vscode dark doom emacs theme
;;; doom-vscode-new-theme.el --- VS Code 2026 Dark inspired Doom theme -*- lexical-binding: t; no-byte-compile: t; -*-
(require 'doom-themes)
(defgroup doom-vscode-new-theme nil
"Options for the `doom-vscode-new' theme."
:group 'doom-themes)
(defcustom doom-vscode-new-brighter-modeline nil
"If non-nil, more vivid colors will be used for the mode-line."
:group 'doom-vscode-new-theme
:type 'boolean)
(defcustom doom-vscode-new-brighter-comments nil
"If non-nil, comments will be highlighted in more vivid colors."
:group 'doom-vscode-new-theme
:type 'boolean)
(defcustom doom-vscode-new-comment-bg nil
"If non-nil, comments will have a subtle background."
:group 'doom-vscode-new-theme
:type 'boolean)
(defcustom doom-vscode-new-padded-modeline doom-themes-padded-modeline
"If non-nil, adds padding to the mode-line."
:group 'doom-vscode-new-theme
:type '(choice integer boolean))
(def-doom-theme doom-vscode-new
"A Doom theme inspired by VS Code 2026 Dark / Dark Experimental."
:family 'doom-vscode-new
:background-mode 'dark
;; name default 256 16
((bg '("#121314" "black" "black"))
(fg '("#BBBEBF" "#bfbfbf" "brightwhite"))
(bg-alt '("#191A1B" "black" "black"))
(fg-alt '("#8B949E" "#8a8a8a" "white"))
(base0 '("#0E0F10" "black" "black"))
(base1 '("#121314" "#1e1e1e" "brightblack"))
(base2 '("#191A1B" "#262626" "brightblack"))
(base3 '("#202225" "#303030" "brightblack"))
(base4 '("#2A2B2C" "#3a3a3a" "brightblack"))
(base5 '("#555555" "#585858" "brightblack"))
(base6 '("#7D8590" "#808080" "brightblack"))
(base7 '("#A5ACB2" "#a8a8a8" "brightblack"))
(base8 '("#E6EDF3" "#dfdfdf" "white"))
(grey base4)
(red '("#FF7B72" "#ff7b72" "red"))
(orange '("#FFA657" "#ffaf5f" "brightred"))
(green '("#4EC9B0" "#4ec9b0" "green"))
(teal '("#53A5CA" "#53a5ca" "brightgreen"))
(yellow '("#D7BA7D" "#d7ba7d" "yellow"))
(blue '("#79C0FF" "#79c0ff" "brightblue"))
(dark-blue '("#276782" "#276782" "blue"))
(magenta '("#D2A8FF" "#d2a8ff" "brightmagenta"))
(violet '("#A5D6FF" "#a5d6ff" "magenta"))
(cyan '("#56A8C9" "#56a8c9" "brightcyan"))
(dark-cyan '("#48A0C7" "#48a0c7" "cyan"))
;; extra semantic colors
(string-blue '("#A5D6FF" "#a5d6ff" "brightblue"))
(number-green '("#B5CEA8" "#b5cea8" "brightgreen"))
(menu-select '("#2A2F33" "#2a2f33" "brightblack"))
(menu-select-2 '("#31363B" "#31363b" "brightblack"))
;; universal syntax classes
(highlight blue)
(vertical-bar (doom-darken base1 0.1))
(selection dark-blue)
(builtin magenta)
(comments (if doom-vscode-new-brighter-comments cyan fg-alt))
(doc-comments (doom-lighten (if doom-vscode-new-brighter-comments cyan fg-alt) 0.2))
(constants blue)
(functions magenta)
(keywords red)
(methods magenta)
(operators fg)
(type yellow)
(strings string-blue)
(variables fg)
(numbers number-green)
(region `(,(car selection) ,@(cdr selection)))
(error red)
(warning yellow)
(success green)
(vc-modified orange)
(vc-added green)
(vc-deleted red)
;; extras
(modeline-fg fg)
(modeline-fg-alt fg-alt)
(modeline-bg (if doom-vscode-new-brighter-modeline
(doom-darken blue 0.5)
(doom-darken bg-alt 0.08)))
(modeline-bg-alt (if doom-vscode-new-brighter-modeline
(doom-darken blue 0.55)
(doom-darken bg-alt 0.12)))
(modeline-bg-inactive `(,(doom-darken (car bg-alt) 0.04) ,@(cdr base1)))
(modeline-bg-inactive-alt `(,(doom-darken (car bg-alt) 0.08) ,@(cdr bg)))
(-modeline-pad
(when doom-vscode-new-padded-modeline
(if (integerp doom-vscode-new-padded-modeline)
doom-vscode-new-padded-modeline
4))))
(((default &override) :background bg :foreground fg)
((cursor &override) :background fg)
((fringe &override) :background bg :foreground base4)
((region &override) :background selection :foreground base8)
((highlight &override) :background bg-alt)
((hl-line &override) :background (doom-lighten bg 0.03))
((line-number &override) :foreground base5 :background bg)
((line-number-current-line &override) :foreground fg :background bg)
((font-lock-comment-face &override)
:foreground comments
:background (if doom-vscode-new-comment-bg
(doom-lighten bg 0.035)
'unspecified))
((font-lock-doc-face &override) :foreground doc-comments)
;; mode line
(mode-line
:background modeline-bg :foreground modeline-fg
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg)))
(mode-line-inactive
:background modeline-bg-inactive :foreground modeline-fg-alt
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-inactive)))
(mode-line-emphasis
:foreground (if doom-vscode-new-brighter-modeline base8 highlight))
;; minibuffer / completion / menus
(minibuffer-prompt :foreground blue :weight 'bold)
(lazy-highlight :background menu-select-2 :foreground base8)
(isearch :background blue :foreground base0 :weight 'bold)
(match :background dark-blue :foreground base8)
;; vertico / ivy / helm / selectrum style current candidate visibility
(vertico-current :background menu-select :foreground fg :extend t)
(ivy-current-match :background menu-select :foreground fg :distant-foreground fg :weight 'normal)
(ivy-minibuffer-match-face-1 :foreground blue)
(ivy-minibuffer-match-face-2 :foreground magenta :weight 'bold)
(ivy-minibuffer-match-face-3 :foreground string-blue :weight 'bold)
(ivy-minibuffer-match-face-4 :foreground number-green :weight 'bold)
(helm-selection :background menu-select :foreground fg :distant-foreground fg :extend t)
(helm-match :foreground blue :weight 'bold)
(completions-highlight :background menu-select :foreground fg)
(consult-highlight-match :foreground blue :weight 'bold)
(orderless-match-face-0 :foreground blue :weight 'bold)
(orderless-match-face-1 :foreground magenta :weight 'bold)
(orderless-match-face-2 :foreground string-blue :weight 'bold)
(orderless-match-face-3 :foreground number-green :weight 'bold)
;; doom-modeline
(doom-modeline-bar :background (if doom-vscode-new-brighter-modeline modeline-bg highlight))
(doom-modeline-buffer-file :inherit 'mode-line-buffer-id :weight 'bold)
(doom-modeline-buffer-path :inherit 'mode-line-emphasis)
(doom-modeline-buffer-project-root :foreground blue :weight 'bold)
;; org
(org-document-title :foreground fg :weight 'bold :height 1.15)
(org-level-1 :foreground magenta :weight 'bold)
(org-level-2 :foreground blue :weight 'bold)
(org-level-3 :foreground violet :weight 'bold)
(org-level-4 :foreground yellow :weight 'bold)
(org-code :foreground string-blue)
(org-verbatim :foreground cyan)
(org-block :background bg-alt)
(org-block-begin-line :foreground fg-alt :background bg-alt)
(org-block-end-line :foreground fg-alt :background bg-alt)
(org-link :foreground blue :underline t)
(org-todo :foreground cyan :weight 'bold)
(org-done :foreground fg-alt :weight 'normal)
(org-headline-done :foreground fg-alt)
;; markdown
(markdown-header-face :foreground magenta :weight 'bold)
(markdown-markup-face :foreground fg-alt)
((markdown-code-face &override) :background bg-alt)
;; css / web
(css-proprietary-property :foreground orange)
(css-property :foreground blue)
(css-selector :foreground magenta)
(web-mode-html-tag-face :foreground red)
(web-mode-html-attr-name-face :foreground orange)
(web-mode-string-face :foreground string-blue)
;; js/ts/rjsx
(rjsx-tag :foreground red)
(rjsx-attr :foreground orange)
;; lua / tree-sitter friendly adjustments
(font-lock-string-face :foreground string-blue)
(font-lock-number-face :foreground number-green)
(font-lock-constant-face :foreground blue)
(font-lock-function-name-face :foreground magenta)
(font-lock-keyword-face :foreground red)
(font-lock-type-face :foreground yellow)
(font-lock-variable-name-face :foreground fg)
;; tree-sitter / ts-faces
(tree-sitter-hl-face:string :foreground string-blue)
(tree-sitter-hl-face:number :foreground number-green)
(tree-sitter-hl-face:constant :foreground blue)
(tree-sitter-hl-face:function :foreground magenta)
(tree-sitter-hl-face:function.call :foreground magenta)
(tree-sitter-hl-face:keyword :foreground red)
(tree-sitter-hl-face:method :foreground magenta)
(tree-sitter-hl-face:operator :foreground fg)
(tree-sitter-hl-face:property :foreground cyan)
(tree-sitter-hl-face:type :foreground yellow)
(tree-sitter-hl-face:variable :foreground fg)
;; diff / git
(diff-added :background (doom-blend green bg 0.12) :foreground green)
(diff-removed :background (doom-blend red bg 0.12) :foreground red)
(diff-changed :background (doom-blend orange bg 0.12) :foreground orange)
(diff-refine-added :background (doom-blend green bg 0.22) :foreground green)
(diff-refine-removed :background (doom-blend red bg 0.22) :foreground red)
;; solaire
(solaire-default-face :background bg-alt)
(solaire-hl-line-face :background (doom-lighten bg-alt 0.03))
(solaire-mode-line-face
:inherit 'mode-line
:background modeline-bg-alt
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt)))
(solaire-mode-line-inactive-face
:inherit 'mode-line-inactive
:background modeline-bg-inactive-alt
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-inactive-alt))))
())
;;; doom-vscode-new-theme.el ends here
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment